[version 12][**version 11**][version 10][version 9][version 8][version 7][version 6]

## 8.2 Turbulence models

Turbulence modelling is part of general momentum transport which is concerned with models for the viscous stress in a ﬂuid. Momentum transport is conﬁgured through the momentumTransport ﬁle in the constant directory of a case. The ﬁle includes the mandatory simulationType keyword that speciﬁes how turbulence is modelled, which includes the following options:

- laminar
- uses no turbulence models;
- RAS
- uses Reynolds-averaged simulation (RAS) modelling;
- LES
- uses large-eddy simulation (LES) modelling.

The ﬁle then includes a sub-dictionary of the same name as the chosen simulationType which contains the model selections. A typical example is shown below that uses the – (k-epsilon) turbulence model.

17simulationType RAS;

18

19RAS

20{

21 model kEpsilon;

22

23 turbulence on;

24

25 printCoeffs on;

26}

27

28// ************************************************************************* //

The ﬁle shows the selected RAS simulation followed by the RAS sub-dictionary containing the model selections, in particular the model which is set to kEpsilon. The choice of RAS models is described in section 8.2.1 and more information can be found in Chapter 7 of Notes on Computational Fluid Dynamics: General Principles. The LES models are listed in section 8.2.3 .

Where the laminar option is selected, the sub-dictionary is optional and will default to a Newtonian model, using the viscosity speciﬁed in the physicalProperties ﬁle. Other models, including non-Newtonian and visco-elastic models, are described in section 8.3 . Non-Newtonian models can also be combined with turbulence models (whereas visco-elastic models cannot).

For a general introduction to turbulence for CFD, the reader may also wish to consult Chapter 6 of Notes on Computational Fluid Dynamics: General Principles.

### 8.2.1 Reynolds-averaged simulation (RAS) modelling

If RAS is selected, the choice of RAS modelling is speciﬁed in a RAS sub-dictionary which requires the following entries.

- model: name of RAS turbulence model.
- turbulence: switch to turn the solving of turbulence modelling on/oﬀ.
- printCoeffs: optional switch to print model coeﬀs to terminal at simulation start up, defaults to false.
- <model>Coeffs: optional dictionary of coeﬃcients for the respective model, defaults to standard coeﬃcients.

Turbulence models can be listed by running foamToC with a relevant table listed from the RAS or LES tables. For example, the RAS tables are listed by running the following command.

foamToC -table RAS

foamToC -table RASincompressibleMomentumTransportModel

foamSearch $FOAM_TUTORIALS momentumTransport RAS/model

foamInfo buoyantKEpsilon

### 8.2.2 RAS turbulence models

For incompressible ﬂows, the RAS model can be chosen from the list below.

- LRR
- Launder, Reece and Rodi Reynolds-stress turbulence model for incompressible ﬂows.
- LamBremhorstKE
- Lam and Bremhorst low-Reynolds number k-epsilon turbulence model for incompressible ﬂows.
- LaunderSharmaKE
- Launder and Sharma low-Reynolds k-epsilon turbulence model for incompressible ﬂows.
- LienCubicKE
- Lien cubic non-linear low-Reynolds k-epsilon turbulence models for incompressible ﬂows.
- LienLeschziner
- Lien and Leschziner low-Reynolds number k-epsilon turbulence model for incompressible ﬂows.
- RNGkEpsilon
- Renormalization group k-epsilon turbulence model for incompressible ﬂows.
- SSG
- Speziale, Sarkar and Gatski Reynolds-stress turbulence model for incompressible ﬂows.
- ShihQuadraticKE
- Shih’s quadratic algebraic Reynolds stress k-epsilon turbulence model for incompressible ﬂows
- SpalartAllmaras
- Spalart-Allmaras one-eqn mixing-length model for incompressible external ﬂows.
- kEpsilon
- Standard k-epsilon turbulence model for incompressible ﬂows.
- kEpsilonLopesdaCosta
- Variant of the standard k-epsilon turbulence model with additional source terms to handle the changes in turbulence in porous regions for atmospheric ﬂows over forested terrain.
- kOmega
- Standard high Reynolds-number k-omega turbulence model for incompressible ﬂows.
- kOmega2006
- Standard (2006) high Reynolds-number k-omega turbulence model for incompressible ﬂows.
- kOmegaSST
- Implementation of the k-omega-SST turbulence model for incompressible ﬂows.
- kOmegaSSTLM
- Langtry-Menter 4-equation transitional SST model based on the k-omega-SST RAS model.
- kOmegaSSTSAS
- Scale-adaptive URAS model based on the k-omega-SST RAS model.
- kkLOmega
- Low Reynolds-number k-kl-omega turbulence model for incompressible ﬂows.
- qZeta
- Gibson and Dafa’Alla’s q-zeta two-equation low-Re turbulence model for incompressible ﬂows
- realizableKE
- Realizable k-epsilon turbulence model for incompressible ﬂows.
- v2f
- Lien and Kalitzin’s v2-f turbulence model for incompressible ﬂows, with a limit imposed on the turbulent viscosity given by Davidson et al.

For compressible ﬂows, the RAS model can be chosen from the list below.

