Cantera 2.6.0
|
Blowers Masel reaction rate type depends on the enthalpy of reaction. More...
#include <BlowersMaselRate.h>
Public Member Functions | |
BlowersMaselRate () | |
Default constructor. More... | |
BlowersMaselRate (double A, double b, double Ea0, double w) | |
Constructor. More... | |
BlowersMaselRate (const AnyMap &node, const UnitStack &rate_units={}) | |
unique_ptr< MultiRateBase > | newMultiRate () const override |
Create a rate evaluator for reactions of a particular derived type. More... | |
virtual const std::string | type () const override |
String identifying reaction rate specialization. More... | |
virtual void | setContext (const Reaction &rxn, const Kinetics &kin) override |
Set context of reaction rate evaluation. More... | |
double | evalRate (double logT, double recipT) const |
Evaluate reaction rate. More... | |
void | updateFromStruct (const BlowersMaselData &shared_data) |
Update information specific to reaction. More... | |
double | evalFromStruct (const BlowersMaselData &shared_data) const |
Evaluate reaction rate. More... | |
double | ddTScaledFromStruct (const BlowersMaselData &shared_data) const |
Evaluate derivative of reaction rate with respect to temperature divided by reaction rate. More... | |
virtual double | activationEnergy () const override |
Return the activation energy Ea [J/kmol] The value corresponds to the constant specified by input parameters;. More... | |
double | bondEnergy () const |
Return the bond dissociation energy w [J/kmol]. More... | |
double | deltaH () const |
Return current enthalpy change of reaction [J/kmol]. More... | |
void | setDeltaH (double deltaH) |
Set current enthalpy change of reaction [J/kmol]. More... | |
Public Member Functions inherited from ArrheniusBase | |
ArrheniusBase () | |
Default constructor. More... | |
ArrheniusBase (double A, double b, double Ea) | |
Constructor. More... | |
ArrheniusBase (const AnyValue &rate, const UnitSystem &units, const UnitStack &rate_units) | |
Constructor based on AnyValue content. More... | |
ArrheniusBase (const AnyMap &node, const UnitStack &rate_units={}) | |
void | setRateParameters (const AnyValue &rate, const UnitSystem &units, const UnitStack &rate_units) |
Perform object setup based on AnyValue node information. More... | |
void | getRateParameters (AnyMap &node) const |
Return parameters. More... | |
virtual void | setParameters (const AnyMap &node, const UnitStack &rate_units) override |
Set parameters. More... | |
virtual void | getParameters (AnyMap &node) const override |
Get parameters. More... | |
virtual void | check (const std::string &equation, const AnyMap &node) override |
Check rate expression. More... | |
virtual void | validate (const std::string &equation, const Kinetics &kin) override |
Validate the reaction rate expression. More... | |
virtual double | preExponentialFactor () const |
Return the pre-exponential factor A (in m, kmol, s to powers depending on the reaction order) More... | |
virtual double | temperatureExponent () const |
Return the temperature exponent b More... | |
const Units & | rateUnits () const |
double | order () const |
Return reaction order associated with the reaction rate. More... | |
void | setRateUnits (const UnitStack &rate_units) |
Set units of the reaction rate expression. More... | |
bool | allowNegativePreExponentialFactor () const |
Get flag indicating whether negative A values are permitted. More... | |
void | setAllowNegativePreExponentialFactor (bool value) |
Set flag indicating whether negative A values are permitted. More... | |
Public Member Functions inherited from ReactionRate | |
ReactionRate (const ReactionRate &other) | |
ReactionRate & | operator= (const ReactionRate &other) |
AnyMap | parameters () const |
Return the parameters such that an identical Reaction could be reconstructed using the newReaction() function. More... | |
virtual void | validate (const std::string &equation) |
Validate the reaction rate expression (legacy call) More... | |
size_t | rateIndex () const |
Reaction rate index within kinetics evaluator. More... | |
void | setRateIndex (size_t idx) |
Set reaction rate index within kinetics evaluator. More... | |
double | eval (double T) |
Evaluate reaction rate based on temperature. More... | |
double | eval (double T, double extra) |
Evaluate reaction rate based on temperature and an extra parameter. More... | |
double | eval (double T, const std::vector< double > &extra) |
Evaluate reaction rate based on temperature and an extra vector parameter. More... | |
Protected Member Functions | |
double | effectiveActivationEnergy_R (double deltaH_R) const |
Return the effective activation energy (a function of the delta H of reaction) divided by the gas constant (that is, the activation temperature) [K]. More... | |
Protected Attributes | |
std::vector< std::pair< size_t, double > > | m_stoich_coeffs |
Pairs of species indices and multiplers to calculate enthalpy change. More... | |
double | m_deltaH_R |
enthalpy change of reaction (in temperature units) More... | |
Protected Attributes inherited from ArrheniusBase | |
bool | m_negativeA_ok |
Flag indicating whether negative A values are permitted. More... | |
double | m_A |
Pre-exponential factor. More... | |
double | m_b |
Temperature exponent. More... | |
double | m_Ea_R |
Activation energy (in temperature units) More... | |
double | m_E4_R |
Optional 4th energy parameter (in temperature units) More... | |
double | m_logA |
Logarithm of pre-exponential factor. More... | |
double | m_order |
Reaction order. More... | |
std::string | m_A_str = "A" |
The string for temperature exponent. More... | |
std::string | m_b_str = "b" |
The string for temperature exponent. More... | |
std::string | m_Ea_str = "Ea" |
The string for activation energy. More... | |
std::string | m_E4_str = "" |
The string for an optional 4th parameter. More... | |
Units | m_rate_units |
Reaction rate units. More... | |
Protected Attributes inherited from ReactionRate | |
AnyMap | m_input |
Input data used for specific models. More... | |
size_t | m_rate_index |
Index of reaction rate within kinetics evaluator. More... | |
Blowers Masel reaction rate type depends on the enthalpy of reaction.
The Blowers Masel approximation is written by Paul Blowers, Rich Masel (DOI: https://doi.org/10.1002/aic.690461015) to adjust the activation energy based on enthalpy change of a reaction:
\begin{eqnarray*} E_a &=& 0\; \text{if }\Delta H < -4E_0 \\ E_a &=& \Delta H\; \text{if }\Delta H > 4E_0 \\ E_a &=& \frac{(w + \Delta H / 2)(V_P - 2w + \Delta H)^2}{(V_P^2 - 4w^2 + (\Delta H)^2)}\; \text{Otherwise} \end{eqnarray*}
where
\[ V_P = \frac{2w (w + E_0)}{w - E_0}, \]
\( w \) is the average bond dissociation energy of the bond breaking and that being formed in the reaction. Since the expression is very insensitive to \( w \) for \( w >= 2 E_0 \), \( w \) can be approximated to an arbitrary high value like 1000 kJ/mol.
After the activation energy is determined by Blowers-Masel approximation, it can be plugged into Arrhenius function to calculate the rate constant.
\[ k_f = A T^b \exp (-E_a/RT) \]
Definition at line 70 of file BlowersMaselRate.h.
BlowersMaselRate | ( | ) |
Default constructor.
Definition at line 46 of file BlowersMaselRate.cpp.
References ArrheniusBase::m_E4_str, and ArrheniusBase::m_Ea_str.
BlowersMaselRate | ( | double | A, |
double | b, | ||
double | Ea0, | ||
double | w | ||
) |
Constructor.
A | Pre-exponential factor. The unit system is (kmol, m, s); actual units depend on the reaction order and the dimensionality (surface or bulk). |
b | Temperature exponent (non-dimensional) |
Ea0 | Intrinsic activation energy in energy units [J/kmol] |
w | Average bond dissociation energy of the bond being formed and broken in the reaction, in energy units [J/kmol] |
Definition at line 53 of file BlowersMaselRate.cpp.
|
inlineexplicit |
Definition at line 87 of file BlowersMaselRate.h.
|
inlineoverridevirtual |
Create a rate evaluator for reactions of a particular derived type.
Derived classes usually implement this as:
where RateType
is the derived class name and DataType
is the corresponding container for parameters needed to evaluate reactions of that type.
Reimplemented from ReactionRate.
Definition at line 93 of file BlowersMaselRate.h.
|
inlineoverridevirtual |
String identifying reaction rate specialization.
Implements ReactionRate.
Definition at line 97 of file BlowersMaselRate.h.
Set context of reaction rate evaluation.
rxn | Reaction object associated with rate |
kin | Kinetics object used for rate evaluation This method allows for passing of information specific to the associated reaction when a ReactionRate object is added a MultiRate reaction evaluator. |
Reimplemented from ReactionRate.
Definition at line 70 of file BlowersMaselRate.cpp.
References Kinetics::kineticsSpeciesIndex(), BlowersMaselRate::m_stoich_coeffs, Reaction::products, and Reaction::reactants.
|
inline |
Evaluate reaction rate.
Definition at line 104 of file BlowersMaselRate.h.
References BlowersMaselRate::effectiveActivationEnergy_R(), ArrheniusBase::m_A, ArrheniusBase::m_b, and BlowersMaselRate::m_deltaH_R.
|
inline |
Update information specific to reaction.
Definition at line 110 of file BlowersMaselRate.h.
References Cantera::GasConstant, BlowersMaselRate::m_deltaH_R, BlowersMaselRate::m_stoich_coeffs, BlowersMaselData::partialMolarEnthalpies, and BlowersMaselData::ready.
|
inline |
Evaluate reaction rate.
shared_data | data shared by all reactions of a given type |
Definition at line 124 of file BlowersMaselRate.h.
References BlowersMaselRate::effectiveActivationEnergy_R(), ReactionData::logT, ArrheniusBase::m_A, ArrheniusBase::m_b, BlowersMaselRate::m_deltaH_R, and ReactionData::recipT.
double ddTScaledFromStruct | ( | const BlowersMaselData & | shared_data | ) | const |
Evaluate derivative of reaction rate with respect to temperature divided by reaction rate.
This method does not consider potential changes due to a changed reaction enthalpy. A corresponding warning is raised.
shared_data | data shared by all reactions of a given type |
Definition at line 62 of file BlowersMaselRate.cpp.
References BlowersMaselRate::effectiveActivationEnergy_R(), ArrheniusBase::m_b, BlowersMaselRate::m_deltaH_R, ReactionData::recipT, and Cantera::warn_user().
|
inlineprotected |
Return the effective activation energy (a function of the delta H of reaction) divided by the gas constant (that is, the activation temperature) [K].
The enthalpy change of reaction is not an independent parameter
Definition at line 142 of file BlowersMaselRate.h.
References ArrheniusBase::m_E4_R, and ArrheniusBase::m_Ea_R.
Referenced by BlowersMaselRate::activationEnergy(), BlowersMaselRate::ddTScaledFromStruct(), BlowersMaselRate::evalFromStruct(), and BlowersMaselRate::evalRate().
|
inlineoverridevirtual |
Return the activation energy Ea [J/kmol] The value corresponds to the constant specified by input parameters;.
Class specializations may provide alternate definitions that describe an effective activation energy that depends on the thermodynamic state.
Reimplemented from ArrheniusBase.
Definition at line 157 of file BlowersMaselRate.h.
References BlowersMaselRate::effectiveActivationEnergy_R(), Cantera::GasConstant, and BlowersMaselRate::m_deltaH_R.
|
inline |
Return the bond dissociation energy w [J/kmol].
Definition at line 162 of file BlowersMaselRate.h.
References Cantera::GasConstant, and ArrheniusBase::m_E4_R.
|
inline |
Return current enthalpy change of reaction [J/kmol].
Definition at line 167 of file BlowersMaselRate.h.
References Cantera::GasConstant, and BlowersMaselRate::m_deltaH_R.
Referenced by BlowersMaselRate::setDeltaH().
|
inline |
Set current enthalpy change of reaction [J/kmol].
used for testing purposes only; note that this quantity is not an independent variable and will be overwritten during an update of the state.
Definition at line 179 of file BlowersMaselRate.h.
References BlowersMaselRate::deltaH(), Cantera::GasConstant, and BlowersMaselRate::m_deltaH_R.
|
protected |
Pairs of species indices and multiplers to calculate enthalpy change.
Definition at line 185 of file BlowersMaselRate.h.
Referenced by BlowersMaselRate::setContext(), and BlowersMaselRate::updateFromStruct().
|
protected |
enthalpy change of reaction (in temperature units)
Definition at line 187 of file BlowersMaselRate.h.
Referenced by BlowersMaselRate::activationEnergy(), BlowersMaselRate::ddTScaledFromStruct(), BlowersMaselRate::deltaH(), BlowersMaselRate::evalFromStruct(), BlowersMaselRate::evalRate(), BlowersMaselRate::setDeltaH(), and BlowersMaselRate::updateFromStruct().