Cantera  3.2.0a2
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 * [YAML API Reference](../yaml/species.html#density-temperature-polynomial).
107 *
108 * @ingroup pdssthermo
109 */
111{
112public:
113 //! Default Constructor
114 PDSS_SSVol();
115
116 //! @name Molar Thermodynamic Properties of the Species Standard State
117 //! @{
118
119 // See PDSS.h for documentation of functions overridden from Class PDSS
120
121 double intEnergy_mole() const override;
122 double cv_mole() const override;
123
124 //! @}
125
126 //! @name Mechanical Equation of State Properties
127 //! @{
128
129 void setPressure(double pres) override;
130 void setTemperature(double temp) override;
131 void setState_TP(double temp, double pres) override;
132
133 //! @}
134 //! @name Miscellaneous properties of the standard state
135 //! @{
136
137 double satPressure(double t) override;
138
139 //! @}
140 //! @name Initialization of the Object
141 //! @{
142
143 void initThermo() override;
144
145 //! Set polynomial coefficients for the standard state molar volume as a
146 //! function of temperature. Cubic polynomial (4 coefficients). Leading
147 //! coefficient is the constant (temperature-independent) term [m^3/kmol].
148 void setVolumePolynomial(double* coeffs);
149
150 //! Set polynomial coefficients for the standard state density as a function
151 //! of temperature. Cubic polynomial (4 coefficients). Leading coefficient
152 //! is the constant (temperature-independent) term [kg/m^3].
153 void setDensityPolynomial(double* coeffs);
154
155 void getParameters(AnyMap& eosNode) const override;
156
157 //! @}
158
159private:
160 //! Does the internal calculation of the volume
161 void calcMolarVolume();
162
163 //! Types of general formulations for the specification of the standard
164 //! state volume
165 enum class SSVolume_Model {
166 //! This approximation is for a species with a cubic polynomial in
167 //! temperature
168 /*!
169 * V^ss = a_0 + a_1 T + a_2 T^2 + a_3 T^3
170 */
171 tpoly,
172 //! This approximation is for a species where the density is expressed
173 //! as a cubic polynomial in temperature
174 /*!
175 * V^ss = M / (a_0 + a_1 T + a_2 T^2 + a_3 T^3)
176 */
178 };
179
180 //! Enumerated data type describing the type of volume model
181 //! used to calculate the standard state volume of the species
183
184 //! coefficients for the temperature representation
185 vector<double> TCoeff_;
186
187 //! Derivative of the volume wrt temperature
188 mutable double dVdT_;
189
190 //! 2nd derivative of the volume wrt temperature
191 mutable double d2VdT2_;
192};
193
194}
195
196#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:431
Base class for PDSS classes which compute nondimensional properties directly.
Definition PDSS.h:436
Class for pressure dependent standard states that uses a standard state volume model of some sort.
Definition PDSS_SSVol.h:111
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:188
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:185
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:165
@ 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:191
SSVolume_Model volumeModel_
Enumerated data type describing the type of volume model used to calculate the standard state volume ...
Definition PDSS_SSVol.h:182
double satPressure(double t) override
saturation pressure
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595