Von Kármán Vortex Street: Laminar Shedding at Re = 100

Simulation Engine: OpenFOAM

Team SimuXAI (All rights reserved)

Team SimuXAI (All rights reserved) / SimuXAI Blog

support@simuxai.com

There is no more recognizable pattern in fluid dynamics than the von Kármán vortex street. Two rows of alternating-sign vortices, shed periodically from a bluff body, convecting downstream in a perfectly regular zigzag. It's on the cover of every fluid mechanics textbook. It's what makes power lines hum and flags flutter.

At Reynolds number 100, the shedding is laminar and perfectly periodic — no turbulence model needed, just the Navier-Stokes equations and time. This makes it both a beautiful visualization and a rigorous validation case.


The Physics

A circular cylinder (D = 1 m) in a uniform flow (U = 1 m/s) with kinematic viscosity ν = 0.01 m²/s:

$$Re = \frac{UD}{\nu} = \frac{1 \times 1}{0.01} = 100$$

At this Reynolds number:

  • The flow is laminar (no turbulence model)
  • Vortex shedding is periodic (Strouhal number St ≈ 0.164)
  • The shedding frequency: f = St × U/D ≈ 0.164 Hz (period ≈ 6.1 s)
  • The wake is two-dimensional (no spanwise instability until Re ≈ 190)

This is pure, clean Navier-Stokes — the solver just needs to be accurate enough in time and space to let the instability grow and saturate.


The Result: Vorticity Field

Vorticity (z-component) in the cylinder wake at t = 120 s. The alternating red (counter-clockwise) and blue (clockwise) vortices form the classic von Kármán street pattern.

The z-component of vorticity shows the textbook pattern: blue vortices (clockwise rotation, shed from the top) alternate with red vortices (counter-clockwise, shed from the bottom). The vortex spacing, lateral offset, and decay rate all match the theoretical predictions for Re = 100.

The cylinder is at the left; the wake extends ~12 diameters downstream. Each vortex maintains its coherence for 8–10 diameters before viscous diffusion begins to smooth it out.

Velocity Magnitude

Velocity magnitude showing the wake deficit (blue = slow) and the acceleration around the cylinder (red = fast). The oscillating wake traces the vortex passage.

The velocity field reveals the complementary picture: the wake (blue) oscillates laterally as each vortex passes, and the flow accelerates around the cylinder shoulders (red, reaching ~1.4× freestream). The stagnation point is visible at the cylinder front face.


The Mesh: Body-Fitted O-Grid

The mesh is a 2D O-grid (1-cell thick in the spanwise direction, empty front/back faces): 4 blocks surround the cylinder with radial grading toward the wall, set in a rectangular outer domain extending 20D in all directions.

  • 9,600 cells (extremely lightweight)
  • Body-fitted cylinder wall (exact circle, no staircase)
  • Radial grading clusters cells near the wall for boundary-layer resolution
  • Domain: [-20D, 20D] × [-20D, 20D] (40D × 40D — large enough for the far-field boundaries to not influence the wake)

The entire mesh is generated by blockMesh alone — no snappy, no surface feature extraction, no layer addition. The O-grid topology intrinsically provides the boundary-layer resolution.


The Solver: Time-Resolved Navier-Stokes

ParameterValue
SolverpimpleFoam (transient PIMPLE algorithm)
Turbulencelaminar (DNS at Re = 100)
Time schemebackward (2nd-order implicit)
Spatial (U)linearUpwind (2nd-order, low-diffusion)
Time stepAdaptive, maxCo = 0.5
End time150 s (~25 shedding cycles)
Write interval0.5 s (301 frames total)

The simulation runs to t = 150 s — enough for the initial transient to die out (first ~30 s) and ~20 fully-developed shedding cycles to be captured. The adaptive time step keeps the Courant number below 0.5, ensuring temporal accuracy without wasting iterations on the slow far-field.


Animation

The alternating vortex shedding is best seen in motion. This looping animation covers t = 100–140 s (fully-developed shedding), showing the vortices peeling off the cylinder and convecting downstream:

Animated von Kármán vortex street — z-vorticity field over one shedding sequence, showing alternating vortices peeling off the cylinder and convecting downstream.

Each frame is the z-vorticity field at a different instant — the alternation between top-shed (red) and bottom-shed (blue) vortices is visible as the pattern shifts by half a wavelength between consecutive frames.


Reproduce It

# The case is a standard OpenFOAM setup (no AuraMesh needed for this one)
blockMesh          # O-grid around the cylinder
pimpleFoam         # time-resolved laminar NS
foamToVTK          # export for visualization

The complete case (mesh + solver + 301 time steps) occupies ~500 MB on disk. The render script reads the fields directly via pyvista's OpenFOAM reader and produces publication-quality vorticity contours with smooth point-interpolated data.


In this series: Ahmed Body Aerodynamics | Clean Room Airflow | Pedestrian Wind Comfort | Body-Fitted Pipe Meshing | Vortex Shedding Animation