Skip to content
Draft. This manual is new and still being checked against the software as it is verified. Some pages will change. If something here does not match what you see, the software is right — tell us and we will fix the page.

Turbulence and viscosity models

Every turbulence model the application offers, the OpenFOAM name it writes, and the field set it derives. The viscosity models are at the bottom of the page — they are a different choice, made on a different pane.

You pick a turbulence model on Models; you pick a viscosity model on Materials. Neither is derived from the analysis type, so both survive a change of analysis type unless something in the case makes them impossible.


Sixteen entries, of which one — Laminar — is the absence of a model rather than a model. Fifteen models plus “off”.

Shown as Writes simulationType Fields derived
Laminar laminar laminar
k-epsilon kEpsilon RAS k epsilon nut
realizable k-epsilon realizableKE RAS k epsilon nut
RNG k-epsilon RNGkEpsilon RAS k epsilon nut
k-omega kOmega RAS k omega nut
k-omega SST kOmegaSST RAS k omega nut
k-omega SST LM kOmegaSSTLM RAS k omega nut
GEKO GEKO RAS k omega nut
EBRSM EBRSM RAS k omega nut
Spalart-Allmaras SpalartAllmaras RAS nuTilda nut
LRR (RSM) LRR RAS k omega nut
SSG (RSM) SSG RAS k omega nut
LES WALE WALE LES nut
LES Smagorinsky Smagorinsky LES nut
SA-DDES SpalartAllmarasDDES LES nut
SST-IDDES kOmegaSSTIDDES LES nut

k-omega SST is the default on a new case, and is what an unrecognised model name falls back to.

The two DES models are written under simulationType LES, which is where OpenFOAM keeps the hybrid RANS-LES library. They are not RAS entries.

Laminar — no turbulence model at all. Valid only at low Reynolds number. Wrong wherever the flow is actually turbulent: it does not under-predict mixing, it omits it.

k-epsilon — the standard two-equation model. Robust and cheap. Wrong where the flow separates or runs into an adverse pressure gradient, which is most of external aerodynamics.

realizable k-epsilon — the same family with a constraint that keeps the normal stresses physical. Better on round jets and on separation than standard k-epsilon.

RNG k-epsilon — k-epsilon re-derived by renormalisation group; better for swirl and low-Reynolds strain.

k-omega — Wilcox’s two-equation model. Resolves the near wall well and is sensitive to the free-stream omega you specify, which is the usual reason it behaves differently from run to run on an external case.

k-omega SST — k-omega near the wall blended to k-epsilon away from it, which removes the free-stream sensitivity. The sensible default for external aerodynamics, adverse pressure gradients and separation. Start here.

k-omega SST LM — the Langtry-Menter transition model. It predicts where the boundary layer trips rather than assuming it is turbulent everywhere. It needs a y+ of about 1 and a good inlet turbulence specification; given wall functions and a guessed inlet intensity it is an expensive way to get the fully-turbulent answer.

GEKO — a generalised k-omega whose coefficients are tunable to span the behaviour of several models. ESI v2606 only. The application writes the model name and no coefficient block, so it runs at the solver’s own defaults.

Spalart-Allmaras — one transport equation for a modified viscosity. Cheap and robust for attached external aerodynamics. Wrong for free shear flows, jets and anything strongly separated, which is what the extra equation in a two-equation model is buying you.

LRR (RSM), SSG (RSM), EBRSM — Reynolds-stress models, which transport the stress tensor itself instead of assuming an eddy viscosity. The reason to want one is anisotropy: swirl, secondary flow in a duct corner, strong streamline curvature. See the caveat below before choosing one.

LES WALE, LES Smagorinsky — scale-resolving. They resolve the large eddies and model only the sub-grid ones, so they need a transient run and a fine mesh in the region of interest. Wrong as a substitute for a RANS model on a RANS mesh: a coarse LES is not a conservative answer, it is a different and worse one. WALE behaves correctly at a wall without a damping function; Smagorinsky does not.

SA-DDES, SST-IDDES — hybrid RANS-LES. RANS in the attached boundary layer, LES in the separated wake. The practical choice for a high-Reynolds unsteady external flow, and pointless on a steady case: they are transient models and there is nothing for them to resolve if time is not being integrated.

