Class for pressure dependent standard states that uses a standard state volume model of some sort. More...
#include <PDSS_SSVol.h>
Class for pressure dependent standard states that uses a standard state volume model of some sort.
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 by a SpeciesThermoInterpType 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 SpeciesThermoInterpType 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:
\[ V^o_k(T,P) = a_0 + a_1 T + a_2 T^2 + a_3 T^3 \]
\[ {\rho}^o_k(T,P) = \frac{M_k}{V^o_k(T,P)} = a_0 + a_1 T + a_2 T^2 + a_3 T^3 \]
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 \]
An example of the specification of a standard state using a temperature dependent standard state volume is given in the YAML API Reference.
Definition at line 111 of file PDSS_SSVol.h.
Public Member Functions | |
PDSS_SSVol () | |
Default Constructor. | |
Molar Thermodynamic Properties of the Species Standard State | |
double | intEnergy_mole () const override |
Return the molar internal Energy in units of J kmol-1. | |
double | cv_mole () const override |
Return the molar const volume heat capacity in units of J kmol-1 K-1. | |
Mechanical Equation of State Properties | |
void | setPressure (double pres) override |
Sets the pressure in the object. | |
void | setTemperature (double temp) override |
Set the internal temperature. | |
void | setState_TP (double temp, double pres) override |
Set the internal temperature and pressure. | |
Miscellaneous properties of the standard state | |
double | satPressure (double t) override |
saturation pressure | |
Initialization of the Object | |
void | initThermo () override |
Initialization routine. | |
void | setVolumePolynomial (double *coeffs) |
Set polynomial coefficients for the standard state molar volume as a function of temperature. | |
void | setDensityPolynomial (double *coeffs) |
Set polynomial coefficients for the standard state density as a function of temperature. | |
void | getParameters (AnyMap &eosNode) const override |
Store the parameters needed to reconstruct a copy of this PDSS object. | |
Public Member Functions inherited from PDSS_Nondimensional | |
double | enthalpy_mole () const override |
Return the molar enthalpy in units of J kmol-1. | |
double | entropy_mole () const override |
Return the molar entropy in units of J kmol-1 K-1. | |
double | gibbs_mole () const override |
Return the molar Gibbs free energy in units of J kmol-1. | |
double | cp_mole () const override |
Return the molar const pressure heat capacity in units of J kmol-1 K-1. | |
double | enthalpy_RT_ref () const override |
Return the molar enthalpy divided by RT at reference pressure. | |
double | entropy_R_ref () const override |
Return the molar entropy divided by R at reference pressure. | |
double | gibbs_RT_ref () const override |
Return the molar Gibbs free energy divided by RT at reference pressure. | |
double | cp_R_ref () const override |
Return the molar heat capacity divided by R at reference pressure. | |
double | molarVolume_ref () const override |
Return the molar volume at reference pressure. | |
double | enthalpy_RT () const override |
Return the standard state molar enthalpy divided by RT. | |
double | entropy_R () const override |
Return the standard state entropy divided by RT. | |
double | gibbs_RT () const override |
Return the molar Gibbs free energy divided by RT. | |
double | cp_R () const override |
Return the molar const pressure heat capacity divided by RT. | |
double | molarVolume () const override |
Return the molar volume at standard state. | |
double | density () const override |
Return the standard state density at standard state. | |
Public Member Functions inherited from PDSS | |
virtual void | setTemperature (double temp) |
Set the internal temperature. | |
virtual double | temperature () const |
Return the current stored temperature. | |
virtual void | setState_TP (double temp, double pres) |
Set the internal temperature and pressure. | |
virtual double | critTemperature () const |
critical temperature | |
virtual double | critPressure () const |
critical pressure | |
virtual double | critDensity () const |
critical density | |
virtual double | satPressure (double T) |
saturation pressure | |
double | molecularWeight () const |
Return the molecular weight of the species in units of kg kmol-1. | |
void | setMolecularWeight (double mw) |
Set the molecular weight of the species. | |
PDSS ()=default | |
Default Constructor. | |
PDSS (const PDSS &b)=delete | |
PDSS & | operator= (const PDSS &b)=delete |
double | refPressure () const |
Return the reference pressure for this phase. | |
double | minTemp () const |
return the minimum temperature | |
double | maxTemp () const |
return the minimum temperature | |
virtual double | pressure () const |
Returns the pressure (Pa) | |
virtual double | thermalExpansionCoeff () const |
Return the volumetric thermal expansion coefficient. Units: 1/K. | |
void | setReferenceThermo (shared_ptr< SpeciesThermoInterpType > stit) |
Set the SpeciesThermoInterpType object used to calculate reference state properties. | |
virtual void | setParent (VPStandardStateTP *phase, size_t k) |
Set the parent VPStandardStateTP object of this PDSS object. | |
void | setParameters (const AnyMap &node) |
Set model parameters from an AnyMap phase description, for example from the equation-of-state field of a species definition. | |
Private Types | |
enum class | 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. | |
Private Attributes | |
SSVolume_Model | volumeModel_ = SSVolume_Model::tpoly |
Enumerated data type describing the type of volume model used to calculate the standard state volume of the species. | |
vector< double > | TCoeff_ |
coefficients for the temperature representation | |
double | dVdT_ |
Derivative of the volume wrt temperature. | |
double | d2VdT2_ |
2nd derivative of the volume wrt temperature | |
Additional Inherited Members | |
Protected Attributes inherited from PDSS_Nondimensional | |
double | m_h0_RT |
Reference state enthalpy divided by RT. | |
double | m_cp0_R |
Reference state heat capacity divided by R. | |
double | m_s0_R |
Reference state entropy divided by R. | |
double | m_g0_RT |
Reference state Gibbs free energy divided by RT. | |
double | m_V0 |
Reference state molar volume (m^3/kmol) | |
double | m_hss_RT |
Standard state enthalpy divided by RT. | |
double | m_cpss_R |
Standard state heat capacity divided by R. | |
double | m_sss_R |
Standard state entropy divided by R. | |
double | m_gss_RT |
Standard state Gibbs free energy divided by RT. | |
double | m_Vss |
Standard State molar volume (m^3/kmol) | |
Protected Attributes inherited from PDSS | |
double | m_temp = -1.0 |
Current temperature used by the PDSS object. | |
double | m_pres = -1.0 |
State of the system - pressure. | |
double | m_p0 = -1.0 |
Reference state pressure of the species. | |
double | m_minTemp = -1.0 |
Minimum temperature. | |
double | m_maxTemp = 10000.0 |
Maximum temperature. | |
double | m_mw = 0.0 |
Molecular Weight of the species. | |
AnyMap | m_input |
Input data supplied via setParameters. | |
shared_ptr< SpeciesThermoInterpType > | m_spthermo |
Pointer to the species thermodynamic property manager. | |
|
strongprivate |
Types of general formulations for the specification of the standard state volume.
Definition at line 166 of file PDSS_SSVol.h.
PDSS_SSVol | ( | ) |
Default Constructor.
Definition at line 16 of file PDSS_SSVol.cpp.
|
overridevirtual |
Return the molar internal Energy in units of J kmol-1.
Reimplemented from PDSS.
Definition at line 84 of file PDSS_SSVol.cpp.
|
overridevirtual |
Return the molar const volume heat capacity in units of J kmol-1 K-1.
Reimplemented from PDSS.
Definition at line 90 of file PDSS_SSVol.cpp.
|
overridevirtual |
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.
pres | Pressure to be set (Pascal) |
Reimplemented from PDSS.
Definition at line 116 of file PDSS_SSVol.cpp.
|
overridevirtual |
Set the internal temperature.
temp | Temperature (Kelvin) |
Reimplemented from PDSS.
Definition at line 135 of file PDSS_SSVol.cpp.
|
overridevirtual |
Set the internal temperature and pressure.
temp | Temperature (Kelvin) |
pres | pressure (Pascals) |
Reimplemented from PDSS.
Definition at line 157 of file PDSS_SSVol.cpp.
|
overridevirtual |
saturation pressure
T | Temperature (Kelvin) |
Reimplemented from PDSS.
Definition at line 163 of file PDSS_SSVol.cpp.
|
overridevirtual |
Initialization routine.
This is a cascading call, where each level should call the the parent level.
Reimplemented from PDSS.
Definition at line 55 of file PDSS_SSVol.cpp.
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 21 of file PDSS_SSVol.cpp.
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 28 of file PDSS_SSVol.cpp.
|
overridevirtual |
Store the parameters needed to reconstruct a copy of this PDSS object.
Reimplemented from PDSS.
Definition at line 35 of file PDSS_SSVol.cpp.
|
private |
Does the internal calculation of the volume.
Definition at line 95 of file PDSS_SSVol.cpp.
|
private |
Enumerated data type describing the type of volume model used to calculate the standard state volume of the species.
Definition at line 183 of file PDSS_SSVol.h.
|
private |
coefficients for the temperature representation
Definition at line 186 of file PDSS_SSVol.h.
|
mutableprivate |
Derivative of the volume wrt temperature.
Definition at line 189 of file PDSS_SSVol.h.
|
mutableprivate |
2nd derivative of the volume wrt temperature
Definition at line 192 of file PDSS_SSVol.h.