A discrete-vortex method (DVM): the cylinder is a potential-flow doublet embedded in a uniform stream, and every shed vortex is a desingularized (Lamb–Oseen core) point vortex advected by the sum of the freestream, the doublet's blocking field, and mutual induction from every other vortex — the same superposition principle used in real 2D vortex-method solvers, just with viscosity approximated by circulation decay and a finite core rather than a full Navier–Stokes solve:
u_doublet = U + κ(y²−x²)/(x²+y²)², κ = U·R²
v_vortex(r) = Γ/(2π(r²+ε²)) · (−Δy, Δx) (Lamb–Oseen desingularization)
St ≈ 0.212 − 4.96/Re (Roshko fit, Re ≳ 47; St = 0 below shedding onset)
f = St·U/D, T = D/(2·St·U) between alternating releases
Below Re ≈ 47 the wake stays a steady pair of attached eddies and no vortices are released. Above that threshold, alternating vortices peel off the top and bottom shoulders of the cylinder at the Strouhal-predicted rate and self-advect downstream, each one's circulation decaying exponentially — faster at high Reynolds number, standing in for the cascade into smaller turbulent scales that a laminar point-vortex model can't resolve directly.
- Core dots — red = clockwise (Γ<0), cyan = counter-clockwise (Γ>0); size scales with remaining circulation.
- Dye trail — passive tracers seeded upstream, advected by the full combined velocity field; this is what traces out the alternating street pattern.
- Core radius slider — the Lamb–Oseen smoothing length ε; too small and neighboring vortices interact violently (numerically stiff), too large and the street loses its sharp alternating structure.