Cantera  2.5.1
IonGasTransport.h
Go to the documentation of this file.
1 /**
2  * @file IonGasTransport.h
3  */
4 
5 // This file is part of Cantera. See License.txt in the top-level directory or
6 // at https://cantera.org/license.txt for license and copyright information.
7 
8 #ifndef CT_ION_GAS_TRANSPORT_H
9 #define CT_ION_GAS_TRANSPORT_H
10 
11 #include "MixTransport.h"
12 
13 namespace Cantera
14 {
15 //! Class IonGasTransport implements Stockmayer-(n,6,4) model for transport of ions.
16 /*!
17  * As implemented here, only binary transport between neutrals and ions is considered
18  * for calculating mixture-average diffusion coefficients and mobilities. When
19  * polarizability is not provide for an ion, LJ model is used instead of n64 model.
20  * Only neutral species are considered for thermal conductivity and viscosity.
21  *
22  * References for Stockmayer-(n,6,4) model:
23  *
24  * 1. Selle, Stefan, and Uwe Riedel. "Transport properties of ionized species."
25  * Annals of the New York Academy of Sciences 891.1 (1999): 72-80.
26  * 2. Selle, Stefan, and Uwe Riedel. "Transport coefficients of reacting air at
27  * high temperatures." 38th Aerospace Sciences Meeting and Exhibit. 1999.
28  * 3. Han, Jie, et al. "Numerical modelling of ion transport in flames."
29  * Combustion Theory and Modelling 19.6 (2015): 744-772.
30  * DOI: 10.1080/13647830.2015.1090018
31  * 4. Chiflikian, R. V. "The analog of Blanc’s law for drift velocities
32  * of electrons in gas mixtures in weakly ionized plasma."
33  * Physics of Plasmas 2.10 (1995): 3902-3909.
34  * 5. Viehland, L. A., et al. "Tables of transport collision integrals for
35  * (n, 6, 4) ion-neutral potentials." Atomic Data and Nuclear Data Tables
36  * 16.6 (1975): 495-514.
37  *
38  * Stockmayer-(n,6,4) model is not suitable for collision between O2/O2-
39  * due to resonant charge transfer. Therefore, an experimental collision
40  * data is used instead.
41  *
42  * Data taken from:
43  *
44  * Prager, Jens. Modeling and simulation of charged species in
45  * lean methane-oxygen flames. Diss. 2005. Page 104.
46  *
47  * @ingroup tranprops
48  */
50 {
51 public:
53 
54  virtual std::string transportType() const {
55  return "Ion";
56  }
57 
58  virtual void init(thermo_t* thermo, int mode, int log_level);
59 
60  //! Viscosity of the mixture (kg/m/s).
61  //! Only Neutral species contribute to Viscosity.
62  virtual double viscosity();
63 
64  //! Returns the mixture thermal conductivity (W/m/K).
65  //! Only Neutral species contribute to thermal conductivity.
66  virtual double thermalConductivity();
67 
68  //! The mobilities for ions in gas.
69  //! The ion mobilities are calculated by Blanc's law.
70  virtual void getMobilities(double* const mobi);
71 
72  //! The mixture transport for ionized gas.
73  //! The binary transport between two charged species is neglected.
74  virtual void getMixDiffCoeffs(double* const d);
75 
76  /*! The electrical conductivity (Siemens/m).
77  * \f[
78  * \sigma = \sum_k{\left|C_k\right| \mu_k \frac{X_k P}{k_b T}}
79  * \f]
80  */
81  virtual double electricalConductivity();
82 
83 protected:
84  //! setup parameters for n64 model
85  void setupN64();
86 
87  //! Generate polynomial fits to the binary diffusion coefficients.
88  //! Use Stockmayer-(n,6,4) model for collision between charged and neutral species.
89  virtual void fitDiffCoeffs(MMCollisionInt& integrals);
90 
91  /*!
92  * Collision integral of omega11 of n64 collision model.
93  * The collision integral was fitted by Han et al. using the table
94  * by Viehlan et al.
95  * Note: Han release the range to 1000, but Selle suggested that
96  * a high temperature model is needed for T* > 10.
97  */
98  double omega11_n64(const double tstar, const double gamma);
99 
100  //! electrical properties
102 
103  //! index of ions (exclude electron.)
104  std::vector<size_t> m_kIon;
105 
106  //! index of neutral species
107  std::vector<size_t> m_kNeutral;
108 
109  //! index of electron
110  size_t m_kElectron;
111 
112  //! parameter of omega11 of n64
114 
115  //! polynomial of the collision integral for O2/O2-
117 };
118 
119 }
120 
121 #endif
Headers for the MixTransport object, which models transport properties in ideal gas solutions using a...
A class for full (non-sparse) matrices with Fortran-compatible data storage, which adds matrix operat...
Definition: DenseMatrix.h:51
Class IonGasTransport implements Stockmayer-(n,6,4) model for transport of ions.
virtual double electricalConductivity()
vector_fp m_om11_O2
polynomial of the collision integral for O2/O2-
vector_fp m_speciesCharge
electrical properties
size_t m_kElectron
index of electron
virtual void fitDiffCoeffs(MMCollisionInt &integrals)
Generate polynomial fits to the binary diffusion coefficients.
virtual void getMixDiffCoeffs(double *const d)
The mixture transport for ionized gas.
std::vector< size_t > m_kIon
index of ions (exclude electron.)
double omega11_n64(const double tstar, const double gamma)
virtual void getMobilities(double *const mobi)
The mobilities for ions in gas.
virtual double viscosity()
Viscosity of the mixture (kg/m/s).
DenseMatrix m_gamma
parameter of omega11 of n64
void setupN64()
setup parameters for n64 model
virtual std::string transportType() const
Identifies the Transport object type.
virtual double thermalConductivity()
Returns the mixture thermal conductivity (W/m/K).
std::vector< size_t > m_kNeutral
index of neutral species
virtual void init(thermo_t *thermo, int mode, int log_level)
Initialize a transport manager.
Calculation of Collision integrals.
Class MixTransport implements mixture-averaged transport properties for ideal gas mixtures.
Definition: MixTransport.h:57
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:102
thermo_t & thermo()
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:180
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:264