Validation/Unsteady flow
Flow over a circular cylinder
The only case with no steady state: the answer is a frequency, not a field. It found that a more symmetric mesh needs a LONGER run, not a shorter one.
Why this case
A cylinder in a steady stream sheds vortices alternately from each side. Below about Re = 47 it does not shed at all; above it, the wake becomes a periodic street with a frequency that depends only on the Reynolds number.
This is the only case here with no steady answer. Everything else on this site reaches a steady state and is compared field against field. Here the answer is a frequency, and getting it requires the unsteady solver, the time scheme and the force integration all to be right at once. A code can produce a beautiful steady wake and be completely wrong about this.
| Physics | Incompressible, laminar, unsteady |
|---|---|
| Reynolds number | Re = U D / ν, on the cylinder diameter — 60, 100 and 150 |
| Strouhal number | St = f D / U, f the shedding frequency of the lift signal |
| Domain | 12.5 D upstream, 32.5 D downstream, ±16.5 D lateral |
| Blockage ratio | 3.0 % — D over a 33 D lateral width |
| Mesh | snappyHexMesh on an imported cylinder, surface level 5, wake region level 3 over 14.5 D. 54 482 cells, 92 around the circumference, no prism layers |
| Run control | pimpleFoam, backward time scheme, adjustable time step at Courant ≤ 1, end time 25 s. 313 steps per shedding period at Re = 100 |
| Reference | Roshko, A. (1954), NACA Report 1191, equation (2a), transcribed from the report itself |
The reference
Roshko’s equation (2a) gives St = 0.212 (1 − 21.2/Re) over 50 < Re < 150, which brackets all three cases here. It is an empirical fit, not an exact solution, and Roshko states the scatter of his own measurements about it as 4 %.
That is the floor on what agreement can mean. A computed Strouhal number inside 4 % has matched the correlation as closely as the correlation matches the data behind it. Comparing against it is validation, not verification.
Result — Strouhal number
| Re | Roshko (1954) | SHD Sim | vs Roshko | measured over |
|---|---|---|---|---|
| 60 | 0.1371 | 0.1374 | +0.23 % | t = 27.1 to 80 s |
| 100 | 0.1671 | 0.1642 | −1.67 % | t = 12.8 to 25 s |
| 150 | 0.1820 | 0.1812 | −0.48 % | t = 10.8 to 25 s |
Every point is inside Roshko’s own 4 % scatter, and the three sit on a curve of the right shape — St rising with Re, tracking the fit rather than crossing it.
Re-measured on 27 August 2026 on a genuinely two-dimensional mesh — one cell thick, with the thin faces an empty pair rather than the roughly eight-cell slab the earlier figures were measured on.
Result — forces
| Re | mean C_d | C_l amplitude | mean C_l |
|---|---|---|---|
| 60 | 1.4283 | 0.1317 | −0.00069 |
| 100 | 1.3542 | 0.3194 | +0.00456 |
| 150 | 1.3278 | 0.4871 | +0.00460 |
What this case found
No prism layers, and that is not a shortcut. The layer thickness is sized from a turbulent flat-plate correlation, which asks for 2.792 m of boundary layer on a 1 m cylinder at Re = 100 — four decades outside the correlation’s range. snappyHexMesh attempts the extrusion, the quality floor rejects it, and the removal leaves inside-out cells that diverge the pressure solve on its first iteration. A laminar cylinder has no log layer to resolve, so the layers are switched off.
Domain extent and blockage are recorded because they change the answer. The published data are for effectively unbounded flow. A cylinder in a narrow domain sheds at a measurably different frequency, and that is not a solver error — it is a different problem. It is the most common reason a cylinder case “fails” validation.
Repeat this yourself
Every case here is set up from the worked examples in the product, with no hand-editing of solver files — so you can run it, and get the same numbers. The free tier runs real cases up to 250,000 cells of fluids, or 100,000 nodes of solid, with no account needed to download and no time limit.
Other cases
- Turbulent plane channelThe only case here that tests turbulence modelling, against a DNS rather than an experiment — and it measures what a badly placed first cell costs you.
- Lid-driven cavityThe oldest benchmark in incompressible CFD, run on a deliberately coarse mesh — because one that only agrees when it is expensive is not much of a reassurance.
All validation cases · Written by the team building SHD Sim.