diff --git a/Cantera/src/ConstDensityThermo.h b/Cantera/src/ConstDensityThermo.h
index cad48c8c6..f1bcd4673 100755
--- a/Cantera/src/ConstDensityThermo.h
+++ b/Cantera/src/ConstDensityThermo.h
@@ -25,137 +25,429 @@
namespace Cantera {
- /**
- * Overloads the virtual methods of class ThermoPhase to implement the
- * incompressible equation of state.
+ //! Overloads the virtual methods of class ThermoPhase to implement the
+ //! incompressible equation of state.
+ /**
+ *
+ *
+ * Specification of Species Standard State Properties
+ *
+ *
+ * Specification of Solution Thermodynamic Properties
+ *
+ * The density is assumed to be constant, no matter what the concentration of the solution.
+ *
+ *
+ * Application within %Kinetics Managers
+ *
+ *
+ * XML Example
+ *
+ * An example of an XML Element named phase setting up a SurfPhase object named diamond_100
+ * is given below.
+ *
+ * @ingroup thermoprops
+ */
+ class ConstDensityThermo : public ThermoPhase {
+
+ public:
+
+ //! Constructor.
+ /*!
+ *
*/
- class ConstDensityThermo : public ThermoPhase {
+ ConstDensityThermo() : m_tlast(0.0) {}
- public:
+ //! Destructor
+ virtual ~ConstDensityThermo() {}
- ConstDensityThermo() : m_tlast(0.0) {}
- virtual ~ConstDensityThermo() {}
+ // overloaded methods of class ThermoPhase
- // overloaded methods of class ThermoPhase
+ virtual int eosType() const;
- virtual int eosType() const;
- virtual doublereal enthalpy_mole() const;
- virtual doublereal intEnergy_mole() const;
- virtual doublereal entropy_mole() const;
- virtual doublereal gibbs_mole() const;
- virtual doublereal cp_mole() const;
- virtual doublereal cv_mole() const;
- virtual doublereal pressure() const;
- virtual void setPressure(doublereal p);
- virtual void getActivityConcentrations(doublereal* c) const;
- virtual void getActivityCoefficients(doublereal* ac) const;
- virtual void getChemPotentials(doublereal* mu) const;
- virtual void getStandardChemPotentials(doublereal* mu0) const;
- virtual doublereal standardConcentration(int k=0) const;
- virtual doublereal logStandardConc(int k=0) const;
+ //! Return the Molar Enthalpy. Units: J/kmol.
+ /*!
+ *
+ */
- virtual void getPureGibbs(doublereal* gpure) const {
- const array_fp& gibbsrt = gibbs_RT();
- scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT());
- }
+ /// Molar enthalpy. Units: J/kmol.
+ virtual doublereal enthalpy_mole() const;
- void getEnthalpy_RT(doublereal* hrt) const {
- const array_fp& _h = enthalpy_RT();
- std::copy(_h.begin(), _h.end(), hrt);
- }
-
- void getEntropy_R(doublereal* sr) const {
- const array_fp& _s = entropy_R();
- std::copy(_s.begin(), _s.end(), sr);
- }
-
- virtual void getGibbs_RT(doublereal* grt) const {
- const array_fp& gibbsrt = gibbs_RT();
- std::copy(gibbsrt.begin(), gibbsrt.end(), grt);
- }
-
- void getCp_R(doublereal* cpr) const {
- const array_fp& _cpr = cp_R();
- std::copy(_cpr.begin(), _cpr.end(), cpr);
- }
+ /// Molar internal energy. Units: J/kmol.
+ virtual doublereal intEnergy_mole() const;
- // new methods defined here
+ /// Molar entropy. Units: J/kmol/K.
+ virtual doublereal entropy_mole() const;
- const array_fp& enthalpy_RT() const {
- _updateThermo();
- return m_h0_RT;
- }
+ /// Molar Gibbs function. Units: J/kmol.
+ virtual doublereal gibbs_mole() const;
- const array_fp& gibbs_RT() const {
- _updateThermo();
- return m_g0_RT;
- }
+ /// Molar heat capacity at constant pressure. Units: J/kmol/K.
+ virtual doublereal cp_mole() const;
- const array_fp& expGibbs_RT() const {
- _updateThermo();
- int k;
- for (k = 0; k != m_kk; k++) m_expg0_RT[k] = std::exp(m_g0_RT[k]);
- return m_expg0_RT;
- }
+ /// Molar heat capacity at constant volume. Units: J/kmol/K.
+ virtual doublereal cv_mole() const;
+
+ //! Return the thermodynamic pressure (Pa).
+ /*!
+ * This method must be overloaded in derived classes. Since the
+ * mass density, temperature, and mass fractions are stored,
+ * this method should use these values to implement the
+ * mechanical equation of state \f$ P(T, \rho, Y_1, \dots,
+ * Y_K) \f$.
+ */
+ virtual doublereal pressure() const;
- const array_fp& entropy_R() const {
- _updateThermo();
- return m_s0_R;
- }
+ //! Set the internally storred pressure (Pa) at constant
+ //! temperature and composition
+ /*!
+ * This method must be reimplemented in derived classes, where it
+ * may involve the solution of a nonlinear equation. Within %Cantera,
+ * the independent variable is the density. Therefore, this function
+ * solves for the density that will yield the desired input pressure.
+ * The temperature and composition iare held constant during this process.
+ *
+ * This base class function will print an error, if not overwritten.
+ *
+ * @param p input Pressure (Pa)
+ */
+ virtual void setPressure(doublereal p);
- const array_fp& cp_R() const {
- _updateThermo();
- return m_cp0_R;
- }
+ //! This method returns an array of generalized concentrations
+ /*!
+ * \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
+ * defined below and \f$ a_k \f$ are activities used in the
+ * thermodynamic functions. These activity (or generalized)
+ * concentrations are used
+ * by kinetics manager classes to compute the forward and
+ * reverse rates of elementary reactions. Note that they may
+ * or may not have units of concentration --- they might be
+ * partial pressures, mole fractions, or surface coverages,
+ * for example.
+ *
+ * @param c Output array of generalized concentrations. The
+ * units depend upon the implementation of the
+ * reaction rate expressions within the phase.
+ */
+ virtual void getActivityConcentrations(doublereal* c) const;
- virtual void setPotentialEnergy(int k, doublereal pe) {
- m_pe[k] = pe;
- }
+ //! Get the array of non-dimensional molar-based activity coefficients at
+ //! the current solution temperature, pressure, and solution concentration.
+ /*!
+ * @param ac Output vector of activity coefficients. Length: m_kk.
+ */
+ virtual void getActivityCoefficients(doublereal* ac) const;
- virtual doublereal potentialEnergy(int k) const {
- return m_pe[k];
- }
+ //! Get the species chemical potentials. Units: J/kmol.
+ /*!
+ * This function returns a vector of chemical potentials of the
+ * species in solution at the current temperature, pressure
+ * and mole fraction of the solution.
+ *
+ * @param mu Output vector of species chemical
+ * potentials. Length: m_kk. Units: J/kmol
+ */
+ virtual void getChemPotentials(doublereal* mu) const;
- virtual void initThermo();
+ //! Get the array of chemical potentials at unit activity for the species
+ //! at their standard states at the current T and P of the solution.
+ /*!
+ * These are the standard state chemical potentials \f$ \mu^0_k(T,P)
+ * \f$. The values are evaluated at the current
+ * temperature and pressure of the solution
+ *
+ * @param mu0 Output vector of chemical potentials.
+ * Length: m_kk.
+ */
+ virtual void getStandardChemPotentials(doublereal* mu0) const;
+
+ //! Return the standard concentration for the kth species
+ /*!
+ * The standard concentration \f$ C^0_k \f$ used to normalize
+ * the activity (i.e., generalized) concentration. In many cases, this quantity
+ * will be the same for all species in a phase - for example,
+ * for an ideal gas \f$ C^0_k = P/\hat R T \f$. For this
+ * reason, this method returns a single value, instead of an
+ * array. However, for phases in which the standard
+ * concentration is species-specific (e.g. surface species of
+ * different sizes), this method may be called with an
+ * optional parameter indicating the species.
+ *
+ * @param k Optional parameter indicating the species. The default
+ * is to assume this refers to species 0.
+ * @return
+ * Returns the standard Concentration in units of m3 kmol-1.
+ */
+ virtual doublereal standardConcentration(int k=0) const;
+
+ //! Natural logarithm of the standard concentration of the kth species.
+ /*!
+ * @param k index of the species (defaults to zero)
+ */
+ virtual doublereal logStandardConc(int k=0) const;
+
+ //! Get the Gibbs functions for the standard
+ //! state of the species at the current T and P of the solution
+ /*!
+ * Units are Joules/kmol
+ * @param gpure Output vector of standard state gibbs free energies
+ * Length: m_kk.
+ */
+ virtual void getPureGibbs(doublereal* gpure) const {
+ const array_fp& gibbsrt = gibbs_RT();
+ scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT());
+ }
+
+ //! Get the nondimensional Enthalpy functions for the species
+ //! at their standard states at the current T and P of the solution.
+ /*!
+ * @param hrt Output vector of nondimensional standard state enthalpies.
+ * Length: m_kk.
+ */
+ void getEnthalpy_RT(doublereal* hrt) const {
+ const array_fp& _h = enthalpy_RT();
+ std::copy(_h.begin(), _h.end(), hrt);
+ }
+
+ //! Get the array of nondimensional Entropy functions for the
+ //! standard state species at the current T and P of the solution.
+ /*!
+ * @param sr Output vector of nondimensional standard state entropies.
+ * Length: m_kk.
+ */
+ void getEntropy_R(doublereal* sr) const {
+ const array_fp& _s = entropy_R();
+ std::copy(_s.begin(), _s.end(), sr);
+ }
+
+ //! Get the nondimensional Gibbs functions for the species
+ //! in their standard states at the current T and P of the solution.
+ /*!
+ * @param grt Output vector of nondimensional standard state gibbs free energies
+ * Length: m_kk.
+ */
+ virtual void getGibbs_RT(doublereal* grt) const {
+ const array_fp& gibbsrt = gibbs_RT();
+ std::copy(gibbsrt.begin(), gibbsrt.end(), grt);
+ }
+
+ //! Get the nondimensional Heat Capacities at constant
+ //! pressure for the species standard states
+ //! at the current T and P of the solution
+ /*!
+ * @param cpr Output vector of nondimensional standard state heat capacities
+ * Length: m_kk.
+ */
+ void getCp_R(doublereal* cpr) const {
+ const array_fp& _cpr = cp_R();
+ std::copy(_cpr.begin(), _cpr.end(), cpr);
+ }
- virtual void setToEquilState(const doublereal* lambda_RT);
+ // new methods defined here
- // set the density
- virtual void setParameters(int n, doublereal* c) {
- setDensity(c[0]);
- }
+ //! Returns a reference to the vector of nondimensional
+ //! enthalpies of the reference state at the current temperature
+ //! of the solution and the reference pressure for the species.
+ const array_fp& enthalpy_RT() const {
+ _updateThermo();
+ return m_h0_RT;
+ }
- virtual void getParameters(int &n, doublereal * const c) {
- double d = density();
- c[0] = d;
- n = 1;
- }
+ //! Returns a reference to the vector of nondimensional
+ //! Gibbs Free Energies of the reference state at the current temperature
+ //! of the solution and the reference pressure for the species.
+ const array_fp& gibbs_RT() const {
+ _updateThermo();
+ return m_g0_RT;
+ }
- virtual void setParametersFromXML(const XML_Node& eosdata);
+ //! Returns a reference to the vector of exponentials of the nondimensional
+ //! Gibbs Free Energies of the reference state at the current temperature
+ //! of the solution and the reference pressure for the species.
+ const array_fp& expGibbs_RT() const {
+ _updateThermo();
+ int k;
+ for (k = 0; k != m_kk; k++) m_expg0_RT[k] = std::exp(m_g0_RT[k]);
+ return m_expg0_RT;
+ }
- protected:
+ //! Returns a reference to the vector of nondimensional
+ //! entropies of the reference state at the current temperature
+ //! of the solution and the reference pressure for each species.
+ const array_fp& entropy_R() const {
+ _updateThermo();
+ return m_s0_R;
+ }
- int m_mm;
- doublereal m_tmin, m_tmax, m_p0;
+ //! Returns a reference to the vector of nondimensional
+ //! constant pressure heat capacities of the reference state
+ //! at the current temperature of the solution
+ //! and reference pressure for each species.
+ const array_fp& cp_R() const {
+ _updateThermo();
+ return m_cp0_R;
+ }
- mutable doublereal m_tlast;
- mutable array_fp m_h0_RT;
- mutable array_fp m_cp0_R;
- mutable array_fp m_g0_RT;
- mutable array_fp m_s0_R;
- mutable array_fp m_expg0_RT;
- mutable array_fp m_pe;
- mutable array_fp m_pp;
+ //! Set the potential energy of species k
+ /*!
+ * @param k species index
+ * @param pe Potential energy (J kmol-1).
+ */
+ virtual void setPotentialEnergy(int k, doublereal pe) {
+ m_pe[k] = pe;
+ }
- doublereal m_press;
+ //! Returns the potential energy of species k
+ /*!
+ * @param k species index
+ */
+ virtual doublereal potentialEnergy(int k) const {
+ return m_pe[k];
+ }
+
+ //! Initialize the ThermoPhase object after all species have been set up
+ /*!
+ * @internal Initialize.
+ *
+ * This method is provided to allow
+ * subclasses to perform any initialization required after all
+ * species have been added. For example, it might be used to
+ * resize internal work arrays that must have an entry for
+ * each species. The base class implementation does nothing,
+ * and subclasses that do not require initialization do not
+ * need to overload this method. When importing a CTML phase
+ * description, this method is called from ThermoPhase::initThermoXML(),
+ * which is called from importPhase(),
+ * just prior to returning from function importPhase().
+ *
+ * @see importCTML.cpp
+ */
+ virtual void initThermo();
+
+ //!This method is used by the ChemEquil equilibrium solver.
+ /*!
+ * It sets the state such that the chemical potentials satisfy
+ * \f[ \frac{\mu_k}{\hat R T} = \sum_m A_{k,m}
+ * \left(\frac{\lambda_m} {\hat R T}\right) \f] where
+ * \f$ \lambda_m \f$ is the element potential of element m. The
+ * temperature is unchanged. Any phase (ideal or not) that
+ * implements this method can be equilibrated by ChemEquil.
+ *
+ * @param lambda_RT Input vector of dimensionless element potentials
+ * The length is equal to nElements().
+ */
+ virtual void setToEquilState(const doublereal* lambda_RT);
+
+
+ //! Set the equation of state parameters
+ /*!
+ * @internal
+ * The number and meaning of these depends on the subclass.
+ *
+ * @param n number of parameters
+ * @param c array of \a n coefficients
+ */
+ virtual void setParameters(int n, doublereal* c) {
+ setDensity(c[0]);
+ }
+
+ //! Get the equation of state parameters in a vector
+ /*!
+ * @internal
+ * The number and meaning of these depends on the subclass.
+ *
+ * @param n number of parameters
+ * @param c array of \a n coefficients
+ */
+ virtual void getParameters(int &n, doublereal * const c) {
+ double d = density();
+ c[0] = d;
+ n = 1;
+ }
+
+ //! Set equation of state parameter values from XML entries.
+ /*!
+ *
+ * This method is called by function importPhase() in
+ * file importCTML.cpp when processing a phase definition in
+ * an input file. It should be overloaded in subclasses to set
+ * any parameters that are specific to that particular phase
+ * model. Note, this method is called before the phase is
+ * initialzed with elements and/or species.
+ *
+ * @param eosdata An XML_Node object corresponding to
+ * the "thermo" entry for this phase in the input file.
+ */
+ virtual void setParametersFromXML(const XML_Node& eosdata);
+
+ protected:
+
+ //! number of elements
+ int m_mm;
- private:
+ //! Minimum temperature for valid species standard state thermo props
+ /*!
+ * This is the minimum temperature at which all species have valid standard
+ * state thermo props defined.
+ */
+ doublereal m_tmin;
- void _updateThermo() const;
- };
+ //! Maximum temperature for valid species standard state thermo props
+ /*!
+ * This is the maximum temperature at which all species have valid standard
+ * state thermo props defined.
+ */
+ doublereal m_tmax;
+
+ //! Reference state pressure
+ /*!
+ * Value of the reference state pressure in Pascals.
+ * All species must have the same reference state pressure.
+ */
+ doublereal m_p0;
+
+ //! last value of the temperature processed by reference state
+ mutable doublereal m_tlast;
+
+ //! Temporary storage for dimensionless reference state enthalpies
+ mutable array_fp m_h0_RT;
+
+ //! Temporary storage for dimensionless reference state heat capacities
+ mutable array_fp m_cp0_R;
+
+ //! Temporary storage for dimensionless reference state gibbs energies
+ mutable array_fp m_g0_RT;
+
+ //! Temporary storage for dimensionless reference state entropies
+ mutable array_fp m_s0_R;
+
+ //! currently unsed
+ /*!
+ * @deprecated
+ */
+ mutable array_fp m_expg0_RT;
+
+ //! Currently unused
+ /*
+ * @deprecated
+ */
+ mutable array_fp m_pe;
+
+ //! Temporary array containing internally calculated partial pressures
+ mutable array_fp m_pp;
+
+ //! Current pressure (Pa)
+ doublereal m_press;
+
+
+ private:
+
+ void _updateThermo() const;
+ };
}
#endif
diff --git a/Cantera/src/ThermoPhase.h b/Cantera/src/ThermoPhase.h
index 12691fdf0..ee4dff675 100755
--- a/Cantera/src/ThermoPhase.h
+++ b/Cantera/src/ThermoPhase.h
@@ -181,13 +181,13 @@ namespace Cantera {
ThermoPhase(const ThermoPhase &);
//! Assignment operator
- /*!
- * This is NOT a virtual function.
- *
- * @param right Reference to %ThermoPhase object to be copied into the
- * current one.
- */
- ThermoPhase& operator=(const ThermoPhase &right);
+ /*!
+ * This is NOT a virtual function.
+ *
+ * @param right Reference to %ThermoPhase object to be copied into the
+ * current one.
+ */
+ ThermoPhase& operator=(const ThermoPhase &right);
/**
* Duplication routine for objects which inherit from
@@ -217,29 +217,29 @@ namespace Cantera {
*/
virtual int eosType() const { return 0; }
- /**
- * Returns the reference pressure in Pa. This function is a wrapper
- * that calls the species thermo refPressure function.
- */
- doublereal refPressure() const {
- return m_spthermo->refPressure();
- }
+ /**
+ * Returns the reference pressure in Pa. This function is a wrapper
+ * that calls the species thermo refPressure function.
+ */
+ doublereal refPressure() const {
+ return m_spthermo->refPressure();
+ }
- //! Minimum temperature for which the thermodynamic data for the species or phase are valid.
- /*!
- * If no argument is supplied, the
- * value returned will be the lowest temperature at which the
- * data for \e all species are valid. Otherwise, the value
- * will be only for species \a k. This function is a wrapper
- * that calls the species thermo minTemp function.
- *
- * @param k index of the species. Default is -1, which will return the max of the min value
- * over all species.
- */
- doublereal minTemp(int k = -1) {
- return m_spthermo->minTemp(k);
- }
+ //! Minimum temperature for which the thermodynamic data for the species or phase are valid.
+ /*!
+ * If no argument is supplied, the
+ * value returned will be the lowest temperature at which the
+ * data for \e all species are valid. Otherwise, the value
+ * will be only for species \a k. This function is a wrapper
+ * that calls the species thermo minTemp function.
+ *
+ * @param k index of the species. Default is -1, which will return the max of the min value
+ * over all species.
+ */
+ doublereal minTemp(int k = -1) {
+ return m_spthermo->minTemp(k);
+ }
//! Maximum temperature for which the thermodynamic data for the species
//! are valid.
@@ -340,31 +340,31 @@ namespace Cantera {
err("isothermalCompressibility"); return -1.0;
}
- //! Return the volumetric thermal expansion coefficient. Units: 1/K.
- /*!
- * The thermal expansion coefficient is defined as
- * \f[
- * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
- * \f]
- */
- virtual doublereal thermalExpansionCoeff() const {
- err("thermalExpansionCoeff()"); return -1.0;
- }
+ //! Return the volumetric thermal expansion coefficient. Units: 1/K.
+ /*!
+ * The thermal expansion coefficient is defined as
+ * \f[
+ * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
+ * \f]
+ */
+ virtual doublereal thermalExpansionCoeff() const {
+ err("thermalExpansionCoeff()"); return -1.0;
+ }
- /// @deprecated
- virtual void updateDensity() {
- deprecatedMethod("ThermoPhase","updateDensity","");
- }
+ /// @deprecated
+ virtual void updateDensity() {
+ deprecatedMethod("ThermoPhase","updateDensity","");
+ }
- /**
- * @}
- * @name Electric Potential
- *
- * The phase may be at some non-zero electrical
- * potential. These methods set or get the value of the
- * electric potential.
- */
- //@{
+ /**
+ * @}
+ * @name Electric Potential
+ *
+ * The phase may be at some non-zero electrical
+ * potential. These methods set or get the value of the
+ * electric potential.
+ */
+ //@{
//! Set the electric potential of this phase (V).
/*!
@@ -868,13 +868,13 @@ namespace Cantera {
}
//@}
- //! Return the Gas Constant multiplied by the current temperature
- /*!
- * The units are Joules kmol-1
- */
- doublereal _RT() const {
- return temperature() * GasConstant;
- }
+ //! Return the Gas Constant multiplied by the current temperature
+ /*!
+ * The units are Joules kmol-1
+ */
+ doublereal _RT() const {
+ return temperature() * GasConstant;
+ }
/**
* @name Setting the State
@@ -1076,19 +1076,19 @@ namespace Cantera {
void setElementPotentials(const vector_fp& lambda);
- //! Returns the element potentials storred in the ThermoPhase object
- /*!
- * Returns the storred element potentials.
- * The element potentials are retrieved from their storred
- * dimensionless forms by multiplying by RT.
- * @param lambda Output vector containing the element potentials.
- * Length = nElements. Units are Joules/kmol.
- * @return bool indicating whether thare are any valid storred element
- * potentials. The calling routine should check this
- * bool. In the case that there aren't any, lambda is not
- * touched.
- */
- bool getElementPotentials(doublereal* lambda) const;
+ //! Returns the element potentials storred in the ThermoPhase object
+ /*!
+ * Returns the storred element potentials.
+ * The element potentials are retrieved from their storred
+ * dimensionless forms by multiplying by RT.
+ * @param lambda Output vector containing the element potentials.
+ * Length = nElements. Units are Joules/kmol.
+ * @return bool indicating whether thare are any valid storred element
+ * potentials. The calling routine should check this
+ * bool. In the case that there aren't any, lambda is not
+ * touched.
+ */
+ bool getElementPotentials(doublereal* lambda) const;
//@}
@@ -1100,47 +1100,47 @@ namespace Cantera {
//@{
- /// Critical temperature (K).
- virtual doublereal critTemperature() const {
- err("critTemperature"); return -1.0;
- }
+ /// Critical temperature (K).
+ virtual doublereal critTemperature() const {
+ err("critTemperature"); return -1.0;
+ }
- /// Critical pressure (Pa).
- virtual doublereal critPressure() const {
- err("critPressure"); return -1.0;
- }
+ /// Critical pressure (Pa).
+ virtual doublereal critPressure() const {
+ err("critPressure"); return -1.0;
+ }
- /// Critical density (kg/m3).
- virtual doublereal critDensity() const {
- err("critDensity"); return -1.0;
- }
+ /// Critical density (kg/m3).
+ virtual doublereal critDensity() const {
+ err("critDensity"); return -1.0;
+ }
- //@}
+ //@}
- /// @name Saturation properties.
- /// These methods are only implemented by subclasses that
- /// implement full liquid-vapor equations of state. They may be
- /// moved out of ThermoPhase at a later date.
- ///
- virtual doublereal satTemperature(doublereal p) const {
- err("satTemperature"); return -1.0;
- }
+ /// @name Saturation properties.
+ /// These methods are only implemented by subclasses that
+ /// implement full liquid-vapor equations of state. They may be
+ /// moved out of ThermoPhase at a later date.
+ ///
+ virtual doublereal satTemperature(doublereal p) const {
+ err("satTemperature"); return -1.0;
+ }
- virtual doublereal satPressure(doublereal t) const {
- err("satPressure"); return -1.0;
- }
+ virtual doublereal satPressure(doublereal t) const {
+ err("satPressure"); return -1.0;
+ }
- virtual doublereal vaporFraction() const {
- err("vaprFraction"); return -1.0;
- }
+ virtual doublereal vaporFraction() const {
+ err("vaprFraction"); return -1.0;
+ }
- virtual void setState_Tsat(doublereal t, doublereal x) {
- err("setState_sat");
- }
+ virtual void setState_Tsat(doublereal t, doublereal x) {
+ err("setState_sat");
+ }
- virtual void setState_Psat(doublereal p, doublereal x) {
- err("setState_sat");
- }
+ virtual void setState_Psat(doublereal p, doublereal x) {
+ err("setState_sat");
+ }
//@}
diff --git a/Cantera/src/thermo/DebyeHuckel.cpp b/Cantera/src/thermo/DebyeHuckel.cpp
index d2253ab03..fa85788cb 100644
--- a/Cantera/src/thermo/DebyeHuckel.cpp
+++ b/Cantera/src/thermo/DebyeHuckel.cpp
@@ -1809,7 +1809,6 @@ namespace Cantera {
break;
case A_DEBYE_WATER:
dAdT = m_waterProps->ADebye(T, P, 1);
- //dAdT = WaterProps::ADebye(T, P, 1);
break;
default:
printf("shouldn't be here\n");
@@ -1901,7 +1900,7 @@ namespace Cantera {
* ------------ Private and Restricted Functions ------------------
*/
- /**
+ /*
* Bail out of functions with an error exit if they are not
* implemented.
*/
@@ -1944,7 +1943,7 @@ namespace Cantera {
}
}
- /**
+ /*
* nonpolarActCoeff() (private)
*
* Static function that implements the non-polar species
@@ -2419,7 +2418,7 @@ namespace Cantera {
}
}
- /**
+ /*
* s_update_d2lnMolalityActCoeff_dT2() (private, const )
*
* Using internally stored values, this function calculates
diff --git a/Cantera/src/thermo/DebyeHuckel.h b/Cantera/src/thermo/DebyeHuckel.h
index f611677cf..0440137bc 100644
--- a/Cantera/src/thermo/DebyeHuckel.h
+++ b/Cantera/src/thermo/DebyeHuckel.h
@@ -110,8 +110,9 @@ namespace Cantera {
* spinodal curve.
*
*
- * Specification of Solution Thermodynamic Properties
+ * Specification of Solution Thermodynamic Properties
*
+ *
* Chemical potentials
* 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:
@@ -128,10 +129,105 @@ namespace Cantera {
*
* Individual activity coefficients of ions can not be independently measured. Instead,
* only binary pairs forming electroneutral solutions can be measured.
+
+ *
+ * Ionic Strength
+ *
+ * Most of the parameterizations within the model use the ionic strength
+ * as a key variable. The ionic strength, \f$ I\f$ is defined as follows
+ *
+ * \f[
+ * I = \frac{1}{2} \sum_k{m_k z_k^2}
+ * \f]
+ *
+ * \f$ m_k \f$ is the molality of the kth species. \f$ z_k \f$ is the charge
+ * of the kth species. Note, the ionic strength is a defined units quantity.
+ * The molality has defined units of gmol kg-1, and therefore the ionic
+ * strength has units of sqrt( gmol kg-1).
+ *
+ * In some instances, from some authors, a different
+ * formulation is used for the ionic strength in the equations below. The different
+ * formulation is due to the possibility of the existence of weak acids and how
+ * association wrt to the weak acid equilibrium relation affects the calculation
+ * of the activity coefficients via the assumed value of the ionic strength.
+ *
+ * If we are to assume that the association reaction doesn't have an effect
+ * on the ionic strength, then we will want to consider the associated weak
+ * acid as in effect being fully dissociated, when we calculate an effective
+ * value for the ionic strength. We will call this calculated value, the
+ * stoichiometric ionic strength, \f$ I_s \f$, putting a subscript s to denote
+ * it from the more straightforward calculation of \f$ I \f$.
+ *
+ * \f[
+ * I_s = \frac{1}{2} \sum_k{m_k^s z_k^2}
+ * \f]
+ *
+ * Here, \f$ m_k^s \f$ is the value of the molalities calculated assuming that
+ * all weak acid-base pairs are in their fully dissociated states. This calculation may
+ * be simplified by considering that the weakly associated acid may be made up of two
+ * charged species, k1 and k2, each with their own charges, obeying the following relationship:
+ *
+ * \f[
+ * z_k = z_{k1} + z_{k2}
+ * \f]
+ * Then, we may only need to specify one charge value, say, \f$ z_{k1}\f$, the cation charge number,
+ * in order to get both numbers, since we have already specified \f$ z_k \f$ in the definition of original species.
+ * Then, the stoichiometric ionic strength may be calculated via the following formula.
+ *
+ * \f[
+ * I_s = \frac{1}{2} \left(\sum_{k,ions}{m_k z_k^2}+ \sum_{k,weak_assoc}(m_k z_{k1}^2 + m_k z_{k2}^2) \right)
+ * \f]
+ *
+ * The specification of which species are weakly associated acids is made in the input file via the
+ * stoichIsMods XML block, where the charge for k1 is also specified. An example is given below:
+ *
+ * @code
+ *
+ * NaCl(aq):-1.0
+ *
+ * @endcode
+ *
+ * Because we need the concept of a weakly associated acid in order to calculated \f$ I_s \f$ we need to
+ * catalog all species in the phase. This is done using the following categories:
+ *
+ * - cEST_solvent : Solvent species (neutral)
+ * - cEST_chargedSpecies Charged species (charged)
+ * - cEST_weakAcidAssociated Species which can break apart into charged species.
+ * It may or may not be charged. These may or may not be be included in the
+ * species solution vector.
+ * - cEST_strongAcidAssociated Species which always breaksapart into charged species.
+ * It may or may not be charged. Normally, these aren't included
+ * in the speciation vector.
+ * - cEST_polarNeutral Polar neutral species
+ * - cEST_nonpolarNeutral Non poloar neutral species
+ *
+ * Polar and non-polar neutral species are differentiated, because some additions to the activity
+ * coefficient expressions distinguish between these two types of solutes. This is the so-called
+ * salt-out effect.
+ *
+ * The type of species is specified in the electrolyteSpeciesType XML block. Note, this is not
+ * considered a part of the specification of the standard state for the species, at this time. Therefore,
+ * this information is put under the activityCoefficient XML block. An example is given below
+ *
+ * @code
+ *
+ * H2L(L):solvent
+ * H+:chargedSpecies
+ * NaOH(aq):weakAcidAssociated
+ * NaCl(aq):strongAcidAssociated
+ * NH3(aq):polarNeutral
+ * O2(aq):nonpolarNeutral
+ *
+ * @endcode
+ *
+ * Much of the species electrolyte type information is infered from other information in the
+ * input file. For example, as species which is charged is given the "chargedSpecies" default
+ * category. A neutral solute species is put into the "nonpolarNeutral" category by default.
*
* The specification of solute activity coefficients depends on the model
* assumed for the Debye-Huckel term. The model is set by the
- * internal parameter #m_formDH.
+ * internal parameter #m_formDH. We will now describe each category in its own section.
+ *
*
* Debye-Huckel Dilute Limit
*
@@ -142,7 +238,7 @@ namespace Cantera {
* \f[
* \ln(\gamma_k^\triangle) = - z_k^2 A_{Debye} \sqrt{I}
* \f]
- * where I is the ionic strength
+ * where \f$ I\f$ is the ionic strength
* \f[
* I = \frac{1}{2} \sum_k{m_k z_k^2}
* \f]
@@ -215,7 +311,7 @@ namespace Cantera {
* DHFORM_BETAIJ = 3
*
* This form assumes a linear expansion in a virial coefficient form
- * It is used extensively in the book by Newmann, Electrochemistry, and is the beginning of
+ * It is used extensively in the book by Newmann, "Electrochemistry Systems", and is the beginning of
* more complex treatments for stronger electrolytes, fom Pitzer
* and from Harvey, Moller, and Weire.
*
@@ -233,6 +329,39 @@ namespace Cantera {
* - \tilde{M}_o \sum_j \sum_k \beta_{j,k} m_j m_k
* \f]
*
+ * In this formulation the ionic radius, \f$ a \f$, is a constant. This must be supplied to the
+ * model, in an ionicRadius XML block.
+ *
+ * The \f$ \beta_{j,k} \f$ parameters are binary interaction parameters. They are supplied to
+ * the object in an DHBetaMatrix XML block. There are in principle \f$ N (N-1) /2 \f$
+ * different, symmetric interaction parameters, where \f$ N \f$ are the number of solute species in the
+ * mechanism.
+ * An example is given below.
+ *
+ * An example activityCoefficients XML block for this formulation is supplied below
+ *
+ * @code
+ *
+ *
+ * 1.172576
+ *
+ * 3.28640E9
+ *
+ *
+ *
+ * H+:Cl-:0.27
+ * Na+:Cl-:0.15
+ * Na+:OH-:0.06
+ *
+ *
+ * NaCl(aq):-1.0
+ *
+ *
+ * H+:chargedSpecies
+ * NaCl(aq):weakAcidAssociated
+ *
+ *
+ * @endcode
*
* Pitzer Beta_IJ formulation
*
@@ -255,9 +384,79 @@ namespace Cantera {
* - \tilde{M}_o \sum_j \sum_k \beta_{j,k} m_j m_k
* \f]
*
+ * Specification of the Debye Huckel Constants
+ *
+ * In the equations above, the formulas for \f$ A_{Debye} \f$ and \f$ B_{Debye} \f$
+ * are needed. The %DebyeHuckel object uses two methods for specifying these quantities.
+ * The default method is to assume that \f$ A_{Debye} \f$ is a constant, given
+ * in the initialization process, and storred in the
+ * member double, m_A_Debye. Optionally, a full water treatment may be employed that makes
+ * \f$ A_{Debye} \f$ a full function of T and P.
+ *
+ * \f[
+ * A_{Debye} = \frac{F e B_{Debye}}{8 \pi \epsilon R T} {\left( C_o \tilde{M}_o \right)}^{1/2}
+ * \f]
+ * where
+ *
+ * \f[
+ * B_{Debye} = \frac{F} {{(\frac{\epsilon R T}{2})}^{1/2}}
+ * \f]
+ * Therefore:
+ * \f[
+ * A_{Debye} = \frac{1}{8 \pi}
+ * {\left(\frac{2 N_a \rho_o}{1000}\right)}^{1/2}
+ * {\left(\frac{N_a e^2}{\epsilon R T }\right)}^{3/2}
+ * \f]
+ *
+ * Units = sqrt(kg/gmol)
+ *
+ * where
+ * - \f$ N_a \f$ is Avrogadro's number
+ * - \f$ \rho_w \f$ is the density of water
+ * - \f$ e \f$ is the electronic charge
+ * - \f$ \epsilon = K \epsilon_o \f$ is the permitivity of water
+ * where \f$ K \f$ is the dielectric condstant of water,
+ * and \f$ \epsilon_o \f$ is the permitivity of free space.
+ * - \f$ \rho_o \f$ is the density of the solvent in its standard state.
+ *
+ * Nominal value at 298 K and 1 atm = 1.172576 (kg/gmol)1/2
+ * based on:
+ * - \f$ \epsilon / \epsilon_0 \f$ = 78.54
+ * (water at 25C)
+ * - \f$ \epsilon_0 \f$= 8.854187817E-12 C2 N-1 m-2
+ * - e = 1.60217653E-19 C
+ * - F = 9.6485309E7 C kmol-1
+ * - R = 8.314472E3 kg m2 s-2 kmol-1 K-1
+ * - T = 298.15 K
+ * - B_Debye = 3.28640E9 (kg/gmol)1/2 m-1
+ * - \f$N_a\f$ = 6.0221415E26 kmol-1
+ *
+ * An example of a fixed value implementation is given below.
+ * @code
+ *
+ *
+ * 1.172576
+ *
+ * 3.28640E9
+ *
+ * @endcode
+ *
+ * An example of a variable value implementation is given below.
+ *
+ * @code
+ *
+ *
+ *
+ * 3.28640E9
+ *
+ * @endcode
+ *
+ * Currently, \f$ B_{Debye} \f$ is a constant in the model, specified either by a default
+ * water value, or through the input file. This may have to be looked at, in the future.
+ *
*
*
- * %Application within %Kinetics Managers
+ * %Application within %Kinetics Managers
*
* For the time being, we have set the standard concentration for all species in
* this phase equal to the default concentration of the solvent at 298 K and 1 atm.
@@ -312,26 +511,38 @@ namespace Cantera {
*
*
* The constructor for this phase is NOT located in the default ThermoFactory
- * for %Cantera. However, a new %StoichSubstanceSSTP may be created by
+ * for %Cantera. However, a new %DebyeHuckel object may be created by
* the following code snippets:
*
* @code
- * sprintf(file_ID,"%s#NaCl(S)", iFile);
+ * DebyeHuckel *DH = new DebyeHuckel("DH_NaCl.xml", "NaCl_electrolyte");
+ * @endcode
+ *
+ * or
+ *
+ * @code
+ * char iFile[80];
+ * strcpy(iFile, "DH_NaCl.xml");
+ * sprintf(file_ID,"%s#NaCl_electrolyte", iFile);
* XML_Node *xm = get_XML_NameID("phase", file_ID, 0);
- * StoichSubstanceSSTP *solid = new StoichSubstanceSSTP(*xm);
+ * DebyeHuckel *dh = new DebyeHuckel(*xm);
* @endcode
*
* or by the following call to importPhase():
*
* @code
- * sprintf(file_ID,"%s#NaCl(S)", iFile);
+ * char iFile[80];
+ * strcpy(iFile, "DH_NaCl.xml");
+ * sprintf(file_ID,"%s#NaCl_electrolyte", iFile);
* XML_Node *xm = get_XML_NameID("phase", file_ID, 0);
- * StoichSubstanceSSTP solid;
- * importPhase(*xm, &solid);
+ * DebyeHuckel dhphase;
+ * importPhase(*xm, &dhphase);
* @endcode
+ *
*
* XML Example
*
+ *
* The phase model name for this is called StoichSubstance. It must be supplied
* as the model attribute of the thermo XML element entry.
* Within the phase XML block,
@@ -339,36 +550,52 @@ namespace Cantera {
* this phase is given below.
*
* @verbatim
-
-
-
- Na Cl
-
- NaCl(S)
-
- 2.165
-
-
-
-
-
-
-
-
-
- Na:1 Cl:1
-
-
-
- 50.72389, 6.672267, -2.517167,
- 10.15934, -0.200675, -427.2115,
- 130.3973
-
-
-
- 2.165
-
- @endverbatim
+
+
+ H2O(L) Na+ Cl- H+ OH- NaCl(aq) NaOH(aq)
+
+
+ 300
+ 101325.0
+
+ Na+:3.0
+ Cl-:3.0
+ H+:1.0499E-8
+ OH-:1.3765E-6
+ NaCl(aq):0.98492
+ NaOH(aq):3.8836E-6
+
+
+
+
+
+
+
+ 1.172576
+
+ 3.28640E9
+
+
+
+ H+:Cl-:0.27
+ Na+:Cl-:0.15
+ Na+:OH-:0.06
+
+
+ NaCl(aq):-1.0
+
+
+ H+:chargedSpecies
+ NaCl(aq):weakAcidAssociated
+
+
+ H2O(L)
+
+ O H Na Cl
+
+ @endverbatim
*
* The model attribute, "StoichSubstanceSSTP", on the thermo element identifies the phase as
* being a StoichSubstanceSSTP object.
@@ -984,6 +1211,9 @@ namespace Cantera {
* class. It checks to see whether the temperature or pressure has changed and
* thus the ss thermodynamics functions for all of the species
* must be recalculated.
+ *
+ * @param pres Pressure at which to evaluate the standard states.
+ * The default, indicated by a -1.0, is to use the current pressure
*/
virtual void _updateStandardStateThermo(doublereal pres = -1.0) const;
diff --git a/Cantera/src/thermo/IdealMolalSoln.h b/Cantera/src/thermo/IdealMolalSoln.h
index 822266478..559a004c2 100644
--- a/Cantera/src/thermo/IdealMolalSoln.h
+++ b/Cantera/src/thermo/IdealMolalSoln.h
@@ -743,6 +743,9 @@ namespace Cantera {
*
* Note, this function doesn't really do anything. I just left it in as a template
* for other situations which need a calculation at this level.
+ *
+ * @param pres Pressure at which to evaluate the standard states.
+ * The default, indicated by a -1.0, is to use the current pressure
*/
virtual void _updateStandardStateThermo(doublereal pres = -1.0) const;
diff --git a/examples/cxx/Makefile.in b/examples/cxx/Makefile.in
index 32e9e777f..ee49c15f8 100755
--- a/examples/cxx/Makefile.in
+++ b/examples/cxx/Makefile.in
@@ -83,7 +83,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libzeroD.a
$(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(CANTERA_LIBS) \
$(LINK_OPTIONS) $(EXT_LIBS) @LIBS@ \
$(LCXX_END_LIBS)
-# $(FORT_LIBS) \
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libzeroD.a
clean:
$(RM) $(OBJS) $(PROGRAM)
diff --git a/test_problems/ChemEquil_gri_matrix/Makefile.in b/test_problems/ChemEquil_gri_matrix/Makefile.in
index 735e2b115..1a5ffb18b 100644
--- a/test_problems/ChemEquil_gri_matrix/Makefile.in
+++ b/test_problems/ChemEquil_gri_matrix/Makefile.in
@@ -83,6 +83,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -108,3 +112,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/ChemEquil_gri_pairs/Makefile.in b/test_problems/ChemEquil_gri_pairs/Makefile.in
index dd0332c16..02218ba47 100644
--- a/test_problems/ChemEquil_gri_pairs/Makefile.in
+++ b/test_problems/ChemEquil_gri_pairs/Makefile.in
@@ -83,6 +83,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -108,3 +112,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/ChemEquil_ionizedGas/Makefile.in b/test_problems/ChemEquil_ionizedGas/Makefile.in
index b8d77d8b9..a324d2e0c 100644
--- a/test_problems/ChemEquil_ionizedGas/Makefile.in
+++ b/test_problems/ChemEquil_ionizedGas/Makefile.in
@@ -83,6 +83,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -108,3 +112,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/ChemEquil_red1/Makefile.in b/test_problems/ChemEquil_red1/Makefile.in
index a6e0e229e..7796c3a59 100644
--- a/test_problems/ChemEquil_red1/Makefile.in
+++ b/test_problems/ChemEquil_red1/Makefile.in
@@ -83,6 +83,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -108,3 +112,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/DH_graph_1/Makefile.in b/test_problems/cathermo/DH_graph_1/Makefile.in
index 036a495fe..e362b2b88 100644
--- a/test_problems/cathermo/DH_graph_1/Makefile.in
+++ b/test_problems/cathermo/DH_graph_1/Makefile.in
@@ -72,6 +72,7 @@ LCXX_FLAGS = -L$(CANTERA_LIBDIR) @LOCAL_LIB_DIRS@ @CXXFLAGS@
.cpp.d:
@CXX_DEPENDS@ $(INCLUDES) $(CXX_FLAGS) $*.cpp > $*.d
+
# List of dependency files to be created
DEPENDS=$(OBJS:.o=.d)
@@ -86,6 +87,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional dependency to enhance stability
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/DH_graph_NM/Makefile.in b/test_problems/cathermo/DH_graph_NM/Makefile.in
index 036a495fe..34e2aa57a 100644
--- a/test_problems/cathermo/DH_graph_NM/Makefile.in
+++ b/test_problems/cathermo/DH_graph_NM/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/DH_graph_Pitzer/Makefile.in b/test_problems/cathermo/DH_graph_Pitzer/Makefile.in
index 036a495fe..c528eb9d2 100644
--- a/test_problems/cathermo/DH_graph_Pitzer/Makefile.in
+++ b/test_problems/cathermo/DH_graph_Pitzer/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/cathermo/DH_graph_acommon/Makefile.in b/test_problems/cathermo/DH_graph_acommon/Makefile.in
index 036a495fe..f5461f9a3 100644
--- a/test_problems/cathermo/DH_graph_acommon/Makefile.in
+++ b/test_problems/cathermo/DH_graph_acommon/Makefile.in
@@ -86,6 +86,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +113,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/DH_graph_bdotak/Makefile.in b/test_problems/cathermo/DH_graph_bdotak/Makefile.in
index 036a495fe..11b863afd 100644
--- a/test_problems/cathermo/DH_graph_bdotak/Makefile.in
+++ b/test_problems/cathermo/DH_graph_bdotak/Makefile.in
@@ -86,6 +86,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +113,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_graph_CpvT/Makefile.in b/test_problems/cathermo/HMW_graph_CpvT/Makefile.in
index aad76411e..26099ca63 100644
--- a/test_problems/cathermo/HMW_graph_CpvT/Makefile.in
+++ b/test_problems/cathermo/HMW_graph_CpvT/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
Cp_standalone: Cp_standalone.o
$(CXX) -o Cp_standalone Cp_standalone.o \
$(LCXX_FLAGS) $(LINK_OPTIONS) $(LCXX_END_LIBS)
@@ -114,3 +118,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_graph_GvI/Makefile.in b/test_problems/cathermo/HMW_graph_GvI/Makefile.in
index 32b506a29..3357041de 100644
--- a/test_problems/cathermo/HMW_graph_GvI/Makefile.in
+++ b/test_problems/cathermo/HMW_graph_GvI/Makefile.in
@@ -87,6 +87,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -111,3 +114,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_graph_GvT/Makefile.in b/test_problems/cathermo/HMW_graph_GvT/Makefile.in
index 9185dbea3..3e4cfb26b 100644
--- a/test_problems/cathermo/HMW_graph_GvT/Makefile.in
+++ b/test_problems/cathermo/HMW_graph_GvT/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
Gex_standalone: Gex_standalone.o
$(CXX) -o Gex_standalone Gex_standalone.o \
$(LCXX_FLAGS) $(LINK_OPTIONS) $(LCXX_END_LIBS)
@@ -114,3 +118,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_graph_HvT/Makefile.in b/test_problems/cathermo/HMW_graph_HvT/Makefile.in
index 1edc6d2bf..4eba8a2e1 100644
--- a/test_problems/cathermo/HMW_graph_HvT/Makefile.in
+++ b/test_problems/cathermo/HMW_graph_HvT/Makefile.in
@@ -86,6 +86,11 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
L_standalone: L_standalone.o
$(CXX) -o L_standalone L_standalone.o \
$(LCXX_FLAGS) $(LINK_OPTIONS) $(LCXX_END_LIBS)
@@ -114,3 +119,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_graph_VvT/Makefile.in b/test_problems/cathermo/HMW_graph_VvT/Makefile.in
index 3b4b21156..23848ee58 100644
--- a/test_problems/cathermo/HMW_graph_VvT/Makefile.in
+++ b/test_problems/cathermo/HMW_graph_VvT/Makefile.in
@@ -86,6 +86,11 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
V_standalone: V_standalone.o
$(CXX) -o V_standalone V_standalone.o \
$(LCXX_FLAGS) $(LINK_OPTIONS) $(LCXX_END_LIBS)
@@ -114,3 +119,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_test_1/Makefile.in b/test_problems/cathermo/HMW_test_1/Makefile.in
index 9ef9c8cc0..6608e3662 100644
--- a/test_problems/cathermo/HMW_test_1/Makefile.in
+++ b/test_problems/cathermo/HMW_test_1/Makefile.in
@@ -94,6 +94,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -118,3 +122,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/HMW_test_3/Makefile.in b/test_problems/cathermo/HMW_test_3/Makefile.in
index 875070cba..837b86990 100644
--- a/test_problems/cathermo/HMW_test_3/Makefile.in
+++ b/test_problems/cathermo/HMW_test_3/Makefile.in
@@ -86,6 +86,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +113,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/ims/Makefile.in b/test_problems/cathermo/ims/Makefile.in
index ae3906b39..23cbecaea 100644
--- a/test_problems/cathermo/ims/Makefile.in
+++ b/test_problems/cathermo/ims/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/cathermo/issp/Makefile.in b/test_problems/cathermo/issp/Makefile.in
index 9c4cab9cd..3b7c59ae5 100644
--- a/test_problems/cathermo/issp/Makefile.in
+++ b/test_problems/cathermo/issp/Makefile.in
@@ -85,6 +85,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -110,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/stoichSubSSTP/Makefile.in b/test_problems/cathermo/stoichSubSSTP/Makefile.in
index 3d9d463da..ccf2c6d75 100644
--- a/test_problems/cathermo/stoichSubSSTP/Makefile.in
+++ b/test_problems/cathermo/stoichSubSSTP/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/testIAPWS/Makefile.in b/test_problems/cathermo/testIAPWS/Makefile.in
index a7362abf9..1d7d67880 100755
--- a/test_problems/cathermo/testIAPWS/Makefile.in
+++ b/test_problems/cathermo/testIAPWS/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/cathermo/testIAPWSPres/Makefile.in b/test_problems/cathermo/testIAPWSPres/Makefile.in
index 50de6fae1..d51bf9b26 100755
--- a/test_problems/cathermo/testIAPWSPres/Makefile.in
+++ b/test_problems/cathermo/testIAPWSPres/Makefile.in
@@ -86,6 +86,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +113,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/testIAPWSTripP/Makefile.in b/test_problems/cathermo/testIAPWSTripP/Makefile.in
index ed593a84c..5d16fadc1 100755
--- a/test_problems/cathermo/testIAPWSTripP/Makefile.in
+++ b/test_problems/cathermo/testIAPWSTripP/Makefile.in
@@ -86,6 +86,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +114,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/testWaterPDSS/Makefile.in b/test_problems/cathermo/testWaterPDSS/Makefile.in
index 92a83eb14..f55ad44dc 100755
--- a/test_problems/cathermo/testWaterPDSS/Makefile.in
+++ b/test_problems/cathermo/testWaterPDSS/Makefile.in
@@ -86,6 +86,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +113,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/cathermo/testWaterTP/Makefile.in b/test_problems/cathermo/testWaterTP/Makefile.in
index c9a782ace..bb3ddb68a 100644
--- a/test_problems/cathermo/testWaterTP/Makefile.in
+++ b/test_problems/cathermo/testWaterTP/Makefile.in
@@ -86,6 +86,11 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
@MAKE@ .depends
@@ -110,3 +115,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/diamondSurf/Makefile.in b/test_problems/diamondSurf/Makefile.in
index 2f58b3b1d..eff89f368 100644
--- a/test_problems/diamondSurf/Makefile.in
+++ b/test_problems/diamondSurf/Makefile.in
@@ -85,6 +85,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target
depends:
$(RM) *.d .depends
@@ -111,3 +115,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/fracCoeff/Makefile.in b/test_problems/fracCoeff/Makefile.in
index 815628cf2..9fddf9a10 100644
--- a/test_problems/fracCoeff/Makefile.in
+++ b/test_problems/fracCoeff/Makefile.in
@@ -85,6 +85,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target
depends:
$(RM) *.d .depends
@@ -111,3 +115,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/negATest/Makefile.in b/test_problems/negATest/Makefile.in
index 2e53ee1ec..2d7e26174 100644
--- a/test_problems/negATest/Makefile.in
+++ b/test_problems/negATest/Makefile.in
@@ -85,6 +85,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
# depends target
depends:
$(RM) *.d .depends
@@ -111,3 +114,8 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/silane_equil/Makefile.in b/test_problems/silane_equil/Makefile.in
index de4406ff5..e95ae1ada 100644
--- a/test_problems/silane_equil/Makefile.in
+++ b/test_problems/silane_equil/Makefile.in
@@ -83,6 +83,10 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
+
# depends target -> forces recalculation of dependencies
depends:
$(RM) *.d .depends
@@ -108,3 +112,7 @@ clean:
$(RM) -rf SunWS_cache ; \
fi )
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
diff --git a/test_problems/surfkin/Makefile.in b/test_problems/surfkin/Makefile.in
index 6913e5ec9..40d6c87a4 100644
--- a/test_problems/surfkin/Makefile.in
+++ b/test_problems/surfkin/Makefile.in
@@ -82,7 +82,9 @@ $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a
$(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
$(LCXX_END_LIBS)
-$(OBJS):
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libcaThermo.a
+
depends:
$(RM) *.d .depends
@@ -109,3 +111,8 @@ clean:
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/tools/doc/Cantera.cfg.in b/tools/doc/Cantera.cfg.in
index b8e11c70b..5b11be233 100755
--- a/tools/doc/Cantera.cfg.in
+++ b/tools/doc/Cantera.cfg.in
@@ -116,7 +116,8 @@ FILE_PATTERNS = Kinetics.h Kinetics.cpp \
IdealMolalSoln.h IdealMolalSoln.cpp \
IdealSolidSolnPhase.h IdealSolidSolnPhase.cpp \
StoichSubstanceSSTP.h StoichSubstanceSSTP.cpp \
- DebyeHuckel.h DebyeHuckel.cpp
+ DebyeHuckel.h DebyeHuckel.cpp \
+ ConstDensityThermo.h ConstDensityThermo.cpp
RECURSIVE = NO
EXCLUDE = CVS examples converters zeroD
EXCLUDE_SYMLINKS = NO