15 Physical models
Flow equations, regime, and turbulence
15.1 What this setting is
Physical models declare which flow phenomena Wake CFD calculates. Select inviscid Euler or viscous Navier–Stokes, the compressibility regime, and the turbulence model here. These choices affect the required mesh resolution and how results are interpreted, so first assess the Reynolds number and the presence of shocks, boundary layers, and separation.
15.2 Configure in the GUI
The Desktop currently authors the DBNS model path. PBNS and FR can be configured through JSONC, though their solver choices are disabled in the Desktop Analysis dialog. The Models dialog writes its available choices to the models block.
| GUI control | Input key | What to choose |
|---|---|---|
| Regime | models.regime |
Compressible for DBNS. The dialog disables incompressible while DBNS is selected. |
| Physics | models.type |
Euler for inviscid flow; Navier–Stokes for viscous flow. |
| Turbulence → Model | models.turbulence.model |
With Navier–Stokes, choose Laminar (none), SA, or SST. Other listed models are disabled. |
| SA controls | models.turbulence.sa.* |
Variant, S̃ form, ft2, QCR2000, and rotation correction appear when SA is selected. |
| SST controls | models.turbulence.sst.* |
Variant and production form appear when SST is selected. |
models.axisymmetric, wall-treatment constants, and closure-constant overrides are not exposed in this dialog. Set them in JSONC when needed; the accepted values and restrictions are described below. The JSONC examples come after the model choices.
15.3 type
| Value | Meaning |
|---|---|
euler |
Inviscid flow. |
navier_stokes |
Viscous flow; turbulence distinguishes laminar from RANS. |
15.4 regime
| Value | Meaning |
|---|---|
compressible (default) |
Available with DBNS, PBNS, and FR; use a gas-law equation of state. |
incompressible |
PBNS constant-density flow or FR artificial compressibility (AC). DBNS rejects it; fluid materials must use eos.type: "constant_density". |
PBNS is not inherently incompressible: its default regime is compressible. For incompressible PBNS, use velocity_inlet and pressure_outlet rather than farfield or a total-conditions inlet. FR AC requires numerical_method.fr.ac_zeta > 0 and dual-time stepping; see Numerical methods. The freesurface enum value parses but is rejected before the run: regime=freesurface is under development and not available yet.
The energy equation follows from the regime and is not a separate key. A compressible case carries the total-energy equation, including pressure work and, for viscous flow, viscous work. Incompressible PBNS and FR AC carry no energy equation: PBNS keeps temperature at its initial value and FR AC has no temperature state, so an isothermal or heat-flux wall is rejected there. Setting numerical_method.pbns.coupling.energy.max_iter to 0 is not a way to freeze temperature in compressible PBNS; it is rejected.
models.gravity is reserved and rejected if supplied, even as false.
15.5 axisymmetric
axisymmetric enables the 2D, no-swirl body-of-revolution formulation. The mesh uses x as the axis and y as the radius, so every mesh coordinate must have y ≥ 0; define the axis itself as a symmetry boundary. It is not a post-processing revolution of a planar solution: Wake CFD adds the axisymmetric source terms and uses ring measures for applicable surface quantities.
| Key | Values | Default | Use |
|---|---|---|---|
axisymmetric |
false, true |
false |
Enable the 2D axisymmetric, no-swirl formulation. |
Wake CFD validates this mode before a run starts. It requires a 2D wake_2d_<tier> build, analysis.dimension: 2, analysis.solver: "dbns", and regime: "compressible". Euler, laminar Navier–Stokes, SA, and SST are available. Multigrid, PBNS, FR, rotating domains, interfaces, wall functions, and SA-QCR2000 are rejected rather than treated as planar cases.
For a body of revolution, force monitors must be axial (direction: [1, 0, 0] or [-1, 0, 0]), and moment monitors are not meaningful. These limits are intentional: radial and lateral components cancel over a full revolution.
15.6 turbulence
turbulence.model selects the turbulence model; model-specific subblocks (sa, sst) override closure constants. Omitted constants use the solver’s baseline defaults.
15.6.1 model
| Value | Meaning |
|---|---|
none |
Laminar Navier–Stokes or inviscid Euler. |
sa |
Spalart–Allmaras RANS. |
sst |
k-ω SST RANS. |
Use sa or sst with viscous DBNS. PBNS has no turbulence equations and rejects these models; FR does not use these RANS models. Other model names visible in the schema or disabled in the GUI are not implemented and are rejected rather than silently falling back to laminar flow.
15.6.2 Model-constant overrides
15.6.2.1 SA (Spalart-Allmaras)
variant, shat_form, and ft2 are covered below; cfl_reduction has its own section. All fields are optional.
| Key | Default | Meaning |
|---|---|---|
variant |
standard |
Negative ν̃ handling; neg enables SA-neg. |
shat_form |
blend2012 |
S̃ safeguard; floor is also available. |
ft2 |
false |
Classic SA laminar-suppression term. |
cv1 |
7.1 |
Viscous sublayer correction. |
cb1, cb2 |
0.1355, 0.622 |
Production and diffusion constants. |
sigma, kappa |
2/3, 0.41 |
Diffusion denominator and von Kármán constant. |
cw2, cw3 |
0.3, 2.0 |
Destruction constants. |
cn1 |
16.0 |
SA-neg negative-branch constant. |
ct3, ct4 |
1.2, 0.5 |
ft2 constants; ct3 also enters the SA-neg negative branch. |
c2, c3 |
0.7, 0.9 |
S̄ limiter constants. |
r_max |
10.0 |
Upper bound on r. |
prandtl_turb |
0.9 |
Turbulent Prandtl number of the energy closure. |
cfl_reduction |
1.0 |
Factor on the SA pseudo-time step. |
qcr2000 |
false |
Anisotropic QCR2000 stress correction; not with axisymmetry. |
rotation_correction |
false |
SA rotation/curvature correction. |
15.6.2.2 variant: treatment of negative ν̃
variant |
Meaning |
|---|---|
standard (default) |
Disallows negative ν̃; clips with max(ν̃, 0) after update |
neg |
SA-neg (Allmaras 2012); permits negative values with a negative-source branch and fn diffusion correction |
For solutions converging to ν̃ ≥ 0, the two variants are theoretically equivalent. neg is a robustness extension.
The noft2 variant was renamed standard. The ft2 term is now a separate ft2 boolean, independent of variant. edwards was removed from the enum to prevent silent fallback from a stub implementation.
15.6.2.3 ft2: laminar-suppression term
With ft2: true, the source term includes ft2 = ct3·exp(−ct4·χ²) (classic SA). The default false corresponds to SA-noft2.
Combinations of variant and ft2 correspond to names used in the literature.
| Combination | Literature name |
|---|---|
standard + ft2: false |
SA-noft2 |
standard + ft2: true |
classic SA |
neg + ft2: true |
SA-neg (complete 2012 form) |
15.6.2.4 shat_form: form preventing negative S̃
| Value | Meaning |
|---|---|
blend2012 (default) |
Allmaras 2012 smooth c2/c3 blend; standard for SA-neg |
floor |
Simple floor max(Ω + S̄, ε) for reproducing classic reference data |
Using floor with neg is a nonstandard combination and emits a warning.
15.6.2.5 cfl_reduction
dt_sa = dt_flow × cfl_reduction reduces only the turbulence-equation pseudo-time step. The default is 1.0; values of 0.5–0.8 can suppress turbulence-residual oscillations in stiff boundary layers or high-aspect-ratio meshes.
15.6.2.6 SA-QCR2000 (Quadratic Constitutive Relation)
Replaces Boussinesq isotropic stress with an anisotropic QCR form (Spalart 2000):
τ_QCR = τ_Bouss − 0.3·Σ_k (O_ik·τ_jk + O_jk·τ_ik)
O_ik = (∂u_i/∂x_k − ∂u_k/∂x_i) / |∇u|_F
The SA source term is unchanged; only mean-flow viscous stress is modified. Recommended for corner-separation and secondary-flow cases. It is variant-independent and combines freely with standard or neg.
15.6.2.7 SA-RC (Rotation Correction)
Suppresses runaway production in vortex cores (Dacles-Mariani et al.):
Prod = Shat + CRot·min(0, ||S|| − ||ω||), CRot = 2.0
It has no effect in shear-dominated boundary layers where ||S|| ≈ ||ω||, acting only in vortex cores. It is variant-independent and compatible with QCR2000. Recommended for rotor, propeller, and wing-tip vortex cases.
NASA TMR’s recommended SA-RC-QCR2000 baseline is rotation_correction: true, qcr2000: true.
15.6.2.8 SST (k-ω SST)
| Key | Default | Meaning |
|---|---|---|
variant |
v2003 |
See SST variant below. |
production |
strain |
Production form: strain (P = μt·S²), vorticity (P = μt·Ω²), or kato_launder (P = μt·S·Ω). |
sigma_k1, sigma_w1, beta_1 |
0.85, 0.5, 0.075 |
Inner-layer (k-ω) constants. |
a1 |
0.31 |
Shear-stress limiter constant. |
sigma_k2, sigma_w2, beta_2 |
1.0, 0.856, 0.0828 |
Outer-layer (k-ε) constants. |
beta_star |
0.09 |
Shared constant. |
kappa |
0.41 |
von Kármán constant. |
prandtl_turb |
0.85 |
Turbulent Prandtl number of the energy closure. |
cfl_reduction |
1.0 |
Factor on the SST pseudo-time step; lower values can help stiff cases. |
max_update_fraction |
1.0 |
Per-point relative k/ω update cap. |
15.6.2.9 SST variant
| Value | Meaning |
|---|---|
v2003 (default) |
Menter 2003 SST with the selected production form. |
sust |
Adds sustaining production floors based on freestream k and ω; they prevent ambient turbulence from decaying below its prescribed level. |
sust is implemented, not merely a schema placeholder. Its freestream values come from the turbulence inflow settings described below.
v1994 was removed on 2026-06-05 after a silent hybrid bug occurred when only the γ branch was implemented. There are no plans to restore it: NASA TMR SST-V changes only the production term to vorticity while retaining the 2003 limiter and constants, whereas V1994 changes the limiter and constants as well and therefore moves farther from the reference.
15.6.3 Wall treatment (global defaults)
Shared constants for boundaries using wall_treatment: "automatic" (see Domains). DBNS RANS uses the SA analytic wall law or SST Spalding/White–Christoph law. The treatment is continuous across y+; the former switching threshold has been removed.
| Key | Default | Meaning |
|---|---|---|
kappa |
0.41 |
von Kármán constant. |
B |
5.0 |
Spalding log-law intercept. |
relaxation |
0.5 |
Wall-law Newton solve relaxation factor. |
relaxation_turb |
0.7 |
k/ω relaxation; SST wall function only. |
max_iter |
200 |
Wall-law Newton iteration cap. |
tol |
1e-12 |
Wall-law Newton convergence tolerance. |
For FR, wall_treatment: "automatic" means a wall-modeled LES stress law, not RANS. It requires compressible Navier–Stokes and a no-slip wall; FR artificial-compressibility cases cannot use it. The following additional models.wall_treatment keys are for the FR path:
| Key | Default | Meaning |
|---|---|---|
exchange.type, exchange.value |
element_fraction, 0.5 |
Exchange point as a fraction of wall-element height; exchange.value must be in (0, 2). |
energy_work |
false |
Include wall shear work in the modeled energy flux. |
ldg_state |
no_slip |
Auxiliary wall state: no_slip, slip_mirror, or non_corrected. |
inviscid_state |
slip_mirror |
Inviscid ghost state: slip_mirror or no_slip. |
tau_jump |
false |
Apply the LDG penalty on the modeled wall face. |
coarse_level |
true |
Evaluate the wall model on p-multigrid coarse levels. |
wall_filter.alpha, wall_filter.order, wall_filter.kc |
0, 8, 1 |
Wall-normal modal filter; alpha: 0 disables it. |
eddy_viscosity, eddy_viscosity_layers |
false, 1 |
Optional wall-cell eddy viscosity and its number of element layers. |
Location of prandtl_turb varies by model
prandtl_turb is a RANS closure constant, not a gas property. It belongs in the model-specific subblock (models.turbulence.sa.prandtl_turb or models.turbulence.sst.prandtl_turb), with different recommended values (SA: 0.9, SST: 0.85).
15.7 Four-axis solver identity
models.type and models.turbulence are two of the four axes. The other two are analysis.solver and analysis.time; their combination determines the solver mode.
euler + none → Euler (inviscid)
navier_stokes + none → laminar NS
navier_stokes + sa → RANS-SA
navier_stokes + sst → RANS-SST
15.8 Location of freestream turbulence quantities
Set freestream or inlet turbulence in that boundary’s turbulence subblock, not in models. The same fields are available for uniform initialization.
| Key | Applies to | Meaning |
|---|---|---|
nu_factor |
SA | Inflow ν̃/ν ratio; default 3. |
intensity |
SST | Turbulence intensity as a fraction; default 0.05 (5%). |
eddy_viscosity_ratio |
SST | Inflow μt/μ; default 10 when no length scale is supplied. |
length_scale |
SST | Turbulence length scale in metres. |
hydraulic_diameter |
SST | Hydraulic diameter; the length scale becomes 0.07 times this value. |
For SST, set at most one of eddy_viscosity_ratio, length_scale, and hydraulic_diameter. The former turb2lam_ratio is not a current input key. intermittency is reserved for a transition model and is rejected if supplied. See Domains for boundary-condition-specific usage.
15.9 JSONC examples
The GUI writes the same keys for the controls it exposes. For a CLI case or a setting not yet available in the GUI, use JSONC. turbulence must be an object: "turbulence": "sa" is not accepted.
Compressible DBNS with SA and an explicit total-energy setting:
{
"analysis": { "solver": "dbns", "dimension": 3 },
"models": {
"type": "navier_stokes",
"regime": "compressible",
"turbulence": {
"model": "sa",
"sa": { "variant": "standard", "ft2": false, "qcr2000": true }
}
}
}Incompressible PBNS with no energy equation (the fluid material must use eos.type: "constant_density"):
{
"analysis": { "solver": "pbns", "dimension": 3 },
"models": {
"type": "navier_stokes",
"regime": "incompressible",
"turbulence": { "model": "none" }
}
}Compressible FR with total energy (FR also needs its numerical-method and time-stepping settings):
{
"analysis": { "solver": "fr", "time": "unsteady", "dimension": 3 },
"models": {
"type": "navier_stokes",
"regime": "compressible",
"turbulence": { "model": "none" }
}
}SST with the sustaining variant and one valid set of inflow turbulence values:
{
"models": {
"type": "navier_stokes",
"turbulence": {
"model": "sst",
"sst": { "variant": "sust", "production": "strain" }
}
},
"domains": [{
"boundaries": [{
"name": "farfield", "type": "farfield", "mesh_markers": ["FARFIELD"],
"mach": 0.5, "pressure": 101325.0, "temperature": 288.15,
"turbulence": { "intensity": 0.05, "eddy_viscosity_ratio": 10.0 }
}]
}]
}These are configuration fragments, not complete runnable cases; mesh, materials, and other required blocks are omitted. See Input-file structure for a full case layout.