Cantera  3.1.0a1
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: Selle and Riedel @cite selle1999,
23  * @cite selle2000; Han et al. @cite han2015; Chiflikian @cite chiflikian1995; and
24  * Viehland et al. @cite viehland1975.
25  *
26  * Stockmayer-(n,6,4) model is not suitable for collision between O2/O2-
27  * due to resonant charge transfer. Therefore, an experimental collision
28  * data is used instead.
29  *
30  * Data taken from @cite prager2005.
31  *
32  * @ingroup tranprops
33  */
35 {
36 public:
37  IonGasTransport() = default;
38 
39  string transportModel() const override {
40  return "ionized-gas";
41  }
42 
43  void init(ThermoPhase* thermo, int mode, int log_level) override;
44 
45  //! Viscosity of the mixture (kg/m/s).
46  //! Only Neutral species contribute to Viscosity.
47  double viscosity() override;
48 
49  //! Returns the mixture thermal conductivity (W/m/K).
50  //! Only Neutral species contribute to thermal conductivity.
51  double thermalConductivity() override;
52 
53  //! The mobilities for ions in gas.
54  //! The ion mobilities are calculated by Blanc's law.
55  void getMobilities(double* const mobi) override;
56 
57  //! The mixture transport for ionized gas.
58  //! The binary transport between two charged species is neglected.
59  void getMixDiffCoeffs(double* const d) override;
60 
61  /**
62  * The electrical conductivity (Siemens/m).
63  * @f[
64  * \sigma = \sum_k{\left|C_k\right| \mu_k \frac{X_k P}{k_b T}}
65  * @f]
66  */
67  double electricalConductivity() override;
68 
69 protected:
70  //! setup parameters for n64 model
71  void setupN64();
72 
73  //! Generate polynomial fits to the binary diffusion coefficients.
74  //! Use Stockmayer-(n,6,4) model for collision between charged and neutral species.
75  void fitDiffCoeffs(MMCollisionInt& integrals) override;
76 
77  /**
78  * Collision integral of omega11 of n64 collision model.
79  * The collision integral was fitted by Han et al. using the table
80  * by Viehlan et al.
81  * Note: Han release the range to 1000, but Selle suggested that
82  * a high temperature model is needed for T* > 10.
83  */
84  double omega11_n64(const double tstar, const double gamma);
85 
86  //! electrical properties
87  vector<double> m_speciesCharge;
88 
89  //! index of ions (exclude electron.)
90  vector<size_t> m_kIon;
91 
92  //! index of neutral species
93  vector<size_t> m_kNeutral;
94 
95  //! index of electron
96  size_t m_kElectron = npos;
97 
98  //! parameter of omega11 of n64
100 
101  //! polynomial of the collision integral for O2/O2-
102  vector<double> m_om11_O2;
103 };
104 
105 }
106 
107 #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:55
Class IonGasTransport implements Stockmayer-(n,6,4) model for transport of ions.
void fitDiffCoeffs(MMCollisionInt &integrals) override
Generate polynomial fits to the binary diffusion coefficients.
void getMobilities(double *const mobi) override
The mobilities for ions in gas.
void init(ThermoPhase *thermo, int mode, int log_level) override
Initialize a transport manager.
size_t m_kElectron
index of electron
double thermalConductivity() override
Returns the mixture thermal conductivity (W/m/K).
void getMixDiffCoeffs(double *const d) override
The mixture transport for ionized gas.
vector< double > m_om11_O2
polynomial of the collision integral for O2/O2-
double omega11_n64(const double tstar, const double gamma)
Collision integral of omega11 of n64 collision model.
DenseMatrix m_gamma
parameter of omega11 of n64
void setupN64()
setup parameters for n64 model
double viscosity() override
Viscosity of the mixture (kg/m/s).
string transportModel() const override
Identifies the model represented by this Transport object.
vector< size_t > m_kIon
index of ions (exclude electron.)
double electricalConductivity() override
The electrical conductivity (Siemens/m).
vector< size_t > m_kNeutral
index of neutral species
vector< double > m_speciesCharge
electrical properties
Calculation of Collision integrals.
Class MixTransport implements mixture-averaged transport properties for ideal gas mixtures.
Definition: MixTransport.h:55
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:390
ThermoPhase & thermo()
Phase object.
Definition: Transport.h:103
Namespace for the Cantera kernel.
Definition: AnyMap.cpp:564
const size_t npos
index returned by functions to indicate "no position"
Definition: ct_defs.h:180