Turbulent Flow CFD Validation of a NACA 0012 Airfoil

The goal was to test whether a CFD simulation of airflow over a wing section can be trusted: lift matched NASA wind-tunnel data within 1⁠–⁠2%, and a 40% drag over-prediction most likely comes from one fixable meshing choice. Two-dimensional RANS simulation of turbulent flow over a NACA 0012 airfoil at a high Reynolds number.

Project
Case study, Cornell University (online course)
My role
Geometry, meshing, CFD and validation
Tools
ANSYS Meshing, ANSYS Fluent, CFD-Post
Method
2D steady RANS, Realizable k-ε
Velocity magnitude contour around the NACA 0012 airfoil
Converged velocity magnitude field around the airfoil at α = 10°, Re = 6×106.
  • 1.059lift coefficient, ≈1–2% below the NASA reference
  • +40%drag over-prediction, likely cause identified
  • 6×106chord-based Reynolds number, at 10° angle of attack
  • 3/4validation & verification checks satisfied

Skills shown

  • CFD Domain & Surface Meshing (ANSYS)
  • Boundary-Layer & y+ Analysis
  • RANS Turbulence Modeling (Realizable k-ε)
  • Finite-Volume Simulation (ANSYS Fluent)
  • Verification & Validation (V&V)
  • Root-Cause Diagnosis
  • Technical Reporting

How I did it

Check whether a steady RANS CFD methodology, built up from first principles and applied to a well documented benchmark airfoil, predicts lift and drag accurately enough to trust on a new, less characterized geometry.

  1. Set up the case

    ANSYS Meshing

    A single 2D symmetric airfoil section in a large far field domain, set up to isolate one steady operating point before any mesh or turbulence model refinement is attempted. The NACA 0012 profile has a 1.0 m chord, and the domain is sized to 12.5 chord lengths from the airfoil in every direction, with free stream velocity and turbulence quantities at the far field inlet, static pressure at the outlet, and the no-slip condition at the airfoil surface.

    Reynolds number
    6×106
    Angle of attack
    10°
    Chord
    1.0 m
    Domain extent
    12.5 chords
    Boundary condition schematic for the computational domain
    Boundary conditions applied to the domain: free stream velocity and turbulence quantities at the far field inlet, static pressure at the outlet, and the no-slip condition at the airfoil surface.
    Far-field domain sketch dimensioned to 12.5 chord lengths
    Far field domain sketch, sized to 12.5 chord lengths from the airfoil in every direction.
    Dimensioned NACA 0012 airfoil profile, chord length 1.0 m
    Dimensioned NACA 0012 profile used to build the flow domain, chord length 1.0 m.
  2. Build the mesh

    ANSYS Meshing

    A layered meshing strategy resolves the boundary layer and near-body wake without paying for that resolution everywhere in a 12.5-chord domain: a coarse far field blended into a 3c sphere-of-influence refinement zone, 0.3% c edge sizing on the airfoil surface, and 10 inflation layers at a 1.2 growth rate.

    Orthogonal quality is above 0.9 for the large majority of elements, and the small number of lower-quality cells are concentrated exactly at the trailing edge, where the unstructured mesh becomes locally skewed.

    Cells
    26,962
    Inflation layers
    10, growth rate 1.2
    Surface cell size
    0.3% of chord
    Refined zone
    3 chords around the airfoil
    Coarse far-field mesh blending into a finer zone around the airfoil
    Coarse far field mesh blending into the finer sphere-of-influence refinement zone around the airfoil.
    Close-up of the airfoil surface mesh and inflation layers
    Close-up of the airfoil surface mesh and boundary-layer inflation layers.
  3. Solve the flow

    ANSYS Fluent

    The flow is modeled as steady, incompressible, and two dimensional, closed with the Realizable k-ε turbulence model and Standard Wall Functions. Discretization proceeds in two stages: an initial first-order-upwind solve for robustness, followed by a second-order-upwind solve for accuracy once the flow field is established, with all residuals converged to 10−6.

    The pressure field shows the expected stagnation region just below the nose and a strong suction peak on the upper surface immediately downstream of it, and velocity vectors confirm the flow stays attached to both surfaces all the way to the trailing edge.

    Turbulence model
    Realizable k-ε
    Wall treatment
    Standard Wall Functions
    Discretization (final)
    Second-order upwind
    Residuals
    10−6
    Pressure contour around the leading edge of the airfoil
    Pressure around the leading edge: stagnation region (red) and suction peak (blue).
    Velocity vectors around the airfoil showing attached flow
    Velocity vectors confirm attached, forward-moving flow on both surfaces, with no separation.
  4. Compare with NASA data

    CFD-Post

    The computed pressure coefficient distribution was compared directly against published NASA wind tunnel measurements for this airfoil across the full chord, using a chordwise polyline built from the CFD-Post boundary-intersection tool.

    The two curves overlap closely, including the sharp suction peak near the leading edge, which is the strongest evidence in this study that the overall lift-generating pressure field is being captured correctly, independent of how well the boundary layer itself is resolved.

    Lift coefficient
    1.059 vs. ≈1.07–1.08
    Drag coefficient
    0.0167 vs. ≈0.012
    CFD pressure coefficient compared with NASA wind-tunnel data along the chord
    CFD pressure coefficient (line) against published NASA wind tunnel data (points), plotted with the conventional inverted vertical axis.

