Cantera  4.0.0a1
Loading...
Searching...
No Matches
MMCollisionInt.h
Go to the documentation of this file.
1/**
2 * @file MMCollisionInt.h
3 * Monchick and Mason collision integrals
4 */
5
6// This file is part of Cantera. See License.txt in the top-level directory or
7// at https://cantera.org/license.txt for license and copyright information.
8
9#ifndef CT_MMCOLLISIONINT_H
10#define CT_MMCOLLISIONINT_H
11
13
14namespace Cantera
15{
16
17//! Calculation of Collision integrals
18/**
19 * This class provides functions that interpolate the tabulated collision integrals in
20 * Monchick and Mason @cite monchick1961.
21 *
22 * The collision integrals computed by Monchick and Mason use the Stockmayer potential,
23 * which models a polar molecule as a spherical potential with a point dipole at the
24 * center). Equation 16 of Monchick and Mason @cite monchick1961 gives the potential
25 * as:
26 *
27 * @f[
28 * \phi(r) = 4 \epsilon_0 \left[ \left(\frac{\sigma_0}{r}\right)^{12} - \left(\frac{\sigma_0}{r}\right)^6 + \delta \left(\frac{\sigma_0}{r}\right)^3 \right]
29 * @f]
30 *
31 * Where @f$ \epsilon_0 @f$ is the depth of the potential well, @f$ \sigma_0 @f$ is the
32 * distance at which the potential between the two molecules is zero, @f$ \delta @f$ is
33 * defined as:
34 *
35 * @f[
36 * \delta = \frac{1}{4} (\mu^*)^2 \zeta \left( \theta_1, \theta_2, \phi \right)
37 * @f]
38 *
39 * @f$ \mu^* @f$ is the reduced dipole moment. @f$ \theta_1 @f$ , @f$ \theta_2 @f$ ,
40 * and @f$ \phi @f$ are angles related to trajectories of colliding molecules. In the
41 * work of Monchick and Mason, these details are not what is presented in the tables.
42 * Instead, the tables are presented as being functions of the reduced temperature,
43 * @f$ T^* @f$, and the @f$ \delta @f$ parameter. The reduced dipole moment,
44 * @f$ \mu^* @f$ is defined as:
45 *
46 * @f[
47 * \mu^* = \frac{\mu}{\sqrt{\epsilon_0 \sigma_0^3}}
48 * @f]
49 *
50 * Where @f$ \mu @f$ is the dipole moment of the molecule and the other parameters
51 * have been defined earlier. This work considers only the collisions of like
52 * molecules, so only a single value is needed.
53 *
54 * The tabulated data comes from the averaged collision integrals in tables
55 * V through VIII of Monchick and Mason @cite monchick1961.
56 *
57 * @ingroup tranprops
58 */
60{
61public:
63 virtual ~MMCollisionInt() {}
64
65 //! Initialize the object for calculation
66 /*!
67 * @param tsmin Minimum value of Tstar to carry out the fitting
68 * @param tsmax Maximum value of Tstar to carry out the fitting
69 */
70 void init(double tsmin, double tsmax);
71
72 double omega22(double ts, double deltastar);
73 double astar(double ts, double deltastar);
74 double bstar(double ts, double deltastar);
75 double cstar(double ts, double deltastar);
76 void fit(int degree, double deltastar, span<double> astar, span<double> bstar,
77 span<double> cstar);
78 void fit_omega22(int degree, double deltastar, span<double> om22);
79 double omega11(double ts, double deltastar) {
80 return omega22(ts, deltastar)/astar(ts, deltastar);
81 }
82
83private:
84 double fitDelta(int table, int ntstar, int degree, span<double> c);
85 double quadInterp(double x0, span<const double> x, span<const double> y);
86
87 vector<vector<double>> m_o22poly;
88 vector<vector<double>> m_apoly;
89 vector<vector<double>> m_bpoly;
90 vector<vector<double>> m_cpoly;
91
92 static std::array<double, 8> delta;
93 static std::array<double, 37> tstar22;
94
95 //! Table of omega22 values
96 static std::array<double, 37*8> omega22_table;
97
98 //! T* values (reduced temperature)
99 static std::array<double, 39> tstar;
100
101 //! astar table
102 static std::array<double, 39*8> astar_table;
103
104 //! bstar table
105 static std::array<double, 39*8> bstar_table;
106
107 //! cstar table
108 static std::array<double, 39*8> cstar_table;
109
110 //! Log temp
111 vector<double> m_logTemp;
112
113 //! Index of the tstar array that encompasses the minimum temperature
114 //! fitting range value of tsmin.
116
117 //! Index of the tstar array that encompasses the maximum temperature
118 //! fitting range value of tsmax.
120};
121
122}
123#endif
Calculation of Collision integrals.
int m_nmin
Index of the tstar array that encompasses the minimum temperature fitting range value of tsmin.
static std::array< double, 39 *8 > astar_table
astar table
void init(double tsmin, double tsmax)
Initialize the object for calculation.
static std::array< double, 39 *8 > bstar_table
bstar table
static std::array< double, 39 > tstar
T* values (reduced temperature)
int m_nmax
Index of the tstar array that encompasses the maximum temperature fitting range value of tsmax.
static std::array< double, 39 *8 > cstar_table
cstar table
static std::array< double, 37 *8 > omega22_table
Table of omega22 values.
vector< double > m_logTemp
Log temp.
This file contains definitions of constants, types and terms that are used in internal routines and a...
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595