Cantera  3.0.0
Loading...
Searching...
No Matches
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
13namespace 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{
36public:
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
69protected:
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.
Base class for a phase with thermodynamic properties.
ThermoPhase & thermo()
Phase object.
Definition Transport.h:192
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:195