5  2D Turbulent Flat-Plate Boundary Layer — NASA TMR SST Verification

Code-to-code verification of wall friction, eddy viscosity, and grid convergence for the Menter SST (k-ω) model (against CFL3D/FUN3D)

5.1 Run Provenance and Artifacts

Item Value
Wake CFD baseline version 0.22.0
Solver DBNS
Compute device CPU
Parallel execution 8 MPI ranks
Arithmetic precision Mixed tier
Run date 2026-10-20
Note

Results depend on the solver build that produced them. Read every figure in this report together with the version and date above — re-running the same input on a later build may give different numbers.

All ten runs (five meshes × two gradient methods) used the same input apart from the mesh, the gradient method, and the turbulence pseudo-time-step reduction listed under Numerical Methods. The first nine runs used version 0.21.4; the 545×385 weighted-least-squares run was made later on version 0.21.5, so the two 545×385 runs are not from the same build. The sibling SA case (case-02) was run on version 0.21.2.

5.1.1 Downloadable Files

Not available: standalone input decks and solver result files have not yet been published for download.

5.2 Verification Objective

This case simulates a turbulent boundary layer over a flat plate with zero pressure gradient using the Menter Shear-Stress-Transport (SST, k-ω) model. It reuses the mesh family, boundary conditions, and numerical method of the SA flat-plate verification case and compares Wake CFD SST results with the meshes, conditions, and reference data published by the NASA Turbulence Modeling Resource (TMR). It verifies Wake CFD for:

  • skin-friction coefficient (Cf) and eddy-viscosity (mu_t) prediction with the SST turbulence model
  • the direction and rate of convergence toward the CFL3D/FUN3D references as the mesh is refined
  • the effect of the gradient method (Green–Gauss versus weighted least squares) on the result and on its convergence with the mesh
  • turbulent-kinetic-energy (k) and specific-dissipation-rate (omega) profile agreement in the boundary layer

5.3 Reference Solution and Data

The NASA TMR flat-plate case is a zero-pressure-gradient (ZPG) flat plate at Mach=0.2 and Re_L=5×10^6, with L=1 m. It defines a five-level grid-convergence family from 35×25 to 545×385; all five levels were run in Wake CFD, each with two gradient methods. TMR publishes SST grid-convergence data from CFL3D (structured, cell-centered) and FUN3D (unstructured, node-centered) on the same mesh family, enabling direct comparison at matching mesh levels and stations. The TMR reference model is SST-Vm (vorticity-based production, without the second production term); TMR states that SST, SST-V, and SST-Vm give nearly identical results for this flat plate.

Item Setting
References CFL3D (cell-centered) and FUN3D (node-centered) SST-Vm results, published by NASA TMR

5.4 Simulation Conditions

Item Setting
Dimension 3D (one-cell spanwise extrusion; effectively 2D flow)
Geometry ZPG flat plate, x=[0, 2] m (leading edge x=0, reference length L=1 m)
Analysis Steady, compressible DBNS, RANS (Menter SST, k-ω, 2003 variant, log-ω formulation)
Mach 0.2
Re_L 5×10^6
Reference quantities Reference area 2, as in the CFL3D and FUN3D inputs; with it C_D is the plate’s streamwise force coefficient

5.5 Mesh

The meshes are the grids distributed by the NASA Turbulence Modeling Resource, used as distributed (the one-cell spanwise extrusion of the 2D grid family), without modification.

Mesh Streamwise × wall-normal Node count (including spanwise extrusion)
Coarsest 35 × 25 1,750
Coarse 69 × 49 6,762
Medium 137 × 97 26,578
Fine 273 × 193 105,378
Finest 545 × 385 419,650

The 69×49 mesh in three dimensions — one cell in the spanwise direction; the plate is the bottom face, the upstream inlet is on the left, and the colors distinguish boundary groups

5.6 Boundary and Initial Conditions

Using a uniform farfield condition on the boundary-layer exit plane produces a near-wall pressure gradient. Therefore, a wind-tunnel-style domain uses the pressure_inlet/pressure_outlet combination. For the general definition of each boundary condition, see Domain and Boundary Conditions in the public Wake CFD documentation.

Boundary Segment Type Setting
Wall Plate, x∈[0,2] wall no-slip, adiabatic
Symmetry plane Upstream slip segment + spanwise front/rear faces symmetry —
Inlet Upstream pressure_inlet Total pressure 104190.6 Pa, total temperature 302.4 K, freestream turbulence as below
Outlet Downstream pressure_outlet Back pressure 101325 Pa
Farfield Top farfield Mach 0.2, 101325 Pa, 300 K, freestream turbulence as below