- LRR
- Launder, Reece and Rodi Reynolds-stress turbulence model for compressible ﬂows.
- LaunderSharmaKE
- Launder and Sharma low-Reynolds k-epsilon turbulence model for compressible and combusting ﬂows including rapid distortion theory (RDT) based compression term.
- RNGkEpsilon
- Renormalization group k-epsilon turbulence model for compressible ﬂows.
- SSG
- Speziale, Sarkar and Gatski Reynolds-stress turbulence model for compressible ﬂows.
- SpalartAllmaras
- Spalart-Allmaras one-eqn mixing-length model for compressible external ﬂows.
- buoyantKEpsilon
- Additional buoyancy generation/dissipation term applied to the k and epsilon equations of the standard k-epsilon model.
- kEpsilon
- Standard k-epsilon turbulence model for compressible ﬂows including rapid distortion theory (RDT) based compression term.
- kOmega
- Standard high Reynolds-number k-omega turbulence model for compressible ﬂows.
- kOmega2006
- Standard (2006) high Reynolds-number k-omega turbulence model for compressible ﬂows.
- kOmegaSST
- Implementation of the k-omega-SST turbulence model for compressible ﬂows.
- kOmegaSSTLM
- Langtry-Menter 4-equation transitional SST model based on the k-omega-SST RAS model.
- kOmegaSSTSAS
- Scale-adaptive URAS model based on the k-omega-SST RAS model.
- realizableKE
- Realizable k-epsilon turbulence model for compressible ﬂows.
- v2f
- Lien and Kalitzin’s v2-f turbulence model for compressible ﬂows, with a limit imposed on the turbulent viscosity given by Davidson et al.

### 8.2.3 Large eddy simulation (LES) modelling

If LES is selected, the choice of LES modelling is speciﬁed in a LES sub-dictionary which requires the following entries.

- model: name of LES turbulence model.
- turbulence: switch to turn the solving of turbulence modelling on/oﬀ.
- delta: name of delta model.
- printCoeffs: optional switch to print model coeﬀs to terminal at simulation start up, defaults to false.
- <model>Coeffs:
- <model>Coeffs: optional dictionary of coeﬃcients for the respective model, to override the default coeﬃcients.
- <delta>Coeffs: dictionary of coeﬃcients for the delta model.

The LES models used in the tutorials can be listed using foamSearch with the following command. The lists of available models are given in the following sections.

foamSearch $FOAM_TUTORIALS momentumTransport LES/model

### 8.2.4 LES turbulence models

For incompressible and compressible ﬂows, the LES model can be chosen from the list below.

- DeardorﬀDiﬀStress
- Diﬀerential SGS Stress Equation Model for incompressible ﬂows
- Smagorinsky
- The Smagorinsky SGS model.
- SpalartAllmarasDDES
- SpalartAllmaras DDES turbulence model for incompressible ﬂows
- SpalartAllmarasDES
- SpalartAllmarasDES DES turbulence model for incompressible ﬂows
- SpalartAllmarasIDDES
- SpalartAllmaras IDDES turbulence model for incompressible ﬂows
- WALE
- The Wall-adapting local eddy-viscosity (WALE) SGS model.
- dynamicKEqn
- Dynamic one equation eddy-viscosity model
- dynamicLagrangian
- Dynamic SGS model with Lagrangian averaging
- kEqn
- One equation eddy-viscosity model
- kOmegaSSTDES
- Implementation of the k-omega-SST-DES turbulence model for incompressible ﬂows.

### 8.2.5 Model coeﬃcients

The coeﬃcients for the RAS turbulence models are given default values in their respective source code. If the user wishes to override these default values, then they can do so by adding a sub-dictionary entry to the RAS sub-dictionary ﬁle, whose keyword name is that of the model with Coeffs appended, e.g. kEpsilonCoeffs for the kEpsilon model. If the printCoeffs switch is on in the RAS sub-dictionary, an example of the relevant …Coeffs dictionary is printed to standard output when the model is created at the beginning of a run. The user can simply copy this into the RAS sub-dictionary ﬁle and edit the entries as required.

### 8.2.6 Wall functions

A range of wall function models is available in OpenFOAM that are applied as boundary conditions on individual patches. This enables diﬀerent wall function models to be applied to diﬀerent wall regions. The choice of wall function model is speciﬁed through the turbulent viscosity ﬁeld in the 0/nut ﬁle. For example, a 0/nut ﬁle:

17dimensions [0 2 -1 0 0 0 0];

18

19internalField uniform 0;

20

21boundaryField

22{

23 inlet

24 {

25 type calculated;

26 value uniform 0;

27 }

28 outlet

29 {

30 type calculated;

31 value uniform 0;

32 }

33 upperWall

34 {

35 type nutkWallFunction;

36 value uniform 0;

37 }

38 lowerWall

39 {

40 type nutkWallFunction;

41 value uniform 0;

42 }

43 frontAndBack

44 {

45 type empty;

46 }

47}

48

49

50// ************************************************************************* //

There are a number of wall function models available in the release, e.g. nutWallFunction, nutRoughWallFunction, nutUSpaldingWallFunction, nutkWallFunction and nutkAtmWallFunction. The user can get the full list of wall function models using foamInfo:

foamToC -scalarBCs | grep nut

Having selected the particular wall functions on various wall patches in the nut ﬁle, the user should select the following boundary conditions at wall patches for other turbulence ﬁelds.

- epsilon ﬁeld: apply the epsilonWallFunction to corresponding patches.
- omega ﬁeld: apply the omegaWallFunction to corresponding patches.
- k, q or R ﬁeld: apply kqRwallFunction to corresponding patches.