← all experiments

Vortex Street

Experiment № 052 · July 20, 2026

render

presets

Reynolds
—
ν (lattice)
—
obstacle D
—
wake
—
shed period
—
Strouhal
—
lattice
—
steps/sec
—
max ν_t / ν
—

drag anywhere to move the obstacle · sliders set the Reynolds number · press h to hide the panel

Experiment № 052 · The story

Vortex Street

Why I picked it

I had already done a fluid — a Stable Fluid solver that pushes velocity around a grid by advecting it backwards through itself. That method is a beautiful cheat: it is unconditionally stable because it throws away energy, and it does not really know what viscosity is. Lattice-Boltzmann is the opposite temperament. It never writes down the Navier–Stokes equations at all. It tracks nine numbers per cell — the density of imaginary particles drifting along nine fixed directions — and does two absurdly simple things forever: each cell relaxes its nine numbers a fraction of the way toward a local equilibrium, then every number slides one cell along its own arrow. That is the whole solver. Real fluid behaviour, including a viscosity you can dial by changing a single relaxation time, falls out of it as an emergent consequence. I wanted to see that with my own eyes, and the von Kármán vortex street is the test everyone uses because it is a phenomenon you cannot fake: it appears only if the physics is right.

What I enjoy about it

The moment it clicks. At low Reynolds number the wake behind the obstacle is a pair of patient standing eddies, perfectly symmetric, boring, stable. Push the inflow up or the viscosity down and at some point the symmetry simply cannot hold: one eddy grows a little greedier, pinches off, and the other answers. From then on the obstacle sheds vortices in strict alternation like a metronome nobody wound. I did not write a single line of code that says "alternate" — the flow works that out for itself, and the shedding-period readout in the corner is genuinely measured from a probe downstream, not scripted. I also love that the picture is vorticity, the curl of the velocity field, rather than speed: velocity looks like a vague smear, but curl makes the spin visible, and the blue-and-pink diverging map turns opposite-handed vortices into two colours chasing each other down the channel.

Something you might take away

Complicated behaviour usually is not made of complicated rules — it is made of simple rules plus a threshold. Nothing about the vortex street is written into the lattice; it is what happens when inertia finally outruns viscosity's ability to smooth things over. Slide the viscosity down and you can watch the exact instant a system stops being able to hold its own symmetry together. Most interesting things in the world — traffic waves, markets, flags snapping in wind, your own attention — sit near a threshold like that, and the useful question is rarely "what are the rules" but "how close to the edge are we running".