The freestream turbulence follows the TMR SST definition: k = 9×10⁻⁹ a∞² (1.088×10⁻³ m²/s²) and mu_t/mu = 0.009 (omega = 8713 1/s), set through a turbulence intensity of 3.873×10⁻⁴ and an eddy-viscosity ratio of 0.009 on the inlet and farfield. The solver log of these runs was not checked for the resulting k and omega values; the agreement of the k and omega profiles outside the boundary layer with the references (see Detailed Comparison) is the indirect check.

Initial field: Not reported.

5.7 Numerical Methods

Item Setting
Convergence criterion Force-based — the drag and normal force coefficients each changing by less than 1×10⁻⁶ over 1,000 iterations
Turbulence model SST (Menter k-ω, 2003 variant), vorticity-based production (to match SST-Vm), Pr_t = 0.9
Convective scheme Roe, no limiter, entropy fix off, umuscl_kappa = 0.5
Gradient method Green–Gauss (gg) and weighted least squares (wls), each run on all five meshes (the selected method is also used for the viscous stresses and the turbulence terms)
Time integration Euler implicit; FGMRES with DILU preconditioning (flow and turbulence)
CFL Adaptive, 5 → 100 (reached 100 within about 30 iterations on all ten runs and stayed there)
Gas model Ideal gas, gamma = 1.4, Sutherland viscosity (S = 110.4 K, reference viscosity set so that Re_L = 5×10^6), constant Prandtl number 0.72
Note

Assumptions and differences from the references.

  • The TMR page and the CFL3D/FUN3D inputs specify only the reference temperature and leave the viscosity law and the laminar Prandtl number to the codes’ defaults. Sutherland viscosity with Pr = 0.72 was assumed to match those defaults; this was not isolated.
  • The reference inputs differ from each other in the reconstruction setting: CFL3D uses kappa = 1/3, FUN3D uses umuscl = 0.5. Wake CFD was run with umuscl_kappa = 0.5.
  • The TMR page states that both reference codes advected the turbulence variables with first-order upwinding. Wake CFD also advects the turbulence variables with a first-order scheme, so this matches.
  • The production term of the Wake CFD runs is vorticity-based, matching SST-Vm. The effect of using the strain-rate form instead was not tested.
  • The pseudo-time step of the turbulence equations was reduced on the two finest meshes: by a factor 0.5 on 273×193 and 0.25 on 545×385 (both gradient methods); the three coarser meshes use no reduction (the solver default). These factors are inherited from earlier SST work on an older solver version and were not re-examined with the current build; they are not expected to change the converged solution, but this was not tested, and the mesh-to-mesh comparison therefore mixes three settings. The 545×385 runs were not repeated with the default.
  • No turbulence seeding was applied. Earlier SST investigations (older solver versions) found that on very fine meshes this flow can also converge to a spuriously re-laminarized solution when started from a very low freestream turbulence level. The input deck of these runs contained an initial-turbulence setting intended to guard against this, but the solver does not apply it with the initialization mode used, so every run started from the freestream turbulence values above. No run re-laminarized, including the two 545×385 runs, the mesh level where the effect was seen before.

For the general input structure and turbulence-model settings, see the CLI and Model Configuration sections of the public Wake CFD documentation.

5.8 Results

5.8.1 Convergence History

All ten runs converged by the force-based criterion. The iteration counts (Green–Gauss / weighted least squares) were 1,820 / 1,832 on 35×25, 2,664 / 2,651 on 69×49, 4,402 / 4,398 on 137×97, 7,013 / 7,016 on 273×193, and 15,852 / 15,849 on 545×385 (about 1.8 hours each on 8 CPU cores for 273×193, and 17.6 / 16.0 hours for 545×385).

Residual history — absolute flow residual and SST turbulence residual, Green–Gauss and weighted least squares on each mesh

Drag-coefficient history on the five meshes (last 90% of the iterations)

The flow residual at termination was between -11.2 and -12.0 log10 (the termination criterion is force-based, not residual-based). The SST turbulence residual levels off between -8.8 and -9.2 log10 and does not decrease further (on 545×385 it ends at -9.0), unlike the Spalart–Allmaras residual in case-02. The drag coefficient is settled at termination (variation below 7×10⁻⁷ over the last 1,000 iterations on every run, 3×10⁻⁷ on 545×385), so this does not affect the results reported here; the cause of the plateau was not investigated. The two gradient methods give residual and drag histories that are nearly indistinguishable except on the coarsest mesh.

