Skip to content
SHD Sim
Menu

Validation/External aerodynamics

NACA 0012 aerofoil

Lift and drag at 4.04° against a wind-tunnel measurement — and the finding that a finer mesh makes the drag three times worse, because the wall treatment leaves the range it is valid in.

ValidationLift 0.4279 against Ladson’s 0.4316 (−0.86 %) and drag 0.00888 against 0.00823 (+7.90 %)

Why this case

Almost everything else in this section is verification: a closed form, no experimental scatter, nothing to argue about except the arithmetic. This one is not. The reference is a wind-tunnel measurement — Ladson’s NACA 0012 section at Re = 6 × 10⁶, published as NASA TM 4074 in 1988 and digitised in the NASA Turbulence Modeling Resource — and it carries its own error bars. That makes this validation, and the page treats the two coefficients differently because the measurement does.

Lift on an aerofoil is set by the circulation and is a well-resolved quantity. Drag at this Reynolds number is a small difference between large numbers and carries the whole of the near-wall modelling error. Quoting a single tolerance across both would either wave through a drag regression or fail every healthy run on lift.

This case took longer to reach a publishable number than anything else in this section, and the history is on the page rather than behind it. Drag here has been reported at +311 %, +115 %, +31.6 % and +26.7 % of the measured value, for four separate and identifiable reasons.

PhysicsSteady, incompressible, k–ω SST — OpenFOAM simpleFoam
SectionNACA 0012, sharp trailing edge, chord 1 m, at 4.04° incidence
Reynolds number6 × 10⁶, set through the viscosity: 10 m/s inlet, ν = 1.667 × 10⁻⁶ m²/s
Domain20 chords ahead, above and below; 30 behind — a far field, not a tunnel
MeshSeven in-plane refinement passes — 93 724 cells; average y⁺ on the section 56
Run15 000 iterations with both stopping criteria stripped
ReferenceLadson (1988), NASA TM 4074 — NACA 0012 at Re = 6 × 10⁶, transition tripped
AgreementCl 0.4279 against 0.4316, −0.9 %; Cd 0.00888 against 0.00823, +7.9 %
Last run2026-08-28

Result

Lift and drag at 4.04° against Ladson, NASA TM 4074
CoefficientMeasuredLadsonDifference
Cl0.42790.4316−0.86 %
Cd0.008880.00823+7.90 %
From the fixture: 93 724 cells, 15 000 iterations, seven in-plane refinement passes.

A coefficient inside a band because the run stopped before it had finished moving is not the same thing as one that settled there, and this case has already been wrong in exactly that way. An early pilot stopped itself at 193 iterations of the 4000 it was given and reported a lift coefficient to four figures — 8 % low, which is precisely the sort of number a coarse mesh explains away. The tell was the iteration count, not the coefficient.

So both stopping mechanisms are removed rather than tightened: the residual controls, because a residual criterion is a statement about the equations being satisfied on the current field and not about the field having stopped moving; and the run-time control, which had fired at 2053 iterations of 4000 with the drag still drifting 0.74 % between the halfway point and the end, because a windowed average settles before the answer does whenever the approach is slow.

With both gone and the full 15 000 iterations run, drag moves 0.003 % between the halfway point and the end. That number is recorded on every run and is judged alongside the coefficients, because it is what separates a settled answer from a lucky one.

A finer mesh makes the drag worse

This is the most important thing on the page and it is not a good result. Three meshes were run at the same angle, the same domain and the same stopping treatment, differing only in the number of in-plane refinement passes.

The same case at six, seven and eight refinement passes
PassesCellsClvs LadsonCdvs LadsonDrift in Cd
668 0620.4210−2.46 %0.01083+31.59 %0.000 %
793 7240.4279−0.86 %0.00888+7.90 %0.003 %
8174 4380.4264−1.20 %0.01043+26.73 %0.001 %
All three from fixtures, all three converged with the stopping criteria stripped. Lift is monotone-ish and small throughout; drag is not monotone at all.

Twice the cells, three times the drag error. And every indicator the product itself showed said the finer mesh was the better one: residuals lower, drift down to a thousandth of a per cent, the mesh check clean.

One detail of how that band is set is worth recording, because the obvious threshold is wrong. Keying the warning on the maximum y⁺ — “nothing on this wall reaches the log layer” — sounds right and does not fire on the measured failure, whose maximum is 30.94 while its average is 15.5. The band is keyed on the average. The minimum is not used at all: every aerofoil has a stagnation point where y⁺ falls to nothing on any mesh.

What was eliminated before the residual was attributed

Drag on this case was refused for publication twice, and the reasons are recorded because they are what the current number stands on.

  • A mesh with no boundary layers in it — 0 of N layers extruded, reported in the mesher’s own log the entire time. Cd came back at 0.01765 against 0.00823, +115 %.
  • A dumped case that could not be meshed from its own dictionaries. Two-dimensional refinement had moved out of the mesher’s dictionary and into separate passes running before it, so the obvious two-step mesh produced a mesh with no refinement in it at all — silently. Re-running the benchmark against the current build gave twelve faces on the aerofoil and Cd 311 % high. With the sequence run properly the aerofoil has 360 body faces.
  • The geometry, checked and cleared. With the drag 88 % out and six hypotheses refuted, the shape being meshed was measured against the analytic four-digit thickness distribution. Worst departure 0.67 × 10⁻³ of chord, everywhere on the thin side, making the section 11.897 % thick against a nominal 12; the trailing edge closes to 0.0115 % of chord, so it is the sharp-trailing-edge variant, which is the one Ladson’s section uses. The geometry is right and it is not the drag error.
  • The reference area. This benchmark is what found that two-dimensional force coefficients were being divided by the body’s area rather than the mesh’s — on this section, a factor of 8.4.

What this page does not establish

  • The run is incompressible; the measurement is not. Ladson’s data is at Mach 0.15 with transition tripped. This case has no Mach number at all and a fully turbulent model from the leading edge. Both differences are real and neither is corrected for here, so part of the residual belongs to the comparison rather than to the solver.
  • The drag residual is reported, not attributed. +7.9 % is quoted because it was measured. Nothing on this page separates the remaining near-wall modelling error from the wake resolution, the turbulence model’s own behaviour on this section, or the tunnel-to-free-air difference above. The mesh sensitivity in the table makes it clear that the near-wall treatment is at least part of it; it does not establish that it is all of it.
  • The measurement has error bars and they are not drawn. This is an experiment, not a closed form. A per-cent figure against a wind-tunnel drag coefficient of 0.00823 should be read with that in mind — for this section, elsewhere in the programme, a +1.5 % lift agreement was described as inside the scatter of the measurement itself.
  • The aerofoil generator is not exercised here. The product extrudes a Selig or Lednicer profile into a solid, and that is the path a user takes. It cannot be driven from a command line, so this harness imports the extruded solid directly and sets the aerofoil flag by hand. That flag is what makes the coefficients scale on planform area; the extrusion itself is covered by a separate test, not by this page.

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.

All validation cases · Written by the team building SHD Sim.