Doxygen update:

Added info to DebyeHuckel. It's getting to be near a documented state.
test suite fix:
   fixed Makefile.in's. The .depends were not being included in the Makefiles.
   It should now be more stable.
This commit is contained in:
Harry Moffat 2007-03-11 19:46:14 +00:00
parent af38f45d1d
commit 51a5f82474
36 changed files with 1022 additions and 254 deletions

View file

@ -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.
/**
*
*
* <b> Specification of Species Standard State Properties </b>
*
*
* <b> Specification of Solution Thermodynamic Properties </b>
*
* The density is assumed to be constant, no matter what the concentration of the solution.
*
*
* <b> Application within %Kinetics Managers </b>
*
*
* <b> XML Example </b>
*
* 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 <I>T</I> and <I>P</I> 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 <I>T</I> and <I>P</I> 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 <I>T</I> and <I>P</I> 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 <I>T</I> and <I>P</I> 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 <I>T</I> and <I>P</I> 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 <I>T</I> and <I>P</I> 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

View file

@ -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");
}
//@}

View file

@ -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

View file

@ -110,8 +110,9 @@ namespace Cantera {
* spinodal curve.
*
* <HR>
* <H1> Specification of Solution Thermodynamic Properties </H1>
* <H2> Specification of Solution Thermodynamic Properties </H2>
* <HR>
*
* 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.
*
* <H3> Ionic Strength </H3>
*
* 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
* <TT> stoichIsMods </TT> XML block, where the charge for k1 is also specified. An example is given below:
*
* @code
* <stoichIsMods>
* NaCl(aq):-1.0
* </stoichIsMods>
* @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:
*
* - <B>cEST_solvent</B> : Solvent species (neutral)
* - <B>cEST_chargedSpecies</B> Charged species (charged)
* - <B>cEST_weakAcidAssociated</B> 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.
* - <B>cEST_strongAcidAssociated</B> Species which always breaksapart into charged species.
* It may or may not be charged. Normally, these aren't included
* in the speciation vector.
* - <B>cEST_polarNeutral </B> Polar neutral species
* - <B>cEST_nonpolarNeutral</B> 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 <TT>electrolyteSpeciesType</TT> 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 <TT>activityCoefficient</TT> XML block. An example is given below
*
* @code
* <electrolyteSpeciesType>
* H2L(L):solvent
* H+:chargedSpecies
* NaOH(aq):weakAcidAssociated
* NaCl(aq):strongAcidAssociated
* NH3(aq):polarNeutral
* O2(aq):nonpolarNeutral
* </electrolyteSpeciesType>
* @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.
*
*
* <H3> Debye-Huckel Dilute Limit </H3>
*
@ -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 <DFN> ionicRadius </DFN> XML block.
*
* The \f$ \beta_{j,k} \f$ parameters are binary interaction parameters. They are supplied to
* the object in an <TT> DHBetaMatrix </TT> 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 <TT> activityCoefficients </TT> XML block for this formulation is supplied below
*
* @code
* <activityCoefficients model="Beta_ij">
* <!-- A_Debye units = sqrt(kg/gmol) -->
* <A_Debye> 1.172576 </A_Debye>
* <!-- B_Debye units = sqrt(kg/gmol)/m -->
* <B_Debye> 3.28640E9 </B_Debye>
* <ionicRadius default="3.042843" units="Angstroms">
* </ionicRadius>
* <DHBetaMatrix>
* H+:Cl-:0.27
* Na+:Cl-:0.15
* Na+:OH-:0.06
* </DHBetaMatrix>
* <stoichIsMods>
* NaCl(aq):-1.0
* </stoichIsMods>
* <electrolyteSpeciesType>
* H+:chargedSpecies
* NaCl(aq):weakAcidAssociated
* </electrolyteSpeciesType>
* </activityCoefficients>
* @endcode
*
* <H3> Pitzer Beta_IJ formulation </H3>
*
@ -255,9 +384,79 @@ namespace Cantera {
* - \tilde{M}_o \sum_j \sum_k \beta_{j,k} m_j m_k
* \f]
*
* <H3> Specification of the Debye Huckel Constants </H3>
*
* 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 <I>T</I> and <I>P</I>.
*
* \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)<SUP>1/2</SUP>
* based on:
* - \f$ \epsilon / \epsilon_0 \f$ = 78.54
* (water at 25C)
* - \f$ \epsilon_0 \f$= 8.854187817E-12 C<SUP>2</SUP> N<SUP>-1</SUP> m<SUP>-2</SUP>
* - e = 1.60217653E-19 C
* - F = 9.6485309E7 C kmol<SUP>-1</SUP>
* - R = 8.314472E3 kg m<SUP>2</SUP> s<SUP>-2</SUP> kmol<SUP>-1</SUP> K<SUP>-1</SUP>
* - T = 298.15 K
* - B_Debye = 3.28640E9 (kg/gmol)<SUP>1/2</SUP> m<SUP>-1</SUP>
* - \f$N_a\f$ = 6.0221415E26 kmol<SUP>-1</SUP>
*
* An example of a fixed value implementation is given below.
* @code
* <activityCoefficients model="Beta_ij">
* <!-- A_Debye units = sqrt(kg/gmol) -->
* <A_Debye> 1.172576 </A_Debye>
* <!-- B_Debye units = sqrt(kg/gmol)/m -->
* <B_Debye> 3.28640E9 </B_Debye>
* </activityCoefficients>
* @endcode
*
* An example of a variable value implementation is given below.
*
* @code
* <activityCoefficients model="Beta_ij">
* <A_Debye model="water" />
* <!-- B_Debye units = sqrt(kg/gmol)/m -->
* <B_Debye> 3.28640E9 </B_Debye>
* </activityCoefficients>
* @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.
*
*
* <HR>
* <b> %Application within %Kinetics Managers </b>
* <H2> %Application within %Kinetics Managers </H2>
* <HR>
* 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 {
* <HR>
*
* 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
*
* <HR>
* <b> XML Example </b>
* <HR>
*
* 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
<!-- phase NaCl(S) -->
<phase dim="3" id="NaCl(S)">
<elementArray datasrc="elements.xml">
Na Cl
</elementArray>
<speciesArray datasrc="#species_NaCl(S)"> NaCl(S) </speciesArray>
<thermo model="StoichSubstanceSSTP">
<density units="g/cm3">2.165</density>
</thermo>
<transport model="None"/>
<kinetics model="none"/>
</phase>
<!-- species definitions -->
<speciesData id="species_NaCl(S)">
<!-- species NaCl(S) -->
<species name="NaCl(S)">
<atomArray> Na:1 Cl:1 </atomArray>
<thermo>
<Shomate Pref="1 bar" Tmax="1075.0" Tmin="250.0">
<floatArray size="7">
50.72389, 6.672267, -2.517167,
10.15934, -0.200675, -427.2115,
130.3973
</floatArray>
</Shomate>
</thermo>
<density units="g/cm3">2.165</density>
</species>
</speciesData> @endverbatim
<phase id="NaCl_electrolyte" dim="3">
<speciesArray datasrc="#species_waterSolution">
H2O(L) Na+ Cl- H+ OH- NaCl(aq) NaOH(aq)
</speciesArray>
<state>
<temperature units="K"> 300 </temperature>
<pressure units="Pa">101325.0</pressure>
<soluteMolalities>
Na+:3.0
Cl-:3.0
H+:1.0499E-8
OH-:1.3765E-6
NaCl(aq):0.98492
NaOH(aq):3.8836E-6
</soluteMolalities>
</state>
<!-- thermo model identifies the inherited class
from ThermoPhase that will handle the thermodynamics.
-->
<thermo model="DebyeHuckel">
<standardConc model="solvent_volume" />
<activityCoefficients model="Beta_ij">
<!-- A_Debye units = sqrt(kg/gmol) -->
<A_Debye> 1.172576 </A_Debye>
<!-- B_Debye units = sqrt(kg/gmol)/m -->
<B_Debye> 3.28640E9 </B_Debye>
<ionicRadius default="3.042843" units="Angstroms">
</ionicRadius>
<DHBetaMatrix>
H+:Cl-:0.27
Na+:Cl-:0.15
Na+:OH-:0.06
</DHBetaMatrix>
<stoichIsMods>
NaCl(aq):-1.0
</stoichIsMods>
<electrolyteSpeciesType>
H+:chargedSpecies
NaCl(aq):weakAcidAssociated
</electrolyteSpeciesType>
</activityCoefficients>
<solvent> H2O(L) </solvent>
</thermo>
<elementArray datasrc="elements.xml"> O H Na Cl </elementArray>
</phase>
@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;

View file

@ -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;

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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