Cantera
2.1.2
|
Reaction mechanism stoichiometry manager. More...
#include <ReactionStoichMgr.h>
Public Member Functions | |
ReactionStoichMgr () | |
Constructor. More... | |
virtual | ~ReactionStoichMgr () |
Destructor. More... | |
ReactionStoichMgr (const ReactionStoichMgr &right) | |
ReactionStoichMgr & | operator= (const ReactionStoichMgr &right) |
virtual void | add (size_t rxn, const std::vector< size_t > &reactants, const std::vector< size_t > &products, bool reversible) |
Add a reaction with mass-action kinetics. More... | |
virtual void | add (size_t rxn, const ReactionData &r) |
Add a reaction with specified, possibly non-integral, reaction orders. More... | |
virtual void | getCreationRates (size_t nSpecies, const doublereal *fwdRatesOfProgress, const doublereal *revRatesOfProgress, doublereal *creationRates) |
Species creation rates. More... | |
virtual void | getDestructionRates (size_t nSpecies, const doublereal *fwdRatesOfProgress, const doublereal *revRatesOfProgress, doublereal *destructionRates) |
Species destruction rates. More... | |
virtual void | getNetProductionRates (size_t nsp, const doublereal *ropnet, doublereal *w) |
Species net production rates. More... | |
virtual void | getReactionDelta (size_t nReactions, const doublereal *g, doublereal *dg) |
Calculates the change of a molar species property in a reaction. More... | |
virtual void | getRevReactionDelta (size_t nr, const doublereal *g, doublereal *dg) |
Given an array of species properties 'g', return in array 'dg' the change in this quantity in the reversible reactions. More... | |
virtual void | multiplyReactants (const doublereal *C, doublereal *R) |
Given an array of concentrations C, multiply the entries in array R by the concentration products for the reactants. More... | |
virtual void | multiplyRevProducts (const doublereal *c, doublereal *r) |
Given an array of concentrations C, multiply the entries in array R by the concentration products for the products. More... | |
virtual void | write (const std::string &filename) |
Protected Attributes | |
StoichManagerN | m_reactants |
StoichManagerN | m_revproducts |
StoichManagerN | m_irrevproducts |
vector_fp | m_dummy |
Reaction mechanism stoichiometry manager.
This is an internal class used by kinetics manager classes, and is not meant for direct use in user programs.
Class ReactionStoichMgr handles the calculation of quantities involving the stoichiometry of a set of reactions. The reactions may have integer or non-integer stoichiometric coefficients. Specifically, its methods compute
To use this class, method add() is first used to add each reaction. Once all reactions have been added, the methods that compute various quantities may be called.
The nomenclature used below to document the methods is as follows.
Definition at line 56 of file ReactionStoichMgr.h.
Constructor.
Definition at line 20 of file ReactionStoichMgr.cpp.
|
virtual |
Destructor.
Definition at line 25 of file ReactionStoichMgr.cpp.
|
virtual |
Add a reaction with mass-action kinetics.
Vectors 'reactants' and 'products' contain the integer species indices of the reactants and products, respectively. Note that if more than one molecule of a given species is involved in the reaction, then its index is repeated.
For example, suppose a reaction mechanism involves the species N2, O2, O, N, NO. N2 is assigned index number 0, O2 number 1, and so on through NO with number 4. Then the representation of the following reactions is as shown here.
rxn | Reaction number. This number will be used as the index into the rate of progress vector in the methods below. |
reactants | vector of integer reactant indices |
products | vector of integer product indices |
reversible | true if the reaction is reversible, false otherwise |
Definition at line 50 of file ReactionStoichMgr.cpp.
|
virtual |
Add a reaction with specified, possibly non-integral, reaction orders.
rxn | Reaction number |
r | Data structure containing reactant and product vectors, etc. |
Definition at line 65 of file ReactionStoichMgr.cpp.
References ReactionData::global, ReactionData::isReversibleWithFrac, ReactionData::porder, ReactionData::products, ReactionData::pstoich, ReactionData::reactants, ReactionData::reversible, ReactionData::rorder, and ReactionData::rstoich.
|
virtual |
Species creation rates.
Given the arrays of the forward and reverse rates of progress for all reactions, compute the species creation rates, given by
\[ C = N_p Q_f + N_r Q_r. \]
Definition at line 122 of file ReactionStoichMgr.cpp.
Referenced by GasKinetics::getCreationRates(), AqueousKinetics::getCreationRates(), and InterfaceKinetics::getCreationRates().
|
virtual |
Species destruction rates.
Given the arrays of the forward and reverse rates of progress for all reactions, compute the species destruction rates, given by
\[ D = N_r Q_f + N_p Q_r, \]
Note that the stoichiometric coefficient matrices are very sparse, integer matrices.
Definition at line 137 of file ReactionStoichMgr.cpp.
Referenced by GasKinetics::getDestructionRates(), AqueousKinetics::getDestructionRates(), and InterfaceKinetics::getDestructionRates().
|
virtual |
Species net production rates.
Given the array of the net rates of progress for all reactions, compute the species net production rates, given by
\[ W = (N_r - N_p) Q_{\rm net}, \]
Definition at line 148 of file ReactionStoichMgr.cpp.
Referenced by GasKinetics::getNetProductionRates(), AqueousKinetics::getNetProductionRates(), and InterfaceKinetics::getNetProductionRates().
|
virtual |
Calculates the change of a molar species property in a reaction.
Given an array of species properties 'g', return in array 'dg' the change in this quantity in the reactions. Array 'g' must have a length at least as great as the number of species, and array 'dg' must have a length as great as the total number of reactions.
\[ \delta g_i = \sum_k{\nu_{i,k} g_k } \]
nReactions | Number of reactions |
g | Molar property of the species. An example would be the partial molar enthalpy Length is equal to number of kinetic species |
dg | Calculated property change of the reaction. An example would be the delta change in enthalpy, i.e., the enthalpy of reaction. |
Definition at line 159 of file ReactionStoichMgr.cpp.
Referenced by InterfaceKinetics::applyButlerVolmerCorrection(), InterfaceKinetics::getDeltaElectrochemPotentials(), GasKinetics::getDeltaEnthalpy(), AqueousKinetics::getDeltaEnthalpy(), InterfaceKinetics::getDeltaEnthalpy(), GasKinetics::getDeltaEntropy(), AqueousKinetics::getDeltaEntropy(), InterfaceKinetics::getDeltaEntropy(), GasKinetics::getDeltaGibbs(), AqueousKinetics::getDeltaGibbs(), InterfaceKinetics::getDeltaGibbs(), GasKinetics::getDeltaSSEnthalpy(), AqueousKinetics::getDeltaSSEnthalpy(), InterfaceKinetics::getDeltaSSEnthalpy(), GasKinetics::getDeltaSSEntropy(), AqueousKinetics::getDeltaSSEntropy(), InterfaceKinetics::getDeltaSSEntropy(), GasKinetics::getDeltaSSGibbs(), AqueousKinetics::getDeltaSSGibbs(), InterfaceKinetics::getDeltaSSGibbs(), GasKinetics::getEquilibriumConstants(), AqueousKinetics::getEquilibriumConstants(), and InterfaceKinetics::getEquilibriumConstants().
|
virtual |
Given an array of species properties 'g', return in array 'dg' the change in this quantity in the reversible reactions.
Array 'g' must have a length at least as great as the number of species, and array 'dg' must have a length as great as the total number of reactions. This method only computes 'dg' for the reversible reactions, and the entries of 'dg' for the irreversible reactions are unaltered. This is primarily designed for use in calculating reverse rate coefficients from thermochemistry for reversible reactions.
Definition at line 170 of file ReactionStoichMgr.cpp.
Referenced by GasKinetics::updateKc(), AqueousKinetics::updateKc(), and InterfaceKinetics::updateKc().
|
virtual |
Given an array of concentrations C, multiply the entries in array R by the concentration products for the reactants.
\[ R_i = R_i * \prod_k C_k^{o_{k,i}} \]
Here \( o_{k,i} \) is the reaction order of species k in reaction i.
Definition at line 178 of file ReactionStoichMgr.cpp.
Referenced by InterfaceKinetics::updateROP().
|
virtual |
Given an array of concentrations C, multiply the entries in array R by the concentration products for the products.
\[ R_i = R_i * \prod_k C_k^{\nu^{(p)}_{k,i}} \]
Here \( \nu^{(p)}_{k,i} \) is the product stoichiometric coefficient of species k in reaction i.
Definition at line 184 of file ReactionStoichMgr.cpp.
Referenced by InterfaceKinetics::updateROP().