41 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
45 omega_ =
max(omega_, k_/(this->nutMaxCoeff_*this->nu()));
49 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
68 (scalar(1)/betaStar_)*
sqrt(k_)/(omega_*this->
y()),
69 scalar(500)*this->nu()/(
sqr(this->
y())*omega_)
71 (4*alphaOmega2_)*k_/(CDkOmegaPlus*
sqr(this->
y()))
79 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
87 (scalar(2)/betaStar_)*
sqrt(k_)/(omega_*this->
y()),
88 scalar(500)*this->nu()/(
sqr(this->
y())*omega_)
96 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
102 150*this->nu()/(omega_*
sqr(this->
y())),
109 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
124 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
131 this->nut_ = a1_*k_/
max(a1_*omega_, b1_*
F2*
sqrt(S2));
132 this->nut_.correctBoundaryConditions();
137 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
145 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
152 return min(
G, (c1_*betaStar_)*this->k_()*this->omega_());
156 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
164 return betaStar_*omega_();
168 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
183 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
199 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
221 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
233 MomentumTransportModel
244 alphaK1_(
"alphaK1", this->typeDict(
type), 0.85),
245 alphaK2_(
"alphaK2", this->typeDict(
type), 1.0),
246 alphaOmega1_(
"alphaOmega1", this->typeDict(
type), 0.5),
247 alphaOmega2_(
"alphaOmega2", this->typeDict(
type), 0.856),
248 gamma1_(
"gamma1", this->typeDict(
type), 5.0/9.0),
249 gamma2_(
"gamma2", this->typeDict(
type), 0.44),
250 beta1_(
"beta1", this->typeDict(
type), 0.075),
251 beta2_(
"beta2", this->typeDict(
type), 0.0828),
252 betaStar_(
"betaStar", this->typeDict(
type), 0.09),
253 a1_(
"a1", this->typeDict(
type), 0.31),
254 b1_(
"b1", this->typeDict(
type), 1.0),
255 c1_(
"c1", this->typeDict(
type), 10.0),
256 F3_(this->typeDict(
type).template lookupOrDefault<
Switch>(
"F3", false)),
262 this->groupName(
"k"),
263 this->runTime_.
name(),
274 this->groupName(
"omega"),
275 this->runTime_.
name(),
283 bound(k_, this->kMin_);
290 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
295 alphaK1_.readIfPresent(this->typeDict());
296 alphaK2_.readIfPresent(this->typeDict());
297 alphaOmega1_.readIfPresent(this->typeDict());
298 alphaOmega2_.readIfPresent(this->typeDict());
299 gamma1_.readIfPresent(this->typeDict());
300 gamma2_.readIfPresent(this->typeDict());
301 beta1_.readIfPresent(this->typeDict());
302 beta2_.readIfPresent(this->typeDict());
303 betaStar_.readIfPresent(this->typeDict());
304 a1_.readIfPresent(this->typeDict());
305 b1_.readIfPresent(this->typeDict());
306 c1_.readIfPresent(this->typeDict());
307 F3_.readIfPresent(
"F3", this->typeDict());
318 template<
class MomentumTransportModel,
class BasicMomentumTransportModel>
321 if (!this->turbulence_)
352 omega_.boundaryFieldRef().updateCoeffs();
377 (c1_/a1_)*betaStar_*omega_()
378 *
max(a1_*omega_(), b1_*F23()*
sqrt(S2()))
384 alpha()*
rho()*(
F1() - scalar(1))*CDkOmega()/omega_(),
387 + Qsas(S2(), gamma, beta)
392 omegaEqn.
ref().relax();
394 omegaEqn.
ref().boundaryManipulate(omega_.boundaryFieldRef());
418 bound(k_, this->kMin_);
Bound the given scalar field where it is below the specified minimum.
static fvConstraints & New(const word &name, const fvMesh &mesh)
Construct and return the named DemandDrivenMeshObject.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
A simple wrapper around bool so that it can be read as a word: true/false, on/off,...
Finite volume constraints.
bool constrain(fvMatrix< Type > &eqn) const
Apply constraints to an equation.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
tmp< fvMatrix< Type > > source(const VolField< Type > &field) const
Return source for an equation.
BasicMomentumTransportModel::alphaField alphaField
void boundOmega()
Bound omega.
virtual tmp< volScalarField > F1(const volScalarField &CDkOmega) const
virtual void correct()
Solve the turbulence equations and correct the turbulence viscosity.
virtual tmp< volScalarField > F2() const
virtual tmp< volScalarField > F23() const
virtual tmp< volScalarField::Internal > epsilonByk(const volScalarField::Internal &F1, const volScalarField::Internal &F2) const
Return epsilon/k which for standard RAS is betaStar*omega.
kOmegaSST(const word &type, const alphaField &alpha, const rhoField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const viscosity &viscosity)
Construct from components.
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 > Pk(const volScalarField::Internal &G) const
Return k production rate.
virtual bool read()
Re-read model coefficients if they have changed.
BasicMomentumTransportModel::rhoField rhoField
virtual tmp< volScalarField > F3() const
A class for managing temporary objects.
void clear() const
If object pointer points to valid object:
T & ref() const
Return non-const reference or generate a fatal error.
Abstract base class for all fluid physical properties.
A class for handling words, derived from string.
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
Calculate the mesh motion flux and convert fluxes from absolute to relative and back.
Calculate the matrix for the divergence of the given field and flux.
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
void correct(const RdeltaTType &rDeltaT, const RhoType &rho, volScalarField &psi, const surfaceScalarField &phiCorr, const SpType &Sp)
const dimensionedScalar G
Newtonian constant of gravitation.
tmp< VolField< typename outerProduct< vector, Type >::type > > grad(const SurfaceField< Type > &ssf)
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
tmp< surfaceScalarField > absolute(const tmp< surfaceScalarField > &tphi, const volVectorField &U)
Return the given relative flux in absolute form.
tmp< fvMatrix< Type > > laplacian(const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > SuSp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
const dimensionSet & dimless
dimensionedScalar tanh(const dimensionedScalar &ds)
const dimensionSet & dimVolume
void pow4(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
tmp< DimensionedField< typename outerProduct< Type, Type >::type, GeoMesh, Field >> sqr(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
const dimensionSet & dimTime
void dev(pointPatchField< tensor > &, const pointPatchField< tensor > &)
dimensioned< Type > min(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
void symm(pointPatchField< tensor > &, const pointPatchField< tensor > &)
bool bound(volScalarField &, const dimensionedScalar &min)
Bound the given scalar field where it is below the specified min value.
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
void twoSymm(pointPatchField< tensor > &, const pointPatchField< tensor > &)
void sqrt(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
tmp< DimensionedField< scalar, GeoMesh, Field > > magSqr(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
SolverPerformance< Type > solve(fvMatrix< Type > &, const word &)
Solve returning the solution statistics given convergence tolerance.