Cantera  2.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LiquidTranInteraction.h
Go to the documentation of this file.
1 /**
2  * @file LiquidTranInteraction.h
3  * Header file defining the class LiquidTranInteraction and classes which
4  * derive from LiquidTranInteraction.
5  */
6 
7 #ifndef CT_LIQUIDTRANINTERACTION_H
8 #define CT_LIQUIDTRANINTERACTION_H
9 
10 #include "TransportParams.h"
11 #include "LiquidTransportData.h"
12 #include "cantera/base/xml.h"
13 
14 namespace Cantera
15 {
16 //! Composition dependence type for liquid mixture transport properties
17 /*!
18  * Types of temperature dependencies:
19  * - 0 - Mixture calculations with this property are not allowed
20  * - 1 - Use solvent (species 0) properties
21  * - 2 - Properties weighted linearly by mole fractions
22  * - 3 - Properties weighted linearly by mass fractions
23  * - 4 - Properties weighted logarithmically by mole fractions (interaction energy weighting)
24  * - 5 - Interactions given pairwise between each possible species (i.e. D_ij)
25  *
26  * \verbatim
27  * <transport model="Liquid">
28  * <viscosity>
29  * <compositionDependence model="logMoleFractions">
30  * <interaction>
31  * <speciesA> LiCl(L) </speciesA>
32  * <speciesB> KCl(L) </speciesB>
33  * <Eij units="J/kmol"> -1.0 </Eij>
34  * <Sij units="J/kmol/K"> 1.0E-1 </Sij>
35  * -or- <Sij>
36  * <floatArray units="J/kmol/K"> 1.0E-1, 0.001 0.01 </floatArray>
37  * </Sij>
38  * -same form for Hij,Aij,Bij-
39  * </interaction>
40  * </compositionDependence>
41  * </viscosity>
42  * <speciesDiffusivity>
43  * <compositionDependence model="pairwiseInteraction">
44  * <interaction>
45  * <speciesA> Li+ </speciesA>
46  * <speciesB> K+ </speciesB>
47  * <Dij units="m2/s"> 1.5 </Dij>
48  * </interaction>
49  * <interaction>
50  * <speciesA> K+ </speciesA>
51  * <speciesB> Cl- </speciesB>
52  * <Dij units="m2/s"> 1.0 </Dij>
53  * </interaction>
54  * <interaction>
55  * <speciesA> Li+ </speciesA>
56  * <speciesB> Cl- </speciesB>
57  * <Dij units="m2/s"> 1.2 </Dij>
58  * </interaction>
59  * </compositionDependence>
60  * </speciesDiffusivity>
61  * <thermalConductivity>
62  * <compositionDependence model="massFractions"/>
63  * </thermalConductivity>
64  * <hydrodynamicRadius>
65  * <compositionDependence model="none"/>
66  * </hydrodynamicRadius>
67  * </transport>
68  * \endverbatim
69  */
71  LTI_MODEL_NOTSET=-1,
72  LTI_MODEL_SOLVENT,
73  LTI_MODEL_MOLEFRACS,
74  LTI_MODEL_MASSFRACS,
75  LTI_MODEL_LOG_MOLEFRACS,
76  LTI_MODEL_PAIRWISE_INTERACTION,
77  LTI_MODEL_STEFANMAXWELL_PPN,
78  LTI_MODEL_STOKES_EINSTEIN,
79  LTI_MODEL_MOLEFRACS_EXPT,
80  LTI_MODEL_NONE,
81  LTI_MODEL_MULTIPLE
82 };
83 
84 //! Base class to handle transport property evaluation in a mixture.
85 /*!
86  * In a mixture, the mixture transport properties will generally depend on
87  * the contributions of each of the standard state species transport properties.
88  * Many composition dependencies are possible. This class,
89  * LiquidTranInteraction, is designed to be a base class for the
90  * implementation of various models for the mixing of standard state species
91  * transport properties.
92  *
93  * There are two very broad types of transport properties to consider.
94  * First, there are properties for which a mixture value can be
95  * obtained through some mixing rule. These are obtained using the
96  * method getMixTransProp(). Viscosity is typical of this.
97  * Second, there are properties for which a matrix of properties may
98  * exist. This matrix of properties is obtained from the method
99  * getMatrixTransProp(). Diffusion coefficients are of this type.
100  * Subclasses should implement the appropriate one or both of
101  * these methods.
102  */
104 {
105 public:
106  //! Constructor
107  /**
108  * @param tp_ind Index indicating the transport property type (e.g., viscosity)
109  */
110  LiquidTranInteraction(TransportPropertyType tp_ind = TP_UNKNOWN);
111 
113  LiquidTranInteraction& operator=(const LiquidTranInteraction& right);
114  virtual ~LiquidTranInteraction();
115 
116  //! initialize LiquidTranInteraction objects with thermo and XML node
117  /**
118  * @param compModelNode `<compositionDependence>` XML node
119  * @param thermo Pointer to thermo object
120  */
121  virtual void init(const XML_Node& compModelNode = XML_Node(),
122  thermo_t* thermo = 0);
123 
124  virtual void setParameters(LiquidTransportParams& trParam) {
125  ;
126  }
127 
128  //! Return the mixture transport property value.
129  //! (Must be implemented in subclasses.)
130  virtual doublereal getMixTransProp(doublereal* speciesValues, doublereal* weightSpecies = 0) {
131  throw NotImplementedError("LiquidTranInteraction::getMixTransProp");
132  }
133 
134  virtual doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) {
135  throw NotImplementedError("LiquidTranInteraction::getMixTransProp");
136  }
137 
138  virtual void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) {
139  //mat = m_Dij;
140  throw NotImplementedError("LiquidTranInteraction::getMixTransProp");
141  }
142 
143 protected:
144  //! Model for species interaction effects
145  //! Takes enum LiquidTranMixingModel
147 
148  //! enum indicating what property this is (i.e viscosity)
150 
151  //! pointer to thermo object to get current temperature
153 
154  //LiquidTransportParams* m_trParam;
155 
156  //! Matrix of interaction coefficients for polynomial in molefraction*weight of
157  //! speciesA (no temperature dependence, dimensionless)
158  std::vector<DenseMatrix*> m_Aij;
159 
160  //! Matrix of interaction coefficients for polynomial in molefraction*weight of
161  //! speciesA (linear temperature dependence, units 1/K)
162  std::vector<DenseMatrix*> m_Bij;
163 
164  //! Matrix of interactions (in energy units, 1/RT temperature dependence)
166 
167  //! Matrix of interaction coefficients for polynomial in molefraction*weight of
168  //! speciesA (in energy units, 1/RT temperature dependence)
169  std::vector<DenseMatrix*> m_Hij;
170 
171  //! Matrix of interaction coefficients for polynomial in molefraction*weight of
172  //! speciesA (in entropy units, divided by R)
173  std::vector<DenseMatrix*> m_Sij;
174 
175  //! Matrix of interactions
177 };
178 
179 class LTI_Solvent : public LiquidTranInteraction
180 {
181 public:
182  LTI_Solvent(TransportPropertyType tp_ind = TP_UNKNOWN);
183 
184  //! Copy constructor
185  // LTI_Solvent( const LTI_Solvent &right );
186 
187  //! Assignment operator
188  // LTI_Solvent& operator=( const LTI_Solvent &right );
189 
190  //! Return the mixture transport property value.
191  /**
192  * Takes the separate species transport properties as input (this method
193  * does not know what transport property it is at this point).
194  */
195  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
196  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
197 
198  //! Return the matrix of binary interaction parameters.
199  /**
200  * Takes the proper mixing rule for the binary interaction parameters
201  * and calculates them: Not implemented for this mixing rule.
202  */
203  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0);
204 };
205 
206 //! Simple mole fraction weighting of transport properties
207 /**
208  * This model weights the transport property by the mole fractions. The
209  * overall formula for the mixture viscosity is
210  *
211  * \f[
212  * \eta_{mix} = \sum_i X_i \eta_i + \sum_i \sum_j X_i X_j A_{i,j}
213  * \f]
214  */
216 {
217 public:
218  LTI_MoleFracs(TransportPropertyType tp_ind = TP_UNKNOWN) :
219  LiquidTranInteraction(tp_ind) {
220  m_model = LTI_MODEL_MOLEFRACS;
221  }
222 
223  //! Copy constructor
224  // LTI_MoleFracs( const LTI_MoleFracs &right );
225 
226  //! Assignment operator
227  // LTI_MoleFracs& operator=( const LTI_MoleFracs &right );
228 
229  //! Return the mixture transport property value.
230  /**
231  * Takes the separate species transport properties as input (this method
232  * does not know what transport property it is at this point.
233  */
234  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
235  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
236 
237  //! Return the matrix of binary interaction parameters.
238  /**
239  * Takes the proper mixing rule for the binary interaction parameters
240  * and calculates them: Not Implemented for this Mixing rule;
241  */
242  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) {
243  mat = (*m_Aij[0]);
244  }
245 };
246 
247 //! Simple mass fraction weighting of transport properties
248 /*!
249  * This model weights the transport property by the mass fractions. The
250  * overall formula for the mixture viscosity is
251  *
252  * \f[
253  * \eta_{mix} = \sum_i Y_i \eta_i
254  * + \sum_i \sum_j Y_i Y_j A_{i,j}
255  * \f].
256  */
258 {
259 public:
260  LTI_MassFracs(TransportPropertyType tp_ind = TP_UNKNOWN) :
261  LiquidTranInteraction(tp_ind) {
262  m_model = LTI_MODEL_MASSFRACS;
263  }
264 
265  //! Copy constructor
266  // LTI_MassFracs( const LTI_MassFracs &right );
267 
268  //! Assignment operator
269  // LTI_MassFracs& operator=( const LTI_MassFracs &right );
270 
271  //! Return the mixture transport property value.
272  /**
273  * Takes the separate species transport properties as input (this method
274  * does not know what transport property it is at this point.
275  */
276  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
277  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
278 
279  //! Return the matrix of binary interaction parameters.
280  /**
281  * Takes the proper mixing rule for the binary interaction parameters
282  * and calculates them: Not implemented for this mixing rule.
283  */
284  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) {
285  mat = (*m_Aij[0]);
286  }
287 };
288 
289 //! Mixing rule using logarithms of the mole fractions
290 /**
291  * This model is based on the idea that liquid molecules are generally
292  * interacting with some energy and entropy of interaction. For transport
293  * properties that depend on these energies of interaction, the mixture
294  * transport property can be written in terms of its logarithm
295  *
296  * \f[ \ln \eta_{mix} = \sum_i X_i \ln \eta_i
297  * + \sum_i \sum_j X_i X_j ( S_{i,j} + E_{i,j} / T )
298  * \f].
299  *
300  * These additional interaction terms multiply the mixture property by
301  * \f[ \exp( \sum_{i} \sum_{j} X_i X_j ( S_{i,j} + E_{i,j} / T ) ) \f]
302  * so that the self-interaction terms \f$ S_{i,j} \f$ and
303  * \f$ E_{i,j} \f$ should be zero.
304  *
305  * Note that the energies and entropies of interaction should be
306  * a function of the composition themselves, but this is not yet
307  * implemented. (We might follow the input of Margules model
308  * thermodynamic data for the purpose of implementing this.)
309  *
310  * Sample input for this method is
311  * \verbatim
312  * <transport model="Liquid">
313  * <viscosity>
314  * <compositionDependence model="logMoleFractions">
315  * <interaction speciesA="Li+" speciesB="K+">
316  * <!--
317  * interactions are from speciesA = LiCl(L)
318  * and speciesB = KCl(L).
319  * -->
320  * <Eij units="J/kmol"> -1.0e3 </Eij>
321  * <Sij units="J/kmol/K"> 80.0e-5 </Sij>
322  * </interaction>
323  * </compositionDependence>
324  * </viscosity>
325  * </transport>
326  * \endverbatim
327  */
329 {
330 public:
331  LTI_Log_MoleFracs(TransportPropertyType tp_ind = TP_UNKNOWN) :
332  LiquidTranInteraction(tp_ind) {
333  m_model = LTI_MODEL_LOG_MOLEFRACS;
334  }
335 
336  //! Copy constructor
337  // LTI_Log_MoleFracs( const LTI_Log_MoleFracs &right );
338 
339  //! Assignment operator
340  // LTI_Log_MoleFracs& operator=( const LTI_Log_MoleFracs &right );
341 
342  //! Return the mixture transport property value.
343  /**
344  * Takes the separate species transport properties as input (this method
345  * does not know what transport property it is at this point.
346  */
347  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
348  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
349 
350  //! Return the matrix of binary interaction parameters.
351  /**
352  * Takes the proper mixing rule for the binary interaction parameters
353  * and calculates them: Not implemented for this mixing rule.
354  */
355  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) {
356  mat = m_Eij;
357  }
358 };
359 
360 //! Transport properties that act like pairwise interactions
361 //! as in binary diffusion coefficients.
362 /**
363  * This class holds parameters for transport properties expressed as a matrix
364  * of pairwise interaction parameters. Input can be provided for constant or
365  * Arrhenius forms of the separate parameters.
366  *
367  * Sample input for this method is
368  * \verbatim
369  * <transport model="Liquid">
370  * <speciesDiffusivity>
371  * <compositionDependence model="pairwiseInteraction">
372  * <interaction speciesA="LiCl(L)" speciesB="KCl(L)">
373  * <Dij units="m/s"> 1.0e-8 </Dij>
374  * <Eij units="J/kmol"> 24.0e6 </Eij>
375  * </interaction>
376  * </compositionDependence>
377  * </speciesDiffusivity>
378  * </transport>
379  * \endverbatim
380  */
382 {
383 public:
384  LTI_Pairwise_Interaction(TransportPropertyType tp_ind = TP_UNKNOWN) :
385  LiquidTranInteraction(tp_ind) {
386  m_model = LTI_MODEL_PAIRWISE_INTERACTION;
387  }
388 
389  //! Copy constructor
390  // LTI_Pairwise_Interaction( const LTI_Pairwise_Interaction &right );
391 
392  //! Assignment operator
393  // LTI_Pairwise_Interaction& operator=( const LTI_Pairwise_Interaction &right );
394 
395  void setParameters(LiquidTransportParams& trParam) ;
396 
397  //! Return the mixture transport property value.
398  /**
399  * Takes the separate species transport properties as input (this method
400  * does not know what transport property it is at this point.
401  */
402  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
403  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
404 
405  //! Return the matrix of binary interaction parameters.
406  /**
407  * Takes the proper mixing rule for the binary interaction parameters
408  * and calculates them
409  */
410  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) ;
411 protected:
412 
413  std::vector<LTPspecies*> m_diagonals;
414 };
415 
416 
417 //! Stefan Maxwell Diffusion Coefficients can be solved for given
418 //! ion conductivity, mobility ratios, and self diffusion coeffs.
419 //! This class is only valid for a common anion mixture of two
420 //! salts with cations of equal charge. Hence the name _PPN.
421 /**
422  *
423  * This class requres you specify
424  *
425  * 1 - ion conductivity
426  *
427  * 2 - mobility ratio of the two cations (set all other ratios to zero)
428  *
429  * 3 - Self diffusion coefficients of the cations (set others to zero)
430  * is used to calculate the "mutual diffusion coefficient". The
431  * approximation needed to do so requires the cations have equal charge.
432  *
433  * We than calculate the Stefan Maxwell Diffusion Coefficients by
434  * \f[
435  * \frac{1}{D_{12}} = (1-\epsilon X_A)(1+\epsilon X_B)
436  * \frac{\nu_- + \nu_+}{\nu_-\nu_+^2D}
437  * + \frac{z_-z_+ F^2}{\kappa V R T}
438  * \f]
439  * \f[
440  * \frac{1}{D_{12}} = -\epsilon X_B(1-\epsilon X_A)
441  * \frac{\nu_- + \nu_+}{\nu_-^2\nu_+D}
442  * - \frac{z_-z_+ F^2}{\kappa V R T}
443  * \f]
444  * \f[
445  * \frac{1}{D_{23}} = \epsilon X_A(1+\epsilon X_B)
446  * \frac{\nu_- + \nu_+}{\nu_-^2\nu_+D}
447  * - \frac{z_-z_+ F^2}{\kappa V R T}
448  * \f]
449  * where F is Faraday's constant, RT is the gas constant times the
450  * tempurature, and V is the molar volume (basis is moles of ions) that is
451  * calculated by the ThermoPhase member. X_A and X_B are the mole fractions
452  * of the salts composed of cation(1) and cation(2), respectively, that share
453  * a common anion(3). \f$\nu_{+,-}\f$ are the stoichiometric coefficients in
454  * the dissociation reaction of the salts to the ions with charges of
455  * \f$z_{+,-}\f$. Assuming that the cations have equal charge, the "mutual
456  * diffusion coefficient" is calculated using the cation self diffusion
457  * coefficients.
458  * \f[
459  * \frac{1}{\nu_-\nu_+D} = \left(1+\frac{\partial \gamma_B}{\partial N_B}
460  * \right)\frac{X_A}{D_2^*}+\left(1+\frac{\partial \gamma_A}{\partial N_A}
461  * \right)\frac{X_B}{D_1^*}
462  * \f]
463  * where the self diffusion coefficients, \f$D_i^*\f$, are temperature and
464  * composition parameterized inputs and the derivative of the activity
465  * coefficient, \f$\frac{\partial \gamma_B}{\partial N_B}\f$, is calculated
466  * by the ThermoPhase member using the excess enthalpy and entropy upon mixing.
467  *
468  * Finally, the deviation of the transferrence numbers from ideality,
469  * \f$\epsilon\f$, is calculated from the mobility ratio of the cations.
470  * \f[
471  * \epsilon = \frac{1-b_2/b_1}{X_A+X_Bb_2/b_1}
472  * \f]
473  * Where \f$b_i\f$ are the mobilities of the two cations. Everywhere,
474  * cation 1 corresponds with salt A and cation 2 with salt B.
475  *
476  * Sample input for this method is
477  * \verbatim
478  * <transport model="Liquid">
479  * <speciesDiffusivity>
480  * <compositionDependence model="stefanMaxwell_PPN">
481  * </compositionDependence>
482  * </speciesDiffusivity>
483  * </transport>
484  * \endverbatim
485  */
487 {
488 
489 public:
490  LTI_StefanMaxwell_PPN(TransportPropertyType tp_ind = TP_UNKNOWN) :
491  LiquidTranInteraction(tp_ind) {
492  m_model = LTI_MODEL_STEFANMAXWELL_PPN;
493  }
494 
495  //! Copy constructor
496  // LTI_StefanMaxwell_PPN( const LTI_StefanMaxwell_PPN &right );
497 
498  //! Assignment operator
499  // LTI_StefanMaxwell_PPN& operator=( const LTI_StefanMaxwell_PPN &right );
500 
501  void setParameters(LiquidTransportParams& trParam) ;
502 
503  //! Return the mixture transport property value.
504  /**
505  * Takes the separate species transport properties as input (this method
506  * does not know what transport property it is at this point.
507  */
508  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
509  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
510 
511  //! Return the matrix of binary interaction parameters.
512  /**
513  * Takes the proper mixing rule for the binary interaction parameters
514  * and calculates them
515  */
516  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) ;
517 
518 protected:
519  doublereal m_ionCondMix;
520  LiquidTranInteraction* m_ionCondMixModel;
521  std::vector<LTPspecies*> m_ionCondSpecies;
522  typedef std::vector<LTPspecies*> LTPvector;
523  DenseMatrix m_mobRatMix;
524  std::vector<LiquidTranInteraction*> m_mobRatMixModel;
525  std::vector<LTPvector> m_mobRatSpecies;
526 
527  std::vector<LiquidTranInteraction*> m_selfDiffMixModel;
528  vector_fp m_selfDiffMix;
529  std::vector<LTPvector> m_selfDiffSpecies;
530 };
531 
532 
533 class LTI_StokesEinstein : public LiquidTranInteraction
534 {
535 public:
536  LTI_StokesEinstein(TransportPropertyType tp_ind = TP_UNKNOWN) :
537  LiquidTranInteraction(tp_ind) {
538  m_model = LTI_MODEL_STOKES_EINSTEIN;
539  }
540 
541  //! Copy constructor
542  // LTI_StokesEinstein( const LTI_StokesEinstein &right );
543 
544  //! Assignment operator
545  // LTI_StokesEinstein& operator=( const LTI_StokesEinstein &right );
546 
547  void setParameters(LiquidTransportParams& trParam);
548 
549  //! Return the mixture transport property value.
550  /**
551  * Takes the separate species transport properties
552  * as input (this method does not know what
553  * transport property it is at this point.
554  */
555  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
556  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
557 
558  //! Return the matrix of binary interaction parameters.
559  /**
560  * Takes the proper mixing rule for the binary interaction parameters
561  * and calculates them
562  */
563  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) ;
564 
565 protected:
566  std::vector<LTPspecies*> m_viscosity;
567  std::vector<LTPspecies*> m_hydroRadius;
568 };
569 
570 //! Simple mole fraction weighting of transport properties
571 /**
572  * This model weights the transport property by the mole fractions. The
573  * overall formula for the mixture viscosity is
574  *
575  * \f[ \eta_{mix} = \sum_i X_i \eta_i
576  * + \sum_i \sum_j X_i X_j A_{i,j} \f].
577  */
579 {
580 public:
581  LTI_MoleFracs_ExpT(TransportPropertyType tp_ind = TP_UNKNOWN) :
582  LiquidTranInteraction(tp_ind) {
583  m_model = LTI_MODEL_MOLEFRACS_EXPT;
584  }
585 
586  //! Copy constructor
587  // LTI_MoleFracs_ExpT( const LTI_MoleFracs_ExpT &right );
588 
589  //! Assignment operator
590  // LTI_MoleFracs_ExpT& operator=( const LTI_MoleFracs_ExpT &right );
591 
592  //! Return the mixture transport property value.
593  /**
594  * Takes the separate species transport properties as input (this method
595  * does not know what transport property it is at this point.
596  */
597  doublereal getMixTransProp(doublereal* valueSpecies, doublereal* weightSpecies = 0);
598  doublereal getMixTransProp(std::vector<LTPspecies*> LTPptrs) ;
599 
600  //! Return the matrix of binary interaction parameters.
601  /**
602  * Takes the proper mixing rule for the binary interaction parameters
603  * and calculates them: Not Implemented for this mixing rule
604  */
605  void getMatrixTransProp(DenseMatrix& mat, doublereal* speciesValues = 0) {
606  mat = (*m_Aij[0]);
607  }
608 };
609 
610 }
611 
612 #endif
thermo_t * m_thermo
pointer to thermo object to get current temperature
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Copy constructor.
TransportPropertyType
Enumeration of the types of transport properties that can be handled by the variables in the various ...
Definition: LTPspecies.h:31
LiquidTranMixingModel m_model
Model for species interaction effects Takes enum LiquidTranMixingModel.
std::vector< DenseMatrix * > m_Hij
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (in energy units...
An error indicating that an unimplemented function has been called.
Definition: ctexceptions.h:213
Simple mass fraction weighting of transport properties.
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Return the mixture transport property value.
std::vector< DenseMatrix * > m_Bij
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (linear temperat...
std::vector< DenseMatrix * > m_Aij
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (no temperature ...
Class XML_Node is a tree-based representation of the contents of an XML file.
Definition: xml.h:100
Transport properties that act like pairwise interactions as in binary diffusion coefficients.
TransportPropertyType m_property
enum indicating what property this is (i.e viscosity)
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
virtual doublereal getMixTransProp(doublereal *speciesValues, doublereal *weightSpecies=0)
Return the mixture transport property value.
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
Header file defining class LiquidTransportData.
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:97
Class LiquidTransportParams holds transport model parameters relevant to transport in mixtures...
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
void setParameters(LiquidTransportParams &trParam)
Copy constructor.
Mixing rule using logarithms of the mole fractions.
DenseMatrix m_Dij
Matrix of interactions.
Classes providing support for XML data files.
LiquidTranMixingModel
Composition dependence type for liquid mixture transport properties.
void setParameters(LiquidTransportParams &trParam)
Copy constructor.
LiquidTranInteraction(TransportPropertyType tp_ind=TP_UNKNOWN)
Constructor.
std::vector< DenseMatrix * > m_Sij
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (in entropy unit...
Simple mole fraction weighting of transport properties.
void getMatrixTransProp(DenseMatrix &mat, doublereal *speciesValues=0)
Return the matrix of binary interaction parameters.
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
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Copy constructor.
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Return the mixture transport property value.
Stefan Maxwell Diffusion Coefficients can be solved for given ion conductivity, mobility ratios...
Simple mole fraction weighting of transport properties.
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Copy constructor.
virtual void init(const XML_Node &compModelNode=XML_Node(), thermo_t *thermo=0)
initialize LiquidTranInteraction objects with thermo and XML node
doublereal getMixTransProp(doublereal *valueSpecies, doublereal *weightSpecies=0)
Copy constructor.
DenseMatrix m_Eij
Matrix of interactions (in energy units, 1/RT temperature dependence)
Base class to handle transport property evaluation in a mixture.
Class that holds the data that is read in from the XML file, and which is used for processing of the ...
A class for full (non-sparse) matrices with Fortran-compatible data storage, which adds matrix operat...
Definition: DenseMatrix.h:71