Gaspar García, CFD portfolio

All cases

Caveated

NACA 0012 at 10 degrees: lift extrapolated from three grids sits +2.14 % above a reference code and +3.4 to +3.8 % above experiment

Three O-grids give an extrapolated lift coefficient of 1.10083, with an observed order of about 1.2 and a GCI of 1.00 %. The finest grid fails one checkMesh test and its force history drifts more than my own convergence gate allows, so I list this case with caveats rather than lead with it.

Lift coefficient, simulation
1.10083
extrapolated from three grids
Lift coefficient, reference code
1.07781
CFL3D, NASA TMR (a computation)
Signed difference
+2.14 %
simulation minus CFL3D
Numerical uncertainty
1.00 %
GCI, three grids; finest grid fails one checkMesh test
Case
NACA 0012, 2-D, angle of attack 10°
Solver
simpleFoam (SIMPLEC)
Turbulence model
k-omega SST
Cells
48,120 to 193,200 (three grids)
Reynolds number
6 million
Status
Caveated
Updated
2026-11-14

2Geometry, mesh, results

NACA 0012 section in a far-field domain about 2000 chords in radius; the airfoil wall and the far-field boundary drawn as lines.

Geometry: NACA 0012 section in a far-field domain about 2000 chords in radius; the airfoil wall and the far-field boundary drawn as lines.

3Case parameters

Reynolds number (chord)6 million
Angle of attack10°
FluidIncompressible, unit speed and chord
SolverOpenFOAM simpleFoam, steady
Turbulence modelk-omega SST, fully turbulent
Wall y+ max1.65 coarse, 0.85 finest
Cells48,120 to 193,200
Free-stream velocity(0.984808 0.173648 0)
Kinematic viscosity1.66667e-07 m²/s
Pressure-velocity couplingSIMPLEC (consistent), 2 non-orthogonal correctors
Wall y+ mean, coarse grid0.54
Run costNot recorded

4Experiment

Three references, all from the NASA Turbulence Modeling Resource files on disk. Lift: Ladson, NASA TM 4074 (1988), Re 6 million, transition tripped, Mach 0.15; interpolated to 10° it gives 1.0628. Surface pressure: Gregory and O'Reilly, NASA R&M 3726 (1970), at Re 2.88 million, digitised from a photocopy, approximate, upper surface only.

The reference computation is CFL3D with the SST model on a 897 × 257 grid. It is not an experiment: it is compressible at Mach 0.15 where I solve incompressible, and the reference codes on that page scatter by about a percent in lift themselves.

Stated uncertaintyNot stated in the data files. The Gregory and O'Reilly file says its values were digitised from a photocopy and are only approximate.
Blockage and correctionsNot stated in the data files. The Gregory and O'Reilly Reynolds number (2.88 million) is half the simulation's, so its pressure curve is a shape check, not a match.
LicenceNASA Turbulence Modeling Resource data files (public NASA data), cited with the original reports named. The Gregory and O'Reilly table below is copied from that file with the sign of Cp flipped.

Gregory and O'Reilly, upper-surface pressure at 10 degrees (x/c, −Cp)

Experimental values (24 points)
x/cExperiment, Gregory and O'Reilly (upper surface)
03.66423
0.002183415.04375
0.008733625.24068
0.01310044.67125
0.01746724.32079
0.04803492.74347
0.07423582.26115
0.09825331.95405
0.1244541.7345
0.1462881.55884
0.1768561.36109
0.288211.00829
0.3209610.941877
0.3842790.787206
0.4475980.654432
0.5152840.543461
0.5764190.432633
0.6375550.343703
0.7008730.254725
0.7663760.1657
0.8318780.098572
0.8930130.00964205
0.958515-0.0793835
1-0.124088

Download CSV

5Set-up

A 2-D O-grid around a NACA 0012 with a near-sharp trailing edge (base thickness 0.0003 c), far field at 2000 chords. The three grids share the geometry and only scale the cell counts; refinement ratios between neighbours are 1.334 and 1.502. The free-stream turbulence follows the NASA specification (turbulence intensity 0.052 %, nut/nu 0.009).

The pressure plots on this page come from a separate, longer run of the coarse grid recipe (48,120 cells, 20,000 iterations, final lift 1.0805); the grid ladder uses 6000 iterations per grid.