5.8.2 Grid Convergence

The results were compared directly at the same mesh and station (x=0.970084) as the CFL3D/FUN3D data published by TMR.

Grid convergence of Cf(x=0.97) — five Wake CFD points versus five CFL3D/FUN3D grid levels

Grid convergence of the plate drag coefficient C_D

Both gradient methods are shown with the reference data. Cf is the skin-friction coefficient at x=0.97 and C_D is the plate drag coefficient.

Skin-friction coefficient at x=0.97:

Mesh Cf gg Cf wls CFL3D FUN3D
35×25 0.002751 0.002719 0.002552 0.002516
69×49 0.002675 0.002671 0.002626 0.002610
137×97 0.002674 0.002673 0.002665 0.002658
273×193 0.002678 0.002678 0.002683 0.002682
545×385 0.002680 0.002679 0.002691 0.002691

Plate drag coefficient:

Mesh C_D gg C_D wls CFL3D FUN3D
35×25 0.002913 0.002884 0.002706 0.002512
69×49 0.002842 0.002838 0.002785 0.002679
137×97 0.002839 0.002838 0.002826 0.002773
273×193 0.002840 0.002839 0.002846 0.002821
545×385 0.002842 0.002842 0.002853 0.002844

Difference of Wake CFD relative to each reference code, on the same mesh:

Mesh Method Cf vs. FUN3D Cf vs. CFL3D C_D vs. FUN3D C_D vs. CFL3D
35×25 gg +9.35% +7.80% +15.97% +7.65%
35×25 wls +8.08% +6.55% +14.80% +6.56%
69×49 gg +2.50% +1.84% +6.09% +2.04%
69×49 wls +2.36% +1.71% +5.94% +1.90%
137×97 gg +0.60% +0.36% +2.36% +0.45%
137×97 wls +0.57% +0.33% +2.33% +0.42%
273×193 gg −0.13% −0.18% +0.65% −0.21%
273×193 wls −0.14% −0.19% +0.64% −0.21%
545×385 gg −0.41% −0.42% −0.08% −0.41%
545×385 wls −0.41% −0.42% −0.09% −0.41%
  • Wake CFD results are nearly independent of the mesh from 69×49 on, while the reference codes keep rising toward their finest-mesh values. Wake CFD C_D stays between 0.002838 and 0.002842 from 69×49 to 545×385, and Cf stays within 1×10⁻⁵ of 0.002675. On the coarsest meshes Wake CFD is therefore above the references (up to +16% in C_D), it falls within 0.7% of both references at 273×193, and it ends below both at 545×385.
  • A small systematic offset to the references remains on the finest mesh. At 545×385 the Wake CFD Cf is lower than CFL3D by 0.42% (both gradient methods) and than FUN3D by 0.41%; C_D is lower than CFL3D by 0.41% and than FUN3D by 0.08% / 0.09% (gg / wls). From 273×193 to 545×385 the Wake CFD Cf changed by only +1.4×10⁻⁵ (gg) / +1.7×10⁻⁵ (wls), so the offset is not shrinking with mesh refinement in this range. The sibling SA case shows a Cf offset of about −0.25%; whether the two share a cause was not investigated. The 273×193 agreement reported earlier was a crossing of a flat curve and a still-rising reference, not a converged match.
  • The change of the Wake CFD results between successive meshes is not monotonic (for example, Green–Gauss C_D decreases from 69×49 to 137×97 and increases from 137×97 to 545×385), and each change is larger than the settling noise of the termination criterion (about 3×10⁻⁷). The observed order of convergence therefore cannot be computed from these five meshes; the solution has either not entered the asymptotic range or other error terms are superimposed. This is not resolved. The turbulence pseudo-time-step reduction differs between 273×193 and 545×385 (see Numerical Methods), which may contribute; this was not isolated.

5.8.3 Difference between the gradient methods

Difference between the weighted-least-squares and Green–Gauss results versus mesh size
Mesh wls − gg, C_D wls − gg, Cf (0.97) Reduction from previous mesh (C_D / Cf)
35×25 −2.942e-5 −3.196e-5 —
69×49 −3.927e-6 −3.637e-6 ÷7.5 / ÷8.8
137×97 −8.264e-7 −9.249e-7 ÷4.8 / ÷3.9
273×193 −2.671e-7 −3.204e-7 ÷3.1 / ÷2.9
545×385 −6.857e-8 −7.262e-8 ÷3.9 / ÷4.4

