Cantera  3.1.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
18namespace 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 */
49class PDSS_Water : public PDSS_Molar
50{
51public:
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
98 //! Set the density of the water phase
99 /*!
100 * This is a non-virtual function because it specific to this object.
101 *
102 * @param dens Density of the water (kg/m3)
103 */
104 void setDensity(double dens);
105
106 double thermalExpansionCoeff() const override;
107
108 //! Return the derivative of the volumetric thermal expansion coefficient.
109 //! Units: 1/K2.
110 /*!
111 * The thermal expansion coefficient is defined as
112 * @f[
113 * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
114 * @f]
115 */
116 double dthermalExpansionCoeffdT() const;
117
118 //! Returns the isothermal compressibility. Units: 1/Pa.
119 /*!
120 * The isothermal compressibility is defined as
121 * @f[
122 * \kappa_T = -\frac{1}{v}\left(\frac{\partial v}{\partial P}\right)_T
123 * @f]
124 * or
125 * @f[
126 * \kappa_T = \frac{1}{\rho}\left(\frac{\partial \rho}{\partial P}\right)_T
127 * @f]
128 */
129 double isothermalCompressibility() const;
130
131 //! @}
132 //! @name Miscellaneous properties of the standard state
133 //! @{
134
135 double critTemperature() const override;
136 double critPressure() const override;
137 double critDensity() const override;
138 double satPressure(double t) override;
139
140 //! Get a pointer to a changeable WaterPropsIAPWS object
142 return &m_sub;
143 }
144
145 //! Get a pointer to a changeable WaterPropsIAPWS object
147 return &m_waterProps;
148 }
149
150 void getParameters(AnyMap& eosNode) const override;
151
152 //! @}
153
154private:
155 //! Pointer to the WaterPropsIAPWS object, which does the actual calculations
156 //! for the real equation of state
157 /*!
158 * This object owns m_sub
159 */
161
162 //! Pointer to the WaterProps object
163 /*!
164 * This class is used to house several approximation
165 * routines for properties of water.
166 *
167 * This object owns m_waterProps, and the WaterPropsIAPWS object used by
168 * WaterProps is m_sub, which is defined above.
169 */
171
172 //! State of the system - density
173 /*!
174 * Density is the independent variable here, but it's hidden behind the
175 * object's interface.
176 */
177 double m_dens;
178
179 //! state of the fluid
180 /*!
181 * @code
182 * 0 WATER_GAS
183 * 1 WATER_LIQUID
184 * 2 WATER_SUPERCRIT
185 * 3 WATER_UNSTABLELIQUID
186 * 4 WATER_UNSTABLEGAS
187 * @endcode
188 */
189 int m_iState = WATER_LIQUID;
190
191 /**
192 * Offset constants used to obtain consistency with the NIST database.
193 * This is added to all internal energy and enthalpy results.
194 * units = J kmol-1.
195 */
196 double EW_Offset = 0.0;
197
198 /**
199 * Offset constant used to obtain consistency with NIST convention.
200 * This is added to all internal entropy results.
201 * units = J kmol-1 K-1.
202 */
203 double SW_Offset = 0.0;
204
205public:
206 /**
207 * Since this phase represents a liquid phase, it's an error to
208 * return a gas-phase answer. However, if the below is true, then
209 * a gas-phase answer is allowed. This is used to check the thermodynamic
210 * consistency with ideal-gas thermo functions for example.
211 */
212 bool m_allowGasPhase = false;
213};
214
215}
216
217#endif
Declarations for the virtual base class PDSS (pressure dependent standard state) which handles calcul...
Headers for a class for calculating the equation of state of water from the IAPWS 1995 Formulation ba...
Header for a class used to house several approximation routines for properties of water.
A map of string keys to values whose type can vary at runtime.
Definition AnyMap.h:431
Base class for PDSS classes which compute molar properties directly.
Definition PDSS.h:426
Class for the liquid water pressure dependent standard state.
Definition PDSS_Water.h:50
WaterProps m_waterProps
Pointer to the WaterProps object.
Definition PDSS_Water.h:170
void setPressure(double pres) override
Sets the pressure in the object.
double molarVolume() const override
Return the molar volume at standard state.
void setTemperature(double temp) override
Set the internal temperature.
double enthalpy_mole() const override
Return the molar enthalpy in units of J kmol-1.
double thermalExpansionCoeff() const override
Return the volumetric thermal expansion coefficient. Units: 1/K.
WaterPropsIAPWS m_sub
Pointer to the WaterPropsIAPWS object, which does the actual calculations for the real equation of st...
Definition PDSS_Water.h:160
double pressure() const override
Returns the pressure (Pa)
double critPressure() const override
critical pressure
double SW_Offset
Offset constant used to obtain consistency with NIST convention.
Definition PDSS_Water.h:203
double critDensity() const override
critical density
WaterPropsIAPWS * getWater()
Get a pointer to a changeable WaterPropsIAPWS object.
Definition PDSS_Water.h:141
double gibbs_RT_ref() const override
Return the molar Gibbs free energy divided by RT at reference pressure.
double critTemperature() const override
critical temperature
double isothermalCompressibility() const
Returns the isothermal compressibility. Units: 1/Pa.
double entropy_R_ref() const override
Return the molar entropy divided by R at reference pressure.
double dthermalExpansionCoeffdT() const
Return the derivative of the volumetric thermal expansion coefficient.
double enthalpy_RT_ref() const override
Return the molar enthalpy divided by RT at reference pressure.
double cv_mole() const override
Return the molar const volume heat capacity in units of J kmol-1 K-1.
void getParameters(AnyMap &eosNode) const override
Store the parameters needed to reconstruct a copy of this PDSS object.
double EW_Offset
Offset constants used to obtain consistency with the NIST database.
Definition PDSS_Water.h:196
double intEnergy_mole() const override
Return the molar internal Energy in units of J kmol-1.
double entropy_mole() const override
Return the molar entropy in units of J kmol-1 K-1.
void setState_TP(double temp, double pres) override
Set the internal temperature and pressure.
int m_iState
state of the fluid
Definition PDSS_Water.h:189
double cp_mole() const override
Return the molar const pressure heat capacity in units of J kmol-1 K-1.
double m_dens
State of the system - density.
Definition PDSS_Water.h:177
double pref_safe(double temp) const
Returns a reference pressure value that can be safely calculated by the underlying real equation of s...
WaterProps * getWaterProps()
Get a pointer to a changeable WaterPropsIAPWS object.
Definition PDSS_Water.h:146
double density() const override
Return the standard state density at standard state.
double gibbs_mole() const override
Return the molar Gibbs free energy in units of J kmol-1.
bool m_allowGasPhase
Since this phase represents a liquid phase, it's an error to return a gas-phase answer.
Definition PDSS_Water.h:212
double molarVolume_ref() const override
Return the molar volume at reference pressure.
void setDensity(double dens)
Set the density of the water phase.
PDSS_Water()
Default constructor.
double satPressure(double t) override
saturation pressure
double cp_R_ref() const override
Return the molar heat capacity divided by R at reference pressure.
Class for calculating the equation of state of water.
The WaterProps class is used to house several approximation routines for properties of water.
Definition WaterProps.h:38
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595