When wind blows over a street canyon of width W between two buildings of height H, the roof-level shear drives a single mechanically-forced recirculating vortex inside the canyon (Oke, 1988; DePaul & Sheih, 1986). This 2D cross-section sim solves that vortex directly from a streamfunction cell — the same equations that drive the real 3D vortex, viewed edge-on:
ψ(x,y) = -A·sin(πx/W)·sin(πy/H)
u = ∂ψ/∂y = -S·U_ref·sin(πx/W)·cos(πy/H)
v = -∂ψ/∂x = S·U_ref·(H/W)·cos(πx/W)·sin(πy/H)
where x runs across the canyon (x=0 leeward wall, x=W windward wall), y is height, and S(H/W) is a vortex-strength factor set by the flow regime (Oke's H/W classification). The pale grid of arrows on the canvas is this velocity field u(x,y),v(x,y) sampled on a grid and redrawn every time the aspect ratio or wind speed changes — it is not a scripted swirl, every arrow is the (u,v) the formula above returns at that grid point.
- Isolated roughness flow (H/W < 0.3) — buildings are too short/far apart for their wakes to merge; wind mostly blows through, only a weak vortex forms.
- Wake interference flow (0.3 ≤ H/W < 0.65) — wakes begin to interact; a partial, unsteady vortex develops.
- Skimming flow (H/W ≥ 0.65) — wind skims over the roofline entirely and a strong, stable single vortex fills the canyon.
At roof height the vortex top moves with the ambient wind; it then descends the windward wall (fresh air), crosses the street near the ground moving against the wind, and rises up the leeward wall. Traffic exhaust released at street level is advected by that ground-level branch of the very same velocity field — no separate "trapping" rule is applied — so it drifts toward the leeward wall and lifts there, exactly matching the asymmetry real street canyons show. Particles that reach roof height are entrained into the free-stream wind and ventilated away; each particle also carries a small random-walk term standing in for turbulent diffusion, and is retired after ~45 s (dry deposition / dilution below sensor threshold). The concentration bar along the bottom bins active particles by horizontal position within the street-level band (y < 0.35H) and colors each bin by particle count per bin-area, giving a genuine (not decorative) street-level pollution readout.
This is a simplified single-cell analytical model, not a turbulence-resolving CFD run — it reproduces the regime transition and the leeward/windward asymmetry that real measurements and wind-tunnel studies consistently show, without resolving corner eddies or along-street venting (which the 3D version of this sim can show).