The two methods approach the same solution: the difference decreases at every refinement and is about 0.002% of C_D on 545×385. Unlike the SA case, where the difference dropped by exactly a factor of four (h²) at each step, the reduction here fell from 7.5 to 3.1 before returning to 3.9 (C_D) and 4.4 (Cf) on the last step, and the sign is opposite (weighted least squares is below Green–Gauss). The reason for the slower reduction on the 273×193 step was not identified. The two 545×385 runs were made on different solver builds (see Run Provenance) and the finest two meshes use different turbulence pseudo-time-step reductions, so neither the return to about four nor the earlier slowdown can be attributed to the gradient methods alone.

5.8.4 Detailed Comparison

The profiles below show the Wake CFD results (Green–Gauss and weighted least squares) against the CFL3D and FUN3D references (finest reference meshes). The profile figures use the 545×385 mesh, the finest mesh run.

Cf(x) over the full plate on all five meshes for both gradient methods, against CFL3D and FUN3D

Turbulent kinetic energy k' and specific dissipation rate omega' at x=0.97, in the TMR non-dimensionalization

Eddy-viscosity-ratio profile at x=0.97

Maximum eddy-viscosity ratio in the boundary layer along the plate

u+ versus y+ at x=0.97 (solid) and x=1.90 (dotted) against the law of the wall

Velocity profiles u/U_inf versus height at x=0.97 and x=1.90

k' and omega' are k/a∞² and omega mu∞/(rho∞ a∞²), with a∞ = 347.7 m/s. On the 545×385 mesh, the Cf(x) distribution, the k' and omega' profiles (across eight decades on the log axis for omega'), the velocity profiles, and u+ versus y+ coincide with the references within the width of the lines, and the two gradient methods cannot be told apart. These comparisons are visual.

The maximum eddy-viscosity ratio at x=0.97 on 545×385 is 220.21 (gg) and 220.25 (wls), against 221.41 (CFL3D) and 221.92 (FUN3D), i.e. 0.54% / 0.52% lower than CFL3D and 0.77% / 0.75% lower than FUN3D. On 273×193 the values were 220.41 and 220.53 (0.45% / 0.40% below CFL3D), so the peak did not move toward the references with mesh refinement; the reason was not investigated. The Wake CFD values are cell-center values on the mesh’s own points.

5.9 Conclusions and Applicable Scope

  • On the same mesh, the SST turbulence-model implementation agrees with the NASA TMR references (CFL3D and FUN3D) on Cf within 0.2% and on C_D within 0.7% at 273×193, and on Cf within 0.42% and on C_D within 0.41% (CFL3D) at the finest mesh 545×385, for both gradient methods. The Wake CFD results are lower than the references by that margin on the finest mesh.
  • Wake CFD results change by less than 0.2% in C_D from 69×49 to 545×385, while the references keep rising; a Cf offset of about −0.4% relative to the references remains on the finest mesh and does not shrink with refinement in the range run. The observed order of convergence cannot be established from the five meshes.
  • The Green–Gauss and weighted-least-squares gradients approach the same solution; their difference falls to about 0.002% of C_D at 545×385, with a reduction per refinement that is irregular (7.5, 4.8, 3.1, then about four).
  • k, omega, velocity, and u+ profiles agree with the references; the peak eddy-viscosity ratio is 0.5% to 0.8% lower on the finest mesh.
  • The two finest meshes were run with a reduced turbulence pseudo-time step (0.5 and 0.25) and the two 545×385 runs used different solver builds; neither was tested for an effect on the results, so the finest-mesh comparison carries those caveats.
  • No run re-laminarized, although no turbulence seeding was applied (see Numerical Methods), including on the finest mesh. Cases with a similarly quiescent freestream turbulence level and fine near-wall resolution should still be checked.
  • These results apply to a two-dimensional, zero-pressure-gradient flat plate at one subsonic condition (M=0.2). They cannot be generalized to pressure gradients, separation, transition, curved surfaces, or strong compressibility effects.

This case shows that Wake CFD’s SST turbulence-model implementation reproduces the wall friction and the boundary-layer profiles of mature reference codes for a subsonic flat-plate boundary layer without a pressure gradient to within the stated differences. It establishes a minimum validation baseline for this range of conditions rather than an absolute accuracy guarantee.

5.10 References