76 gSum(
c*mesh.V().primitiveField())
80 if (Vk.
value() > small)
85 switch(mesh.nGeometricD())
90 const scalar sphereFraction
92 combustionProperties.lookup<scalar>
94 "ignitionSphereFraction"
113 combustionProperties.lookup(
"ignitionThickness")
116 const scalar circleFraction
118 combustionProperties.lookup<scalar>
120 "ignitionCircleFraction"
141 combustionProperties.lookup(
"ignitionKernelArea")
154 StCorr.value() =
max(
min((Ak/AkEst).value(), 10.0), 1.0);
188 (
b*
c*mgb)().weightedAverage(mesh.V())
189 /((
b*
c)().weightedAverage(mesh.V()) + small)
197 nfVec /= (
mag(nfVec) + dMgb);
211 mesh.surfaceInterpolation::deltaCoeffs()
213 ).value()*runTime.deltaTValue();
242 Info<<
"Igniting cell " << ignCell;
246 <<
' ' << Xi[ignCell]
247 <<
' ' <<
Su[ignCell]
248 <<
' ' << mgb[ignCell]
255 )/(
b[ignSite.
cells()[icelli]] + 0.001);
282 pow(uPrimeCoef, 3)*momentumTransport->epsilon()
324 )*(Xi + scalar(1))/(2*Xi)
337 Su0*
max(scalar(1) - sigmas/sigmaExt, scalar(0.01))
340 if (SuModel ==
"unstrained")
344 else if (SuModel ==
"equilibrium")
348 else if (SuModel ==
"transport")
355 (sigmas*SuInf*(Su0 - SuInf) +
sqr(SuMin)*sigmaExt)
356 /(
sqr(Su0 - SuInf) +
sqr(SuMin))
386 <<
"Unknown Su model " << SuModel
398 else if (
XiModel ==
"algebraic")
404 (scalar(1) + (2*XiShapeCoef)*(scalar(0.5) -
b))
405 *XiCoef*
sqrt(up/(
Su + SuMin))*Reta;
407 else if (
XiModel ==
"transport")
416 scalar(1.001) + XiCoef*
sqrt(up/(
Su + SuMin))*Reta
425 *(scalar(0.5) -
min(
max(
b, scalar(0)), scalar(1)))
426 )*(XiEqStar - scalar(1.001))
440 +
fvm::div(phi + phiXi, Xi,
"div(phiXi,Xi)")
469 Info<<
"max(XiEq) = " <<
max(XiEq).value() <<
endl;
474 <<
"Unknown Xi model " <<
XiModel
478 Info<<
"Combustion progress = "
479 << 100*(scalar(1) -
b)().weightedAverage(mesh.V()).value() <<
"%"
573 mesh.schemes().div(
"div(phi,ft_b_ha_hau)")
577 if (thermo_.containsSpecie(
"ft"))
592 thermo_.heu() ==
thermo.he();
fvScalarMatrix EaEqn(betav *fvm::ddt(rho, hea)+mvConvection->fvmDiv(phi, hea)+betav *fvc::ddt(rho, K)+fvc::div(phi, K)+(hea.name()=="ea" ? fvc::div(fvc::absolute(phi, rho, U), p/rho) :-betav *dpdt) - fvm::laplacian(Db, hea)+betav *fvModels.source(rho, hea))
dimensionedScalar StCorr("StCorr", dimless, 1.0)
#define forAll(list, i)
Loop across all elements in list.
tmp< fv::convectionScheme< scalar > > mvConvection(fv::convectionScheme< scalar >::New(mesh, fields, phi, mesh.schemes().div("div(phi,ft_b_ha_hau)")))
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 max(const dimensioned< Type > &)
const Internal::FieldType & primitiveField() const
Return a const-reference to the primitive field.
const word & name() const
Return name.
Base-class for all Xi models used by the b-Xi combustion model. See Technical Report SH/RE/01R for de...
const Type & value() const
Return const reference to value.
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.
Abstract base class for convection schemes.
const labelList & cells() const
Return the ignition cells updated if the mesh moved.
const scalarList & cellVolumes() const
virtual PtrList< volScalarField > & Y()=0
Access the mass-fraction fields.
Foam::fvConstraints & fvConstraints() const
Return the fvConstraints that are created on demand.
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
void bSolve(const fv::convectionScheme< scalar > &mvConvection)
Solve the Xi and regress variable equations.
void ftSolve(const fv::convectionScheme< scalar > &mvConvection)
Solve the ft equation for partially-premixed mixtures.
turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity< RASThermophysicalTransportModel< ThermophysicalTransportModel< compressibleMomentumTransportModel, fluidThermo > > > thermophysicalTransport
psiuMulticomponentThermo & thermo_
void EauSolve(const fv::convectionScheme< scalar > &mvConvection)
Solve the unburnt energy equation.
void EaSolve(const fv::convectionScheme< scalar > &mvConvection)
Solve the energy equation.
dimensionedScalar StCorr(const volScalarField &c, const surfaceScalarField &nf, const dimensionedScalar &dMgb) const
Calculate and return the turbulent flame-speed kernel correction.
Buoyancy related data for the Foam::solvers::isothermalFluid solver module when solving buoyant cases...
uniformDimensionedVectorField g
Gravitational acceleration.
const surfaceScalarField & phi
Mass-flux field.
const volScalarField & rho
Reference to the continuity density field.
A class for managing temporary objects.
Foam::fvConstraints & fvConstraints(Foam::fvConstraints::New(mesh))
Foam::fvModels & fvModels(Foam::fvModels::New(mesh))
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Calculate the first temporal derivative.
Calculate the laplacian of the given field.
Calculate the mesh motion flux and convert fluxes from absolute to relative and back.
Calculate the snGrad of the given volField.
Calculate the matrix for the divergence of the given field and flux.
Calculate the matrix for implicit and explicit sources.
Info<< "Creating field dpdt\n"<< endl;volScalarField dpdt(IOobject("dpdt", runTime.name(), mesh), mesh, dimensionedScalar(p.dimensions()/dimTime, 0));Info<< "Creating field kinetic energy K\n"<< endl;volScalarField K("K", 0.5 *magSqr(U));Info<< "Creating the unstrained laminar flame speed\n"<< endl;autoPtr< laminarFlameSpeed > unstrainedLaminarFlameSpeed(laminarFlameSpeed::New(thermo))
Info<< "Creating thermophysical transport model\n"<< endl;turbulenceThermophysicalTransportModels::unityLewisEddyDiffusivity< RASThermophysicalTransportModel< ThermophysicalTransportModel< compressibleMomentumTransportModel, fluidThermo > >> thermophysicalTransport(turbulence(), thermo, true)
Info<< "Calculating turbulent flame speed field St\n"<< endl;volScalarField St(IOobject("St", runTime.name(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), flameWrinkling->Xi() *Su);multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
const dimensionedScalar G
Newtonian constant of gravitation.
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 > > laplacian(const VolField< Type > &vf, const word &name)
tmp< VolField< Type > > Su(const VolField< Type > &su, 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 > > SuSp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
Type gSum(const FieldField< Field, Type > &f)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Ostream & endl(Ostream &os)
Add newline and flush stream.
errorManip< error > abort(error &err)
const dimensionSet dimless
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar sqrt(const dimensionedScalar &ds)
const dimensionSet dimVolume
dimensioned< scalar > mag(const dimensioned< Type > &)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
static scalar R(const scalar a, const scalar x)
const dimensionSet dimArea
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
fluidMulticomponentThermo & thermo