Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
SpalartAllmaras< BasicTurbulenceModel > Class Template Reference

Spalart-Allmaras one-transport-equation linear-eddy-viscosity turbulence closure model for incompressible and compressible external flows. More...

Inheritance diagram for SpalartAllmaras< BasicTurbulenceModel >:
Inheritance graph
[legend]
Collaboration diagram for SpalartAllmaras< BasicTurbulenceModel >:
Collaboration graph
[legend]

Public Types

typedef BasicTurbulenceModel::alphaField alphaField
 
typedef BasicTurbulenceModel::rhoField rhoField
 
typedef BasicTurbulenceModel::transportModel transportModel
 
- Public Types inherited from eddyViscosity< RASModel< BasicTurbulenceModel > >
typedef RASModel< BasicTurbulenceModel > ::alphaField alphaField
 
typedef RASModel< BasicTurbulenceModel > ::rhoField rhoField
 
typedef RASModel< BasicTurbulenceModel > ::transportModel transportModel
 
- Public Types inherited from linearViscousStress< RASModel< BasicTurbulenceModel > >
typedef RASModel< BasicTurbulenceModel > ::alphaField alphaField
 
typedef RASModel< BasicTurbulenceModel > ::rhoField rhoField
 
typedef RASModel< BasicTurbulenceModel > ::transportModel transportModel
 
- Public Types inherited from RASModel< BasicTurbulenceModel >
typedef BasicTurbulenceModel::alphaField alphaField
 
typedef BasicTurbulenceModel::rhoField rhoField
 
typedef BasicTurbulenceModel::transportModel transportModel
 

Public Member Functions

 TypeName ("SpalartAllmaras")
 
 SpalartAllmaras (const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName=turbulenceModel::propertiesName, const word &type=typeName)
 
virtual ~SpalartAllmaras ()=default
 
virtual bool read ()
 
tmp< volScalarFieldDnuTildaEff () const
 
virtual tmp< volScalarFieldk () const
 
virtual tmp< volScalarFieldepsilon () const
 
virtual tmp< volScalarFieldomega () const
 
virtual void correct ()
 
- Public Member Functions inherited from eddyViscosity< RASModel< BasicTurbulenceModel > >
 eddyViscosity (const word &modelName, const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName)
 
virtual ~eddyViscosity ()=default
 
virtual tmp< volScalarFieldnut () const
 
virtual tmp< scalarFieldnut (const label patchi) const
 
virtual tmp< volScalarFieldk () const=0
 
virtual tmp< volSymmTensorFieldR () const
 
virtual void validate ()
 
- Public Member Functions inherited from linearViscousStress< RASModel< BasicTurbulenceModel > >
 linearViscousStress (const word &modelName, const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName)
 
virtual ~linearViscousStress ()=default
 
virtual tmp< volSymmTensorFielddevRhoReff () const
 
virtual tmp< volSymmTensorFielddevRhoReff (const volVectorField &U) const
 
virtual tmp< fvVectorMatrixdivDevRhoReff (volVectorField &U) const
 
virtual tmp< fvVectorMatrixdivDevRhoReff (const volScalarField &rho, volVectorField &U) const
 
- Public Member Functions inherited from RASModel< BasicTurbulenceModel >
 TypeName ("RAS")
 
 declareRunTimeSelectionTable (autoPtr, RASModel, dictionary,(const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName),(alpha, rho, U, alphaRhoPhi, phi, transport, propertiesName))
 
 RASModel (const word &type, const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName)
 
virtual ~RASModel ()=default
 
const dimensionedScalarkMin () const
 
const dimensionedScalarepsilonMin () const
 
const dimensionedScalaromegaMin () const
 
dimensionedScalarkMin ()
 
dimensionedScalarepsilonMin ()
 
dimensionedScalaromegaMin ()
 
virtual const dictionarycoeffDict () const
 
virtual tmp< volScalarFieldnuEff () const
 
virtual tmp< scalarFieldnuEff (const label patchi) const
 

Protected Member Functions

tmp< volScalarFieldchi () const
 
tmp< volScalarFieldfv1 (const volScalarField &chi) const
 
tmp< volScalarField::Internalfv2 (const volScalarField::Internal &chi, const volScalarField::Internal &fv1) const
 
tmp< volScalarField::InternalStilda () const
 
tmp< volScalarField::Internalfw (const volScalarField::Internal &Stilda) const
 
virtual void correctNut ()
 
- Protected Member Functions inherited from RASModel< BasicTurbulenceModel >
virtual void printCoeffs (const word &type)
 
 RASModel (const RASModel &)=delete
 
void operator= (const RASModel &)=delete
 

Protected Attributes

