64 (
b*
c*mgb)().weightedAverage(
mesh.
V())
65 /((
b*
c)().weightedAverage(
mesh.
V()) + small)
75 nfVec /=
max(
mag(nfVec), dMgb);
149 tbPhiUD = bPhi.
flux();
150 tbPhiStUD = bPhiSt.
flux();
152 tbLaplacianPhi = -bLaplacian.
flux();
158 tSu = bSource.
Su() + divPhiSt*
b;
164 const word divbName(
"div(phi,b)");
185 if (tbLaplacianPhiCorr.
valid())
187 bPhiCorr += tbLaplacianPhiCorr();
201 tbPhiUD() + tbPhiStUD(),
219 phib = tbPhiUD() + tbLaplacianPhi() + bPhiCorr;
231 -
fvc::div(tbPhiStUD() + bPhiStCorr)()
239 uSolve(bStab, phib, bSource);
242 bSolve(cStab, phic, bSource);
255 uReaction_->correct();
261 if (uThermo.solveSpecie(i))
278 thermo_.uThermo().normaliseY();
280 HuSolve(bStab, phib, bSource);
295 bReaction_->correct();
303 if (bThermo.solveSpecie(i))
320 thermo_.bThermo().normaliseY();
323 HbSolve(cStab, phic, bSource);
372 +
fvm::div(phibc,
f,
"div(" + phibc.
name() +
',' + fName +
')')
375 + fvmStab(bc, bcStab,
D,
f)
416 uThermophysicalTransport_(),
442 bThermophysicalTransport_(),
467 + fvmStab(
b, bStab, Du, hu)
471 + (
b + bStab)*rhoByRhou*pressureWork(-dpdt)
474 + uThermophysicalTransport_->divq(hu)
508 + fvmStab(
c, cStab,
Db, hb)
512 + (
c + cStab)*rhoByRhob*pressureWork(-dpdt)
515 + bThermophysicalTransport_->divq(hb)
518 - bSource*(uThermo.he()() + uThermo.hf()()() - bThermo.hf()()())
537 fvModels().lookupType<fv::bXiIgnition>()
540 bool ignited =
false;
544 if (ignitionModels[i].ignited())
553 if (ignited && !ignited_)
557 if (thermo_.bThermo().Y().size())
566 thermo_.bThermo().Y(i).internalFieldRef() = Yp[i];
567 thermo_.bThermo().Y(i).correctBoundaryConditions();
571 thermo_.bThermo().he() = uThermo.he() + uThermo.hf() - bThermo.hf();
572 thermo_.bThermo().correct();
586 runTime.time().name(),
600 runTime.time().name(),
607 uSolve(bStab, phib, bSource);
CMULES: Multidimensional universal limiter for explicit corrected implicit solution.
#define forAll(list, i)
Loop across all elements in list.
volScalarField Db("Db", rho *turbulence->nuEff())
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const dimensionSet & dimensions() const
Return dimensions.
Generic GeometricField class.
void correctBoundaryConditions()
Correct boundary field.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const word & name() const
Return name.
Templated base class for multiphase thermophysical transport models.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Template dictionary class which manages the storage associated with it.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
label size() const
Return the number of elements in the UPtrList.
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....
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
SolverPerformance< Type > solve(const dictionary &)
Solve segregated or coupled returning the solution statistics.
SurfaceField< Type > *& faceFluxCorrectionPtr()
Return pointer to face-flux non-orthogonal correction field.
tmp< SurfaceField< Type > > flux() const
Return the face-flux field from the matrix.
tmp< volScalarField::Internal > Sp() const
Return the implicit source.
tmp< VolInternalField< Type > > Su() const
Return the explicit source.
const DimensionedField< scalar, fvMesh > & V() const
Return cell volumes.
const fvSchemes & schemes() const
Return the fvSchemes.
const fvSolution & solution() const
Return the fvSolution.
const surfaceVectorField & Sf() const
Return cell face area vectors.
const surfaceScalarField & magSf() const
Return cell face area magnitudes.
ITstream & div(const word &name) const
Basic first-order Euler implicit/explicit ddt using only the current and previous time-step values.
virtual tmp< fvMatrix< Type > > fvmDdt(const VolField< Type > &)
Abstract base class for convection schemes.
virtual tmp< SurfaceField< Type > > interpolate(const surfaceScalarField &, const VolField< Type > &) const =0
Basic second-order convection using face-gradients and Gauss' theorem.
tmp< fvMatrix< Type > > fvmDiv(const surfaceScalarField &, const VolField< Type > &) const
static tmp< fvMatrix< Type > > fvmLaplacianUncorrected(const surfaceScalarField &gammaMagSf, const surfaceScalarField &deltaCoeffs, const VolField< Type > &)
A class representing the concept of a field of 1 used to avoid unnecessary manipulations for objects ...
Base class for reaction models.
Reaction base-class holding the specie names and coefficients.
virtual tmp< volScalarField > rho() const =0
Density [kg/m^3].
const dictionary & solverDict(const word &name) const
Return the solver controls dictionary for the given field.
Foam::fvModels & fvModels() const
Return the fvModels that are created on demand.
Foam::fvConstraints & fvConstraints() const
Return the fvConstraints that are created on demand.
const fvMesh & mesh
Region mesh.
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
const volScalarField & Su
Laminar flame speed.
tmp< fvScalarMatrix > fvmStab(const volScalarField &bc, const volScalarField::Internal &bcStab, const volScalarField &D, volScalarField &f)
const volScalarField & b
Reference to the combustion regress variable.
void ubSolve(volScalarField &f, const word &fName, const volScalarField &alpha, const volScalarField &bc, const volScalarField::Internal &bcStab, const surfaceScalarField &phibc, const volScalarField &D, const thermophysicalTransportModel &thermophysicalTransport, const fvScalarMatrix &source, const reactionModel &reaction)
Solve for an unburnt or burnt gas property.
scalar mgbCoeff_
|grad(b)| division stabilisation coefficient.
void uSolve(const volScalarField::Internal &bStab, const surfaceScalarField &phib, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
const volScalarField & c
Reference to the combustion progress variable.
void burn()
Solve the regress variable and Xi equations.
autoPtr< SuModel > SuModel_
Strained laminar flame-speed model.
const volScalarField & Xi
Flame wrinkling.
autoPtr< XiModel > XiModel_
Flame wrinkling model.
void HuSolve(const volScalarField::Internal &bStab, const surfaceScalarField &phib, const volScalarField::Internal &bSource)
Solve the unburnt enthalpy equation.
void bSolve(const volScalarField::Internal &cStab, const surfaceScalarField &phic, const volScalarField::Internal &bSource)
Solve for the unburnt gas thermophysical state.
scalar bMin_
Minimum b below which a numerical compensation burn-out term.
void HbSolve(const volScalarField::Internal &cStab, const surfaceScalarField &phic, const volScalarField::Internal &bSource)
Solve the burnt enthalpy equation.
const surfaceScalarField & phi
Mass-flux field.
const volScalarField & rho
Reference to the continuity density field.
const surfaceScalarField & nonOrthDeltaCoeffs() const
Return reference to non-orthogonal cell-centre difference.
A class for managing temporary objects.
bool valid() const
Is this temporary object valid,.
const volScalarField & c() const
Progress variable.
const uRhoMulticomponentThermo & uThermo() const
const volScalarField & b() const
Regress variable.
A class for handling words, derived from string.
A class representing the concept of a field of 0 used to avoid unnecessary manipulations for objects ...
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
Calculate the first temporal derivative.
Calculate the face-flux of the given field.
Calculate the field for explicit evaluation of implicit and explicit sources.
Calculate the matrix for the divergence of the given field and flux.
Info<< "Creating thermophysical transport model\n"<< endl;turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity< RASThermophysicalTransportModel< ThermophysicalTransportModel< compressibleMomentumTransportModel, fluidThermo > >> thermophysicalTransport(turbulence(), thermo, true)
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 c
Speed of light in a vacuum.
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
tmp< VolField< Type > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
tmp< VolField< Type > > Sp(const volScalarField &sp, const VolField< Type > &vf)
tmp< VolField< typename outerProduct< vector, Type >::type > > grad(const SurfaceField< Type > &ssf)
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
tmp< SurfaceField< Type > > snGrad(const VolField< Type > &vf, const word &name)
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 > > Su(const DimensionedField< Type, fvMesh > &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
static const coefficient D("D", dimTemperature, 257.14)
const dimensionSet & dimTime
const dimensionSet & dimDensity
tmp< DimensionedField< scalar, GeoMesh, Field > > mag(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)