75 if (Vk.
value() > small)
80 switch(mesh.nGeometricD())
85 const scalar sphereFraction
87 combustionProperties.lookup<scalar>
89 "ignitionSphereFraction"
108 combustionProperties.lookup(
"ignitionThickness")
111 const scalar circleFraction
113 combustionProperties.lookup<scalar>
115 "ignitionCircleFraction"
136 combustionProperties.lookup(
"ignitionKernelArea")
149 StCorr.value() =
max(
min((Ak/AkEst).value(), 10.0), 1.0);
183 (
b*
c*mgb)().weightedAverage(mesh.V())
184 /((
b*
c)().weightedAverage(mesh.V()) + small)
192 nfVec /= (
mag(nfVec) + dMgb);
206 mesh.surfaceInterpolation::deltaCoeffs()
208 ).value()*runTime.deltaTValue();
237 Info<<
"Igniting cell " << ignCell;
241 <<
' ' << Xi[ignCell]
242 <<
' ' <<
Su[ignCell]
243 <<
' ' << mgb[ignCell]
250 )/(
b[ignSite.
cells()[icelli]] + 0.001);
277 pow(uPrimeCoef, 3)*momentumTransport->epsilon()
319 )*(Xi + scalar(1))/(2*Xi)
332 Su0*
max(scalar(1) - sigmas/sigmaExt, scalar(0.01))
335 if (SuModel ==
"unstrained")
339 else if (SuModel ==
"equilibrium")
343 else if (SuModel ==
"transport")
350 (sigmas*SuInf*(Su0 - SuInf) +
sqr(SuMin)*sigmaExt)
351 /(
sqr(Su0 - SuInf) +
sqr(SuMin))
381 <<
"Unknown Su model " << SuModel
393 else if (
XiModel ==
"algebraic")
399 (scalar(1) + (2*XiShapeCoef)*(scalar(0.5) -
b))
400 *XiCoef*
sqrt(up/(
Su + SuMin))*Reta;
402 else if (
XiModel ==
"transport")
411 scalar(1.001) + XiCoef*
sqrt(up/(
Su + SuMin))*Reta
420 *(scalar(0.5) -
min(
max(
b, scalar(0)), scalar(1)))
421 )*(XiEqStar - scalar(1.001))
435 +
fvm::div(phi + phiXi, Xi,
"div(phiXi,Xi)")
464 Info<<
"max(XiEq) = " <<
max(XiEq).value() <<
endl;
469 <<
"Unknown Xi model " <<
XiModel
473 Info<<
"Combustion progress = "
474 << 100*(scalar(1) -
b)().weightedAverage(mesh.V()).value() <<
"%"
568 mesh.schemes().div(
"div(phi,ft_b_ha_hau)")
587 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.
const Field< Type > & field() const
Generic GeometricField class.
void max(const dimensioned< Type > &)
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...
volScalarField & Y(const word &specieName)
Return the mass-fraction field for a specie given by name.
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
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
void EauSolve(const fv::convectionScheme< scalar > &mvConvection)
Solve the unburnt energy equation.
basicCombustionMixture & composition
Reference to the combustion mixture.
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 > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > SuSp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
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
basicSpecieMixture & composition
fluidMulticomponentThermo & thermo