Boundary conditions
BoundaryTypeValue
Far field (about 2000 chords)freestreamVelocity; freestreamPressure; inletOutlet for k and omega; nut calculatedU (0.984808 0.173648 0); p 0; k 4.056e-07; omega 270.4
AirfoilnoSlip; p zeroGradient; k kLowReWallFunction, 1e-10; omega omegaWallFunction, 270.4; nut nutLowReWallFunction
Front, backempty (2-D)

Numerics and convergence

Steady simpleFoam, SIMPLEC (consistent), 2 non-orthogonal correctors. Convection: bounded Gauss linearUpwindV grad(U) for velocity, bounded Gauss limitedLinear 1 for k and omega.

Convergence is judged from the force history, not residuals: the gate is a tail-mean drift below 1e-5. The two finer grids miss it (drift 3.9e-5 and 1.8e-5, lane audit).

Convergence evidence for the separate, longer coarse-grid run that the pressure plots come from (naca0012-final-a10), not for the ladder grids: lift and drag coefficients at every 50th iteration, copied from its coefficient.dat (forceCoeffs1) with no smoothing; the last iteration is included. The vertical axis is fixed, so the start-up transient of the first iterations runs off the top.

6Mesh

Cells (grid used for the pressure plots)48,120
y+ max / mean1.65 / 0.54
Max non-orthogonality71.9°
Max skewness1.69
Max aspect ratio505
checkMesh verdict“Mesh OK.”
The three grids of the lift ladder. The finest fails the aspect-ratio check (maximum 1457.6 (12 cells)); where those cells are was not recorded.
GridCellsLift coefficienty+ maxMax aspect ratioMax non-orthogonalityMax skewnesscheckMesh
fs2-r10 (coarse)48,1201.080281.6550571.9°1.69“Mesh OK.”
fs2-r15 (medium)108,5401.088401.1176558.1°1.36“Mesh OK.”
fs2-r20 (fine)193,2001.092120.851457.6 (12 cells)52.5°1.15“Failed 1 mesh checks.”

The finest grid was solved despite its failed check, and the failure is not explained in any case note. Its lift enters the order and the GCI below, so both carry that caveat.

7Results

Lift converges monotonically, 1.08028, 1.08840, 1.09212, to an extrapolated 1.10083: +2.14 % above CFL3D (1.07781). Corrected for the grid, the lift over the angle range sits +3.41 to +3.77 % above the Ladson experiment, flat with angle.

Lift coefficient on the three grids (1.08028, 1.08840, 1.09212), the extrapolated 1.10083, CFL3D 1.07781 and Ladson 1.0628 as reference lines.
Surface pressure at 10°, plotted as −Cp so that suction points up, as is conventional (the sign is the only change to the data). Simulation on the 48,120-cell grid; CFL3D at the same angle; Gregory and O'Reilly measured the upper surface at Re 2.88 million. Suction peak −5.5924 against −5.60 for CFL3D.
QuantityReferenceSimulationSigned difference
Lift, extrapolated, vs CFL3D (computation)1.077811.10083+2.14 %
Lift at 10 degrees, grid-corrected, vs Ladson (experiment)1.0628–+3.59 %
Lift, grid-corrected, 8 to 14 degrees, vs Ladson––+3.41 to +3.77 %
Suction peak Cp vs CFL3D, coarse grid−5.60−5.59240.14 % smaller in magnitude

The surface pressure follows CFL3D closely: the suction peak is −5.5924 against −5.60. Drag is not grid-converged (124.23, 122.45 and 123.38 drag counts on the three grids, down then up), so I give no drag result.

A NACA 4412 at high lift was also run with the same recipe. That run was made after the experimental value was known and with a changed set-up, so it is not a blind test; the one genuinely blind run used a recipe later found defective and is invalid. It is a single grid, its aft upper-surface pressure is wrong, and the experimental lift it was scored against is not stored on this machine, so it is not compared on this page.

8Numerical accuracy

Method: three-grid Richardson extrapolation with the unequal-ratio form (Celik et al.), run with the project's shared gci.py. On the five-digit lift values it gives an observed order of 1.241, an extrapolated 1.100768, a GCI of 0.990 % and an asymptotic check of 1.003. The freeze document's 1.10083 and 1.00 % come from the same data; the differences are input rounding.

Three grids give one value of the order and no way to check it, and the fine-grid force noise moves it noticeably, so the honest figures are p ≈ 1.2 ± 0.1 and GCI ≈ 1.0 ± 0.15 %. The order is well below the formal 2. An earlier GCI from a defective formula was retracted; the retraction is kept in the freeze document and in the ledger note below.

The grid correction for the polar uses a multiplier of 1.0190 from this ladder. Drag has no grid-convergence result.

Output of the shared GCI tool, unedited

Lift, three grids

GCI      N=(48120,108540,193200)  r21=1.3342 r32=1.5019  (unequal-ratio form: YES)
         f: coarse=1.080280 medium=1.088400 fine=1.092120
         observed order p = 1.241   (formal 2.0)
         Richardson f(h->0) = 1.100768
         GCI_fine = 0.990 %   (Fs=1.25 auto; approx. rel. err fine-vs-medium = 0.341 %)
         asymptotic check = 1.003  (want ~1.0)
         WARNING: 3-grid family: p has NO redundancy and is unverifiable. Quote p ~ 1.2 (+-0.1 under force-tail noise), not to 3 s.f. Use >=4 grids (gci_multi.py) for a checkable order.

From data/naca-0012/gci.json (gci_3grid), written by pipeline/build_assets.py.

9Why they differ, and what I distrust

Limits, as recorded in the ledger. An earlier GCI (p 1.91, 0.58 %) was wrong and is retracted; corrected p 1.24, band 1.0 %, 3 grids. The finest 0012 grid fails checkMesh on aspect ratio (1457, 12 cells, undocumented) and fine-grid force drift exceeds the freeze's own 1e-5 gate. Cd is not grid-converged. The 4412 figure is a re-run with a changed recipe after the experiment was known; the genuinely blind run (+6.4 %, band-pass) used a recipe later found defective and is invalid. The 4412 aft-upper Cp plateau fails. The experimental Cl 1.554 is not stored locally.

  • The finest grid fails checkMesh on aspect ratio (12 cells) and the location of those cells was never documented; the order and GCI depend on that grid.
  • Both finer grids drift more than my own convergence gate (3.9e-5 and 1.8e-5 against 1e-5).
  • CFL3D is a compressible code at Mach 0.15 using a variant of SST; I solve incompressible with OpenFOAM's SST, so the +2.14 % is a code and model difference I have quantified but not explained.
  • The pressure plots come from the coarse grid, not a grid-converged solution, and the Gregory and O'Reilly data are approximate and at a different Reynolds number.
  • Drag is not grid-converged.
  • The NACA 4412 run is not blind, is single-grid and fails the aft pressure plateau; its experimental lift has no source on disk.

10References

  1. NASA Turbulence Modeling Resource, 2-D NACA 0012 validation case: CFL3D SST results (n0012clcd_cfl3d_sst.dat, n0012cp_cfl3d_sst.dat), as stored locally.
  2. Ladson, NASA TM 4074, 1988: lift and drag at Re 6 million, transition tripped, M 0.15 (TMR file CLCD_Ladson_expdata.dat).
  3. Gregory & O'Reilly, NASA R&M 3726, Jan 1970: upper-surface pressure at Re 2.88 million, digitised (TMR file CP_Gregory_expdata.dat).
  4. Celik et al.: the unequal-ratio Richardson / GCI procedure, as implemented in the project's gci.py.

Source files

  • D:/CFD/airfoil/RUNG1-FREEZE.md (read with its ERRATUM)
  • D:/CFD/airfoil/naca0012-fs2-r10/, fs2-r15/, fs2-r20/ (log.checkMesh, postProcessing/yPlus1)
  • D:/CFD/airfoil/naca0012-final-a10/ (0/, constant/, system/, log.checkMesh, postProcessing/)
  • D:/CFD/data/airfoil/tmr_naca0012/ (n0012cp_cfl3d_sst.dat, n0012clcd_cfl3d_sst.dat, CLCD_Ladson_expdata.dat, CP_Gregory_expdata.dat)
  • investigation/lane-B-verification.md (evidence audit, drift recompute)
  • site/public/data/naca-0012/ (surface_cp.csv, README.txt, chart JSON and gci.json from pipeline/case_data/naca-0012.py)

Last updated 2026-11-14. One-page summary (prints to one A4 page), also as a PDF. Every number on this page is checked against its source file by pipeline/check_numbers.py.