LRR, SSG and EBRSM transport a Reynolds-stress tensor. The application’s field-set switch has no case for them, so they fall to its default and the case is written with k, omega and nut — the same field set as the k-omega family. The model name in constant/turbulenceProperties is correct; the fields beside it are the ones a two-equation model needs.

The three are offered and are recorded here as offered. Whether a given case runs is a question for the Problems tab and the solver log, not for this page.


constant/turbulenceProperties. One of three shapes.

Laminar

simulationType laminar;

RAS

simulationType RAS;
RAS
{
model <name>;
turbulence on;
printCoeffs on;
kMin 1e-12;
epsilonMin 1e-12;
omegaMin 1e-12;
}

The three floors are not OpenFOAM’s defaults. Every two-equation model forms the eddy viscosity as k/omega or k²/epsilon, and OpenFOAM’s own floor is close enough to zero that the division can trap as a floating-point exception and kill the solver with no message at all.

LES

simulationType LES;
LES
{
model <name>;
turbulence on;
printCoeffs on;
delta cubeRootVol;
cubeRootVolCoeffs
{
deltaCoeff 1;
}
}

The LES delta is fixed at cubeRootVol and is not exposed.

A multi-region (conjugate) case writes one constant/<region>/turbulenceProperties per fluid region; solid regions get none. A Euler-Euler case writes constant/turbulenceProperties.<phase> per phase, each laminar.


When the application overrides your choice

Section titled “When the application overrides your choice”

Four cases, all of them silent-until-logged rather than silent.

Trigger What happens
The pinned solver’s catalogue entry has laminar: true The model is set to Laminar when the solver is chosen, and the Problems tab raises an error if it is changed back
Analysis type is Sediment / drift flux and the model name contains omega The model is changed to k-epsilon. driftFluxFoam carries a mixture turbulence library with a shorter list of models, and k-omega SST is not in it
Physics family is Lagrangian and coupling is one-way turbulenceProperties is written laminar whatever the pane says. An uncoupled parcel run does not solve the carrier flow, so there is no nut for a model to write into
The analysis type is changed The field set is re-derived. Conditions on fields that no longer exist are discarded

One control, three settings, applied as a coherent set across nut, k, omega, epsilon and alphat rather than per field.

Setting
Wall functions The default
Resolved (low-Re) Raises a Problems entry if the target y+ is above 5
Automatic blending

The patch types each one produces are in Boundary condition types. What y+ is and why the choice matters is in y+ and wall treatment.


Five, on the Materials pane. Offered only for the physics families that read constant/transportProperties: incompressible, VoF, marine, cavitation, miscible, atmospheric, scalar, Lagrangian and SRF.

The chosen name is written verbatim as transportModel, followed by a <name>Coeffs block.

Model Coefficients written Fields on the pane
Newtonian none
CrossPowerLaw nu0 nuInf m n Viscosity at zero shear, viscosity at infinite shear, time constant, exponent
BirdCarreau nu0 nuInf k n Viscosity at zero shear, viscosity at infinite shear, time constant, power-law index
powerLaw nuMax nuMin k n Viscosity at zero shear, viscosity at infinite shear, consistency index, power-law index
HerschelBulkley nu0 tau0 k n Viscosity at zero shear, viscosity at infinite shear, consistency index, power-law index, yield stress

nu is written after the coefficient block in every case, so a Newtonian viscosity is always present even when a shear-dependent model is selected.

Newtonian — constant viscosity. Right for air, water and most gases. Wrong for blood, slurries, polymer solutions and drilling muds, where a constant viscosity is not an approximation but a different fluid.

CrossPowerLaw — shear thinning between a zero-shear and an infinite-shear plateau. Polymer solutions.

BirdCarreau — the same shape with a smoother knee. The usual choice for blood.

powerLaw — a straight line on log-log axes, clipped at both ends by nuMin and nuMax. Wrong outside the shear-rate range it was fitted over, where the unclipped form goes to zero or to infinity.

HerschelBulkley — a yield stress below which nothing flows at all. Drilling mud, toothpaste.


Not turbulence, but set here and re-deriving the same field set.

Control Options
Analysis type The twenty-six in Analysis types and solvers
Time dependency Steady-state, Transient — Transient only, where the analysis type has no steady form
Algorithm SIMPLE, SIMPLEC when steady; PIMPLE, PISO when transient
Energy equation On/off
Gravity / buoyancy On/off