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 double soundSpeed() const override;
403
404 //! @}
405 //! @name Chemical Potentials and Activities
406 //!
407 //! The activity @f$ a_k @f$ of a species in solution is
408 //! related to the chemical potential by
409 //! @f[
410 //! \mu_k(T,P,X_k) = \mu_k^0(T,P) + \hat R T \ln a_k.
411 //! @f]
412 //! The quantity @f$ \mu_k^0(T,P) @f$ is the standard state chemical potential
413 //! at unit activity. It may depend on the pressure and the temperature.
414 //! However, it may not depend on the mole fractions of the species in the
415 //! solution.
416 //!
417 //! The activities are related to the generalized concentrations, @f$ \tilde
418 //! C_k @f$, and standard concentrations, @f$ C^0_k @f$, by the following
419 //! formula:
420 //!
421 //! @f[
422 //! a_k = \frac{\tilde C_k}{C^0_k}
423 //! @f]
424 //! The generalized concentrations are used in the kinetics classes to
425 //! describe the rates of progress of reactions involving the species. Their
426 //! formulation depends upon the specification of the rate constants for
427 //! reaction, especially the units used in specifying the rate constants. The
428 //! bridge between the thermodynamic equilibrium expressions that use a_k and
429 //! the kinetics expressions which use the generalized concentrations is
430 //! provided by the multiplicative factor of the standard concentrations.
431 //! @{
432
433 //! This method returns the array of generalized concentrations.
434 /*!
435 * For an ideal gas mixture, these are simply the actual concentrations.
436 *
437 * @param c Output array of generalized concentrations. The units depend
438 * upon the implementation of the reaction rate expressions within
439 * the phase.
440 */
441 void getActivityConcentrations(span<double> c) const override {
443 }
444
445 //! Returns the standard concentration @f$ C^0_k @f$, which is used to
446 //! normalize the generalized concentration.
447 /*!
448 * This is defined as the concentration by which the generalized
449 * concentration is normalized to produce the activity. In many cases, this
450 * quantity will be the same for all species in a phase. Since the activity
451 * for an ideal gas mixture is simply the mole fraction, for an ideal gas
452 * @f$ C^0_k = P/\hat R T @f$.
453 *
454 * @param k Optional parameter indicating the species. The default
455 * is to assume this refers to species 0.
456 * @return
457 * Returns the standard Concentration in units of m3 kmol-1.
458 */
459 double standardConcentration(size_t k=0) const override;
460
461 //! Get the array of non-dimensional activity coefficients at the current
462 //! solution temperature, pressure, and solution concentration.
463 /*!
464 * For ideal gases, the activity coefficients are all equal to one.
465 *
466 * @param ac Output vector of activity coefficients. Length: m_kk.
467 */
468 void getActivityCoefficients(span<double> ac) const override;
469
470 //! @}
471 //! @name Partial Molar Properties of the Solution
472 //! @{
473
474 void getChemPotentials(span<double> mu) const override;
475 void getPartialMolarEnthalpies(span<double> hbar) const override;
476 void getPartialMolarEntropies(span<double> sbar) const override;
477 void getPartialMolarIntEnergies(span<double> ubar) const override;
478 void getPartialMolarCp(span<double> cpbar) const override;
479 void getPartialMolarVolumes(span<double> vbar) const override;
480
481 //! @}
482 //! @name Properties of the Standard State of the Species in the Solution
483 //! @{
484
485 void getStandardChemPotentials(span<double> mu) const override;
486 void getEnthalpy_RT(span<double> hrt) const override;
487 void getEntropy_R(span<double> sr) const override;
488 void getGibbs_RT(span<double> grt) const override;
489 void getIntEnergy_RT(span<double> urt) const override;
490 void getCp_R(span<double> cpr) const override;
491 void getStandardVolumes(span<double> vol) const override;
492
493 //! @}
494 //! @name Thermodynamic Values for the Species Reference States
495 //! @{
496
497 void getEnthalpy_RT_ref(span<double> hrt) const override;
498 void getGibbs_RT_ref(span<double> grt) const override;
499 void getGibbs_ref(span<double> g) const override;
500 void getEntropy_R_ref(span<double> er) const override;
501 void getIntEnergy_RT_ref(span<double> urt) const override;
502 void getCp_R_ref(span<double> cprt) const override;
503 void getStandardVolumes_ref(span<double> vol) const override;
504
505 //! @}
506
507 bool addSpecies(shared_ptr<Species> spec) override;
508 void setToEquilState(span<const double> mu_RT) override;
509
510protected:
511 //! @name NonVirtual Internal methods to Return References to Reference State Thermo
512 //! @{
513
514 //! Returns a reference to the dimensionless reference state enthalpy vector.
515 /*!
516 * This function is part of the layer that checks/recalculates the reference
517 * state thermo functions.
518 */
519 span<const double> enthalpy_RT_ref() const {
520 updateThermo();
521 return m_h0_RT;
522 }
523
524 //! Returns a reference to the dimensionless reference state Gibbs free energy vector.
525 /*!
526 * This function is part of the layer that checks/recalculates the reference
527 * state thermo functions.
528 */
529 span<const double> gibbs_RT_ref() const {
530 updateThermo();
531 return m_g0_RT;
532 }
533
534 //! Returns a reference to the dimensionless reference state Entropy vector.
535 /*!
536 * This function is part of the layer that checks/recalculates the reference
537 * state thermo functions.
538 */
539 span<const double> entropy_R_ref() const {
540 updateThermo();
541 return m_s0_R;
542 }
543
544 //! Returns a reference to the dimensionless reference state Heat Capacity vector.
545 /*!
546 * This function is part of the layer that checks/recalculates the reference
547 * state thermo functions.
548 */
549 span<const double> cp_R_ref() const {
550 updateThermo();
551 return m_cp0_R;
552 }
553
554 //! @}
555
556 //! Reference state pressure
557 /*!
558 * Value of the reference state pressure in Pascals.
559 * All species must have the same reference state pressure.
560 */
561 double m_p0 = -1.0;
562
563 //! Temporary storage for dimensionless reference state enthalpies
564 mutable vector<double> m_h0_RT;
565
566 //! Temporary storage for dimensionless reference state heat capacities
567 mutable vector<double> m_cp0_R;
568
569 //! Temporary storage for dimensionless reference state Gibbs energies
570 mutable vector<double> m_g0_RT;
571
572 //! Temporary storage for dimensionless reference state entropies
573 mutable vector<double> m_s0_R;
574
575 mutable vector<double> m_expg0_RT;
576
577 //! Temporary array containing internally calculated partial pressures
578 mutable vector<double> m_pp;
579
580 //! Update the species reference state thermodynamic functions
581 /*!
582 * This method is called each time a thermodynamic property is requested,
583 * to check whether the internal species properties within the object
584 * need to be updated. Currently, this updates the species thermo
585 * polynomial values for the current value of the temperature. A check is
586 * made to see if the temperature has changed since the last evaluation.
587 * This object does not contain any persistent data that depends on the
588 * concentration, that needs to be updated. The state object modifies its
589 * concentration dependent information at the time the setMoleFractions()
590 * (or equivalent) call is made.
591 */
592 virtual void updateThermo() const;
593};
594
595}
596
597#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 getEnthalpy_RT_ref(span< double > hrt) const override
Returns the vector of nondimensional enthalpies of the reference state at the current temperature of ...
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 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