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
|
Foam::LangmuirHinshelwoodReactionRate
|
||||||
|
|
||||||
Description
|
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
|
SourceFiles
|
||||||
LangmuirHinshelwoodReactionRateI.H
|
LangmuirHinshelwoodReactionRateI.H
|
||||||
@ -58,29 +65,24 @@ class LangmuirHinshelwoodReactionRate
|
|||||||
{
|
{
|
||||||
// Private data
|
// 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 A_[n_];
|
||||||
scalar Ta_[n_];
|
scalar Ta_[n_];
|
||||||
|
|
||||||
label co_;
|
//- Index of specie "A"
|
||||||
label c3h6_;
|
label a_;
|
||||||
label no_;
|
|
||||||
|
//- Index of specie "B"
|
||||||
|
label b_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from components
|
|
||||||
inline LangmuirHinshelwoodReactionRate
|
|
||||||
(
|
|
||||||
const scalar A[],
|
|
||||||
const scalar Ta[],
|
|
||||||
const label co,
|
|
||||||
const label c3h6,
|
|
||||||
const label no
|
|
||||||
);
|
|
||||||
|
|
||||||
//- Construct from dictionary
|
//- Construct from dictionary
|
||||||
inline LangmuirHinshelwoodReactionRate
|
inline LangmuirHinshelwoodReactionRate
|
||||||
(
|
(
|
||||||
|
|||||||
@ -28,38 +28,17 @@ License
|
|||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * 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
|
inline Foam::LangmuirHinshelwoodReactionRate::LangmuirHinshelwoodReactionRate
|
||||||
(
|
(
|
||||||
const speciesTable& st,
|
const speciesTable& st,
|
||||||
const dictionary& dict
|
const dictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
co_(st["CO"]),
|
species_(st),
|
||||||
c3h6_(st["C3H6"]),
|
a_(st["A"]),
|
||||||
no_(st["NO"])
|
b_(st["B"])
|
||||||
{
|
{
|
||||||
// read (A, Ta) pairs
|
// Read (A, Ta) pairs
|
||||||
FixedList<Tuple2<scalar, scalar>, n_> coeffs(dict.lookup("coeffs"));
|
FixedList<Tuple2<scalar, scalar>, n_> coeffs(dict.lookup("coeffs"));
|
||||||
|
|
||||||
forAll(coeffs, i)
|
forAll(coeffs, i)
|
||||||
@ -81,10 +60,7 @@ inline Foam::scalar Foam::LangmuirHinshelwoodReactionRate::operator()
|
|||||||
{
|
{
|
||||||
return A_[0]*exp(-Ta_[0]/T)/
|
return A_[0]*exp(-Ta_[0]/T)/
|
||||||
(
|
(
|
||||||
T
|
T*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||||
*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))
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,36 +72,20 @@ inline Foam::scalar Foam::LangmuirHinshelwoodReactionRate::ddT
|
|||||||
const scalarField& c
|
const scalarField& c
|
||||||
) const
|
) const
|
||||||
{
|
{
|
||||||
scalar den =
|
const scalar den =
|
||||||
(
|
(
|
||||||
T
|
T*sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||||
*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))
|
|
||||||
);
|
);
|
||||||
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_])
|
sqr(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||||
*(1 + A_[3]*exp(-Ta_[3]/T)*sqr(c[co_])*sqr(c[c3h6_]))
|
+ 2*T*(1 + A_[1]*exp(-Ta_[1]/T)*c[a_] + A_[2]*exp(-Ta_[2]/T)*c[b_])
|
||||||
*(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[a_]*Ta_[1]/sqr(T)
|
||||||
*
|
+ A_[2]*exp(-Ta_[2]/T)*c[b_]*Ta_[2]/sqr(T)
|
||||||
(
|
|
||||||
A_[1]*exp(-Ta_[1]/T)*c[co_]*Ta_[1]/sqr(T)
|
|
||||||
+ A_[2]*exp(-Ta_[2]/T)*c[c3h6_]*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);
|
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
|
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;
|
FixedList<Tuple2<scalar, scalar>, n_> coeffs;
|
||||||
|
|
||||||
forAll(coeffs, i)
|
forAll(coeffs, i)
|
||||||
|
|||||||
@ -64,7 +64,7 @@ class MichaelisMentenReactionRate
|
|||||||
{
|
{
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
//- List of specie names present in reaction system
|
//- List of species present in reaction system
|
||||||
const speciesTable& species_;
|
const speciesTable& species_;
|
||||||
|
|
||||||
//- The maximum reaction rate at saturating substrate concentration
|
//- The maximum reaction rate at saturating substrate concentration
|
||||||
|
|||||||
Reference in New Issue
Block a user