Doxygen update

Added more equations in DebyeHuckel.
This commit is contained in:
Harry Moffat 2007-03-05 16:36:32 +00:00
parent f87e536ac3
commit 28154b5088
6 changed files with 231 additions and 153 deletions

View file

@ -577,52 +577,57 @@ namespace Cantera {
}
}
//! Get the species partial molar enthalpies. Units: J/kmol.
/*!
* @param hbar Output vector of species partial molar enthalpies.
* Length: m_kk. units are J/kmol.
*/
virtual void getPartialMolarEnthalpies(doublereal* hbar) const {
err("getPartialMolarEnthalpies");
}
//! Returns an array of partial molar enthalpies for the species
//! in the mixture. Units (J/kmol)
/*!
* @param hbar Output vector of species partial molar enthalpies.
* Length: m_kk. units are J/kmol.
*/
virtual void getPartialMolarEnthalpies(doublereal* hbar) const {
err("getPartialMolarEnthalpies");
}
//! Get the species partial molar entropies. Units: J/kmol/K.
/*!
* @param sbar Output vector of species partial molar entropies.
* Length = m_kk. units are J/kmol/K.
*/
virtual void getPartialMolarEntropies(doublereal* sbar) const {
err("getPartialMolarEntropies");
}
//! Returns an array of partial molar entropies of the species in the
//! solution. Units: J/kmol/K.
/*!
* @param sbar Output vector of species partial molar entropies.
* Length = m_kk. units are J/kmol/K.
*/
virtual void getPartialMolarEntropies(doublereal* sbar) const {
err("getPartialMolarEntropies");
}
//! Get the species partial molar internal energies. Units: J/kmol.
/*!
* @param ubar Output vector of speciar partial molar internal energies.
* Length = m_kk. units are J/kmol.
*/
virtual void getPartialMolarIntEnergies(doublereal* ubar) const {
err("getPartialMolarIntEnergies");
}
//! Get the partial molar heat capacities 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 {
err("getPartialMolarCp");
}
//! Return an array of partial molar internal energies for the
//! species in the mixture. Units: J/kmol.
/*!
* @param ubar Output vector of speciar partial molar internal energies.
* Length = m_kk. units are J/kmol.
*/
virtual void getPartialMolarIntEnergies(doublereal* ubar) const {
err("getPartialMolarIntEnergies");
}
//! 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 {
err("getPartialMolarCp");
}
//! Get the species partial molar volumes. Units: m^3/kmol.
/*!
* @param vbar Output vector of speciar partial molar volumes.
* Length = m_kk. units are m^3/kmol.
*/
virtual void getPartialMolarVolumes(doublereal* vbar) const {
err("getPartialMolarVolumes");
}
//! Return an array of partial molar volumes for the
//! species in the mixture. Units: m^3/kmol.
/*!
* @param vbar Output vector of speciar partial molar volumes.
* Length = m_kk. units are m^3/kmol.
*/
virtual void getPartialMolarVolumes(doublereal* vbar) const {
err("getPartialMolarVolumes");
}
//@}
/// @name Properties of the Standard State of the Species in the Solution
//@{

View file

