Doxygen update
-> Eliminated all of the doxygen warnings. However, there is a long
way to go in documenting the HMWSoln header file.
This commit is contained in:
parent
29c71152f9
commit
56155a1d27
4 changed files with 398 additions and 192 deletions
|
|
@ -1279,10 +1279,9 @@ namespace Cantera {
|
|||
/*!
|
||||
* @internal
|
||||
*
|
||||
* This function gets called for every call to functions in this
|
||||
* This function gets called for every call to a public function in this
|
||||
* 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.
|
||||
* thus whether the ss thermodynamics functions 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
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@
|
|||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
//@{
|
||||
#ifndef MAX
|
||||
#define MAX(x,y) (( (x) > (y) ) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
//@}
|
||||
#include "HMWSoln.h"
|
||||
//#include "importCTML.h"
|
||||
#include "ThermoFactory.h"
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
namespace Cantera {
|
||||
|
||||
/**
|
||||
/*
|
||||
* Default constructor
|
||||
*/
|
||||
HMWSoln::HMWSoln() :
|
||||
|
|
@ -49,7 +49,7 @@ namespace Cantera {
|
|||
elambda1[i] = 0.0;
|
||||
}
|
||||
}
|
||||
/**
|
||||
/*
|
||||
* Working constructors
|
||||
*
|
||||
* The two constructors below are the normal way
|
||||
|
|
@ -245,8 +245,8 @@ namespace Cantera {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test matrix for this object
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
* test problems:
|
||||
|
|
@ -691,12 +691,12 @@ namespace Cantera {
|
|||
"Density is not an independent variable");
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Overwritten setTemperature(double) from State.h. This
|
||||
* function sets the temperature, and makes sure that
|
||||
* the value propagates to underlying objects.
|
||||
*/
|
||||
void HMWSoln::setTemperature(double temp) {
|
||||
void HMWSoln::setTemperature(doublereal temp) {
|
||||
m_waterSS->setTemperature(temp);
|
||||
State::setTemperature(temp);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,8 +39,9 @@ namespace Cantera {
|
|||
|
||||
|
||||
/*!
|
||||
* Formulations for the temperature dependence of the Pitzer
|
||||
* coefficients. Note, the temperature dependence of the
|
||||
* @name Temperature Dependence of the Pitzer Coefficients
|
||||
*
|
||||
* Note, the temperature dependence of the
|
||||
* Gibbs free energy also depends on the temperature dependence
|
||||
* of the standard state and the temperature dependence of the
|
||||
* Debye-Huckel constant, which includes the dielectric constant
|
||||
|
|
@ -60,16 +61,23 @@ namespace Cantera {
|
|||
*
|
||||
* beta0 = q0 + q3(1/T - 1/Tr) + q4(ln(T/Tr)) +
|
||||
* q1(T - Tr) + q2(T**2 - Tr**2)
|
||||
*
|
||||
*/
|
||||
//@{
|
||||
#define PITZER_TEMP_CONSTANT 0
|
||||
#define PITZER_TEMP_LINEAR 1
|
||||
#define PITZER_TEMP_COMPLEX1 2
|
||||
//@}
|
||||
|
||||
/*
|
||||
* Acceptable ways to calculate the value of A_Debye
|
||||
* @name ways to calculate the value of A_Debye
|
||||
*
|
||||
* These defines determine the way A_Debye is calculated
|
||||
*/
|
||||
//@{
|
||||
#define A_DEBYE_CONST 0
|
||||
#define A_DEBYE_WATER 1
|
||||
//@}
|
||||
|
||||
class WaterProps;
|
||||
class WaterPDSS;
|
||||
|
|
@ -270,10 +278,6 @@ namespace Cantera {
|
|||
* 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. We will now describe each category in its own section.
|
||||
*
|
||||
*
|
||||
* <H3> Debye-Huckel Dilute Limit </H3>
|
||||
*
|
||||
|
|
@ -665,13 +669,31 @@ namespace Cantera {
|
|||
|
||||
public:
|
||||
|
||||
/// Default Constructor
|
||||
//! Default Constructor
|
||||
HMWSoln();
|
||||
|
||||
//! Full constructor for setting up the entire ThermoPhase Object
|
||||
/*!
|
||||
* Working constructors
|
||||
*
|
||||
* The two constructors below are the normal way
|
||||
* the phase initializes itself. They are shells that call
|
||||
* the routine initThermo(), with a reference to the
|
||||
* XML database to get the info for the phase.
|
||||
*
|
||||
* @param inputFile Name of the input file containing the phase XML data
|
||||
* to set up the object
|
||||
* @param id ID of the phase in the input file. Defaults to the
|
||||
* empty string.
|
||||
*/
|
||||
HMWSoln(std::string inputFile, std::string id = "");
|
||||
|
||||
//! Full constructor for setting up the entire ThermoPhase Object
|
||||
//! Full constructor for creating the phase.
|
||||
/*!
|
||||
* @param phaseRef XML phase node containing the description of the phase
|
||||
* @param id id attribute containing the name of the phase.
|
||||
* (default is the empty string)
|
||||
*/
|
||||
HMWSoln(XML_Node& phaseRef, std::string id = "");
|
||||
|
||||
|
||||
|
|
@ -696,9 +718,36 @@ namespace Cantera {
|
|||
*/
|
||||
HMWSoln& operator=(const HMWSoln& right);
|
||||
|
||||
/**
|
||||
* This is a special constructor, used to replicate test problems
|
||||
* during the initial verification of the object
|
||||
|
||||
//! This is a special constructor, used to replicate test problems
|
||||
//! during the initial verification of the object
|
||||
/*!
|
||||
*
|
||||
*
|
||||
* test problems:
|
||||
* 1 = NaCl problem - 5 species -
|
||||
* the thermo is read in from an XML file
|
||||
*
|
||||
* speci molality charge
|
||||
* Cl- 6.0954 6.0997E+00 -1
|
||||
* H+ 1.0000E-08 2.1628E-09 1
|
||||
* Na+ 6.0954E+00 6.0997E+00 1
|
||||
* OH- 7.5982E-07 1.3977E-06 -1
|
||||
* HMW_params____beta0MX__beta1MX__beta2MX__CphiMX_____alphaMX__thetaij
|
||||
* 10
|
||||
* 1 2 0.1775 0.2945 0.0 0.00080 2.0 0.0
|
||||
* 1 3 0.0765 0.2664 0.0 0.00127 2.0 0.0
|
||||
* 1 4 0.0 0.0 0.0 0.0 0.0 -0.050
|
||||
* 2 3 0.0 0.0 0.0 0.0 0.0 0.036
|
||||
* 2 4 0.0 0.0 0.0 0.0 0.0 0.0
|
||||
* 3 4 0.0864 0.253 0.0 0.0044 2.0 0.0
|
||||
* Triplet_interaction_parameters_psiaa'_or_psicc'
|
||||
* 2
|
||||
* 1 2 3 -0.004
|
||||
* 1 3 4 -0.006
|
||||
*
|
||||
* @param testProb Hard -coded test problem to instantiate.
|
||||
* Current valid values are 1.
|
||||
*/
|
||||
HMWSoln(int testProb);
|
||||
|
||||
|
|
@ -983,18 +1032,23 @@ namespace Cantera {
|
|||
* @return
|
||||
* Returns the standard Concentration in units of
|
||||
* m<SUP>3</SUP> kmol<SUP>-1</SUP>.
|
||||
*
|
||||
* @param k Species index
|
||||
*/
|
||||
virtual doublereal standardConcentration(int k=0) const;
|
||||
|
||||
/**
|
||||
* Returns the natural logarithm of the standard
|
||||
* concentration of the kth species
|
||||
|
||||
//! Returns the natural logarithm of the standard
|
||||
//! concentration of the kth species
|
||||
/*!
|
||||
* @param k Species index
|
||||
*/
|
||||
virtual doublereal logStandardConc(int k=0) const;
|
||||
|
||||
/**
|
||||
* Returns the units of the standard and generalized
|
||||
* concentrations Note they have the same units, as their
|
||||
|
||||
//! Returns the units of the standard and generalized concentrations.
|
||||
/*!
|
||||
* Note they have the same units, as their
|
||||
* ratio is defined to be equal to the activity of the kth
|
||||
* species in the solution, which is unitless.
|
||||
*
|
||||
|
|
@ -1002,6 +1056,12 @@ namespace Cantera {
|
|||
* units are needed. Usually, MKS units are assumed throughout
|
||||
* the program and in the XML input files.
|
||||
*
|
||||
* The base %ThermoPhase class assigns the default quantities
|
||||
* of (kmol/m3) for all species.
|
||||
* Inherited classes are responsible for overriding the default
|
||||
* values if necessary.
|
||||
*
|
||||
* @param uA Output vector containing the units
|
||||
* uA[0] = kmol units - default = 1
|
||||
* uA[1] = m units - default = -nDim(), the number of spatial
|
||||
* dimensions in the Phase class.
|
||||
|
|
@ -1009,25 +1069,38 @@ namespace Cantera {
|
|||
* uA[3] = Pa(pressure) units - default = 0;
|
||||
* uA[4] = Temperature units - default = 0;
|
||||
* uA[5] = time units - default = 0
|
||||
* @param k species index. Defaults to 0.
|
||||
* @param sizeUA output int containing the size of the vector.
|
||||
* Currently, this is equal to 6.
|
||||
*/
|
||||
virtual void getUnitsStandardConc(double *uA, int k = 0,
|
||||
int sizeUA = 6) const;
|
||||
|
||||
/**
|
||||
* Get the array of non-dimensional molality-based activities at
|
||||
* the current solution temperature, pressure, and
|
||||
* solution concentration.
|
||||
//! Get the array of non-dimensional activities at
|
||||
//! the current solution temperature, pressure, and solution concentration.
|
||||
/*!
|
||||
*
|
||||
* We resolve this function at this level by calling
|
||||
* on the activityConcentration function. However,
|
||||
* derived classes may want to override this default
|
||||
* implementation.
|
||||
*
|
||||
* (note solvent is on molar scale).
|
||||
*
|
||||
* @param ac Output vector of activities. Length: m_kk.
|
||||
*/
|
||||
virtual void getActivities(doublereal* ac) const;
|
||||
|
||||
/**
|
||||
* Get the array of non-dimensional molality-based
|
||||
* activity coefficients at
|
||||
* the current solution temperature, pressure, and
|
||||
* solution concentration.
|
||||
* (note solvent is on molar scale. The solvent molar
|
||||
* based activity coefficient is returned).
|
||||
|
||||
//! Get the array of non-dimensional molality-based
|
||||
//! activity coefficients at
|
||||
//! the current solution temperature, pressure, and solution concentration.
|
||||
/*!
|
||||
* note solvent is on molar scale. The solvent molar
|
||||
* based activity coefficient is returned.
|
||||
*
|
||||
* @param acMolality Vector of Molality-based activity coefficients
|
||||
* Length: m_kk
|
||||
*/
|
||||
virtual void
|
||||
getMolalityActivityCoefficients(doublereal* acMolality) const;
|
||||
|
|
@ -1036,80 +1109,87 @@ namespace Cantera {
|
|||
/// @name Partial Molar Properties of the Solution -----------------
|
||||
//@{
|
||||
|
||||
/**
|
||||
* Get the species chemical potentials. Units: J/kmol.
|
||||
//! Get the species chemical potentials. Units: J/kmol.
|
||||
/*!
|
||||
*
|
||||
* This function returns a vector of chemical potentials of the
|
||||
* species in solution.
|
||||
*
|
||||
* \f[
|
||||
* \mu_k = \mu^{ref}_k(T) + V_k * (p - p_o) + R T ln(X_k)
|
||||
* \f]
|
||||
* or another way to phrase this is
|
||||
* \f[
|
||||
* \mu_k = \mu^o_k(T,p) + R T ln(X_k)
|
||||
* \f]
|
||||
* where \f$ \mu^o_k(T,p) = \mu^{ref}_k(T) + V_k * (p - p_o)\f$
|
||||
* \mu_k = \mu^{\triangle}_k(T,P) + R T ln(\gamma_k^{\triangle} m_k)
|
||||
* \f]
|
||||
*
|
||||
* @param mu Output vector of species chemical
|
||||
* potentials. Length: m_kk. Units: J/kmol
|
||||
*/
|
||||
virtual void getChemPotentials(doublereal* mu) const;
|
||||
|
||||
/**
|
||||
* Returns an array of partial molar enthalpies for the species
|
||||
* in the mixture.
|
||||
* Units (J/kmol)
|
||||
|
||||
//! Returns an array of partial molar enthalpies for the species
|
||||
//! in the mixture. Units (J/kmol)
|
||||
/*!
|
||||
* For this phase, the partial molar enthalpies are equal to the
|
||||
* pure species enthalpies
|
||||
* standard state enthalpies modified by the derivative of the
|
||||
* molality-based activity coefficent wrt temperature
|
||||
*
|
||||
* \f[
|
||||
* \bar h_k(T,P) = \hat h^{ref}_k(T) + (P - P_{ref}) \hat V^0_k
|
||||
* \bar h_k(T,P) = h^{\triangle}_k(T,P) - R T^2 \frac{d \ln(\gamma_k^\triangle)}{dT}
|
||||
* \f]
|
||||
* The reference-state pure-species enthalpies,
|
||||
* \f$ \hat h^{ref}_k(T) \f$,
|
||||
* at the reference pressure,\f$ P_{ref} \f$,
|
||||
* are computed by the species thermodynamic
|
||||
* property manager. They are polynomial functions of temperature.
|
||||
* @see SpeciesThermo
|
||||
* The solvent partial molar enthalpy is equal to
|
||||
* \f[
|
||||
* \bar h_o(T,P) = h^{o}_o(T,P) - R T^2 \frac{d \ln(a_o}{dT}
|
||||
* \f]
|
||||
*
|
||||
*
|
||||
* @param hbar Output vector of species partial molar enthalpies.
|
||||
* Length: m_kk. units are J/kmol.
|
||||
*/
|
||||
virtual void getPartialMolarEnthalpies(doublereal* hbar) const;
|
||||
|
||||
|
||||
//! Returns an array of partial molar entropies of the species in the
|
||||
//! solution. Units: J/kmol/K.
|
||||
/**
|
||||
* getPartialMolarEntropies() (virtual, const)
|
||||
*
|
||||
* Returns an array of partial molar entropies of the species in the
|
||||
* solution. Units: J/kmol.
|
||||
*
|
||||
* Maxwell's equations provide an insight in how to calculate this
|
||||
* (p.215 Smith and Van Ness)
|
||||
* (p.215 Smith and Van Ness)
|
||||
*
|
||||
* d(chemPot_i)/dT = -sbar_i
|
||||
*
|
||||
*
|
||||
* For this phase, the partial molar entropies are equal to the
|
||||
* SS species entropies plus the ideal solution contribution.following
|
||||
* contribution:
|
||||
* SS species entropies plus the ideal solution contribution
|
||||
* plus complicated functions of the
|
||||
* temperature derivative of the activity coefficents.
|
||||
*
|
||||
* \f[
|
||||
* \bar s_k(T,P) = \hat s^0_k(T) - R log(M0 * molality[k])
|
||||
* \bar s_k(T,P) = \hat s^0_k(T) - R log(M0 * molality[k])
|
||||
* \f]
|
||||
* \f[
|
||||
* \bar s_solvent(T,P) = \hat s^0_solvent(T)
|
||||
* - R ((xmolSolvent - 1.0) / xmolSolvent)
|
||||
* \bar s_solvent(T,P) = \hat s^0_solvent(T)
|
||||
* - R ((xmolSolvent - 1.0) / xmolSolvent)
|
||||
* \f]
|
||||
*
|
||||
* The reference-state pure-species entropies,\f$ \hat s^0_k(T) \f$,
|
||||
* at the reference pressure, \f$ P_{ref} \f$, are computed by the
|
||||
* species thermodynamic
|
||||
* property manager. They are polynomial functions of temperature.
|
||||
* @see SpeciesThermo
|
||||
* @param sbar Output vector of species partial molar entropies.
|
||||
* Length = m_kk. units are J/kmol/K.
|
||||
*/
|
||||
virtual void getPartialMolarEntropies(doublereal* sbar) const;
|
||||
|
||||
/**
|
||||
* returns an array of partial molar volumes of the species
|
||||
* in the solution. Units: m^3 kmol-1.
|
||||
//! Return an array of partial molar volumes for the
|
||||
//! species in the mixture. Units: m^3/kmol.
|
||||
/*!
|
||||
* For this solution, the partial molar volumes are functions
|
||||
* of the pressure derivatives of the activity coefficients.
|
||||
*
|
||||
* For this solution, thepartial molar volumes are equal to the
|
||||
* constant species molar volumes.
|
||||
* @param vbar Output vector of speciar partial molar volumes.
|
||||
* Length = m_kk. units are m^3/kmol.
|
||||
*/
|
||||
virtual void getPartialMolarVolumes(doublereal* vbar) const;
|
||||
|
||||
//! Return an array of partial molar heat capacities for the
|
||||
//! species in the mixture. Units: J/kmol/K
|
||||
/*!
|
||||
* @param cpbar Output vector of species partial molar heat
|
||||
* capacities at constant pressure.
|
||||
* Length = m_kk. units are J/kmol/K.
|
||||
*/
|
||||
virtual void getPartialMolarCp(doublereal* cpbar) const;
|
||||
|
||||
|
||||
|
|
@ -1120,7 +1200,13 @@ namespace Cantera {
|
|||
//@{
|
||||
|
||||
|
||||
/**
|
||||
//! 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
|
||||
*
|
||||
* Get the standard state chemical potentials of the species.
|
||||
* This is the array of chemical potentials at unit activity
|
||||
* \f$ \mu^0_k(T,P) \f$.
|
||||
|
|
@ -1132,90 +1218,130 @@ namespace Cantera {
|
|||
* on T and P. This is the norm for liquid and solid systems.
|
||||
*
|
||||
* units = J / kmol
|
||||
*
|
||||
* @param mu Output vector of chemical potentials.
|
||||
* Length: m_kk.
|
||||
*/
|
||||
virtual void getStandardChemPotentials(doublereal* mu) const;
|
||||
|
||||
/**
|
||||
* Get the nondimensional gibbs function for the species
|
||||
* standard states at the current T and P of the solution.
|
||||
*
|
||||
|
||||
//! 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.
|
||||
/*!
|
||||
* The standard states of the solutes are on the unit molality basis.
|
||||
* \f[
|
||||
* \mu^0_k(T,P) = \mu^{ref}_k(T) + (P - P_{ref}) * V_k
|
||||
* \mu^{\triangle}_k(T,P) = \mu^{\triangle,ref}_k(T) + (P - P_{ref}) * V_k
|
||||
* \f]
|
||||
* where \f$V_k\f$ is the molar volume of pure species <I>k</I>.
|
||||
* \f$ \mu^{ref}_k(T)\f$ is the chemical potential of pure
|
||||
*
|
||||
* where \f$V_k\f$ is the molar volume of pure species <I>k</I>.
|
||||
* \f$ \mu^{\triangle,ref}_k(T)\f$ is the chemical potential of pure
|
||||
* species <I>k</I> at the reference pressure, \f$P_{ref}\f$.
|
||||
*
|
||||
* @param grt Vector of length m_kk, which on return sr[k]
|
||||
* will contain the nondimensional
|
||||
* standard state gibbs function for species k.
|
||||
* A real water model is used. Therefore, \f$ \mu^{o}_0(T,P) \f$ is a
|
||||
* complicated function of temperature and pressure.
|
||||
*
|
||||
* @param grt Output vector of nondimensional standard state gibbs free energies
|
||||
* Length: m_kk.
|
||||
*/
|
||||
virtual void getGibbs_RT(doublereal* grt) const;
|
||||
|
||||
/**
|
||||
* Get the nondimensional Gibbs functions for the standard
|
||||
* state of the species at the current T and P.
|
||||
//! Get the Gibbs functions for the standard
|
||||
//! state of the species at the current <I>T</I> and <I>P</I> of the solution
|
||||
/*!
|
||||
* The standard states are on the unit molality basis.
|
||||
* Units are Joules/kmol
|
||||
* @param gpure Output vector of standard state gibbs free energies
|
||||
* Length: m_kk.
|
||||
*/
|
||||
virtual void getPureGibbs(doublereal* gpure) const;
|
||||
|
||||
/**
|
||||
*
|
||||
* getEnthalpy_RT() (virtual, const)
|
||||
*
|
||||
* Get the array of nondimensional Enthalpy functions for the
|
||||
* standard states
|
||||
* species at the current <I>T</I> and <I>P</I> of the solution.
|
||||
|
||||
//! 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.
|
||||
/*!
|
||||
* The standard states are on the unit molality basis.
|
||||
* We assume an incompressible constant partial molar
|
||||
* volume here:
|
||||
* \f[
|
||||
* h^0_k(T,P) = h^{ref}_k(T) + (P - P_{ref}) * V_k
|
||||
* \f]
|
||||
* where \f$V_k\f$ is the molar volume of SS species <I>k<\I>.
|
||||
* volume for the solutes.
|
||||
*
|
||||
* \f[
|
||||
* h^{\triangle}_k(T,P) = h^{\triangle,ref}_k(T) + (P - P_{ref}) * V_k
|
||||
* \f]
|
||||
*
|
||||
* where \f$V_k\f$ is the molar volume of SS species <I>k</I>.
|
||||
* \f$ h^{ref}_k(T)\f$ is the enthalpy of the SS
|
||||
* species <I>k<\I> at the reference pressure, \f$P_{ref}\f$.
|
||||
* species <I>k</I> at the reference pressure, \f$P_{ref}\f$.
|
||||
*
|
||||
* The solvent water enthalpy is obtained from a pure water
|
||||
* equation of state model.
|
||||
*
|
||||
* @param hrt Output vector of nondimensional standard state enthalpies.
|
||||
* Length: m_kk.
|
||||
*/
|
||||
virtual void getEnthalpy_RT(doublereal* hrt) const;
|
||||
|
||||
/**
|
||||
* Get the nondimensional Entropies for the species
|
||||
* standard states at the current T and P of the solution.
|
||||
//! 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.
|
||||
/*!
|
||||
*
|
||||
* The standard states are on the unit molality basis.
|
||||
*
|
||||
* \f[
|
||||
* s^{\triangle}_k(T,P) = s^{\triangle,ref}_k(T)
|
||||
* \f]
|
||||
*
|
||||
* Note, this is equal to the reference state entropies
|
||||
* due to the zero volume expansivity:
|
||||
* i.e., (dS/dp)_T = (dV/dT)_P = 0.0
|
||||
*
|
||||
* @param sr Vector of length m_kk, which on return sr[k]
|
||||
* will contain the nondimensional
|
||||
* standard state entropy of species k.
|
||||
* The solvent water entropy is obtained from a pure water
|
||||
* equation of state model.
|
||||
*
|
||||
* @param sr Output vector of nondimensional standard state entropies.
|
||||
* Length: m_kk. The solvent water is species 0, always.
|
||||
*/
|
||||
virtual void getEntropy_R(doublereal* sr) const;
|
||||
|
||||
/**
|
||||
* Get the nondimensional heat capacity at constant pressure
|
||||
* function for the species
|
||||
* standard states at the current T and P of the solution.
|
||||
//! 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
|
||||
/*!
|
||||
* The standard states are on the unit molality basis.
|
||||
* For the solutes:
|
||||
* \f[
|
||||
* Cp^0_k(T,P) = Cp^{ref}_k(T)
|
||||
* Cp^\triangle_k(T,P) = Cp^{\triangle,ref}_k(T)
|
||||
* \f]
|
||||
* where \f$V_k\f$ is the molar volume of pure species <I>k</I>.
|
||||
*
|
||||
* \f$ Cp^{ref}_k(T)\f$ is the constant pressure heat capacity
|
||||
* of species <I>k</I> at the reference pressure, \f$p_{ref}\f$.
|
||||
*
|
||||
* The solute heat capacity is obtained from a pure water
|
||||
* equation of state model, so it depends on T and P.
|
||||
*
|
||||
* @param cpr Vector of length m_kk, which on return cpr[k]
|
||||
* will contain the nondimensional
|
||||
* constant pressure heat capacity for species k.
|
||||
* constant pressure heat capacity for species k.
|
||||
*/
|
||||
virtual void getCp_R(doublereal* cpr) const;
|
||||
|
||||
/**
|
||||
* Get the molar volumes of each species in their standard
|
||||
* states at the current
|
||||
* <I>T</I> and <I>P</I> of the solution.
|
||||
|
||||
//! Get the molar volumes of the species standard states at the current
|
||||
//! <I>T</I> and <I>P</I> of the solution.
|
||||
/*!
|
||||
* The current model assumes that an incompressible molar volume for
|
||||
* all solutes. The molar volume for the water solvent, however,
|
||||
* is obtained from a pure water equation of state, waterSS.
|
||||
* Therefore, the water standard state varies with both T and P.
|
||||
* It is an error to request the water molar volume at a T and P
|
||||
* where the water phase is not stable phase.
|
||||
*
|
||||
* units = m^3 / kmol
|
||||
*
|
||||
* @param vol Output vector containing the standard state volumes.
|
||||
* Length: m_kk. The solvent water is species 0, always.
|
||||
*/
|
||||
virtual void getStandardVolumes(doublereal *vol) const;
|
||||
|
||||
//! Returns the vector of nondimensional
|
||||
//! Returns 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.
|
||||
/*!
|
||||
|
|
@ -1224,7 +1350,7 @@ namespace Cantera {
|
|||
*/
|
||||
virtual void getGibbs_RT_ref(doublereal *grt) const;
|
||||
|
||||
//! Returns the vector of nondimensional
|
||||
//! Returns the vector of nondimensional
|
||||
//! enthalpies of the reference state at the current temperature
|
||||
//! of the solution and the reference pressure for the species.
|
||||
/*!
|
||||
|
|
@ -1243,11 +1369,11 @@ namespace Cantera {
|
|||
*/
|
||||
virtual void getEntropy_R_ref(doublereal *er) const;
|
||||
|
||||
//! Returns 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.
|
||||
/*!
|
||||
* Returns 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.
|
||||
*
|
||||
* @param cprt Output vector of nondimensional reference state
|
||||
* heat capacities at constant pressure for the species.
|
||||
|
|
@ -1271,14 +1397,13 @@ namespace Cantera {
|
|||
/*!
|
||||
* @internal
|
||||
*
|
||||
* This function gets called for every call to functions in this
|
||||
* This function gets called for every call to a public function in this
|
||||
* 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.
|
||||
* thus whether the ss thermodynamics functions must be recalculated.
|
||||
*
|
||||
*
|
||||
* Note, this will throw an error. It must be reimplemented in derived classes.
|
||||
*/
|
||||
* @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;
|
||||
|
||||
//@}
|
||||
|
|
@ -1436,38 +1561,53 @@ namespace Cantera {
|
|||
* -------------- Utilities -------------------------------
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Return a reference to the species thermodynamic property
|
||||
* manager. @todo This method will fail if no species thermo
|
||||
* manager.
|
||||
*
|
||||
* @todo This method will fail if no species thermo
|
||||
* manager has been installed.
|
||||
*/
|
||||
SpeciesThermo& speciesThermo() { return *m_spthermo; }
|
||||
|
||||
/*
|
||||
* constructPhaseFile()
|
||||
*
|
||||
* Import, construct, and initialize a HMWSoln phase
|
||||
* specification from an XML tree into the current object.
|
||||
*
|
||||
* This routine is a precursor to constructPhaseXML(XML_Node*)
|
||||
//! Initialization of a HMWSoln phase using an xml file
|
||||
/*!
|
||||
* This routine is a precursor to initThermo(XML_Node*)
|
||||
* routine, which does most of the work.
|
||||
*
|
||||
* @param inputFile XML file containing the description of the
|
||||
* phase
|
||||
*
|
||||
* @param id Optional parameter identifying the name of the
|
||||
* phase. If none is given, the first XML
|
||||
* phase element will be used.
|
||||
*/
|
||||
void constructPhaseFile(std::string inputFile, std::string id);
|
||||
|
||||
/*
|
||||
* constructPhaseXML
|
||||
//! Import and initialize a HMWSoln phase
|
||||
//! specification in an XML tree into the current object.
|
||||
/*!
|
||||
* Here we read an XML description of the phase.
|
||||
* We import descriptions of the elements that make up the
|
||||
* species in a phase.
|
||||
* We import information about the species, including their
|
||||
* reference state thermodynamic polynomials. We then freeze
|
||||
* the state of the species.
|
||||
*
|
||||
* This is the main routine for constructing the phase.
|
||||
* Then, we read the species molar volumes from the xml
|
||||
* tree to finish the initialization.
|
||||
*
|
||||
* Most of the work is carried out by the cantera base
|
||||
* routine, importPhase(). That routine imports all of the
|
||||
* species and element data, including the standard states
|
||||
* of the species.
|
||||
* @param phaseNode This object must be the phase node of a
|
||||
* complete XML tree
|
||||
* description of the phase, including all of the
|
||||
* species data. In other words while "phase" must
|
||||
* point to an XML phase object, it must have
|
||||
* sibling nodes "speciesData" that describe
|
||||
* the species in the phase.
|
||||
*
|
||||
* Then, In this routine, we read the information
|
||||
* particular to the specification of the activity
|
||||
* coefficient model for the Pitzer parameterization.
|
||||
* @param id ID of the phase. If nonnull, a check is done
|
||||
* to see if phaseNode is pointing to the phase
|
||||
* with the correct id.
|
||||
*/
|
||||
void constructPhaseXML(XML_Node& phaseNode, std::string id);
|
||||
|
||||
|
|
@ -1525,6 +1665,12 @@ namespace Cantera {
|
|||
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
|
||||
*
|
||||
* Units = sqrt(kg/gmol)
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
virtual double A_Debye_TP(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
|
@ -1537,6 +1683,12 @@ namespace Cantera {
|
|||
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
|
||||
*
|
||||
* Units = sqrt(kg/gmol)
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
virtual double dA_DebyedT_TP(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
|
@ -1549,6 +1701,12 @@ namespace Cantera {
|
|||
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
|
||||
*
|
||||
* Units = sqrt(kg/gmol)
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
virtual double dA_DebyedP_TP(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
|
@ -1563,6 +1721,12 @@ namespace Cantera {
|
|||
*
|
||||
* Units = sqrt(kg/gmol) (RT)
|
||||
*
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
double ADebye_L(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
|
@ -1578,6 +1742,12 @@ namespace Cantera {
|
|||
* A_J = 2 A_L/T + 4 * R * T * T * d2(A_phi)/dT2
|
||||
*
|
||||
* Units = sqrt(kg/gmol) (R)
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
double ADebye_J(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
|
@ -1590,26 +1760,38 @@ namespace Cantera {
|
|||
* A_V = - dA_phidP * (4 * R * T)
|
||||
*
|
||||
* Units = sqrt(kg/gmol) (RT) / Pascal
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*
|
||||
*/
|
||||
double ADebye_V(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
/**
|
||||
* Value of the 2nd derivative of the Debye Huckel constant with
|
||||
* respect to temperature as a function of temperature
|
||||
* and pressure.
|
||||
|
||||
//! Value of the 2nd derivative of the Debye Huckel constant with
|
||||
//! respect to temperature as a function of temperature
|
||||
//! and pressure.
|
||||
/*!
|
||||
*
|
||||
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
|
||||
*
|
||||
* Units = sqrt(kg/gmol)
|
||||
*
|
||||
* @param temperature Temperature of the derivative calculation
|
||||
* or -1 to indicate the current temperature
|
||||
*
|
||||
* @param pressure Pressure of the derivative calcualtion
|
||||
* or -1 to indicate the current pressure
|
||||
*/
|
||||
virtual double d2A_DebyedT2_TP(double temperature = -1.0,
|
||||
double pressure = -1.0) const;
|
||||
|
||||
/*
|
||||
* AionicRadius()
|
||||
*
|
||||
* Reports the ionic radius of the kth species
|
||||
//! Reports the ionic radius of the kth species
|
||||
/*!
|
||||
* @param k Species index
|
||||
*/
|
||||
double AionicRadius(int k = 0) const;
|
||||
|
||||
|
|
@ -1683,7 +1865,17 @@ namespace Cantera {
|
|||
* bimolecular rxns which have units of m-3 kmol-1 s-1.)
|
||||
*/
|
||||
int m_formGC;
|
||||
|
||||
|
||||
//! Vector containing the electrolyte species type
|
||||
/*!
|
||||
* The possible types are:
|
||||
* - solvent
|
||||
* - Charged Species
|
||||
* - weakAcidAssociated
|
||||
* - strongAcidAssociated
|
||||
* - polarNeutral
|
||||
* - nonpolarNeutral .
|
||||
*/
|
||||
vector_int m_electrolyteSpeciesType;
|
||||
|
||||
/**
|
||||
|
|
@ -1779,11 +1971,17 @@ namespace Cantera {
|
|||
*/
|
||||
mutable double m_A_Debye;
|
||||
|
||||
/**
|
||||
* Water standard state -> derived from the
|
||||
* equation of state for water.
|
||||
|
||||
//! Water standard state calculator
|
||||
/*!
|
||||
* derived from the equation of state for water.
|
||||
*/
|
||||
WaterPDSS *m_waterSS;
|
||||
|
||||
//! density of standard-state water
|
||||
/*!
|
||||
* internal temporary variable
|
||||
*/
|
||||
double m_densWaterSS;
|
||||
|
||||
/**
|
||||
|
|
@ -2042,7 +2240,8 @@ namespace Cantera {
|
|||
*/
|
||||
vector_fp m_Psi_ijk_P;
|
||||
|
||||
/*
|
||||
//! Lambda coefficient for the ij interaction
|
||||
/*!
|
||||
* Array of 2D data used in the Pitzer/HMW formulation.
|
||||
* Lambda_ij[i][j] represents the lambda coefficient for the
|
||||
* ij interaction. This is a general interaction representing
|
||||
|
|
@ -2097,10 +2296,10 @@ namespace Cantera {
|
|||
* -------- Temporary Variables Used in the Activity Coeff Calc
|
||||
*/
|
||||
|
||||
/*
|
||||
* Set up a counter variable for keeping track of symmetric binary
|
||||
* interactions amongst the solute species.
|
||||
*
|
||||
|
||||
//! a counter variable for keeping track of symmetric binary
|
||||
//! interactions amongst the solute species.
|
||||
/*!
|
||||
* n = m_kk*i + j
|
||||
* m_CounterIJ[n] = counterIJ
|
||||
*/
|
||||
|
|
@ -2370,12 +2569,14 @@ namespace Cantera {
|
|||
*/
|
||||
void s_updatePitzerSublnMolalityActCoeff() const;
|
||||
|
||||
/*
|
||||
* Calculate the lambda interactions.
|
||||
*
|
||||
|
||||
//! Calculate the lambda interactions.
|
||||
/*!
|
||||
*
|
||||
* Calculate E-lambda terms for charge combinations of like sign,
|
||||
* using method of Pitzer (1975).
|
||||
*
|
||||
* @param is Ionic strength
|
||||
*/
|
||||
void calc_lambdas(double is) const;
|
||||
|
||||
|
|
@ -2482,6 +2683,12 @@ namespace Cantera {
|
|||
*/
|
||||
void readXMLLambdaNeutral(XML_Node &BinSalt);
|
||||
|
||||
//! utility function to assign an integer value from a string
|
||||
//! for the ElectrolyteSpeciesType field.
|
||||
/*!
|
||||
* @param estString string name of the electrolyte species type
|
||||
*/
|
||||
static int interp_est(std::string estString);
|
||||
|
||||
public:
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -22,13 +22,13 @@ using namespace std;
|
|||
|
||||
namespace Cantera {
|
||||
|
||||
/**
|
||||
* interp_est() (static)
|
||||
*
|
||||
* utility function to assign an integer value from a string
|
||||
* for the ElectrolyteSpeciesType field.
|
||||
|
||||
//! utility function to assign an integer value from a string
|
||||
//! for the ElectrolyteSpeciesType field.
|
||||
/*!
|
||||
* @param estString string name of the electrolyte species type
|
||||
*/
|
||||
static int interp_est(std::string estString) {
|
||||
int HMWSoln::interp_est(std::string estString) {
|
||||
const char *cc = estString.c_str();
|
||||
if (!strcasecmp(cc, "solvent")) {
|
||||
return cEST_solvent;
|
||||
|
|
@ -50,7 +50,7 @@ namespace Cantera {
|
|||
return rval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Process an XML node called "SimpleSaltParameters.
|
||||
* This node contains all of the parameters necessary to describe
|
||||
* the Pitzer model for that particular binary salt.
|
||||
|
|
@ -585,7 +585,7 @@ namespace Cantera {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Initialization routine for a HMWSoln phase.
|
||||
*
|
||||
* This is a virtual routine. This routine will call initThermo()
|
||||
|
|
@ -596,7 +596,7 @@ namespace Cantera {
|
|||
initLengths();
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Import, construct, and initialize a HMWSoln phase
|
||||
* specification from an XML tree into the current object.
|
||||
*
|
||||
|
|
@ -610,7 +610,7 @@ namespace Cantera {
|
|||
* phase. If none is given, the first XML
|
||||
* phase element will be used.
|
||||
*/
|
||||
void HMWSoln::constructPhaseFile(string inputFile, string id) {
|
||||
void HMWSoln::constructPhaseFile(std::string inputFile, std::string id) {
|
||||
|
||||
if (inputFile.size() == 0) {
|
||||
throw CanteraError("HMWSoln:constructPhaseFile",
|
||||
|
|
@ -640,7 +640,7 @@ namespace Cantera {
|
|||
delete fxml;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Import, construct, and initialize a HMWSoln phase
|
||||
* specification from an XML tree into the current object.
|
||||
*
|
||||
|
|
@ -667,7 +667,7 @@ namespace Cantera {
|
|||
* to see if phaseNode is pointing to the phase
|
||||
* with the correct id.
|
||||
*/
|
||||
void HMWSoln::constructPhaseXML(XML_Node& phaseNode, string id) {
|
||||
void HMWSoln::constructPhaseXML(XML_Node& phaseNode, std::string id) {
|
||||
string stemp;
|
||||
if (id.size() > 0) {
|
||||
string idp = phaseNode.id();
|
||||
|
|
@ -815,7 +815,7 @@ namespace Cantera {
|
|||
* with the correct id.
|
||||
*/
|
||||
void HMWSoln::
|
||||
initThermoXML(XML_Node& phaseNode, string id) {
|
||||
initThermoXML(XML_Node& phaseNode, std::string id) {
|
||||
int k;
|
||||
string stemp;
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue