31 template<
class ThermoType>
35 const scalar Wu = this->speciesData()[fuelIndex_].W();
40 const scalar stoichCoeff =
reaction.lhs()[i].stoichCoeff;
41 specieStoichCoeffs_[speciei] = -stoichCoeff;
42 qFuel_.value() += this->speciesData()[speciei].hc()*stoichCoeff/Wu;
48 const scalar stoichCoeff =
reaction.rhs()[i].stoichCoeff;
49 specieStoichCoeffs_[speciei] = stoichCoeff;
50 qFuel_.value() -= this->speciesData()[speciei].hc()*stoichCoeff/Wu;
51 specieProd_[speciei] = -1;
54 Info <<
"Fuel heat of combustion :" << qFuel_.value() <<
endl;
58 template<
class ThermoType>
61 const label O2Index = this->species()[
"O2"];
62 const scalar Wu = this->speciesData()[fuelIndex_].W();
65 (this->speciesData()[inertIndex_].W()
66 * specieStoichCoeffs_[inertIndex_]
67 + this->speciesData()[O2Index].W()
68 *
mag(specieStoichCoeffs_[O2Index]))
69 / (Wu*
mag(specieStoichCoeffs_[fuelIndex_]));
72 (this->speciesData()[O2Index].W()
73 *
mag(specieStoichCoeffs_[O2Index]))
74 / (Wu*
mag(specieStoichCoeffs_[fuelIndex_]));
76 Info <<
"stoichiometric air-fuel ratio :" << stoicRatio_.value() <<
endl;
78 Info <<
"stoichiometric oxygen-fuel ratio :" << s_.value() <<
endl;
82 template<
class ThermoType>
88 scalar totalMol = 0.0;
92 totalMol +=
mag(specieStoichCoeffs_[speciei]);
100 Xi[i] =
mag(specieStoichCoeffs_[speciei])/totalMol;
102 Wm += Xi[i]*this->speciesData()[speciei].W();
108 Yprod0_[speciei] = this->speciesData()[speciei].W()/Wm*Xi[i];
111 Info <<
"Maximum products mass concentrations:" <<
nl;
116 Info<<
" " << this->species()[i] <<
": " << Yprod0_[i] <<
nl;
121 forAll(specieStoichCoeffs_, i)
123 specieStoichCoeffs_[i] =
124 specieStoichCoeffs_[i]
125 * this->speciesData()[i].W()
126 / (this->speciesData()[fuelIndex_].W()
127 *
mag(specieStoichCoeffs_[fuelIndex_]));
132 template<
class ThermoType>
137 label O2Index = this->species()[
"O2"];
145 if (speciei == fuelIndex_)
147 fres_[speciei] =
max(YFuel - YO2/s_, scalar(0.0));
149 else if (speciei == O2Index)
151 fres_[speciei] =
max(YO2 - YFuel*s_, scalar(0.0));
160 if (speciei != inertIndex_)
162 forAll(fres_[speciei], cellI)
164 if (fres_[fuelIndex_][cellI] > 0.0)
167 fres_[speciei][cellI] =
169 * (1.0 + YO2[cellI]/s_.value() - YFuel[cellI]);
174 fres_[speciei][cellI] =
178 - YO2[cellI]/s_.value()*stoicRatio_.value()
179 + YFuel[cellI]*stoicRatio_.value()
190 template<
class ThermoType>
195 const word& phaseName
202 specieStoichCoeffs_(this->species_.size(), 0.0),
203 Yprod0_(this->species_.size(), 0.0),
204 fres_(Yprod0_.size()),
205 inertIndex_(this->species()[thermoDict.
lookup(
"inertSpecie")]),
206 fuelIndex_(this->species()[thermoDict.
lookup(
"fuel")]),
207 specieProd_(Yprod0_.size(), 1)
209 if (this->size() == 1)
215 "fres_" + this->species()[fresI],
216 mesh.time().timeName(),
236 massAndAirStoichRatios();
238 calculateMaxProducts();
245 <<
"Only one reaction required for single step reaction"
253 template<
class ThermoType>