Cantera 2.6.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 https://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 rate 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 */
214 class MargulesVPSSTP : public GibbsExcessVPSSTP
215{
216 public:
217 //! Construct a MargulesVPSSTP object from an input file
218 /*!
219 * @param inputFile Name of the input file containing the phase definition.
220 * If blank, an empty phase will be created.
221 * @param id name (ID) of the phase in the input file. If empty, the
222 * first phase definition in the input file will be used.
223 */
224 explicit MargulesVPSSTP(const std::string& inputFile="",
225 const std::string& id="");
226
227 //! Construct and initialize a MargulesVPSSTP ThermoPhase object directly
228 //! from an XML database
229 /*!
230 * @param phaseRef XML phase node containing the description of the phase
231 * @param id id attribute containing the name of the phase.
232 * (default is the empty string)
233 *
234 * @deprecated The XML input format is deprecated and will be removed in
235 * Cantera 3.0.
236 */
237 MargulesVPSSTP(XML_Node& phaseRef, const std::string& id = "");
238
239 virtual std::string type() const {
240 return "Margules";
241 }
242
243 //! @name Molar Thermodynamic Properties
244 //! @{
245
246 virtual doublereal enthalpy_mole() const;
247 virtual doublereal entropy_mole() const;
248 virtual doublereal cp_mole() const;
249 virtual doublereal cv_mole() const;
250
251 /**
252 * @}
253 * @name Activities, Standard States, and Activity Concentrations
254 *
255 * The activity \f$a_k\f$ of a species in solution is related to the
256 * chemical potential by \f[ \mu_k = \mu_k^0(T) + \hat R T \log a_k. \f] The
257 * quantity \f$\mu_k^0(T,P)\f$ is the chemical potential at unit activity,
258 * which depends only on temperature and pressure.
259 * @{
260 */
261
262 virtual void getLnActivityCoefficients(doublereal* lnac) const;
263
264 //! @}
265 /// @name Partial Molar Properties of the Solution
266 //! @{
267
268 virtual void getChemPotentials(doublereal* mu) const;
269
270 //! Returns an array of partial molar enthalpies for the species in the
271 //! mixture.
272 /*!
273 * Units (J/kmol)
274 *
275 * For this phase, the partial molar enthalpies are equal to the standard
276 * state enthalpies modified by the derivative of the molality-based
277 * activity coefficient wrt temperature
278 *
279 * \f[
280 * \bar h_k(T,P) = h^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
281 * \f]
282 *
283 * @param hbar Vector of returned partial molar enthalpies
284 * (length m_kk, units = J/kmol)
285 */
286 virtual void getPartialMolarEnthalpies(doublereal* hbar) const;
287
288 //! Returns an array of partial molar entropies for the species in the
289 //! mixture.
290 /*!
291 * Units (J/kmol)
292 *
293 * For this phase, the partial molar enthalpies are equal to the standard
294 * state enthalpies modified by the derivative of the activity coefficient
295 * wrt temperature
296 *
297 * \f[
298 * \bar s_k(T,P) = s^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
299 * - R \ln( \gamma_k X_k)
300 * - R T \frac{d \ln(\gamma_k) }{dT}
301 * \f]
302 *
303 * @param sbar Vector of returned partial molar entropies
304 * (length m_kk, units = J/kmol/K)
305 */
306 virtual void getPartialMolarEntropies(doublereal* sbar) const;
307
308 //! Returns an array of partial molar entropies for the species in the
309 //! mixture.
310 /*!
311 * Units (J/kmol)
312 *
313 * For this phase, the partial molar enthalpies are equal to the standard
314 * state enthalpies modified by the derivative of the activity coefficient
315 * wrt temperature
316 *
317 * \f[
318 * ???????????????
319 * \bar s_k(T,P) = s^o_k(T,P) - R T^2 \frac{d \ln(\gamma_k)}{dT}
320 * - R \ln( \gamma_k X_k)
321 * - R T \frac{d \ln(\gamma_k) }{dT}
322 * ???????????????
323 * \f]
324 *
325 * @param cpbar Vector of returned partial molar heat capacities
326 * (length m_kk, units = J/kmol/K)
327 */
328 virtual void getPartialMolarCp(doublereal* cpbar) const;
329
330 virtual void getPartialMolarVolumes(doublereal* vbar) const;
331
332 //! Get the array of temperature second derivatives of the log activity
333 //! coefficients
334 /*!
335 * units = 1/Kelvin
336 *
337 * @param d2lnActCoeffdT2 Output vector of temperature 2nd derivatives of
338 * the log Activity Coefficients. length = m_kk
339 */
340 virtual void getd2lnActCoeffdT2(doublereal* d2lnActCoeffdT2) const;
341
342 virtual void getdlnActCoeffdT(doublereal* dlnActCoeffdT) const;
343
344 /// @}
345 /// @name Initialization The following methods are used in the process of
346 /// constructing the phase and setting its parameters from a
347 /// specification in an input file. They are not normally used in
348 /// application programs. To see how they are used, see importPhase()
349 /// @{
350
351 virtual void initThermo();
352 virtual void getParameters(AnyMap& phaseNode) const;
353 virtual void initThermoXML(XML_Node& phaseNode, const std::string& id);
354
355 //! Add a binary species interaction with the specified parameters
356 /*!
357 * @param speciesA name of the first species
358 * @param speciesB name of the second species
359 * @param h0 first excess enthalpy coefficient [J/kmol]
360 * @param h1 second excess enthalpy coefficient [J/kmol]
361 * @param s0 first excess entropy coefficient [J/kmol/K]
362 * @param s1 second excess entropy coefficient [J/kmol/K]
363 * @param vh0 first enthalpy coefficient for excess volume [m^3/kmol]
364 * @param vh1 second enthalpy coefficient for excess volume [m^3/kmol]
365 * @param vs0 first entropy coefficient for excess volume [m^3/kmol/K]
366 * @param vs1 second entropy coefficient for excess volume [m^3/kmol/K]
367 */
368 void addBinaryInteraction(const std::string& speciesA,
369 const std::string& speciesB, double h0, double h1, double s0, double s1,
370 double vh0, double vh1, double vs0, double vs1);
371
372 //! @}
373 //! @name Derivatives of Thermodynamic Variables needed for Applications
374 //! @{
375
376 virtual void getdlnActCoeffds(const doublereal dTds, const doublereal* const dXds, doublereal* dlnActCoeffds) const;
377 virtual void getdlnActCoeffdlnX_diag(doublereal* dlnActCoeffdlnX_diag) const;
378 virtual void getdlnActCoeffdlnN_diag(doublereal* dlnActCoeffdlnN_diag) const;
379 virtual void getdlnActCoeffdlnN(const size_t ld, doublereal* const dlnActCoeffdlnN);
380
381 //! @}
382
383 private:
384 //! Process an XML node called "binaryNeutralSpeciesParameters"
385 /*!
386 * This node contains all of the parameters necessary to describe the
387 * Margules model for a particular binary interaction. This function reads
388 * the XML file and writes the coefficients it finds to an internal data
389 * structures.
390 *
391 * @param xmlBinarySpecies Reference to the XML_Node named "binaryNeutralSpeciesParameters"
392 * containing the binary interaction
393 */
394 void readXMLBinarySpecies(XML_Node& xmlBinarySpecies);
395
396 //! Initialize lengths of local variables after all species have been
397 //! identified.
398 void initLengths();
399
400 //! Update the activity coefficients
401 /*!
402 * This function will be called to update the internally stored natural
403 * logarithm of the activity coefficients
404 */
405 void s_update_lnActCoeff() const;
406
407 //! Update the derivative of the log of the activity coefficients wrt T
408 /*!
409 * This function will be called to update the internally stored derivative
410 * of the natural logarithm of the activity coefficients wrt temperature.
411 */
412 void s_update_dlnActCoeff_dT() const;
413
414 //! Update the derivative of the log of the activity coefficients wrt
415 //! log(mole fraction)
416 /*!
417 * This function will be called to update the internally stored derivative
418 * of the natural logarithm of the activity coefficients wrt logarithm of
419 * the mole fractions.
420 */
421 void s_update_dlnActCoeff_dlnX_diag() const;
422
423 //! Update the derivative of the log of the activity coefficients wrt
424 //! log(moles) - diagonal only
425 /*!
426 * This function will be called to update the internally stored diagonal
427 * entries for the derivative of the natural logarithm of the activity
428 * coefficients wrt logarithm of the moles.
429 */
430 void s_update_dlnActCoeff_dlnN_diag() const;
431
432 //! Update the derivative of the log of the activity coefficients wrt
433 //! log(moles_m)
434 /*!
435 * This function will be called to update the internally stored derivative
436 * of the natural logarithm of the activity coefficients wrt logarithm of
437 * the mole number of species
438 */
439 void s_update_dlnActCoeff_dlnN() const;
440
441 protected:
442 //! number of binary interaction expressions
443 size_t numBinaryInteractions_;
444
445 //! Enthalpy term for the binary mole fraction interaction of the
446 //! excess Gibbs free energy expression
447 mutable vector_fp m_HE_b_ij;
448
449 //! Enthalpy term for the ternary mole fraction interaction of the
450 //! excess Gibbs free energy expression
451 mutable vector_fp m_HE_c_ij;
452
453 //! Entropy term for the binary mole fraction interaction of the
454 //! excess Gibbs free energy expression
455 mutable vector_fp m_SE_b_ij;
456
457 //! Entropy term for the ternary mole fraction interaction of the
458 //! excess Gibbs free energy expression
459 mutable vector_fp m_SE_c_ij;
460
461 //! Enthalpy term for the binary mole fraction interaction of the
462 //! excess Gibbs free energy expression
463 mutable vector_fp m_VHE_b_ij;
464
465 //! Enthalpy term for the ternary mole fraction interaction of the
466 //! excess Gibbs free energy expression
467 mutable vector_fp m_VHE_c_ij;
468
469 //! Entropy term for the binary mole fraction interaction of the
470 //! excess Gibbs free energy expression
471 mutable vector_fp m_VSE_b_ij;
472
473 //! Entropy term for the ternary mole fraction interaction of the
474 //! excess Gibbs free energy expression
475 mutable vector_fp m_VSE_c_ij;
476
477 //! vector of species indices representing species A in the interaction
478 /*!
479 * Each Margules excess Gibbs free energy term involves two species, A and
480 * B. This vector identifies species A.
481 */
482 std::vector<size_t> m_pSpecies_A_ij;
483
484 //! vector of species indices representing species B in the interaction
485 /*!
486 * Each Margules excess Gibbs free energy term involves two species, A and
487 * B. This vector identifies species B.
488 */
489 std::vector<size_t> m_pSpecies_B_ij;
490
491 //! form of the Margules interaction expression
492 /*!
493 * Currently there is only one form.
494 */
495 int formMargules_;
496
497 //! form of the temperature dependence of the Margules interaction expression
498 /*!
499 * Currently there is only one form -> constant wrt temperature.
500 */
501 int formTempModel_;
502};
503
504}
505
506#endif
GibbsExcessVPSSTP.h
Header for intermediate ThermoPhase object for phases which employ Gibbs excess free energy based for...
Cantera::AnyMap
A map of string keys to values whose type can vary at runtime.
Definition: AnyMap.h:399
Cantera::GibbsExcessVPSSTP
Definition: GibbsExcessVPSSTP.h:85
Cantera::MargulesVPSSTP
MargulesVPSSTP is a derived class of GibbsExcessVPSSTP that employs the Margules approximation for th...
Definition: MargulesVPSSTP.h:215
Cantera::MargulesVPSSTP::m_SE_c_ij
vector_fp m_SE_c_ij
Entropy term for the ternary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:459
Cantera::MargulesVPSSTP::getParameters
virtual void getParameters(AnyMap &phaseNode) const
Store the parameters of a ThermoPhase object such that an identical one could be reconstructed using ...
Definition: MargulesVPSSTP.cpp:219
Cantera::MargulesVPSSTP::getd2lnActCoeffdT2
virtual void getd2lnActCoeffdT2(doublereal *d2lnActCoeffdT2) const
Get the array of temperature second derivatives of the log activity coefficients.
Definition: MargulesVPSSTP.cpp:384
Cantera::MargulesVPSSTP::m_VSE_c_ij
vector_fp m_VSE_c_ij
Entropy term for the ternary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:475
Cantera::MargulesVPSSTP::getLnActivityCoefficients
virtual void getLnActivityCoefficients(doublereal *lnac) const
Get the array of non-dimensional molar-based ln activity coefficients at the current solution tempera...
Definition: MargulesVPSSTP.cpp:39
Cantera::MargulesVPSSTP::formTempModel_
int formTempModel_
form of the temperature dependence of the Margules interaction expression
Definition: MargulesVPSSTP.h:501
Cantera::MargulesVPSSTP::cp_mole
virtual doublereal cp_mole() const
Molar heat capacity at constant pressure. Units: J/kmol/K.
Definition: MargulesVPSSTP.cpp:90
Cantera::MargulesVPSSTP::getPartialMolarEnthalpies
virtual void getPartialMolarEnthalpies(doublereal *hbar) const
Returns an array of partial molar enthalpies for the species in the mixture.
Definition: MargulesVPSSTP.cpp:107
Cantera::MargulesVPSSTP::getPartialMolarEntropies
virtual void getPartialMolarEntropies(doublereal *sbar) const
Returns an array of partial molar entropies for the species in the mixture.
Definition: MargulesVPSSTP.cpp:146
Cantera::MargulesVPSSTP::getdlnActCoeffdT
virtual void getdlnActCoeffdT(doublereal *dlnActCoeffdT) const
Get the array of temperature derivatives of the log activity coefficients.
Definition: MargulesVPSSTP.cpp:376
Cantera::MargulesVPSSTP::numBinaryInteractions_
size_t numBinaryInteractions_
number of binary interaction expressions
Definition: MargulesVPSSTP.h:443
Cantera::MargulesVPSSTP::initThermoXML
virtual void initThermoXML(XML_Node &phaseNode, const std::string &id)
Import and initialize a ThermoPhase object using an XML tree.
Definition: MargulesVPSSTP.cpp:253
Cantera::MargulesVPSSTP::enthalpy_mole
virtual doublereal enthalpy_mole() const
Molar enthalpy. Units: J/kmol.
Definition: MargulesVPSSTP.cpp:66
Cantera::MargulesVPSSTP::s_update_dlnActCoeff_dlnN_diag
void s_update_dlnActCoeff_dlnN_diag() const
Update the derivative of the log of the activity coefficients wrt log(moles) - diagonal only.
Definition: MargulesVPSSTP.cpp:421
Cantera::MargulesVPSSTP::getPartialMolarVolumes
virtual void getPartialMolarVolumes(doublereal *vbar) const
Return an array of partial molar volumes for the species in the mixture.
Definition: MargulesVPSSTP.cpp:168
Cantera::MargulesVPSSTP::getdlnActCoeffdlnN
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 ...
Definition: MargulesVPSSTP.cpp:528
Cantera::MargulesVPSSTP::readXMLBinarySpecies
void readXMLBinarySpecies(XML_Node &xmlBinarySpecies)
Process an XML node called "binaryNeutralSpeciesParameters".
Definition: MargulesVPSSTP.cpp:539
Cantera::MargulesVPSSTP::cv_mole
virtual doublereal cv_mole() const
Molar heat capacity at constant volume. Units: J/kmol/K.
Definition: MargulesVPSSTP.cpp:102
Cantera::MargulesVPSSTP::getdlnActCoeffdlnX_diag
virtual void getdlnActCoeffdlnX_diag(doublereal *dlnActCoeffdlnX_diag) const
Get the array of ln mole fraction derivatives of the log activity coefficients - diagonal component o...
Definition: MargulesVPSSTP.cpp:520
Cantera::MargulesVPSSTP::getPartialMolarCp
virtual void getPartialMolarCp(doublereal *cpbar) const
Returns an array of partial molar entropies for the species in the mixture.
Definition: MargulesVPSSTP.cpp:126
Cantera::MargulesVPSSTP::m_VHE_c_ij
vector_fp m_VHE_c_ij
Enthalpy term for the ternary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:467
Cantera::MargulesVPSSTP::m_pSpecies_A_ij
std::vector< size_t > m_pSpecies_A_ij
vector of species indices representing species A in the interaction
Definition: MargulesVPSSTP.h:482
Cantera::MargulesVPSSTP::s_update_dlnActCoeff_dT
void s_update_dlnActCoeff_dT() const
Update the derivative of the log of the activity coefficients wrt T.
Definition: MargulesVPSSTP.cpp:347
Cantera::MargulesVPSSTP::m_HE_b_ij
vector_fp m_HE_b_ij
Enthalpy term for the binary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:447
Cantera::MargulesVPSSTP::addBinaryInteraction
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.
Definition: MargulesVPSSTP.cpp:299
Cantera::MargulesVPSSTP::m_HE_c_ij
vector_fp m_HE_c_ij
Enthalpy term for the ternary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:451
Cantera::MargulesVPSSTP::entropy_mole
virtual doublereal entropy_mole() const
Molar entropy. Units: J/kmol/K.
Definition: MargulesVPSSTP.cpp:78
Cantera::MargulesVPSSTP::initThermo
virtual void initThermo()
Definition: MargulesVPSSTP.cpp:193
Cantera::MargulesVPSSTP::s_update_dlnActCoeff_dlnN
void s_update_dlnActCoeff_dlnN() const
Update the derivative of the log of the activity coefficients wrt log(moles_m)
Definition: MargulesVPSSTP.cpp:453
Cantera::MargulesVPSSTP::formMargules_
int formMargules_
form of the Margules interaction expression
Definition: MargulesVPSSTP.h:495
Cantera::MargulesVPSSTP::m_SE_b_ij
vector_fp m_SE_b_ij
Entropy term for the binary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:455
Cantera::MargulesVPSSTP::type
virtual std::string type() const
String indicating the thermodynamic model implemented.
Definition: MargulesVPSSTP.h:239
Cantera::MargulesVPSSTP::m_VHE_b_ij
vector_fp m_VHE_b_ij
Enthalpy term for the binary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:463
Cantera::MargulesVPSSTP::getdlnActCoeffdlnN_diag
virtual void getdlnActCoeffdlnN_diag(doublereal *dlnActCoeffdlnN_diag) const
Get the array of log species mole number derivatives of the log activity coefficients.
Definition: MargulesVPSSTP.cpp:512
Cantera::MargulesVPSSTP::getdlnActCoeffds
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,...
Definition: MargulesVPSSTP.cpp:392
Cantera::MargulesVPSSTP::m_pSpecies_B_ij
std::vector< size_t > m_pSpecies_B_ij
vector of species indices representing species B in the interaction
Definition: MargulesVPSSTP.h:489
Cantera::MargulesVPSSTP::initLengths
void initLengths()
Initialize lengths of local variables after all species have been identified.
Definition: MargulesVPSSTP.cpp:248
Cantera::MargulesVPSSTP::s_update_dlnActCoeff_dlnX_diag
void s_update_dlnActCoeff_dlnX_diag() const
Update the derivative of the log of the activity coefficients wrt log(mole fraction)
Definition: MargulesVPSSTP.cpp:492
Cantera::MargulesVPSSTP::s_update_lnActCoeff
void s_update_lnActCoeff() const
Update the activity coefficients.
Definition: MargulesVPSSTP.cpp:325
Cantera::MargulesVPSSTP::MargulesVPSSTP
MargulesVPSSTP(const std::string &inputFile="", const std::string &id="")
Construct a MargulesVPSSTP object from an input file.
Definition: MargulesVPSSTP.cpp:21
Cantera::MargulesVPSSTP::getChemPotentials
virtual void getChemPotentials(doublereal *mu) const
Get the species chemical potentials. Units: J/kmol.
Definition: MargulesVPSSTP.cpp:52
Cantera::MargulesVPSSTP::m_VSE_b_ij
vector_fp m_VSE_b_ij
Entropy term for the binary mole fraction interaction of the excess Gibbs free energy expression.
Definition: MargulesVPSSTP.h:471
Cantera::XML_Node
Class XML_Node is a tree-based representation of the contents of an XML file.
Definition: xml.h:103
Cantera
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:557
Cantera::vector_fp
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:184