28 template<
class ReactionRate,
class FallOffFunction>
32 const ReactionRate& k0,
33 const ReactionRate& kInf,
34 const FallOffFunction& F,
41 thirdBodyEfficiencies_(tbes)
50 template<
class ReactionRate,
class FallOffFunction>
58 k0_(species, dict.
subDict(
"k0")),
59 kInf_(species, dict.
subDict(
"kInf")),
61 thirdBodyEfficiencies_(species, dict.
subDict(
"thirdBodyEfficiencies"))
63 forAll(thirdBodyEfficiencies_, i)
70 thirdBodyEfficiencies_[i]
79 template<
class ReactionRate,
class FallOffFunction>
88 const scalar k0 = k0_(p, T, c);
89 const scalar kInf = kInf_(p, T, c);
90 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
92 return kInf*(Pr/(1 + Pr))*F_(T, Pr);
96 template<
class ReactionRate,
class FallOffFunction>
105 const scalar k0 = k0_(p, T, c);
106 const scalar kInf = kInf_(p, T, c);
107 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
109 return (Pr/(1 + Pr))*F_(T, Pr)*kInf_.ddT(p, T, c);
113 template<
class ReactionRate,
class FallOffFunction>
122 const scalar
M = thirdBodyEfficiencies_.M(c);
126 const scalar k0 = k0_(p, T, c);
127 const scalar kInf = kInf_(p, T, c);
128 const scalar Pr = k0*M/kInf;
129 const scalar F = F_(T, Pr);
133 const scalar dPrdci = -beta_[i].second()*k0/kInf;
134 const scalar dFdci = F_.ddc(Pr, F, dPrdci, T);
135 dcidc[i] = (dPrdci/(Pr*(1 + Pr)) + dFdci/
F);
148 template<
class ReactionRate,
class FallOffFunction>
157 const scalar
M = thirdBodyEfficiencies_.M(c);
161 const scalar k0 = k0_(p, T, c);
162 const scalar kInf = kInf_(p, T, c);
164 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
165 const scalar F = F_(T, Pr);
167 Pr*(k0_.ddT(p, T, c)/k0 - kInf_.ddT(p, T, c)/kInf - 1/
T);
168 const scalar dFdT = F_.ddT(Pr, F, dPrdT, T);
170 return (dPrdT/(Pr*(1 + Pr)) + dFdT/F);
179 template<
class ReactionRate,
class FallOffFunction>
186 os <<
indent << token::BEGIN_BLOCK <<
nl;
190 os <<
indent << token::END_BLOCK <<
nl;
193 os <<
indent << token::BEGIN_BLOCK <<
nl;
197 os <<
indent << token::END_BLOCK <<
nl;
200 os <<
indent << token::BEGIN_BLOCK <<
nl;
204 os <<
indent << token::END_BLOCK <<
nl;
206 os <<
indent <<
"thirdBodyEfficiencies" <<
nl;
207 os <<
indent << token::BEGIN_BLOCK <<
nl;
209 thirdBodyEfficiencies_.
write(os);
211 os <<
indent << token::END_BLOCK <<
nl;
215 template<
class ReactionRate,
class FallOffFunction>
#define forAll(list, i)
Loop across all elements in list.
Ostream & indent(Ostream &os)
Indent stream.
A list of keyword definitions, which are a keyword followed by any number of values (e...
A 2-tuple for storing two objects of different types.
General class for handling unimolecular/recombination fall-off reactions.
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
scalar dcidT(const scalar p, const scalar T, const scalarField &c) const
Temperature derivative of the pressure dependent term.
void write(Ostream &os) const
Write to stream.
volVectorField F(fluid.F())
void dcidc(const scalar p, const scalar T, const scalarField &c, scalarField &dcidc) const
Species concentration derivative of the pressure dependent term.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
scalar ddT(const scalar p, const scalar T, const scalarField &c) const
FallOffReactionRate(const ReactionRate &k0, const ReactionRate &kInf, const FallOffFunction &F, const thirdBodyEfficiencies &tbes)
Construct from components.
friend Ostream & operator(Ostream &, const FallOffReactionRate< ReactionRate, FallOffFunction > &)
A wordList with hashed indices for faster lookup by name.
const dimensionedScalar c
Speed of light in a vacuum.
virtual Ostream & write(const token &)=0
Write next token to stream.
Ostream & incrIndent(Ostream &os)
Increment the indent level.