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>
89 const scalar k0 = k0_(p, T, c, li);
90 const scalar kInf = kInf_(p, T, c, li);
91 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
93 return kInf*(Pr/(1 + Pr))*F_(T, Pr);
97 template<
class ReactionRate,
class FallOffFunction>
107 const scalar k0 = k0_(p, T, c, li);
108 const scalar kInf = kInf_(p, T, c, li);
109 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
111 return (Pr/(1 + Pr))*F_(T, Pr)*kInf_.ddT(p, T, c, li);
115 template<
class ReactionRate,
class FallOffFunction>
125 const scalar
M = thirdBodyEfficiencies_.M(c);
129 const scalar k0 = k0_(p, T, c, li);
130 const scalar kInf = kInf_(p, T, c, li);
131 const scalar Pr = k0*M/kInf;
132 const scalar F = F_(T, Pr);
136 const scalar dPrdci = -beta_[i].second()*k0/kInf;
137 const scalar dFdci = F_.ddc(Pr, F, dPrdci, T);
138 dcidc[i] = (dPrdci/(Pr*(1 + Pr)) + dFdci/
F);
151 template<
class ReactionRate,
class FallOffFunction>
161 const scalar
M = thirdBodyEfficiencies_.M(c);
165 const scalar k0 = k0_(p, T, c, li);
166 const scalar kInf = kInf_(p, T, c, li);
168 const scalar Pr = k0*thirdBodyEfficiencies_.M(c)/kInf;
169 const scalar F = F_(T, Pr);
171 Pr*(k0_.ddT(p, T, c, li)/k0 - kInf_.ddT(p, T, c, li)/kInf - 1/
T);
172 const scalar dFdT = F_.ddT(Pr, F, dPrdT, T);
174 return (dPrdT/(Pr*(1 + Pr)) + dFdT/F);
183 template<
class ReactionRate,
class FallOffFunction>
190 os <<
indent << token::BEGIN_BLOCK <<
nl;
194 os <<
indent << token::END_BLOCK <<
nl;
197 os <<
indent << token::BEGIN_BLOCK <<
nl;
201 os <<
indent << token::END_BLOCK <<
nl;
204 os <<
indent << token::BEGIN_BLOCK <<
nl;
208 os <<
indent << token::END_BLOCK <<
nl;
210 os <<
indent <<
"thirdBodyEfficiencies" <<
nl;
211 os <<
indent << token::BEGIN_BLOCK <<
nl;
213 thirdBodyEfficiencies_.
write(os);
215 os <<
indent << token::END_BLOCK <<
nl;
219 template<
class ReactionRate,
class FallOffFunction>
const dimensionedScalar & F
Faraday constant: default SI units: [C/mol].
#define forAll(list, i)
Loop across all elements in list.
virtual Ostream & write(const char)=0
Write character.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
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.
const dimensionedScalar & c
Speed of light in a vacuum.
General class for handling unimolecular/recombination fall-off reactions.
void dcidc(const scalar p, const scalar T, const scalarField &c, const label li, scalarField &dcidc) const
Species concentration derivative of the pressure dependent term.
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
scalar dcidT(const scalar p, const scalar T, const scalarField &c, const label li) const
Temperature derivative of the pressure dependent term.
scalar ddT(const scalar p, const scalar T, const scalarField &c, const label li) const
void write(Ostream &os) const
Write to stream.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
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.
Ostream & incrIndent(Ostream &os)
Increment the indent level.