Cantera  4.0.0a1
Loading...
Searching...
No Matches
IdealGasPhase.h
Go to the documentation of this file.
1/**
2 * @file IdealGasPhase.h
3 * ThermoPhase object for the ideal gas equation of
4 * state - workhorse for %Cantera (see @ref thermoprops
5 * and class @link Cantera::IdealGasPhase IdealGasPhase@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_IDEALGASPHASE_H
12#define CT_IDEALGASPHASE_H
13
14#include "ThermoPhase.h"
15
16namespace Cantera
17{
18
19//! Class IdealGasPhase represents low-density gases that obey the ideal gas
20//! equation of state.
21/*!
22 *
23 * IdealGasPhase derives from class ThermoPhase, and overloads the virtual
24 * methods defined there with ones that use expressions appropriate for ideal
25 * gas mixtures.
26 *
27 * The independent unknowns are density, mass fraction, and temperature. the
28 * #setPressure() function will calculate the density consistent with the
29 * current mass fraction vector and temperature and the desired pressure, and
30 * then set the density.
31 *
32 * ## Specification of Species Standard State Properties
33 *
34 * It is assumed that the reference state thermodynamics may be obtained by a
35 * pointer to a populated species thermodynamic property manager class in the
36 * base class, ThermoPhase::m_spthermo (see the base class @link
37 * Cantera::MultiSpeciesThermo MultiSpeciesThermo @endlink for a description of
38 * the specification of reference state species thermodynamics functions). The
39 * reference state, where the pressure is fixed at a single pressure, is a key
40 * species property calculation for the Ideal Gas Equation of state.
41 *
42 * This class is optimized for speed of execution. All calls to thermodynamic
43 * functions first call internal routines (aka #enthalpy_RT_ref()) which return
44 * references the reference state thermodynamics functions. Within these
45 * internal reference state functions, the function #updateThermo() is called,
46 * that first checks to see whether the temperature has changed. If it has, it
47 * updates the internal reference state thermo functions by calling the
48 * MultiSpeciesThermo object.
49 *
50 * Functions for the calculation of standard state properties for species at
51 * arbitrary pressure are provided in IdealGasPhase. However, they are all
52 * derived from their reference state counterparts.
53 *
54 * The standard state enthalpy is independent of pressure:
55 *
56 * @f[
57 * h^o_k(T,P) = h^{ref}_k(T)
58 * @f]
59 *
60 * The standard state constant-pressure heat capacity is independent of pressure:
61 *
62 * @f[
63 * Cp^o_k(T,P) = Cp^{ref}_k(T)
64 * @f]
65 *
66 * The standard state entropy depends in the following fashion on pressure:
67 *
68 * @f[
69 * S^o_k(T,P) = S^{ref}_k(T) - R \ln(\frac{P}{P_{ref}})
70 * @f]
71 * The standard state Gibbs free energy is obtained from the enthalpy and entropy
72 * functions:
73 *
74 * @f[
75 * \mu^o_k(T,P) = h^o_k(T,P) - S^o_k(T,P) T
76 * @f]
77 *
78 * @f[
79 * \mu^o_k(T,P) = \mu^{ref}_k(T) + R T \ln( \frac{P}{P_{ref}})
80 * @f]
81 *
82 * where
83 * @f[
84 * \mu^{ref}_k(T) = h^{ref}_k(T) - T S^{ref}_k(T)
85 * @f]
86 *
87 * The standard state internal energy is obtained from the enthalpy function also
88 *
89 * @f[
90 * u^o_k(T,P) = h^o_k(T) - R T
91 * @f]
92 *
93 * The molar volume of a species is given by the ideal gas law
94 *
95 * @f[
96 * V^o_k(T,P) = \frac{R T}{P}
97 * @f]
98 *
99 * where R is the molar gas constant. For a complete list of physical constants
100 * used within %Cantera, see @ref physConstants .
101 *
102 * ## Specification of Solution Thermodynamic Properties
103 *
104 * The activity of a species defined in the phase is given by the ideal gas law:
105 * @f[
106 * a_k = X_k
107 * @f]
108 * where @f$ X_k @f$ is the mole fraction of species *k*. The chemical potential
109 * for species *k* is equal to
110 *
111 * @f[
112 * \mu_k(T,P) = \mu^o_k(T, P) + R T \ln X_k
113 * @f]
114 *
115 * In terms of the reference state, the above can be rewritten
116 *
117 * @f[
118 * \mu_k(T,P) = \mu^{ref}_k(T, P) + R T \ln \frac{P X_k}{P_{ref}}
119 * @f]
120 *
121 * The partial molar entropy for species *k* is given by the following relation,
122 *
123 * @f[
124 * \tilde{s}_k(T,P) = s^o_k(T,P) - R \ln X_k = s^{ref}_k(T) - R \ln \frac{P X_k}{P_{ref}}
125 * @f]
126 *
127 * The partial molar enthalpy for species *k* is
128 *
129 * @f[
130 * \tilde{h}_k(T,P) = h^o_k(T,P) = h^{ref}_k(T)
131 * @f]
132 *
133 * The partial molar Internal Energy for species *k* is
134 *
135 * @f[
136 * \tilde{u}_k(T,P) = u^o_k(T,P) = u^{ref}_k(T)
137 * @f]
138 *
139 * The partial molar Heat Capacity for species *k* is
140 *
141 * @f[
142 * \tilde{Cp}_k(T,P) = Cp^o_k(T,P) = Cp^{ref}_k(T)
143 * @f]
144 *
145 * ## Application within Kinetics Managers
146 *
147 * @f$ C^a_k @f$ are defined such that @f$ a_k = C^a_k / C^s_k, @f$ where @f$
148 * C^s_k @f$ is a standard concentration defined below and @f$ a_k @f$ are
149 * activities used in the thermodynamic functions. These activity (or
150 * generalized) concentrations are used by kinetics manager classes to compute
151 * the forward and reverse rates of elementary reactions. The activity
152 * concentration,@f$ C^a_k @f$,is given by the following expression.
153 *
154 * @f[
155 * C^a_k = C^s_k X_k = \frac{P}{R T} X_k
156 * @f]
157 *
158 * The standard concentration for species *k* is independent of *k* and equal to
159 *
160 * @f[
161 * C^s_k = C^s = \frac{P}{R T}
162 * @f]
163 *
164 * For example, a bulk-phase binary gas reaction between species j and k,
165 * producing a new gas species l would have the following equation for its rate
166 * of progress variable, @f$ R^1 @f$, which has units of kmol m-3 s-1.
167 *
168 * @f[
169 * R^1 = k^1 C_j^a C_k^a = k^1 (C^s a_j) (C^s a_k)
170 * @f]
171 * where
172 * @f[
173 * C_j^a = C^s a_j \quad \mbox{and} \quad C_k^a = C^s a_k
174 * @f]
175 *
176 * @f$ C_j^a @f$ is the activity concentration of species j, and
177 * @f$ C_k^a @f$ is the activity concentration of species k. @f$ C^s @f$ is the
178 * standard concentration. @f$ a_j @f$ is the activity of species j which is
179 * equal to the mole fraction of j.
180 *
181 * The reverse rate constant can then be obtained from the law of microscopic
182 * reversibility and the equilibrium expression for the system.
183 *
184 * @f[
185 * \frac{a_j a_k}{ a_l} = K_a^{o,1} = \exp(\frac{\mu^o_l - \mu^o_j - \mu^o_k}{R T} )
186 * @f]
187 *
188 * @f$ K_a^{o,1} @f$ is the dimensionless form of the equilibrium constant,
189 * associated with the pressure dependent standard states @f$ \mu^o_l(T,P) @f$
190 * and their associated activities, @f$ a_l @f$, repeated here:
191 *
192 * @f[
193 * \mu_l(T,P) = \mu^o_l(T, P) + R T \ln a_l
194 * @f]
195 *
196 * We can switch over to expressing the equilibrium constant in terms of the
197 * reference state chemical potentials
198 *
199 * @f[
200 * K_a^{o,1} = \exp(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} ) * \frac{P_{ref}}{P}
201 * @f]
202 *
203 * The concentration equilibrium constant, @f$ K_c @f$, may be obtained by
204 * changing over to activity concentrations. When this is done:
205 *
206 * @f[
207 * \frac{C^a_j C^a_k}{ C^a_l} = C^o K_a^{o,1} = K_c^1 =
208 * \exp(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} ) * \frac{P_{ref}}{RT}
209 * @f]
210 *
211 * %Kinetics managers will calculate the concentration equilibrium constant,
212 * @f$ K_c @f$, using the second and third part of the above expression as a
213 * definition for the concentration equilibrium constant.
214 *
215 * For completeness, the pressure equilibrium constant may be obtained as well
216 *
217 * @f[
218 * \frac{P_j P_k}{ P_l P_{ref}} = K_p^1 =
219 * \exp\left(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} \right)
220 * @f]
221 *
222 * @f$ K_p @f$ is the simplest form of the equilibrium constant for ideal gases.
223 * However, it isn't necessarily the simplest form of the equilibrium constant
224 * for other types of phases; @f$ K_c @f$ is used instead because it is
225 * completely general.
226 *
227 * The reverse rate of progress may be written down as
228 * @f[
229 * R^{-1} = k^{-1} C_l^a = k^{-1} (C^o a_l)
230 * @f]
231 *
232 * where we can use the concept of microscopic reversibility to write the
233 * reverse rate constant in terms of the forward rate constant and the
234 * concentration equilibrium constant, @f$ K_c @f$.
235 *
236 * @f[
237 * k^{-1} = k^1 K^1_c
238 * @f]
239 *
240 * @f$ k^{-1} @f$ has units of s-1.
241 *
242 * ## YAML Example
243 *
244 * An example ideal gas phase definition is given in the
245 * [YAML API Reference](../yaml/phases.html#ideal-gas).
246 *
247 * @ingroup thermoprops
248 */
250{
251public:
252 //! Construct and initialize an IdealGasPhase ThermoPhase object
253 //! directly from an input file
254 /*!
255 * @param inputFile Name of the input file containing the phase definition
256 * to set up the object. If blank, an empty phase will be
257 * created.
258 * @param id ID of the phase in the input file. Defaults to the
259 * empty string.
260 */
261 explicit IdealGasPhase(const string& inputFile="", const string& id="");
262
263 string type() const override {
264 return "ideal-gas";
265 }
266
267 bool isIdeal() const override {
268 return true;
269 }
270
271 //! String indicating the mechanical phase of the matter in this Phase.
272 /*!
273 * For the `IdealGasPhase`, this string is always `gas`.
274 */
275 string phaseOfMatter() const override {
276 return "gas";
277 }
278
279 //! @name Molar Thermodynamic Properties of the Solution
280 //! @{
281
282 //! Return the Molar enthalpy. Units: J/kmol.
283 /*!
284 * For an ideal gas mixture,
285 * @f[
286 * \hat h(T) = \sum_k X_k \hat h^0_k(T),
287 * @f]
288 * and is a function only of temperature. The standard-state pure-species
289 * enthalpies @f$ \hat h^0_k(T) @f$ are computed by the species
290 * thermodynamic property manager.
291 *
292 * @see MultiSpeciesThermo
293 */
294 double enthalpy_mole() const override {
295 return RT() * mean_X(enthalpy_RT_ref());
296 }
297
298 /**
299 * Molar entropy. Units: J/kmol/K.
300 * For an ideal gas mixture,
301 * @f[
302 * \hat s(T, P) = \sum_k X_k \hat s^0_k(T) - \hat R \ln \frac{P}{P^0}.
303 * @f]
304 * The reference-state pure-species entropies @f$ \hat s^0_k(T) @f$ are
305 * computed by the species thermodynamic property manager.
306 * @see MultiSpeciesThermo
307 */
308 double entropy_mole() const override;
309
310 /**
311 * Molar heat capacity at constant pressure and composition [J/kmol/K].
312 * For an ideal gas mixture,
313 * @f[
314 * \hat c_p(t) = \sum_k \hat c^0_{p,k}(T).
315 * @f]
316 * The reference-state pure-species heat capacities @f$ \hat c^0_{p,k}(T) @f$
317 * are computed by the species thermodynamic property manager.
318 * @see MultiSpeciesThermo
319 */
320 double cp_mole() const override;
321
322 /**
323 * Molar heat capacity at constant volume and composition [J/kmol/K].
324 * For an ideal gas mixture,
325 * @f[ \hat c_v = \hat c_p - \hat R. @f]
326 */
327 double cv_mole() const override;
328
329 //! @}
330 //! @name Mechanical Equation of State
331 //! @{
332
333 /**
334 * Pressure. Units: Pa.
335 * For an ideal gas mixture,
336 * @f[ P = n \hat R T. @f]
337 */
338 double pressure() const override {
339 return GasConstant * molarDensity() * temperature();
340 }
341
342 //! Set the pressure at constant temperature and composition.
343 /*!
344 * Units: Pa.
345 * This method is implemented by setting the mass density to
346 * @f[
347 * \rho = \frac{P \overline W}{\hat R T }.
348 * @f]
349 *
350 * @param p Pressure (Pa)
351 */
352 void setPressure(double p) override {
354 }
355
356 //! Set the density and pressure at constant composition.
357 /*!
358 * Units: kg/m^3, Pa.
359 * This method is implemented by setting the density to the input value and
360 * setting the temperature to
361 * @f[
362 * T = \frac{P \overline W}{\hat R \rho}.
363 * @f]
364 *
365 * @param rho Density (kg/m^3)
366 * @param p Pressure (Pa)
367 * @since New in %Cantera 3.0.
368 */
369 void setState_DP(double rho, double p) override {
370 if (p <= 0) {
371 throw CanteraError("IdealGasPhase::setState_DP",
372 "pressure must be positive");
373 }
374 setDensity(rho);
376 }
377
378 //! Returns the isothermal compressibility. Units: 1/Pa.
379 /**
380 * The isothermal compressibility is defined as
381 * @f[
382 * \kappa_T = -\frac{1}{v}\left(\frac{\partial v}{\partial P}\right)_T
383 * @f]
384 * For ideal gases it's equal to the inverse of the pressure
385 */
386 double isothermalCompressibility() const override {
387 return 1.0 / pressure();
388 }
389
390 //! Return the volumetric thermal expansion coefficient. Units: 1/K.
391 /*!
392 * The thermal expansion coefficient is defined as
393 * @f[
394 * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P
395 * @f]
396 * For ideal gases, it's equal to the inverse of the temperature.
397 */
398 double thermalExpansionCoeff() const override {
399 return 1.0 / temperature();
400 }
401
402 //! Return the internal pressure. Units: Pa.
403 /*!
404 * For ideal gases, @f$ (\partial P/\partial T)_V = P/T @f$, so
405 * @f$ \pi_T = T(P/T) - P = 0 @f$.
406 */
407 double internalPressure() const override {
408 return 0.0;
409 }
410
411 double soundSpeed() const override;
412
413 //! @}
414 //! @name Chemical Potentials and Activities
415 //!
416 //! The activity @f$ a_k @f$ of a species in solution is
417 //! related to the chemical potential by
418 //! @f[
419 //! \mu_k(T,P,X_k) = \mu_k^0(T,P) + \hat R T \ln a_k.
420 //! @f]
421 //! The quantity @f$ \mu_k^0(T,P) @f$ is the standard state chemical potential
422 //! at unit activity. It may depend on the pressure and the temperature.
423 //! However, it may not depend on the mole fractions of the species in the
424 //! solution.
425 //!
426 //! The activities are related to the generalized concentrations, @f$ \tilde
427 //! C_k @f$, and standard concentrations, @f$ C^0_k @f$, by the following
428 //! formula:
429 //!
430 //! @f[
431 //! a_k = \frac{\tilde C_k}{C^0_k}
432 //! @f]
433 //! The generalized concentrations are used in the kinetics classes to
434 //! describe the rates of progress of reactions involving the species. Their
435 //! formulation depends upon the specification of the rate constants for
436 //! reaction, especially the units used in specifying the rate constants. The
437 //! bridge between the thermodynamic equilibrium expressions that use a_k and
438 //! the kinetics expressions which use the generalized concentrations is
439 //! provided by the multiplicative factor of the standard concentrations.
440 //! @{
441
442 //! This method returns the array of generalized concentrations.
443 /*!
444 * For an ideal gas mixture, these are simply the actual concentrations.
445 *
446 * @param c Output array of generalized concentrations. The units depend
447 * upon the implementation of the reaction rate expressions within
448 * the phase.
449 */
450 void getActivityConcentrations(span<double> c) const override {
452 }
453
454 //! Returns the standard concentration @f$ C^0_k @f$, which is used to
455 //! normalize the generalized concentration.
456 /*!
457 * This is defined as the concentration by which the generalized
458 * concentration is normalized to produce the activity. In many cases, this
459 * quantity will be the same for all species in a phase. Since the activity
460 * for an ideal gas mixture is simply the mole fraction, for an ideal gas
461 * @f$ C^0_k = P/\hat R T @f$.
462 *
463 * @param k Optional parameter indicating the species. The default
464 * is to assume this refers to species 0.
465 * @return
466 * Returns the standard Concentration in units of m3 kmol-1.
467 */
468 double standardConcentration(size_t k=0) const override;
469
470 //! Get the array of non-dimensional activity coefficients at the current
471 //! solution temperature, pressure, and solution concentration.
472 /*!
473 * For ideal gases, the activity coefficients are all equal to one.
474 *
475 * @param ac Output vector of activity coefficients. Length: m_kk.
476 */
477 void getActivityCoefficients(span<double> ac) const override;
478
479 //! @}
480 //! @name Partial Molar Properties of the Solution
481 //! @{
482
483 void getChemPotentials(span<double> mu) const override;
484 void getPartialMolarEnthalpies(span<double> hbar) const override;
485 void getPartialMolarEntropies(span<double> sbar) const override;
486 void getPartialMolarIntEnergies(span<double> ubar) const override;
487 void getPartialMolarIntEnergies_TV(span<double> utilde) const override;
488 void getPartialMolarCp(span<double> cpbar) const override;
489 void getPartialMolarCv_TV(span<double> cvtilde) const override;
490 void getPartialMolarVolumes(span<double> vbar) const override;
491
492 //! @}
493 //! @name Properties of the Standard State of the Species in the Solution
494 //! @{
495
496 void getStandardChemPotentials(span<double> mu) const override;
497 void getEnthalpy_RT(span<double> hrt) const override;
498 void getEntropy_R(span<double> sr) const override;
499 void getGibbs_RT(span<double> grt) const override;
500 void getIntEnergy_RT(span<double> urt) const override;
501 void getCp_R(span<double> cpr) const override;
502 void getStandardVolumes(span<double> vol) const override;
503
504 //! @}
505 //! @name Thermodynamic Values for the Species Reference States
506 //! @{
507
508 void getEnthalpy_RT_ref(span<double> hrt) const override;
509 void getGibbs_RT_ref(span<double> grt) const override;
510 void getGibbs_ref(span<double> g) const override;
511 void getEntropy_R_ref(span<double> er) const override;
512 void getIntEnergy_RT_ref(span<double> urt) const override;
513 void getCp_R_ref(span<double> cprt) const override;
514 void getStandardVolumes_ref(span<double> vol) const override;
515
516 //! @}
517
518 bool addSpecies(shared_ptr<Species> spec) override;
519 void setToEquilState(span<const double> mu_RT) override;
520
521protected:
522 //! @name NonVirtual Internal methods to Return References to Reference State Thermo
523 //! @{
524
525 //! Returns a reference to the dimensionless reference state enthalpy vector.
526 /*!
527 * This function is part of the layer that checks/recalculates the reference
528 * state thermo functions.
529 */
530 span<const double> enthalpy_RT_ref() const {
531 updateThermo();
532 return m_h0_RT;
533 }
534
535 //! Returns a reference to the dimensionless reference state Gibbs free energy vector.
536 /*!
537 * This function is part of the layer that checks/recalculates the reference
538 * state thermo functions.
539 */
540 span<const double> gibbs_RT_ref() const {
541 updateThermo();
542 return m_g0_RT;
543 }
544
545 //! Returns a reference to the dimensionless reference state Entropy vector.
546 /*!
547 * This function is part of the layer that checks/recalculates the reference
548 * state thermo functions.
549 */
550 span<const double> entropy_R_ref() const {
551 updateThermo();
552 return m_s0_R;
553 }
554
555 //! Returns a reference to the dimensionless reference state Heat Capacity vector.
556 /*!
557 * This function is part of the layer that checks/recalculates the reference
558 * state thermo functions.
559 */
560 span<const double> cp_R_ref() const {
561 updateThermo();
562 return m_cp0_R;
563 }
564
565 //! @}
566
567 //! Reference state pressure
568 /*!
569 * Value of the reference state pressure in Pascals.
570 * All species must have the same reference state pressure.
571 */
572 double m_p0 = -1.0;
573
574 //! Temporary storage for dimensionless reference state enthalpies
575 mutable vector<double> m_h0_RT;
576
577 //! Temporary storage for dimensionless reference state heat capacities
578 mutable vector<double> m_cp0_R;
579
580 //! Temporary storage for dimensionless reference state Gibbs energies
581 mutable vector<double> m_g0_RT;
582
583 //! Temporary storage for dimensionless reference state entropies
584 mutable vector<double> m_s0_R;
585
586 mutable vector<double> m_expg0_RT;
587
588 //! Temporary array containing internally calculated partial pressures
589 mutable vector<double> m_pp;
590
591 //! Update the species reference state thermodynamic functions
592 /*!
593 * This method is called each time a thermodynamic property is requested,
594 * to check whether the internal species properties within the object
595 * need to be updated. Currently, this updates the species thermo
596 * polynomial values for the current value of the temperature. A check is
597 * made to see if the temperature has changed since the last evaluation.
598 * This object does not contain any persistent data that depends on the
599 * concentration, that needs to be updated. The state object modifies its
600 * concentration dependent information at the time the setMoleFractions()
601 * (or equivalent) call is made.
602 */
603 virtual void updateThermo() const;
604};
605
606}
607
608#endif
Header file for class ThermoPhase, the base class for phases with thermodynamic properties,...
Base class for exceptions thrown by Cantera classes.
Class IdealGasPhase represents low-density gases that obey the ideal gas equation of state.
void getGibbs_ref(span< double > g) const override
Returns the vector of the Gibbs function of the reference state at the current temperature of the sol...
double enthalpy_mole() const override
Return the Molar enthalpy. Units: J/kmol.
void getCp_R(span< double > cpr) const override
Get the nondimensional Heat Capacities at constant pressure for the species standard states at the cu...
double thermalExpansionCoeff() const override
Return the volumetric thermal expansion coefficient. Units: 1/K.
bool isIdeal() const override
Boolean indicating whether phase is ideal.
void getEntropy_R_ref(span< double > er) const override
Returns the vector of nondimensional entropies of the reference state at the current temperature of t...
void setState_DP(double rho, double p) override
Set the density and pressure at constant composition.
double m_p0
Reference state pressure.
void getPartialMolarEnthalpies(span< double > hbar) const override
Returns an array of partial molar enthalpies for the species in the mixture.
double soundSpeed() const override
Return the speed of sound. Units: m/s.
double pressure() const override
Pressure.
vector< double > m_g0_RT
Temporary storage for dimensionless reference state Gibbs energies.
void getIntEnergy_RT(span< double > urt) const override
Returns the vector of nondimensional Internal Energies of the standard state species at the current T...
vector< double > m_h0_RT
Temporary storage for dimensionless reference state enthalpies.
void getPartialMolarCp(span< double > cpbar) const override
Return an array of partial molar heat capacities for the species in the mixture.
vector< double > m_pp
Temporary array containing internally calculated partial pressures.
span< const double > enthalpy_RT_ref() const
Returns a reference to the dimensionless reference state enthalpy vector.
void getStandardChemPotentials(span< double > mu) const override
Get the array of chemical potentials at unit activity for the species at their standard states at the...
void getActivityCoefficients(span< double > ac) const override
Get the array of non-dimensional activity coefficients at the current solution temperature,...
void getGibbs_RT(span< double > grt) const override
Get the nondimensional Gibbs functions for the species in their standard states at the current T and ...
void getCp_R_ref(span< double > cprt) const override
Returns the vector of nondimensional constant pressure heat capacities of the reference state at the ...
string type() const override
String indicating the thermodynamic model implemented.
void setPressure(double p) override
Set the pressure at constant temperature and composition.
void getIntEnergy_RT_ref(span< double > urt) const override
Returns the vector of nondimensional internal Energies of the reference state at the current temperat...
void getPartialMolarIntEnergies_TV(span< double > utilde) const override
Return an array of partial molar internal energies at constant temperature and volume [J/kmol].
void getEnthalpy_RT_ref(span< double > hrt) const override
Returns the vector of nondimensional enthalpies of the reference state at the current temperature of ...
double internalPressure() const override
Return the internal pressure. Units: Pa.
double cv_mole() const override
Molar heat capacity at constant volume and composition [J/kmol/K].
void getEnthalpy_RT(span< double > hrt) const override
Get the nondimensional Enthalpy functions for the species at their standard states at the current T a...
virtual void updateThermo() const
Update the species reference state thermodynamic functions.
void setToEquilState(span< const double > mu_RT) override
This method is used by the ChemEquil equilibrium solver.
void getEntropy_R(span< double > sr) const override
Get the array of nondimensional Entropy functions for the standard state species at the current T and...
vector< double > m_s0_R
Temporary storage for dimensionless reference state entropies.
double isothermalCompressibility() const override
Returns the isothermal compressibility. Units: 1/Pa.
double entropy_mole() const override
Molar entropy.
void getPartialMolarCv_TV(span< double > cvtilde) const override
Return an array of species molar heat capacities associated with the constant-volume partial molar in...
void getGibbs_RT_ref(span< double > grt) const override
Returns the vector of nondimensional Gibbs Free Energies of the reference state at the current temper...
span< const double > cp_R_ref() const
Returns a reference to the dimensionless reference state Heat Capacity vector.
double cp_mole() const override
Molar heat capacity at constant pressure and composition [J/kmol/K].
span< const double > entropy_R_ref() const
Returns a reference to the dimensionless reference state Entropy vector.
void getPartialMolarVolumes(span< double > vbar) const override
Return an array of partial molar volumes for the species in the mixture.
void getStandardVolumes(span< double > vol) const override
Get the molar volumes of the species standard states at the current T and P of the solution.
void getPartialMolarEntropies(span< double > sbar) const override
Returns an array of partial molar entropies of the species in the solution.
double standardConcentration(size_t k=0) const override
Returns the standard concentration , which is used to normalize the generalized concentration.
vector< double > m_cp0_R
Temporary storage for dimensionless reference state heat capacities.
bool addSpecies(shared_ptr< Species > spec) override
Add a Species to this Phase.
span< const double > gibbs_RT_ref() const
Returns a reference to the dimensionless reference state Gibbs free energy vector.
void getChemPotentials(span< double > mu) const override
Get the species chemical potentials. Units: J/kmol.
void getActivityConcentrations(span< double > c) const override
This method returns the array of generalized concentrations.
void getStandardVolumes_ref(span< double > vol) const override
Get the molar volumes of the species reference states at the current T and P_ref of the solution.
string phaseOfMatter() const override
String indicating the mechanical phase of the matter in this Phase.
void getPartialMolarIntEnergies(span< double > ubar) const override
Return an array of partial molar internal energies for the species in the mixture.
virtual double molarDensity() const
Molar density (kmol/m^3).
Definition Phase.cpp:587
double temperature() const
Temperature (K).
Definition Phase.h:585
double meanMolecularWeight() const
The mean molecular weight. Units: (kg/kmol)
Definition Phase.h:676
virtual void setDensity(const double density_)
Set the internally stored density (kg/m^3) of the phase.
Definition Phase.cpp:597
double mean_X(span< const double > Q) const
Evaluate the mole-fraction-weighted mean of an array Q.
Definition Phase.cpp:627
virtual void getConcentrations(span< double > c) const
Get the species concentrations (kmol/m^3).
Definition Phase.cpp:491
virtual void setTemperature(double temp)
Set the internally stored temperature of the phase (K).
Definition Phase.h:646
Base class for a phase with thermodynamic properties.
double RT() const
Return the Gas Constant multiplied by the current temperature.
const double GasConstant
Universal Gas Constant [J/kmol/K].
Definition ct_defs.h:123
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595