dimensionedScalar sigmaNut_
 
dimensionedScalar kappa_
 
dimensionedScalar Cb1_
 
dimensionedScalar Cb2_
 
dimensionedScalar Cw1_
 
dimensionedScalar Cw2_
 
dimensionedScalar Cw3_
 
dimensionedScalar Cv1_
 
dimensionedScalar Cs_
 
volScalarField nuTilda_
 
const volScalarField::Internaly_
 
- Protected Attributes inherited from eddyViscosity< RASModel< BasicTurbulenceModel > >
volScalarField nut_
 
- Protected Attributes inherited from RASModel< BasicTurbulenceModel >
dictionary RASDict_
 
Switch turbulence_
 
Switch printCoeffs_
 
dictionary coeffDict_
 
dimensionedScalar kMin_
 
dimensionedScalar epsilonMin_
 
dimensionedScalar omegaMin_
 

Additional Inherited Members

- Static Public Member Functions inherited from RASModel< BasicTurbulenceModel >
static autoPtr< RASModelNew (const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const transportModel &transport, const word &propertiesName=turbulenceModel::propertiesName)
 

Detailed Description

template<class BasicTurbulenceModel>
class Foam::RASModels::SpalartAllmaras< BasicTurbulenceModel >

Spalart-Allmaras one-transport-equation linear-eddy-viscosity turbulence closure model for incompressible and compressible external flows.

Required fields

    nuTilda   | Modified kinematic viscosity [m2/s]

References:

    Standard model:
        Spalart, P.R., & Allmaras, S.R. (1994).
        A one-equation turbulence model for aerodynamic flows.
        La Recherche Aerospatiale, 1, 5-21.

    Standard model without trip and ft2 terms (tag:R):
        Rumsey, C. (2020).
        The Spalart-Allmaras Turbulence Model.
        Spalart-Allmaras One-Equation Model without ft2 Term (SA-noft2).
        https://turbmodels.larc.nasa.gov/spalart.html#sanoft2
        (Retrieved:12-01-2021).

    Estimation expression for k and epsilon (tag:B), Eq. 4.50:
        Bourgoin, A. (2019).
        Bathymetry induced turbulence modelling the
        Alderney Race site: regional approach with TELEMAC-LES.
        Normandie Université.

    Estimation expressions for omega (tag:P):
        Pope, S. B. (2000).
        Turbulent flows.
        Cambridge, UK: Cambridge Univ. Press
        DOI:10.1017/CBO9780511840531
Usage
Example by using constant/turbulenceProperties:
RAS
{
    // Mandatory entries (unmodifiable)
    RASModel        SpalartAllmaras;

    // Optional entries (runtime modifiable)
    turbulence      on;
    printCoeffs     on;

    SpalartAllmarasCoeffs
    {
        sigmaNut    0.66666;
        kappa       0.41;
        Cb1         0.1355;
        Cb2         0.622;
        Cw2         0.3;
        Cw3         2.0;
        Cv1         7.1;
        Cs          0.3;
    }
}
Note
  • The model is implemented without the trip-term since the model has almost always been used in fully turbulent applications rather than those where laminar-turbulent transition occurs.
  • It has been argued that the ft2 term is not needed in the absence of the trip-term, hence ft2 term is also not implementated.
  • The Stilda generation term should never be allowed to be zero or negative to avoid potential numerical issues and unphysical results for complex flows. To this end, a limiter proposed by Spalart (R:Note-1(b)) is applied onto Stilda where Stilda is clipped at Cs*Omega with the default value of Cs=0.3.
  • The model does not produce k, epsilon or omega. Nevertheless, these quantities can be estimated by using an approximate expressions for turbulent kinetic energy and dissipation rate reported in (B:Eq. 4.50).
Source files

Definition at line 128 of file SpalartAllmaras.H.

Member Typedef Documentation

◆ alphaField

typedef BasicTurbulenceModel::alphaField alphaField

Definition at line 195 of file SpalartAllmaras.H.

◆ rhoField

typedef BasicTurbulenceModel::rhoField rhoField

Definition at line 196 of file SpalartAllmaras.H.

◆ transportModel

typedef BasicTurbulenceModel::transportModel transportModel

Definition at line 197 of file SpalartAllmaras.H.

Constructor & Destructor Documentation

◆ SpalartAllmaras()

SpalartAllmaras ( const alphaField alpha,
const rhoField rho,
const volVectorField U,
const surfaceScalarField alphaRhoPhi,
const surfaceScalarField phi,
const transportModel transport,
const word propertiesName = turbulenceModel::propertiesName,
const word type = typeName 
)

Definition at line 139 of file SpalartAllmaras.C.

References Foam::type().

Here is the call graph for this function:

◆ ~SpalartAllmaras()

virtual ~SpalartAllmaras ( )
virtualdefault

Member Function Documentation

◆ chi()

tmp< volScalarField > chi
protected

Definition at line 37 of file SpalartAllmaras.C.

References nu.

◆ fv1()

tmp< volScalarField > fv1 ( const volScalarField chi) const
protected

Definition at line 45 of file SpalartAllmaras.C.

References Foam::pow3().

Here is the call graph for this function:

◆ fv2()

tmp< volScalarField::Internal > fv2 ( const volScalarField::Internal chi,
const volScalarField::Internal fv1 
) const
protected

Definition at line 57 of file SpalartAllmaras.C.

◆ Stilda()

tmp< volScalarField::Internal > Stilda
protected

Definition at line 67 of file SpalartAllmaras.C.

References Foam::fvc::grad(), Foam::mag(), Foam::max(), Foam::skew(), Foam::sqr(), and Foam::sqrt().

Here is the call graph for this function:

◆ fw()

tmp< volScalarField::Internal > fw ( const volScalarField::Internal Stilda) const
protected

Definition at line 92 of file SpalartAllmaras.C.

References DimensionedField::dimensions(), g, Foam::max(), Foam::min(), Foam::pow(), Foam::pow6(), and Foam::sqr().

Here is the call graph for this function:

◆ correctNut()

void correctNut
protectedvirtual

Implements eddyViscosity< RASModel< BasicTurbulenceModel > >.

Definition at line 125 of file SpalartAllmaras.C.

References optionList::correct(), and options::New().

Here is the call graph for this function:

◆ TypeName()

TypeName ( "SpalartAllmaras< BasicTurbulenceModel >"  )

◆ read()

bool read
virtual

Implements eddyViscosity< RASModel< BasicTurbulenceModel > >.

Definition at line 262 of file SpalartAllmaras.C.

References Foam::read(), dimensioned::readIfPresent(), and Foam::sqr().

Here is the call graph for this function:

◆ DnuTildaEff()

tmp< volScalarField > DnuTildaEff

Definition at line 285 of file SpalartAllmaras.C.

References tmp::New(), and nu.

Here is the call graph for this function:

◆ k()

tmp< volScalarField > k
virtual

Definition at line 296 of file SpalartAllmaras.C.

References Foam::cbrt(), Foam::fvc::grad(), IOobject::groupName(), Foam::mag(), tmp::New(), Foam::sqrt(), and Foam::symm().

Here is the call graph for this function:

◆ epsilon()

tmp< volScalarField > epsilon
virtual

Reimplemented from RASModel< BasicTurbulenceModel >.

Definition at line 319 of file SpalartAllmaras.C.

References Foam::dimLength, Foam::dimTime, IOobject::groupName(), k, tmp::New(), Foam::pow(), Foam::sqr(), and Foam::sqrt().

Here is the call graph for this function:

◆ omega()

tmp< volScalarField > omega
virtual

Reimplemented from RASModel< BasicTurbulenceModel >.

Definition at line 342 of file SpalartAllmaras.C.

References Foam::dimLength, Foam::dimTime, IOobject::groupName(), tmp::New(), and Foam::sqr().

Here is the call graph for this function:

◆ correct()

void correct
virtual

Member Data Documentation

◆ sigmaNut_

dimensionedScalar sigmaNut_
protected

Definition at line 147 of file SpalartAllmaras.H.

◆ kappa_

dimensionedScalar kappa_
protected

Definition at line 148 of file SpalartAllmaras.H.

◆ Cb1_

dimensionedScalar Cb1_
protected

Definition at line 149 of file SpalartAllmaras.H.

◆ Cb2_

dimensionedScalar Cb2_
protected

Definition at line 150 of file SpalartAllmaras.H.

◆ Cw1_

dimensionedScalar Cw1_
protected

Definition at line 151 of file SpalartAllmaras.H.

◆ Cw2_

dimensionedScalar Cw2_
protected

Definition at line 152 of file SpalartAllmaras.H.

◆ Cw3_

dimensionedScalar Cw3_
protected

Definition at line 153 of file SpalartAllmaras.H.

◆ Cv1_

dimensionedScalar Cv1_
protected

Definition at line 154 of file SpalartAllmaras.H.

◆ Cs_

dimensionedScalar Cs_
protected

Definition at line 155 of file SpalartAllmaras.H.

◆ nuTilda_

volScalarField nuTilda_
protected

Definition at line 161 of file SpalartAllmaras.H.

◆ y_

const volScalarField::Internal& y_
protected

Definition at line 166 of file SpalartAllmaras.H.


The documentation for this class was generated from the following files: