Cantera  2.4.0
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members

Class for pressure dependent standard states that uses a standard state volume model of some sort. More...

#include <PDSS_SSVol.h>

Inheritance diagram for PDSS_SSVol:
[legend]
Collaboration diagram for PDSS_SSVol:
[legend]

Public Member Functions

 PDSS_SSVol ()
 Default Constructor. More...
 
Molar Thermodynamic Properties of the Species Standard State in the Solution
virtual doublereal intEnergy_mole () const
 Return the molar internal Energy in units of J kmol-1. More...
 
virtual doublereal cv_mole () const
 Return the molar const volume heat capacity in units of J kmol-1 K-1. More...
 
Mechanical Equation of State Properties
virtual void setPressure (doublereal pres)
 Sets the pressure in the object. More...
 
virtual void setTemperature (doublereal temp)
 Set the internal temperature. More...
 
virtual void setState_TP (doublereal temp, doublereal pres)
 Set the internal temperature and pressure. More...
 
virtual void setState_TR (doublereal temp, doublereal rho)
 Set the internal temperature and density. More...
 
Miscellaneous properties of the standard state
virtual doublereal satPressure (doublereal t)
 saturation pressure More...
 
Initialization of the Object
virtual void initThermo ()
 Initialization routine. More...
 
void setVolumePolynomial (double *coeffs)
 Set polynomial coefficients for the standard state molar volume as a function of temperature. More...
 
void setDensityPolynomial (double *coeffs)
 Set polynomial coefficients for the standard state density as a function of temperature. More...
 
virtual void setParametersFromXML (const XML_Node &speciesNode)
 Initialization routine for the PDSS object based on the speciesNode. More...
 
- Public Member Functions inherited from PDSS_Nondimensional
virtual doublereal enthalpy_mole () const
 Return the molar enthalpy in units of J kmol-1. More...
 
virtual doublereal entropy_mole () const
 Return the molar entropy in units of J kmol-1 K-1. More...
 
virtual doublereal gibbs_mole () const
 Return the molar Gibbs free energy in units of J kmol-1. More...
 
virtual doublereal cp_mole () const
 Return the molar const pressure heat capacity in units of J kmol-1 K-1. More...
 
virtual double enthalpy_RT_ref () const
 Return the molar enthalpy divided by RT at reference pressure. More...
 
virtual double entropy_R_ref () const
 Return the molar entropy divided by R at reference pressure. More...
 
virtual double gibbs_RT_ref () const
 Return the molar Gibbs free energy divided by RT at reference pressure. More...
 
virtual double cp_R_ref () const
 Return the molar heat capacity divided by R at reference pressure. More...
 
virtual double molarVolume_ref () const
 Return the molar volume at reference pressure. More...
 
virtual double enthalpy_RT () const
 Return the standard state molar enthalpy divided by RT. More...
 
virtual double entropy_R () const
 Return the standard state entropy divided by RT. More...
 
virtual double gibbs_RT () const
 Return the molar Gibbs free energy divided by RT. More...
 
virtual double cp_R () const
 Return the molar const pressure heat capacity divided by RT. More...
 
virtual double molarVolume () const
 Return the molar volume at standard state. More...
 
virtual double density () const
 Return the standard state density at standard state. More...
 
- Public Member Functions inherited from PDSS
 PDSS ()
 Default Constructor. More...
 
 PDSS (const PDSS &b)=delete
 
PDSSoperator= (const PDSS &b)=delete
 
virtual ~PDSS ()
 
virtual doublereal enthalpyDelp_mole () const
 Get the difference in the standard state enthalpy between the current pressure and the reference pressure, p0. More...
 
virtual doublereal entropyDelp_mole () const
 Get the difference in the standard state entropy between the current pressure and the reference pressure, p0. More...
 
virtual doublereal gibbsDelp_mole () const
 Get the difference in the standard state Gibbs free energy between the current pressure and the reference pressure, p0. More...
 
virtual doublereal cpDelp_mole () const
 Get the difference in standard state heat capacity between the current pressure and the reference pressure, p0. More...
 
doublereal refPressure () const
 Return the reference pressure for this phase. More...
 
doublereal minTemp () const
 return the minimum temperature More...
 
doublereal maxTemp () const
 return the minimum temperature More...
 
virtual doublereal pressure () const
 Returns the pressure (Pa) More...
 
