51 const geometricOneField&
alpha,
56 const fluidThermo& thermophysicalModel,
57 const word& turbulenceModelName,
75 dimensioned<scalar>::getOrAddToDict
87PDRkEpsilon::~PDRkEpsilon()
93bool PDRkEpsilon::read()
97 C4_.readIfPresent(coeffDict_);
105void PDRkEpsilon::correct()
110 nut_ = Cmu_*
sqr(k_)/epsilon_;
111 nut_.correctBoundaryConditions();
126 divU += fvc::div(mesh_.phi());
129 tmp<volTensorField> tgradU = fvc::grad(U_);
134 epsilon_.boundaryFieldRef().updateCoeffs();
139 epsilon_.boundaryFieldRef().evaluateCoupled<coupledFvPatch>();
149 const PDRDragModel&
drag =
150 U_.db().lookupObject<PDRDragModel>(
"PDRDragModel");
158 tmp<fvScalarMatrix> epsEqn
160 betav*fvm::ddt(rho_, epsilon_)
161 + fvm::div(phi_, epsilon_)
162 - fvm::laplacian(rho_*DepsilonEff(), epsilon_)
164 C1_*
betav*G*epsilon_/k_
165 + 1.5*
pow(Cmu_, 3.0/4.0)*GR*
sqrt(k_)/LI
166 - fvm::SuSp(((2.0/3.0)*C1_)*
betav*rho_*
divU, epsilon_)
167 - fvm::Sp(C2_*
betav*rho_*epsilon_/k_, epsilon_)
170 epsEqn.ref().relax();
172 epsEqn.ref().boundaryManipulate(epsilon_.boundaryFieldRef());
175 bound(epsilon_, epsilonMin_);
180 tmp<fvScalarMatrix> kEqn
182 betav*fvm::ddt(rho_, k_)
184 - fvm::laplacian(rho_*DkEff(), k_)
187 - fvm::SuSp((2.0/3.0)*
betav*rho_*
divU, k_)
188 - fvm::Sp(
betav*rho_*epsilon_/k_, k_)
196 nut_ = Cmu_*
sqr(k_)/epsilon_;
197 nut_.correctBoundaryConditions();
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
const objectRegistry & db() const noexcept
Return the local objectRegistry.
Standard k-epsilon turbulence model with additional source terms corresponding to PDR basic drag mode...
PDRkEpsilon(const geometricOneField &alpha, const volScalarField &rho, const volVectorField &U, const surfaceScalarField &alphaRhoPhi, const surfaceScalarField &phi, const fluidThermo &thermophysicalModel, const word &turbulenceModelName=turbulenceModel::typeName, const word &modelName=typeName)
Construct from components.
const Type & lookupObject(const word &name, const bool recursive=false) const
Lookup and return const reference to the object of the given Type. Fatal if not found or the wrong ty...
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
ThermalDiffusivity< CompressibleTurbulenceModel< fluidThermo > > turbulenceModel
RASModel< EddyDiffusivity< turbulenceModel > > RASModel
const dimensionedScalar G
Newtonian constant of gravitation.
dimensionedSymmTensor dev(const dimensionedSymmTensor &dt)
GeometricField< vector, fvPatchField, volMesh > volVectorField
dimensionedSymmTensor sqr(const dimensionedVector &dv)
volScalarField & bound(volScalarField &, const dimensionedScalar &lowerBound)
Bound the given scalar field if it has gone unbounded.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
dimensionedSymmTensor twoSymm(const dimensionedSymmTensor &dt)
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const volScalarField & betav
Info<< "Reading strained laminar flame speed field Su\n"<< endl;volScalarField Su(IOobject("Su", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE), mesh);Info<< "Reading field betav\n"<< endl;volScalarField betav(IOobject("betav", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field Lobs\n"<< endl;volScalarField Lobs(IOobject("Lobs", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field CT\n"<< endl;volSymmTensorField CT(IOobject("CT", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field Nv\n"<< endl;volScalarField Nv(IOobject("Nv", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);Info<< "Reading field nsv\n"<< endl;volSymmTensorField nsv(IOobject("nsv", mesh.facesInstance(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE), mesh);IOdictionary PDRProperties(IOobject("PDRProperties", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE));autoPtr< PDRDragModel > drag