Cantera  2.4.0
MargulesVPSSTP.h
Go to the documentation of this file.
1 /**
2  * @file MargulesVPSSTP.h (see \ref thermoprops and class \link
3  * Cantera::MargulesVPSSTP MargulesVPSSTP\endlink).
4  */
5 
6 // This file is part of Cantera. See License.txt in the top-level directory or
7 // at http://www.cantera.org/license.txt for license and copyright information.
8 
9 #ifndef CT_MARGULESVPSSTP_H
10 #define CT_MARGULESVPSSTP_H
11 
12 #include "GibbsExcessVPSSTP.h"
13 
14 namespace Cantera
15 {
16 
17 //! MargulesVPSSTP is a derived class of GibbsExcessVPSSTP that employs the
18 //! Margules approximation for the excess Gibbs free energy
19 /*!
20  * MargulesVPSSTP derives from class GibbsExcessVPSSTP which is derived from
21  * VPStandardStateTP, and overloads the virtual methods defined there with ones
22  * that use expressions appropriate for the Margules Excess Gibbs free energy
23  * approximation.
24  *
25  * The independent unknowns are pressure, temperature, and mass fraction.
26  *
27  * ## Specification of Species Standard State Properties
28  *
29  * All species are defined to have standard states that depend upon both the
30  * temperature and the pressure. The Margules approximation assumes symmetric
31  * standard states, where all of the standard state assume that the species are
32  * in pure component states at the temperature and pressure of the solution. I
33  * don't think it prevents, however, some species from being dilute in the
34  * solution.
35  *
36  * ## Specification of Solution Thermodynamic Properties
37  *
38  * The molar excess Gibbs free energy is given by the following formula which is
39  * a sum over interactions *i*. Each of the interactions are binary interactions
40  * involving two of the species in the phase, denoted, *Ai* and *Bi*. This is
41  * the generalization of the Margules formulation for a phase that has more than
42  * 2 species.
43  *
44  * \f[
45  * G^E = \sum_i \left( H_{Ei} - T S_{Ei} \right)
46  * \f]
47  * \f[
48  * H^E_i = n X_{Ai} X_{Bi} \left( h_{o,i} + h_{1,i} X_{Bi} \right)
49  * \f]
50  * \f[
51  * S^E_i = n X_{Ai} X_{Bi} \left( s_{o,i} + s_{1,i} X_{Bi} \right)
52  * \f]
53  *
54  * where n is the total moles in the solution.
55  *
56  * The activity of a species defined in the phase is given by an excess Gibbs
57  * free energy formulation.
58  *
59  * \f[
60  * a_k = \gamma_k X_k
61  * \f]
62  *
63  * where
64  *
65  * \f[
66  * R T \ln( \gamma_k )= \frac{d(n G^E)}{d(n_k)}\Bigg|_{n_i}
67  * \f]
68  *
69  * Taking the derivatives results in the following expression
70  *
71  * \f[
72  * R T \ln( \gamma_k )= \sum_i \left( \left( \delta_{Ai,k} X_{Bi} + \delta_{Bi,k} X_{Ai} - X_{Ai} X_{Bi} \right)
73  * \left( g^E_{o,i} + g^E_{1,i} X_{Bi} \right) +
74  * \left( \delta_{Bi,k} - X_{Bi} \right) X_{Ai} X_{Bi} g^E_{1,i} \right)
75  * \f]
76  * where
77  * \f$ g^E_{o,i} = h_{o,i} - T s_{o,i} \f$ and
78  * \f$ g^E_{1,i} = h_{1,i} - T s_{1,i} \f$ and where
79  * \f$ X_k \f$ is the mole fraction of species *k*.
80  *
81  * This object inherits from the class VPStandardStateTP. Therefore, the
82  * specification and calculation of all standard state and reference state
83  * values are handled at that level. Various functional forms for the standard
84  * state are permissible. The chemical potential for species *k* is equal to
85  *
86  * \f[
87  * \mu_k(T,P) = \mu^o_k(T, P) + R T \ln(\gamma_k X_k)
88  * \f]
89  *
90  * The partial molar entropy for species *k* is given by
91  *
92  * \f[
93  * \tilde{s}_k(T,P) = s^o_k(T,P) - R \ln( \gamma_k X_k )
94  * - R T \frac{d \ln(\gamma_k) }{dT}
95  * \f]
96  *
97  * The partial molar enthalpy for species *k* is given by
98  *
99  * \f[
100  * \tilde{h}_k(T,P) = h^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
101  * \f]
102  *
103  * The partial molar volume for species *k* is
104  *
105  * \f[
106  * \tilde V_k(T,P) = V^o_k(T,P) + R T \frac{d \ln(\gamma_k) }{dP}
107  * \f]
108  *
109  * The partial molar Heat Capacity for species *k* is
110  *
111  * \f[
112  * \tilde{C}_{p,k}(T,P) = C^o_{p,k}(T,P) - 2 R T \frac{d \ln( \gamma_k )}{dT}
113  * - R T^2 \frac{d^2 \ln(\gamma_k) }{{dT}^2}
114  * \f]
115  *
116  * ## %Application within Kinetics Managers
117  *
118  * \f$ C^a_k\f$ are defined such that \f$ a_k = C^a_k / C^s_k, \f$ where
119  * \f$ C^s_k \f$ is a standard concentration defined below and \f$ a_k \f$ are
120  * activities used in the thermodynamic functions. These activity (or
121  * generalized) concentrations are used by kinetics manager classes to compute
122  * the forward and reverse rates of elementary reactions. The activity
123  * concentration,\f$ C^a_k \f$,is given by the following expression.
124  *
125  * \f[
126  * C^a_k = C^s_k X_k = \frac{P}{R T} X_k
127  * \f]
128  *
129  * The standard concentration for species *k* is independent of *k* and equal to
130  *
131  * \f[
132  * C^s_k = C^s = \frac{P}{R T}
133  * \f]
134  *
135  * For example, a bulk-phase binary gas reaction between species j and k,
136  * producing a new gas species l would have the following equation for its rate
137  * of progress variable, \f$ R^1 \f$, which has units of kmol m-3 s-1.
138  *
139  * \f[
140  * R^1 = k^1 C_j^a C_k^a = k^1 (C^s a_j) (C^s a_k)
141  * \f]
142  * where
143  * \f[
144  * C_j^a = C^s a_j \mbox{\quad and \quad} C_k^a = C^s a_k
145  * \f]
146  *
147  * \f$ C_j^a \f$ is the activity concentration of species j, and \f$ C_k^a \f$
148  * is the activity concentration of species k. \f$ C^s \f$ is the standard
149  * concentration. \f$ a_j \f$ is the activity of species j which is equal to the
150  * mole fraction of j.
151  *
152  * The reverse rate constant can then be obtained from the law of microscopic
153  * reversibility and the equilibrium expression for the system.
154  *
155  * \f[
156  * \frac{a_j a_k}{ a_l} = K_a^{o,1} = \exp(\frac{\mu^o_l - \mu^o_j - \mu^o_k}{R T} )
157  * \f]
158  *
159  * \f$ K_a^{o,1} \f$ is the dimensionless form of the equilibrium constant,
160  * associated with the pressure dependent standard states \f$ \mu^o_l(T,P) \f$
161  * and their associated activities, \f$ a_l \f$, repeated here:
162  *
163  * \f[
164  * \mu_l(T,P) = \mu^o_l(T, P) + R T \log(a_l)
165  * \f]
166  *
167  * We can switch over to expressing the equilibrium constant in terms of the
168  * reference state chemical potentials
169  *
170  * \f[
171  * K_a^{o,1} = \exp(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} ) * \frac{P_{ref}}{P}
172  * \f]
173  *
174  * The concentration equilibrium constant, \f$ K_c \f$, may be obtained by
175  * changing over to activity concentrations. When this is done:
176  *
177  * \f[
178  * \frac{C^a_j C^a_k}{ C^a_l} = C^o K_a^{o,1} = K_c^1 =
179  * \exp(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} ) * \frac{P_{ref}}{RT}
180  * \f]
181  *
182  * %Kinetics managers will calculate the concentration equilibrium constant, \f$
183  * K_c \f$, using the second and third part of the above expression as a
184  * definition for the concentration equilibrium constant.
185  *
186  * For completeness, the pressure equilibrium constant may be obtained as well
187  *
188  * \f[
189  * \frac{P_j P_k}{ P_l P_{ref}} = K_p^1 = \exp(\frac{\mu^{ref}_l - \mu^{ref}_j - \mu^{ref}_k}{R T} )
190  * \f]
191  *
192  * \f$ K_p \f$ is the simplest form of the equilibrium constant for ideal gases.
193  * However, it isn't necessarily the simplest form of the equilibrium constant
194  * for other types of phases; \f$ K_c \f$ is used instead because it is
195  * completely general.
196  *
197  * The reverse rate of progress may be written down as
198  * \f[
199  * R^{-1} = k^{-1} C_l^a = k^{-1} (C^o a_l)
200  * \f]
201  *
202  * where we can use the concept of microscopic reversibility to write the
203  * reverse rate constant in terms of the forward reate constant and the
204  * concentration equilibrium constant, \f$ K_c \f$.
205  *
206  * \f[
207  * k^{-1} = k^1 K^1_c
208  * \f]
209  *
210  * \f$k^{-1} \f$ has units of s-1.
211  *
212  * @ingroup thermoprops
213  */
215 {
216 public:
217  MargulesVPSSTP();
218 
219  //! Construct and initialize a MargulesVPSSTP ThermoPhase object directly
220  //! from an XML input file
221  /*!
222  * Working constructors
223  *
224  * The two constructors below are the normal way the phase initializes
225  * itself. They are shells that call the routine initThermo(), with a
226  * reference to the XML database to get the info for the phase.
227  *
228  * @param inputFile Name of the input file containing the phase XML data
229  * to set up the object
230  * @param id ID of the phase in the input file. Defaults to the
231  * empty string.
232  */
233  MargulesVPSSTP(const std::string& inputFile, const std::string& id = "");
234 
235  //! Construct and initialize a MargulesVPSSTP ThermoPhase object directly
236  //! from an XML database
237  /*!
238  * @param phaseRef XML phase node containing the description of the phase
239  * @param id id attribute containing the name of the phase.
240  * (default is the empty string)
241  */
242  MargulesVPSSTP(XML_Node& phaseRef, const std::string& id = "");
243 
244  virtual std::string type() const {
245  return "Margules";
246  }
247 
248  //! @name Molar Thermodynamic Properties
249  //! @{
250 
251  virtual doublereal enthalpy_mole() const;
252  virtual doublereal entropy_mole() const;
253  virtual doublereal cp_mole() const;
254  virtual doublereal cv_mole() const;
255 
256  /**
257  * @}
258  * @name Activities, Standard States, and Activity Concentrations
259  *
260  * The activity \f$a_k\f$ of a species in solution is related to the
261  * chemical potential by \f[ \mu_k = \mu_k^0(T) + \hat R T \log a_k. \f] The
262  * quantity \f$\mu_k^0(T,P)\f$ is the chemical potential at unit activity,
263  * which depends only on temperature and pressure.
264  * @{
265  */
266 
267  virtual void getLnActivityCoefficients(doublereal* lnac) const;
268 
269  //@}
270  /// @name Partial Molar Properties of the Solution
271  //@{
272 
273  virtual void getChemPotentials(doublereal* mu) const;
274 
275  //! Returns an array of partial molar enthalpies for the species in the
276  //! mixture.
277  /*!
278  * Units (J/kmol)
279  *
280  * For this phase, the partial molar enthalpies are equal to the standard
281  * state enthalpies modified by the derivative of the molality-based
282  * activity coefficient wrt temperature
283  *
284  * \f[
285  * \bar h_k(T,P) = h^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
286  * \f]
287  *
288  * @param hbar Vector of returned partial molar enthalpies
289  * (length m_kk, units = J/kmol)
290  */
291  virtual void getPartialMolarEnthalpies(doublereal* hbar) const;
292 
293  //! Returns an array of partial molar entropies for the species in the
294  //! mixture.
295  /*!
296  * Units (J/kmol)
297  *
298  * For this phase, the partial molar enthalpies are equal to the standard
299  * state enthalpies modified by the derivative of the activity coefficient
300  * wrt temperature
301  *
302  * \f[
303  * \bar s_k(T,P) = s^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
304  * - R \ln( \gamma_k X_k)
305  * - R T \frac{d \ln(\gamma_k) }{dT}
306  * \f]
307  *
308  * @param sbar Vector of returned partial molar entropies
309  * (length m_kk, units = J/kmol/K)
310  */
311  virtual void getPartialMolarEntropies(doublereal* sbar) const;
312 
313  //! Returns an array of partial molar entropies for the species in the
314  //! mixture.
315  /*!
316  * Units (J/kmol)
317  *
318  * For this phase, the partial molar enthalpies are equal to the standard
319  * state enthalpies modified by the derivative of the activity coefficient
320  * wrt temperature
321  *
322  * \f[
323  * ???????????????
324  * \bar s_k(T,P) = s^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
325  * - R \ln( \gamma_k X_k)
326  * - R T \frac{d \ln(\gamma_k) }{dT}
327  * ???????????????
328  * \f]
329  *
330  * @param cpbar Vector of returned partial molar heat capacities
331  * (length m_kk, units = J/kmol/K)
332  */
333  virtual void getPartialMolarCp(doublereal* cpbar) const;
334 
335  virtual void getPartialMolarVolumes(doublereal* vbar) const;
336 
337  //! Get the array of temperature second derivatives of the log activity
338  //! coefficients
339  /*!
340  * units = 1/Kelvin
341  *
342  * @param d2lnActCoeffdT2 Output vector of temperature 2nd derivatives of
343  * the log Activity Coefficients. length = m_kk
344  */
345  virtual void getd2lnActCoeffdT2(doublereal* d2lnActCoeffdT2) const;
346 
347  virtual void getdlnActCoeffdT(doublereal* dlnActCoeffdT) const;
348 
349  /// @}
350  /// @name Initialization The following methods are used in the process of
351  /// constructing the phase and setting its parameters from a
352  /// specification in an input file. They are not normally used in
353  /// application programs. To see how they are used, see importPhase()
354  /// @{
355 
356  virtual void initThermo();
357  virtual void initThermoXML(XML_Node& phaseNode, const std::string& id);
358 
359  //! Add a binary species interaction with the specified parameters
360  /*!
361  * @param speciesA name of the first species
362  * @param speciesB name of the second species
363  * @param h0 first excess enthalpy coefficient
364  * @param h1 second excess enthalpy coefficient
365  * @param s0 first excess entropy coefficient
366  * @param s1 second excess entropy coefficient
367  * @param vh0 first enthalpy coefficient for excess volume
368  * @param vh1 second enthalpy coefficient for excess volume
369  * @param vs0 first entropy coefficient for excess volume
370  * @param vs1 second entropy coefficient for excess volume
371  */
372  void addBinaryInteraction(const std::string& speciesA,
373  const std::string& speciesB, double h0, double h1, double s0, double s1,
374  double vh0, double vh1, double vs0, double vs1);
375 
376  //! @}
377  //! @name Derivatives of Thermodynamic Variables needed for Applications
378  //! @{
379 
380  virtual void getdlnActCoeffds(const doublereal dTds, const doublereal* const dXds, doublereal* dlnActCoeffds) const;
381  virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
382  virtual void getdlnActCoeffdlnN_diag(doublereal* dlnActCoeffdlnN_diag) const;
383  virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
384 
385  //@}
386 
387 private:
388  //! Process an XML node called "binaryNeutralSpeciesParameters"
389  /*!
390  * This node contains all of the parameters necessary to describe the
391  * Margules model for a particular binary interaction. This function reads
392  * the XML file and writes the coefficients it finds to an internal data
393  * structures.
394  *
395  * @param xmlBinarySpecies Reference to the XML_Node named "binaryNeutralSpeciesParameters"
396  * containing the binary interaction
397  */
398  void readXMLBinarySpecies(XML_Node& xmlBinarySpecies);
399 
400  //! Initialize lengths of local variables after all species have been
401  //! identified.
402  void initLengths();
403 
404  //! Update the activity coefficients
405  /*!
406  * This function will be called to update the internally stored natural
407  * logarithm of the activity coefficients
408  */
409  void s_update_lnActCoeff() const;
410 
411  //! Update the derivative of the log of the activity coefficients wrt T
412  /*!
413  * This function will be called to update the internally stored derivative
414  * of the natural logarithm of the activity coefficients wrt temperature.
415  */
416  void s_update_dlnActCoeff_dT() const;
417 
418  //! Update the derivative of the log of the activity coefficients wrt
419  //! log(mole fraction)
420  /*!
421  * This function will be called to update the internally stored derivative
422  * of the natural logarithm of the activity coefficients wrt logarithm of
423  * the mole fractions.
424  */
425  void s_update_dlnActCoeff_dlnX_diag() const;
426 
427  //! Update the derivative of the log of the activity coefficients wrt
428  //! log(moles) - diagonal only
429  /*!
430  * This function will be called to update the internally stored diagonal
431  * entries for the derivative of the natural logarithm of the activity
432  * coefficients wrt logarithm of the moles.
433  */
434  void s_update_dlnActCoeff_dlnN_diag() const;
435 
436  //! Update the derivative of the log of the activity coefficients wrt
437  //! log(moles_m)
438  /*!
439  * This function will be called to update the internally stored derivative
440  * of the natural logarithm of the activity coefficients wrt logarithm of
441  * the mole number of species
442  */
443  void s_update_dlnActCoeff_dlnN() const;
444 
445 protected:
446  //! number of binary interaction expressions
448 
449  //! Enthalpy term for the binary mole fraction interaction of the
450  //! excess Gibbs free energy expression
452 
453  //! Enthalpy term for the ternary mole fraction interaction of the
454  //! excess Gibbs free energy expression
456 
457  //! Entropy term for the binary mole fraction interaction of the
458  //! excess Gibbs free energy expression
460 
461  //! Entropy term for the ternary mole fraction interaction of the
462  //! excess Gibbs free energy expression
464 
465  //! Enthalpy term for the binary mole fraction interaction of the
466  //! excess Gibbs free energy expression
468 
469  //! Enthalpy term for the ternary mole fraction interaction of the
470  //! excess Gibbs free energy expression
472 
473  //! Entropy term for the binary mole fraction interaction of the
474  //! excess Gibbs free energy expression
476 
477  //! Entropy term for the ternary mole fraction interaction of the
478  //! excess Gibbs free energy expression
480 
481  //! vector of species indices representing species A in the interaction
482  /*!
483  * Each Margules excess Gibbs free energy term involves two species, A and
484  * B. This vector identifies species A.
485  */
486  std::vector<size_t> m_pSpecies_A_ij;
487 
488  //! vector of species indices representing species B in the interaction
489  /*!
490  * Each Margules excess Gibbs free energy term involves two species, A and
491  * B. This vector identifies species B.
492  */
493  std::vector<size_t> m_pSpecies_B_ij;
494 
495  //! form of the Margules interaction expression
496  /*!
497  * Currently there is only one form.
498  */
500 
501  //! form of the temperature dependence of the Margules interaction expression
502  /*!
503  * Currently there is only one form -> constant wrt temperature.
504  */
506 };
507 
508 }
509 
510 #endif
int formMargules_
form of the Margules interaction expression
vector_fp m_VSE_c_ij
Entropy term for the ternary mole fraction interaction of the excess Gibbs free energy expression...
virtual void getLnActivityCoefficients(doublereal *lnac) const
Get the array of non-dimensional molar-based ln activity coefficients at the current solution tempera...
void readXMLBinarySpecies(XML_Node &xmlBinarySpecies)
Process an XML node called "binaryNeutralSpeciesParameters".
vector_fp m_HE_b_ij
Enthalpy term for the binary mole fraction interaction of the excess Gibbs free energy expression...
virtual doublereal cp_mole() const
Molar heat capacity at constant pressure. Units: J/kmol/K.
virtual void initThermoXML(XML_Node &phaseNode, const std::string &id)
Import and initialize a ThermoPhase object using an XML tree.
std::vector< size_t > m_pSpecies_A_ij
vector of species indices representing species A in the interaction
Class XML_Node is a tree-based representation of the contents of an XML file.
Definition: xml.h:97
virtual void getdlnActCoeffdlnX_diag(doublereal *dlnActCoeffdlnX_diag) const
Get the array of ln mole fraction derivatives of the log activity coefficients - diagonal component o...
size_t numBinaryInteractions_
number of binary interaction expressions
virtual void getdlnActCoeffdlnN_diag(doublereal *dlnActCoeffdlnN_diag) const
Get the array of log species mole number derivatives of the log activity coefficients.
virtual void getdlnActCoeffdlnN(const size_t ld, doublereal *const dlnActCoeffdlnN)
Get the array of derivatives of the log activity coefficients with respect to the log of the species ...
void s_update_dlnActCoeff_dlnX_diag() const
Update the derivative of the log of the activity coefficients wrt log(mole fraction) ...
void initLengths()
Initialize lengths of local variables after all species have been identified.
void s_update_dlnActCoeff_dT() const
Update the derivative of the log of the activity coefficients wrt T.
virtual void getd2lnActCoeffdT2(doublereal *d2lnActCoeffdT2) const
Get the array of temperature second derivatives of the log activity coefficients. ...
virtual void getPartialMolarVolumes(doublereal *vbar) const
Return an array of partial molar volumes for the species in the mixture.
virtual void getdlnActCoeffds(const doublereal dTds, const doublereal *const dXds, doublereal *dlnActCoeffds) const
Get the change in activity coefficients wrt changes in state (temp, mole fraction, etc) along a line in parameter space or along a line in physical space.
virtual void getChemPotentials(doublereal *mu) const
Get the species chemical potentials. Units: J/kmol.
virtual void getPartialMolarEntropies(doublereal *sbar) const
Returns an array of partial molar entropies for the species in the mixture.
void addBinaryInteraction(const std::string &speciesA, const std::string &speciesB, double h0, double h1, double s0, double s1, double vh0, double vh1, double vs0, double vs1)
Add a binary species interaction with the specified parameters.
vector_fp m_SE_b_ij
Entropy term for the binary mole fraction interaction of the excess Gibbs free energy expression...
void s_update_dlnActCoeff_dlnN_diag() const
Update the derivative of the log of the activity coefficients wrt log(moles) - diagonal only...
void s_update_lnActCoeff() const
Update the activity coefficients.
Header for intermediate ThermoPhase object for phases which employ Gibbs excess free energy based for...
void s_update_dlnActCoeff_dlnN() const
Update the derivative of the log of the activity coefficients wrt log(moles_m)
virtual doublereal cv_mole() const
Molar heat capacity at constant volume. Units: J/kmol/K.
vector_fp m_VHE_b_ij
Enthalpy term for the binary mole fraction interaction of the excess Gibbs free energy expression...
vector_fp m_VSE_b_ij
Entropy term for the binary mole fraction interaction of the excess Gibbs free energy expression...
std::vector< size_t > m_pSpecies_B_ij
vector of species indices representing species B in the interaction
vector_fp m_VHE_c_ij
Enthalpy term for the ternary mole fraction interaction of the excess Gibbs free energy expression...
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
Definition: ct_defs.h:157
virtual void getPartialMolarCp(doublereal *cpbar) const
Returns an array of partial molar entropies for the species in the mixture.
virtual std::string type() const
String indicating the thermodynamic model implemented.
virtual void getdlnActCoeffdT(doublereal *dlnActCoeffdT) const
Get the array of temperature derivatives of the log activity coefficients.
vector_fp m_SE_c_ij
Entropy term for the ternary mole fraction interaction of the excess Gibbs free energy expression...
MargulesVPSSTP is a derived class of GibbsExcessVPSSTP that employs the Margules approximation for th...
vector_fp m_HE_c_ij
Enthalpy term for the ternary mole fraction interaction of the excess Gibbs free energy expression...
virtual doublereal entropy_mole() const
Molar entropy. Units: J/kmol/K.
int formTempModel_
form of the temperature dependence of the Margules interaction expression
virtual void getPartialMolarEnthalpies(doublereal *hbar) const
Returns an array of partial molar enthalpies for the species in the mixture.
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:8
virtual doublereal enthalpy_mole() const
Molar enthalpy. Units: J/kmol.