virtual doublereal thermalExpansionCoeff () const
 Return the volumetric thermal expansion coefficient. Units: 1/K. More...
 
virtual doublereal temperature () const
 Return the current stored temperature. More...
 
virtual doublereal critTemperature () const
 critical temperature More...
 
virtual doublereal critPressure () const
 critical pressure More...
 
virtual doublereal critDensity () const
 critical density More...
 
doublereal molecularWeight () const
 Return the molecular weight of the species in units of kg kmol-1. More...
 
void setMolecularWeight (doublereal mw)
 Set the molecular weight of the species. More...
 
void setReferenceThermo (shared_ptr< SpeciesThermoInterpType > stit)
 Set the SpeciesThermoInterpType object used to calculate reference state properties. More...
 
virtual bool useSTITbyPDSS () const
 Returns 'true' if this object should be used in an STITbyPDSS object in the phase's reference thermo manager, or 'false' if a separate SpeciesThermoInterpType should be constructed. More...
 
virtual void setParent (VPStandardStateTP *phase, size_t k)
 Set the parent VPStandardStateTP object of this PDSS object. More...
 
virtual void reportParams (size_t &kindex, int &type, doublereal *const c, doublereal &minTemp, doublereal &maxTemp, doublereal &refPressure) const
 This utility function reports back the type of parameterization and all of the parameters for the species, index. More...
 

Private Types

enum  SSVolume_Model { tpoly, density_tpoly }
 Types of general formulations for the specification of the standard state volume. More...
 

Private Member Functions

void calcMolarVolume ()
 Does the internal calculation of the volume. More...
 

Private Attributes

SSVolume_Model volumeModel_
 Enumerated data type describing the type of volume model used to calculate the standard state volume of the species. More...
 
vector_fp TCoeff_
 coefficients for the temperature representation More...
 
doublereal dVdT_
 Derivative of the volume wrt temperature. More...
 
doublereal d2VdT2_
 2nd derivative of the volume wrt temperature More...
 

Additional Inherited Members

- Protected Attributes inherited from PDSS_Nondimensional
double m_h0_RT
 Reference state enthalpy divided by RT. More...
 
double m_cp0_R
 Reference state heat capacity divided by R. More...
 
double m_s0_R
 Reference state entropy divided by R. More...
 
double m_g0_RT
 Reference state Gibbs free energy divided by RT. More...
 
double m_V0
 Reference state molar volume (m^3/kmol) More...
 
double m_hss_RT
 Standard state enthalpy divided by RT. More...
 
double m_cpss_R
 Standard state heat capacity divided by R. More...
 
double m_sss_R
 Standard state entropy divided by R. More...
 
double m_gss_RT
 Standard state Gibbs free energy divided by RT. More...
 
double m_Vss
 Standard State molar volume (m^3/kmol) More...
 
- Protected Attributes inherited from PDSS
doublereal m_temp
 Current temperature used by the PDSS object. More...
 
doublereal m_pres
 State of the system - pressure. More...
 
doublereal m_p0
 Reference state pressure of the species. More...
 
doublereal m_minTemp
 Minimum temperature. More...
 
doublereal m_maxTemp
 Maximum temperature. More...
 
doublereal m_mw
 Molecular Weight of the species. More...
 
shared_ptr< SpeciesThermoInterpTypem_spthermo
 Pointer to the species thermodynamic property manager. More...
 

Detailed Description

Class for pressure dependent standard states that uses a standard state volume model of some sort.

Attention
This class currently does not have any test cases or examples. Its implementation may be incomplete, and future changes to Cantera may unexpectedly cause this class to stop working. If you use this class, please consider contributing examples or test cases. In the absence of new tests or examples, this class may be deprecated and removed in a future version of Cantera. See https://github.com/Cantera/cantera/issues/267 for additional information.

Class PDSS_SSVol is an implementation class that compute the properties of a single species in a phase at its standard states, for a range of temperatures and pressures. This particular class assumes that the calculation of the thermodynamics functions can be separated into a temperature polynomial representation for thermo functions that can be handled bey a SimpleThermo object and a separate calculation for the standard state volume. The Models include a cubic polynomial in temperature for either the standard state volume or the standard state density. The manager uses a SimpleThermo object to handle the calculation of the reference state. This object then adds the pressure dependencies and the volume terms to these thermo functions to complete the representation.

The class includes the following models for the representation of the standard state volume:

Specification of Species Standard State Properties

