diff --git a/include/cantera/thermo/WaterProps.h b/include/cantera/thermo/WaterProps.h
index 4c98fdf46..f2277795d 100644
--- a/include/cantera/thermo/WaterProps.h
+++ b/include/cantera/thermo/WaterProps.h
@@ -23,82 +23,70 @@ class PDSS_Water;
/**
* @defgroup relatedProps Electric Properties of Phases
*
+ *
Treatment of the %Phase Potential and the electrochemical potential of
+ * a species
*
- *
- * Treatment of the %Phase Potential and the electrochemical potential of a species
- *
- *
- *
- * The electrochemical potential of species k in a phase p, \f$ \zeta_k \f$,
- * is related to the chemical potential via
- * the following equation,
+ * The electrochemical potential of species *k* in a phase *p*, \f$ \zeta_k \f$,
+ * is related to the chemical potential via the following equation,
*
* \f[
* \zeta_{k}(T,P) = \mu_{k}(T,P) + z_k \phi_p
* \f]
*
- * where \f$ \nu_k \f$ is the charge of species k, and \f$ \phi_p \f$ is
- * the electric potential of phase p.
+ * where \f$ \nu_k \f$ is the charge of species *k*, and \f$ \phi_p \f$ is
+ * the electric potential of phase *p*.
*
- * The potential \f$ \phi_p \f$ is tracked and internally stored within
- * the base %ThermoPhase object. It constitutes a specification of the
- * internal state of the phase; it's the third state variable, the first
- * two being temperature and density (or, pressure, for incompressible
- * equations of state). It may be set with the function,
- * ThermoPhase::setElectricPotential(),
- * and may be queried with the function ThermoPhase::electricPotential().
+ * The potential \f$ \phi_p \f$ is tracked and internally stored within the
+ * base ThermoPhase object. It constitutes a specification of the internal
+ * state of the phase; it's the third state variable, the first two being
+ * temperature and density (or, pressure, for incompressible equations of
+ * state). It may be set with the function,
+ * ThermoPhase::setElectricPotential(), and may be queried with the function
+ * ThermoPhase::electricPotential().
*
- * Note, the overall electrochemical potential of a phase may not be
- * changed by the potential because many phases enforce charge
- * neutrality:
+ * Note, the overall electrochemical potential of a phase may not be changed
+ * by the potential because many phases enforce charge neutrality:
*
* \f[
* 0 = \sum_k z_k X_k
* \f]
*
- * Whether charge neutrality is necessary for a phase is also specified
- * within the ThermoPhase object, by the function call
- * ThermoPhase::chargeNeutralityNecessary(). Note, that it is not
- * necessary for the IdealGas phase, currently. However, it is
- * necessary for liquid phases such as Cantera::DebyeHuckel and
- * Cantera::HMWSoln for the proper specification of the chemical potentials.
+ * Whether charge neutrality is necessary for a phase is also specified within
+ * the ThermoPhase object, by the function call
+ * ThermoPhase::chargeNeutralityNecessary(). Note, that it is not necessary
+ * for the IdealGas phase, currently. However, it is necessary for liquid
+ * phases such as Cantera::DebyeHuckel and Cantera::HMWSoln for the proper
+ * specification of the chemical potentials.
*
+ * This equation, when applied to the \f$ \zeta_k \f$ equation described
+ * above, results in a zero net change in the effective Gibbs free energy of
+ * the phase. However, specific charged species in the phase may increase or
+ * decrease their electrochemical potentials, which will have an effect on
+ * interfacial reactions involving charged species, when there is a potential
+ * drop between phases. This effect is used within the
+ * Cantera::InterfaceKinetics and Cantera::EdgeKinetics kinetics objects
+ * classes.
*
- * This equation, when applied to the \f$ \zeta_k \f$ equation described
- * above, results in a zero net change in the effective Gibbs free
- * energy of the phase. However, specific charged species in the phase
- * may increase or decrease their electrochemical potentials, which will
- * have an effect on interfacial reactions involving charged species,
- * when there is a potential drop between phases. This effect is used
- * within the Cantera::InterfaceKinetics and Cantera::EdgeKinetics kinetics
- * objects classes.
+ * Electrothermochemical Properties of Phases of Matter.
*
+ * The following classes are used to compute the electrical and
+ * electrothermochemical properties of phases of matter. The main property
+ * currently is the dielectric constant, which is an important parameter for
+ * electrolyte solutions. The class WaterProps calculate the dielectric
+ * constant of water as a function of temperature and pressure.
*
- *
- * Electrothermochemical Properties of Phases of Matter.
- *
- *
- * The following classes are used to compute the electrical and electrothermochemical properties of
- * phases of matter. The main property currently is the dielectric
- * constant, which is an important parameter for electrolyte solutions.
- * The class WaterProps calculate the dielectric constant of water as a function of
- * temperature and pressure.
- *
- * WaterProps also calculate the constant A_debye used in the Debye Huckel
- * and Pitzer activity coefficient calculations.
- *
+ * WaterProps also calculate the constant A_debye used in the Debye Huckel and
+ * Pitzer activity coefficient calculations.
*
* @ingroup phases
*/
//@{
-
-//! The WaterProps class is used to
-//! house several approximation routines for properties of water.
+//! The WaterProps class is used to house several approximation routines for
+//! properties of water.
/*!
- * The class is also a wrapper around the WaterPropsIAPWS class
- * which provides the calculations for the equation of
- * state properties for water.
+ * The class is also a wrapper around the WaterPropsIAPWS class which
+ * provides the calculations for the equation of state properties for water.
*
* In particular, this class house routine for the calculation
* of the dielectric constant of water
@@ -107,13 +95,11 @@ class PDSS_Water;
*/
class WaterProps
{
-
public:
-
//! Default constructor
WaterProps();
- //! Constructor with pointer to Water PDSS object
+ //! Constructor
/*!
* @param wptr Pointer to WaterPropsIAPWS object
*/
@@ -126,25 +112,17 @@ public:
WaterProps(PDSS_Water* wptr);
//! Copy Constructor
- /*!
- * @param b Object to be copied
- */
WaterProps(const WaterProps& b);
//! destructor
virtual ~WaterProps();
//! Assignment operator
- /*!
- * @param b Object to be copied
- */
WaterProps& operator=(const WaterProps& b);
-
//! Simple calculation of water density at atmospheric pressure.
//! Valid up to boiling point.
/*!
- * static function.
* This formulation has no dependence on the pressure and shouldn't
* be used where accuracy is needed.
*
@@ -153,10 +131,10 @@ public:
* @param ifunc changes what's returned
*
* @return value returned depends on ifunc value:
- * ifunc = 0 Returns the density in kg/m^3
- * ifunc = 1 returns the derivative of the density wrt T.
- * ifunc = 2 returns the 2nd derivative of the density wrt T
- * ifunc = 3 returns the derivative of the density wrt P.
+ * - ifunc = 0 Returns the density in kg/m^3
+ * - ifunc = 1 returns the derivative of the density wrt T.
+ * - ifunc = 2 returns the 2nd derivative of the density wrt T
+ * - ifunc = 3 returns the derivative of the density wrt P.
*
* Verification:
* Agrees with the CRC values (6-10) for up to 4 sig digits.
@@ -165,31 +143,23 @@ public:
*/
static doublereal density_T(doublereal T, doublereal P, int ifunc);
-
- //! Bradley-Pitzer equation for the dielectric constant
- //! of water as a function of temperature and pressure.
+ //! Bradley-Pitzer equation for the dielectric constant
+ //! of water as a function of temperature and pressure.
/*!
* Returns the dimensionless relative dielectric constant
* and its derivatives.
*
- *
* Range of validity: 0 to 350C, 0 to 1 kbar pressure
*
* @param T temperature (kelvin)
* @param P_pascal pressure in pascal
* @param ifunc changes what's returned from the function
- * - ifunc = 0 return value
- * - ifunc = 1 return temperature derivative
- * - ifunc = 2 return temperature second derivative
- * - ifunc = 3 return pressure first derivative
- * .
*
* @return Depends on the value of ifunc:
* - ifunc = 0 return value
* - ifunc = 1 return temperature derivative
* - ifunc = 2 return temperature second derivative
* - ifunc = 3 return pressure first derivative
- * .
*
* Validation:
* Numerical experiments indicate that this function agrees with
@@ -197,11 +167,9 @@ public:
* digits shown (0 to 100C).
*
* value at 25C and 1 atm, relEps = 78.38
- *
*/
doublereal relEpsilon(doublereal T, doublereal P_pascal, int ifunc = 0);
-
//! ADebye calculates the value of A_Debye as a function
//! of temperature and pressure according to relations
//! that take into account the temperature and pressure
@@ -213,35 +181,27 @@ public:
* most be recalculated whenever T or P changes.
* The units returned by this expression are sqrt(kg/gmol).
*
- *
* \f[
* A_{Debye} = \frac{1}{8 \pi} \sqrt{\frac{2 N_{Avog} \rho_w}{1000}}
* {\left(\frac{e^2}{\epsilon k_{boltz} T}\right)}^{\frac{3}{2}}
* \f]
*
+ * Nominal value at 25C and 1atm = 1.172576 sqrt(kg/gmol).
*
- * Nominal value at 25C and 1atm = 1.172576 sqrt(kg/gmol).
- *
- * Based on:
- * epsilon/epsilon_0 = 78.54 (water at 25C)
- * T = 298.15 K
- * B_Debye = 3.28640E9 sqrt(kg/gmol)/m
+ * Based on:
+ * - epsilon/epsilon_0 = 78.54 (water at 25C)
+ * - T = 298.15 K
+ * - B_Debye = 3.28640E9 sqrt(kg/gmol)/m
*
* @param T Temperature (kelvin)
* @param P pressure (pascal)
- * @param ifunc Changes what's returned from the routine:
- * - ifunc = 0 return value
- * - ifunc = 1 return temperature derivative
- * - ifunc = 2 return temperature second derivative
- * - ifunc = 3 return pressure first derivative
- * .
+ * @param ifunc Changes what's returned from the routine
*
* @return Returns a single doublereal whose meaning depends on ifunc:
* - ifunc = 0 return value
* - ifunc = 1 return temperature derivative
* - ifunc = 2 return temperature second derivative
* - ifunc = 3 return pressure first derivative
- * .
*
* Verification:
*
@@ -253,7 +213,6 @@ public:
*/
doublereal ADebye(doublereal T, doublereal P, int ifunc);
-
//! Returns the saturation pressure given the temperature
/*!
* @param T temperature (kelvin)
@@ -261,7 +220,6 @@ public:
*/
doublereal satPressure(doublereal T);
-
//! Returns the density of water
/*!
* This function sets the internal temperature and pressure
@@ -279,7 +237,6 @@ public:
*/
doublereal density_IAPWS() const;
-
//! returns the coefficient of thermal expansion
/*!
* @param T Temperature (kelvin)
@@ -328,16 +285,8 @@ public:
*/
doublereal thermalConductivityWater() const;
-
-
-
-
protected:
-
//! Pointer to the WaterPropsIAPWS object
- /*!
- * this pointer points to the water object.
- */
WaterPropsIAPWS* m_waterIAPWS;
//! true if we own the WaterPropsIAPWS object
@@ -347,5 +296,4 @@ protected:
//@}
}
-
#endif
diff --git a/include/cantera/thermo/WaterPropsIAPWS.h b/include/cantera/thermo/WaterPropsIAPWS.h
index f02b540b4..6ef456ee1 100644
--- a/include/cantera/thermo/WaterPropsIAPWS.h
+++ b/include/cantera/thermo/WaterPropsIAPWS.h
@@ -39,93 +39,95 @@ namespace Cantera
//! Class for calculating the equation of state of water.
/*!
+ * The reference is W. Wagner, A. Prub, "The IAPWS Formulation 1995 for the
+ * Thermodynamic Properties of Ordinary Water Substance for General and
+ * Scientific Use," J. Phys. Chem. Ref. Dat, 31, 387, 2002.
*
- * The reference is W. Wagner, A. Prub, "The IAPWS Formulation 1995 for the Thermodynamic
- * Properties of Ordinary Water Substance for General and Scientific Use,"
- * J. Phys. Chem. Ref. Dat, 31, 387, 2002.
+ * This class provides a very complicated polynomial for the specific
+ * Helmholtz free energy of water, as a function of temperature and density.
*
- * This class provides a very complicated polynomial for the specific helmholtz free
- * energy of water, as a function of temperature and density.
+ * \f[
+ * \frac{M\hat{f}(\rho,T)}{R T} = \phi(\delta, \tau) =
+ * \phi^o(\delta, \tau) + \phi^r(\delta, \tau)
+ * \f]
*
- * \f[
- * \frac{M\hat{f}(\rho,T)}{R T} = \phi(\delta, \tau) =
- * \phi^o(\delta, \tau) + \phi^r(\delta, \tau)
- * \f]
+ * where
*
- * where
+ * \f[
+ * \delta = \rho / \rho_c \quad \mathrm{and} \quad \tau = T_c / T
+ * \f]
*
- * \f[
- * \delta = \rho / \rho_c \mbox{\qquad and \qquad} \tau = T_c / T
- * \f]
+ * The following constants are assumed
*
- * The following constants are assumed
+ * \f[
+ * T_c = 647.096\mathrm{\;K}
+ * \f]
+ * \f[
+ * \rho_c = 322 \mathrm{\;kg\,m^{-3}}
+ * \f]
+ * \f[
+ * R/M = 0.46151805 \mathrm{\;kJ\,kg^{-1}\,K^{-1}}
+ * \f]
*
- * \f[
- * T_c = 647.096\mbox{\ K}
- * \f]
- * \f[
- * \rho_c = 322 \mbox{\ kg\ m$^{-3}$}
- * \f]
- * \f[
- * R/M = 0.46151805 \mbox{\ kJ\ kg$^{-1}$\ K$^{-1}$}
- * \f]
+ * The free energy is a unique single-valued function of the temperature and
+ * density over its entire range.
*
- * The free energy is a unique single-valued function of the temperature and density
- * over its entire range.
+ * Note, the base thermodynamic state for this class is the one used in the
+ * steam tables, i.e., the liquid at the triple point for water has the
+ * following properties:
*
- * Note, the base thermodynamic state for this class is the one
- * used in the steam tables, i.e., the liquid at the triple point
- * for water has the following properties:
+ * - u(273.16, rho) = 0.0
+ * - s(273.16, rho) = 0.0
+ * - psat(273.16) = 611.655 Pascal
+ * - rho(273.16, psat) = 999.793 kg m-3
*
- * - u(273.16, rho) = 0.0
- * - s(273.16, rho) = 0.0
- * - psat(273.16) = 611.655 Pascal
- * - rho(273.16, psat) = 999.793 kg m-3
- *
- * Therefore, to use this class within %Cantera, offsets to u() and s() must be used
- * to put the water class onto the same basis as other thermodynamic quantities.
- * For example, in the WaterSSTP class, these offsets are calculated in the following way.
- * The thermodynamic base state for water is set to the NIST basis here
- * by specifying constants EW_Offset and SW_Offset. These offsets are
- * calculated on the fly so that the following properties hold:
+ * Therefore, to use this class within %Cantera, offsets to u() and s() must
+ * be used to put the water class onto the same basis as other thermodynamic
+ * quantities. For example, in the WaterSSTP class, these offsets are
+ * calculated in the following way. The thermodynamic base state for water is
+ * set to the NIST basis here by specifying constants EW_Offset and SW_Offset.
+ * These offsets are calculated on the fly so that the following properties
+ * hold:
*
* - Delta_Hfo_idealGas(298.15, 1bar) = -241.826 kJ/gmol
* - So_idealGas(298.15, 1bar) = 188.835 J/gmolK
*
- * The offsets are calculated by actually computing the above quantities and then
- * calculating the correction factor.
+ * The offsets are calculated by actually computing the above quantities and
+ * then calculating the correction factor.
*
- * This class provides an interface to the #WaterPropsIAPWSphi class, which actually
- * calculates the \f$ \phi^o(\delta, \tau) \f$ and the \f$ \phi^r(\delta, \tau) \f$
- * polynomials in dimensionless form.
+ * This class provides an interface to the WaterPropsIAPWSphi class, which
+ * actually calculates the \f$ \phi^o(\delta, \tau) \f$ and the
+ * \f$ \phi^r(\delta, \tau) \f$ polynomials in dimensionless form.
*
- * All thermodynamic results from this class are returned in dimensional form. This
- * is because the gas constant (and molecular weight) used within this class is allowed to be potentially
- * different than that used elsewhere in %Cantera. Therefore, everything has to be
- * in dimensional units. Note, however, the thermodynamic basis is set to that used
- * in the steam tables. (u = s = 0 for liquid water at the triple point).
+ * All thermodynamic results from this class are returned in dimensional form.
+ * This is because the gas constant (and molecular weight) used within this
+ * class is allowed to be potentially different than that used elsewhere in
+ * %Cantera. Therefore, everything has to be in dimensional units. Note,
+ * however, the thermodynamic basis is set to that used in the steam tables.
+ * (u = s = 0 for liquid water at the triple point).
*
- * This class is not a %ThermoPhase. However, it does maintain an internal state of
- * the object that is dependent on temperature and density. The internal state
- * is characterized by an internally stored \f$ \tau\f$ and a \f$ \delta \f$ value,
- * and an iState value, which indicates whether the point is a liquid, a gas,
- * or a supercritical fluid.
- * Along with that the \f$ \tau\f$ and a \f$ \delta \f$ values are polynomials of
- * \f$ \tau\f$ and a \f$ \delta \f$ that are kept by the #WaterPropsIAPWSphi class.
- * Therefore, whenever \f$ \tau\f$ or \f$ \delta \f$ is changed, the function setState()
- * must be called in order for the internal state to be kept up to date.
+ * This class is not a %ThermoPhase. However, it does maintain an internal
+ * state of the object that is dependent on temperature and density. The
+ * internal state is characterized by an internally stored \f$ \tau\f$ and a
+ * \f$ \delta \f$ value, and an iState value, which indicates whether the
+ * point is a liquid, a gas, or a supercritical fluid. Along with that the
+ * \f$ \tau\f$ and a \f$ \delta \f$ values are polynomials of \f$ \tau\f$ and
+ * a \f$ \delta \f$ that are kept by the WaterPropsIAPWSphi class. Therefore,
+ * whenever \f$ \tau\f$ or \f$ \delta \f$ is changed, the function setState()
+ * must be called in order for the internal state to be kept up to date.
*
- * The class is pretty straightforward. However, one function deserves mention.
- * the #density() function calculates the density that is consistent with
- * a particular value of the temperature and pressure. It may therefore be
- * multivalued or potentially there may be no answer from this function. It therefore
- * takes a phase guess and a density guess as optional parameters. If no guesses are
- * supplied to density(), a gas phase guess is assumed. This may or may not be what
- * is wanted. Therefore, density() should usually at least be supplied with a phase
- * guess so that it may manufacture an appropriate density guess.
- * #density() manufactures the initial density guess, nondimensionalizes everything,
- * and then calls #WaterPropsIAPWSphi::dfind(), which does the iterative calculation
- * to find the density condition that matches the desired input pressure.
+ * The class is pretty straightforward. However, one function deserves
+ * mention. The density() function calculates the density that is consistent
+ * with a particular value of the temperature and pressure. It may therefore
+ * be multivalued or potentially there may be no answer from this function. It
+ * therefore takes a phase guess and a density guess as optional parameters.
+ * If no guesses are supplied to density(), a gas phase guess is assumed. This
+ * may or may not be what is wanted. Therefore, density() should usually at
+ * least be supplied with a phase guess so that it may manufacture an
+ * appropriate density guess. density() manufactures the initial density
+ * guess, nondimensionalizes everything, and then calls
+ * WaterPropsIAPWSphi::dfind(), which does the iterative calculation to find
+ * the density condition that matches the desired input pressure.
*
* The phase guess defines are located in the .h file. they are
*
@@ -133,45 +135,37 @@ namespace Cantera
* - WATER_LIQUID
* - WATER_SUPERCRIT
*
- * There are only three functions which actually change the value of the internal
- * state of this object after it's been instantiated
-
+ * There are only three functions which actually change the value of the
+ * internal state of this object after it's been instantiated
+ *
* - setState_TR(temperature, rho)
* - density(temperature, pressure, phase, rhoguess)
* - psat(temperature, waterState);
*
- * The setState_TR() is the main function that sets the temperature and rho value.
- * The density() function serves as a setState_TP() function, in that it sets
- * internal state to a temperature and pressure. However, note that this is potentially
- * multivalued. Therefore, we need to supply in addition a phase guess and a rho guess
- * to the input temperature and pressure.
- * The psat() function sets the internal state to the saturated liquid or saturated gas
- * state, depending on the waterState parameter.
+ * The setState_TR() is the main function that sets the temperature and rho
+ * value. The density() function serves as a setState_TP() function, in that
+ * it sets internal state to a temperature and pressure. However, note that
+ * this is potentially multivalued. Therefore, we need to supply in addition a
+ * phase guess and a rho guess to the input temperature and pressure. The
+ * psat() function sets the internal state to the saturated liquid or
+ * saturated gas state, depending on the waterState parameter.
*
- * Because the underlying object WaterPropsIAPWSphi is privately held, you can be
- * sure that the underlying state of this object doesn't change except due to the
- * three function calls listed above.
+ * Because the underlying object WaterPropsIAPWSphi is privately held, you can
+ * be sure that the underlying state of this object doesn't change except due
+ * to the three function calls listed above.
*
* @ingroup thermoprops
- *
*/
class WaterPropsIAPWS
{
public:
-
//! Base constructor
WaterPropsIAPWS();
//! Copy constructor
- /*!
- * @param right Object to be copied
- */
WaterPropsIAPWS(const WaterPropsIAPWS& right);
//! assignment constructor
- /*!
- * @param right Object to be copied
- */
WaterPropsIAPWS& operator=(const WaterPropsIAPWS& right);
//! destructor
@@ -229,16 +223,17 @@ public:
/*!
* Note, below T_c, this is a multivalued function.
*
- * The #density() function calculates the density that is consistent with
+ * The density() function calculates the density that is consistent with
* a particular value of the temperature and pressure. It may therefore be
- * multivalued or potentially there may be no answer from this function. It therefore
- * takes a phase guess and a density guess as optional parameters. If no guesses are
- * supplied to density(), a gas phase guess is assumed. This may or may not be what
- * is wanted. Therefore, density() should usually at least be supplied with a phase
- * guess so that it may manufacture an appropriate density guess.
- * #density() manufactures the initial density guess, nondimensionalizes everything,
- * and then calls #WaterPropsIAPWSphi::dfind(), which does the iterative calculation
- * to find the density condition that matches the desired input pressure.
+ * multivalued or potentially there may be no answer from this function.
+ * It therefore takes a phase guess and a density guess as optional
+ * parameters. If no guesses are supplied to density(), a gas phase guess
+ * is assumed. This may or may not be what is wanted. Therefore, density()
+ * should usually at least be supplied with a phase guess so that it may
+ * manufacture an appropriate density guess. density() manufactures the
+ * initial density guess, nondimensionalizes everything, and then calls
+ * WaterPropsIAPWSphi::dfind(), which does the iterative calculation to
+ * find the density condition that matches the desired input pressure.
*
* @param temperature: Kelvin
* @param pressure : Pressure in Pascals (Newton/m**2)
@@ -258,17 +253,17 @@ public:
/*!
* Note, below T_c, this is a multivalued function.
*
- * The #density() function calculates the density that is consistent with
- * a particular value of the temperature and pressure. It may therefore be
- * multivalued or potentially there may be no answer from this function. It therefore
- * takes a phase guess and a density guess as optional parameters. If no guesses are
-
- * supplied to density(), a gas phase guess is assumed. This may or may not be what
- * is wanted. Therefore, density() should usually at least be supplied with a phase
- * guess so that it may manufacture an appropriate density guess.
- * #density() manufactures the initial density guess, nondimensionalizes everything,
- * and then calls #WaterPropsIAPWSphi::dfind(), which does the iterative calculation
- * to find the density condition that matches the desired input pressure.
+ * The density() function calculates the density that is consistent with a
+ * particular value of the temperature and pressure. It may therefore be
+ * multivalued or potentially there may be no answer from this function.
+ * It therefore takes a phase guess and a density guess as optional
+ * parameters. If no guesses are supplied to density(), a gas phase guess
+ * is assumed. This may or may not be what is wanted. Therefore, density()
+ * should usually at least be supplied with a phase guess so that it may
+ * manufacture an appropriate density guess. density() manufactures the
+ * initial density guess, nondimensionalizes everything, and then calls
+ * WaterPropsIAPWSphi::dfind(), which does the iterative calculation to
+ * find the density condition that matches the desired input pressure.
*
* @param pressure : Pressure in Pascals (Newton/m**2)
* @param phase : guessed phase of water
@@ -306,13 +301,12 @@ public:
//! Returns the isochoric pressure derivative wrt temperature
/*!
- *
- * beta = M / (rho * Rgas) (d (pressure) / dT) at constant rho
+ * beta = M / (rho * Rgas) (d (pressure) / dT) at constant rho
*
* Note for ideal gases this is equal to one.
*
- * beta = delta (phi0_d() + phiR_d())
- * - tau delta (phi0_dt() + phiR_dt())
+ * beta = delta (phi0_d() + phiR_d())
+ * - tau delta (phi0_dt() + phiR_dt())
*/
doublereal coeffPresExp() const;
@@ -350,23 +344,23 @@ public:
*/
doublereal psat_est(doublereal temperature) const;
- //! This function returns the saturation pressure given the
- //! temperature as an input parameter, and sets the internal state to the saturated
+ //! This function returns the saturation pressure given the temperature as
+ //! an input parameter, and sets the internal state to the saturated
//! conditions.
/*!
- * Note this function will return the saturation pressure, given the temperature.
- * It will then set the state of the system to the saturation condition. The input
- * parameter waterState is used to either specify the liquid state or the
- * gas state at the desired temperature and saturated pressure.
+ * Note this function will return the saturation pressure, given the
+ * temperature. It will then set the state of the system to the
+ * saturation condition. The input parameter waterState is used to either
+ * specify the liquid state or the gas state at the desired temperature
+ * and saturated pressure.
*
- * If the input temperature, T, is above T_c, this routine will set the internal
- * state to T and the pressure to P_c. Then, return P_c.
+ * If the input temperature, T, is above T_c, this routine will set the
+ * internal state to T and the pressure to P_c. Then, return P_c.
*
* @param temperature input temperature (kelvin)
* @param waterState integer specifying the water state
*
- * @return Returns the saturation pressure
- * units = Pascal
+ * @return Returns the saturation pressure. units = Pascal
*/
doublereal psat(doublereal temperature, int waterState = WATER_LIQUID);
@@ -386,13 +380,13 @@ public:
//! Returns the Phase State flag for the current state of the object
/*!
- * @param checkState If true, this function does a complete check to see where
- * in parameters space we are
+ * @param checkState If true, this function does a complete check to see
+ * where in parameters space we are
*
* There are three values:
- * WATER_GAS below the critical temperature but below the critical density
- * WATER_LIQUID below the critical temperature but above the critical density
- * WATER_SUPERCRIT above the critical temperature
+ * - WATER_GAS below the critical temperature but below the critical density
+ * - WATER_LIQUID below the critical temperature but above the critical density
+ * - WATER_SUPERCRIT above the critical temperature
*/
int phaseState(bool checkState = false) const ;
@@ -423,8 +417,6 @@ public:
private:
//! Calculate the dimensionless temp and rho and store internally.
/*!
- * Private routine
- *
* @param temperature input temperature (kelvin)
* @param rho density in kg m-3
*/
@@ -432,7 +424,7 @@ private:
//! Utility routine in the calculation of the saturation pressure
/*!
- * Private routine
+ * Calculate the Gibbs free energy in mks units of J kmol-1 K-1.
*
* @param temperature temperature (kelvin)
* @param pressure pressure (Pascal)
@@ -445,8 +437,6 @@ private:
//! Utility routine in the calculation of the saturation pressure
/*!
- * Private routine
- *
* @param temperature temperature (kelvin)
* @param pressure pressure (Pascal)
* @param densLiq Output density of liquid
@@ -456,8 +446,6 @@ private:
void corr1(doublereal temperature, doublereal pressure, doublereal& densLiq,
doublereal& densGas, doublereal& pcorr);
-private:
-
//! pointer to the underlying object that does the calculations.
WaterPropsIAPWSphi* m_phi;
diff --git a/include/cantera/thermo/WaterPropsIAPWSphi.h b/include/cantera/thermo/WaterPropsIAPWSphi.h
index 8078cba2e..c549cf08c 100644
--- a/include/cantera/thermo/WaterPropsIAPWSphi.h
+++ b/include/cantera/thermo/WaterPropsIAPWSphi.h
@@ -1,9 +1,10 @@
/**
* @file WaterPropsIAPWSphi.h
- * Header for Lowest level of the classes which support a real water model
- * (see class \link Cantera::WaterPropsIAPWS WaterPropsIAPWS\endlink and class \link WaterPropsIAPWSphi WaterPropsIAPWSphi\endlink).
+ * Header for Lowest level of the classes which support a real water model
+ * (see class \link Cantera::WaterPropsIAPWS WaterPropsIAPWS\endlink and class
+ * \link Cantera::WaterPropsIAPWSphi WaterPropsIAPWSphi\endlink).
*
- * This class calculates dimensionless quantities.
+ * This class calculates dimensionless quantities.
*/
/*
* Copyright (2006) Sandia Corporation. Under the terms of
@@ -18,36 +19,31 @@
namespace Cantera
{
+//! Low level class for the real description of water.
/*!
- * the WaterPropsIAPSWSphi class support low level calls for
- * the real description of water.
- *
- * The reference is W. Wagner, A. Prub, "The IAPWS Formulation 1995 for the Thermodynamic
- * Properties of Ordinary Water Substance for General and Scientific Use,"
- * J. Phys. Chem. Ref. Dat, 31, 387, 2002.
+ * The reference is W. Wagner, A. Prub, "The IAPWS Formulation 1995 for the
+ * Thermodynamic Properties of Ordinary Water Substance for General and
+ * Scientific Use," J. Phys. Chem. Ref. Dat, 31, 387, 2002.
*
* Units Note: This class works with reduced units exclusively.
*/
class WaterPropsIAPWSphi
{
-
public:
-
//! Base constructor
WaterPropsIAPWSphi();
//! Calculate the Phi function, which is the base function
/*!
- * The phi function is basically the helmholtz free energy
- * Eqn. (6.4)
- * All internal polynomials are recalculated.
+ * The phi function is basically the helmholtz free energy Eqn. (6.4) All
+ * internal polynomials are recalculated.
*
* @param tau Dimensionless temperature = T_c/T
* @param delta Dimensionless density = delta = rho / Rho_c
*/
doublereal phi(doublereal tau, doublereal delta);
- //! Delta derivative of phi
+ //! Calculate derivative of phi wrt delta
/*!
* @param tau Dimensionless temperature = T_c/T
* @param delta Dimensionless density = delta = rho / Rho_c
@@ -83,7 +79,6 @@ public:
//! Calculate the dimensionless pressure at tau and delta;
/*!
- *
* pM/(rhoRT) = delta * phi_d() = 1.0 + delta phiR_d()
*
* @param tau Dimensionless temperature = T_c/T
@@ -114,10 +109,10 @@ public:
doublereal dimdpdT(doublereal tau, doublereal delta);
/**
- * This program computes the reduced density, given the reduced pressure
- * and the reduced temperature, tau. It takes an initial guess, deltaGuess.
- * DeltaGuess is important as this is a multivalued function below the
- * critical point.
+ * This function computes the reduced density, given the reduced pressure
+ * and the reduced temperature, tau. It takes an initial guess,
+ * deltaGuess. DeltaGuess is important as this is a multivalued function
+ * below the critical point.
*
* @param p_red Value of the dimensionless pressure
* @param tau Dimensionless temperature = T_c/T
@@ -128,37 +123,24 @@ public:
*/
doublereal dfind(doublereal p_red, doublereal tau, doublereal deltaGuess);
- /**
- * Calculate the dimensionless gibbs free energy
- */
+ //! Calculate the dimensionless gibbs free energy
doublereal gibbs_RT() const;
- /**
- * Calculate the dimensionless enthalpy, h/RT
- */
+ //! Calculate the dimensionless enthalpy, h/RT
doublereal enthalpy_RT() const;
- /**
- * Calculate the dimensionless entropy, s/R
- */
+ //! Calculate the dimensionless entropy, s/R
doublereal entropy_R() const;
- /**
- * Calculate the dimensionless internal energy, u/RT
- */
+ //! Calculate the dimensionless internal energy, u/RT
doublereal intEnergy_RT() const;
- /**
- * Calculate the dimensionless constant volume heat capacity, Cv/R
- */
+ //! Calculate the dimensionless constant volume heat capacity, Cv/R
doublereal cv_R() const;
- /**
- * Calculate the dimensionless constant pressure heat capacity, Cv/R
- */
+ //! Calculate the dimensionless constant pressure heat capacity, Cv/R
doublereal cp_R() const;
-
//! Calculates internal polynomials in tau and delta.
/*!
* This routine is used to store the internal state of tau and delta
@@ -169,46 +151,48 @@ public:
*/
void tdpolycalc(doublereal tau, doublereal delta);
- //! Return the value of phiR(), res
+ /*!
+ * Calculate Equation 6.6 for phiR, the residual part of the
+ * dimensionless Helmholtz free energy.
+ */
doublereal phiR() const;
private:
-
- //! nau calculation
+ //! Calculate Equation 6.5 for phi0, the ideal gas part of the
+ //! dimensionless Helmholtz free energy.
doublereal phi0() const;
- //! calculation of d_phiR/d_d
+ //! Calculate d_phiR_d(delta), the first derivative of phiR wrt delta
doublereal phiR_d() const;
- //! calculation of d_nau/d_d
+ //! Calculate d_phi0_d(delta), the first derivative of phi0 wrt delta
doublereal phi0_d() const;
- //! calculation of d2_res/d_dd
+ //! Calculate d2_phiR_dd(delta), the second derivative of phiR wrt delta
doublereal phiR_dd() const;
- //! calculation of d2_nau/d_dd
+ //! Calculate d2_phi0_dd(delta), the second derivative of phi0 wrt delta
doublereal phi0_dd() const;
- //! calculation of d_nau/d_t
+ //! Calculate d_phi0/d(tau)
doublereal phi0_t() const;
- //! calculation of d_res/d_t
+ //! Calculate Equation 6.6 for dphiRdtau, the derivative residual part of
+ //! the dimensionless Helmholtz free energy wrt temperature
doublereal phiR_t() const;
- //! calculation of d2_res/d_tt
+ //! Calculate Equation 6.6 for dphiRdtau, the second derivative residual
+ //! part of the dimensionless Helmholtz free energy wrt temperature
doublereal phiR_tt() const;
- //! calculation of d2_nau/d_tt
+ //! Calculate d2_phi0/dtau2
doublereal phi0_tt() const;
- //! calculation of d2_res/d_dt
+ //! Calculate the mixed derivative d2_phiR/(dtau ddelta)
doublereal phiR_dt() const;
- //! calculation of d2_nau/d_dt
+ //! Calculate the mixed derivative d2_phi0/(dtau ddelta)
doublereal phi0_dt() const;
/**
- * intCheck() calculates all of the functions at a one point and
- * prints out the result. It's used for conducting the internal
- * check.
+ * Calculates all of the functions at a one point and prints out the
+ * result. It's used for conducting the internal check.
*
* @param tau Dimensionless temperature = T_c/T
* @param delta Dimensionless density = delta = rho / Rho_c
*/
void intCheck(doublereal tau, doublereal delta);
-private:
-
//! Value of internally calculated polynomials of powers of TAU
doublereal TAUp[52];
diff --git a/src/thermo/WaterProps.cpp b/src/thermo/WaterProps.cpp
index e4a571aaa..61bfa8373 100644
--- a/src/thermo/WaterProps.cpp
+++ b/src/thermo/WaterProps.cpp
@@ -17,28 +17,21 @@
namespace Cantera
{
-
-
-/*
- * default constructor -> object owns its own water evaluator
- */
WaterProps::WaterProps():
m_waterIAPWS(0),
m_own_sub(false)
{
+ // object owns its own water evaluator
m_waterIAPWS = new WaterPropsIAPWS();
m_own_sub = true;
}
-/*
- * constructor -> object in slave mode, It doesn't own its
- * own water evaluator.
- */
WaterProps::WaterProps(PDSS_Water* wptr) :
m_waterIAPWS(0),
m_own_sub(false)
{
if (wptr) {
+ // object in slave mode; it doesn't own its own water evaluator.
m_waterIAPWS = wptr->getWater();
m_own_sub = false;
} else {
@@ -60,9 +53,6 @@ WaterProps::WaterProps(WaterPropsIAPWS* waterIAPWS) :
}
}
-/**
- * Copy constructor
- */
WaterProps::WaterProps(const WaterProps& b) :
m_waterIAPWS(0),
m_own_sub(false)
@@ -70,9 +60,6 @@ WaterProps::WaterProps(const WaterProps& b) :
*this = b;
}
-/**
- * Destructor
- */
WaterProps::~WaterProps()
{
if (m_own_sub) {
@@ -80,9 +67,6 @@ WaterProps::~WaterProps()
}
}
-/**
- * Assignment operator
- */
WaterProps& WaterProps::operator=(const WaterProps& b)
{
if (&b == this) {
@@ -106,27 +90,6 @@ WaterProps& WaterProps::operator=(const WaterProps& b)
return *this;
}
-// Simple calculation of water density at atmospheric pressure.
-// Valid up to boiling point.
-/*
- * This formulation has no dependence on the pressure and shouldn't
- * be used where accuracy is needed.
- *
- * @param T temperature in kelvin
- * @param P Pressure in pascal
- * @param ifunc changes what's returned
- *
- * @return value returned depends on ifunc value:
- * ifunc = 0 Returns the density in kg/m^3
- * ifunc = 1 returns the derivative of the density wrt T.
- * ifunc = 2 returns the 2nd derivative of the density wrt T
- * ifunc = 3 returns the derivative of the density wrt P.
- *
- * Verification:
- * Agrees with the CRC values (6-10) for up to 4 sig digits.
- *
- * units = returns density in kg m-3.
- */
doublereal WaterProps::density_T(doublereal T, doublereal P, int ifunc)
{
doublereal Tc = T - 273.15;
@@ -179,37 +142,6 @@ doublereal WaterProps::density_T(doublereal T, doublereal P, int ifunc)
return rho;
}
-// Bradley-Pitzer equation for the dielectric constant
-// of water as a function of temperature and pressure.
-/*!
- * Returns the dimensionless relative dielectric constant
- * and its derivatives.
- *
- * ifunc = 0 value
- * ifunc = 1 Temperature derivative
- * ifunc = 2 second temperature derivative
- * ifunc = 3 return pressure first derivative
- *
- * Range of validity 0 to 350C, 0 to 1 kbar pressure
- *
- * @param T temperature (kelvin)
- * @param P_pascal pressure in pascal
- * @param ifunc changes what's returned from the function
- *
- * @return Depends on the value of ifunc:
- * ifunc = 0 return value
- * ifunc = 1 return temperature derivative
- * ifunc = 2 return second temperature derivative
- * ifunc = 3 return pressure first derivative
- *
- * Validation:
- * Numerical experiments indicate that this function agrees with
- * the Archer and Wang data in the CRC p. 6-10 to all 4 significant
- * digits shown (0 to 100C).
- *
- * value at 25C, relEps = 78.38
- *
- */
doublereal WaterProps::relEpsilon(doublereal T, doublereal P_pascal,
int ifunc)
{
@@ -397,24 +329,11 @@ doublereal WaterProps::satPressure(doublereal T)
return m_waterIAPWS->psat(T);
}
-// Returns the density of water
-/*
- * This function sets the internal temperature and pressure
- * of the underlying object at the same time.
- *
- * @param T Temperature (kelvin)
- * @param P pressure (pascal)
- */
doublereal WaterProps::density_IAPWS(doublereal temp, doublereal press)
{
return m_waterIAPWS->density(temp, press, WATER_LIQUID);
}
-// Returns the density of water
-/*
- * This function uses the internal state of the
- * underlying water object
- */
doublereal WaterProps::density_IAPWS() const
{
return m_waterIAPWS->density();
@@ -440,10 +359,6 @@ doublereal WaterProps::isothermalCompressibility_IAPWS(doublereal temp, doublere
return m_waterIAPWS->isothermalCompressibility();
}
-
-
-
-
// Parameters for the viscosityWater() function
// \cond
@@ -467,25 +382,8 @@ const doublereal presStar = 22.115E6; // Pa
const doublereal muStar = 55.071E-6; //Pa s
// \endcond
-// Returns the viscosity of water at the current conditions
-// (kg/m/s)
-/*
- * This function calculates the value of the viscosity of pure
- * water at the current T and P.
- *
- * The formulas used are from the paper
- *
- * J. V. Sengers, J. T. R. Watson, "Improved International
- * Formulations for the Viscosity and Thermal Conductivity of
- * Water Substance", J. Phys. Chem. Ref. Data, 15, 1291 (1986).
- *
- * The formulation is accurate for all temperatures and pressures,
- * for steam and for water, even near the critical point.
- * Pressures above 500 MPa and temperature above 900 C are suspect.
- */
doublereal WaterProps::viscosityWater() const
{
-
doublereal temp = m_waterIAPWS->temperature();
doublereal dens = m_waterIAPWS->density();
@@ -548,21 +446,6 @@ doublereal WaterProps::viscosityWater() const
return mubar * muStar;
}
-//! Returns the thermal conductivity of water at the current conditions
-//! (W/m/K)
-/*!
- * This function calculates the value of the thermal conductivity of
- * water at the current T and P.
- *
- * The formulas used are from the paper
- * J. V. Sengers, J. T. R. Watson, "Improved International
- * Formulations for the Viscosity and Thermal Conductivity of
- * Water Substance", J. Phys. Chem. Ref. Data, 15, 1291 (1986).
- *
- * The formulation is accurate for all temperatures and pressures,
- * for steam and for water, even near the critical point.
- * Pressures above 500 MPa and temperature above 900 C are suspect.
- */
doublereal WaterProps::thermalConductivityWater() const
{
static const doublereal Tstar = 647.27;
@@ -658,5 +541,4 @@ doublereal WaterProps::thermalConductivityWater() const
return (lambda0bar * lambda1bar + lambda2bar) * lambdastar;
}
-
}
diff --git a/src/thermo/WaterPropsIAPWS.cpp b/src/thermo/WaterPropsIAPWS.cpp
index c022bcaaf..339a71501 100644
--- a/src/thermo/WaterPropsIAPWS.cpp
+++ b/src/thermo/WaterPropsIAPWS.cpp
@@ -49,10 +49,6 @@ WaterPropsIAPWS:: WaterPropsIAPWS() :
m_phi = new WaterPropsIAPWSphi();
}
-// Copy constructor
-/*
- * @param b Object to be copied
- */
WaterPropsIAPWS::WaterPropsIAPWS(const WaterPropsIAPWS& b) :
m_phi(0),
tau(b.tau),
@@ -63,10 +59,6 @@ WaterPropsIAPWS::WaterPropsIAPWS(const WaterPropsIAPWS& b) :
m_phi->tdpolycalc(tau, delta);
}
-// assignment constructor
-/*
- * @param right Object to be copied
- */
WaterPropsIAPWS& WaterPropsIAPWS::operator=(const WaterPropsIAPWS& b)
{
if (this == &b) {
@@ -79,21 +71,12 @@ WaterPropsIAPWS& WaterPropsIAPWS::operator=(const WaterPropsIAPWS& b)
return *this;
}
-// destructor
WaterPropsIAPWS::~WaterPropsIAPWS()
{
delete m_phi;
m_phi = 0;
}
-/*
- * Calculate the dimensionless temp and rho and store internally.
- *
- * @param temperature input temperature (kelvin)
- * @param rho density in kg m-3
- *
- * this is a private function
- */
void WaterPropsIAPWS::calcDim(doublereal temperature, doublereal rho)
{
tau = T_c / temperature;
@@ -112,8 +95,6 @@ void WaterPropsIAPWS::calcDim(doublereal temperature, doublereal rho)
}
}
-// Calculate the Helmholtz free energy in mks units of J kmol-1 K-1,
-// using the last temperature and density
doublereal WaterPropsIAPWS::helmholtzFE() const
{
doublereal retn = m_phi->phi(tau, delta);
@@ -122,12 +103,6 @@ doublereal WaterPropsIAPWS::helmholtzFE() const
return retn * RT;
}
-/*
- * Calculate the pressure (Pascals), using the
- * current internally stored temperature and density
- * Temperature: kelvin
- * rho: density in kg m-3
- */
doublereal WaterPropsIAPWS::pressure() const
{
doublereal retn = m_phi->pressureM_rhoRT(tau, delta);
@@ -136,25 +111,9 @@ doublereal WaterPropsIAPWS::pressure() const
return retn * rho * Rgas * temperature/M_water;
}
-/*
- * Calculates the density given the temperature and the pressure,
- * and a guess at the density. Note, below T_c, this is a
- * multivalued function.
- *
- * parameters:
- * temperature: Kelvin
- * pressure : Pressure in Pascals (Newton/m**2)
- * phase : guessed phase of water
- * : -1: no guessed phase
- * rhoguess : guessed density of the water
- * : -1.0 no guessed density
- *
- * If a problem is encountered, a negative 1 is returned.
- */
doublereal WaterPropsIAPWS::density(doublereal temperature, doublereal pressure,
int phase, doublereal rhoguess)
{
-
doublereal deltaGuess = 0.0;
if (rhoguess == -1.0) {
if (phase != -1) {
@@ -211,32 +170,6 @@ doublereal WaterPropsIAPWS::density(doublereal temperature, doublereal pressure,
return density_retn;
}
-// Calculates the density given the temperature and the pressure,
-// and a guess at the density, while not changing the internal state
-/*
- * Note, below T_c, this is a multivalued function.
- *
- * The #density() function calculates the density that is consistent with
- * a particular value of the temperature and pressure. It may therefore be
- * multivalued or potentially there may be no answer from this function. It therefore
- * takes a phase guess and a density guess as optional parameters. If no guesses are
- *
- * supplied to density(), a gas phase guess is assumed. This may or may not be what
- * is wanted. Therefore, density() should usually at least be supplied with a phase
- * guess so that it may manufacture an appropriate density guess.
- * #density() manufactures the initial density guess, nondimensionalizes everything,
- * and then calls #WaterPropsIAPWSphi::dfind(), which does the iterative calculation
- * to find the density condition that matches the desired input pressure.
- *
- * @param pressure : Pressure in Pascals (Newton/m**2)
- * @param phase : guessed phase of water
- * : -1: no guessed phase
- * @param rhoguess : guessed density of the water
- * : -1.0 no guessed density
- * @return
- * Returns the density. If an error is encountered in the calculation
- * the value of -1.0 is returned.
- */
doublereal WaterPropsIAPWS::density_const(doublereal pressure,
int phase, doublereal rhoguess) const
{
@@ -299,40 +232,18 @@ doublereal WaterPropsIAPWS::density_const(doublereal pressure,
return density_retn;
}
-// Returns the density (kg m-3)
-/*
- * The density is an independent variable in the underlying equation of state
- *
- * @return Returns the density (kg m-3)
- */
doublereal WaterPropsIAPWS::density() const
{
return delta * Rho_c;
}
-// Returns the temperature (Kelvin)
-/*
- * @return Returns the internally stored temperature
- */
doublereal WaterPropsIAPWS::temperature() const
{
return T_c / tau;
}
-/*
- * psat_est provides a rough estimate of the saturation
- * pressure given the temperature. This is used as an initial
- * guess for refining the pressure.
- *
- * Input
- * temperature (kelvin)
- *
- * return:
- * psat (Pascals)
- */
doublereal WaterPropsIAPWS::psat_est(doublereal temperature) const
{
-
static const doublereal A[8] = {
-7.8889166E0,
2.5514255E0,
@@ -366,11 +277,6 @@ doublereal WaterPropsIAPWS::psat_est(doublereal temperature) const
return ps;
}
-/*
- * Returns the coefficient of isothermal compressibility
- * of temperature and pressure.
- * kappa = - d (ln V) / dP at constant T.
- */
doublereal WaterPropsIAPWS::isothermalCompressibility() const
{
doublereal dpdrho_val = dpdrho();
@@ -378,13 +284,6 @@ doublereal WaterPropsIAPWS::isothermalCompressibility() const
return 1.0 / (dens * dpdrho_val);
}
-// Returns the value of dp / drho at constant T at the current
-// state of the object
-/*
- * units - Joules / kg
- *
- * @return returns dpdrho
- */
doublereal WaterPropsIAPWS::dpdrho() const
{
doublereal retn = m_phi->dimdpdrho(tau, delta);
@@ -392,26 +291,11 @@ doublereal WaterPropsIAPWS::dpdrho() const
return retn * Rgas * temperature / M_water;
}
-// Returns the isochoric pressure derivative wrt temperature
-/*
- * beta = M / (rho * Rgas) (d (pressure) / dT) at constant rho
- *
- * Note for ideal gases this is equal to one.
- *
- * beta = delta (phi0_d() + phiR_d())
- * - tau delta (phi0_dt() + phiR_dt())
- */
doublereal WaterPropsIAPWS:: coeffPresExp() const
{
return m_phi->dimdpdT(tau, delta);
}
-// Returns the coefficient of thermal expansion.
-/*
- * alpha = d (ln V) / dT at constant P.
- *
- * @return Returns the coefficient of thermal expansion
- */
doublereal WaterPropsIAPWS:: coeffThermExp() const
{
doublereal kappa = isothermalCompressibility();
@@ -420,8 +304,6 @@ doublereal WaterPropsIAPWS:: coeffThermExp() const
return kappa * dens * Rgas * beta / M_water;
}
-// Calculate the Gibbs free energy in mks units of J kmol-1 K-1.
-// using the last temperature and density
doublereal WaterPropsIAPWS::Gibbs() const
{
doublereal gRT = m_phi->gibbs_RT();
@@ -429,20 +311,6 @@ doublereal WaterPropsIAPWS::Gibbs() const
return gRT * Rgas * temperature;
}
-
-// Utility routine in the calculation of the saturation pressure
-/*
- * Private routine
- *
- * Calculate the Gibbs free energy in mks units of
- * J kmol-1 K-1.
- *
- * @param temperature temperature (kelvin)
- * @param pressure pressure (Pascal)
- * @param densLiq Output density of liquid
- * @param densGas output Density of gas
- * @param delGRT output delGRT
- */
void WaterPropsIAPWS::
corr(doublereal temperature, doublereal pressure, doublereal& densLiq,
doublereal& densGas, doublereal& delGRT)
@@ -469,16 +337,6 @@ corr(doublereal temperature, doublereal pressure, doublereal& densLiq,
delGRT = gibbsLiqRT - gibbsGasRT;
}
-// Utility routine in the calculation of the saturation pressure
-/*
- * Private routine
- *
- * @param temperature temperature (kelvin)
- * @param pressure pressure (Pascal)
- * @param densLiq Output density of liquid
- * @param densGas output Density of gas
- * @param pcorr output corrected pressure
- */
void WaterPropsIAPWS::
corr1(doublereal temperature, doublereal pressure, doublereal& densLiq,
doublereal& densGas, doublereal& pcorr)
@@ -508,25 +366,6 @@ corr1(doublereal temperature, doublereal pressure, doublereal& densLiq,
pcorr = rhs * Rgas * temperature / M_water;
}
-
-// This function returns the saturation pressure given the
-// temperature as an input parameter, and sets the internal state to the saturated
-// conditions.
-/*
- * Note this function will return the saturation pressure, given the temperature.
- * It will then set the state of the system to the saturation condition. The input
- * parameter waterState is used to either specify the liquid state or the
- * gas state at the desired temperature and saturated pressure.
- *
- * If the input temperature, T, is above T_c, this routine will set the internal
- * state to T and the pressure to P_c. Then, return P_c.
- *
- * @param temperature input temperature (kelvin)
- * @param waterState integer specifying the water state
- *
- * @return Returns the saturation pressure
- * units = Pascal
- */
doublereal WaterPropsIAPWS::psat(doublereal temperature, int waterState)
{
static int method = 1;
@@ -569,16 +408,6 @@ doublereal WaterPropsIAPWS::psat(doublereal temperature, int waterState)
return p;
}
-// Returns the Phase State flag for the current state of the object
-/*
- * @param checkState If true, this function does a complete check to see where
- * in parameter space we are
- *
- * There are three values:
- * WATER_GAS below the critical temperature but below the critical density
- * WATER_LIQUID below the critical temperature but above the critical density
- * WATER_SUPERCRIT above the critical temperature
- */
int WaterPropsIAPWS::phaseState(bool checkState) const
{
if (checkState) {
@@ -624,11 +453,6 @@ int WaterPropsIAPWS::phaseState(bool checkState) const
return iState;
}
-// Return the value of the density at the water spinodal point (on the liquid side)
-// for the current temperature.
-/*
- * @return returns the density with units of kg m-3
- */
doublereal WaterPropsIAPWS::densSpinodalWater() const
{
doublereal temperature = T_c/tau;
@@ -721,11 +545,6 @@ doublereal WaterPropsIAPWS::densSpinodalWater() const
return dens_new;
}
-// Return the value of the density at the water spinodal point (on the gas side)
-// for the current temperature.
-/*
- * @return returns the density with units of kg m-3
- */
doublereal WaterPropsIAPWS::densSpinodalSteam() const
{
doublereal temperature = T_c/tau;
@@ -820,20 +639,12 @@ doublereal WaterPropsIAPWS::densSpinodalSteam() const
return dens_new;
}
-/*
- * Sets the internal state of the object to the
- * specified temperature and density.
- */
void WaterPropsIAPWS::setState_TR(doublereal temperature, doublereal rho)
{
calcDim(temperature, rho);
m_phi->tdpolycalc(tau, delta);
}
-/*
- * Calculate the enthalpy in mks units of
- * J kmol-1 K-1.
- */
doublereal WaterPropsIAPWS::enthalpy() const
{
doublereal temperature = T_c/tau;
@@ -841,10 +652,6 @@ doublereal WaterPropsIAPWS::enthalpy() const
return hRT * Rgas * temperature;
}
-/*
- * Calculate the internal Energy in mks units of
- * J kmol-1 K-1.
- */
doublereal WaterPropsIAPWS::intEnergy() const
{
doublereal temperature = T_c / tau;
@@ -852,36 +659,24 @@ doublereal WaterPropsIAPWS::intEnergy() const
return uRT * Rgas * temperature;
}
-/*
- * Calculate the enthalpy in mks units of356
- * J kmol-1 K-1.
- */
doublereal WaterPropsIAPWS::entropy() const
{
doublereal sR = m_phi->entropy_R();
return sR * Rgas;
}
-/*
- * Calculate heat capacity at constant volume
- * J kmol-1 K-1.
- */
doublereal WaterPropsIAPWS::cv() const
{
doublereal cvR = m_phi->cv_R();
return cvR * Rgas;
}
-// Calculate the constant pressure heat capacity in mks units of J kmol-1 K-1
-// at the last temperature and density
doublereal WaterPropsIAPWS::cp() const
{
doublereal cpR = m_phi->cp_R();
return cpR * Rgas;
}
-// Calculate the molar volume (kmol m-3)
-// at the last temperature and density
doublereal WaterPropsIAPWS::molarVolume() const
{
doublereal rho = delta * Rho_c;
diff --git a/src/thermo/WaterPropsIAPWSphi.cpp b/src/thermo/WaterPropsIAPWSphi.cpp
index 1a8cbc051..ffa379461 100644
--- a/src/thermo/WaterPropsIAPWSphi.cpp
+++ b/src/thermo/WaterPropsIAPWSphi.cpp
@@ -1,7 +1,8 @@
/**
* @file WaterPropsIAPWSphi.cpp
- * Definitions for Lowest level of the classes which support a real water model
- * (see class \link Cantera::WaterPropsIAPWS WaterPropsIAPWS\endlink and class #WaterPropsIAPWSphi).
+ * Definitions for Lowest level of the classes which support a real water
+ * model (see class \link Cantera::WaterPropsIAPWS WaterPropsIAPWS\endlink and
+ * class \link Cantera::WaterPropsIAPWSphi WaterPropsIAPWSphi \endlink).
*/
/*
* Copyright (2006) Sandia Corporation. Under the terms of
@@ -242,6 +243,7 @@ static const int tiR[55] = {
1,
4 // 54
};
+
static const doublereal ni[57] = {
+0.0,
+0.12533547935523E-1, // 1
@@ -302,7 +304,6 @@ static const doublereal ni[57] = {
+0.31806110878444E0 // 56
};
-
static const doublereal alphai[3] = {
+20.,
+20.,
@@ -363,9 +364,6 @@ static const doublereal Bbetai[2] = {
};
// \endcond
-/*
- * Constructor for the object.
- */
WaterPropsIAPWSphi::WaterPropsIAPWSphi() :
TAUsave(-1.0),
TAUsqrt(-1.0),
@@ -379,11 +377,6 @@ WaterPropsIAPWSphi::WaterPropsIAPWSphi() :
}
}
-/*
- * intCheck() calculates all of the functions at a one point and
- * prints out the result. It's used for conducting the internal
- * check.
- */
void WaterPropsIAPWSphi::intCheck(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -428,10 +421,6 @@ void WaterPropsIAPWSphi::check2()
intCheck(tau, delta);
}
-/*
- * Calculate the polynomials in tau and delta, and store them in static
- * storage.
- */
void WaterPropsIAPWSphi::tdpolycalc(doublereal tau, doublereal delta)
{
if ((tau != TAUsave) || 1) {
@@ -451,10 +440,6 @@ void WaterPropsIAPWSphi::tdpolycalc(doublereal tau, doublereal delta)
}
}
-/*
- * Calculate Eqn. 6.5 for phi0, the ideal gas part of the
- * dimensionless Helmholtz free energy.
- */
doublereal WaterPropsIAPWSphi::phi0() const
{
doublereal tau = TAUsave;
@@ -469,13 +454,6 @@ doublereal WaterPropsIAPWSphi::phi0() const
return retn;
}
-/*
- * Calculate Eqn. 6.6 for phiR, the residual part of the
- * dimensionless Helmholtz free energy.
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR() const
{
doublereal tau = TAUsave;
@@ -532,10 +510,6 @@ doublereal WaterPropsIAPWSphi::phiR() const
return val;
}
-/*
- * Calculate the Phi function, which is basically the helmholtz free energy
- * Eqn. (6.4)
- */
doublereal WaterPropsIAPWSphi::phi(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -544,14 +518,6 @@ doublereal WaterPropsIAPWSphi::phi(doublereal tau, doublereal delta)
return nau + res;
}
-
-/*
- * Calculate d_phiR_d(delta), the first derivative of phiR
- * wrt delta
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR_d() const
{
doublereal tau = TAUsave;
@@ -622,24 +588,12 @@ doublereal WaterPropsIAPWSphi::phiR_d() const
return val;
}
-/*
- * Calculate d_phi0_d(delta), the first derivative of phi0
- * wrt delta
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phi0_d() const
{
doublereal delta = DELTAsave;
return 1.0/delta;
}
-/*
- * Calculate the dPhidDelta function, which is basically the derivative
- * of helmholtz free energy wrt delta
- * Eqn. (6.4)
- */
doublereal WaterPropsIAPWSphi::phi_d(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -648,13 +602,6 @@ doublereal WaterPropsIAPWSphi::phi_d(doublereal tau, doublereal delta)
return nau + res;
}
-/*
- * Calculate the dimensionless pressure at tau and delta;
- *
- * p/(rhoRT) = delta * phi_d()
- *
- * note: this is done so much, we have a separate routine.
- */
doublereal WaterPropsIAPWSphi::pressureM_rhoRT(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -662,13 +609,6 @@ doublereal WaterPropsIAPWSphi::pressureM_rhoRT(doublereal tau, doublereal del
return 1.0 + delta * res;
}
-/*
- * Calculate d2_phiR_dd(delta), the second derivative of phiR
- * wrt delta
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR_dd() const
{
doublereal tau = TAUsave;
@@ -769,24 +709,12 @@ doublereal WaterPropsIAPWSphi::phiR_dd() const
return val;
}
-/*
- * Calculate d2_phi0_dd(delta), the second derivative of phi0
- * wrt delta
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phi0_dd() const
{
doublereal delta = DELTAsave;
return -1.0/(delta*delta);
}
-/*
- * Calculate the d2_PhidDelta2 function, which is the second derivative
- * of helmholtz free energy wrt delta
- * Eqn. (6.4)
- */
doublereal WaterPropsIAPWSphi::phi_dd(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -811,9 +739,6 @@ doublereal WaterPropsIAPWSphi::dimdpdT(doublereal tau, doublereal delta)
return (1.0 + delta * res1) - tau * delta * (res2);
}
-/*
- * Calculate d_phi0/d(tau)
- */
doublereal WaterPropsIAPWSphi::phi0_t() const
{
doublereal tau = TAUsave;
@@ -826,13 +751,6 @@ doublereal WaterPropsIAPWSphi::phi0_t() const
return retn;
}
-/*
- * Calculate Eqn. 6.6 for dphiRdtau, the derivative residual part of the
- * dimensionless Helmholtz free energy wrt temperature
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR_t() const
{
doublereal tau = TAUsave;
@@ -898,11 +816,6 @@ doublereal WaterPropsIAPWSphi::phiR_t() const
return val;
}
-/*
- * Calculate the dPhidtau function, which is basically the derivative
- * of helmholtz free energy wrt tau
- * Eqn. (6.4)
- */
doublereal WaterPropsIAPWSphi::phi_t(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -911,9 +824,6 @@ doublereal WaterPropsIAPWSphi::phi_t(doublereal tau, doublereal delta)
return nau + res;
}
-/*
- * Calculate d2_phi0/dtau2
- */
doublereal WaterPropsIAPWSphi::phi0_tt() const
{
doublereal tau = TAUsave;
@@ -927,13 +837,6 @@ doublereal WaterPropsIAPWSphi::phi0_tt() const
return retn;
}
-/*
- * Calculate Eqn. 6.6 for dphiRdtau, the second derivative residual part of the
- * dimensionless Helmholtz free energy wrt temperature
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR_tt() const
{
doublereal tau = TAUsave;
@@ -1010,11 +913,6 @@ doublereal WaterPropsIAPWSphi::phiR_tt() const
return val;
}
-/*
- * Calculate the d2Phidtau2 function, which is basically the second derivative
- * of helmholtz free energy wrt tau
- * Eqn. (6.4)
- */
doublereal WaterPropsIAPWSphi::phi_tt(doublereal tau, doublereal delta)
{
tdpolycalc(tau, delta);
@@ -1023,21 +921,11 @@ doublereal WaterPropsIAPWSphi::phi_tt(doublereal tau, doublereal delta)
return nau + res;
}
-/**
- * Calculate d2_phi0/dtauddelta
- */
doublereal WaterPropsIAPWSphi::phi0_dt() const
{
return 0.0;
}
-/*
- * Calculate d2_phiR_d(delta)d(tau), the mixed derivative of phi
- * wrt delta and tau.
- *
- * tau = dimensionless temperature
- * delta = dimensionless pressure
- */
doublereal WaterPropsIAPWSphi::phiR_dt() const
{
doublereal tau = TAUsave;
@@ -1124,13 +1012,6 @@ doublereal WaterPropsIAPWSphi::phiR_dt() const
return val;
}
-/*
- * This program computes the reduced density, given the reduced pressure
- * and the reduced temperature, tau. It takes an initial guess, deltaGuess.
- * DeltaGuess is important as this is a multivalued function below the
- * critical point.
- *
- */
doublereal WaterPropsIAPWSphi::dfind(doublereal p_red, doublereal tau, doublereal deltaGuess)
{
doublereal dd = deltaGuess;
@@ -1222,9 +1103,6 @@ doublereal WaterPropsIAPWSphi::dfind(doublereal p_red, doublereal tau, double
return dd;
}
-/**
- * Calculate the dimensionless gibbs free energy g/RT.
- */
doublereal WaterPropsIAPWSphi::gibbs_RT() const
{
doublereal delta = DELTAsave;
@@ -1232,9 +1110,6 @@ doublereal WaterPropsIAPWSphi::gibbs_RT() const
return 1.0 + phi0() + phiR() + delta * rd;
}
-/**
- * Calculate the dimensionless enthalpy h/RT.
- */
doublereal WaterPropsIAPWSphi::enthalpy_RT() const
{
doublereal delta = DELTAsave;
@@ -1245,9 +1120,6 @@ doublereal WaterPropsIAPWSphi::enthalpy_RT() const
return 1.0 + tau * (nt + rt) + delta * rd;
}
-/*
- * Calculate the dimensionless entropy s/R.
- */
doublereal WaterPropsIAPWSphi::entropy_R() const
{
doublereal tau = TAUsave;
@@ -1258,9 +1130,6 @@ doublereal WaterPropsIAPWSphi::entropy_R() const
return tau * (nt + rt) - p0 - pR;
}
-/*
- * Calculate the dimensionless internal energy, u/RT.
- */
doublereal WaterPropsIAPWSphi::intEnergy_RT() const
{
doublereal tau = TAUsave;
@@ -1269,9 +1138,6 @@ doublereal WaterPropsIAPWSphi::intEnergy_RT() const
return tau * (nt + rt);
}
-/*
- * Calculate the dimensionless constant volume Heat Capacity, Cv/R
- */
doublereal WaterPropsIAPWSphi::cv_R() const
{
doublereal tau = TAUsave;
@@ -1280,9 +1146,6 @@ doublereal WaterPropsIAPWSphi::cv_R() const
return - tau * tau * (ntt + rtt);
}
-/*
- * Calculate the dimensionless constant pressure Heat Capacity, Cp/R
- */
doublereal WaterPropsIAPWSphi::cp_R() const
{
doublereal tau = TAUsave;