Go to the documentation of this file.
34 template<
class ThermoType>
41 if (
isA<singleStepReactingMixture<ThermoType>>(
thermo))
43 return dynamic_cast<const singleStepReactingMixture<ThermoType>&
>
51 <<
"Inconsistent thermo package for " <<
thermo.type()
52 <<
"Please select a thermo package based on "
55 return dynamic_cast<const singleStepReactingMixture<ThermoType>&
>
66 template<
class ThermoType>
80 mesh_.time().timeName(),
87 coeffsDict_(
dict.subOrEmptyDict(modelType +
"Coeffs")),
88 nuSoot_(coeffsDict_.get<scalar>(
"nuSoot")),
89 Wsoot_(coeffsDict_.get<scalar>(
"Wsoot")),
93 coeffsDict_.lookupOrDefault<
word>(
"mappingField",
"none")
97 mixture_(checkThermo(thermo_))
101 const scalarList& specieStoichCoeffs(mixture_.specieStoichCoeffs());
103 scalar totalMol = 0.0;
107 totalMol +=
mag(specieStoichCoeffs[speciei]);
118 Xi[i] =
mag(specieStoichCoeffs[speciei])/totalMol;
119 Wm += Xi[i]*mixture_.speciesData()[speciei].W();
122 const scalar XSoot = nuSoot_/totalMol;
125 sootMax_ = XSoot*Wsoot_/Wm;
127 Info <<
"Maximum soot mass concentrations: " << sootMax_ <<
nl;
129 if (mappingFieldName_ ==
"none")
132 mappingFieldName_ = mixture_.Y(index).name();
135 const label mapFieldIndex = mixture_.species()[mappingFieldName_];
137 mapFieldMax_ = mixture_.Yprod0()[mapFieldIndex];
144 template<
class ThermoType>
151 template<
class ThermoType>
157 soot_ = sootMax_*(mapField/mapFieldMax_);
Defines the attributes of an object for which implicit objectRegistry management is supported,...
A class for handling words, derived from Foam::string.
psiReactionThermo & thermo
Fundamental fluid thermodynamic properties.
const word dictName("blockMeshDict")
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
messageStream Info
Information stream (uses stdout - output is on the master only)
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Mesh data needed to do the Finite Volume discretisation.
errorManipArg< error, int > exit(error &err, const int errNo=1)
CombustionModel< rhoReactionThermo > & reaction
const TargetType * isA(const Type &t)
Check if dynamic_cast to TargetType is possible.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual ~mixtureFractionSoot()
Destructor.
Base class for soor models.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
Single step reacting mixture.
mixtureFractionSoot(const dictionary &dict, const fvMesh &mesh, const word &modelType)
Construct from components.
This soot model is purely an state model. The ammount of soot produced is determined by a single step...
virtual void correct()
Main update/correction routine.
Simple extension of ReactionThermo to handle reaction kinetics in addition to the equilibrium thermod...