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.
The sixteen
Section titled “The sixteen”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.
What each one is for
Section titled “What each one is for”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.
The Reynolds-stress caveat
Section titled “The Reynolds-stress caveat”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.
What gets written
Section titled “What gets written”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 |
Wall treatment
Section titled “Wall treatment”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.
Viscosity models
Section titled “Viscosity models”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.
Also on the Models pane
Section titled “Also on the Models pane”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 |