LangmuirHinshelwoodReactionRate: corrected, rationalized and generalized
to an arbitrary pair of reacting species.
Description
Langmuir-Hinshelwood reaction rate for gaseous reactions on surfaces.
Reference:
\verbatim
Hinshelwood, C.N. (1940).
The Kinetics of Chemical Change.
Oxford Clarendon Press
\endverbatim
This commit is contained in:
@ -25,7 +25,14 @@ Class
|
||||
Foam::LangmuirHinshelwoodReactionRate
|
||||
|
||||
Description
|
||||
Power series reaction rate.
|
||||
Langmuir-Hinshelwood reaction rate for gaseous reactions on surfaces.
|
||||
|
||||
Reference:
|
||||
\verbatim
|
||||
Hinshelwood, C.N. (1940).
|
||||
The Kinetics of Chemical Change.
|
||||
Oxford Clarendon Press
|
||||
\endverbatim
|
||||
|
||||
SourceFiles
|
||||
LangmuirHinshelwoodReactionRateI.H
|
||||
@ -58,29 +65,24 @@ class LangmuirHinshelwoodReactionRate
|
||||
{
|
||||
// Private data
|
||||
|
||||
static const label n_ = 5;
|
||||
//- List of species present in reaction system
|
||||
const speciesTable& species_;
|
||||
|
||||
static const label n_ = 3;
|
||||
scalar A_[n_];
|
||||
scalar Ta_[n_];
|
||||
|
||||
label co_;
|
||||
label c3h6_;
|
||||
label no_;
|
||||
//- Index of specie "A"
|
||||
label a_;
|
||||
|
||||
//- Index of specie "B"
|
||||
label b_;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
inline LangmuirHinshelwoodReactionRate
|
||||
(
|
||||
const scalar A[],
|
||||
const scalar Ta[],
|
||||
const label co,
|
||||
const label c3h6,
|
||||
const label no
|
||||
);
|
||||
|
||||
//- Construct from dictionary
|
||||
inline LangmuirHinshelwoodReactionRate
|
||||
(
|
||||
|
||||
@ -28,38 +28,17 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate
|
||||
(
|
||||
const scalar A[],
|
||||
const scalar Ta[],
|
||||
const label co,
|
||||
const label c3h6,
|
||||
const label no
|
||||
)
|
||||
:
|
||||
co_(co),
|
||||
c3h6_(c3h6),
|
||||
no_(no)
|
||||
{
|
||||
for (int i=0; i<n_; i++)
|
||||
{
|
||||
A_[i] = A[i];
|
||||
Ta_[i] = Ta[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate
|
||||
(
|
||||
const speciesTable& st,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
co_(st["CO"]),
|
||||
c3h6_(st["C3H6"]),
|
||||
no_(st["NO"])
|
||||
species_(st),
|
||||
a_(st["A"]),
|
||||
b_(st["B"])
|
||||
{
|
||||
// read (A, Ta) pairs
|
||||
// Read (A, Ta) pairs
|
||||
FixedList<Tuple2<scalar, scalar>, n_> coeffs(dict.lookup("coeffs"));
|
||||
|
||||
forAll(coeffs, i)
|
||||
@ -81,10 +60,7 @@ inline Foam::scalar Foam::LangmuirHinshelwoodReactionRate::operator()
|
||||
{
|
||||
return A_[0]*exp(-Ta_[0]/T)/
|
||||
(
|
||||
T
|
||||
*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
||||
*(1 + A_[4]*exp(-Ta_[4]/T)*pow(c[no_], 0.7))
|
||||
T*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||
);
|
||||
}
|
||||
|
||||
@ -96,36 +72,20 @@ inline Foam::scalar Foam::LangmuirHinshelwoodReactionRate::ddT
|
||||
const scalarField& c
|
||||
) const
|
||||
{
|
||||
scalar den =
|
||||
const scalar den =
|
||||
(
|
||||
T
|
||||
*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
||||
*(1 + A_[4]*exp(-Ta_[4]/T)*pow(c[no_], 0.7))
|
||||
T*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||
);
|
||||
scalar rate = A_[0]*exp(-Ta_[0]/T)/ den;
|
||||
const scalar rate = A_[0]*exp(-Ta_[0]/T)/den;
|
||||
|
||||
scalar derivDen =
|
||||
const scalar derivDen =
|
||||
(
|
||||
sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
||||
*(1 + A_[4]*exp(-Ta_[4]/T)*pow(c[no_], 0.7))
|
||||
+ 2*T*(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*
|
||||
(
|
||||
A_[1]*exp(-Ta_[1]/T)*c[co_]*Ta_[1]/sqr(T)
|
||||
+ A_[2]*exp(-Ta_[2]/T)*c[c3h6_]*Ta_[2]/sqr(T)
|
||||
sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||
+ 2*T*(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||
*(
|
||||
A_[1]*exp(-Ta_[1]/T)*c[a_]*Ta_[1]/sqr(T)
|
||||
+ A_[2]*exp(-Ta_[2]/T)*c[b_]*Ta_[2]/sqr(T)
|
||||
)
|
||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
||||
*(1 + A_[4]*exp(-Ta_[4]/T)*pow(c[no_], 0.7))
|
||||
+ T
|
||||
*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*(A_[3]*exp(-Ta_[3]/T)*Ta_[3]*sqr(c[co_])*sqr(c[c3h6_])/sqr(T))
|
||||
*(1 + A_[4]*exp(-Ta_[4]/T)*pow(c[no_], 0.7))
|
||||
+ T
|
||||
*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[co_] + A_[2]*exp(-Ta_[2]/T)*c[c3h6_])
|
||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
||||
*(A_[4]*exp(-Ta_[4]/T)*Ta_[4]*pow(c[no_], 0.7))/sqr(T)
|
||||
);
|
||||
|
||||
return rate*(Ta_[0]/sqr(T) - derivDen/den);
|
||||
@ -162,6 +122,9 @@ inline Foam::scalar Foam::LangmuirHinshelwoodReactionRate::dcidT
|
||||
|
||||
inline void Foam::LangmuirHinshelwoodReactionRate::write(Ostream& os) const
|
||||
{
|
||||
os.writeKeyword("A") << species_[a_] << token::END_STATEMENT << nl;
|
||||
os.writeKeyword("B") << species_[b_] << token::END_STATEMENT << nl;
|
||||
|
||||
FixedList<Tuple2<scalar, scalar>, n_> coeffs;
|
||||
|
||||
forAll(coeffs, i)
|
||||
|
||||
@ -64,7 +64,7 @@ class MichaelisMentenReactionRate
|
||||
{
|
||||
// Private data
|
||||
|
||||
//- List of specie names present in reaction system
|
||||
//- List of species present in reaction system
|
||||
const speciesTable& species_;
|
||||
|
||||
//- The maximum reaction rate at saturating substrate concentration
|
||||
|
||||
Reference in New Issue
Block a user