| Cantera 3.0.0

Loading...
Searching...
No Matches
PDSS_Water.h
Go to the documentation of this file.
1/**
2 * @file PDSS_Water.h
3 * Implementation of a pressure dependent standard state
4 * virtual function for a Pure Water Phase
5 * (see @ref pdssthermo and class @link Cantera::PDSS_Water PDSS_Water@endlink).
6 */
7
8// This file is part of Cantera. See License.txt in the top-level directory or
9// at https://cantera.org/license.txt for license and copyright information.
10
11#ifndef CT_PDSS_WATER_H
12#define CT_PDSS_WATER_H
13
14#include "PDSS.h"
15#include "WaterPropsIAPWS.h"
16#include "WaterProps.h"
17
18 namespace Cantera
19{
20//! Class for the liquid water pressure dependent
21//! standard state
22/*!
23 * Notes:
24 *
25 * Base state for thermodynamic properties:
26 *
27 * The thermodynamic base state for water is set to the NIST basis here by
28 * specifying constants EW_Offset and SW_Offset. These offsets are specified so
29 * that the following properties hold:
30 *
31 * Delta_Hfo_gas(298.15) = -241.826 kJ/gmol
32 * So_gas(298.15, 1bar) = 188.835 J/gmolK
33 *
34 * (http://webbook.nist.gov)
35 *
36 * The "o" here refers to a hypothetical ideal gas state. The way we achieve
37 * this in practice is to evaluate at a very low pressure and then use the
38 * theoretical ideal gas results to scale up to higher pressures:
39 *
40 * Ho(1bar) = H(P0)
41 *
42 * So(1bar) = S(P0) + RT ln(1bar/P0)
43 *
44 * The offsets used in the steam tables are different than NIST's. They assume
45 * u_liq(TP) = 0.0, s_liq(TP) = 0.0, where TP is the triple point conditions.
46 *
47 * @ingroup pdssthermo
48 */
49 class PDSS_Water : public PDSS_Molar
50{
51 public:
52 //! Default constructor
53 PDSS_Water();
54
55 //! @name Molar Thermodynamic Properties of the Species Standard State
56 //! @{
57
58 // See PDSS.h for documentation of functions overridden from Class PDSS
59
60 double enthalpy_mole() const override;
61 double intEnergy_mole() const override;
62 double entropy_mole() const override;
63 double gibbs_mole() const override;
64 double cp_mole() const override;
65 double cv_mole() const override;
66 double molarVolume() const override;
67 double density() const override;
68
69 //! @}
70 //! @name Properties of the Reference State of the Species in the Solution
71 //! @{
72
73 //! Returns a reference pressure value that can be safely calculated by the
74 //! underlying real equation of state for water
75 /*!
76 * Note, this function is needed because trying to calculate a one atm value
77 * around the critical point will cause a crash
78 *
79 * @param temp Temperature (Kelvin)
80 */
81 double pref_safe(double temp) const;
82
83 double gibbs_RT_ref() const override;
84 double enthalpy_RT_ref() const override;
85 double entropy_R_ref() const override;
86 double cp_R_ref() const override;
87 double molarVolume_ref() const override;
88
89 //! @}
90 //! @name Mechanical Equation of State Properties
91 //! @{
92
93 double pressure() const override;
94 void setPressure(double pres) override;
95 void setTemperature(double temp) override;
96 void setState_TP(double temp, double pres) override;
97 void setState_TR(double temp, double rho) override;
98
99 //! Set the density of the water phase
100 /*!
101 * This is a non-virtual function because it specific to this object.
102 *
103 * @param dens Density of the water (kg/m3)
104 */
105 void setDensity(double dens);
106
107 double thermalExpansionCoeff() const override;
108
109 //! Return the derivative of the volumetric thermal expansion coefficient.
110 //! Units: 1/K2.
111 /*!
112 * The thermal expansion coefficient is defined as
113 * @f[
114 * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
115 * @f]
116 */
117 double dthermalExpansionCoeffdT() const;
118
119 //! Returns the isothermal compressibility. Units: 1/Pa.
120 /*!
121 * The isothermal compressibility is defined as
122 * @f[
123 * \kappa_T = -\frac{1}{v}\left(\frac{\partial v}{\partial P}\right)_T
124 * @f]
125 * or
126 * @f[
127 * \kappa_T = \frac{1}{\rho}\left(\frac{\partial \rho}{\partial P}\right)_T
128 * @f]
129 */
130 double isothermalCompressibility() const;
131
132 //! @}
133 //! @name Miscellaneous properties of the standard state
134 //! @{
135
136 double critTemperature() const override;
137 double critPressure() const override;
138 double critDensity() const override;
139 double satPressure(double t) override;
140
141 //! Get a pointer to a changeable WaterPropsIAPWS object
142 WaterPropsIAPWS* getWater() {
143 return &m_sub;
144 }
145
146 //! Get a pointer to a changeable WaterPropsIAPWS object
147 WaterProps* getWaterProps() {
148 return &m_waterProps;
149 }
150
151 void getParameters(AnyMap& eosNode) const override;
152
153 //! @}
154
155 private:
156 //! Pointer to the WaterPropsIAPWS object, which does the actual calculations
157 //! for the real equation of state
158 /*!
159 * This object owns m_sub
160 */
161 mutable WaterPropsIAPWS m_sub;
162
163 //! Pointer to the WaterProps object
164 /*!
165 * This class is used to house several approximation
166 * routines for properties of water.
167 *
168 * This object owns m_waterProps, and the WaterPropsIAPWS object used by
169 * WaterProps is m_sub, which is defined above.
170 */
171 WaterProps m_waterProps;
172
173 //! State of the system - density
174 /*!
175 * Density is the independent variable here, but it's hidden behind the
176 * object's interface.
177 */
178 double m_dens;
179
180 //! state of the fluid
181 /*!
182 * @code
183 * 0 WATER_GAS
184 * 1 WATER_LIQUID
185 * 2 WATER_SUPERCRIT
186 * 3 WATER_UNSTABLELIQUID
187 * 4 WATER_UNSTABLEGAS
188 * @endcode
189 */
190 int m_iState = WATER_LIQUID;
191
192 /**
193 * Offset constants used to obtain consistency with the NIST database.
194 * This is added to all internal energy and enthalpy results.
195 * units = J kmol-1.
196 */
197 double EW_Offset = 0.0;
198
199 /**
200 * Offset constant used to obtain consistency with NIST convention.
201 * This is added to all internal entropy results.
202 * units = J kmol-1 K-1.
203 */
204 double SW_Offset = 0.0;
205
206 public:
207 /**
208 * Since this phase represents a liquid phase, it's an error to
209 * return a gas-phase answer. However, if the below is true, then
210 * a gas-phase answer is allowed. This is used to check the thermodynamic
211 * consistency with ideal-gas thermo functions for example.
212 */
213 bool m_allowGasPhase = false;
214};
215
216}
217
218#endif
PDSS.h
Declarations for the virtual base class PDSS (pressure dependent standard state) which handles calcul...
WaterPropsIAPWS.h
Headers for a class for calculating the equation of state of water from the IAPWS 1995 Formulation ba...
WaterProps.h
Header for a class used to house several approximation routines for properties of water.
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition AnyMap.h:427
Cantera::PDSS_Molar
Base class for PDSS classes which compute molar properties directly.
Definition PDSS.h:477
Cantera::PDSS_Water
Class for the liquid water pressure dependent standard state.
Definition PDSS_Water.h:50
Cantera::PDSS_Water::m_waterProps
WaterProps m_waterProps
Pointer to the WaterProps object.
Definition PDSS_Water.h:171
Cantera::PDSS_Water::setPressure
void setPressure(double pres) override
Sets the pressure in the object.
Definition PDSS_Water.cpp:133
Cantera::PDSS_Water::molarVolume
double molarVolume() const override
Return the molar volume at standard state.
Definition PDSS_Water.cpp:82
Cantera::PDSS_Water::setTemperature
void setTemperature(double temp) override
Set the internal temperature.
Definition PDSS_Water.cpp:212
Cantera::PDSS_Water::enthalpy_mole
double enthalpy_mole() const override
Return the molar enthalpy in units of J kmol-1.
Definition PDSS_Water.cpp:52
Cantera::PDSS_Water::thermalExpansionCoeff
double thermalExpansionCoeff() const override
Return the volumetric thermal expansion coefficient. Units: 1/K.
Definition PDSS_Water.cpp:160
Cantera::PDSS_Water::m_sub
WaterPropsIAPWS m_sub
Pointer to the WaterPropsIAPWS object, which does the actual calculations for the real equation of st...
Definition PDSS_Water.h:161
Cantera::PDSS_Water::pressure
double pressure() const override
Returns the pressure (Pa)
Definition PDSS_Water.cpp:127
Cantera::PDSS_Water::critPressure
double critPressure() const override
critical pressure
Definition PDSS_Water.cpp:191
Cantera::PDSS_Water::SW_Offset
double SW_Offset
Offset constant used to obtain consistency with NIST convention.
Definition PDSS_Water.h:204
Cantera::PDSS_Water::critDensity
double critDensity() const override
critical density
Definition PDSS_Water.cpp:196
Cantera::PDSS_Water::getWater
WaterPropsIAPWS * getWater()
Get a pointer to a changeable WaterPropsIAPWS object.
Definition PDSS_Water.h:142
Cantera::PDSS_Water::gibbs_RT_ref
double gibbs_RT_ref() const override
Return the molar Gibbs free energy divided by RT at reference pressure.
Definition PDSS_Water.cpp:87
Cantera::PDSS_Water::critTemperature
double critTemperature() const override
critical temperature
Definition PDSS_Water.cpp:186
Cantera::PDSS_Water::isothermalCompressibility
double isothermalCompressibility() const
Returns the isothermal compressibility. Units: 1/Pa.
Definition PDSS_Water.cpp:181
Cantera::PDSS_Water::entropy_R_ref
double entropy_R_ref() const override
Return the molar entropy divided by R at reference pressure.
Definition PDSS_Water.cpp:103
Cantera::PDSS_Water::dthermalExpansionCoeffdT
double dthermalExpansionCoeffdT() const
Return the derivative of the volumetric thermal expansion coefficient.
Definition PDSS_Water.cpp:165
Cantera::PDSS_Water::enthalpy_RT_ref
double enthalpy_RT_ref() const override
Return the molar enthalpy divided by RT at reference pressure.
Definition PDSS_Water.cpp:95
Cantera::PDSS_Water::cv_mole
double cv_mole() const override
Return the molar const volume heat capacity in units of J kmol-1 K-1.
Definition PDSS_Water.cpp:77
Cantera::PDSS_Water::setState_TR
void setState_TR(double temp, double rho) override
Set the internal temperature and density.
Definition PDSS_Water.cpp:224
Cantera::PDSS_Water::getParameters
void getParameters(AnyMap &eosNode) const override
Store the parameters needed to reconstruct a copy of this PDSS object.
Definition PDSS_Water.cpp:253
Cantera::PDSS_Water::EW_Offset
double EW_Offset
Offset constants used to obtain consistency with the NIST database.
Definition PDSS_Water.h:197
Cantera::PDSS_Water::intEnergy_mole
double intEnergy_mole() const override
Return the molar internal Energy in units of J kmol-1.
Definition PDSS_Water.cpp:57
Cantera::PDSS_Water::entropy_mole
double entropy_mole() const override
Return the molar entropy in units of J kmol-1 K-1.
Definition PDSS_Water.cpp:62
Cantera::PDSS_Water::setState_TP
void setState_TP(double temp, double pres) override
Set the internal temperature and pressure.
Definition PDSS_Water.cpp:218
Cantera::PDSS_Water::m_iState
int m_iState
state of the fluid
Definition PDSS_Water.h:190
Cantera::PDSS_Water::cp_mole
double cp_mole() const override
Return the molar const pressure heat capacity in units of J kmol-1 K-1.
Definition PDSS_Water.cpp:72
Cantera::PDSS_Water::m_dens
double m_dens
State of the system - density.
Definition PDSS_Water.h:178
Cantera::PDSS_Water::pref_safe
double pref_safe(double temp) const
Returns a reference pressure value that can be safely calculated by the underlying real equation of s...
Definition PDSS_Water.cpp:232
Cantera::PDSS_Water::getWaterProps
WaterProps * getWaterProps()
Get a pointer to a changeable WaterPropsIAPWS object.
Definition PDSS_Water.h:147
Cantera::PDSS_Water::density
double density() const override
Return the standard state density at standard state.
Definition PDSS_Water.cpp:207
Cantera::PDSS_Water::gibbs_mole
double gibbs_mole() const override
Return the molar Gibbs free energy in units of J kmol-1.
Definition PDSS_Water.cpp:67
Cantera::PDSS_Water::m_allowGasPhase
bool m_allowGasPhase
Since this phase represents a liquid phase, it's an error to return a gas-phase answer.
Definition PDSS_Water.h:213
Cantera::PDSS_Water::molarVolume_ref
double molarVolume_ref() const override
Return the molar volume at reference pressure.
Definition PDSS_Water.cpp:119
Cantera::PDSS_Water::setDensity
void setDensity(double dens)
Set the density of the water phase.
Definition PDSS_Water.cpp:201
Cantera::PDSS_Water::PDSS_Water
PDSS_Water()
Default constructor.
Definition PDSS_Water.cpp:16
Cantera::PDSS_Water::satPressure
double satPressure(double t) override
saturation pressure
Definition PDSS_Water.cpp:245
Cantera::PDSS_Water::cp_R_ref
double cp_R_ref() const override
Return the molar heat capacity divided by R at reference pressure.
Definition PDSS_Water.cpp:111
Cantera::WaterPropsIAPWS
Class for calculating the equation of state of water.
Definition WaterPropsIAPWS.h:162
Cantera::WaterProps
The WaterProps class is used to house several approximation routines for properties of water.
Definition WaterProps.h:38
Cantera
Namespace for the Cantera kernel.
Definition AnyMap.cpp:564