How I checked the results

Across the four validation and verification checks that matter most for this case, three are cleanly satisfied and the fourth points to one specific, fixable limitation.

3/4

validation & verification checks satisfied

The lift coefficient and surface pressure distribution match published NASA wind tunnel data to within a few percent, and the solution conserves mass to a relative imbalance far below any engineering concern. The drag coefficient over-predicts the experimental value by roughly 40%, an outcome that the y+ diagnosis below traces, most likely, to a specific, correctable meshing limitation rather than to a flaw in the turbulence model.

CFD result vs. published experimental value

Force coefficients shown as a percentage of the experimental reference value; 100% is an exact match.

Lift coefficient is 98.5% of the experimental reference value. Drag coefficient is 139.2% of the experimental reference value.
Validation and verification checks, results and status
Validation / verification checkComputed resultReference / targetStatus
Surface pressure coefficient (Cp)Close agreement across the full chordMatches published NASA Cp distributionSatisfied
Lift coefficient (CL)1.059 (≈1–2% low)≈ 1.07–1.08 (NASA reference)Satisfied
Mass conservation≈4.8×10−7 kg/s against a ≈1490 kg/s through-flowNet flux imbalance ≈ 0Satisfied
Drag coefficient (CD)0.0167 (≈40% high)≈ 0.012 (NASA reference)Flagged, likely cause identified

Near-wall resolution and y+ diagnosis

Because the pressure field is already shown to be accurate, the drag over-prediction has to come from somewhere else: the near-wall mesh. The non-dimensional wall distance y+ measures where the first mesh cell center falls relative to the layers of the turbulent boundary layer, and the Standard Wall Functions used in this study are only accurate when that first cell lands in the log layer, roughly 30 to 300.

20–25typical computed y+ over most of the chord30–300log-layer window required for wall functions

Computed y+ spikes to roughly 90 right at the leading edge and dips to 3 to 5 just downstream of it, but sits at only 20 to 25 over most of the chord, below the required window. That places the first cell in the buffer region instead of the log layer, where the log law that Standard Wall Functions impose does not hold, so the computed wall shear stress loses accuracy; this lines up with the over-predicted drag coefficient carried through the whole solution.

y+ along the chord

Approximate y+ distribution along the chord: high at the leading edge, a dip just downstream, then about 20 to 30 over most of the chord, below the recommended minimum of 30.
Approximate y+ distribution along the chord, based on the CFD-Post output; most of the chord sits below the recommended y+ = 30 threshold.

Engineering judgment and recommendations

Beyond the pass-or-fail result, this study points to one dominant lever for improving it and a short list of items worth checking before extending the methodology to a new airfoil.

  • Flagged

    Refine the near-wall mesh before trusting drag

    The drag discrepancy most likely comes from a near-wall mesh that places the first cell in the buffer region rather than the log layer. Refining the boundary-layer inflation to y+ ≈ 1, or at minimum y+ ≈ 5 together with the Enhanced Wall Treatment, is expected to substantially improve the drag prediction without disturbing the already-accurate lift and pressure results.

  • Trailing-edge mesh quality needs local attention

    A small number of skewed, poor-orthogonal-quality cells cluster at the trailing edge. They are a minor share of the total mesh, but sit exactly where the boundary layers from both surfaces meet, so they are worth resolving alongside the near-wall refinement above.

  • Mesh independence and far-field extent are still open

    This study used a single mesh and a domain extent of 12.5 chord lengths. Neither has been formally shown to be independent of further refinement, so both remain on the list before the result should be treated as fully verified.

  • Confirm the methodology generalizes before reusing it

    Before applying this meshing and turbulence-modeling approach to a new, less-characterized geometry, it is worth repeating this case with a second turbulence model (k-ω SST or Spalart-Allmaras) and at additional angles of attack, to check that today’s good agreement is not specific to this one operating point.

Technical details

Method, mesh and solver settings, and the flow-field analysis, for engineers who want to go deeper.

Method, mesh and solver setup Modeling assumptions, mesh controls, solver configuration and mesh quality

Method

The flow is treated as steady, incompressible, and fully turbulent, and solved with the Reynolds Averaged Navier Stokes equations rather than resolving every turbulent eddy directly.

