33 {
"v1981",
"v1996",
"v2005",
"v2016"};
44 namespace combustionModels
55 const word& modelType,
58 const word& combustionProperties
66 this->coeffs().lookupOrDefault
73 C1_(this->coeffs().lookupOrDefault(
"C1", 0.05774)),
74 C2_(this->coeffs().lookupOrDefault(
"C2", 0.5)),
75 Cgamma_(this->coeffs().lookupOrDefault(
"Cgamma", 2.1377)),
76 Ctau_(this->coeffs().lookupOrDefault(
"Ctau", 0.4083)),
77 exp1_(this->coeffs().lookupOrDefault(
"exp1",
EDCexp1[
int(version_)])),
78 exp2_(this->coeffs().lookupOrDefault(
"exp2",
EDCexp2[
int(version_)])),
83 this->
thermo().phasePropertyName(typeName +
":kappa"),
94 this->coeffs().lookupOrDefault(
"outerCorrect",
true)
111 if (!outerCorrect_ && timeIndex_ == this->
mesh().time().
timeIndex())
135 max(
min(
sqrt(nu[i]/(epsilon[i] + small))/tc[i], 10), 1
e-10);
137 const scalar ReT =
sqr(k[i])/(nu[i]*epsilon[i] + small);
138 const scalar CtauI =
min(C1_/(Da*
sqrt(ReT + 1)), Ctau_);
140 const scalar CgammaI =
143 const scalar gammaL =
144 CgammaI*
pow025(nu[i]*epsilon[i]/(
sqr(k[i]) + small));
146 tauStar[i] = CtauI*
sqrt(nu[i]/(epsilon[i] + small));
159 pow(gammaL, exp1_)/(1 -
pow(gammaL, exp2_)),
171 const scalar gammaL =
172 Cgamma_*
pow025(nu[i]*epsilon[i]/(
sqr(k[i]) + small));
174 tauStar[i] = Ctau_*
sqrt(nu[i]/(epsilon[i] + small));
186 pow(gammaL, exp1_)/(1 -
pow(gammaL, exp2_)),
195 chemistryPtr_->solve(tauStar);
197 timeIndex_ = this->
mesh().time().timeIndex();
208 Su += chemistryPtr_->RR(specieI);
219 this->
thermo().phasePropertyName(typeName +
":Qdot"),
220 kappa_*chemistryPtr_->Qdot()
233 this->coeffs().lookupOrDefault
240 C1_ = this->coeffs().lookupOrDefault(
"C1", 0.05774);
241 C2_ = this->coeffs().lookupOrDefault(
"C2", 0.5);
242 Cgamma_ = this->coeffs().lookupOrDefault(
"Cgamma", 2.1377);
243 Ctau_ = this->coeffs().lookupOrDefault(
"Ctau", 0.4083);
244 exp1_ = this->coeffs().lookupOrDefault(
"exp1",
EDCexp1[
int(version_)]);
245 exp2_ = this->coeffs().lookupOrDefault(
"exp2",
EDCexp2[
int(version_)]);
246 outerCorrect_ = this->coeffs().lookupOrDefault(
"outerCorrect",
true);
const EDCversions EDCdefaultVersion
fvMatrix< scalar > fvScalarMatrix
#define forAll(list, i)
Loop across all elements in list.
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
fluidReactionThermo & thermo
EDCversions
EDC model versions.
virtual tmp< fvScalarMatrix > R(volScalarField &Y) const
Fuel consumption rate matrix.
A list of keyword definitions, which are a keyword followed by any number of values (e...
T & ref() const
Return non-const reference or generate a fatal error.
virtual bool read()
Update properties from given dictionary.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
void size(const label)
Override size to be inconsistent with allocated storage.
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, const Internal &, const PtrList< fvPatchField< scalar >> &)
Return a temporary field constructed from name,.
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensionedScalar pow025(const dimensionedScalar &ds)
Base-class for multi-component fluid thermodynamic properties.
const dimensionSet dimless
label k
Boltzmann constant.
Initialise the NamedEnum HashTable from the static list of names.
Macros for easy insertion into run-time selection tables.
static word member(const word &name)
Return member (name without the extension)
static autoPtr< basicChemistryModel > New(const fluidReactionThermo &thermo)
Select based on fluid reaction thermo.
const dimensionSet dimTime
EDC(const word &modelType, const fluidReactionThermo &type, const compressibleMomentumTransportModel &turb, const word &combustionProperties)
Construct from components.
A class for handling words, derived from string.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
virtual bool read()
Update properties from given dictionary.
Info<< "Reading field U\"<< endl;volVectorField U(IOobject("U", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE), mesh);volScalarField rho(IOobject("rho", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), thermo.rho());volVectorField rhoU(IOobject("rhoU", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), rho *U);volScalarField rhoE(IOobject("rhoE", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE), rho *(e+0.5 *magSqr(U)));surfaceScalarField pos(IOobject("pos", runTime.timeName(), mesh), mesh, dimensionedScalar(dimless, 1.0));surfaceScalarField neg(IOobject("neg", runTime.timeName(), mesh), mesh, dimensionedScalar(dimless, -1.0));surfaceScalarField phi("phi", fvc::flux(rhoU));Info<< "Creating turbulence model\"<< endl;autoPtr< compressible::momentumTransportModel > turbulence(compressible::momentumTransportModel::New(rho, U, phi, thermo))
Base class for combustion models.
Eddy Dissipation Concept (EDC) turbulent combustion model.
const dimensionSet dimMass
const NamedEnum< EDCversions, 4 > EDCversionNames
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
PtrList< volScalarField > & Y
virtual tmp< volScalarField > Qdot() const
Heat release rate [kg/m/s^3].
virtual ~EDC()
Destructor.
virtual void correct()
Correct combustion rate.
const doubleScalar e
Elementary charge.
const tmp< volScalarField::Internal > & Su
A class for managing temporary objects.
defineTypeNameAndDebug(diffusion, 0)
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Base class for single-phase compressible turbulence models.
addToRunTimeSelectionTable(combustionModel, diffusion, dictionary)