Validation/Incompressible flow
Lid-driven cavity
The 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.
Why this case
A square box of fluid with the top wall sliding sideways. Nothing enters, nothing leaves, and the only thing driving the flow is the moving lid. It is the oldest benchmark in incompressible CFD and still the first one anybody runs against a new code.
What makes it useful is that it has no inlet, no outlet and no free parameters. There is nowhere to tune and no boundary condition to get subtly right or wrong. Either the recirculation forms in the right place with the right strength, or it does not.
| Physics | Incompressible, laminar, steady |
|---|---|
| Reynolds number | 100, on the lid speed and the box width |
| Reference | Ghia, U., Ghia, K.N., Shin, C.T. (1982), Journal of Computational Physics 48, 387–411 |
| Agreement | RMS difference 0.0047 of the lid speed; worst point 0.0099 |
| Mesh | 400 cells as written — the app refines to 1600, see below |
| Reproduce | Worked examples → Lid-driven cavity (validation) → Generate mesh → Run |
The reference
Ghia, Ghia and Shin solved this on a 129 × 129 grid with a multigrid method and tabulated the velocity along both centrelines. Those tables are why the case endured: they are numbers rather than a plot, at stated positions, so a comparison needs no interpolation and no reading off a figure.
It is a computation rather than an experiment, which makes this a comparison against somebody else’s solution of the same equations rather than against reality. That distinction is worth keeping: agreeing with Ghia says the discretisation is sound, and says nothing about whether these equations describe your problem.
Result

Horizontal velocity along the vertical centreline, normalised by the lid speed, at Ghia’s own tabulated stations.
| y / L | Ghia et al. | SHD Sim | difference |
|---|---|---|---|
| 1.0000 | +1.00000 | +1.00000 | +0.00000 |
| 0.9766 | +0.84123 | +0.83133 | −0.00990 |
| 0.9688 | +0.78871 | +0.78117 | −0.00754 |
| 0.9609 | +0.73722 | +0.73196 | −0.00526 |
| 0.9531 | +0.68717 | +0.68337 | −0.00380 |
| 0.8516 | +0.23151 | +0.23338 | +0.00187 |
| 0.7344 | +0.00332 | +0.00293 | −0.00039 |
| 0.6172 | −0.13641 | −0.13429 | +0.00212 |
| 0.5000 | −0.20581 | −0.19896 | +0.00685 |
| 0.4531 | −0.21090 | −0.20324 | +0.00766 |
| 0.2813 | −0.15662 | −0.15062 | +0.00600 |
| 0.1719 | −0.10150 | −0.09787 | +0.00363 |
| 0.1016 | −0.06434 | −0.06215 | +0.00219 |
| 0.0703 | −0.04775 | −0.04530 | +0.00245 |
| 0.0625 | −0.04192 | −0.04064 | +0.00128 |
| 0.0547 | −0.03717 | −0.03599 | +0.00118 |
| 0.0000 | +0.00000 | +0.00000 | +0.00000 |
The zero crossing is the demanding row. It is where the primary vortex sits, and its position depends on the whole solution rather than on any single boundary. Ours is at y/L = 0.73247 against Ghia’s 0.7344.
That figure is a linear interpolation between the two adjacent points of the measured centreline profile that straddle zero — the same profile the table above is read from. The method is worth stating, because a zero crossing read off a discrete profile is a property of the interpolation as much as of the solution: four reasonable ways of interpolating the same run put it between 0.73190 and 0.73312. All of them are within 0.0025 of Ghia, and the spread between them is a fair measure of how precisely a twenty-cell profile can locate the vortex at all.
What the remaining difference is
Mesh, not physics. This is 400 cells against Ghia’s 16 641, and both of the largest differences are in the top 5 % of the box, where the lid drags a thin shear layer that twenty cells across cannot resolve. The interior agrees to about half a per cent.
What this case does not cover
- Turbulence. Re = 100 is laminar. Nothing here exercises a turbulence model or a wall treatment — that is the turbulent channel’s job.
- Inlets and outlets. The box is closed, so every question about inflow conditions, outflow reflection and mass conservation across a boundary is untouched.
- Meshing. A uniform square block with no geometry in it says nothing about surface meshing, refinement regions or boundary layers.
- Separation the solver has to find. The corner vortices are pinned by the geometry. Smooth-body separation, where the detachment point is an outcome rather than a corner, is a harder problem this does not touch.
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.
- Sod shock tubeThe exact Riemann solution, compared point by point. It found a defect nobody had noticed: the solver was using the wrong ratio of specific heats.
All validation cases · Written by the team building SHD Sim.