The standard molar Gibbs free energy for species k is determined from the enthalpy and entropy expressions

\[ G^o_k(T,P) = H^o_k(T,P) - S^o_k(T,P) \]

The enthalpy is calculated mostly from the MultiSpeciesThermo object's enthalpy evaluator. The dependence on pressure originates from the Maxwell relation

\[ {\left(\frac{dH^o_k}{dP}\right)}_T = T {\left(\frac{dS^o_k}{dP}\right)}_T + V^o_k \]

which is equal to

\[ {\left(\frac{dH^o_k}{dP}\right)}_T = V^o_k - T {\left(\frac{dV^o_k}{dT}\right)}_P \]

The entropy is calculated mostly from the MultiSpeciesThermo objects entropy evaluator. The dependence on pressure originates from the Maxwell relation:

\[ {\left(\frac{dS^o_k}{dP}\right)}_T = - {\left(\frac{dV^o_k}{dT}\right)}_P \]

The standard state constant-pressure heat capacity expression is obtained from taking the temperature derivative of the Maxwell relation involving the enthalpy given above to yield an expression for the pressure dependence of the heat capacity.

\[ {\left(\frac{d{C}^o_{p,k}}{dP}\right)}_T = - T {\left(\frac{{d}^2{V}^o_k}{{dT}^2}\right)}_T \]

The standard molar Internal Energy for species k is determined from the following relation.

\[ U^o_k(T,P) = H^o_k(T,P) - p V^o_k \]

XML Example

An example of the specification of a standard state for the LiCl molten salt which has a temperature dependent standard state volume.

<speciesData id="species_MoltenSalt">
<species name="LiCl(L)">
<atomArray> Li:1 Cl:1 </atomArray>
<standardState model="density_temperature_polynomial">
<densityTemperaturePolynomial units="gm/cm3" >
1.98715, -5.890906E-4, 0.0, 0.0
</densityTemperaturePolynomial>
</standardState>
<thermo>
<Shomate Pref="1 bar" Tmax="2000.0" Tmin="700.0">
<floatArray size="7">
73.18025, -9.047232, -0.316390,
0.079587, 0.013594, -417.1314,
157.6711
</floatArray>
</Shomate>
</thermo>
</species>
</speciesData>

Definition at line 133 of file PDSS_SSVol.h.

Member Enumeration Documentation

◆ SSVolume_Model

enum SSVolume_Model
strongprivate

Types of general formulations for the specification of the standard state volume.

Enumerator
tpoly 

This approximation is for a species with a cubic polynomial in temperature.

V^ss = a_0 + a_1 T + a_2 T^2 + a_3 T^3

density_tpoly 

This approximation is for a species where the density is expressed as a cubic polynomial in temperature.

V^ss = M / (a_0 + a_1 T + a_2 T^2 + a_3 T^3)

Definition at line 188 of file PDSS_SSVol.h.

Constructor & Destructor Documentation

◆ PDSS_SSVol()

Default Constructor.

Definition at line 19 of file PDSS_SSVol.cpp.

Member Function Documentation

◆ intEnergy_mole()

doublereal intEnergy_mole ( ) const
virtual

Return the molar internal Energy in units of J kmol-1.

Returns
The species standard state internal Energy in J kmol-1 at the current temperature and pressure.

Reimplemented from PDSS.

Definition at line 74 of file PDSS_SSVol.cpp.

References Cantera::GasConstant, PDSS_Nondimensional::m_h0_RT, PDSS::m_pres, PDSS::m_temp, and PDSS_Nondimensional::m_Vss.

◆ cv_mole()

doublereal cv_mole ( ) const
virtual

Return the molar const volume heat capacity in units of J kmol-1 K-1.

Returns
The species standard state Cv in J kmol-1 K-1 at the current temperature and pressure.

Reimplemented from PDSS.

Definition at line 80 of file PDSS_SSVol.cpp.

References PDSS_Nondimensional::cp_mole(), and PDSS_Nondimensional::m_V0.

◆ setPressure()

void setPressure ( doublereal  pres)
virtual

Sets the pressure in the object.

Currently, this sets the pressure in the PDSS object. It is indeterminant what happens to the owning VPStandardStateTP object.

Parameters
presPressure to be set (Pascal)

Reimplemented from PDSS.

Definition at line 106 of file PDSS_SSVol.cpp.

References PDSS::m_p0, and PDSS::m_pres.

◆ setTemperature()

