Skip to content
Permalink
Browse files

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
  • Loading branch information...
Henry Weller
Henry Weller committed Jul 12, 2018
1 parent bc1a536 commit 669935efd61caf6d5e5369d16505a9d55a3da3ad
@@ -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

0 comments on commit 669935e

Please sign in to comment.
You can’t perform that action at this time.