Skip to content
Jad El Badaoui

CFD · Verification & validation · Summer 2026

NACA 0012 Aerofoil: Verification and Validation

Carrying a two-dimensional RANS solution from a hand calculation through to a point-by-point comparison against NASA measurements, and reporting the part of the mesh that does not support the answer.

Velocity magnitude contours around a NACA 0012 aerofoil at 10 degrees incidence, showing the stagnation region, acceleration over the suction surface and the wake deficit
Velocity magnitude at 10° incidence. Far-field velocity matches the specified free stream, which is the fastest check that the boundary conditions were applied as intended; flow accelerates to nearly twice free-stream around the upper leading edge.
1.4 %
Lift vs experiment

CL ≈ 1.06 against NASA measurements of 1.07 to 1.08

1.097
Thin-aerofoil prediction

Computed before the solver was opened, so the CFD was falsifiable

10⁻⁷
Mass imbalance

Normalised against the incoming flow

y⁺ audit
Failed, and reported

Much of the surface sits outside the range the wall treatment needs

01 Overview

Why this case

A CFD result only means something if you can show why it should be believed. This study is a two-dimensional steady RANS solution over a NACA 0012 aerofoil at 10° incidence and a chord Reynolds number of 6×10⁶, run in ANSYS 2026 R1 alongside CornellX's ENGR2000X simulation course on edX.

The case was chosen for one reason: high-quality NASA experimental data exists for it, so the full verification and validation argument can be carried all the way to the end rather than stopping at plausibility. It is the only case in this portfolio where that is true, which is exactly why the wind turbine study, built on the same solver and the same discipline, cannot be called validated.

The chain of reasoning the project follows. The dashed returns matter as much as the forward path. Verification failures send you back to the mesh, validation failures back to the physics model.

Note the ordering of the last two steps. Verification comes before validation, and it is not optional: comparing an unverified solution against experiment tells you nothing useful. If it disagrees you cannot tell whether the physics model is wrong or the mesh is too coarse; if it agrees you cannot tell whether it agreed for the right reason.

02 Setup

The physical problem and its domain

The fluid domain: velocity inlet, pressure outlet, and no-slip upper and lower surfaces, with the free stream entering at α = 10°.

The case is steady, turbulent, two-dimensional flow around a symmetric NACA 0012 section at 10° angle of attack, with a 1 m chord and air approaching at 51.45 m/s.

The domain is the region between the aerofoil surface and an outer far-field boundary placed roughly 12.5 chord lengths away. That outer boundary is a numerical stand-in for infinity. The real flow extends indefinitely, so truncating it is an approximation whose adequacy has to be demonstrated rather than assumed.

Before any solver was opened, a thin-aerofoil hand calculation put lift at CL = 1.097. That number is what makes the CFD result falsifiable. Without an independent expectation, any output has to be accepted on faith.

03 Discretisation

Designing the mesh

Mesh design is not a matter of making cells small everywhere, which is both unaffordable and unnecessary. It is a matter of spending cells where the gradients are: the leading edge, the boundary layer, the trailing edge and the wake. The mesh here contains roughly 27,000 cells.

Boundary layer refinement
Ten inflation layers were applied around the aerofoil with a growth rate of 1.2. They provide additional resolution normal to the wall, where the strongest velocity gradients occur.
Local aerofoil refinement
A sphere of influence with a radius of approximately three chord lengths was used around the aerofoil. Within that region the local element size is approximately 0.05c.
Wake refinement
Additional refinement was applied downstream of the trailing edge, to resolve the wake and the downstream velocity gradients it carries.
Edge biasing
Bidirectional edge biasing concentrates smaller elements near the leading and trailing edges, where the geometry and the aerodynamic gradients require greater resolution.
The viscous law and log law in wall units, with the 30 < y⁺ < 300 band that standard wall functions require. This is what sets the first-cell height.

04 Post-processing

Aerodynamic results

Each field below is checked against what the pre-analysis predicted, rather than just described.

Static pressure

Higher pressure below, lower above. That difference is the lift. Pressure changes very little across the thin boundary layer, which is a genuine result of boundary-layer theory rather than a plotting artefact, and it is why the pressure field is comparatively insensitive to near-wall mesh quality.

Velocity vectors

Flow turning around the leading edge, displaced toward the lower surface by the positive incidence.
Turbulent kinetic energy. The boundary layer appears as a thin, high-k sheet hugging the surface.

The turbulence field is the most diagnostically useful of the four plots, and the one most often skipped. It isolates the boundary layer as a thin high-k sheet, thickening toward the trailing edge and shedding into the wake, which is a direct picture of where turbulent momentum transport is happening.

It also works as a visual mesh check. Turbulence production peaks where mean shear is greatest, very close to the wall. If the near-wall mesh is adequate, that appears as a sharp, well-defined sheet. If it is too coarse, the peak smears across cells and the sheet looks diffuse, a visual symptom of the same resolution problem the y⁺ audit quantifies.

05 V&V

Verification and validation

Two different questions, routinely conflated. Verification is answered from inside the simulation; validation can only be answered against independent measurement.
  • Mass conservation. Normalised imbalance of order 10⁻⁷ of the incoming flow.
  • Iterative convergence. Residuals driven to ≈10⁻⁶, with flat force monitors rather than residuals alone.
  • Near-wall audit. The computed y⁺ distribution checked against the range the chosen wall treatment actually requires, rather than assumed.
  • Domain and grid independence. Set out as a controlled six-case verification matrix, one variable changed at a time, each case with a stated acceptance criterion, using Richardson extrapolation and the grid convergence index.
The NASA experimental upper-surface Cp reference data used for validation. The vertical axis is inverted, following the aerodynamic convention that puts stronger suction higher on the page.

Validation compares the predicted surface pressure distribution against the NASA NACA 0012 resources (Gregory & O'Reilly for surface pressure, Ladson for force coefficients) at matched Reynolds number and incidence. The computed Cp distribution overlaps this experimental data closely across the full chord.

The integrated lift follows at CL ≈ 1.06 against an experimental 1.07 to 1.08, about 1.4 % low, and against the thin-aerofoil hand calculation of 1.097 made before any solver was opened.

Matching the full Cp distribution is a stronger claim than matching lift alone. An integrated coefficient can agree through cancellation between two compensating errors, whereas a point-by-point match across the chord cannot happen by accident. The Cp distribution is also the aerodynamic loading itself, so it is the quantity the structural side of a coupled analysis consumes.

06 Engineering judgement

Where the agreement does not extend

Close agreement on lift is not a licence to trust every output. The mesh supports the pressure field well and the wall shear badly, and those two facts have to be reported together:

  • Wall treatment inconsistent with the mesh. Standard wall functions are being applied across a y⁺ field much of which lies outside their valid range.
  • Wall-shear-dependent quantities are not supported. Drag is the obvious casualty: the same near-wall limitation that leaves lift accurate leaves skin friction unreliable.
  • Grid and domain independence are set out but not completed. The six-case matrix is a plan, not a result, so the numerical uncertainty on CL has not been quantified.
  • Trailing-edge cell quality is poor in orthogonality and aspect ratio, in exactly the region that sets the Kutta condition.
  • Two-dimensional and fully turbulent throughout. No transition modelling, no three-dimensional effects, no separation onset prediction worth relying on near stall.

The complete write-up lives in the repository: methods, data, code, provenance and limitations.

github.com/Jadbadawi/aerospace-cfd-fsi