41template<
class BasicEddyViscosityModel>
48template<
class BasicEddyViscosityModel>
59template<
class BasicEddyViscosityModel>
66 return scalar(1) -
chi/(scalar(1) +
chi*
fv1);
70template<
class BasicEddyViscosityModel>
78 return Ct3_*
exp(-Ct4_*
sqr(chi));
86 this->runTime_.timeName(),
97template<
class BasicEddyViscosityModel>
107template<
class BasicEddyViscosityModel>
118 min(nur/(
max(Stilda, eps)*
sqr(kappa_*dTilda)), scalar(10));
120 tr.ref().boundaryFieldRef() == 0;
126template<
class BasicEddyViscosityModel>
140template<
class BasicEddyViscosityModel>
160template<
class BasicEddyViscosityModel>
167 this->nut_.correctBoundaryConditions();
172template<
class BasicEddyViscosityModel>
181template<
class BasicEddyViscosityModel>
182SpalartAllmarasBase<BasicEddyViscosityModel>::SpalartAllmarasBase
191 const word& propertiesName
194 BasicEddyViscosityModel
333 Info<<
"ft2 term: active" <<
nl;
337 Info<<
"ft2 term: inactive" <<
nl;
344template<
class BasicEddyViscosityModel>
347 if (BasicEddyViscosityModel::read())
349 sigmaNut_.readIfPresent(this->coeffDict());
350 kappa_.readIfPresent(this->coeffDict());
352 Cb1_.readIfPresent(this->coeffDict());
353 Cb2_.readIfPresent(this->coeffDict());
354 Cw1_ = Cb1_/
sqr(kappa_) + (1.0 + Cb2_)/sigmaNut_;
356 Cw3_.readIfPresent(this->coeffDict());
357 Cv1_.readIfPresent(this->coeffDict());
358 Cs_.readIfPresent(this->coeffDict());
359 ck_.readIfPresent(this->coeffDict());
361 ft2_.readIfPresent(
"ft2", this->coeffDict());
362 Ct3_.readIfPresent(this->coeffDict());
363 Ct4_.readIfPresent(this->coeffDict());
367 Info<<
" ft2 term: active" <<
nl;
371 Info<<
" ft2 term: inactive" <<
nl;
381template<
class BasicEddyViscosityModel>
393template<
class BasicEddyViscosityModel>
397 const scalar Cmu = 0.09;
398 const auto fv1 = this->fv1(chi());
407template<
class BasicEddyViscosityModel>
412 const scalar Cmu = 0.09;
413 const auto fv1 = this->fv1(chi());
424template<
class BasicEddyViscosityModel>
428 const scalar betaStar = 0.09;
434 this->epsilon()/(betaStar*(this->k() + k0))
439template<
class BasicEddyViscosityModel>
442 if (!this->turbulence_)
449 const alphaField&
alpha = this->alpha_;
450 const rhoField&
rho = this->rho_;
455 BasicEddyViscosityModel::correct();
466 tmp<fvScalarMatrix> nuTildaEqn
473 Cb1_*
alpha()*
rho()*Stilda()*nuTilda_()*(scalar(1) - ft2())
476 (Cw1_*fw(Stilda, dTilda) - Cb1_/
sqr(kappa_)*ft2())
483 nuTildaEqn.ref().relax();
488 nuTilda_.correctBoundaryConditions();
Bound the given scalar field if it has gone unbounded.
const uniformDimensionedVectorField & g
const dimensionSet & dimensions() const noexcept
Return dimensions.
DimensionedField< scalar, volMesh > Internal
@ NO_READ
Nothing to be read.
@ NO_WRITE
Ignore writing from objectRegistry::writeObject().
Defines the attributes of an object for which implicit objectRegistry management is supported,...
static word groupName(StringType base, const word &group)
Create dot-delimited name.group string.
tmp< volScalarField > chi() const
void correctNut(const volScalarField &fv1)
virtual tmp< volScalarField > k() const
Return the (estimated) turbulent kinetic energy.
virtual void correct()
Correct nuTilda and related properties.
tmp< volScalarField > DnuTildaEff() const
Return the effective diffusivity for nuTilda.
eddyViscosity< RASModel< BasicTurbulenceModel > >::transportModel transportModel
tmp< volScalarField > Omega(const volTensorField &gradU) const
volScalarField nuTilda_
Modified kinematic viscosity [m^2/s].
tmp< volScalarField > fv1(const volScalarField &chi) const
virtual tmp< volScalarField > epsilon() const
Return the (estimated) turbulent kinetic energy dissipation rate.
const volScalarField & y_
dimensionedScalar sigmaNut_
virtual void correctNut()
tmp< volScalarField > r(const volScalarField &nur, const volScalarField &Stilda, const volScalarField &dTilda) const
virtual tmp< volScalarField > dTilda(const volScalarField &chi, const volScalarField &fv1, const volTensorField &gradU) const =0
Length scale.
tmp< volScalarField::Internal > fw(const volScalarField &Stilda, const volScalarField &dTilda) const
tmp< volScalarField > ft2(const volScalarField &chi) const
tmp< volScalarField > fv2(const volScalarField &chi, const volScalarField &fv1) const
eddyViscosity< RASModel< BasicTurbulenceModel > >::rhoField rhoField
BasicEddyViscosityModel::alphaField alphaField
virtual tmp< volScalarField > Stilda(const volScalarField &chi, const volScalarField &fv1, const volTensorField &gradU, const volScalarField &dTilda) const
virtual tmp< volScalarField > omega() const
Return the (estimated) specific dissipation rate.
virtual bool read()
Re-read model coefficients if they have changed.
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
Generic dimensioned Type class.
bool readIfPresent(const dictionary &dict)
Update the value of dimensioned<Type> if found in the dictionary, lookup in dictionary with the name(...
void correct(GeometricField< Type, PatchField, GeoMesh > &field)
Apply correction to field.
Finite-volume options, which is an IOdictionary of values and a fv::optionList.
static options & New(const fvMesh &mesh)
Construct fvOptions and register to database if not present otherwise lookup and return.
A class for managing temporary objects.
void clear() const noexcept
If object pointer points to valid object: delete object and set pointer to nullptr.
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
T & ref() const
Return non-const reference to the contents of a non-null managed pointer.
Interface to run-time selectable methods to calculate the distance-to-wall and normal-to-wall fields.
A class for handling words, derived from Foam::string.
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh > > grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< fvMatrix< Type > > laplacian(const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
zeroField Sp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
dimensionedScalar pow6(const dimensionedScalar &ds)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
dimensionedScalar exp(const dimensionedScalar &ds)
GeometricField< vector, fvPatchField, volMesh > volVectorField
const dimensionSet dimless
Dimensionless.
dimensionedScalar tr(const dimensionedSphericalTensor &dt)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
dimensionedScalar pow3(const dimensionedScalar &ds)
volScalarField & bound(volScalarField &, const dimensionedScalar &lowerBound)
Bound the given scalar field if it has gone unbounded.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
messageStream Info
Information stream (stdout output on master, null elsewhere).
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
GeometricField< tensor, fvPatchField, volMesh > volTensorField
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
static constexpr const zero Zero
Global zero (0).
dimensionedScalar cbrt(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
dimensionedTensor skew(const dimensionedTensor &dt)
constexpr char nl
The newline '\n' character (0x0a).