@ -355,7 +355,7 @@ namespace Cantera {
/*
* Now, update the State class with the results. This
* store the denisty.
* stores the density.
*/
State::setDensity(dd);
@ -1704,7 +1704,7 @@ namespace Cantera {
}
/**
/*
* @internal
* Set equation of state parameters. The number and meaning of
* these depends on the subclass.
@ -1716,7 +1716,8 @@ namespace Cantera {
}
void DebyeHuckel::getParameters(int &n, doublereal * const c) {
}
/**
/*
* Set equation of state parameter values from XML
* entries. This method is called by function importPhase in
* file importCTML.cpp when processing a phase definition in
@ -1733,7 +1734,7 @@ namespace Cantera {
void DebyeHuckel::setParametersFromXML(const XML_Node& eosdata) {
}
/**
/*
* Report the molar volume of species k
*
* units - \f$ m^3 kmol^-1 \f$
@ -1743,7 +1744,7 @@ namespace Cantera {
//}
/**
/*
* A_Debye_TP() (virtual)
*
* Returns the A_Debye parameter as a function of temperature
@ -1779,7 +1780,7 @@ namespace Cantera {
return A;
}
/**
/*
* dA_DebyedT_TP() (virtual)
*
* Returns the derivative of the A_Debye parameter with

View file

@ -162,8 +162,58 @@ namespace Cantera {
*
* <b> Specification of Solution Thermodynamic Properties </b>
*
* All solution properties are obtained from the standard state
* species functions, since there is only one species in the phase.
* DHFORM_DILUTE_LIMIT = 0
*
* This form assumes a dilute limit to DH, and is mainly
* for informational purposes:
* \f[
* \frac{\ln(\gamma_k^\triangle)}{ R T} = - z_k^2 A_{Debye} \sqrt{I}
* \f]
* where I is the ionic strength
* \f[
* I = \frac{1}{2} \sum_k{m_k z_k^2}
* \f]
*
* DHFORM_BDOT_AK = 1
*
* This form assumes Bethke's format for the DH coefficient
*
* ln(gamma_k)/RT = -z_k**2 * alpha * sqrt(I) / (1 + B * a_k * sqrt(I))
* + bdot_k * I
*
* (note, this particular form where a_k can differ in
* multielectrolyte
* solutions has problems wrt a gibbs-duhem analysis. However
* we include it here because there is a lot of data fit to it)
*
* DHFORM_BDOT_AUNIFORM = 2
*
* This form assumes Bethke's format for the DH coefficient
*
* ln(gamma_k)/RT = -z_k**2 * alpha * sqrt(I) / (1 + B * a * sqrt(I))
* + bdot_k * I
*
* The value of a is determined at the beginning of the
* calculation, and not changed.
*
* DHFORM_BETAIJ = 3
*
* This form assumes a linear expansion in a virial coefficient form
* It is used extensively in Newmann's book, and is the beginning of
* more complex treatments for stronger electrolytes, like Pitzer
* and HMW treatments.
*
* ln(gamma_k)/RT = -z_k**2 * alpha * sqrt(I) / (1 + B * a * sqrt(I))
* + 2* sum_j (beta_jk m_j)
*
* DHFORM_PITZER_BETAIJ = 4
*
* This form assumes an activity coefficient formulation consistent
* with a truncated form of Pitzer's formulation.
*
* ln(gamma_k)/RT = -z_k**2 * alpha * sqrt(I) / (1 + B * a * sqrt(I))
* -2 * z_k**2 * alpha * ln(1 + B * a * sqrt(I)) / (B * a)
* + 2 * sum_j (beta_jk m_j)
*
* <b> %Application within %Kinetics Managers </b>
*
@ -619,27 +669,9 @@ namespace Cantera {
*/
virtual void getChemPotentials(doublereal* mu) const;
/**
* Get the species electrochemical potentials.
* These are partial molar quantities.
* This method adds a term \f$ Fz_k \phi_k \f$ to the
* to each chemical potential.
*
* Units: J/kmol
*/
void getElectrochemPotentials(doublereal* mu) const {
getChemPotentials(mu);
double ve = Faraday * electricPotential();
for (int k = 0; k < m_kk; k++) {
mu[k] += ve*charge(k);
}
}
/**
* 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
* \f[
@ -651,30 +683,29 @@ namespace Cantera {
* are computed by the species thermodynamic
* property manager. They are polynomial functions of temperature.
* @see SpeciesThermo
*
* @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:
* \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$,
@ -682,10 +713,23 @@ namespace Cantera {
* 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;
//! Get the species partial molar volumes. Units: m^3/kmol.
//! 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;
//! 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 equal to the
* constant species molar volumes.
@ -695,15 +739,6 @@ namespace Cantera {
*/
virtual void getPartialMolarVolumes(doublereal* vbar) const;
//! Get the partial molar heat capacities 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;
//@}
/// @name Properties of the Standard State of the Species
@ -1014,9 +1049,10 @@ namespace Cantera {
*/
virtual void constructPhaseFile(std::string infile, std::string id="");
/*
* Import and initialize a DebyeHuckel phase
* specification in an XML tree into the current object.
//! Import and initialize a DebyeHuckel 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.
@ -1034,6 +1070,7 @@ namespace Cantera {
* point to an XML phase object, it must have
* sibling nodes "speciesData" that describe
* the species in the phase.
*
* @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.
@ -1043,25 +1080,76 @@ namespace Cantera {
virtual void initThermoXML(XML_Node& phaseNode, std::string id);
/**
* Value of the Debye Huckel constant as a function of temperature
* and pressure.
//! Return the Debye Huckel constant as a function of temperature
//! and pressure (Units = sqrt(kg/gmol))
/*!
* The default is to assume that it is constant, given
* in the initialization process, and storred in the
* member double, m_A_Debye. Optionally, a full water treatment may be employed that makes
* \f$ A_{Debye} \f$ a full function of T and P.
*
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
* \f[
* A_{Debye} = \frac{F e B_{Debye}}{8 \pi \epsilon R T} {\left( C_o \tilde{M}_o \right)}^{1/2}
* \f]
* where
*
* \f[
* B_{Debye} = \frac{F} {{(\frac{\epsilon R T}{2})}^{1/2}}
* \f]
* Therefore:
* \f[
* A_{Debye} = \frac{1}{8 \pi}
* {\left(\frac{2 N_a \rho_o}{1000}\right)}^{1/2}
* {\left(\frac{N_a e^2}{\epsilon R T }\right)}^{3/2}
* \f]
*
* Units = sqrt(kg/gmol)
*
* where
* - \f$ N_a \f$ is Avrogadro's number
* - \f$ \rho_w \f$ is the density of water
* - \f$ e \f$ is the electronic charge
* - \f$ \epsilon = K \epsilon_o \f$ is the permitivity of water
* where \f$ K \f$ is the dielectric condstant of water,
* and \f$ \epsilon_o \f$ is the permitivity of free space.
* = \f$ \rho_o \f$ is the density of the solvent in its standard state.
*
* Nominal value at 298 K and 1 atm = 1.172576 (kg/gmol)<SUP>1/2</SUP>
* based on:
* - \f$ \epsilon / \epsilon_0 \f$ = 78.54
* (water at 25C)
* - \f$ \epsilon_0 \f$= 8.854187817E-12 C<SUP>2</SUP> N<SUP>-1</SUP> m<SUP>-2</SUP>
* - e = 1.60217653E-19 C
* - F = 9.6485309E7 C kmol<SUP>-1</SUP>
* - R = 8.314472E3 kg m<SUP>2</SUP> s<SUP>-2</SUP> kmol<SUP>-1</SUP> K<SUP>-1</SUP>
* - T = 298.15 K
* - B_Debye = 3.28640E9 (kg/gmol)<SUP>1/2</SUP> m<SUP>-1</SUP>
* - \f$N_a\f$ = 6.0221415E26 kmol<SUP>-1</SUP>
*
* @param temperature Temperature in kelvin. Defaults to -1, in which
* case the temperature of the phase is assumed.
*
* @param pressure Pressure (Pa). Defaults to -1, in which
* case the pressure of the phase is assumed.
*/
virtual double A_Debye_TP(double temperature = -1.0,
double pressure = -1.0) const;
/**
* Value of the derivative of the Debye Huckel constant with
* respect to temperature as a function of temperature
* and pressure.
//! Value of the derivative of the Debye Huckel constant with
//! respect to temperature.
/*!
* This is a function of temperature and pressure. See A_Debye_TP() for
* a definition of \f$ A_{Debye} \f$.
* .
* Units = sqrt(kg/gmol) K-1
*
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
* @param temperature Temperature in kelvin. Defaults to -1, in which
* case the temperature of the phase is assumed.
*
* Units = sqrt(kg/gmol)
* @param pressure Pressure (Pa). Defaults to -1, in which
* case the pressure of the phase is assumed.
*/
virtual double dA_DebyedT_TP(double temperature = -1.0,
double pressure = -1.0) const;
@ -1074,6 +1162,12 @@ namespace Cantera {
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
*
* Units = sqrt(kg/gmol)
*
* @param temperature Temperature in kelvin. Defaults to -1, in which
* case the temperature of the phase is assumed.
*
* @param pressure Pressure (Pa). Defaults to -1, in which
* case the pressure of the phase is assumed.
*/
virtual double d2A_DebyedT2_TP(double temperature = -1.0,
double pressure = -1.0) const;
@ -1086,28 +1180,31 @@ namespace Cantera {
* A_Debye = (F e B_Debye) / (8 Pi epsilon R T)
*
* Units = sqrt(kg/gmol)
*
* @param temperature Temperature in kelvin. Defaults to -1, in which
* case the temperature of the phase is assumed.
*
* @param pressure Pressure (Pa). Defaults to -1, in which
* case the pressure of the phase is assumed.
*/
virtual double dA_DebyedP_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;
/**
*
* formDH():
*
* Returns the form of the Debye-Huckel parameterization used
*/
//! Returns the form of the Debye-Huckel parameterization used
int formDH() const { return m_formDH; }
//! Returns a reference to M_Beta_ij
Array2D& get_Beta_ij() { return m_Beta_ij; }
private:
/* Static function that implements the non-polar species
* salt-out modifications.
* Returns the calculated activity coefficients.
@ -1204,6 +1301,8 @@ namespace Cantera {
*/
double m_maxIionicStrength;
public:
/**
* If true, then the fixed for of Helgeson's activity
* for water is used instead of the rigoruous form
@ -1211,7 +1310,6 @@ namespace Cantera {
* used with caution, and is really only included as a
* validation exercise.
*/
public:
bool m_useHelgesonFixedForm;
protected:
/**
@ -1239,6 +1337,7 @@ namespace Cantera {
int m_form_A_Debye;
protected:
/**
* A_Debye -> this expression appears on the top of the
* ln actCoeff term in the general Debye-Huckel

View file

@ -458,22 +458,6 @@ namespace Cantera {
*/
virtual void getChemPotentials(doublereal* mu) const;
/**
* Get the species electrochemical potentials.
* These are partial molar quantities.
* This method adds a term \f$ Fz_k \phi_k \f$ to the
* to each chemical potential.
*
* Units: J/kmol
*/
void getElectrochemPotentials(doublereal* mu) const {
getChemPotentials(mu);
double ve = Faraday * electricPotential();
for (int k = 0; k < m_kk; k++) {
mu[k] += ve*charge(k);
}
}
/**
* Returns an array of partial molar enthalpies for the species
* in the mixture.

View file

@ -524,26 +524,6 @@ namespace Cantera {
*/
virtual void getChemPotentials(doublereal* mu) const;
/**
* Get the species electrochemical potentials: Units: J/kmol.
*
* These are partial molar quantities.
* This method adds a term \f$ Fz_k \phi_k \f$ to the
* to each chemical potential.
*
* Units: J/kmol
*
* @param mu Output vector of electrochemical potentials.
* Length: m_kk.
*/
void getElectrochemPotentials(doublereal* mu) const {
getChemPotentials(mu);
double ve = Faraday * electricPotential();
for (int k = 0; k < m_kk; k++) {
mu[k] += ve*charge(k);
}
}
//! Returns an array of partial molar enthalpies for the species in the mixture.
/*!
* Units (J/kmol)

View file

@ -42,6 +42,14 @@ namespace Cantera {
* variables for holding the species reference-state values of Cp, H, S, and V at the
* last temperature and reference pressure called. These functions are not recalculated
* if a new call is made using the previous temperature.
*
* This class is usually used for nearly incompressible phases. For those phases, it
* makes sense to change the equation of state independent variable from density to pressure.
*
* @todo
* Put some teeth into this level by overloading the setDensity() function. It should
* now throw an exception. Instead, setPressure routines should calculate the
* solution density and then call State:setDensity() directly.
*
* @nosubgrouping
*/
@ -110,7 +118,8 @@ namespace Cantera {
/*!
* @name Properties of the Standard State of the Species in the Solution (VPStandardStateTP)
*
* Within VPStandardStateTP, these properties are calculated via a common routine, _updateStandardStateThermo(),
* Within VPStandardStateTP, these properties are calculated via a common routine,
* _updateStandardStateThermo(),
* which must be overloaded in inherited objects.
* The values are cached within this object, and are not recalculated unless
* the temperature or pressure changes.