Cantera  3.0.0
Loading...
Searching...
No Matches
PDSS_SSVol.h
Go to the documentation of this file.
1/**
2 * @file PDSS_SSVol.h
3 * Declarations for the class PDSS_SSVol (pressure dependent standard state)
4 * which handles calculations for a single species with an expression for the standard state molar volume in a phase
5 * given by an enumerated data type
6 * (see class @ref pdssthermo and @link Cantera::PDSS_SSVol PDSS_SSVol@endlink).
7 */
8
9// This file is part of Cantera. See License.txt in the top-level directory or
10// at https://cantera.org/license.txt for license and copyright information.
11
12#ifndef CT_PDSS_SSVOL_H
13#define CT_PDSS_SSVOL_H
14
15#include "PDSS.h"
16
17namespace Cantera
18{
19//! Class for pressure dependent standard states that uses a standard state
20//! volume model of some sort.
21/*!
22 * @attention This class currently does not have any test cases or examples. Its
23 * implementation may be incomplete, and future changes to %Cantera may
24 * unexpectedly cause this class to stop working. If you use this class,
25 * please consider contributing examples or test cases. In the absence of
26 * new tests or examples, this class may be deprecated and removed in a
27 * future version of %Cantera. See
28 * https://github.com/Cantera/cantera/issues/267 for additional information.
29 *
30 * Class PDSS_SSVol is an implementation class that compute the properties of a
31 * single species in a phase at its standard states, for a range of temperatures
32 * and pressures. This particular class assumes that the calculation of the
33 * thermodynamics functions can be separated into a temperature polynomial
34 * representation for thermo functions that can be handled by a SpeciesThermoInterpType
35 * object and a separate calculation for the standard state volume. The Models
36 * include a cubic polynomial in temperature for either the standard state
37 * volume or the standard state density. The manager uses a SpeciesThermoInterpType object
38 * to handle the calculation of the reference state. This object then adds the
39 * pressure dependencies and the volume terms to these thermo functions to
40 * complete the representation.
41 *
42 * The class includes the following models for the representation of the
43 * standard state volume:
44 *
45 * - Temperature polynomial for the standard state volume
46 * - This standard state model is invoked with the keyword "temperature_polynomial".
47 * The standard state volume is considered a function of temperature only.
48 * @f[
49 * V^o_k(T,P) = a_0 + a_1 T + a_2 T^2 + a_3 T^3
50 * @f]
51 *
52 * - Temperature polynomial for the standard state density
53 * - This standard state model is invoked with the keyword "density_temperature_polynomial".
54 * The standard state density, which is the inverse of the volume,
55 * is considered a function of temperature only.
56 * @f[
57 * {\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
58 * @f]
59 *
60 * ## Specification of Species Standard State Properties
61 *
62 * The standard molar Gibbs free energy for species *k* is determined from
63 * the enthalpy and entropy expressions
64 *
65 * @f[
66 * G^o_k(T,P) = H^o_k(T,P) - S^o_k(T,P)
67 * @f]
68 *
69 * The enthalpy is calculated mostly from the MultiSpeciesThermo object's enthalpy
70 * evaluator. The dependence on pressure originates from the Maxwell relation
71 *
72 * @f[
73 * {\left(\frac{dH^o_k}{dP}\right)}_T = T {\left(\frac{dS^o_k}{dP}\right)}_T + V^o_k
74 * @f]
75 * which is equal to
76 *
77 * @f[
78 * {\left(\frac{dH^o_k}{dP}\right)}_T = V^o_k - T {\left(\frac{dV^o_k}{dT}\right)}_P
79 * @f]
80 *
81 * The entropy is calculated mostly from the MultiSpeciesThermo objects entropy
82 * evaluator. The dependence on pressure originates from the Maxwell relation:
83 *
84 * @f[
85 * {\left(\frac{dS^o_k}{dP}\right)}_T = - {\left(\frac{dV^o_k}{dT}\right)}_P
86 * @f]
87 *
88 * The standard state constant-pressure heat capacity expression is obtained
89 * from taking the temperature derivative of the Maxwell relation involving the
90 * enthalpy given above to yield an expression for the pressure dependence of
91 * the heat capacity.
92 *
93 * @f[
94 * {\left(\frac{d{C}^o_{p,k}}{dP}\right)}_T = - T {\left(\frac{{d}^2{V}^o_k}{{dT}^2}\right)}_T
95 * @f]
96 *
97 * The standard molar Internal Energy for species *k* is determined from the
98 * following relation.
99 *
100 * @f[
101 * U^o_k(T,P) = H^o_k(T,P) - p V^o_k
102 * @f]
103 *
104 * An example of the specification of a standard state using a temperature dependent
105 * standard state volume is given in the
106 * <a href="../../sphinx/html/yaml/species.html#density-temperature-polynomial">
107 * YAML API Reference</a>.
108 *
109 * @ingroup pdssthermo
110 */
112{
113public:
114 //! Default Constructor
115 PDSS_SSVol();
116
117 //! @name Molar Thermodynamic Properties of the Species Standard State
118 //! @{
119
120 // See PDSS.h for documentation of functions overridden from Class PDSS
121
122 double intEnergy_mole() const override;
123 double cv_mole() const override;
124
125 //! @}
126
127 //! @name Mechanical Equation of State Properties
128 //! @{
129
130 void setPressure(double pres) override;
131 void setTemperature(double temp) override;
132 void setState_TP(double temp, double pres) override;
133
134 //! @}
135 //! @name Miscellaneous properties of the standard state
136 //! @{
137
138 double satPressure(double t) override;
139
140 //! @}
141 //! @name Initialization of the Object
142 //! @{
143
144 void initThermo() override;
145
146 //! Set polynomial coefficients for the standard state molar volume as a
147 //! function of temperature. Cubic polynomial (4 coefficients). Leading
148 //! coefficient is the constant (temperature-independent) term [m^3/kmol].
149 void setVolumePolynomial(double* coeffs);
150
151 //! Set polynomial coefficients for the standard state density as a function
152 //! of temperature. Cubic polynomial (4 coefficients). Leading coefficient
153 //! is the constant (temperature-independent) term [kg/m^3].
154 void setDensityPolynomial(double* coeffs);
155
156 void getParameters(AnyMap& eosNode) const override;
157
158 //! @}
159
160private:
161 //! Does the internal calculation of the volume
162 void calcMolarVolume();
163
164 //! Types of general formulations for the specification of the standard
165 //! state volume
166 enum class SSVolume_Model {
167 //! This approximation is for a species with a cubic polynomial in
168 //! temperature
169 /*!
170 * V^ss = a_0 + a_1 T + a_2 T^2 + a_3 T^3
171 */
172 tpoly,
173 //! This approximation is for a species where the density is expressed
174 //! as a cubic polynomial in temperature
175 /*!
176 * V^ss = M / (a_0 + a_1 T + a_2 T^2 + a_3 T^3)
177 */
179 };
180
181 //! Enumerated data type describing the type of volume model
182 //! used to calculate the standard state volume of the species
184
185 //! coefficients for the temperature representation
186 vector<double> TCoeff_;
187
188 //! Derivative of the volume wrt temperature
189 mutable double dVdT_;
190
191 //! 2nd derivative of the volume wrt temperature
192 mutable double d2VdT2_;
193};
194
195}
196
197#endif
Declarations for the virtual base class PDSS (pressure dependent standard state) which handles calcul...
A map of string keys to values whose type can vary at runtime.
Definition AnyMap.h:427
Base class for PDSS classes which compute nondimensional properties directly.
Definition PDSS.h:487
Class for pressure dependent standard states that uses a standard state volume model of some sort.
Definition PDSS_SSVol.h:112
void setPressure(double pres) override
Sets the pressure in the object.
void setTemperature(double temp) override
Set the internal temperature.
double dVdT_
Derivative of the volume wrt temperature.
Definition PDSS_SSVol.h:189
void setDensityPolynomial(double *coeffs)
Set polynomial coefficients for the standard state density as a function of temperature.
void setVolumePolynomial(double *coeffs)
Set polynomial coefficients for the standard state molar volume as a function of temperature.
void initThermo() override
Initialization routine.
double cv_mole() const override
Return the molar const volume heat capacity in units of J kmol-1 K-1.
PDSS_SSVol()
Default Constructor.
void getParameters(AnyMap &eosNode) const override
Store the parameters needed to reconstruct a copy of this PDSS object.
vector< double > TCoeff_
coefficients for the temperature representation
Definition PDSS_SSVol.h:186
double intEnergy_mole() const override
Return the molar internal Energy in units of J kmol-1.
void setState_TP(double temp, double pres) override
Set the internal temperature and pressure.
SSVolume_Model
Types of general formulations for the specification of the standard state volume.
Definition PDSS_SSVol.h:166
@ tpoly
This approximation is for a species with a cubic polynomial in temperature.
@ density_tpoly
This approximation is for a species where the density is expressed as a cubic polynomial in temperatu...
void calcMolarVolume()
Does the internal calculation of the volume.
double d2VdT2_
2nd derivative of the volume wrt temperature
Definition PDSS_SSVol.h:192
SSVolume_Model volumeModel_
Enumerated data type describing the type of volume model used to calculate the standard state volume ...
Definition PDSS_SSVol.h:183
double satPressure(double t) override
saturation pressure
Namespace for the Cantera kernel.
Definition AnyMap.cpp:564