Draft. This manual is new and still growing. If something here does not match what you see in the software, 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.
Both are on Models. 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
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 |
R k epsilon f nut |
| Spalart-Allmaras | SpalartAllmaras |
RAS |
nuTilda nut |
| LRR (RSM) | LRR |
RAS |
R epsilon nut |
| SSG (RSM) | SSG |
RAS |
R epsilon 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
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 note below on what they cost.
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.
What a Reynolds-stress model costs
LRR, SSG and EBRSM are the only entries on the list that do not write a
k-and-a-scale field set, because they are the only ones not built on an eddy
viscosity. Instead of one scalar and an assumption that the stresses line up
with the mean strain, they carry R — the stress tensor, six components, one
transport equation each — and a dissipation equation beside it. EBRSM adds
f, an elliptic blending factor that lets it integrate to the wall instead of
bridging it with a wall function, and writes a k it derives from R rather
than solving.
That is seven turbulence equations, or eight for EBRSM, where the name
"two-equation model" tells you what the alternative costs — and the stress
equations are the stiffest in the case: their production
term is quadratic in the thing being solved for. Expect an iteration to take
roughly twice as long and to need more of them. The application relaxes R
harder than it relaxes k and epsilon for that reason, and adds R to the
convergence criteria — on one of these models the stresses are the answer, so
a run that settled on pressure and velocity alone has not finished.
EBRSM is a low-Reynolds model. It expects a mesh resolved to about y+ 1; on
the wall-function mesh the Boundary layers pane produces by default it will run,
but the near-wall behaviour it exists to capture is not being resolved.
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
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
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
Five, on the Models pane, in the Physics section. 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
Not turbulence, but set here and re-deriving the same field set.
| Control | Options |
|---|---|
| Analysis type | The ones 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 |