void setTemperature ( doublereal  temp)
virtual

◆ setState_TP()

void setState_TP ( doublereal  temp,
doublereal  pres 
)
virtual

Set the internal temperature and pressure.

Parameters
tempTemperature (Kelvin)
prespressure (Pascals)

Reimplemented from PDSS.

Definition at line 147 of file PDSS_SSVol.cpp.

References PDSS::m_pres, and PDSS_SSVol::setTemperature().

◆ setState_TR()

void setState_TR ( doublereal  temp,
doublereal  rho 
)
virtual

Set the internal temperature and density.

Parameters
tempTemperature (Kelvin)
rhoDensity (kg m-3)

Reimplemented from PDSS.

Definition at line 153 of file PDSS_SSVol.cpp.

References PDSS::m_mw, PDSS_Nondimensional::m_Vss, and PDSS_SSVol::setTemperature().

◆ satPressure()

doublereal satPressure ( doublereal  T)
virtual

saturation pressure

Parameters
TTemperature (Kelvin)

Reimplemented from PDSS.

Definition at line 163 of file PDSS_SSVol.cpp.

◆ initThermo()

void initThermo ( )
virtual

Initialization routine.

This is a cascading call, where each level should call the the parent level.

Reimplemented from PDSS.

Definition at line 66 of file PDSS_SSVol.cpp.

References PDSS::initThermo(), PDSS::m_maxTemp, PDSS::m_minTemp, PDSS::m_p0, and PDSS::m_spthermo.

◆ setVolumePolynomial()

void setVolumePolynomial ( double *  coeffs)

Set polynomial coefficients for the standard state molar volume as a function of temperature.

Cubic polynomial (4 coefficients). Leading coefficient is the constant (temperature-independent) term [m^3/kmol].

Definition at line 52 of file PDSS_SSVol.cpp.

References PDSS_SSVol::TCoeff_, PDSS_SSVol::tpoly, and PDSS_SSVol::volumeModel_.

Referenced by PDSS_SSVol::setParametersFromXML().

◆ setDensityPolynomial()

void setDensityPolynomial ( double *  coeffs)

Set polynomial coefficients for the standard state density as a function of temperature.

Cubic polynomial (4 coefficients). Leading coefficient is the constant (temperature-independent) term [kg/m^3].

Definition at line 59 of file PDSS_SSVol.cpp.

References PDSS_SSVol::density_tpoly, PDSS_SSVol::TCoeff_, and PDSS_SSVol::volumeModel_.

Referenced by PDSS_SSVol::setParametersFromXML().

◆ setParametersFromXML()

void setParametersFromXML ( const XML_Node speciesNode)
virtual

Initialization routine for the PDSS object based on the speciesNode.

This is a cascading call, where each level should call the the parent level. This function is called before initThermo()

Reimplemented from PDSS.

Definition at line 25 of file PDSS_SSVol.cpp.

References XML_Node::attrib(), XML_Node::findByName(), Cantera::getFloatArray(), XML_Node::name(), PDSS_SSVol::setDensityPolynomial(), PDSS::setParametersFromXML(), and PDSS_SSVol::setVolumePolynomial().

◆ calcMolarVolume()

void calcMolarVolume ( )
private

Member Data Documentation

◆ volumeModel_

SSVolume_Model volumeModel_
private

Enumerated data type describing the type of volume model used to calculate the standard state volume of the species.

Definition at line 205 of file PDSS_SSVol.h.

Referenced by PDSS_SSVol::calcMolarVolume(), PDSS_SSVol::setDensityPolynomial(), and PDSS_SSVol::setVolumePolynomial().

◆ TCoeff_

vector_fp TCoeff_
private

coefficients for the temperature representation

Definition at line 208 of file PDSS_SSVol.h.

Referenced by PDSS_SSVol::calcMolarVolume(), PDSS_SSVol::setDensityPolynomial(), and PDSS_SSVol::setVolumePolynomial().

◆ dVdT_

doublereal dVdT_
mutableprivate

Derivative of the volume wrt temperature.

Definition at line 211 of file PDSS_SSVol.h.

Referenced by PDSS_SSVol::calcMolarVolume().

◆ d2VdT2_

doublereal d2VdT2_
mutableprivate

2nd derivative of the volume wrt temperature

Definition at line 214 of file PDSS_SSVol.h.

Referenced by PDSS_SSVol::calcMolarVolume().


The documentation for this class was generated from the following files: