41template<
class BasicEddyViscosityModel>
59 (scalar(1)/betaStar_)*
sqrt(k_)/(omega_*y_),
60 scalar(500)*(this->
mu()/this->rho_)/(
sqr(y_)*omega_)
62 (4*alphaOmega2_)*k_/(CDkOmegaPlus*
sqr(y_))
71template<
class BasicEddyViscosityModel>
78 (scalar(2)/betaStar_)*
sqrt(k_)/(omega_*y_),
79 scalar(500)*(this->
mu()/this->rho_)/(
sqr(y_)*omega_)
88template<
class BasicEddyViscosityModel>
93 150*(this->
mu()/this->rho_)/(omega_*
sqr(y_)),
101template<
class BasicEddyViscosityModel>
115template<
class BasicEddyViscosityModel>
122 this->nut_ = a1_*k_/
max(a1_*omega_, b1_*F23()*
sqrt(S2));
123 this->nut_.correctBoundaryConditions();
128template<
class BasicEddyViscosityModel>
135template<
class BasicEddyViscosityModel>
141 return min(G, (c1_*betaStar_)*this->k_()*this->omega_());
145template<
class BasicEddyViscosityModel>
153 return betaStar_*omega_();
157template<
class BasicEddyViscosityModel>
168 (c1_/a1_)*betaStar_*omega_()
174template<
class BasicEddyViscosityModel>
188template<
class BasicEddyViscosityModel>
202template<
class BasicEddyViscosityModel>
223template<
class BasicEddyViscosityModel>
233 const word& propertiesName
236 BasicEddyViscosityModel
372 IOobject::groupName(
"k", alphaRhoPhi.group()),
384 IOobject::groupName(
"omega", alphaRhoPhi.group()),
422 bound(k_, this->kMin_);
423 bound(omega_, this->omegaMin_);
425 setDecayControl(this->coeffDict_);
431template<
class BasicEddyViscosityModel>
437 decayControl_.readIfPresent(
"decayControl",
dict);
442 omegaInf_.read(
dict);
444 Info<<
" Employing decay control with kInf:" << kInf_
445 <<
" and omegaInf:" << omegaInf_ <<
endl;
450 omegaInf_.value() = 0;
455template<
class BasicEddyViscosityModel>
458 if (BasicEddyViscosityModel::read())
460 alphaK1_.readIfPresent(this->coeffDict());
461 alphaK2_.readIfPresent(this->coeffDict());
462 alphaOmega1_.readIfPresent(this->coeffDict());
463 alphaOmega2_.readIfPresent(this->coeffDict());
464 gamma1_.readIfPresent(this->coeffDict());
465 gamma2_.readIfPresent(this->coeffDict());
466 beta1_.readIfPresent(this->coeffDict());
467 beta2_.readIfPresent(this->coeffDict());
468 betaStar_.readIfPresent(this->coeffDict());
469 a1_.readIfPresent(this->coeffDict());
470 b1_.readIfPresent(this->coeffDict());
471 c1_.readIfPresent(this->coeffDict());
472 F3_.readIfPresent(
"F3", this->coeffDict());
474 setDecayControl(this->coeffDict());
483template<
class BasicEddyViscosityModel>
486 if (!this->turbulence_)
499 BasicEddyViscosityModel::correct();
507 this->
type() +
":GbyNu",
513 omega_.boundaryFieldRef().updateCoeffs();
527 GbyNu0 = GbyNu(GbyNu0, F23(), S2());
541 alpha()*
rho()*(
F1() - scalar(1))*CDkOmega()/omega_(),
550 omegaEqn.
ref().relax();
552 omegaEqn.
ref().boundaryManipulate(omega_.boundaryFieldRef());
555 bound(omega_, this->omegaMin_);
568 +
alpha()*
rho()*betaStar_*omegaInf_*kInf_
579 bound(k_, this->kMin_);
Bound the given scalar field if it has gone unbounded.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Defines the attributes of an object for which implicit objectRegistry management is supported,...
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Generic dimensioned Type class.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
void constrain(fvMatrix< Type > &eqn)
Apply constraints to equation.
void correct(GeometricField< Type, fvPatchField, volMesh > &field)
Apply correction to field.
Base class implementation of the k-omega-SST turbulence model for incompressible and compressible flo...
void setDecayControl(const dictionary &dict)
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
virtual tmp< volScalarField > F2() const
virtual tmp< volScalarField > F23() const
BasicEddyViscosityModel::transportModel transportModel
virtual tmp< volScalarField::Internal > GbyNu(const volScalarField::Internal &GbyNu0, const volScalarField::Internal &F2, const volScalarField::Internal &S2) const
Return G/nu.
virtual tmp< fvScalarMatrix > Qsas(const volScalarField::Internal &S2, const volScalarField::Internal &gamma, const volScalarField::Internal &beta) const
virtual tmp< fvScalarMatrix > omegaSource() const
virtual void correctNut()
virtual tmp< fvScalarMatrix > kSource() const
virtual tmp< volScalarField::Internal > epsilonByk(const volScalarField &F1, const volTensorField &gradU) const
Return epsilon/k which for standard RAS is betaStar*omega.
virtual tmp< volScalarField::Internal > Pk(const volScalarField::Internal &G) const
Return k production rate.
BasicEddyViscosityModel::rhoField rhoField
BasicEddyViscosityModel::alphaField alphaField
virtual bool read()
Re-read model coefficients if they have changed.
virtual tmp< volScalarField > F3() const
A class for managing temporary objects.
void clear() const noexcept
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.
const volScalarField & mu
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh > > grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< GeometricField< Type, fvPatchField, volMesh > > div(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
tmp< surfaceScalarField > absolute(const tmp< surfaceScalarField > &tphi, const volVectorField &U)
Return the given relative flux in absolute form.
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 SuSp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
zeroField Sp(const Foam::zero, const GeometricField< Type, fvPatchField, volMesh > &)
A no-op source.
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor symm(const dimensionedSymmTensor &dt)
const dimensionSet dimless
Dimensionless.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
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)
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
dimensionedScalar tanh(const dimensionedScalar &ds)
messageStream Info
Information stream (stdout output on master, null elsewhere)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensionedScalar sqrt(const dimensionedScalar &ds)
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
dimensionedScalar pow4(const dimensionedScalar &ds)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
const dimensionSet dimVolume(pow3(dimLength))
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)