Eddy-viscosity closure: τt = μt (∂ū/∂y), with μt supplied by the Realizable k-ε turbulence model

  • All domain construction and surface meshing were done in ANSYS Meshing, starting from a single symmetric NACA 0012 profile.
  • The flow is modeled as steady, incompressible, and two dimensional, closed with the Realizable k-ε turbulence model and Standard Wall Functions.
  • Discretization proceeds in two stages: an initial first-order-upwind solve for robustness, followed by a second-order-upwind solve for accuracy once the flow field is established.
  • Scope is limited to one operating point, one turbulence model, and one mesh topology; mesh-independence and multi-angle sweeps are identified as follow-on work, not performed here.

Mesh generation and solver setup

A layered meshing strategy resolves the boundary layer and near-body wake without paying for that resolution everywhere in a 12.5-chord domain.

Mesh controls by region
RegionControlSetting
Far fieldBackground element sizeCoarse, blended into the refinement zone
Airfoil vicinitySphere-of-influence radius / element size3.0 m (3c) / 5.0×10−2 m (5% c)
Airfoil surfaceEdge sizing / bias factor3.0×10−3 m (0.3% c) / 10.0
Boundary layerInflation layers / growth rate / max. thickness10 / 1.2 / 6.0×10−3 m (0.6% c)
Mesh totalsNodes / elements27,343 / 26,962

The solver was then configured to match the mathematical model above:

ANSYS Fluent solver settings
SettingValue
Solver type / time / spacePressure-based / Steady / 2D planar
Turbulence modelRealizable k-ε, Standard Wall Functions
Fluid density / viscosity1.1767 kg/m³ / 1.009×10−5 kg/(m·s)
Discretization (final)Pressure: 2nd order; Momentum, k, ε: 2nd order upwind
Convergence criterion (final)10−6, all residuals

Mesh quality was checked on two standard metrics before moving to solver setup. Orthogonal quality is above 0.9 for the large majority of elements, and the small number of lower-quality cells are concentrated exactly at the trailing edge, where the unstructured mesh becomes locally skewed and is difficult to avoid without further local subdivision. This trailing-edge weakness is carried forward into the recommendations.

Histogram of element orthogonal quality across the mesh
Orthogonal quality histogram: the large majority of elements fall in the 0.9 to 1.0 range.
Location of poor orthogonal quality cells at the trailing edge
The small number of poor-quality cells are concentrated at the trailing edge.
Flow-field analysis Velocity, pressure, streamlines and turbulence, compared with the behavior expected before solving

Each check below isolates one part of the converged flow field and compares it against the qualitative and quantitative behavior expected before the solver was ever run.

A1. Velocity Field & Boundary-Layer Development

The velocity magnitude field accelerates around the nose and along the upper (suction) surface, exactly as expected for a positive angle of attack, and decelerates smoothly toward the trailing edge with no sign of large-scale separation.

1 cellspans the boundary-layer thickness here

Overlaying the mesh on the velocity field shows only a single control volume across the full boundary-layer thickness over much of the chord, a mesh-resolution issue that reappears quantitatively in the y+ check. Velocity vectors (step 3) confirm the flow stays attached to both surfaces all the way to the trailing edge, which rules out stall or separation as an explanation for the drag over-prediction.

Velocity field through the boundary layer with mesh overlaid
Velocity through the boundary layer with the mesh overlaid; a single cell spans the full thickness here.

A2. Pressure Field & Suction Peak

The pressure field shows the expected stagnation region just below the nose and a strong suction peak on the upper surface immediately downstream of it, where the flow accelerates most sharply around the leading-edge curvature.

Moving toward the trailing edge, pressure rises again, producing the adverse pressure gradient responsible for the boundary-layer thickening observed in A1. Because lift comes almost entirely from this pressure distribution rather than from viscous shear, an accurate pressure field is the main reason the lift coefficient comes out so close to the experimental value. The pressure field is shown in step 3.

A3. Flow Structure: Streamlines & Turbulence Production

Streamlines seeded upstream of the airfoil and colored by pressure coefficient curve sharply around the suction peak before settling into a gentle wake, with no recirculation visible anywhere in the domain.

Turbulence kinetic energy is negligible in the free stream and concentrated almost entirely in the boundary layer and near wake, confirming that turbulence in this flow is generated locally by the airfoil rather than carried in from the inlet, so the estimated inlet turbulence values are not a significant source of uncertainty here.

Streamlines colored by pressure coefficient around the airfoil
Streamlines colored by pressure coefficient, curving around the leading-edge suction peak.
Turbulence kinetic energy contour around the airfoil
Turbulence kinetic energy is generated almost entirely at the surface and in the near wake.

Questions about this project?

I’m happy to walk through the setup and results in more detail.