33 template<
class ThermoType>
37 const scalar Wu = this->speciesData()[fuelIndex_].W();
41 const label speciei =
reaction.lhs()[i].index;
42 const scalar stoichCoeff =
reaction.lhs()[i].stoichCoeff;
43 specieStoichCoeffs_[speciei] = -stoichCoeff;
44 qFuel_.value() += this->speciesData()[speciei].hc()*stoichCoeff/Wu;
49 const label speciei =
reaction.rhs()[i].index;
50 const scalar stoichCoeff =
reaction.rhs()[i].stoichCoeff;
51 specieStoichCoeffs_[speciei] = stoichCoeff;
52 qFuel_.value() -= this->speciesData()[speciei].hc()*stoichCoeff/Wu;
53 specieProd_[speciei] = -1;
56 Info<<
"Fuel heat of combustion :" << qFuel_.value() <<
endl;
60 template<
class ThermoType>
63 const label O2Index = this->species()[
"O2"];
64 const scalar Wu = this->speciesData()[fuelIndex_].W();
67 (this->speciesData()[inertIndex_].W()
68 * specieStoichCoeffs_[inertIndex_]
69 + this->speciesData()[O2Index].W()
70 *
mag(specieStoichCoeffs_[O2Index]))
71 / (Wu*
mag(specieStoichCoeffs_[fuelIndex_]));
74 (this->speciesData()[O2Index].W()
75 *
mag(specieStoichCoeffs_[O2Index]))
76 / (Wu*
mag(specieStoichCoeffs_[fuelIndex_]));
78 Info<<
"stoichiometric air-fuel ratio :" << stoicRatio_.value() <<
endl;
80 Info<<
"stoichiometric oxygen-fuel ratio :" << s_.value() <<
endl;
84 template<
class ThermoType>
90 scalar totalMol = 0.0;
93 label speciei =
reaction.rhs()[i].index;
94 totalMol +=
mag(specieStoichCoeffs_[speciei]);
101 const label speciei =
reaction.rhs()[i].index;
102 Xi[i] =
mag(specieStoichCoeffs_[speciei])/totalMol;
104 Wm += Xi[i]*this->speciesData()[speciei].W();
109 const label speciei =
reaction.rhs()[i].index;
110 Yprod0_[speciei] = this->speciesData()[speciei].W()/Wm*Xi[i];
113 Info<<
"Maximum products mass concentrations:" <<
nl;
118 Info<<
" " << this->species()[i] <<
": " << Yprod0_[i] <<
nl;
123 forAll(specieStoichCoeffs_, i)
125 specieStoichCoeffs_[i] =
126 specieStoichCoeffs_[i]
127 * this->speciesData()[i].W()
128 / (this->speciesData()[fuelIndex_].W()
129 *
mag(specieStoichCoeffs_[fuelIndex_]));
134 template<
class ThermoType>
137 const Reaction<ThermoType>&
reaction = this->operator[](0);
139 const label O2Index = this->species()[
"O2"];
146 const label speciei =
reaction.lhs()[i].index;
147 if (speciei == fuelIndex_)
149 fres_[speciei] =
max(YFuel - YO2/s_, scalar(0));
151 else if (speciei == O2Index)
153 fres_[speciei] =
max(YO2 - YFuel*s_, scalar(0));
161 const label speciei =
reaction.rhs()[i].index;
162 if (speciei != inertIndex_)
164 forAll(fres_[speciei], celli)
166 if (fres_[fuelIndex_][celli] > 0.0)
169 fres_[speciei][celli] =
171 * (1.0 + YO2[celli]/s_.value() - YFuel[celli]);
176 fres_[speciei][celli] =
180 - YO2[celli]/s_.value()*stoicRatio_.value()
181 + YFuel[celli]*stoicRatio_.value()
192 template<
class ThermoType>
197 const word& phaseName
204 specieStoichCoeffs_(this->species_.size(),
Zero),
205 Yprod0_(this->species_.size(),
Zero),
206 fres_(Yprod0_.size()),
209 specieProd_(Yprod0_.size(), 1)
211 if (this->size() == 1)
217 "fres_" + this->species()[fresI],
218 mesh.time().timeName(),
245 <<
"Only one reaction required for single step reaction"
253 template<
class ThermoType>