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 |
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 |

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 groups5.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 |
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.72was 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 usesumuscl = 0.5. Wake CFD was run withumuscl_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.5on273×193and0.25on545×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. The545×385runs 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×385runs, 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).


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.

Cf(x=0.97) — five Wake CFD points versus five CFL3D/FUN3D grid levels
C_DBoth 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×49on, while the reference codes keep rising toward their finest-mesh values. Wake CFDC_Dstays between0.002838and0.002842from69×49to545×385, andCfstays within1×10⁻⁵of0.002675. On the coarsest meshes Wake CFD is therefore above the references (up to +16% inC_D), it falls within 0.7% of both references at273×193, and it ends below both at545×385. - A small systematic offset to the references remains on the finest mesh. At
545×385the Wake CFDCfis lower than CFL3D by 0.42% (both gradient methods) and than FUN3D by 0.41%;C_Dis lower than CFL3D by 0.41% and than FUN3D by 0.08% / 0.09% (gg / wls). From273×193to545×385the Wake CFDCfchanged 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 aCfoffset of about −0.25%; whether the two share a cause was not investigated. The273×193agreement 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_Ddecreases from69×49to137×97and increases from137×97to545×385), and each change is larger than the settling noise of the termination criterion (about3×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 between273×193and545×385(see Numerical Methods), which may contribute; this was not isolated.
5.8.3 Difference between the gradient methods

| 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
k' and specific dissipation rate omega' at x=0.97, in the TMR non-dimensionalization


u+ versus y+ at x=0.97 (solid) and x=1.90 (dotted) against the law of the wall
u/U_inf versus height at x=0.97 and x=1.90k' 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
Cfwithin 0.2% and onC_Dwithin 0.7% at273×193, and onCfwithin 0.42% and onC_Dwithin 0.41% (CFL3D) at the finest mesh545×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_Dfrom69×49to545×385, while the references keep rising; aCfoffset 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_Dat545×385, with a reduction per refinement that is irregular (7.5, 4.8, 3.1, then about four). k,omega, velocity, andu+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.5and0.25) and the two545×385runs 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.