Cantera 2.6.0

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 */
49 class IonGasTransport : public MixTransport
50{
51 public:
52 IonGasTransport();
53
54 virtual std::string transportType() const {
55 return "Ion";
56 }
57
58 virtual void init(ThermoPhase* 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
101 vector_fp m_speciesCharge;
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
113 DenseMatrix m_gamma;
114
115 //! polynomial of the collision integral for O2/O2-
116 vector_fp m_om11_O2;
117};
118
119}
120
121#endif
MixTransport.h
Headers for the MixTransport object, which models transport properties in ideal gas solutions using a...
Cantera::DenseMatrix
A class for full (non-sparse) matrices with Fortran-compatible data storage, which adds matrix operat...
Definition: DenseMatrix.h:51
Cantera::IonGasTransport
Class IonGasTransport implements Stockmayer-(n,6,4) model for transport of ions.
Definition: IonGasTransport.h:50
Cantera::IonGasTransport::electricalConductivity
virtual double electricalConductivity()
Definition: IonGasTransport.cpp:143
Cantera::IonGasTransport::m_om11_O2
vector_fp m_om11_O2
polynomial of the collision integral for O2/O2-
Definition: IonGasTransport.h:116
Cantera::IonGasTransport::m_speciesCharge
vector_fp m_speciesCharge
electrical properties
Definition: IonGasTransport.h:101
Cantera::IonGasTransport::m_kElectron
size_t m_kElectron
index of electron
Definition: IonGasTransport.h:110
Cantera::IonGasTransport::fitDiffCoeffs
virtual void fitDiffCoeffs(MMCollisionInt &integrals)
Generate polynomial fits to the binary diffusion coefficients.
Definition: IonGasTransport.cpp:160
Cantera::IonGasTransport::getMixDiffCoeffs
virtual void getMixDiffCoeffs(double *const d)
The mixture transport for ionized gas.
Definition: IonGasTransport.cpp:351
Cantera::IonGasTransport::m_kIon
std::vector< size_t > m_kIon
index of ions (exclude electron.)
Definition: IonGasTransport.h:104
Cantera::IonGasTransport::omega11_n64
double omega11_n64(const double tstar, const double gamma)
Definition: IonGasTransport.cpp:319
Cantera::IonGasTransport::getMobilities
virtual void getMobilities(double *const mobi)
The mobilities for ions in gas.
Definition: IonGasTransport.cpp:386
Cantera::IonGasTransport::init
virtual void init(ThermoPhase *thermo, int mode, int log_level)
Initialize a transport manager.
Definition: IonGasTransport.cpp:21
Cantera::IonGasTransport::viscosity
virtual double viscosity()
Viscosity of the mixture (kg/m/s).
Definition: IonGasTransport.cpp:100
Cantera::IonGasTransport::m_gamma
DenseMatrix m_gamma
parameter of omega11 of n64
Definition: IonGasTransport.h:113
Cantera::IonGasTransport::setupN64
void setupN64()
setup parameters for n64 model
Definition: IonGasTransport.cpp:251
Cantera::IonGasTransport::transportType
virtual std::string transportType() const
Identifies the Transport object type.
Definition: IonGasTransport.h:54
Cantera::IonGasTransport::thermalConductivity
virtual double thermalConductivity()
Returns the mixture thermal conductivity (W/m/K).
Definition: IonGasTransport.cpp:124
Cantera::IonGasTransport::m_kNeutral
std::vector< size_t > m_kNeutral
index of neutral species
Definition: IonGasTransport.h:107
Cantera::MMCollisionInt
Calculation of Collision integrals.
Definition: MMCollisionInt.h:26
Cantera::MixTransport
Class MixTransport implements mixture-averaged transport properties for ideal gas mixtures.
Definition: MixTransport.h:57
Cantera::ThermoPhase
Base class for a phase with thermodynamic properties.
Definition: ThermoPhase.h:102
Cantera::Transport::thermo
ThermoPhase & thermo()
Definition: TransportBase.h:170
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