Added methods to InterfaceKinetics to get effective rate parameters
Effective rate parameters are used in SurfaceArrhenius reactions. Resolves #297.
This commit is contained in:
parent
02fc127c13
commit
40e09043bc
4 changed files with 93 additions and 2 deletions
|
|
@ -161,6 +161,43 @@ public:
|
|||
virtual void getRevRateConstants(doublereal* krev,
|
||||
bool doIrreversible = false);
|
||||
|
||||
//! Return effective preexponent for the specified reaction
|
||||
/*!
|
||||
* Returns effective preexponent, accounting for surface coverage
|
||||
* dependencies.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective preexponent
|
||||
*/
|
||||
double effectivePreExponentialFactor(size_t irxn) {
|
||||
return m_rates.effectivePreExponentialFactor(irxn);
|
||||
}
|
||||
|
||||
//! Return effective activation energy for the specified reaction
|
||||
/*!
|
||||
* Returns effective activation energy, accounting for surface coverage
|
||||
* dependencies.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective activation energy divided by the gas constant
|
||||
*/
|
||||
double effectiveActivationEnergy_R(size_t irxn) {
|
||||
return m_rates.effectiveActivationEnergy_R(irxn);
|
||||
}
|
||||
|
||||
//! Return effective temperature exponent for the specified reaction
|
||||
/*!
|
||||
* Returns effective temperature exponenty, accounting for surface coverage
|
||||
* dependencies. Current parameterization in SurfaceArrhenius does not
|
||||
* change this parameter with the change in surface coverages.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective temperature exponent
|
||||
*/
|
||||
double effectiveTemperatureExponent(size_t irxn) {
|
||||
return m_rates.effectiveTemperatureExponent(irxn);
|
||||
}
|
||||
|
||||
//! @}
|
||||
//! @name Reaction Mechanism Construction
|
||||
//! @{
|
||||
|
|
|
|||
|
|
@ -75,6 +75,44 @@ public:
|
|||
return m_rates.size();
|
||||
}
|
||||
|
||||
//! Return effective preexponent for the specified reaction.
|
||||
/*!
|
||||
* Returns effective preexponent, accounting for surface coverage
|
||||
* dependencies. Used in InterfaceKinetics.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective preexponent
|
||||
*/
|
||||
double effectivePreExponentialFactor(size_t irxn) {
|
||||
return m_rates[irxn].preExponentialFactor();
|
||||
}
|
||||
|
||||
//! Return effective activation energy for the specified reaction.
|
||||
/*!
|
||||
* Returns effective activation energy, accounting for surface coverage
|
||||
* dependencies. Used in InterfaceKinetics.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective activation energy divided by the gas constant
|
||||
*/
|
||||
double effectiveActivationEnergy_R(size_t irxn) {
|
||||
return m_rates[irxn].activationEnergy_R();
|
||||
}
|
||||
|
||||
//! Return effective temperature exponent for the specified reaction.
|
||||
/*!
|
||||
* Returns effective temperature exponent, accounting for surface coverage
|
||||
* dependencies. Used in InterfaceKinetics. Current parameterization in
|
||||
* SurfaceArrhenius does not change this parameter with the change in
|
||||
* surface coverages.
|
||||
*
|
||||
* @param irxn Reaction number in the kinetics mechanism
|
||||
* @return Effective temperature exponent
|
||||
*/
|
||||
double effectiveTemperatureExponent(size_t irxn) {
|
||||
return m_rates[irxn].temperatureExponent();
|
||||
}
|
||||
|
||||
protected:
|
||||
std::vector<R> m_rates;
|
||||
std::vector<size_t> m_rxn;
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ public:
|
|||
explicit SurfaceArrhenius(double A, double b, double Ta);
|
||||
|
||||
//! Add a coverage dependency for species *k*, with pre-exponential
|
||||
//! dependence *a*, temperature exponent dependence *m* and activation
|
||||
//! dependence *a*, rate constant exponential dependency *m*, and activation
|
||||
//! energy dependence *e*, where *e* is in Kelvin, i.e. energy divided by
|
||||
//! the molar gas constant.
|
||||
void addCoverageDependence(size_t k, doublereal a,
|
||||
|
|
@ -153,6 +153,22 @@ public:
|
|||
(m_E + m_ecov)*recipT + m_mcov);
|
||||
}
|
||||
|
||||
//! Return the pre-exponential factor *A* (in m, kmol, s to powers depending
|
||||
//! on the reaction order) accounting coverage dependence.
|
||||
/*!
|
||||
* Returns reaction prexponent accounting for both *a* and *m*.
|
||||
*/
|
||||
doublereal preExponentialFactor() const {
|
||||
return m_A * std::exp(std::log(10.0)*m_acov + m_mcov);
|
||||
}
|
||||
|
||||
//! Return effective temperature exponent
|
||||
doublereal temperatureExponent() const {
|
||||
return m_b;
|
||||
}
|
||||
|
||||
//! Return the activation energy divided by the gas constant (i.e. the
|
||||
//! activation temperature) [K], accounting coverage dependence.
|
||||
doublereal activationEnergy_R() const {
|
||||
return m_E + m_ecov;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ Arrhenius::Arrhenius(doublereal A, doublereal b, doublereal E)
|
|||
if (m_A <= 0.0) {
|
||||
m_logA = -1.0E300;
|
||||
} else {
|
||||
m_logA = log(m_A);
|
||||
m_logA = std::log(m_A);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue