Clean up interstitial whitespace
Remove extra space around operators, between words, etc.
This commit is contained in:
parent
6a04193646
commit
acdf9cf0ed
291 changed files with 3510 additions and 3516 deletions
|
|
@ -135,7 +135,7 @@ public:
|
||||||
m_ncols++;
|
m_ncols++;
|
||||||
m_data.resize(m_nrows*m_ncols);
|
m_data.resize(m_nrows*m_ncols);
|
||||||
size_t m;
|
size_t m;
|
||||||
for (m = 0; m < m_nrows; m++) {
|
for (m = 0; m < m_nrows; m++) {
|
||||||
value(m_ncols, m) = c[m];
|
value(m_ncols, m) = c[m];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -152,7 +152,7 @@ public:
|
||||||
m_ncols++;
|
m_ncols++;
|
||||||
m_data.resize(m_nrows*m_ncols);
|
m_data.resize(m_nrows*m_ncols);
|
||||||
size_t m;
|
size_t m;
|
||||||
for (m = 0; m < m_nrows; m++) {
|
for (m = 0; m < m_nrows; m++) {
|
||||||
value(m_ncols, m) = c[m];
|
value(m_ncols, m) = c[m];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -171,7 +171,7 @@ public:
|
||||||
//! Get the nth row and return it in a vector
|
//! Get the nth row and return it in a vector
|
||||||
/*!
|
/*!
|
||||||
* @param n Index of the row to be returned.
|
* @param n Index of the row to be returned.
|
||||||
* @param rw Return Vector for the operation.
|
* @param rw Return Vector for the operation.
|
||||||
* Must have a length of m_ncols.
|
* Must have a length of m_ncols.
|
||||||
*/
|
*/
|
||||||
void getRow(size_t n, doublereal* const rw) {
|
void getRow(size_t n, doublereal* const rw) {
|
||||||
|
|
@ -277,7 +277,7 @@ public:
|
||||||
|
|
||||||
//! Returns the value of a single matrix entry
|
//! Returns the value of a single matrix entry
|
||||||
/*!
|
/*!
|
||||||
* This is a key entry. Returns the value of the matrix position (i,j)
|
* This is a key entry. Returns the value of the matrix position (i,j)
|
||||||
* element.
|
* element.
|
||||||
*
|
*
|
||||||
* @param i The row index
|
* @param i The row index
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@ public:
|
||||||
//! static function that deletes all factories
|
//! static function that deletes all factories
|
||||||
//! in the internal registry maintained in a static variable
|
//! in the internal registry maintained in a static variable
|
||||||
static void deleteFactories() {
|
static void deleteFactories() {
|
||||||
std::vector< FactoryBase* >::iterator iter ;
|
std::vector< FactoryBase* >::iterator iter;
|
||||||
for (iter = s_vFactoryRegistry.begin();
|
for (iter = s_vFactoryRegistry.begin();
|
||||||
iter != s_vFactoryRegistry.end();
|
iter != s_vFactoryRegistry.end();
|
||||||
++iter) {
|
++iter) {
|
||||||
(*iter)->deleteFactory() ;
|
(*iter)->deleteFactory();
|
||||||
}
|
}
|
||||||
s_vFactoryRegistry.clear() ;
|
s_vFactoryRegistry.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -42,18 +42,18 @@ protected:
|
||||||
* Adds the current object to the current static list
|
* Adds the current object to the current static list
|
||||||
*/
|
*/
|
||||||
FactoryBase() {
|
FactoryBase() {
|
||||||
s_vFactoryRegistry.push_back(this) ;
|
s_vFactoryRegistry.push_back(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Virtual abstract function that deletes the factory
|
//! Virtual abstract function that deletes the factory
|
||||||
/*!
|
/*!
|
||||||
* This must be properly defined in child objects.
|
* This must be properly defined in child objects.
|
||||||
*/
|
*/
|
||||||
virtual void deleteFactory() = 0 ;
|
virtual void deleteFactory() = 0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! statically held list of Factories.
|
//! statically held list of Factories.
|
||||||
static std::vector<FactoryBase*> s_vFactoryRegistry ;
|
static std::vector<FactoryBase*> s_vFactoryRegistry;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,11 +88,11 @@ private:
|
||||||
clock_t start_ticks;
|
clock_t start_ticks;
|
||||||
|
|
||||||
//! internal constant containing clock ticks per second
|
//! internal constant containing clock ticks per second
|
||||||
const double inv_clocks_per_sec;
|
const double inv_clocks_per_sec;
|
||||||
|
|
||||||
//! internal constant containing the total number of ticks
|
//! internal constant containing the total number of ticks
|
||||||
//! per rollover.
|
//! per rollover.
|
||||||
const double clock_width;
|
const double clock_width;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,9 @@
|
||||||
// corresponding Fortran data types on your system. The defaults
|
// corresponding Fortran data types on your system. The defaults
|
||||||
// are OK for most systems
|
// are OK for most systems
|
||||||
|
|
||||||
typedef double doublereal; // Fortran double precision
|
typedef double doublereal; // Fortran double precision
|
||||||
typedef int integer; // Fortran integer
|
typedef int integer; // Fortran integer
|
||||||
typedef int ftnlen; // Fortran hidden string length type
|
typedef int ftnlen; // Fortran hidden string length type
|
||||||
|
|
||||||
// Fortran compilers pass character strings in argument lists by
|
// Fortran compilers pass character strings in argument lists by
|
||||||
// adding a hidden argument with the length of the string. Some
|
// adding a hidden argument with the length of the string. Some
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ const doublereal Planck = 6.62607009e-34; // J-s
|
||||||
const doublereal Planck_bar = Planck / (2 * Pi); // m2-kg/s
|
const doublereal Planck_bar = Planck / (2 * Pi); // m2-kg/s
|
||||||
|
|
||||||
/// log(k/h)
|
/// log(k/h)
|
||||||
const doublereal logBoltz_Planck = std::log(Boltzmann / Planck); // ln(k_B/h)
|
const doublereal logBoltz_Planck = std::log(Boltzmann / Planck); // ln(k_B/h)
|
||||||
/// Stefan-Boltzmann constant
|
/// Stefan-Boltzmann constant
|
||||||
const doublereal StefanBoltz = 5.670373e-8;
|
const doublereal StefanBoltz = 5.670373e-8;
|
||||||
|
|
||||||
|
|
@ -154,9 +154,9 @@ typedef std::map<std::string, doublereal> Composition;
|
||||||
|
|
||||||
//! Turn on the use of stl vectors for the basic array type within cantera
|
//! Turn on the use of stl vectors for the basic array type within cantera
|
||||||
//! Vector of doubles.
|
//! Vector of doubles.
|
||||||
typedef std::vector<double> vector_fp;
|
typedef std::vector<double> vector_fp;
|
||||||
//! Vector of ints
|
//! Vector of ints
|
||||||
typedef std::vector<int> vector_int;
|
typedef std::vector<int> vector_int;
|
||||||
|
|
||||||
//! A grouplist is a vector of groups of species
|
//! A grouplist is a vector of groups of species
|
||||||
typedef std::vector<std::vector<size_t> > grouplist_t;
|
typedef std::vector<std::vector<size_t> > grouplist_t;
|
||||||
|
|
@ -164,6 +164,6 @@ typedef std::vector<std::vector<size_t> > grouplist_t;
|
||||||
//! index returned by functions to indicate "no position"
|
//! index returned by functions to indicate "no position"
|
||||||
const size_t npos = static_cast<size_t>(-1);
|
const size_t npos = static_cast<size_t>(-1);
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace Cantera
|
||||||
*
|
*
|
||||||
* A group of defines may be used during debugging to assert
|
* A group of defines may be used during debugging to assert
|
||||||
* conditions which should be true. These are named AssertTrace(),
|
* conditions which should be true. These are named AssertTrace(),
|
||||||
* AssertThrow(), and AssertThrowMsg(). Examples of their usage is
|
* AssertThrow(), and AssertThrowMsg(). Examples of their usage is
|
||||||
* given below.
|
* given below.
|
||||||
*
|
*
|
||||||
* @code
|
* @code
|
||||||
|
|
@ -200,7 +200,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* This is a std:string containing the file name and the line number
|
* This is a std:string containing the file name and the line number
|
||||||
*/
|
*/
|
||||||
#define STR_TRACE (std::string(__FILE__) + ":" + XSTR_TRACE_LINE(__LINE__))
|
#define STR_TRACE (std::string(__FILE__) + ":" + XSTR_TRACE_LINE(__LINE__))
|
||||||
|
|
||||||
#ifdef NDEBUG
|
#ifdef NDEBUG
|
||||||
#ifndef AssertTrace
|
#ifndef AssertTrace
|
||||||
|
|
@ -217,7 +217,7 @@ public:
|
||||||
//! Assertion must be true or an error is thrown
|
//! Assertion must be true or an error is thrown
|
||||||
/*!
|
/*!
|
||||||
* Assertion must be true or else a CanteraError is thrown. A diagnostic string containing the
|
* Assertion must be true or else a CanteraError is thrown. A diagnostic string containing the
|
||||||
* file and line number, indicating where the error
|
* file and line number, indicating where the error
|
||||||
* occurred is added to the thrown object.
|
* occurred is added to the thrown object.
|
||||||
*
|
*
|
||||||
* @param expr Boolean expression that must be true
|
* @param expr Boolean expression that must be true
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,7 @@ void addFloatArray(XML_Node& node, const std::string& titleString,
|
||||||
* @code
|
* @code
|
||||||
* const XML_Node &node;
|
* const XML_Node &node;
|
||||||
* std::string titleString = "additionalTemperatures";
|
* std::string titleString = "additionalTemperatures";
|
||||||
* int n = 3;
|
* int n = 3;
|
||||||
* int Tcases[3] = [273.15, 298.15, 373.15];
|
* int Tcases[3] = [273.15, 298.15, 373.15];
|
||||||
* std::string typeString = "optional";
|
* std::string typeString = "optional";
|
||||||
* std::string units = "Kelvin";
|
* std::string units = "Kelvin";
|
||||||
|
|
@ -241,11 +241,11 @@ void addNamedFloatArray(XML_Node& parentNode, const std::string& name, const siz
|
||||||
void addString(XML_Node& node, const std::string& titleString,
|
void addString(XML_Node& node, const std::string& titleString,
|
||||||
const std::string& valueString, const std::string& typeString="");
|
const std::string& valueString, const std::string& typeString="");
|
||||||
|
|
||||||
//! This function reads the current node or a child node of the current node
|
//! This function reads the current node or a child node of the current node
|
||||||
//! with the default name, "floatArray", with a value field
|
//! with the default name, "floatArray", with a value field
|
||||||
//! consisting of a comma separated list of floats
|
//! consisting of a comma separated list of floats
|
||||||
/*!
|
/*!
|
||||||
* This function will read either the current XML node or a child node to the
|
* This function will read either the current XML node or a child node to the
|
||||||
* current XML node, with the name "floatArray". It will have a title
|
* current XML node, with the name "floatArray". It will have a title
|
||||||
* attribute, and the body of the XML node will be filled out with a comma
|
* attribute, and the body of the XML node will be filled out with a comma
|
||||||
* separated list of doublereals. Get an array of floats from the XML Node.
|
* separated list of doublereals. Get an array of floats from the XML Node.
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
* @ingroup utils
|
* @ingroup utils
|
||||||
*
|
*
|
||||||
* These functions store
|
* These functions store
|
||||||
* some parameters in global storage that are accessible at all times
|
* some parameters in global storage that are accessible at all times
|
||||||
* from the calling application.
|
* from the calling application.
|
||||||
* Contains module definitions for
|
* Contains module definitions for
|
||||||
* - inputfiles (see \ref inputfiles)
|
* - inputfiles (see \ref inputfiles)
|
||||||
|
|
@ -115,7 +115,7 @@ void addDirectory(const std::string& dir);
|
||||||
void appdelete();
|
void appdelete();
|
||||||
|
|
||||||
//! @copydoc Application::thread_complete
|
//! @copydoc Application::thread_complete
|
||||||
void thread_complete() ;
|
void thread_complete();
|
||||||
|
|
||||||
//! Returns root directory where %Cantera is installed
|
//! Returns root directory where %Cantera is installed
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Cantera
|
||||||
/// stream, but classes may be derived from Logger that implement
|
/// stream, but classes may be derived from Logger that implement
|
||||||
/// other output options. This is important when Cantera is used
|
/// other output options. This is important when Cantera is used
|
||||||
/// in applications that do not display the standard output, such
|
/// in applications that do not display the standard output, such
|
||||||
/// as MATLAB. The Cantera MATLAB interface derives a class from
|
/// as MATLAB. The Cantera MATLAB interface derives a class from
|
||||||
/// Logger that implements these methods with MATLAB-specific
|
/// Logger that implements these methods with MATLAB-specific
|
||||||
/// procedures, insuring that the messages will be passed through
|
/// procedures, insuring that the messages will be passed through
|
||||||
/// to the user. It would also be possible to derive a class that
|
/// to the user. It would also be possible to derive a class that
|
||||||
|
|
|
||||||
|
|
@ -308,7 +308,7 @@ inline void sum_each(OutputIter x_begin, OutputIter x_end,
|
||||||
* Example:
|
* Example:
|
||||||
*
|
*
|
||||||
* \code
|
* \code
|
||||||
* vector<double> x(3), y(20), ;
|
* vector<double> x(3), y(20);
|
||||||
* vector<int> index(3);
|
* vector<int> index(3);
|
||||||
* index[0] = 9;
|
* index[0] = 9;
|
||||||
* index[1] = 2;
|
* index[1] = 2;
|
||||||
|
|
|
||||||
|
|
@ -395,7 +395,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param n Number of the child to return
|
* @param n Number of the child to return
|
||||||
*/
|
*/
|
||||||
XML_Node& child(const size_t n) const ;
|
XML_Node& child(const size_t n) const;
|
||||||
|
|
||||||
//! Return an unchangeable reference to the vector of children of the current node
|
//! Return an unchangeable reference to the vector of children of the current node
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -540,7 +540,7 @@ public:
|
||||||
*/
|
*/
|
||||||
std::vector<XML_Node*> getChildren(const std::string& name) const;
|
std::vector<XML_Node*> getChildren(const std::string& name) const;
|
||||||
|
|
||||||
//! Return a changeable reference to a child of the current node, named by the argument
|
//! Return a changeable reference to a child of the current node, named by the argument
|
||||||
/*!
|
/*!
|
||||||
* Note the underlying data allows for more than one XML element with the same name.
|
* Note the underlying data allows for more than one XML element with the same name.
|
||||||
* This routine returns the first child with the given name.
|
* This routine returns the first child with the given name.
|
||||||
|
|
@ -709,7 +709,7 @@ protected:
|
||||||
/*!
|
/*!
|
||||||
* Search for a phase Node matching a name.
|
* Search for a phase Node matching a name.
|
||||||
*
|
*
|
||||||
* @param root Starting XML_Node* pointer for the search
|
* @param root Starting XML_Node* pointer for the search
|
||||||
* @param phaseName Name of the phase to search for
|
* @param phaseName Name of the phase to search for
|
||||||
*
|
*
|
||||||
* @return Returns the XML_Node pointer if the phase is found.
|
* @return Returns the XML_Node pointer if the phase is found.
|
||||||
|
|
|
||||||
|
|
@ -32,10 +32,10 @@ public:
|
||||||
iterations(0),
|
iterations(0),
|
||||||
maxStepSize(10.0), propertyPair(TP), contin(false) {}
|
maxStepSize(10.0), propertyPair(TP), contin(false) {}
|
||||||
|
|
||||||
doublereal relTolerance; ///< Relative tolerance
|
doublereal relTolerance; ///< Relative tolerance
|
||||||
doublereal absElemTol; ///< Abs Tol in element number
|
doublereal absElemTol; ///< Abs Tol in element number
|
||||||
int maxIterations; ///< Maximum number of iterations
|
int maxIterations; ///< Maximum number of iterations
|
||||||
int iterations; ///< Iteration counter
|
int iterations; ///< Iteration counter
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maximum step size. Largest change in any element potential or
|
* Maximum step size. Largest change in any element potential or
|
||||||
|
|
@ -77,7 +77,7 @@ class PropertyCalculator;
|
||||||
* chemical equilibrium. Non-stoichiometric methods are faster
|
* chemical equilibrium. Non-stoichiometric methods are faster
|
||||||
* when they converge, but stoichiometric ones tend to be more
|
* when they converge, but stoichiometric ones tend to be more
|
||||||
* robust and can be used also for problems with multiple
|
* robust and can be used also for problems with multiple
|
||||||
* condensed phases. As expected, the ChemEquil solver is faster
|
* condensed phases. As expected, the ChemEquil solver is faster
|
||||||
* than MultiPhaseEquil for many single-phase equilibrium
|
* than MultiPhaseEquil for many single-phase equilibrium
|
||||||
* problems (particularly if there are only a few elements but
|
* problems (particularly if there are only a few elements but
|
||||||
* very many species), but can be less stable. Problem
|
* very many species), but can be less stable. Problem
|
||||||
|
|
@ -153,7 +153,7 @@ protected:
|
||||||
* means that the 2 ThermoPhases have to have consist of the same
|
* means that the 2 ThermoPhases have to have consist of the same
|
||||||
* species and elements.
|
* species and elements.
|
||||||
*/
|
*/
|
||||||
thermo_t* m_phase;
|
thermo_t* m_phase;
|
||||||
|
|
||||||
//! number of atoms of element m in species k.
|
//! number of atoms of element m in species k.
|
||||||
doublereal nAtoms(size_t k, size_t m) const {
|
doublereal nAtoms(size_t k, size_t m) const {
|
||||||
|
|
@ -183,7 +183,7 @@ protected:
|
||||||
int setInitialMoles(thermo_t& s, vector_fp& elMoleGoal, int loglevel = 0);
|
int setInitialMoles(thermo_t& s, vector_fp& elMoleGoal, int loglevel = 0);
|
||||||
|
|
||||||
//! Generate a starting estimate for the element potentials.
|
//! Generate a starting estimate for the element potentials.
|
||||||
int estimateElementPotentials(thermo_t& s, vector_fp& lambda,
|
int estimateElementPotentials(thermo_t& s, vector_fp& lambda,
|
||||||
vector_fp& elMolesGoal, int loglevel = 0);
|
vector_fp& elMolesGoal, int loglevel = 0);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -629,7 +629,7 @@ private:
|
||||||
std::map<std::string, size_t> m_enamemap;
|
std::map<std::string, size_t> m_enamemap;
|
||||||
|
|
||||||
//! Number of phases in the MultiPhase object
|
//! Number of phases in the MultiPhase object
|
||||||
size_t m_np;
|
size_t m_np;
|
||||||
|
|
||||||
//! Current value of the temperature (kelvin)
|
//! Current value of the temperature (kelvin)
|
||||||
doublereal m_temp;
|
doublereal m_temp;
|
||||||
|
|
@ -761,7 +761,7 @@ size_t BasisOptimize(int* usedZeroedSpecies, bool doFormRxn,
|
||||||
*
|
*
|
||||||
* Also, without perturbation of FormulaMatrix[], BasisOptimize[] would
|
* Also, without perturbation of FormulaMatrix[], BasisOptimize[] would
|
||||||
* produce a zero pivot because the matrix would be singular (unless the argon
|
* produce a zero pivot because the matrix would be singular (unless the argon
|
||||||
* element column was already the last column of FormulaMatrix[].
|
* element column was already the last column of FormulaMatrix[].
|
||||||
*
|
*
|
||||||
* This routine borrows heavily from BasisOptimize algorithm. It finds nc
|
* This routine borrows heavily from BasisOptimize algorithm. It finds nc
|
||||||
* constraints which span the range space of the Component Formula matrix, and
|
* constraints which span the range space of the Component Formula matrix, and
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,9 @@ namespace Cantera
|
||||||
{
|
{
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Multiphase chemical equilibrium solver. Class MultiPhaseEquil is designed
|
* Multiphase chemical equilibrium solver. Class MultiPhaseEquil is designed
|
||||||
* to be used to set a mixture containing one or more phases to a state of
|
* to be used to set a mixture containing one or more phases to a state of
|
||||||
* chemical equilibrium. It implements the VCS algorithm, described in Smith
|
* chemical equilibrium. It implements the VCS algorithm, described in Smith
|
||||||
* and Missen, "Chemical Reaction Equilibrium."
|
* and Missen, "Chemical Reaction Equilibrium."
|
||||||
*
|
*
|
||||||
* This class only handles chemical equilibrium at a specified temperature and
|
* This class only handles chemical equilibrium at a specified temperature and
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ public:
|
||||||
* number of components, which can be obtained from the
|
* number of components, which can be obtained from the
|
||||||
* numComponents() command.
|
* numComponents() command.
|
||||||
*/
|
*/
|
||||||
size_t component(size_t m) const ;
|
size_t component(size_t m) const;
|
||||||
|
|
||||||
//! Get the stoichiometric reaction coefficients for a single
|
//! Get the stoichiometric reaction coefficients for a single
|
||||||
//! reaction index
|
//! reaction index
|
||||||
|
|
@ -260,7 +260,7 @@ public:
|
||||||
* @param logLevel Determines the amount of printing to the output file.
|
* @param logLevel Determines the amount of printing to the output file.
|
||||||
*/
|
*/
|
||||||
int equilibrate_TV(int XY, doublereal xtarget,
|
int equilibrate_TV(int XY, doublereal xtarget,
|
||||||
int estimateEquil = 0,
|
int estimateEquil = 0,
|
||||||
int printLvl = 0, doublereal err = 1.0E-6,
|
int printLvl = 0, doublereal err = 1.0E-6,
|
||||||
int maxsteps = VCS_MAXSTEPS, int logLevel = -99);
|
int maxsteps = VCS_MAXSTEPS, int logLevel = -99);
|
||||||
|
|
||||||
|
|
@ -276,7 +276,7 @@ public:
|
||||||
* compile with debug flags to get some printing).
|
* compile with debug flags to get some printing).
|
||||||
* @param logLevel Determines the amount of printing to the output file.
|
* @param logLevel Determines the amount of printing to the output file.
|
||||||
*/
|
*/
|
||||||
int determine_PhaseStability(int iph, double& funcStab, int printLvl= 0, int logLevel = -99);
|
int determine_PhaseStability(int iph, double& funcStab, int printLvl= 0, int logLevel = -99);
|
||||||
|
|
||||||
//! Report the equilibrium answer in a comma separated table format
|
//! Report the equilibrium answer in a comma separated table format
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -303,7 +303,7 @@ public:
|
||||||
|
|
||||||
// Friend functions
|
// Friend functions
|
||||||
friend int vcs_Cantera_to_vprob(MultiPhase* mphase, VCS_PROB* vprob);
|
friend int vcs_Cantera_to_vprob(MultiPhase* mphase, VCS_PROB* vprob);
|
||||||
friend int vcs_Cantera_update_vprob(MultiPhase* mphase, VCS_PROB* vprob);
|
friend int vcs_Cantera_update_vprob(MultiPhase* mphase, VCS_PROB* vprob);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Vector that takes into account of the current sorting of the species
|
//! Vector that takes into account of the current sorting of the species
|
||||||
|
|
|
||||||
|
|
@ -15,32 +15,32 @@ class vcs_VolPhase;
|
||||||
class vcs_SpeciesProperties
|
class vcs_SpeciesProperties
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
size_t IndexPhase;
|
size_t IndexPhase;
|
||||||
size_t IndexSpeciesPhase;
|
size_t IndexSpeciesPhase;
|
||||||
vcs_VolPhase* OwningPhase;
|
vcs_VolPhase* OwningPhase;
|
||||||
size_t NumElements;
|
size_t NumElements;
|
||||||
|
|
||||||
//! Name of the species
|
//! Name of the species
|
||||||
std::string SpName;
|
std::string SpName;
|
||||||
|
|
||||||
VCS_SPECIES_THERMO* SpeciesThermo; /* Pointer to the thermo
|
VCS_SPECIES_THERMO* SpeciesThermo; /* Pointer to the thermo
|
||||||
structure for this species */
|
structure for this species */
|
||||||
double WtSpecies; /* Molecular Weight of the species (gm/mol) */
|
double WtSpecies; /* Molecular Weight of the species (gm/mol) */
|
||||||
|
|
||||||
//! Column of the formula matrix, comprising the
|
//! Column of the formula matrix, comprising the
|
||||||
//! element composition of the species */
|
//! element composition of the species */
|
||||||
std::vector<double> FormulaMatrixCol;
|
std::vector<double> FormulaMatrixCol;
|
||||||
|
|
||||||
double Charge; /* Charge state of the species -> This may
|
double Charge; /* Charge state of the species -> This may
|
||||||
be duplication of what's in the
|
be duplication of what's in the
|
||||||
FormulaMatrixCol entries. However, it's prudent
|
FormulaMatrixCol entries. However, it's prudent
|
||||||
to separate it out. */
|
to separate it out. */
|
||||||
int SurfaceSpecies; /* True if this species belongs to a surface phase */
|
int SurfaceSpecies; /* True if this species belongs to a surface phase */
|
||||||
/*
|
/*
|
||||||
* Various Calculated Quantities that are appropriate to
|
* Various Calculated Quantities that are appropriate to
|
||||||
* keep copies of at this level.
|
* keep copies of at this level.
|
||||||
*/
|
*/
|
||||||
double VolPM; /* Partial molar volume of the species */
|
double VolPM; /* Partial molar volume of the species */
|
||||||
double ReferenceMoleFraction; /* Representative value of the mole
|
double ReferenceMoleFraction; /* Representative value of the mole
|
||||||
fraction of this species in a phase.
|
fraction of this species in a phase.
|
||||||
This value is used for convergence issues
|
This value is used for convergence issues
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ namespace Cantera
|
||||||
class ThermoPhase;
|
class ThermoPhase;
|
||||||
|
|
||||||
//! Models for the standard state volume of each species
|
//! Models for the standard state volume of each species
|
||||||
#define VCS_SSVOL_IDEALGAS 0
|
#define VCS_SSVOL_IDEALGAS 0
|
||||||
#define VCS_SSVOL_CONSTANT 1
|
#define VCS_SSVOL_CONSTANT 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DEFINITIONS FOR THE vcs_VolPhase structure
|
* DEFINITIONS FOR THE vcs_VolPhase structure
|
||||||
|
|
@ -29,14 +29,14 @@ class ThermoPhase;
|
||||||
* Equation of State Types
|
* Equation of State Types
|
||||||
* - Permissible values for the EqnState variable in CPC_PHASE structure
|
* - Permissible values for the EqnState variable in CPC_PHASE structure
|
||||||
*/
|
*/
|
||||||
#define VCS_EOS_CONSTANT 0
|
#define VCS_EOS_CONSTANT 0
|
||||||
#define VCS_EOS_IDEAL_GAS 1
|
#define VCS_EOS_IDEAL_GAS 1
|
||||||
#define VCS_EOS_STOICH_SUB 5
|
#define VCS_EOS_STOICH_SUB 5
|
||||||
#define VCS_EOS_IDEAL_SOLN 22
|
#define VCS_EOS_IDEAL_SOLN 22
|
||||||
#define VCS_EOS_DEBEYE_HUCKEL 23
|
#define VCS_EOS_DEBEYE_HUCKEL 23
|
||||||
#define VCS_EOS_REDLICK_KWONG 24
|
#define VCS_EOS_REDLICK_KWONG 24
|
||||||
#define VCS_EOS_REGULAR_SOLN 25
|
#define VCS_EOS_REGULAR_SOLN 25
|
||||||
#define VCS_EOS_UNK_CANTERA -1
|
#define VCS_EOS_UNK_CANTERA -1
|
||||||
|
|
||||||
struct VCS_SPECIES;
|
struct VCS_SPECIES;
|
||||||
class vcs_SpeciesProperties;
|
class vcs_SpeciesProperties;
|
||||||
|
|
@ -832,7 +832,7 @@ private:
|
||||||
* - VCS_STATECALC_NEW
|
* - VCS_STATECALC_NEW
|
||||||
* - VCS_STATECALC_TMP
|
* - VCS_STATECALC_TMP
|
||||||
*/
|
*/
|
||||||
int m_vcsStateStatus;
|
int m_vcsStateStatus;
|
||||||
|
|
||||||
//! Value of the potential for the phase (Volts)
|
//! Value of the potential for the phase (Volts)
|
||||||
double m_phi;
|
double m_phi;
|
||||||
|
|
|
||||||
|
|
@ -17,14 +17,14 @@ namespace Cantera
|
||||||
* ERROR CODES
|
* ERROR CODES
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
#define VCS_SUCCESS 0
|
#define VCS_SUCCESS 0
|
||||||
#define VCS_NOMEMORY 1
|
#define VCS_NOMEMORY 1
|
||||||
#define VCS_FAILED_CONVERGENCE -1
|
#define VCS_FAILED_CONVERGENCE -1
|
||||||
#define VCS_SHOULDNT_BE_HERE -2
|
#define VCS_SHOULDNT_BE_HERE -2
|
||||||
#define VCS_PUB_BAD -3
|
#define VCS_PUB_BAD -3
|
||||||
#define VCS_THERMO_OUTOFRANGE -4
|
#define VCS_THERMO_OUTOFRANGE -4
|
||||||
#define VCS_FAILED_LOOKUP -5
|
#define VCS_FAILED_LOOKUP -5
|
||||||
#define VCS_MP_FAIL -6
|
#define VCS_MP_FAIL -6
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -46,32 +46,32 @@ namespace Cantera
|
||||||
//! Cutoff relative mole fraction value,
|
//! Cutoff relative mole fraction value,
|
||||||
//! below which species are deleted from the equilibrium problem.
|
//! below which species are deleted from the equilibrium problem.
|
||||||
#ifndef VCS_RELDELETE_SPECIES_CUTOFF
|
#ifndef VCS_RELDELETE_SPECIES_CUTOFF
|
||||||
#define VCS_RELDELETE_SPECIES_CUTOFF 1.0e-64
|
#define VCS_RELDELETE_SPECIES_CUTOFF 1.0e-64
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Cutoff relative mole number value,
|
//! Cutoff relative mole number value,
|
||||||
//! below which species are deleted from the equilibrium problem.
|
//! below which species are deleted from the equilibrium problem.
|
||||||
#ifndef VCS_DELETE_MINORSPECIES_CUTOFF
|
#ifndef VCS_DELETE_MINORSPECIES_CUTOFF
|
||||||
#define VCS_DELETE_MINORSPECIES_CUTOFF 1.0e-140
|
#define VCS_DELETE_MINORSPECIES_CUTOFF 1.0e-140
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Relative value of multiphase species mole number for a
|
//! Relative value of multiphase species mole number for a
|
||||||
//! multiphase species which is small.
|
//! multiphase species which is small.
|
||||||
#ifndef VCS_SMALL_MULTIPHASE_SPECIES
|
#ifndef VCS_SMALL_MULTIPHASE_SPECIES
|
||||||
#define VCS_SMALL_MULTIPHASE_SPECIES 1.0e-25
|
#define VCS_SMALL_MULTIPHASE_SPECIES 1.0e-25
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Cutoff relative moles below which a phase is deleted
|
//! Cutoff relative moles below which a phase is deleted
|
||||||
//! from the equilibrium problem.
|
//! from the equilibrium problem.
|
||||||
#ifndef VCS_DELETE_PHASE_CUTOFF
|
#ifndef VCS_DELETE_PHASE_CUTOFF
|
||||||
#define VCS_DELETE_PHASE_CUTOFF 1.0e-13
|
#define VCS_DELETE_PHASE_CUTOFF 1.0e-13
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Relative mole number of species in a phase that is created
|
//! Relative mole number of species in a phase that is created
|
||||||
//! We want this to be comfortably larger than the VCS_DELETE_PHASE_CUTOFF value
|
//! We want this to be comfortably larger than the VCS_DELETE_PHASE_CUTOFF value
|
||||||
//! so that the phase can have a chance to survive.
|
//! so that the phase can have a chance to survive.
|
||||||
#ifndef VCS_POP_PHASE_MOLENUM
|
#ifndef VCS_POP_PHASE_MOLENUM
|
||||||
#define VCS_POP_PHASE_MOLENUM 1.0e-11
|
#define VCS_POP_PHASE_MOLENUM 1.0e-11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -79,7 +79,7 @@ namespace Cantera
|
||||||
//! comprises the bulk of an element's total concentration
|
//! comprises the bulk of an element's total concentration
|
||||||
//! is deleted.
|
//! is deleted.
|
||||||
#ifndef VCS_DELETE_ELEMENTABS_CUTOFF
|
#ifndef VCS_DELETE_ELEMENTABS_CUTOFF
|
||||||
#define VCS_DELETE_ELEMENTABS_CUTOFF 1.0e-280
|
#define VCS_DELETE_ELEMENTABS_CUTOFF 1.0e-280
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//! Maximum steps in the inner loop
|
//! Maximum steps in the inner loop
|
||||||
|
|
@ -94,9 +94,9 @@ namespace Cantera
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
//! nondimensional
|
//! nondimensional
|
||||||
#define VCS_NONDIMENSIONAL_G 1
|
#define VCS_NONDIMENSIONAL_G 1
|
||||||
//! dimensioned
|
//! dimensioned
|
||||||
#define VCS_DIMENSIONAL_G 0
|
#define VCS_DIMENSIONAL_G 0
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -112,24 +112,24 @@ namespace Cantera
|
||||||
* An example of this would be a species that contains Ni. But,
|
* An example of this would be a species that contains Ni. But,
|
||||||
* the amount of Ni elements is exactly zero.
|
* the amount of Ni elements is exactly zero.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_COMPONENT_STOICHZERO 3
|
#define VCS_SPECIES_COMPONENT_STOICHZERO 3
|
||||||
|
|
||||||
//! Species is a component which can be nonzero
|
//! Species is a component which can be nonzero
|
||||||
#define VCS_SPECIES_COMPONENT 2
|
#define VCS_SPECIES_COMPONENT 2
|
||||||
|
|
||||||
//! Species is a major species
|
//! Species is a major species
|
||||||
/*!
|
/*!
|
||||||
* A major species is either a species in a multicomponent phase with
|
* A major species is either a species in a multicomponent phase with
|
||||||
* significant concentration or it's a Stoich Phase
|
* significant concentration or it's a Stoich Phase
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_MAJOR 1
|
#define VCS_SPECIES_MAJOR 1
|
||||||
|
|
||||||
//! Species is a major species
|
//! Species is a major species
|
||||||
/*!
|
/*!
|
||||||
* A major species is either a species in a multicomponent phase with
|
* A major species is either a species in a multicomponent phase with
|
||||||
* significant concentration or it's a Stoich Phase
|
* significant concentration or it's a Stoich Phase
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_MINOR 0
|
#define VCS_SPECIES_MINOR 0
|
||||||
|
|
||||||
//! Species lies in a multicomponent phase, with a small phase concentration
|
//! Species lies in a multicomponent phase, with a small phase concentration
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -137,21 +137,21 @@ namespace Cantera
|
||||||
* It concentration is currently very low, necessitating a
|
* It concentration is currently very low, necessitating a
|
||||||
* different method of calculation.
|
* different method of calculation.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_SMALLMS -1
|
#define VCS_SPECIES_SMALLMS -1
|
||||||
|
|
||||||
//! Species lies in a multicomponent phase with concentration zero
|
//! Species lies in a multicomponent phase with concentration zero
|
||||||
/*!
|
/*!
|
||||||
* The species lies in a multicomponent phase which currently doesn't exist.
|
* The species lies in a multicomponent phase which currently doesn't exist.
|
||||||
* It concentration is currently zero.
|
* It concentration is currently zero.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_ZEROEDMS -2
|
#define VCS_SPECIES_ZEROEDMS -2
|
||||||
|
|
||||||
//! Species is a SS phase, that is currently zeroed out.
|
//! Species is a SS phase, that is currently zeroed out.
|
||||||
/*!
|
/*!
|
||||||
* The species lies in a single-species phase which
|
* The species lies in a single-species phase which
|
||||||
* is currently zeroed out.
|
* is currently zeroed out.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_ZEROEDSS -3
|
#define VCS_SPECIES_ZEROEDSS -3
|
||||||
|
|
||||||
//! Species has such a small mole fraction it is deleted even though its
|
//! Species has such a small mole fraction it is deleted even though its
|
||||||
//! phase may possibly exist.
|
//! phase may possibly exist.
|
||||||
|
|
@ -160,14 +160,14 @@ namespace Cantera
|
||||||
* that it best to throw the calculation of it out.
|
* that it best to throw the calculation of it out.
|
||||||
* It will be added back in at the end of the calculation.
|
* It will be added back in at the end of the calculation.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_DELETED -4
|
#define VCS_SPECIES_DELETED -4
|
||||||
|
|
||||||
//! Species refers to an electron in the metal.
|
//! Species refers to an electron in the metal.
|
||||||
/*!
|
/*!
|
||||||
* The unknown is equal to the electric potential of the phase
|
* The unknown is equal to the electric potential of the phase
|
||||||
* in which it exists.
|
* in which it exists.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_INTERFACIALVOLTAGE -5
|
#define VCS_SPECIES_INTERFACIALVOLTAGE -5
|
||||||
|
|
||||||
//! Species lies in a multicomponent phase that is zeroed atm
|
//! Species lies in a multicomponent phase that is zeroed atm
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -176,7 +176,7 @@ namespace Cantera
|
||||||
* These species will formally always have zero mole numbers in the
|
* These species will formally always have zero mole numbers in the
|
||||||
* solution vector.
|
* solution vector.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_ZEROEDPHASE -6
|
#define VCS_SPECIES_ZEROEDPHASE -6
|
||||||
|
|
||||||
//! Species lies in a multicomponent phase that is active, but species concentration is zero
|
//! Species lies in a multicomponent phase that is active, but species concentration is zero
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -185,7 +185,7 @@ namespace Cantera
|
||||||
* is a temporary condition that exists at the start of an equilibrium problem.
|
* is a temporary condition that exists at the start of an equilibrium problem.
|
||||||
* The species is soon "birthed" or "deleted".
|
* The species is soon "birthed" or "deleted".
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_ACTIVEBUTZERO -7
|
#define VCS_SPECIES_ACTIVEBUTZERO -7
|
||||||
|
|
||||||
//! Species lies in a multicomponent phase that is active,
|
//! Species lies in a multicomponent phase that is active,
|
||||||
//! but species concentration is zero due to stoich constraint
|
//! but species concentration is zero due to stoich constraint
|
||||||
|
|
@ -196,7 +196,7 @@ namespace Cantera
|
||||||
* An example of this would be a species that contains Ni. But,
|
* An example of this would be a species that contains Ni. But,
|
||||||
* the amount of Ni elements in the current problem statement is exactly zero.
|
* the amount of Ni elements in the current problem statement is exactly zero.
|
||||||
*/
|
*/
|
||||||
#define VCS_SPECIES_STOICHZERO -8
|
#define VCS_SPECIES_STOICHZERO -8
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
@ -206,26 +206,26 @@ namespace Cantera
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
//! Always exists because it contains inerts which can't exist in any other phase
|
//! Always exists because it contains inerts which can't exist in any other phase
|
||||||
#define VCS_PHASE_EXIST_ALWAYS 3
|
#define VCS_PHASE_EXIST_ALWAYS 3
|
||||||
|
|
||||||
//! Phase is a normal phase that currently exists
|
//! Phase is a normal phase that currently exists
|
||||||
#define VCS_PHASE_EXIST_YES 2
|
#define VCS_PHASE_EXIST_YES 2
|
||||||
|
|
||||||
//! Phase is a normal phase that exists in a small concentration
|
//! Phase is a normal phase that exists in a small concentration
|
||||||
/*!
|
/*!
|
||||||
* Concentration is so small that it must be calculated using an alternate
|
* Concentration is so small that it must be calculated using an alternate
|
||||||
* method
|
* method
|
||||||
*/
|
*/
|
||||||
#define VCS_PHASE_EXIST_MINORCONC 1
|
#define VCS_PHASE_EXIST_MINORCONC 1
|
||||||
|
|
||||||
//! Phase doesn't currently exist in the mixture
|
//! Phase doesn't currently exist in the mixture
|
||||||
#define VCS_PHASE_EXIST_NO 0
|
#define VCS_PHASE_EXIST_NO 0
|
||||||
|
|
||||||
//! Phase currently is zeroed due to a programmatic issue
|
//! Phase currently is zeroed due to a programmatic issue
|
||||||
/*!
|
/*!
|
||||||
* We zero phases because we want to follow phase stability boundaries.
|
* We zero phases because we want to follow phase stability boundaries.
|
||||||
*/
|
*/
|
||||||
#define VCS_PHASE_EXIST_ZEROEDPHASE -6
|
#define VCS_PHASE_EXIST_ZEROEDPHASE -6
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
@ -257,11 +257,11 @@ namespace Cantera
|
||||||
@endverbatim
|
@endverbatim
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define VCS_UNITS_KCALMOL -1
|
#define VCS_UNITS_KCALMOL -1
|
||||||
#define VCS_UNITS_UNITLESS 0
|
#define VCS_UNITS_UNITLESS 0
|
||||||
#define VCS_UNITS_KJMOL 1
|
#define VCS_UNITS_KJMOL 1
|
||||||
#define VCS_UNITS_KELVIN 2
|
#define VCS_UNITS_KELVIN 2
|
||||||
#define VCS_UNITS_MKS 3
|
#define VCS_UNITS_MKS 3
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -275,7 +275,7 @@ namespace Cantera
|
||||||
|
|
||||||
|
|
||||||
//! An element constraint that is current turned off
|
//! An element constraint that is current turned off
|
||||||
#define VCS_ELEM_TYPE_TURNEDOFF -1
|
#define VCS_ELEM_TYPE_TURNEDOFF -1
|
||||||
|
|
||||||
//! Normal element constraint consisting of positive coefficients for the
|
//! Normal element constraint consisting of positive coefficients for the
|
||||||
//! formula matrix.
|
//! formula matrix.
|
||||||
|
|
@ -284,13 +284,13 @@ namespace Cantera
|
||||||
* With this constraint, we may employ various strategies to handle
|
* With this constraint, we may employ various strategies to handle
|
||||||
* small values of the element number successfully.
|
* small values of the element number successfully.
|
||||||
*/
|
*/
|
||||||
#define VCS_ELEM_TYPE_ABSPOS 0
|
#define VCS_ELEM_TYPE_ABSPOS 0
|
||||||
|
|
||||||
//! This refers to conservation of electrons
|
//! This refers to conservation of electrons
|
||||||
/*!
|
/*!
|
||||||
* Electrons may have positive or negative values in the Formula matrix.
|
* Electrons may have positive or negative values in the Formula matrix.
|
||||||
*/
|
*/
|
||||||
#define VCS_ELEM_TYPE_ELECTRONCHARGE 1
|
#define VCS_ELEM_TYPE_ELECTRONCHARGE 1
|
||||||
|
|
||||||
//! This refers to a charge neutrality of a single phase
|
//! This refers to a charge neutrality of a single phase
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -328,7 +328,7 @@ namespace Cantera
|
||||||
/*!
|
/*!
|
||||||
* currently there are none
|
* currently there are none
|
||||||
*/
|
*/
|
||||||
#define VCS_ELEM_TYPE_OTHERCONSTRAINT 6
|
#define VCS_ELEM_TYPE_OTHERCONSTRAINT 6
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -336,7 +336,7 @@ namespace Cantera
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
//! Unknown refers to mole number of a single species
|
//! Unknown refers to mole number of a single species
|
||||||
#define VCS_SPECIES_TYPE_MOLNUM 0
|
#define VCS_SPECIES_TYPE_MOLNUM 0
|
||||||
|
|
||||||
//! Unknown refers to the voltage level of a phase
|
//! Unknown refers to the voltage level of a phase
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -356,20 +356,20 @@ namespace Cantera
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
//! State Calculation is currently in an unknown state
|
//! State Calculation is currently in an unknown state
|
||||||
#define VCS_STATECALC_UNKNOWN -1
|
#define VCS_STATECALC_UNKNOWN -1
|
||||||
//! State Calculation based on the old or base mole numbers
|
//! State Calculation based on the old or base mole numbers
|
||||||
#define VCS_STATECALC_OLD 0
|
#define VCS_STATECALC_OLD 0
|
||||||
|
|
||||||
//! State Calculation based on the new or tentative mole numbers
|
//! State Calculation based on the new or tentative mole numbers
|
||||||
#define VCS_STATECALC_NEW 1
|
#define VCS_STATECALC_NEW 1
|
||||||
|
|
||||||
//! State Calculation based on tentative mole numbers
|
//! State Calculation based on tentative mole numbers
|
||||||
//! for a phase which is currently zeroed, but is being
|
//! for a phase which is currently zeroed, but is being
|
||||||
//! evaluated for whether it should pop back into existence
|
//! evaluated for whether it should pop back into existence
|
||||||
#define VCS_STATECALC_PHASESTABILITY 2
|
#define VCS_STATECALC_PHASESTABILITY 2
|
||||||
|
|
||||||
//! State Calculation based on a temporary set of mole numbers
|
//! State Calculation based on a temporary set of mole numbers
|
||||||
#define VCS_STATECALC_TMP 3
|
#define VCS_STATECALC_TMP 3
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ public:
|
||||||
* - VCS_UNITS_UNITLESS: 1.0 K-1
|
* - VCS_UNITS_UNITLESS: 1.0 K-1
|
||||||
* - VCS_UNITS_KJMOL: kJ gmol-1 K-1
|
* - VCS_UNITS_KJMOL: kJ gmol-1 K-1
|
||||||
* - VCS_UNITS_KELVIN: 1.0 K-1
|
* - VCS_UNITS_KELVIN: 1.0 K-1
|
||||||
* - VCS_UNITS_MKS: joules kmol-1 K-1 = kg m2 s-2 kmol-1 K-1
|
* - VCS_UNITS_MKS: joules kmol-1 K-1 = kg m2 s-2 kmol-1 K-1
|
||||||
*/
|
*/
|
||||||
double vcsUtil_gasConstant(int mu_units);
|
double vcsUtil_gasConstant(int mu_units);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ public:
|
||||||
|
|
||||||
//! Molecular weight of species
|
//! Molecular weight of species
|
||||||
/*!
|
/*!
|
||||||
* WtSpecies[k] = molecular weight of species in gm/mol
|
* WtSpecies[k] = molecular weight of species in gm/mol
|
||||||
*/
|
*/
|
||||||
std::vector<double> WtSpecies;
|
std::vector<double> WtSpecies;
|
||||||
|
|
||||||
|
|
@ -195,7 +195,7 @@ public:
|
||||||
// String containing the title of the run
|
// String containing the title of the run
|
||||||
std::string Title;
|
std::string Title;
|
||||||
|
|
||||||
//! Vector of pointers to thermo structures which identify the model and
|
//! Vector of pointers to thermo structures which identify the model and
|
||||||
//! parameters for evaluating the thermodynamic functions for that
|
//! parameters for evaluating the thermodynamic functions for that
|
||||||
//! particular species
|
//! particular species
|
||||||
std::vector<VCS_SPECIES_THERMO*> SpeciesThermo;
|
std::vector<VCS_SPECIES_THERMO*> SpeciesThermo;
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ public:
|
||||||
* using a variant of the VCS method. Nonideal phases can be accommodated
|
* using a variant of the VCS method. Nonideal phases can be accommodated
|
||||||
* as well.
|
* as well.
|
||||||
*
|
*
|
||||||
* Any number of single-species phases and multi-species phases
|
* Any number of single-species phases and multi-species phases
|
||||||
* can be handled by the present version.
|
* can be handled by the present version.
|
||||||
*
|
*
|
||||||
* @param print_lvl 1 -> Print results to standard output;
|
* @param print_lvl 1 -> Print results to standard output;
|
||||||
|
|
@ -241,7 +241,7 @@ public:
|
||||||
* across the interface on the SHE (standard hydrogen electrode) scale
|
* across the interface on the SHE (standard hydrogen electrode) scale
|
||||||
* (volts).
|
* (volts).
|
||||||
* - #VCS_SPECIES_ZEROEDPHASE: Species lies in a multicomponent phase
|
* - #VCS_SPECIES_ZEROEDPHASE: Species lies in a multicomponent phase
|
||||||
* that is zeroed atm and will stay deleted due to a choice from a
|
* that is zeroed atm and will stay deleted due to a choice from a
|
||||||
* higher level. These species will formally always have zero mole
|
* higher level. These species will formally always have zero mole
|
||||||
* numbers in the solution vector.
|
* numbers in the solution vector.
|
||||||
* - #VCS_SPECIES_ACTIVEBUTZERO: The species lies in a multicomponent
|
* - #VCS_SPECIES_ACTIVEBUTZERO: The species lies in a multicomponent
|
||||||
|
|
@ -481,7 +481,7 @@ public:
|
||||||
//! into existence
|
//! into existence
|
||||||
/*!
|
/*!
|
||||||
* Updates #m_deltaMolNumSpecies[irxn] : reaction adjustments, where irxn
|
* Updates #m_deltaMolNumSpecies[irxn] : reaction adjustments, where irxn
|
||||||
* refers to the irxn'th species formation reaction. This adjustment is
|
* refers to the irxn'th species formation reaction. This adjustment is
|
||||||
* for species irxn + M, where M is the number of components.
|
* for species irxn + M, where M is the number of components.
|
||||||
*
|
*
|
||||||
* @param iphasePop Phase id of the phase that will come into existence
|
* @param iphasePop Phase id of the phase that will come into existence
|
||||||
|
|
@ -503,7 +503,7 @@ public:
|
||||||
* -------
|
* -------
|
||||||
* m_deltaMolNumSpecies(irxn) : reaction adjustments, where irxn refers to
|
* m_deltaMolNumSpecies(irxn) : reaction adjustments, where irxn refers to
|
||||||
* the irxn'th species formation reaction.
|
* the irxn'th species formation reaction.
|
||||||
* This adjustment is for species irxn + M,
|
* This adjustment is for species irxn + M,
|
||||||
* where M is the number of components.
|
* where M is the number of components.
|
||||||
*
|
*
|
||||||
* Special branching occurs sometimes. This causes the component basis
|
* Special branching occurs sometimes. This causes the component basis
|
||||||
|
|
@ -532,7 +532,7 @@ public:
|
||||||
* Formation reactions are
|
* Formation reactions are
|
||||||
* reactions which create each noncomponent species from the component
|
* reactions which create each noncomponent species from the component
|
||||||
* species. m_stoichCoeffRxnMatrix(jcomp,irxn) are the stoichiometric
|
* species. m_stoichCoeffRxnMatrix(jcomp,irxn) are the stoichiometric
|
||||||
* coefficients for these reactions. A stoichiometric coefficient of
|
* coefficients for these reactions. A stoichiometric coefficient of
|
||||||
* one is assumed for species irxn in this reaction.
|
* one is assumed for species irxn in this reaction.
|
||||||
*
|
*
|
||||||
* @param l
|
* @param l
|
||||||
|
|
@ -797,7 +797,7 @@ public:
|
||||||
* actually contains argon. Then, nc < ne. Also, without perturbation of
|
* actually contains argon. Then, nc < ne. Also, without perturbation of
|
||||||
* FormulaMatrix[] vcs_basopt[] would produce a zero pivot because the
|
* FormulaMatrix[] vcs_basopt[] would produce a zero pivot because the
|
||||||
* matrix would be singular (unless the argon element column was already
|
* matrix would be singular (unless the argon element column was already
|
||||||
* the last column of FormulaMatrix[].
|
* the last column of FormulaMatrix[].
|
||||||
*
|
*
|
||||||
* This routine borrows heavily from vcs_basopt's algorithm. It finds nc
|
* This routine borrows heavily from vcs_basopt's algorithm. It finds nc
|
||||||
* constraints which span the range space of the Component Formula matrix,
|
* constraints which span the range space of the Component Formula matrix,
|
||||||
|
|
@ -848,7 +848,7 @@ public:
|
||||||
*
|
*
|
||||||
* NOTE: currently this routine is not used.
|
* NOTE: currently this routine is not used.
|
||||||
*/
|
*/
|
||||||
int vcs_rxn_adj_cg();
|
int vcs_rxn_adj_cg();
|
||||||
|
|
||||||
//! Calculates the diagonal contribution to the Hessian due to
|
//! Calculates the diagonal contribution to the Hessian due to
|
||||||
//! the dependence of the activity coefficients on the mole numbers.
|
//! the dependence of the activity coefficients on the mole numbers.
|
||||||
|
|
@ -947,7 +947,7 @@ public:
|
||||||
* with significantly different total kmol numbers than one
|
* with significantly different total kmol numbers than one
|
||||||
* the algorithm would have problems.
|
* the algorithm would have problems.
|
||||||
*/
|
*/
|
||||||
void vcs_nondim_TP();
|
void vcs_nondim_TP();
|
||||||
|
|
||||||
//! Redimensionalize the problem data
|
//! Redimensionalize the problem data
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -957,7 +957,7 @@ public:
|
||||||
* or in nondimensional form. This routine switches the data from
|
* or in nondimensional form. This routine switches the data from
|
||||||
* nondimensional form into dimensional form.
|
* nondimensional form into dimensional form.
|
||||||
*/
|
*/
|
||||||
void vcs_redim_TP();
|
void vcs_redim_TP();
|
||||||
|
|
||||||
//! Print the string representing the Chemical potential units
|
//! Print the string representing the Chemical potential units
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -965,7 +965,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param unitsFormat Integer representing the units system
|
* @param unitsFormat Integer representing the units system
|
||||||
*/
|
*/
|
||||||
void vcs_printChemPotUnits(int unitsFormat) const;
|
void vcs_printChemPotUnits(int unitsFormat) const;
|
||||||
|
|
||||||
//! Computes the current elemental abundances vector
|
//! Computes the current elemental abundances vector
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -984,7 +984,7 @@ public:
|
||||||
* definition. Satisfaction of extra constraints would have had to occur
|
* definition. Satisfaction of extra constraints would have had to occur
|
||||||
* in the problem specification.
|
* in the problem specification.
|
||||||
*
|
*
|
||||||
* The constraints should be broken up into 2 sections. If a constraint
|
* The constraints should be broken up into 2 sections. If a constraint
|
||||||
* involves a formula matrix with positive and negative signs, and eaSet =
|
* involves a formula matrix with positive and negative signs, and eaSet =
|
||||||
* 0.0, then you can't expect that the sum will be zero. There may be
|
* 0.0, then you can't expect that the sum will be zero. There may be
|
||||||
* roundoff that inhibits this. However, if the formula matrix is all of
|
* roundoff that inhibits this. However, if the formula matrix is all of
|
||||||
|
|
@ -1202,7 +1202,7 @@ private:
|
||||||
*
|
*
|
||||||
* Then, if TL is zero, the phase pops into existence if DG_i_O < 0.
|
* Then, if TL is zero, the phase pops into existence if DG_i_O < 0.
|
||||||
* Also, if the phase exists, then we check to see if the species
|
* Also, if the phase exists, then we check to see if the species
|
||||||
* can have a mole number larger than VCS_DELETE_SPECIES_CUTOFF
|
* can have a mole number larger than VCS_DELETE_SPECIES_CUTOFF
|
||||||
* (default value = 1.0E-32).
|
* (default value = 1.0E-32).
|
||||||
*/
|
*/
|
||||||
int vcs_recheck_deleted();
|
int vcs_recheck_deleted();
|
||||||
|
|
@ -1354,7 +1354,7 @@ private:
|
||||||
* @param[in] molNum Current mole numbers of species to be used as input
|
* @param[in] molNum Current mole numbers of species to be used as input
|
||||||
* to the calculation (units = kmol), (length = totalNuMSpecies)
|
* to the calculation (units = kmol), (length = totalNuMSpecies)
|
||||||
*
|
*
|
||||||
* @param[out] ac Activity coefficients (length = totalNumSpecies) Note
|
* @param[out] ac Activity coefficients (length = totalNumSpecies) Note
|
||||||
* this is only partially formed. Only species in phases that
|
* this is only partially formed. Only species in phases that
|
||||||
* participate in the reaction will be updated
|
* participate in the reaction will be updated
|
||||||
* @param[out] mu_i dimensionless chemical potentials (length
|
* @param[out] mu_i dimensionless chemical potentials (length
|
||||||
|
|
@ -1427,10 +1427,10 @@ private:
|
||||||
std::vector<double> m_wx;
|
std::vector<double> m_wx;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
//! value of the number of species used to malloc data structures
|
//! value of the number of species used to malloc data structures
|
||||||
size_t NSPECIES0;
|
size_t NSPECIES0;
|
||||||
|
|
||||||
//! value of the number of phases used to malloc data structures
|
//! value of the number of phases used to malloc data structures
|
||||||
size_t NPHASE0;
|
size_t NPHASE0;
|
||||||
|
|
||||||
//! Total number of species in the problems
|
//! Total number of species in the problems
|
||||||
|
|
@ -1531,7 +1531,7 @@ public:
|
||||||
//! at the new tentatite T, P, and mole numbers.
|
//! at the new tentatite T, P, and mole numbers.
|
||||||
/*!
|
/*!
|
||||||
* The first NC entries are for components. The following
|
* The first NC entries are for components. The following
|
||||||
* NR entries are for the current non-component species in the mechanism.
|
* NR entries are for the current non-component species in the mechanism.
|
||||||
* Length = number of species
|
* Length = number of species
|
||||||
*/
|
*/
|
||||||
std::vector<double> m_feSpecies_new;
|
std::vector<double> m_feSpecies_new;
|
||||||
|
|
@ -1575,7 +1575,7 @@ public:
|
||||||
*/
|
*/
|
||||||
Array2D m_deltaMolNumPhase;
|
Array2D m_deltaMolNumPhase;
|
||||||
|
|
||||||
//! This is 1 if the phase, iphase, participates in the formation reaction
|
//! This is 1 if the phase, iphase, participates in the formation reaction
|
||||||
//! irxn, and zero otherwise. PhaseParticipation(iphase,irxn)
|
//! irxn, and zero otherwise. PhaseParticipation(iphase,irxn)
|
||||||
Array2D m_phaseParticipation;
|
Array2D m_phaseParticipation;
|
||||||
|
|
||||||
|
|
@ -1588,7 +1588,7 @@ public:
|
||||||
|
|
||||||
//! Delta G(irxn) for the noncomponent species in the mechanism.
|
//! Delta G(irxn) for the noncomponent species in the mechanism.
|
||||||
/*!
|
/*!
|
||||||
* Computed by the subroutine deltaG. m_deltaGRxn is the free
|
* Computed by the subroutine deltaG. m_deltaGRxn is the free
|
||||||
* energy change for the reaction which forms species K from the
|
* energy change for the reaction which forms species K from the
|
||||||
* component species. This vector has length equal to the number
|
* component species. This vector has length equal to the number
|
||||||
* of noncomponent species in the mechanism. It starts with
|
* of noncomponent species in the mechanism. It starts with
|
||||||
|
|
@ -1674,7 +1674,7 @@ public:
|
||||||
std::vector<double> m_deltaPhaseMoles;
|
std::vector<double> m_deltaPhaseMoles;
|
||||||
|
|
||||||
//! Temperature (Kelvin)
|
//! Temperature (Kelvin)
|
||||||
double m_temperature;
|
double m_temperature;
|
||||||
|
|
||||||
//! Pressure (units are determined by m_VCS_UnitsFormat
|
//! Pressure (units are determined by m_VCS_UnitsFormat
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -1692,7 +1692,7 @@ public:
|
||||||
|
|
||||||
//! Total kmoles of inert to add to each phase
|
//! Total kmoles of inert to add to each phase
|
||||||
/*!
|
/*!
|
||||||
* TPhInertMoles[iph] = Total kmoles of inert to add to each phase
|
* TPhInertMoles[iph] = Total kmoles of inert to add to each phase
|
||||||
* length = number of phases
|
* length = number of phases
|
||||||
*/
|
*/
|
||||||
std::vector<double> TPhInertMoles;
|
std::vector<double> TPhInertMoles;
|
||||||
|
|
@ -1703,7 +1703,7 @@ public:
|
||||||
//! Tolerance requirements for minor species
|
//! Tolerance requirements for minor species
|
||||||
double m_tolmin;
|
double m_tolmin;
|
||||||
|
|
||||||
//! Below this, major species aren't refined any more
|
//! Below this, major species aren't refined any more
|
||||||
double m_tolmaj2;
|
double m_tolmaj2;
|
||||||
|
|
||||||
//! Below this, minor species aren't refined any more
|
//! Below this, minor species aren't refined any more
|
||||||
|
|
@ -1751,7 +1751,7 @@ public:
|
||||||
std::vector<size_t> m_elementMapIndex;
|
std::vector<size_t> m_elementMapIndex;
|
||||||
|
|
||||||
//! Mapping between the species index for noncomponent species and the
|
//! Mapping between the species index for noncomponent species and the
|
||||||
//! full species index.
|
//! full species index.
|
||||||
/*!
|
/*!
|
||||||
* ir[irxn] = Mapping between the reaction index for noncomponent
|
* ir[irxn] = Mapping between the reaction index for noncomponent
|
||||||
* formation reaction of a species and the full species
|
* formation reaction of a species and the full species
|
||||||
|
|
@ -1819,7 +1819,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* The default is to have this unitless
|
* The default is to have this unitless
|
||||||
*/
|
*/
|
||||||
char m_unitsState;
|
char m_unitsState;
|
||||||
|
|
||||||
//! Multiplier for the mole numbers within the nondimensionless formulation
|
//! Multiplier for the mole numbers within the nondimensionless formulation
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -1830,7 +1830,7 @@ public:
|
||||||
*/
|
*/
|
||||||
double m_totalMoleScale;
|
double m_totalMoleScale;
|
||||||
|
|
||||||
//! specifies the activity convention of the phase containing the species
|
//! specifies the activity convention of the phase containing the species
|
||||||
/*!
|
/*!
|
||||||
* * 0 = molar based
|
* * 0 = molar based
|
||||||
* * 1 = molality based
|
* * 1 = molality based
|
||||||
|
|
@ -1848,7 +1848,7 @@ public:
|
||||||
*/
|
*/
|
||||||
std::vector<int> m_phaseActConvention;
|
std::vector<int> m_phaseActConvention;
|
||||||
|
|
||||||
//! specifies the ln(Mnaught) used to calculate the chemical potentials
|
//! specifies the ln(Mnaught) used to calculate the chemical potentials
|
||||||
/*!
|
/*!
|
||||||
* For molar based activity conventions this will be equal to 0.0.
|
* For molar based activity conventions this will be equal to 0.0.
|
||||||
* length = number of species.
|
* length = number of species.
|
||||||
|
|
@ -1890,7 +1890,7 @@ public:
|
||||||
std::vector<std::vector<size_t> > phasePopProblemLists_;
|
std::vector<std::vector<size_t> > phasePopProblemLists_;
|
||||||
|
|
||||||
//! Vector of pointers to thermostructures which identify the model
|
//! Vector of pointers to thermostructures which identify the model
|
||||||
//! and parameters for evaluating the thermodynamic functions for that
|
//! and parameters for evaluating the thermodynamic functions for that
|
||||||
//! particular species.
|
//! particular species.
|
||||||
/*!
|
/*!
|
||||||
* SpeciesThermo[k] pointer to the thermo information for the kth species
|
* SpeciesThermo[k] pointer to the thermo information for the kth species
|
||||||
|
|
@ -1900,7 +1900,7 @@ public:
|
||||||
//! Choice of Hessians
|
//! Choice of Hessians
|
||||||
/*!
|
/*!
|
||||||
* If this is true, then we will use a better approximation to the
|
* If this is true, then we will use a better approximation to the
|
||||||
* Hessian based on Jacobian of the ln(ActCoeff) with respect to mole
|
* Hessian based on Jacobian of the ln(ActCoeff) with respect to mole
|
||||||
* numbers
|
* numbers
|
||||||
*/
|
*/
|
||||||
int m_useActCoeffJac;
|
int m_useActCoeffJac;
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,15 @@ namespace Cantera
|
||||||
class vcs_VolPhase;
|
class vcs_VolPhase;
|
||||||
|
|
||||||
// Models for the species standard state Naught temperature dependence
|
// Models for the species standard state Naught temperature dependence
|
||||||
#define VCS_SS0_NOTHANDLED -1
|
#define VCS_SS0_NOTHANDLED -1
|
||||||
#define VCS_SS0_CONSTANT 0
|
#define VCS_SS0_CONSTANT 0
|
||||||
//#define VCS_SS0_NASA_POLY 1
|
//#define VCS_SS0_NASA_POLY 1
|
||||||
#define VCS_SS0_CONSTANT_CP 2
|
#define VCS_SS0_CONSTANT_CP 2
|
||||||
|
|
||||||
// Models for the species standard state extra pressure dependence
|
// Models for the species standard state extra pressure dependence
|
||||||
#define VCS_SSSTAR_NOTHANDLED -1
|
#define VCS_SSSTAR_NOTHANDLED -1
|
||||||
#define VCS_SSSTAR_CONSTANT 0
|
#define VCS_SSSTAR_CONSTANT 0
|
||||||
#define VCS_SSSTAR_IDEAL_GAS 1
|
#define VCS_SSSTAR_IDEAL_GAS 1
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Identifies the thermo model for the species. This structure is shared by
|
* Identifies the thermo model for the species. This structure is shared by
|
||||||
|
|
@ -51,7 +51,7 @@ public:
|
||||||
//! Integer representing the models for the species standard state
|
//! Integer representing the models for the species standard state
|
||||||
//! Naught temperature dependence. They are listed above and start
|
//! Naught temperature dependence. They are listed above and start
|
||||||
//! with VCS_SS0_...
|
//! with VCS_SS0_...
|
||||||
int SS0_Model;
|
int SS0_Model;
|
||||||
|
|
||||||
//! Internal storage of the last calculation of the reference naught Gibbs
|
//! Internal storage of the last calculation of the reference naught Gibbs
|
||||||
//! free energy at SS0_TSave. (always in units of Kelvin)
|
//! free energy at SS0_TSave. (always in units of Kelvin)
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public:
|
||||||
* inherited from Kinetics even if the application only has
|
* inherited from Kinetics even if the application only has
|
||||||
* a pointer to Kinetics to work with.
|
* a pointer to Kinetics to work with.
|
||||||
*
|
*
|
||||||
* These routines are basically wrappers around the derived copy constructor.
|
* These routines are basically wrappers around the derived copy constructor.
|
||||||
*
|
*
|
||||||
* @param tpVector Vector of shallow pointers to ThermoPhase objects. this is the
|
* @param tpVector Vector of shallow pointers to ThermoPhase objects. this is the
|
||||||
* m_thermo vector within this object
|
* m_thermo vector within this object
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ protected:
|
||||||
//! Difference between the global reactants order and the global products
|
//! Difference between the global reactants order and the global products
|
||||||
//! order. Of type "double" to account for the fact that we can have real-
|
//! order. Of type "double" to account for the fact that we can have real-
|
||||||
//! valued stoichiometries.
|
//! valued stoichiometries.
|
||||||
vector_fp m_dn;
|
vector_fp m_dn;
|
||||||
|
|
||||||
vector_fp m_conc;
|
vector_fp m_conc;
|
||||||
vector_fp m_grt;
|
vector_fp m_grt;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ public:
|
||||||
//! Constructor.
|
//! Constructor.
|
||||||
FalloffMgr() :
|
FalloffMgr() :
|
||||||
m_worksize(0) {
|
m_worksize(0) {
|
||||||
m_factory = FalloffFactory::factory(); // RFB:TODO This raw pointer should be encapsulated
|
m_factory = FalloffFactory::factory(); // RFB:TODO This raw pointer should be encapsulated
|
||||||
// because accessing a 'Singleton Factory'
|
// because accessing a 'Singleton Factory'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,7 @@ protected:
|
||||||
std::vector<InterfaceKinetics*> m_vecKinPtrs;
|
std::vector<InterfaceKinetics*> m_vecKinPtrs;
|
||||||
|
|
||||||
//! Vector of number of species in each Surface Phase
|
//! Vector of number of species in each Surface Phase
|
||||||
std::vector<size_t> m_nsp;
|
std::vector<size_t> m_nsp;
|
||||||
|
|
||||||
//! index of the surface phase in each InterfaceKinetics object
|
//! index of the surface phase in each InterfaceKinetics object
|
||||||
std::vector<size_t> m_surfindex;
|
std::vector<size_t> m_surfindex;
|
||||||
|
|
@ -240,13 +240,13 @@ protected:
|
||||||
|
|
||||||
size_t m_numBulkPhases;
|
size_t m_numBulkPhases;
|
||||||
std::vector<size_t> m_nspBulkPhases;
|
std::vector<size_t> m_nspBulkPhases;
|
||||||
size_t m_numTotalBulkSpecies;
|
size_t m_numTotalBulkSpecies;
|
||||||
size_t m_numTotalSpecies;
|
size_t m_numTotalSpecies;
|
||||||
|
|
||||||
std::vector<vector_int> pLocVec;
|
std::vector<vector_int> pLocVec;
|
||||||
//! Pointer to the CVODE integrator
|
//! Pointer to the CVODE integrator
|
||||||
Integrator* m_integ;
|
Integrator* m_integ;
|
||||||
doublereal m_atol, m_rtol; // tolerances
|
doublereal m_atol, m_rtol; // tolerances
|
||||||
doublereal m_maxstep; //!< max step size
|
doublereal m_maxstep; //!< max step size
|
||||||
vector_fp m_work;
|
vector_fp m_work;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ class ImplicitSurfChem;
|
||||||
* information about the phases (i.e., temperature pressure, and mole
|
* information about the phases (i.e., temperature pressure, and mole
|
||||||
* fraction).
|
* fraction).
|
||||||
*
|
*
|
||||||
* The extrinsic specification of whether a phase exists or not must be
|
* The extrinsic specification of whether a phase exists or not must be
|
||||||
* specified on top of the intrinsic calculation of the reaction rate. This
|
* specified on top of the intrinsic calculation of the reaction rate. This
|
||||||
* class carries a set of booleans indicating whether a phase in the
|
* class carries a set of booleans indicating whether a phase in the
|
||||||
* heterogeneous mechanism exists or not.
|
* heterogeneous mechanism exists or not.
|
||||||
|
|
@ -113,7 +113,7 @@ public:
|
||||||
*
|
*
|
||||||
* units = J kmol-1
|
* units = J kmol-1
|
||||||
*
|
*
|
||||||
* @param deltaG Output vector of deltaG's for reactions Length:
|
* @param deltaG Output vector of deltaG's for reactions Length:
|
||||||
* nReactions(). If 0, this updates the internally stored values only.
|
* nReactions(). If 0, this updates the internally stored values only.
|
||||||
*/
|
*/
|
||||||
virtual void getDeltaGibbs(doublereal* deltaG);
|
virtual void getDeltaGibbs(doublereal* deltaG);
|
||||||
|
|
@ -283,7 +283,7 @@ public:
|
||||||
|
|
||||||
//! When an electrode reaction rate is optionally specified in terms of its
|
//! When an electrode reaction rate is optionally specified in terms of its
|
||||||
//! exchange current density, adjust kfwd to the standard reaction rate constant form and units.
|
//! exchange current density, adjust kfwd to the standard reaction rate constant form and units.
|
||||||
//! When the BV reaction types are used, keep the exchange current density form.
|
//! When the BV reaction types are used, keep the exchange current density form.
|
||||||
/*!
|
/*!
|
||||||
* For a reaction rate constant that was given in units of Amps/m2 (exchange current
|
* For a reaction rate constant that was given in units of Amps/m2 (exchange current
|
||||||
* density formulation with iECDFormulation == true), convert the rate to
|
* density formulation with iECDFormulation == true), convert the rate to
|
||||||
|
|
@ -498,7 +498,7 @@ protected:
|
||||||
//! Electrochemical transfer coefficient for the forward direction
|
//! Electrochemical transfer coefficient for the forward direction
|
||||||
/*!
|
/*!
|
||||||
* Electrochemical transfer coefficient for all reactions that have transfer reactions
|
* Electrochemical transfer coefficient for all reactions that have transfer reactions
|
||||||
* the reaction is given by m_ctrxn[i]
|
* the reaction is given by m_ctrxn[i]
|
||||||
*/
|
*/
|
||||||
vector_fp m_beta;
|
vector_fp m_beta;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -477,7 +477,7 @@ public:
|
||||||
*
|
*
|
||||||
* units = J kmol-1
|
* units = J kmol-1
|
||||||
*
|
*
|
||||||
* @param deltaG Output vector of deltaG's for reactions Length:
|
* @param deltaG Output vector of deltaG's for reactions Length:
|
||||||
* nReactions().
|
* nReactions().
|
||||||
*/
|
*/
|
||||||
virtual void getDeltaGibbs(doublereal* deltaG) {
|
virtual void getDeltaGibbs(doublereal* deltaG) {
|
||||||
|
|
@ -492,7 +492,7 @@ public:
|
||||||
*
|
*
|
||||||
* units = J kmol-1
|
* units = J kmol-1
|
||||||
*
|
*
|
||||||
* @param deltaM Output vector of deltaM's for reactions Length:
|
* @param deltaM Output vector of deltaM's for reactions Length:
|
||||||
* nReactions().
|
* nReactions().
|
||||||
*/
|
*/
|
||||||
virtual void getDeltaElectrochemPotentials(doublereal* deltaM) {
|
virtual void getDeltaElectrochemPotentials(doublereal* deltaM) {
|
||||||
|
|
@ -947,7 +947,7 @@ protected:
|
||||||
* for the species vector for the n'th phase in the kinetics
|
* for the species vector for the n'th phase in the kinetics
|
||||||
* class.
|
* class.
|
||||||
*/
|
*/
|
||||||
std::vector<size_t> m_start;
|
std::vector<size_t> m_start;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mapping of the phase id, i.e., the id attribute in the XML
|
* Mapping of the phase id, i.e., the id attribute in the XML
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ public:
|
||||||
|
|
||||||
virtual void deleteFactory() {
|
virtual void deleteFactory() {
|
||||||
ScopedLock lock(kinetics_mutex);
|
ScopedLock lock(kinetics_mutex);
|
||||||
delete s_factory ;
|
delete s_factory;
|
||||||
s_factory = 0 ;
|
s_factory = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::vector<R> m_rates;
|
std::vector<R> m_rates;
|
||||||
std::vector<size_t> m_rxn;
|
std::vector<size_t> m_rxn;
|
||||||
|
|
||||||
//! map reaction number to index in m_rxn / m_rates
|
//! map reaction number to index in m_rxn / m_rates
|
||||||
std::map<size_t, size_t> m_indices;
|
std::map<size_t, size_t> m_indices;
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
namespace Cantera
|
namespace Cantera
|
||||||
{
|
{
|
||||||
enum flow_t { NetFlow, OneWayFlow };
|
enum flow_t { NetFlow, OneWayFlow };
|
||||||
|
|
||||||
// forward references
|
// forward references
|
||||||
class Path;
|
class Path;
|
||||||
|
|
@ -33,10 +33,10 @@ public:
|
||||||
virtual ~SpeciesNode() {}
|
virtual ~SpeciesNode() {}
|
||||||
|
|
||||||
// public attributes
|
// public attributes
|
||||||
size_t number; ///< Species number
|
size_t number; ///< Species number
|
||||||
std::string name; ///< Label on graph
|
std::string name; ///< Label on graph
|
||||||
doublereal value; ///< May be used to set node appearance
|
doublereal value; ///< May be used to set node appearance
|
||||||
bool visible; ///< Visible on graph;
|
bool visible; ///< Visible on graph;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name References.
|
* @name References.
|
||||||
|
|
@ -44,10 +44,10 @@ public:
|
||||||
* to another node.
|
* to another node.
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
Path* path(int n) {
|
Path* path(int n) {
|
||||||
return m_paths[n];
|
return m_paths[n];
|
||||||
}
|
}
|
||||||
const Path* path(int n) const {
|
const Path* path(int n) const {
|
||||||
return m_paths[n];
|
return m_paths[n];
|
||||||
}
|
}
|
||||||
//@}
|
//@}
|
||||||
|
|
@ -269,8 +269,7 @@ public:
|
||||||
std::string dashed_color;
|
std::string dashed_color;
|
||||||
std::string element;
|
std::string element;
|
||||||
std::string m_font;
|
std::string m_font;
|
||||||
doublereal threshold,
|
doublereal threshold, bold_min, dashed_max, label_min;
|
||||||
bold_min, dashed_max, label_min;
|
|
||||||
doublereal x_size, y_size;
|
doublereal x_size, y_size;
|
||||||
std::string name, dot_options;
|
std::string name, dot_options;
|
||||||
flow_t flow_type;
|
flow_t flow_type;
|
||||||
|
|
@ -280,14 +279,14 @@ public:
|
||||||
doublereal arrow_hue;
|
doublereal arrow_hue;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
doublereal m_flxmax;
|
doublereal m_flxmax;
|
||||||
std::map<size_t, std::map<size_t, Path*> > m_paths;
|
std::map<size_t, std::map<size_t, Path*> > m_paths;
|
||||||
std::map<size_t, SpeciesNode*> m_nodes;
|
std::map<size_t, SpeciesNode*> m_nodes;
|
||||||
std::vector<Path*> m_pathlist;
|
std::vector<Path*> m_pathlist;
|
||||||
std::vector<std::string> m_include;
|
std::vector<std::string> m_include;
|
||||||
std::vector<std::string> m_exclude;
|
std::vector<std::string> m_exclude;
|
||||||
std::vector<size_t> m_speciesNumber;
|
std::vector<size_t> m_speciesNumber;
|
||||||
std::map<size_t, int> m_rxns;
|
std::map<size_t, int> m_rxns;
|
||||||
size_t m_local;
|
size_t m_local;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -324,7 +323,7 @@ protected:
|
||||||
std::vector<std::vector<int> > m_groups;
|
std::vector<std::vector<int> > m_groups;
|
||||||
std::vector<Group> m_sgroup;
|
std::vector<Group> m_sgroup;
|
||||||
std::vector<std::string> m_elementSymbols;
|
std::vector<std::string> m_elementSymbols;
|
||||||
std::map<size_t, std::map<size_t, std::map<size_t, Group> > > m_transfer;
|
std::map<size_t, std::map<size_t, std::map<size_t, Group> > > m_transfer;
|
||||||
std::vector<bool> m_determinate;
|
std::vector<bool> m_determinate;
|
||||||
Array2D m_atoms;
|
Array2D m_atoms;
|
||||||
std::map<std::string, size_t> m_enamemap;
|
std::map<std::string, size_t> m_enamemap;
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public:
|
||||||
//! Update concentration-dependent parts of the rate coefficient.
|
//! Update concentration-dependent parts of the rate coefficient.
|
||||||
/*!
|
/*!
|
||||||
* For this class, there are no
|
* For this class, there are no
|
||||||
* concentration-dependent parts, so this method does nothing.
|
* concentration-dependent parts, so this method does nothing.
|
||||||
*/
|
*/
|
||||||
void update_C(const doublereal* c) {
|
void update_C(const doublereal* c) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -657,9 +657,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<C1> m_c1_list;
|
std::vector<C1> m_c1_list;
|
||||||
std::vector<C2> m_c2_list;
|
std::vector<C2> m_c2_list;
|
||||||
std::vector<C3> m_c3_list;
|
std::vector<C3> m_c3_list;
|
||||||
std::vector<C_AnyN> m_cn_list;
|
std::vector<C_AnyN> m_cn_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ const int THREE_BODY_RXN = 2;
|
||||||
* The general form for a gas-phase association or dissociation reaction, with a
|
* The general form for a gas-phase association or dissociation reaction, with a
|
||||||
* pressure-dependent rate. Example: CH3 + H (+M) <-> CH4 (+M)
|
* pressure-dependent rate. Example: CH3 + H (+M) <-> CH4 (+M)
|
||||||
*/
|
*/
|
||||||
const int FALLOFF_RXN = 4;
|
const int FALLOFF_RXN = 4;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A pressure-dependent rate expression consisting of several Arrhenius rate
|
* A pressure-dependent rate expression consisting of several Arrhenius rate
|
||||||
|
|
@ -61,7 +61,7 @@ const int CHEBYSHEV_RXN = 6;
|
||||||
* a reaction intermediate. Example: Si + SiH4 (+M) <-> Si2H2 + H2
|
* a reaction intermediate. Example: Si + SiH4 (+M) <-> Si2H2 + H2
|
||||||
* (+M), which competes with Si + SiH4 (+M) <-> Si2H4 (+M).
|
* (+M), which competes with Si + SiH4 (+M) <-> Si2H4 (+M).
|
||||||
*/
|
*/
|
||||||
const int CHEMACT_RXN = 8;
|
const int CHEMACT_RXN = 8;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A reaction occurring on a surface.
|
* A reaction occurring on a surface.
|
||||||
|
|
@ -69,7 +69,7 @@ const int CHEMACT_RXN = 8;
|
||||||
* The dimensionality of the interface is a separate concept from the type
|
* The dimensionality of the interface is a separate concept from the type
|
||||||
* of the reaction.
|
* of the reaction.
|
||||||
*/
|
*/
|
||||||
const int SURFACE_RXN = 20;
|
const int SURFACE_RXN = 20;
|
||||||
|
|
||||||
//! A reaction occurring on an interface, e.g a surface or edge.
|
//! A reaction occurring on an interface, e.g a surface or edge.
|
||||||
const int INTERFACE_RXN = 20;
|
const int INTERFACE_RXN = 20;
|
||||||
|
|
@ -97,13 +97,13 @@ const int SURFACEAFFINITY_RXN = 27;
|
||||||
* The dimensionality of the interface is a separate concept from the type
|
* The dimensionality of the interface is a separate concept from the type
|
||||||
* of the reaction.
|
* of the reaction.
|
||||||
*/
|
*/
|
||||||
const int EDGE_RXN = 22;
|
const int EDGE_RXN = 22;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A global reaction. These may have non-mass action reaction orders,
|
* A global reaction. These may have non-mass action reaction orders,
|
||||||
* and are not allowed to be reversible.
|
* and are not allowed to be reversible.
|
||||||
*/
|
*/
|
||||||
const int GLOBAL_RXN = 30;
|
const int GLOBAL_RXN = 30;
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
@ -133,7 +133,7 @@ const int CHEBYSHEV_REACTION_RATECOEFF_TYPE = 8;
|
||||||
//@{
|
//@{
|
||||||
const int SIMPLE_FALLOFF = 100;
|
const int SIMPLE_FALLOFF = 100;
|
||||||
const int TROE_FALLOFF = 110;
|
const int TROE_FALLOFF = 110;
|
||||||
const int SRI_FALLOFF = 112;
|
const int SRI_FALLOFF = 112;
|
||||||
//@}
|
//@}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ namespace Cantera
|
||||||
* values defined in @ref solvesp_methods.
|
* values defined in @ref solvesp_methods.
|
||||||
*
|
*
|
||||||
* ### Pseudo time stepping algorithm:
|
* ### Pseudo time stepping algorithm:
|
||||||
* The time step is determined from sdot[], so so that the time step
|
* The time step is determined from sdot[], so that the time step
|
||||||
* doesn't ever change the value of a variable by more than 100%.
|
* doesn't ever change the value of a variable by more than 100%.
|
||||||
*
|
*
|
||||||
* This algorithm does use a damped Newton's method to relax the equations.
|
* This algorithm does use a damped Newton's method to relax the equations.
|
||||||
|
|
@ -132,7 +132,7 @@ namespace Cantera
|
||||||
*
|
*
|
||||||
* `EXTRA_ACCURACY`: A constant that is the ratio of the required update norm
|
* `EXTRA_ACCURACY`: A constant that is the ratio of the required update norm
|
||||||
* in this Newton iteration compared to that in the nonlinear solver. A value
|
* in this Newton iteration compared to that in the nonlinear solver. A value
|
||||||
* of 0.1 is used so surface species are safely overconverged.
|
* of 0.1 is used so surface species are safely overconverged.
|
||||||
*
|
*
|
||||||
* Functions called:
|
* Functions called:
|
||||||
* - `ct_dgetrf` -- First half of LAPACK direct solve of a full Matrix
|
* - `ct_dgetrf` -- First half of LAPACK direct solve of a full Matrix
|
||||||
|
|
@ -217,7 +217,7 @@ private:
|
||||||
* @param netProdRateSolnSP Output variable. Net production rate of all
|
* @param netProdRateSolnSP Output variable. Net production rate of all
|
||||||
* of the species in the solution vector.
|
* of the species in the solution vector.
|
||||||
* @param XMolSolnSP output variable. Mole fraction of all of the species
|
* @param XMolSolnSP output variable. Mole fraction of all of the species
|
||||||
* in the solution vector
|
* in the solution vector
|
||||||
* @param label Output variable. Pointer to the value of the species
|
* @param label Output variable. Pointer to the value of the species
|
||||||
* index (kindexSP) that is controlling the time step
|
* index (kindexSP) that is controlling the time step
|
||||||
* @param label_old Output variable. Pointer to the value of the species
|
* @param label_old Output variable. Pointer to the value of the species
|
||||||
|
|
@ -288,8 +288,8 @@ private:
|
||||||
* @param do_time Calculate a time dependent residual
|
* @param do_time Calculate a time dependent residual
|
||||||
* @param deltaT Delta time for time dependent problem.
|
* @param deltaT Delta time for time dependent problem.
|
||||||
*/
|
*/
|
||||||
void fun_eval(doublereal* resid, const doublereal* CSolnSP,
|
void fun_eval(doublereal* resid, const doublereal* CSolnSP,
|
||||||
const doublereal* CSolnOldSP, const bool do_time, const doublereal deltaT);
|
const doublereal* CSolnOldSP, const bool do_time, const doublereal deltaT);
|
||||||
|
|
||||||
//! Main routine that calculates the current residual and Jacobian
|
//! Main routine that calculates the current residual and Jacobian
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -305,7 +305,7 @@ private:
|
||||||
*/
|
*/
|
||||||
void resjac_eval(SquareMatrix& jac, doublereal* resid,
|
void resjac_eval(SquareMatrix& jac, doublereal* resid,
|
||||||
doublereal* CSolnSP,
|
doublereal* CSolnSP,
|
||||||
const doublereal* CSolnSPOld, const bool do_time,
|
const doublereal* CSolnSPOld, const bool do_time,
|
||||||
const doublereal deltaT);
|
const doublereal deltaT);
|
||||||
|
|
||||||
//! Pointer to the manager of the implicit surface chemistry problem
|
//! Pointer to the manager of the implicit surface chemistry problem
|
||||||
|
|
@ -397,7 +397,7 @@ private:
|
||||||
* This is equal to or less than the total number of volumetric phases in
|
* This is equal to or less than the total number of volumetric phases in
|
||||||
* all of the InterfaceKinetics objects. We usually do not include bulk
|
* all of the InterfaceKinetics objects. We usually do not include bulk
|
||||||
* phases. Bulk phases are only included in the calculation when their
|
* phases. Bulk phases are only included in the calculation when their
|
||||||
* domain isn't included in the underlying continuum model conservation
|
* domain isn't included in the underlying continuum model conservation
|
||||||
* equation system.
|
* equation system.
|
||||||
*
|
*
|
||||||
* This is equal to 0, for the time being
|
* This is equal to 0, for the time being
|
||||||
|
|
@ -408,7 +408,7 @@ private:
|
||||||
/*!
|
/*!
|
||||||
* Length is number of bulk phases
|
* Length is number of bulk phases
|
||||||
*/
|
*/
|
||||||
std::vector<size_t> m_numBulkSpecies;
|
std::vector<size_t> m_numBulkSpecies;
|
||||||
|
|
||||||
//! Total number of species in all bulk phases.
|
//! Total number of species in all bulk phases.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -444,7 +444,7 @@ private:
|
||||||
* varies from 0 to (num species in phase - 1) and `i` is the surface
|
* varies from 0 to (num species in phase - 1) and `i` is the surface
|
||||||
* phase index in the problem. Length is equal to #m_numSurfPhases.
|
* phase index in the problem. Length is equal to #m_numSurfPhases.
|
||||||
*/
|
*/
|
||||||
std::vector<size_t> m_spSurfLarge;
|
std::vector<size_t> m_spSurfLarge;
|
||||||
|
|
||||||
//! The absolute tolerance in real units. units are (kmol/m2)
|
//! The absolute tolerance in real units. units are (kmol/m2)
|
||||||
doublereal m_atol;
|
doublereal m_atol;
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ public:
|
||||||
|
|
||||||
//! Return the value of element (i,j).
|
//! Return the value of element (i,j).
|
||||||
/*!
|
/*!
|
||||||
* This method does not alter the array.
|
* This method does not alter the array.
|
||||||
* @param i row
|
* @param i row
|
||||||
* @param j column
|
* @param j column
|
||||||
* @return Returns the value of the matrix entry
|
* @return Returns the value of the matrix entry
|
||||||
|
|
@ -299,7 +299,7 @@ protected:
|
||||||
doublereal m_zero;
|
doublereal m_zero;
|
||||||
|
|
||||||
//! Pivot vector
|
//! Pivot vector
|
||||||
vector_int m_ipiv;
|
vector_int m_ipiv;
|
||||||
|
|
||||||
//! Vector of column pointers
|
//! Vector of column pointers
|
||||||
std::vector<doublereal*> m_colPtrs;
|
std::vector<doublereal*> m_colPtrs;
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ private:
|
||||||
int m_maxsteps;
|
int m_maxsteps;
|
||||||
int m_maxErrTestFails;
|
int m_maxErrTestFails;
|
||||||
FuncData* m_fdata;
|
FuncData* m_fdata;
|
||||||
N_Vector* m_yS;
|
N_Vector* m_yS;
|
||||||
size_t m_np;
|
size_t m_np;
|
||||||
int m_mupper, m_mlower;
|
int m_mupper, m_mlower;
|
||||||
|
|
||||||
|
|
@ -118,7 +118,7 @@ private:
|
||||||
bool m_sens_ok;
|
bool m_sens_ok;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,7 @@ protected:
|
||||||
ResidJacEval& m_resid;
|
ResidJacEval& m_resid;
|
||||||
|
|
||||||
//! Number of total equations in the system
|
//! Number of total equations in the system
|
||||||
integer m_neq;
|
integer m_neq;
|
||||||
doublereal m_time;
|
doublereal m_time;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public:
|
||||||
* LAPACK is handled by either throwing an exception of type, CELapackError, or by
|
* LAPACK is handled by either throwing an exception of type, CELapackError, or by
|
||||||
* returning the error code condition to the calling routine.
|
* returning the error code condition to the calling routine.
|
||||||
*
|
*
|
||||||
* The int variable, m_useReturnErrorCode, determines which method is used.
|
* The int variable, m_useReturnErrorCode, determines which method is used.
|
||||||
* The default value of zero means that an exception is thrown. A value of 1
|
* The default value of zero means that an exception is thrown. A value of 1
|
||||||
* means that a return code is used.
|
* means that a return code is used.
|
||||||
*
|
*
|
||||||
|
|
@ -102,7 +102,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void resize(size_t n, size_t m, doublereal v = 0.0);
|
void resize(size_t n, size_t m, doublereal v = 0.0);
|
||||||
|
|
||||||
virtual doublereal* const* colPts();
|
virtual doublereal* const* colPts();
|
||||||
|
|
||||||
//! Return a const vector of const pointers to the columns
|
//! Return a const vector of const pointers to the columns
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -148,7 +148,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Vector of pivots. Length is equal to the max of m and n.
|
//! Vector of pivots. Length is equal to the max of m and n.
|
||||||
vector_int m_ipiv;
|
vector_int m_ipiv;
|
||||||
|
|
||||||
//! Vector of column pointers
|
//! Vector of column pointers
|
||||||
std::vector<doublereal*> m_colPts;
|
std::vector<doublereal*> m_colPts;
|
||||||
|
|
|
||||||
|
|
@ -339,7 +339,7 @@ public:
|
||||||
m_f2 = &m_f2->duplicate();
|
m_f2 = &m_f2->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_f2->setParent(this);
|
m_f2->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -402,7 +402,7 @@ public:
|
||||||
m_f2 = &m_f2->duplicate();
|
m_f2 = &m_f2->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_f2->setParent(this);
|
m_f2->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -463,7 +463,7 @@ public:
|
||||||
m_f2 = &m_f2->duplicate();
|
m_f2 = &m_f2->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_f2->setParent(this);
|
m_f2->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -522,7 +522,7 @@ public:
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_f1 = &m_f1->duplicate();
|
m_f1 = &m_f1->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
virtual int ID() const {
|
virtual int ID() const {
|
||||||
|
|
@ -597,7 +597,7 @@ public:
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_f1 = &m_f1->duplicate();
|
m_f1 = &m_f1->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -658,7 +658,7 @@ public:
|
||||||
m_f2 = &m_f2->duplicate();
|
m_f2 = &m_f2->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_f2->setParent(this);
|
m_f2->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -724,7 +724,7 @@ public:
|
||||||
m_f2 = &m_f2->duplicate();
|
m_f2 = &m_f2->duplicate();
|
||||||
m_f1->setParent(this);
|
m_f1->setParent(this);
|
||||||
m_f2->setParent(this);
|
m_f2->setParent(this);
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -791,10 +791,10 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_A = right.m_A;
|
m_A = right.m_A;
|
||||||
m_t0 = right.m_t0;
|
m_t0 = right.m_t0;
|
||||||
m_tau = right.m_tau;
|
m_tau = right.m_tau;
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -836,9 +836,9 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_cpoly = right.m_cpoly;
|
m_cpoly = right.m_cpoly;
|
||||||
m_n = right.m_n;
|
m_n = right.m_n;
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -896,11 +896,11 @@ public:
|
||||||
}
|
}
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_omega = right.m_omega;
|
m_omega = right.m_omega;
|
||||||
m_a0_2 = right.m_a0_2;
|
m_a0_2 = right.m_a0_2;
|
||||||
m_ccos = right.m_ccos;
|
m_ccos = right.m_ccos;
|
||||||
m_csin = right.m_csin;
|
m_csin = right.m_csin;
|
||||||
m_n = right.m_n;
|
m_n = right.m_n;
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -960,11 +960,11 @@ public:
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
Func1::operator=(right);
|
Func1::operator=(right);
|
||||||
m_n = right.m_n;
|
m_n = right.m_n;
|
||||||
m_A = right.m_A;
|
m_A = right.m_A;
|
||||||
m_b = right.m_b;
|
m_b = right.m_b;
|
||||||
m_E = right.m_E;
|
m_E = right.m_E;
|
||||||
m_parent = 0;
|
m_parent = 0;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,10 @@
|
||||||
#include "sundials/sundials_nvector.h"
|
#include "sundials/sundials_nvector.h"
|
||||||
|
|
||||||
// These constants are defined internally in the IDA package, ida.c
|
// These constants are defined internally in the IDA package, ida.c
|
||||||
#define IDA_NN 0
|
#define IDA_NN 0
|
||||||
#define IDA_SS 1
|
#define IDA_SS 1
|
||||||
#define IDA_SV 2
|
#define IDA_SV 2
|
||||||
#define IDA_WF 3
|
#define IDA_WF 3
|
||||||
|
|
||||||
#define REAL_WORKSPACE_SIZE 0
|
#define REAL_WORKSPACE_SIZE 0
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ public:
|
||||||
|
|
||||||
//! Set the stop time
|
//! Set the stop time
|
||||||
/*!
|
/*!
|
||||||
* @param tstop the independent variable value past which the solution is not to proceed.
|
* @param tstop the independent variable value past which the solution is not to proceed.
|
||||||
*/
|
*/
|
||||||
virtual void setStopTime(doublereal tstop);
|
virtual void setStopTime(doublereal tstop);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,20 +17,20 @@
|
||||||
namespace Cantera
|
namespace Cantera
|
||||||
{
|
{
|
||||||
|
|
||||||
const int DIAG = 1;
|
const int DIAG = 1;
|
||||||
const int DENSE = 2;
|
const int DENSE = 2;
|
||||||
const int NOJAC = 4;
|
const int NOJAC = 4;
|
||||||
const int JAC = 8;
|
const int JAC = 8;
|
||||||
const int GMRES =16;
|
const int GMRES = 16;
|
||||||
const int BAND =32;
|
const int BAND = 32;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specifies the method used to integrate the system of equations.
|
* Specifies the method used to integrate the system of equations.
|
||||||
* Not all methods are supported by all integrators.
|
* Not all methods are supported by all integrators.
|
||||||
*/
|
*/
|
||||||
enum MethodType {
|
enum MethodType {
|
||||||
BDF_Method, /**< Backward Differentiation */
|
BDF_Method, /**< Backward Differentiation */
|
||||||
Adams_Method /**< Adams */
|
Adams_Method /**< Adams */
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Specifies the method used for iteration.
|
//! Specifies the method used for iteration.
|
||||||
|
|
@ -212,6 +212,6 @@ private:
|
||||||
// defined in ODE_integrators.cpp
|
// defined in ODE_integrators.cpp
|
||||||
Integrator* newIntegrator(const std::string& itype);
|
Integrator* newIntegrator(const std::string& itype);
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -44,9 +44,9 @@ enum ResidEval_Type_Enum {
|
||||||
|
|
||||||
//! Wrappers for the function evaluators for Nonlinear solvers and Time steppers
|
//! Wrappers for the function evaluators for Nonlinear solvers and Time steppers
|
||||||
/*!
|
/*!
|
||||||
* A class for full (non-sparse dense matrices with Fortran-compatible data storage.
|
* A class for full (non-sparse dense matrices with Fortran-compatible data storage.
|
||||||
* The class adds support for identifying what types of calls are made to the residual
|
* The class adds support for identifying what types of calls are made to the residual
|
||||||
* evaluator by adding the ResidEval_Type_Enum class.
|
* evaluator by adding the ResidEval_Type_Enum class.
|
||||||
*/
|
*/
|
||||||
class ResidJacEval : public ResidEval
|
class ResidJacEval : public ResidEval
|
||||||
{
|
{
|
||||||
|
|
@ -106,7 +106,7 @@ public:
|
||||||
const doublereal* const ydot,
|
const doublereal* const ydot,
|
||||||
doublereal* const r);
|
doublereal* const r);
|
||||||
|
|
||||||
virtual int getInitialConditions(const doublereal t0, doublereal* const y, doublereal* const ydot);
|
virtual int getInitialConditions(const doublereal t0, doublereal* const y, doublereal* const ydot);
|
||||||
|
|
||||||
//! Filter the solution predictions
|
//! Filter the solution predictions
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -152,8 +152,8 @@ public:
|
||||||
* 1 Means a successful operation
|
* 1 Means a successful operation
|
||||||
* -0 or neg value Means an unsuccessful operation
|
* -0 or neg value Means an unsuccessful operation
|
||||||
*/
|
*/
|
||||||
virtual int evalTimeTrackingEqns(const doublereal t, const doublereal delta_t, const doublereal* const y,
|
virtual int evalTimeTrackingEqns(const doublereal t, const doublereal delta_t, const doublereal* const y,
|
||||||
const doublereal* const ydot);
|
const doublereal* const ydot);
|
||||||
|
|
||||||
//! Evaluate any stopping criteria other than a final time limit
|
//! Evaluate any stopping criteria other than a final time limit
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -256,8 +256,8 @@ public:
|
||||||
* 1 Means a successful operation
|
* 1 Means a successful operation
|
||||||
* -0 or neg value Means an unsuccessful operation
|
* -0 or neg value Means an unsuccessful operation
|
||||||
*/
|
*/
|
||||||
virtual int matrixConditioning(doublereal* const matrix, const int nrows,
|
virtual int matrixConditioning(doublereal* const matrix, const int nrows,
|
||||||
doublereal* const rhs);
|
doublereal* const rhs);
|
||||||
|
|
||||||
//! Calculate an analytical Jacobian and the residual at the current time and values.
|
//! Calculate an analytical Jacobian and the residual at the current time and values.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -287,7 +287,7 @@ public:
|
||||||
* @param cj Coefficient of yprime used in the evaluation of the Jacobian
|
* @param cj Coefficient of yprime used in the evaluation of the Jacobian
|
||||||
* @param y Solution vector (input, do not modify)
|
* @param y Solution vector (input, do not modify)
|
||||||
* @param ydot Rate of change of solution vector. (input, do not modify)
|
* @param ydot Rate of change of solution vector. (input, do not modify)
|
||||||
* @param jacobianColPts Pointer to the vector of pts to columns of the SquareMatrix
|
* @param jacobianColPts Pointer to the vector of pts to columns of the SquareMatrix
|
||||||
* object to be calculated (output)
|
* object to be calculated (output)
|
||||||
* @param resid Value of the residual that is computed (output)
|
* @param resid Value of the residual that is computed (output)
|
||||||
* @return Returns a flag to indicate that operation is successful.
|
* @return Returns a flag to indicate that operation is successful.
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ namespace Cantera
|
||||||
/// @name Constant which determines the return integer from the routine
|
/// @name Constant which determines the return integer from the routine
|
||||||
|
|
||||||
//! This means that the root solver was a success
|
//! This means that the root solver was a success
|
||||||
#define ROOTFIND_SUCCESS 0
|
#define ROOTFIND_SUCCESS 0
|
||||||
//! This return value means that the root finder resolved a solution in the x coordinate
|
//! This return value means that the root finder resolved a solution in the x coordinate
|
||||||
//! However, convergence in F was not achieved.
|
//! However, convergence in F was not achieved.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -36,13 +36,13 @@ namespace Cantera
|
||||||
*/
|
*/
|
||||||
#define ROOTFIND_SUCCESS_XCONVERGENCEONLY 1
|
#define ROOTFIND_SUCCESS_XCONVERGENCEONLY 1
|
||||||
//! This means that the root solver failed to achieve convergence
|
//! This means that the root solver failed to achieve convergence
|
||||||
#define ROOTFIND_FAILEDCONVERGENCE -1
|
#define ROOTFIND_FAILEDCONVERGENCE -1
|
||||||
//! This means that the input to the root solver was defective
|
//! This means that the input to the root solver was defective
|
||||||
#define ROOTFIND_BADINPUT -2
|
#define ROOTFIND_BADINPUT -2
|
||||||
//! This means that the rootfinder believes the solution is lower than xmin
|
//! This means that the rootfinder believes the solution is lower than xmin
|
||||||
#define ROOTFIND_SOLNLOWERTHANXMIN -3
|
#define ROOTFIND_SOLNLOWERTHANXMIN -3
|
||||||
//! This means that the rootfinder believes the solution is higher than xmax
|
//! This means that the rootfinder believes the solution is higher than xmax
|
||||||
#define ROOTFIND_SOLNHIGHERTHANXMAX -4
|
#define ROOTFIND_SOLNHIGHERTHANXMAX -4
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
//! Root finder for 1D problems
|
//! Root finder for 1D problems
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@ public:
|
||||||
|
|
||||||
virtual GeneralMatrix* duplMyselfAsGeneralMatrix() const;
|
virtual GeneralMatrix* duplMyselfAsGeneralMatrix() const;
|
||||||
|
|
||||||
virtual vector_fp::iterator begin();
|
virtual vector_fp::iterator begin();
|
||||||
virtual vector_fp::const_iterator begin() const;
|
virtual vector_fp::const_iterator begin() const;
|
||||||
|
|
||||||
virtual doublereal* const* colPts();
|
virtual doublereal* const* colPts();
|
||||||
|
|
|
||||||
|
|
@ -130,22 +130,22 @@ extern "C" {
|
||||||
int _DSCAL_(integer* n, doublereal* da, doublereal* dx, integer* incx);
|
int _DSCAL_(integer* n, doublereal* da, doublereal* dx, integer* incx);
|
||||||
|
|
||||||
int _DGEQRF_(const integer* m, const integer* n, doublereal* a, const integer* lda,
|
int _DGEQRF_(const integer* m, const integer* n, doublereal* a, const integer* lda,
|
||||||
doublereal* tau, doublereal* work, const integer* lwork, integer* info);
|
doublereal* tau, doublereal* work, const integer* lwork, integer* info);
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DORMQR_(const char* side, const char* trans, const integer* m, const integer* n,
|
int _DORMQR_(const char* side, const char* trans, const integer* m, const integer* n,
|
||||||
const integer* k, doublereal* a, const integer* lda,
|
const integer* k, doublereal* a, const integer* lda,
|
||||||
doublereal* tau, doublereal* c, const integer* ldc,
|
doublereal* tau, doublereal* c, const integer* ldc,
|
||||||
doublereal* work, const integer* lwork, integer* info, ftnlen sisize, ftnlen trsize);
|
doublereal* work, const integer* lwork, integer* info, ftnlen sisize, ftnlen trsize);
|
||||||
#else
|
#else
|
||||||
int _DORMQR_(const char* side, ftnlen sisize, const char* trans, ftnlen trsize, const integer* m,
|
int _DORMQR_(const char* side, ftnlen sisize, const char* trans, ftnlen trsize, const integer* m,
|
||||||
const integer* n, const integer* k, doublereal* a, const integer* lda,
|
const integer* n, const integer* k, doublereal* a, const integer* lda,
|
||||||
doublereal* tau,doublereal* c, const integer* ldc,
|
doublereal* tau,doublereal* c, const integer* ldc,
|
||||||
doublereal* work, const integer* lwork, integer* info);
|
doublereal* work, const integer* lwork, integer* info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DTRTRS_(const char* uplo, const char* trans, const char* diag, const integer* n,
|
int _DTRTRS_(const char* uplo, const char* trans, const char* diag, const integer* n,
|
||||||
const integer* nrhs, doublereal* a, const integer* lda,
|
const integer* nrhs, doublereal* a, const integer* lda,
|
||||||
doublereal* b, const integer* ldb, integer* info,
|
doublereal* b, const integer* ldb, integer* info,
|
||||||
ftnlen upsize, ftnlen trsize, ftnlen disize);
|
ftnlen upsize, ftnlen trsize, ftnlen disize);
|
||||||
|
|
@ -157,7 +157,7 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DTRCON_(const char* norm, const char* uplo, const char* diag, const integer* n,
|
int _DTRCON_(const char* norm, const char* uplo, const char* diag, const integer* n,
|
||||||
doublereal* a, const integer* lda, const doublereal* rcond,
|
doublereal* a, const integer* lda, const doublereal* rcond,
|
||||||
doublereal* work, const integer* iwork, integer* info, ftnlen nosize,
|
doublereal* work, const integer* iwork, integer* info, ftnlen nosize,
|
||||||
ftnlen upsize, ftnlen disize);
|
ftnlen upsize, ftnlen disize);
|
||||||
|
|
@ -169,23 +169,23 @@ extern "C" {
|
||||||
|
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DPOTRF_(const char* uplo, const integer* n, doublereal* a, const integer* lda, integer* info,
|
int _DPOTRF_(const char* uplo, const integer* n, doublereal* a, const integer* lda, integer* info,
|
||||||
ftnlen upsize);
|
ftnlen upsize);
|
||||||
#else
|
#else
|
||||||
int _DPOTRF_(const char* uplo, ftnlen upsize, const integer* n, doublereal* a, const integer* lda,
|
int _DPOTRF_(const char* uplo, ftnlen upsize, const integer* n, doublereal* a, const integer* lda,
|
||||||
integer* info);
|
integer* info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DPOTRS_(const char* uplo, const integer* n, const integer* nrhs, doublereal* a, const integer* lda,
|
int _DPOTRS_(const char* uplo, const integer* n, const integer* nrhs, doublereal* a, const integer* lda,
|
||||||
doublereal* b, const integer* ldb, integer* info, ftnlen upsize);
|
doublereal* b, const integer* ldb, integer* info, ftnlen upsize);
|
||||||
#else
|
#else
|
||||||
int _DPOTRS_(const char* uplo, ftnlen upsize, const integer* n, const integer* nrhs, doublereal* a, const integer* lda,
|
int _DPOTRS_(const char* uplo, ftnlen upsize, const integer* n, const integer* nrhs, doublereal* a, const integer* lda,
|
||||||
doublereal* b, const integer* ldb, integer* info);
|
doublereal* b, const integer* ldb, integer* info);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
int _DGECON_(const char* norm, const integer* n, doublereal* a, const integer* lda,
|
int _DGECON_(const char* norm, const integer* n, doublereal* a, const integer* lda,
|
||||||
const doublereal* rnorm, const doublereal* rcond,
|
const doublereal* rnorm, const doublereal* rcond,
|
||||||
doublereal* work, const integer* iwork, integer* info, ftnlen nosize);
|
doublereal* work, const integer* iwork, integer* info, ftnlen nosize);
|
||||||
#else
|
#else
|
||||||
|
|
@ -199,7 +199,7 @@ extern "C" {
|
||||||
const integer* ipiv, const doublereal* anorm, const doublereal* rcond,
|
const integer* ipiv, const doublereal* anorm, const doublereal* rcond,
|
||||||
doublereal* work, const integer* iwork, integer* info, ftnlen nosize);
|
doublereal* work, const integer* iwork, integer* info, ftnlen nosize);
|
||||||
#else
|
#else
|
||||||
int _DGBCON_(const char* norm, ftnlen nosize, const integer* n, integer* kl, integer* ku, doublereal* ab, const integer* ldab,
|
int _DGBCON_(const char* norm, ftnlen nosize, const integer* n, integer* kl, integer* ku, doublereal* ab, const integer* ldab,
|
||||||
const integer* ipiv, const doublereal* anorm, const doublereal* rcond,
|
const integer* ipiv, const doublereal* anorm, const doublereal* rcond,
|
||||||
doublereal* work, const integer* iwork, integer* info);
|
doublereal* work, const integer* iwork, integer* info);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -387,13 +387,13 @@ inline void ct_dormqr(ctlapack::side_t rlside, ctlapack::transpose_t trans, size
|
||||||
integer f_ldc = static_cast<integer>(ldc);
|
integer f_ldc = static_cast<integer>(ldc);
|
||||||
integer f_info = 0;
|
integer f_info = 0;
|
||||||
#ifdef NO_FTN_STRING_LEN_AT_END
|
#ifdef NO_FTN_STRING_LEN_AT_END
|
||||||
_DORMQR_(&side, &tr, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info);
|
_DORMQR_(&side, &tr, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info);
|
||||||
#else
|
#else
|
||||||
ftnlen trsize = 1;
|
ftnlen trsize = 1;
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
_DORMQR_(&side, &tr, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info, trsize, trsize);
|
_DORMQR_(&side, &tr, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info, trsize, trsize);
|
||||||
#else
|
#else
|
||||||
_DORMQR_(&side, trsize, &tr, trsize, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info);
|
_DORMQR_(&side, trsize, &tr, trsize, &f_m, &f_n, &f_k, a, &f_lda, tau, c, &f_ldc, work, &f_lwork, &f_info);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
info = f_info;
|
info = f_info;
|
||||||
|
|
@ -430,7 +430,7 @@ inline void ct_dtrtrs(ctlapack::upperlower_t uplot, ctlapack::transpose_t trans,
|
||||||
* @param work Must be dimensioned equal to greater than 3N
|
* @param work Must be dimensioned equal to greater than 3N
|
||||||
* @param iwork Must be dimensioned equal to or greater than N
|
* @param iwork Must be dimensioned equal to or greater than N
|
||||||
*/
|
*/
|
||||||
inline doublereal ct_dtrcon(const char* norm, ctlapack::upperlower_t uplot, const char* diag,
|
inline doublereal ct_dtrcon(const char* norm, ctlapack::upperlower_t uplot, const char* diag,
|
||||||
size_t n, doublereal* a, size_t lda, doublereal* work, int* iwork, int& info)
|
size_t n, doublereal* a, size_t lda, doublereal* work, int* iwork, int& info)
|
||||||
{
|
{
|
||||||
char uplo = upper_lower[uplot];
|
char uplo = upper_lower[uplot];
|
||||||
|
|
@ -518,13 +518,13 @@ inline doublereal ct_dgecon(const char norm, size_t n, doublereal* a, size_t lda
|
||||||
doublereal rcond;
|
doublereal rcond;
|
||||||
|
|
||||||
#ifdef NO_FTN_STRING_LEN_AT_END
|
#ifdef NO_FTN_STRING_LEN_AT_END
|
||||||
_DGECON_(&cnorm, &f_n a, &f_lda, &anorm, &rcond, work, iwork, &f_info);
|
_DGECON_(&cnorm, &f_n a, &f_lda, &anorm, &rcond, work, iwork, &f_info);
|
||||||
#else
|
#else
|
||||||
ftnlen trsize = 1;
|
ftnlen trsize = 1;
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
_DGECON_(&cnorm, &f_n, a, &f_lda, &anorm, &rcond, work, iwork, &f_info, trsize);
|
_DGECON_(&cnorm, &f_n, a, &f_lda, &anorm, &rcond, work, iwork, &f_info, trsize);
|
||||||
#else
|
#else
|
||||||
_DGECON_(&cnorm, trsize, &f_n, a, &f_lda, &anorm, &rcond, work, iwork, &f_info);
|
_DGECON_(&cnorm, trsize, &f_n, a, &f_lda, &anorm, &rcond, work, iwork, &f_info);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
info = f_info;
|
info = f_info;
|
||||||
|
|
@ -573,13 +573,13 @@ inline doublereal ct_dlange(const char norm, size_t m, size_t n, doublereal* a,
|
||||||
doublereal anorm;
|
doublereal anorm;
|
||||||
|
|
||||||
#ifdef NO_FTN_STRING_LEN_AT_END
|
#ifdef NO_FTN_STRING_LEN_AT_END
|
||||||
anorm = _DLANGE_(&cnorm, &f_m, &f_n a, &f_lda, work);
|
anorm = _DLANGE_(&cnorm, &f_m, &f_n a, &f_lda, work);
|
||||||
#else
|
#else
|
||||||
ftnlen trsize = 1;
|
ftnlen trsize = 1;
|
||||||
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
#ifdef LAPACK_FTN_STRING_LEN_AT_END
|
||||||
anorm = _DLANGE_(&cnorm, &f_m, &f_n, a, &f_lda, work, trsize);
|
anorm = _DLANGE_(&cnorm, &f_m, &f_n, a, &f_lda, work, trsize);
|
||||||
#else
|
#else
|
||||||
anorm = _DLANGE_(&cnorm, trsize, &f_m, &f_n, a, &f_lda, work);
|
anorm = _DLANGE_(&cnorm, trsize, &f_m, &f_n, a, &f_lda, work);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return anorm;
|
return anorm;
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,12 @@ namespace Cantera
|
||||||
/*!
|
/*!
|
||||||
* Given a collection of points X(I) and a set of values Y(I) which
|
* Given a collection of points X(I) and a set of values Y(I) which
|
||||||
* correspond to some function or measurement at each of the X(I),
|
* correspond to some function or measurement at each of the X(I),
|
||||||
* subroutine DPOLFT computes the weighted least-squares polynomial
|
* subroutine DPOLFT computes the weighted least-squares polynomial
|
||||||
* fits of all degrees up to some degree either specified by the user
|
* fits of all degrees up to some degree either specified by the user
|
||||||
* or determined by the routine. The fits thus obtained are in
|
* or determined by the routine. The fits thus obtained are in
|
||||||
* orthogonal polynomial form. Subroutine DP1VLU may then be
|
* orthogonal polynomial form. Subroutine DP1VLU may then be
|
||||||
* called to evaluate the fitted polynomials and any of their
|
* called to evaluate the fitted polynomials and any of their
|
||||||
* derivatives at any point. The subroutine DPCOEF may be used to
|
* derivatives at any point. The subroutine DPCOEF may be used to
|
||||||
* express the polynomial fits as powers of (X-C) for any specified
|
* express the polynomial fits as powers of (X-C) for any specified
|
||||||
* point C.
|
* point C.
|
||||||
*
|
*
|
||||||
|
|
@ -34,34 +34,34 @@ namespace Cantera
|
||||||
* distinct. There are n of them.
|
* distinct. There are n of them.
|
||||||
* @param y array of corresponding function values. There are n of them
|
* @param y array of corresponding function values. There are n of them
|
||||||
* @param w array of positive values to be used as weights. If
|
* @param w array of positive values to be used as weights. If
|
||||||
* W[0] is negative, DPOLFT will set all the weights
|
* W[0] is negative, DPOLFT will set all the weights
|
||||||
* to 1.0, which means unweighted least squares error
|
* to 1.0, which means unweighted least squares error
|
||||||
* will be minimized. To minimize relative error, the
|
* will be minimized. To minimize relative error, the
|
||||||
* user should set the weights to: W(I) = 1.0/Y(I)**2,
|
* user should set the weights to: W(I) = 1.0/Y(I)**2,
|
||||||
* I = 1,...,N .
|
* I = 1,...,N .
|
||||||
* @param maxdeg maximum degree to be allowed for polynomial fit.
|
* @param maxdeg maximum degree to be allowed for polynomial fit.
|
||||||
* MAXDEG may be any non-negative integer less than N.
|
* MAXDEG may be any non-negative integer less than N.
|
||||||
* Note -- MAXDEG cannot be equal to N-1 when a
|
* Note -- MAXDEG cannot be equal to N-1 when a
|
||||||
* statistical test is to be used for degree selection,
|
* statistical test is to be used for degree selection,
|
||||||
* i.e., when input value of EPS is negative.
|
* i.e., when input value of EPS is negative.
|
||||||
* @param ndeg output degree of the fit computed.
|
* @param ndeg output degree of the fit computed.
|
||||||
* @param eps Specifies the criterion to be used in determining
|
* @param eps Specifies the criterion to be used in determining
|
||||||
* the degree of fit to be computed.
|
* the degree of fit to be computed.
|
||||||
* (1) If EPS is input negative, DPOLFT chooses the
|
* (1) If EPS is input negative, DPOLFT chooses the
|
||||||
* degree based on a statistical F test of
|
* degree based on a statistical F test of
|
||||||
* significance. One of three possible
|
* significance. One of three possible
|
||||||
* significance levels will be used: .01, .05 or
|
* significance levels will be used: .01, .05 or
|
||||||
* .10. If EPS=-1.0 , the routine will
|
* .10. If EPS=-1.0 , the routine will
|
||||||
* automatically select one of these levels based
|
* automatically select one of these levels based
|
||||||
* on the number of data points and the maximum
|
* on the number of data points and the maximum
|
||||||
* degree to be considered. If EPS is input as
|
* degree to be considered. If EPS is input as
|
||||||
* -.01, -.05, or -.10, a significance level of
|
* -.01, -.05, or -.10, a significance level of
|
||||||
* .01, .05, or .10, respectively, will be used.
|
* .01, .05, or .10, respectively, will be used.
|
||||||
* (2) If EPS is set to 0., DPOLFT computes the
|
* (2) If EPS is set to 0., DPOLFT computes the
|
||||||
* polynomials of degrees 0 through MAXDEG .
|
* polynomials of degrees 0 through MAXDEG .
|
||||||
* (3) If EPS is input positive, EPS is the RMS
|
* (3) If EPS is input positive, EPS is the RMS
|
||||||
* error tolerance which must be satisfied by the
|
* error tolerance which must be satisfied by the
|
||||||
* fitted polynomial. DPOLFT will increase the
|
* fitted polynomial. DPOLFT will increase the
|
||||||
* degree of fit until this criterion is met or
|
* degree of fit until this criterion is met or
|
||||||
* until the maximum degree is reached.
|
* until the maximum degree is reached.
|
||||||
* @param r Output vector containing the first ndeg+1 Taylor coefficients
|
* @param r Output vector containing the first ndeg+1 Taylor coefficients
|
||||||
|
|
|
||||||
|
|
@ -16,15 +16,15 @@ namespace Cantera
|
||||||
{
|
{
|
||||||
|
|
||||||
// domain types
|
// domain types
|
||||||
const int cFlowType = 50;
|
const int cFlowType = 50;
|
||||||
const int cConnectorType = 100;
|
const int cConnectorType = 100;
|
||||||
const int cSurfType = 102;
|
const int cSurfType = 102;
|
||||||
const int cInletType = 104;
|
const int cInletType = 104;
|
||||||
const int cSymmType = 105;
|
const int cSymmType = 105;
|
||||||
const int cOutletType = 106;
|
const int cOutletType = 106;
|
||||||
const int cEmptyType = 107;
|
const int cEmptyType = 107;
|
||||||
const int cOutletResType = 108;
|
const int cOutletResType = 108;
|
||||||
const int cPorousType = 109;
|
const int cPorousType = 109;
|
||||||
|
|
||||||
class MultiJac;
|
class MultiJac;
|
||||||
class OneDim;
|
class OneDim;
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ protected:
|
||||||
*/
|
*/
|
||||||
OneDim* m_resid;
|
OneDim* m_resid;
|
||||||
|
|
||||||
vector_fp m_r1;
|
vector_fp m_r1;
|
||||||
doublereal m_rtol, m_atol;
|
doublereal m_rtol, m_atol;
|
||||||
doublereal m_elapsed;
|
doublereal m_elapsed;
|
||||||
vector_fp m_ssdiag;
|
vector_fp m_ssdiag;
|
||||||
|
|
|
||||||
|
|
@ -253,21 +253,21 @@ public:
|
||||||
protected:
|
protected:
|
||||||
void evalSSJacobian(doublereal* x, doublereal* xnew);
|
void evalSSJacobian(doublereal* x, doublereal* xnew);
|
||||||
|
|
||||||
doublereal m_tmin; // minimum timestep size
|
doublereal m_tmin; // minimum timestep size
|
||||||
doublereal m_tmax; // maximum timestep size
|
doublereal m_tmax; // maximum timestep size
|
||||||
doublereal m_tfactor; // factor time step is multiplied by
|
doublereal m_tfactor; // factor time step is multiplied by
|
||||||
// if time stepping fails ( < 1 )
|
// if time stepping fails ( < 1 )
|
||||||
|
|
||||||
MultiJac* m_jac; // Jacobian evaluator
|
MultiJac* m_jac; // Jacobian evaluator
|
||||||
MultiNewton* m_newt; // Newton iterator
|
MultiNewton* m_newt; // Newton iterator
|
||||||
doublereal m_rdt; // reciprocal of time step
|
doublereal m_rdt; // reciprocal of time step
|
||||||
bool m_jac_ok; // if true, Jacobian is current
|
bool m_jac_ok; // if true, Jacobian is current
|
||||||
|
|
||||||
//! number of domains
|
//! number of domains
|
||||||
size_t m_nd;
|
size_t m_nd;
|
||||||
|
|
||||||
size_t m_bw; // Jacobian bandwidth
|
size_t m_bw; // Jacobian bandwidth
|
||||||
size_t m_size; // solution vector size
|
size_t m_size; // solution vector size
|
||||||
|
|
||||||
std::vector<Domain1D*> m_dom, m_connect, m_bulk;
|
std::vector<Domain1D*> m_dom, m_connect, m_bulk;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ public:
|
||||||
* the leftmost grid point in the domain.
|
* the leftmost grid point in the domain.
|
||||||
* @param value the value.
|
* @param value the value.
|
||||||
*/
|
*/
|
||||||
void setValue(size_t dom, size_t comp, size_t localPoint, doublereal value);
|
void setValue(size_t dom, size_t comp, size_t localPoint, doublereal value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get one entry in the solution vector.
|
* Get one entry in the solution vector.
|
||||||
|
|
|
||||||
|
|
@ -18,11 +18,11 @@ namespace Cantera
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
|
|
||||||
// Offsets of solution components in the solution array.
|
// Offsets of solution components in the solution array.
|
||||||
const size_t c_offset_U = 0; // axial velocity
|
const size_t c_offset_U = 0; // axial velocity
|
||||||
const size_t c_offset_V = 1; // strain rate
|
const size_t c_offset_V = 1; // strain rate
|
||||||
const size_t c_offset_T = 2; // temperature
|
const size_t c_offset_T = 2; // temperature
|
||||||
const size_t c_offset_L = 3; // (1/r)dP/dr
|
const size_t c_offset_L = 3; // (1/r)dP/dr
|
||||||
const size_t c_offset_Y = 4; // mass fractions
|
const size_t c_offset_Y = 4; // mass fractions
|
||||||
|
|
||||||
// Transport option flags
|
// Transport option flags
|
||||||
const int c_Mixav_Transport = 0;
|
const int c_Mixav_Transport = 0;
|
||||||
|
|
@ -318,7 +318,7 @@ protected:
|
||||||
setGas(x,j);
|
setGas(x,j);
|
||||||
m_rho[j] = m_thermo->density();
|
m_rho[j] = m_thermo->density();
|
||||||
m_wtm[j] = m_thermo->meanMolecularWeight();
|
m_wtm[j] = m_thermo->meanMolecularWeight();
|
||||||
m_cp[j] = m_thermo->cp_mass();
|
m_cp[j] = m_thermo->cp_mass();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -428,7 +428,7 @@ protected:
|
||||||
// member data
|
// member data
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
|
||||||
doublereal m_press; // pressure
|
doublereal m_press; // pressure
|
||||||
|
|
||||||
// grid parameters
|
// grid parameters
|
||||||
vector_fp m_dz;
|
vector_fp m_dz;
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the functions of
|
* This method is called with a pointer to an array containing the functions of
|
||||||
* temperature needed by this parameterization, and three pointers to arrays where the
|
* temperature needed by this parameterization, and three pointers to arrays where the
|
||||||
* computed property values should be written. This method updates only one value in
|
* computed property values should be written. This method updates only one value in
|
||||||
* each array.
|
* each array.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ public:
|
||||||
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* Units are Joules/kmol
|
* Units are Joules/kmol
|
||||||
* @param gpure Output vector of standard state Gibbs free energies
|
* @param gpure Output vector of standard state Gibbs free energies
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getPureGibbs(doublereal* gpure) const {
|
virtual void getPureGibbs(doublereal* gpure) const {
|
||||||
|
|
@ -159,7 +159,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
void getEnthalpy_RT(doublereal* hrt) const {
|
void getEnthalpy_RT(doublereal* hrt) const {
|
||||||
|
|
@ -170,7 +170,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
void getEntropy_R(doublereal* sr) const {
|
void getEntropy_R(doublereal* sr) const {
|
||||||
|
|
@ -307,19 +307,19 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Temporary storage for dimensionless reference state enthalpies
|
//! Temporary storage for dimensionless reference state enthalpies
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state heat capacities
|
//! Temporary storage for dimensionless reference state heat capacities
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state Gibbs energies
|
//! Temporary storage for dimensionless reference state Gibbs energies
|
||||||
mutable vector_fp m_g0_RT;
|
mutable vector_fp m_g0_RT;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state entropies
|
//! Temporary storage for dimensionless reference state entropies
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
//! Temporary array containing internally calculated partial pressures
|
//! Temporary array containing internally calculated partial pressures
|
||||||
mutable vector_fp m_pp;
|
mutable vector_fp m_pp;
|
||||||
|
|
||||||
//! Current pressure (Pa)
|
//! Current pressure (Pa)
|
||||||
doublereal m_press;
|
doublereal m_press;
|
||||||
|
|
|
||||||
|
|
@ -28,18 +28,18 @@ namespace Cantera
|
||||||
* These are possible formats for the molality-based activity coefficients.
|
* These are possible formats for the molality-based activity coefficients.
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
#define DHFORM_DILUTE_LIMIT 0
|
#define DHFORM_DILUTE_LIMIT 0
|
||||||
#define DHFORM_BDOT_AK 1
|
#define DHFORM_BDOT_AK 1
|
||||||
#define DHFORM_BDOT_ACOMMON 2
|
#define DHFORM_BDOT_ACOMMON 2
|
||||||
#define DHFORM_BETAIJ 3
|
#define DHFORM_BETAIJ 3
|
||||||
#define DHFORM_PITZER_BETAIJ 4
|
#define DHFORM_PITZER_BETAIJ 4
|
||||||
//@}
|
//@}
|
||||||
/*
|
/*
|
||||||
* @name Acceptable ways to calculate the value of A_Debye
|
* @name Acceptable ways to calculate the value of A_Debye
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
#define A_DEBYE_CONST 0
|
#define A_DEBYE_CONST 0
|
||||||
#define A_DEBYE_WATER 1
|
#define A_DEBYE_WATER 1
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
class WaterProps;
|
class WaterProps;
|
||||||
|
|
@ -108,7 +108,7 @@ class PDSS_Water;
|
||||||
* all solutes. The molar volume for the water solvent, however,
|
* all solutes. The molar volume for the water solvent, however,
|
||||||
* is obtained from a pure water equation of state, waterSS.
|
* is obtained from a pure water equation of state, waterSS.
|
||||||
* Therefore, the water standard state varies with both T and P.
|
* Therefore, the water standard state varies with both T and P.
|
||||||
* It is an error to request standard state water properties at a T and P
|
* It is an error to request standard state water properties at a T and P
|
||||||
* where the water phase is not a stable phase, i.e., beyond its
|
* where the water phase is not a stable phase, i.e., beyond its
|
||||||
* spinodal curve.
|
* spinodal curve.
|
||||||
*
|
*
|
||||||
|
|
@ -117,7 +117,7 @@ class PDSS_Water;
|
||||||
* <HR>
|
* <HR>
|
||||||
*
|
*
|
||||||
* Chemical potentials
|
* Chemical potentials
|
||||||
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
||||||
* on the molality form, have the following general format:
|
* on the molality form, have the following general format:
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -785,7 +785,7 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
* @name Activities, Standard States, and Activity Concentrations
|
* @name Activities, Standard States, and Activity Concentrations
|
||||||
*
|
*
|
||||||
* The activity \f$a_k\f$ of a species in solution is
|
* The activity \f$a_k\f$ of a species in solution is
|
||||||
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
||||||
|
|
@ -924,7 +924,7 @@ public:
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* The reference-state pure-species entropies,\f$ \hat s^0_k(T) \f$,
|
* The reference-state pure-species entropies,\f$ \hat s^0_k(T) \f$,
|
||||||
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
||||||
* species thermodynamic
|
* species thermodynamic
|
||||||
* property manager. They are polynomial functions of temperature.
|
* property manager. They are polynomial functions of temperature.
|
||||||
* @see SpeciesThermo
|
* @see SpeciesThermo
|
||||||
|
|
@ -1025,9 +1025,9 @@ public:
|
||||||
* to see if phaseNode is pointing to the phase
|
* to see if phaseNode is pointing to the phase
|
||||||
* with the correct id.
|
* with the correct id.
|
||||||
*/
|
*/
|
||||||
virtual void initThermoXML(XML_Node& phaseNode, const std::string& id);
|
virtual void initThermoXML(XML_Node& phaseNode, const std::string& id);
|
||||||
|
|
||||||
//! Return the Debye Huckel constant as a function of temperature
|
//! Return the Debye Huckel constant as a function of temperature
|
||||||
//! and pressure (Units = sqrt(kg/gmol))
|
//! and pressure (Units = sqrt(kg/gmol))
|
||||||
/*!
|
/*!
|
||||||
* The default is to assume that it is constant, given
|
* The default is to assume that it is constant, given
|
||||||
|
|
@ -1163,7 +1163,7 @@ private:
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! form of the Debye-Huckel parameterization used in the model.
|
//! form of the Debye-Huckel parameterization used in the model.
|
||||||
/*!
|
/*!
|
||||||
* The options are described at the top of this document,
|
* The options are described at the top of this document,
|
||||||
* and in the general documentation.
|
* and in the general documentation.
|
||||||
|
|
@ -1219,7 +1219,7 @@ protected:
|
||||||
* - nonpolarNeutral
|
* - nonpolarNeutral
|
||||||
* .
|
* .
|
||||||
*/
|
*/
|
||||||
vector_int m_electrolyteSpeciesType;
|
vector_int m_electrolyteSpeciesType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a_k = Size of the ionic species in the DH formulation
|
* a_k = Size of the ionic species in the DH formulation
|
||||||
|
|
@ -1316,7 +1316,7 @@ protected:
|
||||||
* in some formulations to extend DH to higher molalities. B_dot is
|
* in some formulations to extend DH to higher molalities. B_dot is
|
||||||
* specific to the major ionic pair.
|
* specific to the major ionic pair.
|
||||||
*/
|
*/
|
||||||
vector_fp m_B_Dot;
|
vector_fp m_B_Dot;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* These are coefficients to describe the increase in activity coeff for
|
* These are coefficients to describe the increase in activity coeff for
|
||||||
|
|
@ -1326,7 +1326,7 @@ protected:
|
||||||
vector_fp m_npActCoeff;
|
vector_fp m_npActCoeff;
|
||||||
|
|
||||||
|
|
||||||
//! Pointer to the Water standard state object
|
//! Pointer to the Water standard state object
|
||||||
/*!
|
/*!
|
||||||
* derived from the equation of state for water.
|
* derived from the equation of state for water.
|
||||||
*/
|
*/
|
||||||
|
|
@ -1342,10 +1342,10 @@ protected:
|
||||||
WaterProps* m_waterProps;
|
WaterProps* m_waterProps;
|
||||||
|
|
||||||
//! Temporary array used in equilibrium calculations
|
//! Temporary array used in equilibrium calculations
|
||||||
mutable vector_fp m_pp;
|
mutable vector_fp m_pp;
|
||||||
|
|
||||||
//! vector of size m_kk, used as a temporary holding area.
|
//! vector of size m_kk, used as a temporary holding area.
|
||||||
mutable vector_fp m_tmpV;
|
mutable vector_fp m_tmpV;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stoichiometric species charge -> This is for calculations
|
* Stoichiometric species charge -> This is for calculations
|
||||||
|
|
@ -1359,7 +1359,7 @@ protected:
|
||||||
* For species that aren't ion pairs, it's equal to the
|
* For species that aren't ion pairs, it's equal to the
|
||||||
* m_speciesCharge[] value.
|
* m_speciesCharge[] value.
|
||||||
*/
|
*/
|
||||||
vector_fp m_speciesCharge_Stoich;
|
vector_fp m_speciesCharge_Stoich;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of 2D data used in the DHFORM_BETAIJ formulation
|
* Array of 2D data used in the DHFORM_BETAIJ formulation
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ namespace Cantera
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//! An element constraint that is current turned off
|
//! An element constraint that is current turned off
|
||||||
#define CT_ELEM_TYPE_TURNEDOFF -1
|
#define CT_ELEM_TYPE_TURNEDOFF -1
|
||||||
|
|
||||||
//! Normal element constraint consisting of positive coefficients for the
|
//! Normal element constraint consisting of positive coefficients for the
|
||||||
//! formula matrix.
|
//! formula matrix.
|
||||||
|
|
@ -32,13 +32,13 @@ namespace Cantera
|
||||||
* With this constraint, we may employ various strategies to handle
|
* With this constraint, we may employ various strategies to handle
|
||||||
* small values of the element number successfully.
|
* small values of the element number successfully.
|
||||||
*/
|
*/
|
||||||
#define CT_ELEM_TYPE_ABSPOS 0
|
#define CT_ELEM_TYPE_ABSPOS 0
|
||||||
|
|
||||||
//! This refers to conservation of electrons
|
//! This refers to conservation of electrons
|
||||||
/*!
|
/*!
|
||||||
* Electrons may have positive or negative values in the Formula matrix.
|
* Electrons may have positive or negative values in the Formula matrix.
|
||||||
*/
|
*/
|
||||||
#define CT_ELEM_TYPE_ELECTRONCHARGE 1
|
#define CT_ELEM_TYPE_ELECTRONCHARGE 1
|
||||||
|
|
||||||
//! This refers to a charge neutrality of a single phase
|
//! This refers to a charge neutrality of a single phase
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -76,7 +76,7 @@ namespace Cantera
|
||||||
/*!
|
/*!
|
||||||
* currently there are none
|
* currently there are none
|
||||||
*/
|
*/
|
||||||
#define CT_ELEM_TYPE_OTHERCONSTRAINT 6
|
#define CT_ELEM_TYPE_OTHERCONSTRAINT 6
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
//! Number indicating we don't know the entropy of the element in its most
|
//! Number indicating we don't know the entropy of the element in its most
|
||||||
|
|
@ -95,6 +95,6 @@ namespace Cantera
|
||||||
//! @exception CanteraError If a match is not found, throws a CanteraError
|
//! @exception CanteraError If a match is not found, throws a CanteraError
|
||||||
double LookupWtElements(const std::string& ename);
|
double LookupWtElements(const std::string& ename);
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Cantera
|
||||||
* R_s = k_s C_{gas}
|
* R_s = k_s C_{gas}
|
||||||
* \f]
|
* \f]
|
||||||
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
||||||
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
||||||
* units of m s-1. Nowhere does the concentration of the bulk phase
|
* units of m s-1. Nowhere does the concentration of the bulk phase
|
||||||
* appear in the rate constant expression, since it's a stoichiometric
|
* appear in the rate constant expression, since it's a stoichiometric
|
||||||
* phase, and the activity is always equal to 1.0.
|
* phase, and the activity is always equal to 1.0.
|
||||||
|
|
@ -176,7 +176,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param right Object to be copied
|
* @param right Object to be copied
|
||||||
*/
|
*/
|
||||||
FixedChemPotSSTP(const FixedChemPotSSTP& right);
|
FixedChemPotSSTP(const FixedChemPotSSTP& right);
|
||||||
|
|
||||||
//! Special constructor for the FixecChemPotSSTP class setting an element chemical
|
//! Special constructor for the FixecChemPotSSTP class setting an element chemical
|
||||||
//! potential directly
|
//! potential directly
|
||||||
|
|
@ -252,7 +252,7 @@ public:
|
||||||
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
||||||
* \f]
|
* \f]
|
||||||
*/
|
*/
|
||||||
virtual doublereal thermalExpansionCoeff() const ;
|
virtual doublereal thermalExpansionCoeff() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
@ -343,7 +343,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -351,7 +351,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -373,7 +373,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getCp_R(doublereal* cpr) const;
|
virtual void getCp_R(doublereal* cpr) const;
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* For an incompressible,
|
* For an incompressible,
|
||||||
|
|
@ -448,10 +448,10 @@ public:
|
||||||
* This function is resolved in this class. It is assumed that the m_spthermo species thermo
|
* This function is resolved in this class. It is assumed that the m_spthermo species thermo
|
||||||
* pointer is populated and yields the reference state.
|
* pointer is populated and yields the reference state.
|
||||||
*
|
*
|
||||||
* @param g Output vector containing the reference state
|
* @param g Output vector containing the reference state
|
||||||
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the vector of nondimensional
|
* Returns the vector of nondimensional
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public:
|
||||||
*/
|
*/
|
||||||
GeneralSpeciesThermo& operator=(const GeneralSpeciesThermo& b);
|
GeneralSpeciesThermo& operator=(const GeneralSpeciesThermo& b);
|
||||||
|
|
||||||
virtual SpeciesThermo* duplMyselfAsSpeciesThermo() const ;
|
virtual SpeciesThermo* duplMyselfAsSpeciesThermo() const;
|
||||||
|
|
||||||
virtual void install_STIT(size_t index,
|
virtual void install_STIT(size_t index,
|
||||||
shared_ptr<SpeciesThermoInterpType> stit_ptr);
|
shared_ptr<SpeciesThermoInterpType> stit_ptr);
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ public:
|
||||||
*/
|
*/
|
||||||
GibbsExcessVPSSTP& operator=(const GibbsExcessVPSSTP& b);
|
GibbsExcessVPSSTP& operator=(const GibbsExcessVPSSTP& b);
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from ThermoPhase.
|
//! Duplication routine for objects which inherit from ThermoPhase.
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate ThermoPhase objects
|
* This virtual routine can be used to duplicate ThermoPhase objects
|
||||||
* inherited from ThermoPhase even if the application only has
|
* inherited from ThermoPhase even if the application only has
|
||||||
|
|
@ -285,7 +285,7 @@ public:
|
||||||
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
||||||
* log Activity Coefficients. length = m_kk * m_kk
|
* log Activity Coefficients. length = m_kk * m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) {
|
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) {
|
||||||
throw NotImplementedError("GibbsExcessVPSSTP::getdlnActCoeffdlnN: "
|
throw NotImplementedError("GibbsExcessVPSSTP::getdlnActCoeffdlnN: "
|
||||||
"nonzero and nonimplemented");
|
"nonzero and nonimplemented");
|
||||||
}
|
}
|
||||||
|
|
@ -479,7 +479,7 @@ protected:
|
||||||
//! log of the activity coefficients of the species
|
//! log of the activity coefficients of the species
|
||||||
mutable std::vector<doublereal> dlnActCoeffdlnX_diag_;
|
mutable std::vector<doublereal> dlnActCoeffdlnX_diag_;
|
||||||
|
|
||||||
//! Storage for the current derivative values of the gradients with respect to logarithm of the species mole number of the
|
//! Storage for the current derivative values of the gradients with respect to logarithm of the species mole number of the
|
||||||
//! log of the activity coefficients of the species
|
//! log of the activity coefficients of the species
|
||||||
/*!
|
/*!
|
||||||
* dlnActCoeffdlnN_(k, m) is the derivative of ln(gamma_k) wrt ln mole number of species m
|
* dlnActCoeffdlnN_(k, m) is the derivative of ln(gamma_k) wrt ln mole number of species m
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,9 @@ namespace Cantera
|
||||||
* q1(T - Tr) + q2(T**2 - Tr**2)
|
* q1(T - Tr) + q2(T**2 - Tr**2)
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
#define PITZER_TEMP_CONSTANT 0
|
#define PITZER_TEMP_CONSTANT 0
|
||||||
#define PITZER_TEMP_LINEAR 1
|
#define PITZER_TEMP_LINEAR 1
|
||||||
#define PITZER_TEMP_COMPLEX1 2
|
#define PITZER_TEMP_COMPLEX1 2
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -74,8 +74,8 @@ namespace Cantera
|
||||||
* These defines determine the way A_Debye is calculated
|
* These defines determine the way A_Debye is calculated
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
#define A_DEBYE_CONST 0
|
#define A_DEBYE_CONST 0
|
||||||
#define A_DEBYE_WATER 1
|
#define A_DEBYE_WATER 1
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
class WaterProps;
|
class WaterProps;
|
||||||
|
|
@ -154,7 +154,7 @@ class WaterProps;
|
||||||
* all solutes. The molar volume for the water solvent, however,
|
* all solutes. The molar volume for the water solvent, however,
|
||||||
* is obtained from a pure water equation of state, waterSS.
|
* is obtained from a pure water equation of state, waterSS.
|
||||||
* Therefore, the water standard state varies with both T and P.
|
* Therefore, the water standard state varies with both T and P.
|
||||||
* It is an error to request standard state water properties at a T and P
|
* It is an error to request standard state water properties at a T and P
|
||||||
* where the water phase is not a stable phase, i.e., beyond its
|
* where the water phase is not a stable phase, i.e., beyond its
|
||||||
* spinodal curve.
|
* spinodal curve.
|
||||||
*
|
*
|
||||||
|
|
@ -163,7 +163,7 @@ class WaterProps;
|
||||||
* <HR>
|
* <HR>
|
||||||
*
|
*
|
||||||
* Chemical potentials
|
* Chemical potentials
|
||||||
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
||||||
* on the molality form, have the following general format:
|
* on the molality form, have the following general format:
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -339,7 +339,7 @@ class WaterProps;
|
||||||
* theory depends on the total ionic strength of the solution, and therefore,
|
* theory depends on the total ionic strength of the solution, and therefore,
|
||||||
* \f$ \Phi_{c{c'}} \f$ and \f$ \Phi_{a{a'}} \f$ will depend on <I>I</I>, the
|
* \f$ \Phi_{c{c'}} \f$ and \f$ \Phi_{a{a'}} \f$ will depend on <I>I</I>, the
|
||||||
* ionic strength. \f$ B_{ca}\f$ is a strong function of the
|
* ionic strength. \f$ B_{ca}\f$ is a strong function of the
|
||||||
* total ionic strength, <I>I</I>,
|
* total ionic strength, <I>I</I>,
|
||||||
* of the electrolyte. The rest of the coefficients are assumed to be independent of the
|
* of the electrolyte. The rest of the coefficients are assumed to be independent of the
|
||||||
* molalities or ionic strengths. However, all coefficients are potentially functions
|
* molalities or ionic strengths. However, all coefficients are potentially functions
|
||||||
* of the temperature and pressure of the solution.
|
* of the temperature and pressure of the solution.
|
||||||
|
|
@ -399,7 +399,7 @@ class WaterProps;
|
||||||
* solfates and other high-valence electrolytes which exhibit significant
|
* solfates and other high-valence electrolytes which exhibit significant
|
||||||
* association at low ionic strengths.
|
* association at low ionic strengths.
|
||||||
*
|
*
|
||||||
* The \f$ \beta^{(0)}_{ca} \f$, \f$ \beta^{(1)}_{ca}\f$, \f$ \beta^{(2)}_{ca} \f$,
|
* The \f$ \beta^{(0)}_{ca} \f$, \f$ \beta^{(1)}_{ca}\f$, \f$ \beta^{(2)}_{ca} \f$,
|
||||||
* and \f$ C_{ca} \f$ binary coefficients are referred to as ion-interaction or
|
* and \f$ C_{ca} \f$ binary coefficients are referred to as ion-interaction or
|
||||||
* Pitzer parameters. These Pitzer parameters may vary with temperature and pressure
|
* Pitzer parameters. These Pitzer parameters may vary with temperature and pressure
|
||||||
* but they do not depend on the ionic strength. Their values and temperature
|
* but they do not depend on the ionic strength. Their values and temperature
|
||||||
|
|
@ -603,7 +603,7 @@ class WaterProps;
|
||||||
* Therefore,
|
* Therefore,
|
||||||
* a formalism wherein all of the coefficients in the base theory have
|
* a formalism wherein all of the coefficients in the base theory have
|
||||||
* temperature dependencies associated with them has been implemented
|
* temperature dependencies associated with them has been implemented
|
||||||
* within the HMWSoln object. Much of the formalism, however,
|
* within the HMWSoln object. Much of the formalism, however,
|
||||||
* has been unexercised.
|
* has been unexercised.
|
||||||
*
|
*
|
||||||
* In the HMWSoln object, the temperature dependence of the Pitzer
|
* In the HMWSoln object, the temperature dependence of the Pitzer
|
||||||
|
|
@ -633,7 +633,7 @@ class WaterProps;
|
||||||
* \f$ C_{MX}\f$
|
* \f$ C_{MX}\f$
|
||||||
* The specification of \f$ B_{MX}\f$ is a function of
|
* The specification of \f$ B_{MX}\f$ is a function of
|
||||||
* \f$\beta^{(0)}_{MX} \f$, \f$\beta^{(1)}_{MX} \f$,
|
* \f$\beta^{(0)}_{MX} \f$, \f$\beta^{(1)}_{MX} \f$,
|
||||||
* \f$\beta^{(2)}_{MX} \f$, \f$\alpha^{(1)}_{MX} \f$, and
|
* \f$\beta^{(2)}_{MX} \f$, \f$\alpha^{(1)}_{MX} \f$, and
|
||||||
* \f$\alpha^{(2)}_{MX} \f$.
|
* \f$\alpha^{(2)}_{MX} \f$.
|
||||||
* \f$ C_{MX}\f$ is calculated from \f$C^{\phi}_{MX} \f$
|
* \f$ C_{MX}\f$ is calculated from \f$C^{\phi}_{MX} \f$
|
||||||
* from the formula above.
|
* from the formula above.
|
||||||
|
|
@ -668,7 +668,7 @@ class WaterProps;
|
||||||
* This same <TT> COMPLEX1 </TT> temperature
|
* This same <TT> COMPLEX1 </TT> temperature
|
||||||
* dependence given above is used for the following parameters:
|
* dependence given above is used for the following parameters:
|
||||||
* \f$ \beta^{(0)}_{MX} \f$, \f$ \beta^{(1)}_{MX} \f$,
|
* \f$ \beta^{(0)}_{MX} \f$, \f$ \beta^{(1)}_{MX} \f$,
|
||||||
* \f$ \beta^{(2)}_{MX} \f$, \f$ \Theta_{cc'} \f$, \f$\Theta_{aa'} \f$,
|
* \f$ \beta^{(2)}_{MX} \f$, \f$ \Theta_{cc'} \f$, \f$\Theta_{aa'} \f$,
|
||||||
* \f$ \Psi_{c{c'}a} \f$ and \f$ \Psi_{ca{a'}} \f$.
|
* \f$ \Psi_{c{c'}a} \f$ and \f$ \Psi_{ca{a'}} \f$.
|
||||||
*
|
*
|
||||||
* <H3> Like-Charged Binary Ion Parameters and the Mixing Parameters </H3>
|
* <H3> Like-Charged Binary Ion Parameters and the Mixing Parameters </H3>
|
||||||
|
|
@ -723,7 +723,7 @@ class WaterProps;
|
||||||
*
|
*
|
||||||
* The \f$ \Theta_{ij} \f$ term is a constant that is specified
|
* The \f$ \Theta_{ij} \f$ term is a constant that is specified
|
||||||
* by the XML element <TT> thetaCation </TT> and
|
* by the XML element <TT> thetaCation </TT> and
|
||||||
* <TT> thetaAnion </TT>, which
|
* <TT> thetaAnion </TT>, which
|
||||||
* has the attribute <TT> cation1 </TT>, <TT> cation2 </TT> and
|
* has the attribute <TT> cation1 </TT>, <TT> cation2 </TT> and
|
||||||
* <TT> anion1 </TT>, <TT> anion2 </TT> respectively
|
* <TT> anion1 </TT>, <TT> anion2 </TT> respectively
|
||||||
* to identify the interaction. No temperature or
|
* to identify the interaction. No temperature or
|
||||||
|
|
@ -1084,7 +1084,7 @@ class WaterProps;
|
||||||
* ThermoPhase *HMW = newPhase("HMW_NaCl.xml", "NaCl_electrolyte");
|
* ThermoPhase *HMW = newPhase("HMW_NaCl.xml", "NaCl_electrolyte");
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* A new HMWSoln object may be created by the following code snippets:
|
* A new HMWSoln object may be created by the following code snippets:
|
||||||
*
|
*
|
||||||
* @code
|
* @code
|
||||||
* HMWSoln *HMW = new HMWSoln("HMW_NaCl.xml", "NaCl_electrolyte");
|
* HMWSoln *HMW = new HMWSoln("HMW_NaCl.xml", "NaCl_electrolyte");
|
||||||
|
|
@ -1499,7 +1499,7 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
* @name Activities, Standard States, and Activity Concentrations
|
* @name Activities, Standard States, and Activity Concentrations
|
||||||
*
|
*
|
||||||
* The activity \f$a_k\f$ of a species in solution is
|
* The activity \f$a_k\f$ of a species in solution is
|
||||||
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
||||||
|
|
@ -1512,7 +1512,7 @@ public:
|
||||||
|
|
||||||
//! This method returns an array of generalized activity concentrations
|
//! This method returns an array of generalized activity concentrations
|
||||||
/*!
|
/*!
|
||||||
* The generalized activity concentrations, \f$ C_k^a\f$, are defined such that
|
* The generalized activity concentrations, \f$ C_k^a\f$, are defined such that
|
||||||
* \f$ a_k = C^a_k / C^0_k, \f$ where \f$ C^0_k \f$
|
* \f$ a_k = C^a_k / C^0_k, \f$ where \f$ C^0_k \f$
|
||||||
* is a standard concentration
|
* is a standard concentration
|
||||||
* defined below. These generalized concentrations are used
|
* defined below. These generalized concentrations are used
|
||||||
|
|
@ -1541,7 +1541,7 @@ public:
|
||||||
* The standard concentration \f$ C^0_k \f$ used to normalize
|
* The standard concentration \f$ C^0_k \f$ used to normalize
|
||||||
* the activity (i.e., generalized) concentration for use
|
* the activity (i.e., generalized) concentration for use
|
||||||
*
|
*
|
||||||
* We have set the standard concentration for all solute species in
|
* We have set the standard concentration for all solute species in
|
||||||
* this phase equal to the default concentration of the solvent at the system temperature
|
* this phase equal to the default concentration of the solvent at the system temperature
|
||||||
* and pressure multiplied by Mnaught (kg solvent / gmol solvent). The solvent
|
* and pressure multiplied by Mnaught (kg solvent / gmol solvent). The solvent
|
||||||
* standard concentration is just equal to its standard state concentration.
|
* standard concentration is just equal to its standard state concentration.
|
||||||
|
|
@ -2094,7 +2094,7 @@ private:
|
||||||
* - polarNeutral
|
* - polarNeutral
|
||||||
* - nonpolarNeutral .
|
* - nonpolarNeutral .
|
||||||
*/
|
*/
|
||||||
vector_int m_electrolyteSpeciesType;
|
vector_int m_electrolyteSpeciesType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a_k = Size of the ionic species in the DH formulation
|
* a_k = Size of the ionic species in the DH formulation
|
||||||
|
|
@ -2196,10 +2196,10 @@ private:
|
||||||
WaterProps* m_waterProps;
|
WaterProps* m_waterProps;
|
||||||
|
|
||||||
//! Temporary array used in equilibrium calculations
|
//! Temporary array used in equilibrium calculations
|
||||||
mutable vector_fp m_pp;
|
mutable vector_fp m_pp;
|
||||||
|
|
||||||
//! vector of size m_kk, used as a temporary holding area.
|
//! vector of size m_kk, used as a temporary holding area.
|
||||||
mutable vector_fp m_tmpV;
|
mutable vector_fp m_tmpV;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stoichiometric species charge -> This is for calculations
|
* Stoichiometric species charge -> This is for calculations
|
||||||
|
|
@ -2213,7 +2213,7 @@ private:
|
||||||
* For species that aren't ion pairs, its equal to the
|
* For species that aren't ion pairs, its equal to the
|
||||||
* m_speciesCharge[] value.
|
* m_speciesCharge[] value.
|
||||||
*/
|
*/
|
||||||
vector_fp m_speciesCharge_Stoich;
|
vector_fp m_speciesCharge_Stoich;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of 2D data used in the Pitzer/HMW formulation.
|
* Array of 2D data used in the Pitzer/HMW formulation.
|
||||||
|
|
@ -2224,25 +2224,25 @@ private:
|
||||||
* counterIJ where counterIJ = m_counterIJ[i][j]
|
* counterIJ where counterIJ = m_counterIJ[i][j]
|
||||||
* is used to access this array.
|
* is used to access this array.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Beta0MX_ij;
|
mutable vector_fp m_Beta0MX_ij;
|
||||||
|
|
||||||
//! Derivative of Beta0_ij[i][j] wrt T
|
//! Derivative of Beta0_ij[i][j] wrt T
|
||||||
/*!
|
/*!
|
||||||
* vector index is counterIJ
|
* vector index is counterIJ
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Beta0MX_ij_L;
|
mutable vector_fp m_Beta0MX_ij_L;
|
||||||
|
|
||||||
//! Derivative of Beta0_ij[i][j] wrt TT
|
//! Derivative of Beta0_ij[i][j] wrt TT
|
||||||
/*!
|
/*!
|
||||||
* vector index is counterIJ
|
* vector index is counterIJ
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Beta0MX_ij_LL;
|
mutable vector_fp m_Beta0MX_ij_LL;
|
||||||
|
|
||||||
//! Derivative of Beta0_ij[i][j] wrt P
|
//! Derivative of Beta0_ij[i][j] wrt P
|
||||||
/*!
|
/*!
|
||||||
* vector index is counterIJ
|
* vector index is counterIJ
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Beta0MX_ij_P;
|
mutable vector_fp m_Beta0MX_ij_P;
|
||||||
|
|
||||||
//! Array of coefficients for Beta0, a variable in Pitzer's papers
|
//! Array of coefficients for Beta0, a variable in Pitzer's papers
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2250,7 +2250,7 @@ private:
|
||||||
* m_Beta0MX_ij_coeff.ptrColumn(counterIJ) is a double* containing
|
* m_Beta0MX_ij_coeff.ptrColumn(counterIJ) is a double* containing
|
||||||
* the vector of coefficients for the counterIJ interaction.
|
* the vector of coefficients for the counterIJ interaction.
|
||||||
*/
|
*/
|
||||||
mutable Array2D m_Beta0MX_ij_coeff;
|
mutable Array2D m_Beta0MX_ij_coeff;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Array of 2D data used in the Pitzer/HMW formulation.
|
* Array of 2D data used in the Pitzer/HMW formulation.
|
||||||
|
|
@ -2287,7 +2287,7 @@ private:
|
||||||
* m_Beta1MX_ij_coeff.ptrColumn(counterIJ) is a double* containing
|
* m_Beta1MX_ij_coeff.ptrColumn(counterIJ) is a double* containing
|
||||||
* the vector of coefficients for the counterIJ interaction.
|
* the vector of coefficients for the counterIJ interaction.
|
||||||
*/
|
*/
|
||||||
mutable Array2D m_Beta1MX_ij_coeff;
|
mutable Array2D m_Beta1MX_ij_coeff;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of 2D data used in the Pitzer/HMW formulation.
|
* Array of 2D data used in the Pitzer/HMW formulation.
|
||||||
|
|
@ -2327,7 +2327,7 @@ private:
|
||||||
* This was added for the YMP database version of the code since it
|
* This was added for the YMP database version of the code since it
|
||||||
* contains temperature-dependent parameters for some 2-2 electrolytes.
|
* contains temperature-dependent parameters for some 2-2 electrolytes.
|
||||||
*/
|
*/
|
||||||
mutable Array2D m_Beta2MX_ij_coeff;
|
mutable Array2D m_Beta2MX_ij_coeff;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of 2D data used in the Pitzer/HMW formulation.
|
* Array of 2D data used in the Pitzer/HMW formulation.
|
||||||
|
|
@ -2494,16 +2494,16 @@ private:
|
||||||
* index, i.e., n. The charged species occupy the j coordinate.
|
* index, i.e., n. The charged species occupy the j coordinate.
|
||||||
* neutral, neutral interactions are also included here.
|
* neutral, neutral interactions are also included here.
|
||||||
*/
|
*/
|
||||||
mutable Array2D m_Lambda_nj;
|
mutable Array2D m_Lambda_nj;
|
||||||
|
|
||||||
//! Derivative of Lambda_nj[i][j] wrt T. see m_Lambda_ij
|
//! Derivative of Lambda_nj[i][j] wrt T. see m_Lambda_ij
|
||||||
mutable Array2D m_Lambda_nj_L;
|
mutable Array2D m_Lambda_nj_L;
|
||||||
|
|
||||||
//! Derivative of Lambda_nj[i][j] wrt TT
|
//! Derivative of Lambda_nj[i][j] wrt TT
|
||||||
mutable Array2D m_Lambda_nj_LL;
|
mutable Array2D m_Lambda_nj_LL;
|
||||||
|
|
||||||
//! Derivative of Lambda_nj[i][j] wrt P
|
//! Derivative of Lambda_nj[i][j] wrt P
|
||||||
mutable Array2D m_Lambda_nj_P;
|
mutable Array2D m_Lambda_nj_P;
|
||||||
|
|
||||||
//! Array of coefficients for Lambda_nj[i][j] in the Pitzer/HMW formulation.
|
//! Array of coefficients for Lambda_nj[i][j] in the Pitzer/HMW formulation.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2521,7 +2521,7 @@ private:
|
||||||
* m_Lambda_ij_coeff.ptrColumn(n) is a double* containing
|
* m_Lambda_ij_coeff.ptrColumn(n) is a double* containing
|
||||||
* the vector of coefficients for the (i,j) interaction.
|
* the vector of coefficients for the (i,j) interaction.
|
||||||
*/
|
*/
|
||||||
Array2D m_Lambda_nj_coeff;
|
Array2D m_Lambda_nj_coeff;
|
||||||
|
|
||||||
//! Mu coefficient for the self-ternary neutral coefficient
|
//! Mu coefficient for the self-ternary neutral coefficient
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2530,7 +2530,7 @@ private:
|
||||||
* nnn interaction. This is a general interaction representing
|
* nnn interaction. This is a general interaction representing
|
||||||
* neutral species interacting with itself.
|
* neutral species interacting with itself.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Mu_nnn;
|
mutable vector_fp m_Mu_nnn;
|
||||||
|
|
||||||
//! Mu coefficient temperature derivative for the self-ternary neutral coefficient
|
//! Mu coefficient temperature derivative for the self-ternary neutral coefficient
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2539,7 +2539,7 @@ private:
|
||||||
* nnn interaction. This is a general interaction representing
|
* nnn interaction. This is a general interaction representing
|
||||||
* neutral species interacting with itself.
|
* neutral species interacting with itself.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Mu_nnn_L;
|
mutable vector_fp m_Mu_nnn_L;
|
||||||
|
|
||||||
//! Mu coefficient 2nd temperature derivative for the self-ternary neutral coefficient
|
//! Mu coefficient 2nd temperature derivative for the self-ternary neutral coefficient
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2548,7 +2548,7 @@ private:
|
||||||
* nnn interaction. This is a general interaction representing
|
* nnn interaction. This is a general interaction representing
|
||||||
* neutral species interacting with itself.
|
* neutral species interacting with itself.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Mu_nnn_LL;
|
mutable vector_fp m_Mu_nnn_LL;
|
||||||
|
|
||||||
//! Mu coefficient pressure derivative for the self-ternary neutral coefficient
|
//! Mu coefficient pressure derivative for the self-ternary neutral coefficient
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -2557,10 +2557,10 @@ private:
|
||||||
* nnn interaction. This is a general interaction representing
|
* nnn interaction. This is a general interaction representing
|
||||||
* neutral species interacting with itself.
|
* neutral species interacting with itself.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Mu_nnn_P;
|
mutable vector_fp m_Mu_nnn_P;
|
||||||
|
|
||||||
//! Array of coefficients form_Mu_nnn term
|
//! Array of coefficients form_Mu_nnn term
|
||||||
Array2D m_Mu_nnn_coeff;
|
Array2D m_Mu_nnn_coeff;
|
||||||
|
|
||||||
//! Logarithm of the activity coefficients on the molality
|
//! Logarithm of the activity coefficients on the molality
|
||||||
//! scale.
|
//! scale.
|
||||||
|
|
@ -2843,7 +2843,7 @@ private:
|
||||||
/*!
|
/*!
|
||||||
* Normally these are all one. However, stability schemes will change that
|
* Normally these are all one. However, stability schemes will change that
|
||||||
*/
|
*/
|
||||||
mutable vector_fp IMS_lnActCoeffMolal_;
|
mutable vector_fp IMS_lnActCoeffMolal_;
|
||||||
|
|
||||||
//! IMS Cutoff type
|
//! IMS Cutoff type
|
||||||
int IMS_typeCutoff_;
|
int IMS_typeCutoff_;
|
||||||
|
|
@ -3181,10 +3181,10 @@ private:
|
||||||
void readXMLCroppingCoefficients(const XML_Node& acNode);
|
void readXMLCroppingCoefficients(const XML_Node& acNode);
|
||||||
|
|
||||||
//! Precalculate the IMS Cutoff parameters for typeCutoff = 2
|
//! Precalculate the IMS Cutoff parameters for typeCutoff = 2
|
||||||
void calcIMSCutoffParams_();
|
void calcIMSCutoffParams_();
|
||||||
|
|
||||||
//! Calculate molality cut-off parameters
|
//! Calculate molality cut-off parameters
|
||||||
void calcMCCutoffParams_();
|
void calcMCCutoffParams_();
|
||||||
|
|
||||||
//! Utility function to assign an integer value from a string
|
//! Utility function to assign an integer value from a string
|
||||||
//! for the ElectrolyteSpeciesType field.
|
//! for the ElectrolyteSpeciesType field.
|
||||||
|
|
|
||||||
|
|
@ -464,7 +464,7 @@ public:
|
||||||
setTemperature(p * meanMolecularWeight() / (GasConstant * rho));
|
setTemperature(p * meanMolecularWeight() / (GasConstant * rho));
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/**
|
/**
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -539,7 +539,7 @@ public:
|
||||||
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
||||||
//! the generalized concentration.
|
//! the generalized concentration.
|
||||||
/*!
|
/*!
|
||||||
* This is defined as the concentration by which the generalized
|
* This is defined as the concentration by which the generalized
|
||||||
* concentration is normalized to produce the activity.
|
* concentration is normalized to produce the activity.
|
||||||
* In many cases, this quantity will be the same for all species in a phase.
|
* In many cases, this quantity will be the same for all species in a phase.
|
||||||
* Since the activity for an ideal gas mixture is
|
* Since the activity for an ideal gas mixture is
|
||||||
|
|
@ -630,7 +630,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species standard states
|
//! Get the nondimensional Enthalpy functions for the species standard states
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -638,7 +638,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! species standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! species standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -655,12 +655,12 @@ public:
|
||||||
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* Units are Joules/kmol
|
* Units are Joules/kmol
|
||||||
* @param gpure Output vector of standard state Gibbs free energies
|
* @param gpure Output vector of standard state Gibbs free energies
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getPureGibbs(doublereal* gpure) const;
|
virtual void getPureGibbs(doublereal* gpure) const;
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* @param urt output vector of nondimensional standard state internal energies
|
* @param urt output vector of nondimensional standard state internal energies
|
||||||
|
|
@ -715,7 +715,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* units = J/kmol
|
* units = J/kmol
|
||||||
*
|
*
|
||||||
* @param g Output vector containing the reference state
|
* @param g Output vector containing the reference state
|
||||||
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
|
||||||
|
|
@ -478,7 +478,7 @@ public:
|
||||||
|
|
||||||
//! Partial molar heat capacity of the solution:. UnitsL J/kmol/K
|
//! Partial molar heat capacity of the solution:. UnitsL J/kmol/K
|
||||||
/*!
|
/*!
|
||||||
* The kth partial molar heat capacity is equal to
|
* The kth partial molar heat capacity is equal to
|
||||||
* the temperature derivative of the partial molar
|
* the temperature derivative of the partial molar
|
||||||
* enthalpy of the kth species in the solution at constant
|
* enthalpy of the kth species in the solution at constant
|
||||||
* P and composition (p. 220 Smith and Van Ness).
|
* P and composition (p. 220 Smith and Van Ness).
|
||||||
|
|
@ -565,14 +565,14 @@ public:
|
||||||
*
|
*
|
||||||
* @param smv Output vector of species molar volumes.
|
* @param smv Output vector of species molar volumes.
|
||||||
*/
|
*/
|
||||||
void getSpeciesMolarVolumes(double* smv) const;
|
void getSpeciesMolarVolumes(double* smv) const;
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* Species molar volume \f$ m^3 kmol^{-1} \f$
|
* Species molar volume \f$ m^3 kmol^{-1} \f$
|
||||||
*/
|
*/
|
||||||
vector_fp m_speciesMolarVolume;
|
vector_fp m_speciesMolarVolume;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The standard concentrations can have three different forms
|
* The standard concentrations can have three different forms
|
||||||
|
|
@ -596,18 +596,18 @@ private:
|
||||||
/**
|
/**
|
||||||
* Temporary array used in equilibrium calculations
|
* Temporary array used in equilibrium calculations
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_pp;
|
mutable vector_fp m_pp;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* vector of size m_kk, used as a temporary holding area.
|
* vector of size m_kk, used as a temporary holding area.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_tmpV;
|
mutable vector_fp m_tmpV;
|
||||||
|
|
||||||
//! Logarithm of the molal activity coefficients
|
//! Logarithm of the molal activity coefficients
|
||||||
/*!
|
/*!
|
||||||
* Normally these are all one. However, stability schemes will change that
|
* Normally these are all one. However, stability schemes will change that
|
||||||
*/
|
*/
|
||||||
mutable vector_fp IMS_lnActCoeffMolal_;
|
mutable vector_fp IMS_lnActCoeffMolal_;
|
||||||
public:
|
public:
|
||||||
//! value of the solute mole fraction that centers the cutoff polynomials
|
//! value of the solute mole fraction that centers the cutoff polynomials
|
||||||
//! for the cutoff =1 process;
|
//! for the cutoff =1 process;
|
||||||
|
|
|
||||||
|
|
@ -352,7 +352,7 @@ public:
|
||||||
* kmol m<SUP>-3</SUP>. Rate constants must reflect this fact.
|
* kmol m<SUP>-3</SUP>. Rate constants must reflect this fact.
|
||||||
*
|
*
|
||||||
* On a general note, the following must be true.
|
* On a general note, the following must be true.
|
||||||
* For an ideal solution, the generalized concentration must consist
|
* For an ideal solution, the generalized concentration must consist
|
||||||
* of the mole fraction multiplied by a constant. The constant may be
|
* of the mole fraction multiplied by a constant. The constant may be
|
||||||
* fairly arbitrarily chosen, with differences adsorbed into the
|
* fairly arbitrarily chosen, with differences adsorbed into the
|
||||||
* reaction rate expression. 1/V_N, 1/V_k, or 1 are equally good,
|
* reaction rate expression. 1/V_N, 1/V_k, or 1 are equally good,
|
||||||
|
|
@ -483,7 +483,7 @@ public:
|
||||||
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
||||||
* \f]
|
* \f]
|
||||||
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
||||||
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
||||||
* species thermodynamic
|
* species thermodynamic
|
||||||
* property manager. They are polynomial functions of temperature.
|
* property manager. They are polynomial functions of temperature.
|
||||||
* @see SpeciesThermo
|
* @see SpeciesThermo
|
||||||
|
|
@ -846,34 +846,34 @@ protected:
|
||||||
/**
|
/**
|
||||||
* Species molar volumes \f$ m^3 kmol^-1 \f$
|
* Species molar volumes \f$ m^3 kmol^-1 \f$
|
||||||
*/
|
*/
|
||||||
vector_fp m_speciesMolarVolume;
|
vector_fp m_speciesMolarVolume;
|
||||||
|
|
||||||
//! Vector containing the species reference enthalpies at T = m_tlast
|
//! Vector containing the species reference enthalpies at T = m_tlast
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference constant pressure
|
* Vector containing the species reference constant pressure
|
||||||
* heat capacities at T = m_tlast
|
* heat capacities at T = m_tlast
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
|
|
||||||
//! Vector containing the species reference Gibbs functions at T = m_tlast
|
//! Vector containing the species reference Gibbs functions at T = m_tlast
|
||||||
mutable vector_fp m_g0_RT;
|
mutable vector_fp m_g0_RT;
|
||||||
|
|
||||||
//! Vector containing the species reference entropies at T = m_tlast
|
//! Vector containing the species reference entropies at T = m_tlast
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference exp(-G/RT) functions
|
* Vector containing the species reference exp(-G/RT) functions
|
||||||
* at T = m_tlast
|
* at T = m_tlast
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_expg0_RT;
|
mutable vector_fp m_expg0_RT;
|
||||||
|
|
||||||
//! Vector of potential energies for the species.
|
//! Vector of potential energies for the species.
|
||||||
mutable vector_fp m_pe;
|
mutable vector_fp m_pe;
|
||||||
|
|
||||||
//! Temporary array used in equilibrium calculations
|
//! Temporary array used in equilibrium calculations
|
||||||
mutable vector_fp m_pp;
|
mutable vector_fp m_pp;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// @name Utility Functions
|
/// @name Utility Functions
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void setPressure(doublereal p);
|
void setPressure(doublereal p);
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/*!
|
/*!
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -150,7 +150,7 @@ public:
|
||||||
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
||||||
//! the generalized concentration.
|
//! the generalized concentration.
|
||||||
/*!
|
/*!
|
||||||
* This is defined as the concentration by which the generalized
|
* This is defined as the concentration by which the generalized
|
||||||
* concentration is normalized to produce the activity.
|
* concentration is normalized to produce the activity.
|
||||||
* In many cases, this quantity will be the same for all species in a phase.
|
* In many cases, this quantity will be the same for all species in a phase.
|
||||||
* Since the activity for an ideal gas mixture is
|
* Since the activity for an ideal gas mixture is
|
||||||
|
|
@ -186,7 +186,7 @@ public:
|
||||||
* getChemPotentials() and then dividing by RT. No need for child
|
* getChemPotentials() and then dividing by RT. No need for child
|
||||||
* classes to handle.
|
* classes to handle.
|
||||||
*
|
*
|
||||||
* @param mu Output vector of non-dimensional species chemical potentials
|
* @param mu Output vector of non-dimensional species chemical potentials
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
void getChemPotentials_RT(doublereal* mu) const;
|
void getChemPotentials_RT(doublereal* mu) const;
|
||||||
|
|
|
||||||
|
|
@ -362,7 +362,7 @@ public:
|
||||||
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
||||||
* log Activity Coefficients. length = m_kk * m_kk
|
* log Activity Coefficients. length = m_kk * m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) ;
|
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
//! Get the Salt Dissociation Coefficients
|
//! Get the Salt Dissociation Coefficients
|
||||||
|
|
@ -393,7 +393,7 @@ public:
|
||||||
* is charge neutrality. If there isn't, then it wouldn't
|
* is charge neutrality. If there isn't, then it wouldn't
|
||||||
* make much sense.
|
* make much sense.
|
||||||
*
|
*
|
||||||
* for the case of cIonSolnType_SINGLEANION, some slough
|
* for the case of cIonSolnType_SINGLEANION, some slough
|
||||||
* in the charge neutrality is allowed. The cation number
|
* in the charge neutrality is allowed. The cation number
|
||||||
* is followed, while the difference in charge neutrality
|
* is followed, while the difference in charge neutrality
|
||||||
* is dumped into the anion mole number to fix the imbalance.
|
* is dumped into the anion mole number to fix the imbalance.
|
||||||
|
|
@ -453,7 +453,7 @@ public:
|
||||||
* is charge neutrality. If there isn't, then it wouldn't
|
* is charge neutrality. If there isn't, then it wouldn't
|
||||||
* make much sense.
|
* make much sense.
|
||||||
*
|
*
|
||||||
* for the case of cIonSolnType_SINGLEANION, some slough
|
* for the case of cIonSolnType_SINGLEANION, some slough
|
||||||
* in the charge neutrality is allowed. The cation number
|
* in the charge neutrality is allowed. The cation number
|
||||||
* is followed, while the difference in charge neutrality
|
* is followed, while the difference in charge neutrality
|
||||||
* is dumped into the anion mole number to fix the imbalance.
|
* is dumped into the anion mole number to fix the imbalance.
|
||||||
|
|
@ -660,7 +660,7 @@ protected:
|
||||||
*
|
*
|
||||||
* Thus, we formulate the neutral molecule mole fraction NeutralMolecMoleFractions_[]
|
* Thus, we formulate the neutral molecule mole fraction NeutralMolecMoleFractions_[]
|
||||||
* vector from this association. We further assume that there are
|
* vector from this association. We further assume that there are
|
||||||
* no other associations. If fm_invert_simple_ is not true,
|
* no other associations. If fm_invert_simple_ is not true,
|
||||||
* then we need to do a formal inversion which takes a great
|
* then we need to do a formal inversion which takes a great
|
||||||
* deal of time and is not currently implemented.
|
* deal of time and is not currently implemented.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ namespace Cantera
|
||||||
* For example, a bulk-phase binary gas reaction between species j and k, producing
|
* For example, a bulk-phase binary gas reaction between species j and k, producing
|
||||||
* a new species l would have the
|
* a new species l would have the
|
||||||
* following equation for its rate of progress variable, \f$ R^1 \f$, which has
|
* following equation for its rate of progress variable, \f$ R^1 \f$, which has
|
||||||
* units of kmol m-3 s-1.
|
* units of kmol m-3 s-1.
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
* R^1 = k^1 C_j^a C_k^a = k^1 X_j X_k
|
* R^1 = k^1 C_j^a C_k^a = k^1 X_j X_k
|
||||||
|
|
@ -438,7 +438,7 @@ public:
|
||||||
virtual void setConcentrations(const doublereal* const c);
|
virtual void setConcentrations(const doublereal* const c);
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
/// @name Activities, Standard States, and Activity Concentrations
|
/// @name Activities, Standard States, and Activity Concentrations
|
||||||
/**
|
/**
|
||||||
* The activity \f$a_k\f$ of a species in solution is
|
* The activity \f$a_k\f$ of a species in solution is
|
||||||
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
* related to the chemical potential by \f[ \mu_k = \mu_k^0(T)
|
||||||
|
|
@ -549,7 +549,7 @@ public:
|
||||||
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
||||||
* \f]
|
* \f]
|
||||||
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
||||||
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
||||||
* species thermodynamic
|
* species thermodynamic
|
||||||
* property manager. They are polynomial functions of temperature.
|
* property manager. They are polynomial functions of temperature.
|
||||||
* @see SpeciesThermo
|
* @see SpeciesThermo
|
||||||
|
|
@ -638,7 +638,7 @@ public:
|
||||||
* manager class (see ThermoPhase::m_spthermo). How to relate pressure
|
* manager class (see ThermoPhase::m_spthermo). How to relate pressure
|
||||||
* changes to the reference state thermodynamics is resolved at this level.
|
* changes to the reference state thermodynamics is resolved at this level.
|
||||||
*
|
*
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -723,7 +723,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* units = J/kmol
|
* units = J/kmol
|
||||||
*
|
*
|
||||||
* @param g Output vector containing the reference state
|
* @param g Output vector containing the reference state
|
||||||
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
@ -793,7 +793,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param n number of parameters. Must be one
|
* @param n number of parameters. Must be one
|
||||||
* @param c array of \a n coefficients
|
* @param c array of \a n coefficients
|
||||||
* c[0] = The bulk lattice density (kmol m-3)
|
* c[0] = The bulk lattice density (kmol m-3)
|
||||||
*/
|
*/
|
||||||
virtual void setParameters(int n, doublereal* const c);
|
virtual void setParameters(int n, doublereal* const c);
|
||||||
|
|
||||||
|
|
@ -873,7 +873,7 @@ protected:
|
||||||
/**
|
/**
|
||||||
* Species molar volumes \f$ m^3 kmol^-1 \f$
|
* Species molar volumes \f$ m^3 kmol^-1 \f$
|
||||||
*/
|
*/
|
||||||
vector_fp m_speciesMolarVolume;
|
vector_fp m_speciesMolarVolume;
|
||||||
|
|
||||||
//! Site Density of the lattice solid
|
//! Site Density of the lattice solid
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ public:
|
||||||
|
|
||||||
//! Returns the reference pressure in Pa. This function is a wrapper
|
//! Returns the reference pressure in Pa. This function is a wrapper
|
||||||
//! that calls the species thermo refPressure function.
|
//! that calls the species thermo refPressure function.
|
||||||
virtual doublereal refPressure() const ;
|
virtual doublereal refPressure() const;
|
||||||
|
|
||||||
//! This method returns the convention used in specification
|
//! This method returns the convention used in specification
|
||||||
//! of the standard state, of which there are currently two,
|
//! of the standard state, of which there are currently two,
|
||||||
|
|
@ -398,7 +398,7 @@ public:
|
||||||
//! This method returns an array of generalized activity concentrations
|
//! This method returns an array of generalized activity concentrations
|
||||||
/*!
|
/*!
|
||||||
* The generalized activity concentrations,
|
* The generalized activity concentrations,
|
||||||
* \f$ C^a_k \f$, are defined such that \f$ a_k = C^a_k /
|
* \f$ C^a_k \f$, are defined such that \f$ a_k = C^a_k /
|
||||||
* C^0_k, \f$ where \f$ C^0_k \f$ is a standard concentration
|
* C^0_k, \f$ where \f$ C^0_k \f$ is a standard concentration
|
||||||
* defined below and \f$ a_k \f$ are activities used in the
|
* defined below and \f$ a_k \f$ are activities used in the
|
||||||
* thermodynamic functions. These activity (or generalized)
|
* thermodynamic functions. These activity (or generalized)
|
||||||
|
|
@ -463,7 +463,7 @@ public:
|
||||||
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
* \bar s_k(T,P) = \hat s^0_k(T) - R log(X_k)
|
||||||
* \f]
|
* \f]
|
||||||
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
* The reference-state pure-species entropies,\f$ \hat s^{ref}_k(T) \f$,
|
||||||
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
||||||
* species thermodynamic
|
* species thermodynamic
|
||||||
* property manager. They are polynomial functions of temperature.
|
* property manager. They are polynomial functions of temperature.
|
||||||
* @see SpeciesThermo
|
* @see SpeciesThermo
|
||||||
|
|
@ -564,7 +564,7 @@ public:
|
||||||
* @param g Vector of Gibbs free energies of the reference state.
|
* @param g Vector of Gibbs free energies of the reference state.
|
||||||
* length = m_kk
|
* length = m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
||||||
//! Initialize the ThermoPhase object after all species have been set up
|
//! Initialize the ThermoPhase object after all species have been set up
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -588,7 +588,7 @@ public:
|
||||||
|
|
||||||
//! Add in species from Slave phases
|
//! Add in species from Slave phases
|
||||||
/*!
|
/*!
|
||||||
* This hook is used for cSS_CONVENTION_SLAVE phases
|
* This hook is used for cSS_CONVENTION_SLAVE phases
|
||||||
*
|
*
|
||||||
* @param phaseNode XML_Node for the current phase
|
* @param phaseNode XML_Node for the current phase
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -306,7 +306,7 @@ public:
|
||||||
*/
|
*/
|
||||||
MargulesVPSSTP& operator=(const MargulesVPSSTP& b);
|
MargulesVPSSTP& operator=(const MargulesVPSSTP& b);
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from ThermoPhase.
|
//! Duplication routine for objects which inherit from ThermoPhase.
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate ThermoPhase objects
|
* This virtual routine can be used to duplicate ThermoPhase objects
|
||||||
* inherited from ThermoPhase even if the application only has
|
* inherited from ThermoPhase even if the application only has
|
||||||
|
|
@ -543,7 +543,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
||||||
|
|
||||||
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
||||||
/*!
|
/*!
|
||||||
* This function is a virtual method. For ideal mixtures
|
* This function is a virtual method. For ideal mixtures
|
||||||
* (unity activity coefficients), this can return zero.
|
* (unity activity coefficients), this can return zero.
|
||||||
|
|
@ -578,7 +578,7 @@ public:
|
||||||
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
||||||
* log Activity Coefficients. length = m_kk * m_kk
|
* log Activity Coefficients. length = m_kk * m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) ;
|
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
@ -639,7 +639,7 @@ private:
|
||||||
*/
|
*/
|
||||||
void s_update_dlnActCoeff_dlnN_diag() const;
|
void s_update_dlnActCoeff_dlnN_diag() const;
|
||||||
|
|
||||||
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
||||||
/*!
|
/*!
|
||||||
* This function will be called to update the internally stored
|
* This function will be called to update the internally stored
|
||||||
* derivative of the natural logarithm of the activity coefficients
|
* derivative of the natural logarithm of the activity coefficients
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ public:
|
||||||
virtual void setPressure(doublereal pres) {
|
virtual void setPressure(doublereal pres) {
|
||||||
m_press = pres;
|
m_press = pres;
|
||||||
}
|
}
|
||||||
virtual doublereal pressure() const {
|
virtual doublereal pressure() const {
|
||||||
return m_press;
|
return m_press;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param right Object to be copied
|
* @param right Object to be copied
|
||||||
*/
|
*/
|
||||||
MetalSHEelectrons(const MetalSHEelectrons& right);
|
MetalSHEelectrons(const MetalSHEelectrons& right);
|
||||||
|
|
||||||
//! Assignment operator
|
//! Assignment operator
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -253,7 +253,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void setPressure(doublereal p);
|
virtual void setPressure(doublereal p);
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/*!
|
/*!
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -269,7 +269,7 @@ public:
|
||||||
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
||||||
* \f]
|
* \f]
|
||||||
*/
|
*/
|
||||||
virtual doublereal thermalExpansionCoeff() const ;
|
virtual doublereal thermalExpansionCoeff() const;
|
||||||
|
|
||||||
//! @}
|
//! @}
|
||||||
//! @name Activities, Standard States, and Activity Concentrations
|
//! @name Activities, Standard States, and Activity Concentrations
|
||||||
|
|
@ -342,7 +342,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -350,7 +350,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -372,7 +372,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getCp_R(doublereal* cpr) const;
|
virtual void getCp_R(doublereal* cpr) const;
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* For an incompressible,
|
* For an incompressible,
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ namespace Cantera
|
||||||
* R_s = k_s C_{gas}
|
* R_s = k_s C_{gas}
|
||||||
* \f]
|
* \f]
|
||||||
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
||||||
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
||||||
* units of m s-1. Nowhere does the concentration of the bulk phase
|
* units of m s-1. Nowhere does the concentration of the bulk phase
|
||||||
* appear in the rate constant expression, since it's a stoichiometric
|
* appear in the rate constant expression, since it's a stoichiometric
|
||||||
* phase and the activity is always equal to 1.0.
|
* phase and the activity is always equal to 1.0.
|
||||||
|
|
@ -118,7 +118,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param right Object to be copied
|
* @param right Object to be copied
|
||||||
*/
|
*/
|
||||||
MineralEQ3(const MineralEQ3& right);
|
MineralEQ3(const MineralEQ3& right);
|
||||||
|
|
||||||
//! Assignment operator
|
//! Assignment operator
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -165,7 +165,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void setPressure(doublereal p);
|
virtual void setPressure(doublereal p);
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/*!
|
/*!
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -181,7 +181,7 @@ public:
|
||||||
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
||||||
* \f]
|
* \f]
|
||||||
*/
|
*/
|
||||||
virtual doublereal thermalExpansionCoeff() const ;
|
virtual doublereal thermalExpansionCoeff() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
@ -256,7 +256,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -264,7 +264,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -286,7 +286,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getCp_R(doublereal* cpr) const;
|
virtual void getCp_R(doublereal* cpr) const;
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* For an incompressible,
|
* For an incompressible,
|
||||||
|
|
|
||||||
|
|
@ -297,7 +297,7 @@ public:
|
||||||
*/
|
*/
|
||||||
MixedSolventElectrolyte& operator=(const MixedSolventElectrolyte& b);
|
MixedSolventElectrolyte& operator=(const MixedSolventElectrolyte& b);
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from ThermoPhase.
|
//! Duplication routine for objects which inherit from ThermoPhase.
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate ThermoPhase objects
|
* This virtual routine can be used to duplicate ThermoPhase objects
|
||||||
* inherited from ThermoPhase even if the application only has
|
* inherited from ThermoPhase even if the application only has
|
||||||
|
|
@ -537,7 +537,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
||||||
|
|
||||||
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
||||||
/*!
|
/*!
|
||||||
* This function is a virtual method. For ideal mixtures
|
* This function is a virtual method. For ideal mixtures
|
||||||
* (unity activity coefficients), this can return zero.
|
* (unity activity coefficients), this can return zero.
|
||||||
|
|
@ -572,7 +572,7 @@ public:
|
||||||
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
||||||
* log Activity Coefficients. length = m_kk * m_kk
|
* log Activity Coefficients. length = m_kk * m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) ;
|
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -632,7 +632,7 @@ private:
|
||||||
*/
|
*/
|
||||||
void s_update_dlnActCoeff_dlnN_diag() const;
|
void s_update_dlnActCoeff_dlnN_diag() const;
|
||||||
|
|
||||||
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
||||||
/*!
|
/*!
|
||||||
* This function will be called to update the internally stored
|
* This function will be called to update the internally stored
|
||||||
* derivative of the natural logarithm of the activity coefficients
|
* derivative of the natural logarithm of the activity coefficients
|
||||||
|
|
|
||||||
|
|
@ -24,17 +24,17 @@ namespace Cantera
|
||||||
#define FLUID_UNSTABLE -4
|
#define FLUID_UNSTABLE -4
|
||||||
#define FLUID_UNDEFINED -3
|
#define FLUID_UNDEFINED -3
|
||||||
#define FLUID_SUPERCRIT -2
|
#define FLUID_SUPERCRIT -2
|
||||||
#define FLUID_GAS -1
|
#define FLUID_GAS -1
|
||||||
#define FLUID_LIQUID_0 0
|
#define FLUID_LIQUID_0 0
|
||||||
#define FLUID_LIQUID_1 1
|
#define FLUID_LIQUID_1 1
|
||||||
#define FLUID_LIQUID_2 2
|
#define FLUID_LIQUID_2 2
|
||||||
#define FLUID_LIQUID_3 3
|
#define FLUID_LIQUID_3 3
|
||||||
#define FLUID_LIQUID_4 4
|
#define FLUID_LIQUID_4 4
|
||||||
#define FLUID_LIQUID_5 5
|
#define FLUID_LIQUID_5 5
|
||||||
#define FLUID_LIQUID_6 6
|
#define FLUID_LIQUID_6 6
|
||||||
#define FLUID_LIQUID_7 7
|
#define FLUID_LIQUID_7 7
|
||||||
#define FLUID_LIQUID_8 8
|
#define FLUID_LIQUID_8 8
|
||||||
#define FLUID_LIQUID_9 9
|
#define FLUID_LIQUID_9 9
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup thermoprops
|
* @ingroup thermoprops
|
||||||
|
|
@ -169,7 +169,7 @@ public:
|
||||||
* getChemPotentials() and then dividing by RT. No need for child
|
* getChemPotentials() and then dividing by RT. No need for child
|
||||||
* classes to handle.
|
* classes to handle.
|
||||||
*
|
*
|
||||||
* @param mu Output vector of non-dimensional species chemical potentials
|
* @param mu Output vector of non-dimensional species chemical potentials
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
void getChemPotentials_RT(doublereal* mu) const;
|
void getChemPotentials_RT(doublereal* mu) const;
|
||||||
|
|
@ -260,7 +260,7 @@ public:
|
||||||
virtual void getIntEnergy_RT(doublereal* urt) const;
|
virtual void getIntEnergy_RT(doublereal* urt) const;
|
||||||
|
|
||||||
//! Get the nondimensional Heat Capacities at constant
|
//! Get the nondimensional Heat Capacities at constant
|
||||||
//! pressure for the standard state of the species at the current T and P.
|
//! pressure for the standard state of the species at the current T and P.
|
||||||
/*!
|
/*!
|
||||||
* For all objects with the Mixture Fugacity approximation, we define the
|
* For all objects with the Mixture Fugacity approximation, we define the
|
||||||
* standard state as an ideal gas at the current temperature and pressure of the solution.
|
* standard state as an ideal gas at the current temperature and pressure of the solution.
|
||||||
|
|
@ -423,7 +423,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Updates the reference state thermodynamic functions at the current T of the solution.
|
//! Updates the reference state thermodynamic functions at the current T of the solution.
|
||||||
/*!
|
/*!
|
||||||
* This function must be called for every call to functions in this
|
* This function must be called for every call to functions in this
|
||||||
* class. It checks to see whether the temperature has changed and
|
* class. It checks to see whether the temperature has changed and
|
||||||
|
|
@ -446,7 +446,7 @@ public:
|
||||||
* variables for holding the species reference-state values of Cp, H, S, and V at the
|
* variables for holding the species reference-state values of Cp, H, S, and V at the
|
||||||
* last temperature and reference pressure called. These functions are not recalculated
|
* last temperature and reference pressure called. These functions are not recalculated
|
||||||
* if a new call is made using the previous temperature.
|
* if a new call is made using the previous temperature.
|
||||||
* All calculations are done within the routine _updateRefStateThermo().
|
* All calculations are done within the routine _updateRefStateThermo().
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
|
|
@ -549,9 +549,9 @@ public:
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
//! Set the initial state of the phase to the conditions specified in the state XML element.
|
//! Set the initial state of the phase to the conditions specified in the state XML element.
|
||||||
/*!
|
/*!
|
||||||
* This method sets the temperature, pressure, and mole fraction vector to a set default value.
|
* This method sets the temperature, pressure, and mole fraction vector to a set default value.
|
||||||
*
|
*
|
||||||
* @param state An XML_Node object corresponding to
|
* @param state An XML_Node object corresponding to
|
||||||
* the "state" entry for this phase in the input file.
|
* the "state" entry for this phase in the input file.
|
||||||
|
|
@ -615,7 +615,7 @@ protected:
|
||||||
//! Calculate the value of z
|
//! Calculate the value of z
|
||||||
/*!
|
/*!
|
||||||
* \f[
|
* \f[
|
||||||
* z = \frac{P v}{ R T}
|
* z = \frac{P v}{R T}
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* returns the value of z
|
* returns the value of z
|
||||||
|
|
@ -714,7 +714,7 @@ public:
|
||||||
* - WATER_LIQUID below the critical temperature but above the critical density
|
* - WATER_LIQUID below the critical temperature but above the critical density
|
||||||
* - WATER_SUPERCRIT above the critical temperature
|
* - WATER_SUPERCRIT above the critical temperature
|
||||||
*/
|
*/
|
||||||
int phaseState(bool checkState = false) const ;
|
int phaseState(bool checkState = false) const;
|
||||||
|
|
||||||
//! Return the value of the density at the liquid spinodal point (on the liquid side)
|
//! Return the value of the density at the liquid spinodal point (on the liquid side)
|
||||||
//! for the current temperature.
|
//! for the current temperature.
|
||||||
|
|
@ -791,7 +791,7 @@ protected:
|
||||||
*
|
*
|
||||||
* units = Pascals
|
* units = Pascals
|
||||||
*/
|
*/
|
||||||
doublereal m_Pcurrent;
|
doublereal m_Pcurrent;
|
||||||
|
|
||||||
//! Storage for the current values of the mole fractions of the species
|
//! Storage for the current values of the mole fractions of the species
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -815,19 +815,19 @@ protected:
|
||||||
mutable doublereal m_Tlast_ref;
|
mutable doublereal m_Tlast_ref;
|
||||||
|
|
||||||
//! Temporary storage for log of p/rt
|
//! Temporary storage for log of p/rt
|
||||||
mutable doublereal m_logc0;
|
mutable doublereal m_logc0;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state enthalpies
|
//! Temporary storage for dimensionless reference state enthalpies
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state heat capacities
|
//! Temporary storage for dimensionless reference state heat capacities
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state Gibbs energies
|
//! Temporary storage for dimensionless reference state Gibbs energies
|
||||||
mutable vector_fp m_g0_RT;
|
mutable vector_fp m_g0_RT;
|
||||||
|
|
||||||
//! Temporary storage for dimensionless reference state entropies
|
//! Temporary storage for dimensionless reference state entropies
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
spinodalFunc* fdpdv_;
|
spinodalFunc* fdpdv_;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ namespace Cantera
|
||||||
*
|
*
|
||||||
* The standard states for thermodynamic objects that derive from <b>MolalityVPSSTP</b>
|
* The standard states for thermodynamic objects that derive from <b>MolalityVPSSTP</b>
|
||||||
* are on the unit molality basis. Chemical potentials
|
* are on the unit molality basis. Chemical potentials
|
||||||
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
* of the solutes, \f$ \mu_k \f$, and the solvent, \f$ \mu_o \f$, which are based
|
||||||
* on the molality form, have the following general format:
|
* on the molality form, have the following general format:
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -103,7 +103,7 @@ namespace Cantera
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* MolalityVPSSTP::osmoticCoefficient() returns the value of \f$ \phi \f$.
|
* MolalityVPSSTP::osmoticCoefficient() returns the value of \f$ \phi \f$.
|
||||||
* Note there are a few of definitions of the osmotic coefficient floating
|
* Note there are a few of definitions of the osmotic coefficient floating
|
||||||
* around. We use the one defined in
|
* around. We use the one defined in
|
||||||
* (Activity Coefficients in Electrolyte Solutions, K. S. Pitzer
|
* (Activity Coefficients in Electrolyte Solutions, K. S. Pitzer
|
||||||
* CRC Press, Boca Raton, 1991, p. 85, Eqn. 28). This definition is most clearly
|
* CRC Press, Boca Raton, 1991, p. 85, Eqn. 28). This definition is most clearly
|
||||||
|
|
@ -470,7 +470,7 @@ public:
|
||||||
|
|
||||||
//! Get the array of non-dimensional molality based
|
//! Get the array of non-dimensional molality based
|
||||||
//! activity coefficients at the current solution temperature,
|
//! activity coefficients at the current solution temperature,
|
||||||
//! pressure, and solution concentration.
|
//! pressure, and solution concentration.
|
||||||
/*!
|
/*!
|
||||||
* See Denbigh p. 278 for a thorough discussion. This class must be overwritten in
|
* See Denbigh p. 278 for a thorough discussion. This class must be overwritten in
|
||||||
* classes which derive from MolalityVPSSTP. This function takes over from the
|
* classes which derive from MolalityVPSSTP. This function takes over from the
|
||||||
|
|
@ -506,7 +506,7 @@ public:
|
||||||
* \phi = \frac{- ln(a_o)}{\tilde{M}_o \sum_{i \ne o} m_i}
|
* \phi = \frac{- ln(a_o)}{\tilde{M}_o \sum_{i \ne o} m_i}
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* Note there are a few of definitions of the osmotic coefficient floating
|
* Note there are a few of definitions of the osmotic coefficient floating
|
||||||
* around. We use the one defined in
|
* around. We use the one defined in
|
||||||
* (Activity Coefficients in Electrolyte Solutions, K. S. Pitzer
|
* (Activity Coefficients in Electrolyte Solutions, K. S. Pitzer
|
||||||
* CRC Press, Boca Raton, 1991, p. 85, Eqn. 28). This definition is most clearly
|
* CRC Press, Boca Raton, 1991, p. 85, Eqn. 28). This definition is most clearly
|
||||||
|
|
@ -679,7 +679,7 @@ protected:
|
||||||
|
|
||||||
//! Get the array of unscaled non-dimensional molality based
|
//! Get the array of unscaled non-dimensional molality based
|
||||||
//! activity coefficients at the current solution temperature,
|
//! activity coefficients at the current solution temperature,
|
||||||
//! pressure, and solution concentration.
|
//! pressure, and solution concentration.
|
||||||
/*!
|
/*!
|
||||||
* See Denbigh p. 278 for a thorough discussion. This class must be overwritten in
|
* See Denbigh p. 278 for a thorough discussion. This class must be overwritten in
|
||||||
* classes which derive from MolalityVPSSTP. This function takes over from the
|
* classes which derive from MolalityVPSSTP. This function takes over from the
|
||||||
|
|
@ -736,7 +736,7 @@ protected:
|
||||||
* scaling.
|
* scaling.
|
||||||
* Either PHSCALE_PITZER or PHSCALE_NBS
|
* Either PHSCALE_PITZER or PHSCALE_NBS
|
||||||
*/
|
*/
|
||||||
int m_pHScalingType;
|
int m_pHScalingType;
|
||||||
|
|
||||||
//! Index of the phScale species
|
//! Index of the phScale species
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -772,7 +772,7 @@ protected:
|
||||||
* Note this vector is a mutable quantity.
|
* Note this vector is a mutable quantity.
|
||||||
* units are (kg/kmol)
|
* units are (kg/kmol)
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_molalities;
|
mutable vector_fp m_molalities;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -819,7 +819,7 @@ const int PHSCALE_PITZER = 0;
|
||||||
* This is the NBS pH scale, which is used in all conventional pH
|
* This is the NBS pH scale, which is used in all conventional pH
|
||||||
* measurements. and is based on the Bates-Guggenheim equations.
|
* measurements. and is based on the Bates-Guggenheim equations.
|
||||||
*/
|
*/
|
||||||
const int PHSCALE_NBS = 1;
|
const int PHSCALE_NBS = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param b class to be copied
|
* @param b class to be copied
|
||||||
*/
|
*/
|
||||||
MolarityIonicVPSSTP(const MolarityIonicVPSSTP& b);
|
MolarityIonicVPSSTP(const MolarityIonicVPSSTP& b);
|
||||||
|
|
||||||
/// Assignment operator
|
/// Assignment operator
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -99,7 +99,7 @@ public:
|
||||||
*/
|
*/
|
||||||
MolarityIonicVPSSTP& operator=(const MolarityIonicVPSSTP& b);
|
MolarityIonicVPSSTP& operator=(const MolarityIonicVPSSTP& b);
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from ThermoPhase.
|
//! Duplication routine for objects which inherit from ThermoPhase.
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate ThermoPhase objects
|
* This virtual routine can be used to duplicate ThermoPhase objects
|
||||||
* inherited from ThermoPhase even if the application only has
|
* inherited from ThermoPhase even if the application only has
|
||||||
|
|
@ -348,10 +348,10 @@ protected:
|
||||||
mutable std::vector<doublereal> moleFractionsTmp_;
|
mutable std::vector<doublereal> moleFractionsTmp_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define PBTYPE_PASSTHROUGH 0
|
#define PBTYPE_PASSTHROUGH 0
|
||||||
#define PBTYPE_SINGLEANION 1
|
#define PBTYPE_SINGLEANION 1
|
||||||
#define PBTYPE_SINGLECATION 2
|
#define PBTYPE_SINGLECATION 2
|
||||||
#define PBTYPE_MULTICATIONANION 3
|
#define PBTYPE_MULTICATIONANION 3
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class XML_Node;
|
||||||
* The piece-wise constant heat capacity is calculated from the change in the chemical potential over each interval.
|
* The piece-wise constant heat capacity is calculated from the change in the chemical potential over each interval.
|
||||||
* Once the heat capacity is known, the other thermodynamic functions may be determined.
|
* Once the heat capacity is known, the other thermodynamic functions may be determined.
|
||||||
* The basic equation for going from temperature point 1 to temperature point 2
|
* The basic equation for going from temperature point 1 to temperature point 2
|
||||||
* are as follows for \f$ T \f$, \f$ T_1 <= T <= T_2 \f$
|
* are as follows for \f$ T \f$, \f$ T_1 <= T <= T_2 \f$
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
* \mu^o(T_1) = h^o(T_1) - T_1 * s^o(T_1)
|
* \mu^o(T_1) = h^o(T_1) - T_1 * s^o(T_1)
|
||||||
|
|
@ -46,7 +46,7 @@ class XML_Node;
|
||||||
* h^o(T_2) = h^o(T_1) + Cp^o(T_1)(T_2 - T_1)
|
* h^o(T_2) = h^o(T_1) + Cp^o(T_1)(T_2 - T_1)
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* Within each interval the following relations are used. For \f$ T \f$, \f$ T_1 <= T <= T_2 \f$
|
* Within each interval the following relations are used. For \f$ T \f$, \f$ T_1 <= T <= T_2 \f$
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
* \mu^o(T) = \mu^o(T_1) + Cp^o(T_1)(T - T_1) - Cp^o(T_1)(T_2)ln(\frac{T}{T_1}) - s^o(T_1)(T - T_1)
|
* \mu^o(T) = \mu^o(T_1) + Cp^o(T_1)(T - T_1) - Cp^o(T_1)(T_2)ln(\frac{T}{T_1}) - s^o(T_1)(T - T_1)
|
||||||
|
|
@ -110,7 +110,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the functions of
|
* This method is called with a pointer to an array containing the functions of
|
||||||
* temperature needed by this parameterization, and three pointers to arrays where the
|
* temperature needed by this parameterization, and three pointers to arrays where the
|
||||||
* computed property values should be written. This method updates only one value in
|
* computed property values should be written. This method updates only one value in
|
||||||
* each array.
|
* each array.
|
||||||
*
|
*
|
||||||
|
|
@ -125,12 +125,12 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void updateProperties(const doublereal* tPoly,
|
virtual void updateProperties(const doublereal* tPoly,
|
||||||
doublereal* cp_R, doublereal* h_RT,
|
doublereal* cp_R, doublereal* h_RT,
|
||||||
doublereal* s_R) const ;
|
doublereal* s_R) const;
|
||||||
|
|
||||||
virtual void updatePropertiesTemp(const doublereal temp,
|
virtual void updatePropertiesTemp(const doublereal temp,
|
||||||
doublereal* cp_R,
|
doublereal* cp_R,
|
||||||
doublereal* h_RT,
|
doublereal* h_RT,
|
||||||
doublereal* s_R) const ;
|
doublereal* s_R) const;
|
||||||
virtual void reportParameters(size_t& n, int& type,
|
virtual void reportParameters(size_t& n, int& type,
|
||||||
doublereal& tlow, doublereal& thigh,
|
doublereal& tlow, doublereal& thigh,
|
||||||
doublereal& pref,
|
doublereal& pref,
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the
|
* This method is called with a pointer to an array containing the
|
||||||
* functions of temperature needed by this parameterization, and three
|
* functions of temperature needed by this parameterization, and three
|
||||||
* pointers to arrays where the computed property values should be
|
* pointers to arrays where the computed property values should be
|
||||||
* written. This method updates only one value in each array.
|
* written. This method updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the
|
* This method is called with a pointer to an array containing the
|
||||||
* functions of temperature needed by this parameterization, and three
|
* functions of temperature needed by this parameterization, and three
|
||||||
* pointers to arrays where the computed property values should be
|
* pointers to arrays where the computed property values should be
|
||||||
* written. This method updates only one value in each array.
|
* written. This method updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the
|
* This method is called with a pointer to an array containing the
|
||||||
* functions of temperature needed by this parameterization, and three
|
* functions of temperature needed by this parameterization, and three
|
||||||
* pointers to arrays where the computed property values should be
|
* pointers to arrays where the computed property values should be
|
||||||
* written. This method updates only one value in each array.
|
* written. This method updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
@ -104,18 +104,18 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void updateProperties(const doublereal* tt,
|
virtual void updateProperties(const doublereal* tt,
|
||||||
doublereal* cp_R, doublereal* h_RT, doublereal* s_R) const {
|
doublereal* cp_R, doublereal* h_RT, doublereal* s_R) const {
|
||||||
doublereal ct0 = m_coeff[0]; // a0
|
doublereal ct0 = m_coeff[0]; // a0
|
||||||
doublereal ct1 = m_coeff[1]*tt[0]; // a1 * T
|
doublereal ct1 = m_coeff[1]*tt[0]; // a1 * T
|
||||||
doublereal ct2 = m_coeff[2]*tt[1]; // a2 * T^2
|
doublereal ct2 = m_coeff[2]*tt[1]; // a2 * T^2
|
||||||
doublereal ct3 = m_coeff[3]*tt[2]; // a3 * T^3
|
doublereal ct3 = m_coeff[3]*tt[2]; // a3 * T^3
|
||||||
doublereal ct4 = m_coeff[4]*tt[3]; // a4 * T^4
|
doublereal ct4 = m_coeff[4]*tt[3]; // a4 * T^4
|
||||||
|
|
||||||
doublereal cp, h, s;
|
doublereal cp, h, s;
|
||||||
cp = ct0 + ct1 + ct2 + ct3 + ct4;
|
cp = ct0 + ct1 + ct2 + ct3 + ct4;
|
||||||
h = ct0 + 0.5*ct1 + 1.0/3.0*ct2 + 0.25*ct3 + 0.2*ct4
|
h = ct0 + 0.5*ct1 + 1.0/3.0*ct2 + 0.25*ct3 + 0.2*ct4
|
||||||
+ m_coeff[5]*tt[4]; // last term is a5/T
|
+ m_coeff[5]*tt[4]; // last term is a5/T
|
||||||
s = ct0*tt[5] + ct1 + 0.5*ct2 + 1.0/3.0*ct3
|
s = ct0*tt[5] + ct1 + 0.5*ct2 + 1.0/3.0*ct3
|
||||||
+0.25*ct4 + m_coeff[6]; // last term is a6
|
+0.25*ct4 + m_coeff[6]; // last term is a6
|
||||||
|
|
||||||
// return the computed properties for this species
|
// return the computed properties for this species
|
||||||
*cp_R = cp;
|
*cp_R = cp;
|
||||||
|
|
@ -156,14 +156,14 @@ public:
|
||||||
double tt[6];
|
double tt[6];
|
||||||
double temp = 298.15;
|
double temp = 298.15;
|
||||||
updateTemperaturePoly(temp, tt);
|
updateTemperaturePoly(temp, tt);
|
||||||
doublereal ct0 = m_coeff[0]; // a0
|
doublereal ct0 = m_coeff[0]; // a0
|
||||||
doublereal ct1 = m_coeff[1]*tt[0]; // a1 * T
|
doublereal ct1 = m_coeff[1]*tt[0]; // a1 * T
|
||||||
doublereal ct2 = m_coeff[2]*tt[1]; // a2 * T^2
|
doublereal ct2 = m_coeff[2]*tt[1]; // a2 * T^2
|
||||||
doublereal ct3 = m_coeff[3]*tt[2]; // a3 * T^3
|
doublereal ct3 = m_coeff[3]*tt[2]; // a3 * T^3
|
||||||
doublereal ct4 = m_coeff[4]*tt[3]; // a4 * T^4
|
doublereal ct4 = m_coeff[4]*tt[3]; // a4 * T^4
|
||||||
|
|
||||||
double h_RT = ct0 + 0.5*ct1 + 1.0/3.0*ct2 + 0.25*ct3 + 0.2*ct4
|
double h_RT = ct0 + 0.5*ct1 + 1.0/3.0*ct2 + 0.25*ct3 + 0.2*ct4
|
||||||
+ m_coeff[5]*tt[4]; // last t
|
+ m_coeff[5]*tt[4]; // last t
|
||||||
|
|
||||||
double h = h_RT * GasConstant * temp;
|
double h = h_RT * GasConstant * temp;
|
||||||
if (h298) {
|
if (h298) {
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the
|
* This method is called with a pointer to an array containing the
|
||||||
* functions of temperature needed by this parameterization, and three
|
* functions of temperature needed by this parameterization, and three
|
||||||
* pointers to arrays where the computed property values should be
|
* pointers to arrays where the computed property values should be
|
||||||
* written. This method updates only one value in each array.
|
* written. This method updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
@ -162,7 +162,7 @@ public:
|
||||||
double h = mnp_low.reportHf298(0);
|
double h = mnp_low.reportHf298(0);
|
||||||
double hnew = h + delH;
|
double hnew = h + delH;
|
||||||
mnp_low.modifyOneHf298(k, hnew);
|
mnp_low.modifyOneHf298(k, hnew);
|
||||||
h = mnp_high.reportHf298(0);
|
h = mnp_high.reportHf298(0);
|
||||||
hnew = h + delH;
|
hnew = h + delH;
|
||||||
mnp_high.modifyOneHf298(k, hnew);
|
mnp_high.modifyOneHf298(k, hnew);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ public:
|
||||||
*
|
*
|
||||||
* Note this is just an extra routine to check the arithmetic
|
* Note this is just an extra routine to check the arithmetic
|
||||||
*
|
*
|
||||||
* @return returns the species standard state enthalpy in J kmol-1
|
* @return returns the species standard state enthalpy in J kmol-1
|
||||||
*/
|
*/
|
||||||
doublereal enthalpy_mole2() const;
|
doublereal enthalpy_mole2() const;
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -326,7 +326,7 @@ private:
|
||||||
//! Translate a Gibbs free energy of formation value to a NIST-based Chemical potential
|
//! Translate a Gibbs free energy of formation value to a NIST-based Chemical potential
|
||||||
/*!
|
/*!
|
||||||
* Internally, this function is used to translate the input value,
|
* Internally, this function is used to translate the input value,
|
||||||
* m_deltaG_formation_tr_pr, to the internally stored value, m_Mu0_tr_pr.
|
* m_deltaG_formation_tr_pr, to the internally stored value, m_Mu0_tr_pr.
|
||||||
*/
|
*/
|
||||||
void convertDGFormation();
|
void convertDGFormation();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ public:
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* <I>m</I> is the neutral molecule species index. \f$ \alpha_{m , k} \f$ is the stoiciometric
|
* <I>m</I> is the neutral molecule species index. \f$ \alpha_{m , k} \f$ is the stoiciometric
|
||||||
* coefficient for the neutral molecule, <I>m</I>, that creates the thermodynamics for the ionic species <I>k</I>.
|
* coefficient for the neutral molecule, <I>m</I>, that creates the thermodynamics for the ionic species <I>k</I>.
|
||||||
* A factor \f$ 2.0 \ln{2.0} \f$ is added to all ions except for the species ionic species, which in this
|
* A factor \f$ 2.0 \ln{2.0} \f$ is added to all ions except for the species ionic species, which in this
|
||||||
* case is the single anion species, with species index <I>sp</I>.
|
* case is the single anion species, with species index <I>sp</I>.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ private:
|
||||||
private:
|
private:
|
||||||
//! Enumerated data type describing the type of volume model
|
//! Enumerated data type describing the type of volume model
|
||||||
//! used to calculate the standard state volume of the species
|
//! used to calculate the standard state volume of the species
|
||||||
SSVolume_Model_enumType volumeModel_;
|
SSVolume_Model_enumType volumeModel_;
|
||||||
|
|
||||||
//! Value of the constant molar volume for the species
|
//! Value of the constant molar volume for the species
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ public:
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from PDSS
|
//! Duplication routine for objects which inherit from PDSS
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate PDSS objects
|
* This virtual routine can be used to duplicate PDSS objects
|
||||||
* inherited from PDSS even if the application only has
|
* inherited from PDSS even if the application only has
|
||||||
* a pointer to PDSS to work with.
|
* a pointer to PDSS to work with.
|
||||||
*
|
*
|
||||||
|
|
@ -186,7 +186,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual doublereal dthermalExpansionCoeffdT() const;
|
virtual doublereal dthermalExpansionCoeffdT() const;
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/*!
|
/*!
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
|
||||||
|
|
@ -232,7 +232,7 @@ public:
|
||||||
//! @param m element index
|
//! @param m element index
|
||||||
doublereal nAtoms(size_t k, size_t m) const;
|
doublereal nAtoms(size_t k, size_t m) const;
|
||||||
|
|
||||||
//! Get a vector containing the atomic composition of species k
|
//! Get a vector containing the atomic composition of species k
|
||||||
//! @param k species index
|
//! @param k species index
|
||||||
//! @param atomArray vector containing the atomic number in the species.
|
//! @param atomArray vector containing the atomic number in the species.
|
||||||
//! Length: m_mm
|
//! Length: m_mm
|
||||||
|
|
|
||||||
|
|
@ -370,7 +370,7 @@ public:
|
||||||
*/
|
*/
|
||||||
PhaseCombo_Interaction& operator=(const PhaseCombo_Interaction& b);
|
PhaseCombo_Interaction& operator=(const PhaseCombo_Interaction& b);
|
||||||
|
|
||||||
//! Duplication routine for objects which inherit from ThermoPhase.
|
//! Duplication routine for objects which inherit from ThermoPhase.
|
||||||
/*!
|
/*!
|
||||||
* This virtual routine can be used to duplicate ThermoPhase objects
|
* This virtual routine can be used to duplicate ThermoPhase objects
|
||||||
* inherited from ThermoPhase even if the application only has
|
* inherited from ThermoPhase even if the application only has
|
||||||
|
|
@ -618,7 +618,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
||||||
|
|
||||||
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
||||||
/*!
|
/*!
|
||||||
* This function is a virtual method. For ideal mixtures
|
* This function is a virtual method. For ideal mixtures
|
||||||
* (unity activity coefficients), this can return zero.
|
* (unity activity coefficients), this can return zero.
|
||||||
|
|
@ -714,7 +714,7 @@ private:
|
||||||
*/
|
*/
|
||||||
void s_update_dlnActCoeff_dlnN_diag() const;
|
void s_update_dlnActCoeff_dlnN_diag() const;
|
||||||
|
|
||||||
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
//! Update the derivative of the log of the activity coefficients wrt log(moles_m)
|
||||||
/*!
|
/*!
|
||||||
* This function will be called to update the internally stored
|
* This function will be called to update the internally stored
|
||||||
* derivative of the natural logarithm of the activity coefficients
|
* derivative of the natural logarithm of the activity coefficients
|
||||||
|
|
|
||||||
|
|
@ -252,7 +252,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -260,7 +260,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ namespace Cantera
|
||||||
* The independent unknowns are pressure, temperature, and mass fraction.
|
* The independent unknowns are pressure, temperature, and mass fraction.
|
||||||
*
|
*
|
||||||
* Several concepts are introduced. The first concept is there are temporary
|
* Several concepts are introduced. The first concept is there are temporary
|
||||||
* variables for holding the species standard state values of Cp, H, S, G, and V at the
|
* variables for holding the species standard state values of Cp, H, S, G, and V at the
|
||||||
* last temperature and pressure called. These functions are not recalculated
|
* last temperature and pressure called. These functions are not recalculated
|
||||||
* if a new call is made using the previous temperature and pressure. Currently,
|
* if a new call is made using the previous temperature and pressure. Currently,
|
||||||
* these variables and the calculation method are handled by the VPSSMgr class,
|
* these variables and the calculation method are handled by the VPSSMgr class,
|
||||||
|
|
@ -136,7 +136,7 @@ namespace Cantera
|
||||||
* \tilde{h}_k(T,P) = h^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
|
* \tilde{h}_k(T,P) = h^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
|
||||||
* \f]
|
* \f]
|
||||||
*
|
*
|
||||||
* The partial molar volume for species <I>k</I> is
|
* The partial molar volume for species <I>k</I> is
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
* \tilde V_k(T,P) = V^o_k(T,P) + R T \frac{d \ln(\gamma_k) }{dP}
|
* \tilde V_k(T,P) = V^o_k(T,P) + R T \frac{d \ln(\gamma_k) }{dP}
|
||||||
|
|
@ -528,7 +528,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
|
||||||
|
|
||||||
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
//! Get the array of derivatives of the log activity coefficients wrt mole numbers - diagonal only
|
||||||
/*!
|
/*!
|
||||||
* This function is a virtual method. For ideal mixtures
|
* This function is a virtual method. For ideal mixtures
|
||||||
* (unity activity coefficients), this can return zero.
|
* (unity activity coefficients), this can return zero.
|
||||||
|
|
@ -563,7 +563,7 @@ public:
|
||||||
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
* @param dlnActCoeffdlnN Output vector of derivatives of the
|
||||||
* log Activity Coefficients. length = m_kk * m_kk
|
* log Activity Coefficients. length = m_kk * m_kk
|
||||||
*/
|
*/
|
||||||
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN) ;
|
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
@ -624,7 +624,7 @@ public:
|
||||||
* @param VintOut Output contribution to the voltage corresponding to nonideal term
|
* @param VintOut Output contribution to the voltage corresponding to nonideal term
|
||||||
* @param voltsOut Output contribution to the voltage corresponding to nonideal term and mf term
|
* @param voltsOut Output contribution to the voltage corresponding to nonideal term and mf term
|
||||||
*/
|
*/
|
||||||
void Vint(double& VintOut, double& voltsOut) ;
|
void Vint(double& VintOut, double& voltsOut);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -654,7 +654,7 @@ protected:
|
||||||
|
|
||||||
//! Entropy term for the binary mole fraction interaction of the
|
//! Entropy term for the binary mole fraction interaction of the
|
||||||
//! excess Gibbs free energy expression
|
//! excess Gibbs free energy expression
|
||||||
mutable std::vector< vector_fp> m_SE_m_ij;
|
mutable std::vector< vector_fp> m_SE_m_ij;
|
||||||
|
|
||||||
//! form of the RedlichKister interaction expression
|
//! form of the RedlichKister interaction expression
|
||||||
/*!
|
/*!
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* Since the mass density, temperature, and mass fractions are stored,
|
* Since the mass density, temperature, and mass fractions are stored,
|
||||||
* this method uses these values to implement the
|
* this method uses these values to implement the
|
||||||
* mechanical equation of state \f$ P(T, \rho, Y_1, \dots, Y_K) \f$.
|
* mechanical equation of state \f$ P(T, \rho, Y_1, \dots, Y_K) \f$.
|
||||||
*
|
*
|
||||||
* \f[
|
* \f[
|
||||||
* P = \frac{RT}{v-b_{mix}} - \frac{a_{mix}}{T^{0.5} v \left( v + b_{mix} \right) }
|
* P = \frac{RT}{v-b_{mix}} - \frac{a_{mix}}{T^{0.5} v \left( v + b_{mix} \right) }
|
||||||
|
|
@ -224,7 +224,7 @@ public:
|
||||||
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
//! Returns the standard concentration \f$ C^0_k \f$, which is used to normalize
|
||||||
//! the generalized concentration.
|
//! the generalized concentration.
|
||||||
/*!
|
/*!
|
||||||
* This is defined as the concentration by which the generalized
|
* This is defined as the concentration by which the generalized
|
||||||
* concentration is normalized to produce the activity.
|
* concentration is normalized to produce the activity.
|
||||||
* In many cases, this quantity will be the same for all species in a phase.
|
* In many cases, this quantity will be the same for all species in a phase.
|
||||||
* Since the activity for an ideal gas mixture is
|
* Since the activity for an ideal gas mixture is
|
||||||
|
|
@ -261,7 +261,7 @@ public:
|
||||||
* getChemPotentials() and then dividing by RT. No need for child
|
* getChemPotentials() and then dividing by RT. No need for child
|
||||||
* classes to handle.
|
* classes to handle.
|
||||||
*
|
*
|
||||||
* @param mu Output vector of non-dimensional species chemical potentials
|
* @param mu Output vector of non-dimensional species chemical potentials
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
void getChemPotentials_RT(doublereal* mu) const;
|
void getChemPotentials_RT(doublereal* mu) const;
|
||||||
|
|
@ -602,7 +602,7 @@ protected:
|
||||||
vector_fp a_vec_Curr_;
|
vector_fp a_vec_Curr_;
|
||||||
vector_fp b_vec_Curr_;
|
vector_fp b_vec_Curr_;
|
||||||
|
|
||||||
Array2D a_coeff_vec;
|
Array2D a_coeff_vec;
|
||||||
|
|
||||||
vector_fp m_pc_Species;
|
vector_fp m_pc_Species;
|
||||||
vector_fp m_tc_Species;
|
vector_fp m_tc_Species;
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public:
|
||||||
virtual void setPressure(doublereal pres) {
|
virtual void setPressure(doublereal pres) {
|
||||||
m_press = pres;
|
m_press = pres;
|
||||||
}
|
}
|
||||||
virtual doublereal pressure() const {
|
virtual doublereal pressure() const {
|
||||||
return m_press;
|
return m_press;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the
|
* This method is called with a pointer to an array containing the
|
||||||
* functions of temperature needed by this parameterization, and three
|
* functions of temperature needed by this parameterization, and three
|
||||||
* pointers to arrays where the computed property values should be
|
* pointers to arrays where the computed property values should be
|
||||||
* written. This method updates only one value in each array.
|
* written. This method updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
@ -123,13 +123,13 @@ public:
|
||||||
virtual void updateProperties(const doublereal* tt,
|
virtual void updateProperties(const doublereal* tt,
|
||||||
doublereal* cp_R, doublereal* h_RT,
|
doublereal* cp_R, doublereal* h_RT,
|
||||||
doublereal* s_R) const {
|
doublereal* s_R) const {
|
||||||
doublereal A = m_coeff[0];
|
doublereal A = m_coeff[0];
|
||||||
doublereal Bt = m_coeff[1]*tt[0];
|
doublereal Bt = m_coeff[1]*tt[0];
|
||||||
doublereal Ct2 = m_coeff[2]*tt[1];
|
doublereal Ct2 = m_coeff[2]*tt[1];
|
||||||
doublereal Dt3 = m_coeff[3]*tt[2];
|
doublereal Dt3 = m_coeff[3]*tt[2];
|
||||||
doublereal Etm2 = m_coeff[4]*tt[3];
|
doublereal Etm2 = m_coeff[4]*tt[3];
|
||||||
doublereal Ftm1 = m_coeff[5]*tt[5];
|
doublereal Ftm1 = m_coeff[5]*tt[5];
|
||||||
doublereal G = m_coeff[6];
|
doublereal G = m_coeff[6];
|
||||||
|
|
||||||
*cp_R = A + Bt + Ct2 + Dt3 + Etm2;
|
*cp_R = A + Bt + Ct2 + Dt3 + Etm2;
|
||||||
*h_RT = A + 0.5*Bt + 1.0/3.0*Ct2 + 0.25*Dt3 - Etm2 + Ftm1;
|
*h_RT = A + 0.5*Bt + 1.0/3.0*Ct2 + 0.25*Dt3 - Etm2 + Ftm1;
|
||||||
|
|
@ -316,7 +316,7 @@ public:
|
||||||
virtual void modifyParameters(doublereal* coeffs) {
|
virtual void modifyParameters(doublereal* coeffs) {
|
||||||
std::copy(coeffs, coeffs + 15, m_coeff.begin());
|
std::copy(coeffs, coeffs + 15, m_coeff.begin());
|
||||||
m_midT = coeffs[0];
|
m_midT = coeffs[0];
|
||||||
msp_low = ShomatePoly(m_lowT, m_midT, m_Pref, coeffs+1);
|
msp_low = ShomatePoly(m_lowT, m_midT, m_Pref, coeffs+1);
|
||||||
msp_high = ShomatePoly(m_midT, m_highT, m_Pref, coeffs+8);
|
msp_high = ShomatePoly(m_midT, m_highT, m_Pref, coeffs+8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,7 +339,7 @@ public:
|
||||||
double h = msp_low.reportHf298(0);
|
double h = msp_low.reportHf298(0);
|
||||||
double hnew = h + delH;
|
double hnew = h + delH;
|
||||||
msp_low.modifyOneHf298(k, hnew);
|
msp_low.modifyOneHf298(k, hnew);
|
||||||
h = msp_high.reportHf298(0);
|
h = msp_high.reportHf298(0);
|
||||||
hnew = h + delH;
|
hnew = h + delH;
|
||||||
msp_high.modifyOneHf298(k, hnew);
|
msp_high.modifyOneHf298(k, hnew);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param right Object to be copied
|
* @param right Object to be copied
|
||||||
*/
|
*/
|
||||||
SingleSpeciesTP(const SingleSpeciesTP& right);
|
SingleSpeciesTP(const SingleSpeciesTP& right);
|
||||||
|
|
||||||
//! Assignment operator
|
//! Assignment operator
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -189,10 +189,10 @@ public:
|
||||||
//@}
|
//@}
|
||||||
/// @name Partial Molar Properties of the Solution
|
/// @name Partial Molar Properties of the Solution
|
||||||
///
|
///
|
||||||
/// These functions are resolved at this level, by reference
|
/// These functions are resolved at this level, by reference
|
||||||
/// to the partial molar functions and standard state
|
/// to the partial molar functions and standard state
|
||||||
/// functions for species 0. Derived classes don't need
|
/// functions for species 0. Derived classes don't need
|
||||||
/// to supply entries for these functions.
|
/// to supply entries for these functions.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
//! Get the array of non-dimensional species chemical potentials
|
//! Get the array of non-dimensional species chemical potentials
|
||||||
|
|
@ -224,7 +224,7 @@ public:
|
||||||
* This method adds a term \f$ Fz_k \phi_k \f$ to
|
* This method adds a term \f$ Fz_k \phi_k \f$ to
|
||||||
* each chemical potential.
|
* each chemical potential.
|
||||||
*
|
*
|
||||||
* This is resolved here. A single species phase
|
* This is resolved here. A single species phase
|
||||||
* is not allowed to have anything other than a zero charge.
|
* is not allowed to have anything other than a zero charge.
|
||||||
*
|
*
|
||||||
* @param mu On return, Contains the electrochemical potential of the single species
|
* @param mu On return, Contains the electrochemical potential of the single species
|
||||||
|
|
@ -356,7 +356,7 @@ public:
|
||||||
* @param g Output vector containing the reference state
|
* @param g Output vector containing the reference state
|
||||||
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the vector of nondimensional
|
* Returns the vector of nondimensional
|
||||||
|
|
@ -481,11 +481,11 @@ protected:
|
||||||
doublereal m_p0;
|
doublereal m_p0;
|
||||||
|
|
||||||
//! Dimensionless enthalpy at the (mtlast, m_p0)
|
//! Dimensionless enthalpy at the (mtlast, m_p0)
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
//! Dimensionless heat capacity at the (mtlast, m_p0)
|
//! Dimensionless heat capacity at the (mtlast, m_p0)
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
//! Dimensionless entropy at the (mtlast, m_p0)
|
//! Dimensionless entropy at the (mtlast, m_p0)
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ class SpeciesThermoInterpType;
|
||||||
* The following classes inherit from SpeciesThermoInterpType.
|
* The following classes inherit from SpeciesThermoInterpType.
|
||||||
*
|
*
|
||||||
* - NasaPoly1 in file NasaPoly1.h
|
* - NasaPoly1 in file NasaPoly1.h
|
||||||
* - This is a one zone model, consisting of a 7
|
* - This is a one zone model, consisting of a 7
|
||||||
* coefficient NASA Polynomial format.
|
* coefficient NASA Polynomial format.
|
||||||
* - NasaPoly2 in file NasaPoly2.h
|
* - NasaPoly2 in file NasaPoly2.h
|
||||||
* - This is a two zone model, with each zone consisting of a 7
|
* - This is a two zone model, with each zone consisting of a 7
|
||||||
|
|
@ -104,7 +104,7 @@ class SpeciesThermoInterpType;
|
||||||
* at a set number of temperatures. Between each temperature
|
* at a set number of temperatures. Between each temperature
|
||||||
* the heat capacity is treated as a constant.
|
* the heat capacity is treated as a constant.
|
||||||
* - Nasa9Poly1 in file Nasa9Poly1.h
|
* - Nasa9Poly1 in file Nasa9Poly1.h
|
||||||
* - This is a one zone model, consisting of the 9
|
* - This is a one zone model, consisting of the 9
|
||||||
* coefficient NASA Polynomial format.
|
* coefficient NASA Polynomial format.
|
||||||
* - Nasa9PolyMultiTempRegion in file Nasa9PolyMultiTempRegion.h
|
* - Nasa9PolyMultiTempRegion in file Nasa9PolyMultiTempRegion.h
|
||||||
* - This is a multiple zone model, consisting of the 9
|
* - This is a multiple zone model, consisting of the 9
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ class VPSSMgr;
|
||||||
* The following classes inherit from SpeciesThermoInterpType.
|
* The following classes inherit from SpeciesThermoInterpType.
|
||||||
*
|
*
|
||||||
* - NasaPoly1 in file NasaPoly1.h
|
* - NasaPoly1 in file NasaPoly1.h
|
||||||
* - This is a one zone model, consisting of a 7
|
* - This is a one zone model, consisting of a 7
|
||||||
* coefficient NASA Polynomial format.
|
* coefficient NASA Polynomial format.
|
||||||
* .
|
* .
|
||||||
* - NasaPoly2 in file NasaPoly2.h
|
* - NasaPoly2 in file NasaPoly2.h
|
||||||
|
|
@ -100,7 +100,7 @@ class VPSSMgr;
|
||||||
* the heat capacity is treated as a constant.
|
* the heat capacity is treated as a constant.
|
||||||
* .
|
* .
|
||||||
* - Nasa9Poly1 in file Nasa9Poly1.h
|
* - Nasa9Poly1 in file Nasa9Poly1.h
|
||||||
* - This is a one zone model, consisting of the 9
|
* - This is a one zone model, consisting of the 9
|
||||||
* coefficient NASA Polynomial format.
|
* coefficient NASA Polynomial format.
|
||||||
* .
|
* .
|
||||||
* - Nasa9PolyMultiTempRegion in file Nasa9PolyMultiTempRegion.h
|
* - Nasa9PolyMultiTempRegion in file Nasa9PolyMultiTempRegion.h
|
||||||
|
|
@ -119,7 +119,7 @@ class VPSSMgr;
|
||||||
* \link SpeciesThermoInterpType::updatePropertiesTemp() updatePropertiesTemp()\endlink.
|
* \link SpeciesThermoInterpType::updatePropertiesTemp() updatePropertiesTemp()\endlink.
|
||||||
* The function calculates the values of Cp, H, and S for the specific
|
* The function calculates the values of Cp, H, and S for the specific
|
||||||
* species pertaining to this class. It takes as its arguments the
|
* species pertaining to this class. It takes as its arguments the
|
||||||
* base pointer for the vector of Cp, H, and S values for all species
|
* base pointer for the vector of Cp, H, and S values for all species
|
||||||
* in the phase. The offset for the species is known within the
|
* in the phase. The offset for the species is known within the
|
||||||
* object.
|
* object.
|
||||||
*
|
*
|
||||||
|
|
@ -150,7 +150,7 @@ class VPSSMgr;
|
||||||
*
|
*
|
||||||
* @code
|
* @code
|
||||||
* SpeciesThermoInterpType(int index, doublereal tlow, doublereal thigh,
|
* SpeciesThermoInterpType(int index, doublereal tlow, doublereal thigh,
|
||||||
* doublereal pref, const doublereal* coeffs)
|
* doublereal pref, const doublereal* coeffs)
|
||||||
* @endcode
|
* @endcode
|
||||||
*
|
*
|
||||||
* @ingroup spthermo
|
* @ingroup spthermo
|
||||||
|
|
@ -205,7 +205,7 @@ public:
|
||||||
//! Update the properties for this species, given a temperature polynomial
|
//! Update the properties for this species, given a temperature polynomial
|
||||||
/*!
|
/*!
|
||||||
* This method is called with a pointer to an array containing the functions
|
* This method is called with a pointer to an array containing the functions
|
||||||
* of temperature needed by this parameterization, and three pointers to
|
* of temperature needed by this parameterization, and three pointers to
|
||||||
* arrays where the computed property values should be written. This method
|
* arrays where the computed property values should be written. This method
|
||||||
* updates only one value in each array.
|
* updates only one value in each array.
|
||||||
*
|
*
|
||||||
|
|
@ -272,7 +272,7 @@ public:
|
||||||
* the standard state of the species from its constituent elements in
|
* the standard state of the species from its constituent elements in
|
||||||
* their standard states at 298 K and 1 bar.
|
* their standard states at 298 K and 1 bar.
|
||||||
*
|
*
|
||||||
* @param h298 If this is nonnull, the current value of the Heat of
|
* @param h298 If this is nonnull, the current value of the Heat of
|
||||||
* Formation at 298K and 1 bar for species m_speciesIndex is
|
* Formation at 298K and 1 bar for species m_speciesIndex is
|
||||||
* returned in h298[m_speciesIndex].
|
* returned in h298[m_speciesIndex].
|
||||||
* @return Returns the current value of the Heat of Formation at 298K
|
* @return Returns the current value of the Heat of Formation at 298K
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ public:
|
||||||
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* Units are Joules/kmol
|
* Units are Joules/kmol
|
||||||
* @param gpure Output vector of standard state Gibbs free energies
|
* @param gpure Output vector of standard state Gibbs free energies
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getPureGibbs(doublereal* gpure) const;
|
virtual void getPureGibbs(doublereal* gpure) const;
|
||||||
|
|
@ -307,7 +307,7 @@ public:
|
||||||
* Gibbs free energy, calculated from enthalpy and the
|
* Gibbs free energy, calculated from enthalpy and the
|
||||||
* entropy, and the multiplying by RT.
|
* entropy, and the multiplying by RT.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the vector of nondimensional
|
* Returns the vector of nondimensional
|
||||||
|
|
@ -344,9 +344,9 @@ protected:
|
||||||
doublereal m_press;
|
doublereal m_press;
|
||||||
doublereal m_p0;
|
doublereal m_p0;
|
||||||
|
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _updateThermo() const;
|
void _updateThermo() const;
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ namespace Cantera
|
||||||
* R_s = k_s C_{gas}
|
* R_s = k_s C_{gas}
|
||||||
* \f]
|
* \f]
|
||||||
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
* where the units for \f$ R_s \f$ are kmol m-2 s-1. \f$ C_{gas} \f$ has units
|
||||||
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
* of kmol m-3. Therefore, the kinetic rate constant, \f$ k_s \f$, has
|
||||||
* units of m s-1. Nowhere does the concentration of the bulk phase
|
* units of m s-1. Nowhere does the concentration of the bulk phase
|
||||||
* appear in the rate constant expression, since it's a stoichiometric
|
* appear in the rate constant expression, since it's a stoichiometric
|
||||||
* phase and the activity is always equal to 1.0.
|
* phase and the activity is always equal to 1.0.
|
||||||
|
|
@ -181,7 +181,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param right Object to be copied
|
* @param right Object to be copied
|
||||||
*/
|
*/
|
||||||
StoichSubstanceSSTP(const StoichSubstanceSSTP& right);
|
StoichSubstanceSSTP(const StoichSubstanceSSTP& right);
|
||||||
|
|
||||||
//! Assignment operator
|
//! Assignment operator
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -244,7 +244,7 @@ public:
|
||||||
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
* \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
|
||||||
* \f]
|
* \f]
|
||||||
*/
|
*/
|
||||||
virtual doublereal thermalExpansionCoeff() const ;
|
virtual doublereal thermalExpansionCoeff() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
@ -349,7 +349,7 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void getCp_R(doublereal* cpr) const;
|
virtual void getCp_R(doublereal* cpr) const;
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* For an incompressible,
|
* For an incompressible,
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@ public:
|
||||||
|
|
||||||
//! Return a vector of activity concentrations for each species
|
//! Return a vector of activity concentrations for each species
|
||||||
/*!
|
/*!
|
||||||
* For this phase the activity concentrations,\f$ C^a_k \f$, are defined to be
|
* For this phase the activity concentrations,\f$ C^a_k \f$, are defined to be
|
||||||
* equal to the actual concentrations, \f$ C^s_k \f$.
|
* equal to the actual concentrations, \f$ C^s_k \f$.
|
||||||
* Activity concentrations are
|
* Activity concentrations are
|
||||||
*
|
*
|
||||||
|
|
@ -428,7 +428,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species standard states
|
//! Get the nondimensional Enthalpy functions for the species standard states
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||||
|
|
@ -436,7 +436,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! species standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! species standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const;
|
virtual void getEntropy_R(doublereal* sr) const;
|
||||||
|
|
@ -489,7 +489,7 @@ public:
|
||||||
//! enthalpies of the reference state at the current temperature
|
//! enthalpies of the reference state at the current temperature
|
||||||
//! of the solution and the reference pressure for the species.
|
//! of the solution and the reference pressure for the species.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT_ref(doublereal* hrt) const;
|
virtual void getEnthalpy_RT_ref(doublereal* hrt) const;
|
||||||
|
|
@ -545,9 +545,9 @@ public:
|
||||||
*/
|
*/
|
||||||
void setCoveragesNoNorm(const doublereal* theta);
|
void setCoveragesNoNorm(const doublereal* theta);
|
||||||
|
|
||||||
//! Set the coverages from a string of colon-separated name:value pairs.
|
//! Set the coverages from a string of colon-separated name:value pairs.
|
||||||
/*!
|
/*!
|
||||||
* @param cov String containing colon-separated name:value pairs
|
* @param cov String containing colon-separated name:value pairs
|
||||||
*/
|
*/
|
||||||
void setCoveragesByName(const std::string& cov);
|
void setCoveragesByName(const std::string& cov);
|
||||||
|
|
||||||
|
|
@ -574,26 +574,26 @@ protected:
|
||||||
doublereal m_press;
|
doublereal m_press;
|
||||||
|
|
||||||
//! Temporary storage for the reference state enthalpies
|
//! Temporary storage for the reference state enthalpies
|
||||||
mutable vector_fp m_h0;
|
mutable vector_fp m_h0;
|
||||||
|
|
||||||
//! Temporary storage for the reference state entropies
|
//! Temporary storage for the reference state entropies
|
||||||
mutable vector_fp m_s0;
|
mutable vector_fp m_s0;
|
||||||
|
|
||||||
//! Temporary storage for the reference state heat capacities
|
//! Temporary storage for the reference state heat capacities
|
||||||
mutable vector_fp m_cp0;
|
mutable vector_fp m_cp0;
|
||||||
|
|
||||||
//! Temporary storage for the reference state Gibbs energies
|
//! Temporary storage for the reference state Gibbs energies
|
||||||
mutable vector_fp m_mu0;
|
mutable vector_fp m_mu0;
|
||||||
|
|
||||||
//! Temporary work array
|
//! Temporary work array
|
||||||
mutable vector_fp m_work;
|
mutable vector_fp m_work;
|
||||||
|
|
||||||
//! vector storing the log of the size of each species.
|
//! vector storing the log of the size of each species.
|
||||||
/*!
|
/*!
|
||||||
* The size of each species is defined as the number of surface
|
* The size of each species is defined as the number of surface
|
||||||
* sites each species occupies.
|
* sites each species occupies.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_logsize;
|
mutable vector_fp m_logsize;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Update the species reference state thermodynamic functions
|
//! Update the species reference state thermodynamic functions
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@ namespace Cantera
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
//! Standard state uses the molar convention
|
//! Standard state uses the molar convention
|
||||||
const int cAC_CONVENTION_MOLAR = 0;
|
const int cAC_CONVENTION_MOLAR = 0;
|
||||||
//! Standard state uses the molality convention
|
//! Standard state uses the molality convention
|
||||||
const int cAC_CONVENTION_MOLALITY = 1;
|
const int cAC_CONVENTION_MOLALITY = 1;
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -213,7 +213,7 @@ public:
|
||||||
* Some phases must have zero net charge in order for their thermodynamics functions to be valid.
|
* Some phases must have zero net charge in order for their thermodynamics functions to be valid.
|
||||||
* If this is so, then the value returned from this function is true.
|
* If this is so, then the value returned from this function is true.
|
||||||
* If this is not the case, then this is false. Now, ideal gases have this parameter set to false,
|
* If this is not the case, then this is false. Now, ideal gases have this parameter set to false,
|
||||||
* while solution with molality-based activity coefficients have this parameter set to true.
|
* while solution with molality-based activity coefficients have this parameter set to true.
|
||||||
*/
|
*/
|
||||||
bool chargeNeutralityNecessary() const {
|
bool chargeNeutralityNecessary() const {
|
||||||
return m_chargeNeutralityNecessary;
|
return m_chargeNeutralityNecessary;
|
||||||
|
|
@ -269,7 +269,7 @@ public:
|
||||||
throw NotImplementedError("ThermoPhase::pressure");
|
throw NotImplementedError("ThermoPhase::pressure");
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns the isothermal compressibility. Units: 1/Pa.
|
//! Returns the isothermal compressibility. Units: 1/Pa.
|
||||||
/*!
|
/*!
|
||||||
* The isothermal compressibility is defined as
|
* The isothermal compressibility is defined as
|
||||||
* \f[
|
* \f[
|
||||||
|
|
@ -334,7 +334,7 @@ public:
|
||||||
* to the chemical potential by \f[ \mu_k = \mu_k^0(T,P) +
|
* to the chemical potential by \f[ \mu_k = \mu_k^0(T,P) +
|
||||||
* \hat R T \log a_k. \f] The quantity \f$\mu_k^0(T,P)\f$ is
|
* \hat R T \log a_k. \f] The quantity \f$\mu_k^0(T,P)\f$ is
|
||||||
* the standard chemical potential at unit activity,
|
* the standard chemical potential at unit activity,
|
||||||
* which depends on temperature and pressure,
|
* which depends on temperature and pressure,
|
||||||
* but not on composition. The activity is dimensionless.
|
* but not on composition. The activity is dimensionless.
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
@ -577,7 +577,7 @@ public:
|
||||||
throw NotImplementedError("ThermoPhase::getdPartialMolarVolumes_dT");
|
throw NotImplementedError("ThermoPhase::getdPartialMolarVolumes_dT");
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Return an array of derivatives of partial molar volumes wrt pressure for the
|
//! Return an array of derivatives of partial molar volumes wrt pressure for the
|
||||||
//! species in the mixture. Units: m^3/kmol.
|
//! species in the mixture. Units: m^3/kmol.
|
||||||
/*!
|
/*!
|
||||||
* The derivative is at constant temperature
|
* The derivative is at constant temperature
|
||||||
|
|
@ -610,7 +610,7 @@ public:
|
||||||
//! Get the nondimensional Enthalpy functions for the species
|
//! Get the nondimensional Enthalpy functions for the species
|
||||||
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
//! at their standard states at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEnthalpy_RT(doublereal* hrt) const {
|
virtual void getEnthalpy_RT(doublereal* hrt) const {
|
||||||
|
|
@ -620,7 +620,7 @@ public:
|
||||||
//! Get the array of nondimensional Entropy functions for the
|
//! Get the array of nondimensional Entropy functions for the
|
||||||
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
//! standard state species at the current <I>T</I> and <I>P</I> of the solution.
|
||||||
/*!
|
/*!
|
||||||
* @param sr Output vector of nondimensional standard state entropies.
|
* @param sr Output vector of nondimensional standard state entropies.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R(doublereal* sr) const {
|
virtual void getEntropy_R(doublereal* sr) const {
|
||||||
|
|
@ -648,7 +648,7 @@ public:
|
||||||
throw NotImplementedError("ThermoPhase::getPureGibbs");
|
throw NotImplementedError("ThermoPhase::getPureGibbs");
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns the vector of nondimensional Internal Energies of the standard
|
//! Returns the vector of nondimensional Internal Energies of the standard
|
||||||
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
//! state species at the current <I>T</I> and <I>P</I> of the solution
|
||||||
/*!
|
/*!
|
||||||
* @param urt output vector of nondimensional standard state internal energies
|
* @param urt output vector of nondimensional standard state internal energies
|
||||||
|
|
@ -743,7 +743,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* units = J/kmol
|
* units = J/kmol
|
||||||
*
|
*
|
||||||
* @param g Output vector containing the reference state
|
* @param g Output vector containing the reference state
|
||||||
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
* Gibbs Free energies. Length: m_kk. Units: J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const {
|
virtual void getGibbs_ref(doublereal* g) const {
|
||||||
|
|
@ -1063,7 +1063,7 @@ public:
|
||||||
* @param rho Density (kg/m^3)
|
* @param rho Density (kg/m^3)
|
||||||
* @param p Pressure (Pa)
|
* @param p Pressure (Pa)
|
||||||
*/
|
*/
|
||||||
virtual void setState_RP(doublereal rho, doublereal p){
|
virtual void setState_RP(doublereal rho, doublereal p) {
|
||||||
throw NotImplementedError("ThermoPhase::setState_RP");
|
throw NotImplementedError("ThermoPhase::setState_RP");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1411,7 +1411,7 @@ public:
|
||||||
virtual void initThermoFile(const std::string& inputFile,
|
virtual void initThermoFile(const std::string& inputFile,
|
||||||
const std::string& id);
|
const std::string& id);
|
||||||
|
|
||||||
//!Import and initialize a ThermoPhase object using an XML tree.
|
//!Import and initialize a ThermoPhase object using an XML tree.
|
||||||
/*!
|
/*!
|
||||||
* @internal
|
* @internal
|
||||||
*
|
*
|
||||||
|
|
@ -1462,7 +1462,7 @@ public:
|
||||||
|
|
||||||
//! Add in species from Slave phases
|
//! Add in species from Slave phases
|
||||||
/*!
|
/*!
|
||||||
* This hook is used for cSS_CONVENTION_SLAVE phases
|
* This hook is used for cSS_CONVENTION_SLAVE phases
|
||||||
*
|
*
|
||||||
* @param phaseNode XML Element for the phase
|
* @param phaseNode XML Element for the phase
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -330,7 +330,7 @@ public:
|
||||||
//! Get the nondimensional Heat Capacities at constant pressure for the
|
//! Get the nondimensional Heat Capacities at constant pressure for the
|
||||||
//! standard state of the species at the current T and P.
|
//! standard state of the species at the current T and P.
|
||||||
/*!
|
/*!
|
||||||
* This is redefined here to call the internal function, _updateStandardStateThermo(),
|
* This is redefined here to call the internal function, _updateStandardStateThermo(),
|
||||||
* which calculates all standard state properties at the same time.
|
* which calculates all standard state properties at the same time.
|
||||||
*
|
*
|
||||||
* @param cpr Output vector containing the the nondimensional Heat
|
* @param cpr Output vector containing the the nondimensional Heat
|
||||||
|
|
@ -396,7 +396,7 @@ public:
|
||||||
* of the reference state of the species
|
* of the reference state of the species
|
||||||
* length = m_kk, units = dimensionless.
|
* length = m_kk, units = dimensionless.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_RT_ref(doublereal* grt) const ;
|
virtual void getGibbs_RT_ref(doublereal* grt) const;
|
||||||
|
|
||||||
|
|
||||||
//! Return a reference to the vector of Gibbs free energies of the species
|
//! Return a reference to the vector of Gibbs free energies of the species
|
||||||
|
|
@ -413,7 +413,7 @@ public:
|
||||||
* of the reference state of the species
|
* of the reference state of the species
|
||||||
* length = m_kk, units = J/kmol.
|
* length = m_kk, units = J/kmol.
|
||||||
*/
|
*/
|
||||||
virtual void getGibbs_ref(doublereal* g) const ;
|
virtual void getGibbs_ref(doublereal* g) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the vector of nondimensional entropies of the reference state
|
* Returns the vector of nondimensional entropies of the reference state
|
||||||
|
|
@ -424,7 +424,7 @@ public:
|
||||||
* of the species in their reference states
|
* of the species in their reference states
|
||||||
* length: m_kk, units: dimensionless.
|
* length: m_kk, units: dimensionless.
|
||||||
*/
|
*/
|
||||||
virtual void getEntropy_R_ref(doublereal* er) const ;
|
virtual void getEntropy_R_ref(doublereal* er) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Returns the vector of nondimensional constant pressure heat capacities
|
* Returns the vector of nondimensional constant pressure heat capacities
|
||||||
|
|
@ -435,7 +435,7 @@ public:
|
||||||
* of the species in their reference states
|
* of the species in their reference states
|
||||||
* length: m_kk, units: dimensionless.
|
* length: m_kk, units: dimensionless.
|
||||||
*/
|
*/
|
||||||
virtual void getCp_R_ref(doublereal* cpr) const ;
|
virtual void getCp_R_ref(doublereal* cpr) const;
|
||||||
|
|
||||||
//! Get the molar volumes of the species reference states at the current
|
//! Get the molar volumes of the species reference states at the current
|
||||||
//! *T* and *P_ref* of the solution.
|
//! *T* and *P_ref* of the solution.
|
||||||
|
|
@ -445,7 +445,7 @@ public:
|
||||||
* @param vol Output vector containing the standard state volumes.
|
* @param vol Output vector containing the standard state volumes.
|
||||||
* Length: m_kk.
|
* Length: m_kk.
|
||||||
*/
|
*/
|
||||||
virtual void getStandardVolumes_ref(doublereal* vol) const ;
|
virtual void getStandardVolumes_ref(doublereal* vol) const;
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
/*! @name Setting the Internal State of the System
|
/*! @name Setting the Internal State of the System
|
||||||
|
|
@ -535,7 +535,7 @@ protected:
|
||||||
* functions for all of the species must be recalculated.
|
* functions for all of the species must be recalculated.
|
||||||
*
|
*
|
||||||
* This function is responsible for updating the following internal members,
|
* This function is responsible for updating the following internal members,
|
||||||
* when m_useTmpStandardStateStorage is true.
|
* when m_useTmpStandardStateStorage is true.
|
||||||
*
|
*
|
||||||
* - m_hss_RT;
|
* - m_hss_RT;
|
||||||
* - m_cpss_R;
|
* - m_cpss_R;
|
||||||
|
|
@ -576,7 +576,7 @@ public:
|
||||||
/*!
|
/*!
|
||||||
* @param index Species index
|
* @param index Species index
|
||||||
*/
|
*/
|
||||||
virtual PDSS_enumType reportPDSSType(int index = -1) const ;
|
virtual PDSS_enumType reportPDSSType(int index = -1) const;
|
||||||
|
|
||||||
//! This utility function reports the type of manager
|
//! This utility function reports the type of manager
|
||||||
//! for the calculation of ss properties
|
//! for the calculation of ss properties
|
||||||
|
|
@ -584,7 +584,7 @@ public:
|
||||||
* @return Returns an enum type called VPSSMgr_enumType, which is a list
|
* @return Returns an enum type called VPSSMgr_enumType, which is a list
|
||||||
* of the known VPSSMgr objects
|
* of the known VPSSMgr objects
|
||||||
*/
|
*/
|
||||||
virtual VPSSMgr_enumType reportVPSSMgrType() const ;
|
virtual VPSSMgr_enumType reportVPSSMgrType() const;
|
||||||
|
|
||||||
//! Minimum temperature.
|
//! Minimum temperature.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -595,7 +595,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param k Species index
|
* @param k Species index
|
||||||
*/
|
*/
|
||||||
virtual doublereal minTemp(size_t k=npos) const ;
|
virtual doublereal minTemp(size_t k=npos) const;
|
||||||
|
|
||||||
//! Maximum temperature.
|
//! Maximum temperature.
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -619,7 +619,7 @@ public:
|
||||||
* @param k Species index. Default is -1, which returns
|
* @param k Species index. Default is -1, which returns
|
||||||
* the generic answer.
|
* the generic answer.
|
||||||
*/
|
*/
|
||||||
virtual doublereal refPressure(size_t k=npos) const ;
|
virtual doublereal refPressure(size_t k=npos) const;
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
/*! @name Initialization Methods - For Internal use
|
/*! @name Initialization Methods - For Internal use
|
||||||
|
|
@ -674,7 +674,7 @@ public:
|
||||||
* @param phaseNode_ptr Pointer to the XML Node corresponding
|
* @param phaseNode_ptr Pointer to the XML Node corresponding
|
||||||
* to the phase which owns the species
|
* to the phase which owns the species
|
||||||
*/
|
*/
|
||||||
void installSTSpecies(size_t k, const XML_Node& speciesNode,
|
void installSTSpecies(size_t k, const XML_Node& speciesNode,
|
||||||
const XML_Node* phaseNode_ptr);
|
const XML_Node* phaseNode_ptr);
|
||||||
|
|
||||||
//! Install specific content for species k in the standard-state
|
//! Install specific content for species k in the standard-state
|
||||||
|
|
@ -719,11 +719,11 @@ protected:
|
||||||
|
|
||||||
//! The last temperature at which the standard state thermodynamic
|
//! The last temperature at which the standard state thermodynamic
|
||||||
//! properties were calculated at.
|
//! properties were calculated at.
|
||||||
mutable doublereal m_tlast;
|
mutable doublereal m_tlast;
|
||||||
|
|
||||||
//! The last pressure at which the Standard State thermodynamic
|
//! The last pressure at which the Standard State thermodynamic
|
||||||
//! properties were calculated at.
|
//! properties were calculated at.
|
||||||
mutable doublereal m_plast;
|
mutable doublereal m_plast;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Reference pressure (Pa) must be the same for all species
|
* Reference pressure (Pa) must be the same for all species
|
||||||
|
|
@ -747,28 +747,28 @@ protected:
|
||||||
* Vector containing the species reference enthalpies at T = m_tlast
|
* Vector containing the species reference enthalpies at T = m_tlast
|
||||||
* and P = p_ref.
|
* and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_h0_RT;
|
mutable vector_fp m_h0_RT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference constant pressure
|
* Vector containing the species reference constant pressure
|
||||||
* heat capacities at T = m_tlast and P = p_ref.
|
* heat capacities at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_cp0_R;
|
mutable vector_fp m_cp0_R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference Gibbs functions
|
* Vector containing the species reference Gibbs functions
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_g0_RT;
|
mutable vector_fp m_g0_RT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference entropies
|
* Vector containing the species reference entropies
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_s0_R;
|
mutable vector_fp m_s0_R;
|
||||||
|
|
||||||
//! Vector containing the species reference molar volumes
|
//! Vector containing the species reference molar volumes
|
||||||
mutable vector_fp m_V0;
|
mutable vector_fp m_V0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* boolean indicating whether temporary standard state storage is used
|
* boolean indicating whether temporary standard state storage is used
|
||||||
|
|
@ -780,101 +780,101 @@ protected:
|
||||||
* Vector containing the species Standard State enthalpies at T = m_tlast
|
* Vector containing the species Standard State enthalpies at T = m_tlast
|
||||||
* and P = m_plast.
|
* and P = m_plast.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_hss_RT;
|
mutable vector_fp m_hss_RT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species Standard State constant pressure
|
* Vector containing the species Standard State constant pressure
|
||||||
* heat capacities at T = m_tlast and P = m_plast.
|
* heat capacities at T = m_tlast and P = m_plast.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_cpss_R;
|
mutable vector_fp m_cpss_R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species Standard State Gibbs functions
|
* Vector containing the species Standard State Gibbs functions
|
||||||
* at T = m_tlast and P = m_plast.
|
* at T = m_tlast and P = m_plast.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_gss_RT;
|
mutable vector_fp m_gss_RT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species Standard State entropies
|
* Vector containing the species Standard State entropies
|
||||||
* at T = m_tlast and P = m_plast.
|
* at T = m_tlast and P = m_plast.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_sss_R;
|
mutable vector_fp m_sss_R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vector containing the species standard state volumes
|
* Vector containing the species standard state volumes
|
||||||
* at T = m_tlast and P = m_plast
|
* at T = m_tlast and P = m_plast
|
||||||
*/
|
*/
|
||||||
mutable vector_fp m_Vss;
|
mutable vector_fp m_Vss;
|
||||||
|
|
||||||
//! species reference enthalpies - used by individual PDSS objects
|
//! species reference enthalpies - used by individual PDSS objects
|
||||||
/*!
|
/*!
|
||||||
* Vector containing the species reference enthalpies at T = m_tlast
|
* Vector containing the species reference enthalpies at T = m_tlast
|
||||||
* and P = p_ref.
|
* and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_h0_RT;
|
mutable vector_fp mPDSS_h0_RT;
|
||||||
|
|
||||||
//! species reference heat capacities - used by individual PDSS objects
|
//! species reference heat capacities - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference constant pressure
|
* Vector containing the species reference constant pressure
|
||||||
* heat capacities at T = m_tlast and P = p_ref.
|
* heat capacities at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_cp0_R;
|
mutable vector_fp mPDSS_cp0_R;
|
||||||
|
|
||||||
//! species reference Gibbs free energies - used by individual PDSS objects
|
//! species reference Gibbs free energies - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference Gibbs functions
|
* Vector containing the species reference Gibbs functions
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_g0_RT;
|
mutable vector_fp mPDSS_g0_RT;
|
||||||
|
|
||||||
//! species reference entropies - used by individual PDSS objects
|
//! species reference entropies - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species reference entropies
|
* Vector containing the species reference entropies
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_s0_R;
|
mutable vector_fp mPDSS_s0_R;
|
||||||
|
|
||||||
//! species reference state molar Volumes - used by individual PDSS objects
|
//! species reference state molar Volumes - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the rf molar volumes
|
* Vector containing the rf molar volumes
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_V0;
|
mutable vector_fp mPDSS_V0;
|
||||||
|
|
||||||
//! species standard state enthalpies - used by individual PDSS objects
|
//! species standard state enthalpies - used by individual PDSS objects
|
||||||
/*!
|
/*!
|
||||||
* Vector containing the species standard state enthalpies at T = m_tlast
|
* Vector containing the species standard state enthalpies at T = m_tlast
|
||||||
* and P = p_ref.
|
* and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_hss_RT;
|
mutable vector_fp mPDSS_hss_RT;
|
||||||
|
|
||||||
//! species standard state heat capacities - used by individual PDSS objects
|
//! species standard state heat capacities - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species standard state constant pressure
|
* Vector containing the species standard state constant pressure
|
||||||
* heat capacities at T = m_tlast and P = p_ref.
|
* heat capacities at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_cpss_R;
|
mutable vector_fp mPDSS_cpss_R;
|
||||||
|
|
||||||
//! species standard state Gibbs free energies - used by individual PDSS objects
|
//! species standard state Gibbs free energies - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species standard state Gibbs functions
|
* Vector containing the species standard state Gibbs functions
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_gss_RT;
|
mutable vector_fp mPDSS_gss_RT;
|
||||||
|
|
||||||
//! species standard state entropies - used by individual PDSS objects
|
//! species standard state entropies - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the species standard state entropies
|
* Vector containing the species standard state entropies
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_sss_R;
|
mutable vector_fp mPDSS_sss_R;
|
||||||
|
|
||||||
//! species standard state molar Volumes - used by individual PDSS objects
|
//! species standard state molar Volumes - used by individual PDSS objects
|
||||||
/**
|
/**
|
||||||
* Vector containing the ss molar volumes
|
* Vector containing the ss molar volumes
|
||||||
* at T = m_tlast and P = p_ref.
|
* at T = m_tlast and P = p_ref.
|
||||||
*/
|
*/
|
||||||
mutable vector_fp mPDSS_Vss;
|
mutable vector_fp mPDSS_Vss;
|
||||||
|
|
||||||
friend class PDSS;
|
friend class PDSS;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class VPSSMgr_ConstVol : public VPSSMgr
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
/*!
|
/*!
|
||||||
* @param vp_ptr Pointer to the owning VPStandardStateTP object
|
* @param vp_ptr Pointer to the owning VPStandardStateTP object
|
||||||
* for the phase. It's a requirement that this be
|
* for the phase. It's a requirement that this be
|
||||||
* already malloced.
|
* already malloced.
|
||||||
* @param spth Pointer to the SpeciesThermo object for the
|
* @param spth Pointer to the SpeciesThermo object for the
|
||||||
|
|
@ -68,13 +68,13 @@ protected:
|
||||||
* state values of Cp, H, S, and V at the last temperature and reference
|
* state values of Cp, H, S, and V at the last temperature and reference
|
||||||
* pressure called. These functions are not recalculated if a new call is
|
* pressure called. These functions are not recalculated if a new call is
|
||||||
* made using the previous temperature. All calculations are done within
|
* made using the previous temperature. All calculations are done within
|
||||||
* the routine _updateRefStateThermo(). _updateRefStateThermo() is
|
* the routine _updateRefStateThermo(). _updateRefStateThermo() is
|
||||||
* defined in the parent object.
|
* defined in the parent object.
|
||||||
*/
|
*/
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
virtual void getGibbs_RT_ref(doublereal* grt) const ;
|
virtual void getGibbs_RT_ref(doublereal* grt) const;
|
||||||
virtual void getStandardVolumes_ref(doublereal* vol) const ;
|
virtual void getStandardVolumes_ref(doublereal* vol) const;
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
/*! @name Initialization Methods - For Internal use
|
/*! @name Initialization Methods - For Internal use
|
||||||
|
|
@ -111,8 +111,8 @@ public:
|
||||||
const XML_Node* const phaseNode_ptr);
|
const XML_Node* const phaseNode_ptr);
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
virtual PDSS_enumType reportPDSSType(int index = -1) const ;
|
virtual PDSS_enumType reportPDSSType(int index = -1) const;
|
||||||
virtual VPSSMgr_enumType reportVPSSMgrType() const ;
|
virtual VPSSMgr_enumType reportVPSSMgrType() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue