Doxygen updates -> worked on documenting functions

Changed a few functions from private to protected so that
they would be available to derived classes
This commit is contained in:
Harry Moffat 2007-05-14 01:02:57 +00:00
parent 4084343fcf
commit 4b406f06bf
2 changed files with 351 additions and 277 deletions

View file

@ -248,6 +248,52 @@ namespace Cantera {
}
}
// Returns the Species creation rates [kmol/m^2/s].
/*
* Return the species
* creation rates in array cdot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics
* model
*
* @param cdot Vector containing the creation rates.
* length = m_kk. units = kmol/m^2/s
*/
void InterfaceKinetics::getCreationRates(doublereal* cdot) {
updateROP();
m_rxnstoich.getCreationRates(m_kk, &m_kdata->m_ropf[0],
&m_kdata->m_ropr[0], cdot);
}
// Return the Species destruction rates [kmol/m^2/s].
/*
* Return the species destruction rates in array ddot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics model
*/
void InterfaceKinetics::getDestructionRates(doublereal* ddot) {
updateROP();
m_rxnstoich.getDestructionRates(m_kk, &m_kdata->m_ropf[0],
&m_kdata->m_ropr[0], ddot);
}
// Return the species net production rates
/*
* Species net production rates [kmol/m^2/s]. Return the species
* net production rates (creation - destruction) in array
* wdot, which must be dimensioned at least as large as the
* total number of species in all phases of the kinetics
* model
*
* @param net Vector of species production rates.
* units kmol m-d s-1, where d is dimension.
*/
void InterfaceKinetics::getNetProductionRates(doublereal* net) {
updateROP();
m_rxnstoich.getNetProductionRates(m_kk,
&m_kdata->m_ropnet[0],
net);
}
/**
* For reactions that transfer charge across a potential difference,
@ -661,108 +707,99 @@ namespace Cantera {
// }
void InterfaceKinetics::installReagents(const ReactionData& r) {
void InterfaceKinetics::installReagents(const ReactionData& r) {
int n, ns, m;
doublereal nsFlt;
/*
* extend temporary storage by one for this rxn.
*/
m_kdata->m_ropf.push_back(0.0);
m_kdata->m_ropr.push_back(0.0);
m_kdata->m_ropnet.push_back(0.0);
m_kdata->m_rkcn.push_back(0.0);
int n, ns, m;
doublereal nsFlt;
/*
* extend temporary storage by one for this rxn.
*/
m_kdata->m_ropf.push_back(0.0);
m_kdata->m_ropr.push_back(0.0);
m_kdata->m_ropnet.push_back(0.0);
m_kdata->m_rkcn.push_back(0.0);
/*
* Obtain the current reaction index for the reaction that we
* are adding. The first reaction is labeled 0.
*/
int rnum = reactionNumber();
/*
* Obtain the current reaction index for the reaction that we
* are adding. The first reaction is labeled 0.
*/
int rnum = reactionNumber();
// vectors rk and pk are lists of species numbers, with
// repeated entries for species with stoichiometric
// coefficients > 1. This allows the reaction to be defined
// with unity reaction order for each reactant, and so the
// faster method 'multiply' can be used to compute the rate of
// progress instead of 'power'.
// vectors rk and pk are lists of species numbers, with
// repeated entries for species with stoichiometric
// coefficients > 1. This allows the reaction to be defined
// with unity reaction order for each reactant, and so the
// faster method 'multiply' can be used to compute the rate of
// progress instead of 'power'.
vector_int rk;
int nr = r.reactants.size();
for (n = 0; n < nr; n++) {
nsFlt = r.rstoich[n];
ns = (int) nsFlt;
if ((doublereal) ns != nsFlt) {
if (ns < 1) ns = 1;
}
/*
* Add to m_rrxn. m_rrxn is a vector of maps. m_rrxn has a length
* equal to the total number of species for each species, there
* exists a map, with the reaction number being the key, and the
* reactant stoichiometric coefficient being the value.
*/
m_rrxn[r.reactants[n]][rnum] = ns;
for (m = 0; m < ns; m++) {
rk.push_back(r.reactants[n]);
}
}
/*
* Now that we have rk[], we add it into the vector<vector_int> m_reactants
* in the rnum index spot. Thus m_reactants[rnum] yields a vector
* of reactants for the rnum'th reaction
*/
m_reactants.push_back(rk);
vector_int pk;
int np = r.products.size();
for (n = 0; n < np; n++) {
nsFlt = r.pstoich[n];
ns = (int) nsFlt;
if ((doublereal) ns != nsFlt) {
if (ns < 1) ns = 1;
}
/*
* Add to m_prxn. m_prxn is a vector of maps. m_prxn has a length
* equal to the total number of species for each species, there
* exists a map, with the reaction number being the key, and the
* product stoichiometric coefficient being the value.
*/
m_prxn[r.products[n]][rnum] = ns;
for (m = 0; m < ns; m++) {
pk.push_back(r.products[n]);
}
}
/*
* Now that we have pk[], we add it into the vector<vector_int> m_products
* in the rnum index spot. Thus m_products[rnum] yields a vector
* of products for the rnum'th reaction
*/
m_products.push_back(pk);
/*
* Add this reaction to the stoichiometric coefficient manager. This
* calculates rates of species production from reaction rates of
* progress.
*/
m_rxnstoich.add( reactionNumber(), r);
/*
* register reaction in lists of reversible and irreversible rxns.
*/
if (r.reversible) {
m_revindex.push_back(reactionNumber());
m_nrev++;
} else {
m_irrev.push_back( reactionNumber() );
m_nirrev++;
}
vector_int rk;
int nr = r.reactants.size();
for (n = 0; n < nr; n++) {
nsFlt = r.rstoich[n];
ns = (int) nsFlt;
if ((doublereal) ns != nsFlt) {
if (ns < 1) ns = 1;
}
/*
* Add to m_rrxn. m_rrxn is a vector of maps. m_rrxn has a length
* equal to the total number of species for each species, there
* exists a map, with the reaction number being the key, and the
* reactant stoichiometric coefficient being the value.
*/
m_rrxn[r.reactants[n]][rnum] = nsFlt;
for (m = 0; m < ns; m++) {
rk.push_back(r.reactants[n]);
}
}
//void InterfaceKinetics::installGroups(int irxn,
// const vector<grouplist_t>& r, const vector<grouplist_t>& p) {
// if (!r.empty()) {
// m_rgroups[reactionNumber()] = r;
// m_pgroups[reactionNumber()] = p;
// }
//}
/*
* Now that we have rk[], we add it into the vector<vector_int> m_reactants
* in the rnum index spot. Thus m_reactants[rnum] yields a vector
* of reactants for the rnum'th reaction
*/
m_reactants.push_back(rk);
vector_int pk;
int np = r.products.size();
for (n = 0; n < np; n++) {
nsFlt = r.pstoich[n];
ns = (int) nsFlt;
if ((doublereal) ns != nsFlt) {
if (ns < 1) ns = 1;
}
/*
* Add to m_prxn. m_prxn is a vector of maps. m_prxn has a length
* equal to the total number of species for each species, there
* exists a map, with the reaction number being the key, and the
* product stoichiometric coefficient being the value.
*/
m_prxn[r.products[n]][rnum] = nsFlt;
for (m = 0; m < ns; m++) {
pk.push_back(r.products[n]);
}
}
/*
* Now that we have pk[], we add it into the vector<vector_int> m_products
* in the rnum index spot. Thus m_products[rnum] yields a vector
* of products for the rnum'th reaction
*/
m_products.push_back(pk);
/*
* Add this reaction to the stoichiometric coefficient manager. This
* calculates rates of species production from reaction rates of
* progress.
*/
m_rxnstoich.add( reactionNumber(), r);
/*
* register reaction in lists of reversible and irreversible rxns.
*/
if (r.reversible) {
m_revindex.push_back(reactionNumber());
m_nrev++;
} else {
m_irrev.push_back( reactionNumber() );
m_nirrev++;
}
}
/**
* Prepare the class for the addition of reactions. This function
@ -826,9 +863,3 @@ namespace Cantera {
}

View file

@ -88,43 +88,56 @@ namespace Cantera {
virtual int ID() { return cInterfaceKinetics; }
virtual int type() { return cInterfaceKinetics; }
///
/// @name Reaction Rates Of Progress
///
//@{
///
/// @name Reaction Rates Of Progress
///
//@{
//! Return the forward rates of progress for each reaction
/*!
* @param fwdROP vector of rates of progress.
* length = number of reactions, Units are kmol m-2 s-1.
*/
virtual void getFwdRatesOfProgress(doublereal* fwdROP) {
updateROP();
std::copy(m_kdata->m_ropf.begin(), m_kdata->m_ropf.end(), fwdROP);
}
//! Return the reverse rates of progress for each reaction
/*!
* @param revROP vector of rates of progress.
* length = number of reactions, Units are kmol m-2 s-1.
*/
virtual void getRevRatesOfProgress(doublereal* revROP) {
updateROP();
std::copy(m_kdata->m_ropr.begin(), m_kdata->m_ropr.end(), revROP);
}
//! Return the net rates of progress for each reaction
/*!
* @param netROP vector of rates of progress.
* length = number of reactions, Units are kmol m-2 s-1.
*/
virtual void getNetRatesOfProgress(doublereal* netROP) {
updateROP();
std::copy(m_kdata->m_ropnet.begin(), m_kdata->m_ropnet.end(), netROP);
}
virtual void getEquilibriumConstants(doublereal* kc);
virtual void getFwdRatesOfProgress(doublereal* fwdROP) {
updateROP();
std::copy(m_kdata->m_ropf.begin(), m_kdata->m_ropf.end(), fwdROP);
}
virtual void getDeltaGibbs( doublereal* deltaG);
virtual void getRevRatesOfProgress(doublereal* revROP) {
updateROP();
std::copy(m_kdata->m_ropr.begin(), m_kdata->m_ropr.end(), revROP);
}
virtual void getNetRatesOfProgress(doublereal* netROP) {
updateROP();
std::copy(m_kdata->m_ropnet.begin(), m_kdata->m_ropnet.end(), netROP);
}
virtual void getEquilibriumConstants(doublereal* kc);
virtual void getDeltaGibbs( doublereal* deltaG);
/**
* Return the vector of values for the reactions change in
* enthalpy.
* These values depend upon the concentration
* of the solution.
*
* units = J kmol-1
*/
virtual void getDeltaEnthalpy( doublereal* deltaH);
/**
* Return the vector of values for the reactions change in
* enthalpy.
* These values depend upon the concentration
* of the solution.
*
* units = J kmol-1
*/
virtual void getDeltaEnthalpy( doublereal* deltaH);
//! Return the vector of values for the change in
//! entropy due to each reaction
/*!
@ -139,72 +152,73 @@ namespace Cantera {
*/
virtual void getDeltaEntropy(doublereal* deltaS);
/**
* Return the vector of values for the reaction
* standard state gibbs free energy change.
* These values don't depend upon the concentration
* of the solution.
*
* units = J kmol-1
*/
virtual void getDeltaSSGibbs(doublereal* deltaG);
/**
* Return the vector of values for the change in the
* standard state enthalpies of reaction.
* These values don't depend upon the concentration
* of the solution.
*
* units = J kmol-1
*/
virtual void getDeltaSSEnthalpy(doublereal* deltaH);
//! Return the vector of values for the reaction
//! standard state gibbs free energy change.
/*!
* These values don't depend upon the concentration
* of the solution.
*
* @param deltaG vector of rxn SS free energy changes
* units = J kmol-1
*/
virtual void getDeltaSSGibbs(doublereal* deltaG);
//! Return the vector of values for the change in the
//! standard state enthalpies of reaction.
/*!
* These values don't depend upon the concentration
* of the solution.
*
* @param deltaH vector of rxn SS enthalpy changes
* units = J kmol-1
*/
virtual void getDeltaSSEnthalpy(doublereal* deltaH);
//! Return the vector of values for the change in the
//! standard state entropies for each reaction.
/*!
* These values don't depend upon the concentration
* of the solution.
*
* @param deltaS vector of rxn SS entropy changes
* units = J kmol-1 Kelvin-1
*/
virtual void getDeltaSSEntropy(doublereal* deltaS);
/**
* Return the vector of values for the change in the
* standard state entropies for each reaction.
* These values don't depend upon the concentration
* of the solution.
*
* units = J kmol-1 Kelvin-1
*/
virtual void getDeltaSSEntropy(doublereal* deltaS);
//@}
/**
* @name Species Production Rates
*/
//@{
/**
* Species creation rates [kmol/m^2/s]. Return the species
* creation rates in array cdot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics
* model
*
*/
virtual void getCreationRates(doublereal* cdot) {
updateROP();
m_rxnstoich.getCreationRates(m_kk, &m_kdata->m_ropf[0],
&m_kdata->m_ropr[0], cdot);
}
/**
* Species destruction rates [kmol/m^2/s]. Return the species
* destruction rates in array ddot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics
* model
*
*/
virtual void getDestructionRates(doublereal* ddot) {
updateROP();
m_rxnstoich.getDestructionRates(m_kk, &m_kdata->m_ropf[0],
&m_kdata->m_ropr[0], ddot);
}
//! Return the species net production rates
//@}
/**
* @name Species Production Rates
*/
//@{
//! Returns the Species creation rates [kmol/m^2/s].
/*!
* Return the species
* creation rates in array cdot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics
* model
*
* @param cdot Vector containing creation rates.
* length = m_kk. units = kmol/m^2/s
*/
virtual void getCreationRates(doublereal* cdot);
//! Return the Species destruction rates [kmol/m^2/s].
/*!
* Return the species destruction rates in array ddot, which must be
* dimensioned at least as large as the total number of
* species in all phases of the kinetics model
*
* @param ddot Vector containing destruction rates.
* length = m_kk. units = kmol/m^2/s
*/
virtual void getDestructionRates(doublereal* ddot);
//! Return the species net production rates [kmol/m^2/s].
/*!
* Species net production rates [kmol/m^2/s]. Return the species
* net production rates (creation - destruction) in array
@ -215,18 +229,13 @@ namespace Cantera {
* @param net Vector of species production rates.
* units kmol m-d s-1, where d is dimension.
*/
virtual void getNetProductionRates(doublereal* net) {
updateROP();
m_rxnstoich.getNetProductionRates(m_kk,
&m_kdata->m_ropnet[0],
net);
}
virtual void getNetProductionRates(doublereal* net);
//@}
/**
* @name Reaction Mechanism Informational Query Routines
*/
//@{
//@}
/**
* @name Reaction Mechanism Informational Query Routines
*/
//@{
/**
* Stoichiometric coefficient of species k as a reactant in
@ -279,26 +288,29 @@ namespace Cantera {
virtual void getActivationEnergies(doublereal *E);
//@}
/**
* @name Reaction Mechanism Construction
*/
//@{
//@}
/**
* @name Reaction Mechanism Construction
*/
//@{
//! Prepare the class for the addition of reactions.
/*!
* This function must be called after instantiation of the class, but before
* any reactions are actually added to the mechanism.
* This function calculates m_kk the number of species in all
* phases participating in the reaction mechanism. We don't know
* m_kk previously, before all phases have been added.
*/
virtual void init();
/**
* Prepare the class for the addition of reactions. This function
* must be called after instantiation of the class, but before
* any reactions are actually added to the mechanism.
* This function calculates m_kk the number of species in all
* phases participating in the reaction mechanism. We don't know
* m_kk previously, before all phases have been added.
*/
virtual void init();
/**
* Add a single reaction to the mechanism.
*/
virtual void addReaction(const ReactionData& r);
//! Add a single reaction to the mechanism.
/*!
* @param r Reference to a ReactionData object containing all of
* the info needed to describe the reaction.
*/
virtual void addReaction(const ReactionData& r);
//! Finish adding reactions and prepare for use.
@ -309,16 +321,12 @@ namespace Cantera {
*/
virtual void finalize();
virtual bool ready() const;
virtual bool ready() const;
void updateROP();
void updateROP();
//const std::vector<grouplist_t>& reactantGroups(int i)
// { return m_rgroups[i]; }
//const std::vector<grouplist_t>& productGroups(int i)
// { return m_pgroups[i]; }
void _update_rates_T();
void _update_rates_phi();
@ -326,12 +334,14 @@ namespace Cantera {
void advanceCoverages(doublereal tstep);
void checkPartialEquil();
vector_fp m_grt;
//! Temporary work vector of length m_kk
vector_fp m_grt;
protected:
//! m_kk here is the number of species in all of the phases
//! that participate in the kinetics mechanism.
//! m_kk is the number of species in all of the phases
//! that participate in this kinetics mechanism.
int m_kk;
//! List of reactions numbers which are reversible reactions
@ -354,41 +364,61 @@ namespace Cantera {
*/
mutable std::map<int, std::pair<int, int> > m_index;
std::vector<int> m_irrev;
//! Vector of irreversible reaction numbers
/*!
* vector containing the reaction numbers of irreversible
* reactions.
*/
std::vector<int> m_irrev;
ReactionStoichMgr m_rxnstoich;
//! Stoichiometric manager for the reaction mechanism
/*!
* This is the manager for the kinetics mechanism that
* handles turning reaction extents into species
* production rates and also handles turning thermo
* properties into reaction thermo properties.
*/
ReactionStoichMgr m_rxnstoich;
int m_nirrev;
//! Number of irreversible reactions in the mechanism
int m_nirrev;
/**
* Number of reversible reactions in the mechanism
*/
int m_nrev;
//! Number of reversible reactions in the mechanism
int m_nrev;
std::vector<int> m_rxntype;
//! m_rrxn is a vector of maps, containing the reactant
//! stochiometric coefficient information
/*!
* m_rrxn has a length
* equal to the total number of species in the kinetics
* object. For each species, there exists a map, with the
* reaction number being the key, and the
* reactant stoichiometric coefficient for the species being the value.
* HKM -> mutable because search sometimes creates extra
* entries. To be fixed in future...
*/
mutable std::vector<std::map<int, doublereal> > m_rrxn;
//! m_prxn is a vector of maps, containing the reactant
//! stochiometric coefficient information
/**
* m_prxn is a vector of maps. m_prxn has a length
* equal to the total number of species in the kinetics
* object. For each species, there exists a map, with the
* reaction number being the key, and the
* product stoichiometric coefficient for the species being the value.
*/
mutable std::vector<std::map<int, doublereal> > m_prxn;
/**
* m_rrxn is a vector of maps. m_rrxn has a length
* equal to the total number of species in the kinetics
* object. For each species, there exists a map, with the
* reaction number being the key, and the
* reactant stoichiometric coefficient being the value.
* HKM -> mutable because search sometimes creates extra
* entries. To be fixed in future...
*/
mutable std::vector<std::map<int, doublereal> > m_rrxn;
/**
* m_rrxn is a vector of maps. m_rrxn has a length
* equal to the total number of species in the kinetics
* object. For each species, there exists a map, with the
* reaction number being the key, and the
* product stoichiometric coefficient being the value.
*/
mutable std::vector<std::map<int, doublereal> > m_prxn;
std::vector<std::string> m_rxneqn;
//! String expression for each rxn
/*!
* Vector of strings of length m_ii, the number of
* reactions, containing the
* string expressions for each reaction
* (e.g., reactants <=> product1 + product2)
*/
std::vector<std::string> m_rxneqn;
/**
* Temporary data storage used in calculating the rates of
@ -453,23 +483,36 @@ namespace Cantera {
*/
vector_fp m_E;
SurfPhase* m_surf;
ImplicitSurfChem* m_integrator;
//! Pointer to the surface phase
SurfPhase* m_surf;
private:
//! Pointer to the surface solver
ImplicitSurfChem* m_integrator;
public:
int reactionNumber(){ return m_ii;}
protected:
void addElementaryReaction(const ReactionData& r);
void addGlobalReaction(const ReactionData& r);
void installReagents(const ReactionData& r);
private:
void updateKc();
void registerReaction(int rxnNumber, int type, int loc) {
m_index[rxnNumber] = std::pair<int, int>(type, loc);
}
void applyButlerVolmerCorrection(doublereal* kf);
//! Write values into m_index
/*!
* @param rxnNumber reaction number
* @param type reaction type
* @param loc location ??
*/
void registerReaction(int rxnNumber, int type, int loc) {
m_index[rxnNumber] = std::pair<int, int>(type, loc);
}
void applyButlerVolmerCorrection(doublereal* kf);
protected:
//! boolean indicating whether mechanism has been finalized
bool m_finalized;
bool m_has_coverage_dependence;