Cantera  4.0.0a1
Loading...
Searching...
No Matches
GasTransport.h
Go to the documentation of this file.
1/**
2 * @file GasTransport.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_GAS_TRANSPORT_H
9#define CT_GAS_TRANSPORT_H
10
11#include "Transport.h"
13
14namespace Cantera
15{
16
17class MMCollisionInt;
18
19//! Class GasTransport implements some functions and properties that are
20//! shared by the MixTransport and MultiTransport classes.
21//!
22//! For details, see Kee, et al. @cite kee2003 and @cite kee2017.
23//!
24//! @ingroup tranprops
25class GasTransport : public Transport
26{
27public:
28 //! Get the viscosity [Pa·s] of the mixture
29 /*!
30 * The viscosity is computed using the Wilke mixture rule, as given in Poling et al.
31 * @cite poling2001, Eqs. (9-5.13 and 9-5.14):
32 * @f[
33 * \eta = \sum_k \frac{\eta_k X_k}{\sum_j \Phi_{k,j} X_j}.
34 * @f]
35 *
36 * Here, @f$ \eta_k @f$ is the viscosity of pure species *k* and the weighting
37 * function @f$ \Phi_{k,j} @f$ is:
38 * @f[
39 * \Phi_{k,j} = \frac{ \left[ 1 + \left( \eta_k / \eta_j \right)^{1/2}
40 * \left( M_j / M_k \right)^{1/4} \right]^2 }
41 * {\left[ 8 \left( 1 + M_k / M_j \right) \right]^{1/2}}
42 * @f]
43 * @see updateViscosity_T()
44 */
45 double viscosity() override;
46
47 //! Get the pure-species viscosities [Pa·s]
48 void getSpeciesViscosities(span<double> visc) override {
49 checkArraySize("GasTransport::getSpeciesViscosities", visc.size(), m_nsp);
50 update_T();
52 std::copy(m_visc.begin(), m_visc.end(), visc.begin());
53 }
54
55 void getBinaryDiffCoeffs(const size_t ld, span<double> d) override;
56
57 //! Returns the Mixture-averaged diffusion coefficients [m²/s].
58 /*!
59 * Returns the mixture averaged diffusion coefficients for a gas,
60 * appropriate for calculating the mass averaged diffusive flux with respect
61 * to the mass averaged velocity using gradients of the mole fraction.
62 * Note, for the single species case or the pure fluid case the routine
63 * returns the self-diffusion coefficient. This is needed to avoid a Nan
64 * result in the formula below.
65 *
66 * This is Eqn. 12.180 from "Chemically Reacting Flow"
67 *
68 * @f[
69 * D_{km}' = \frac{\left( \bar{M} - X_k M_k \right)}{ \bar{\qquad M \qquad } }
70 * {\left( \sum_{j \ne k} \frac{X_j}{\mathcal{D}_{kj}} \right) }^{-1}
71 * @f]
72 *
73 * @param[out] d Vector of mixture diffusion coefficients, @f$ D_{km}' @f$ ,
74 * for each species; length is the number of species.
75 */
76 void getMixDiffCoeffs(span<double> d) override;
77
78 //! Returns the mixture-averaged diffusion coefficients [m²/s].
79 //! These are the coefficients for calculating the molar diffusive fluxes
80 //! from the species mole fraction gradients, computed according to
81 //! Eq. 12.176 in "Chemically Reacting Flow":
82 //!
83 //! @f[ D_{km}^* = \frac{1-X_k}{\sum_{j \ne k}^K X_j/\mathcal{D}_{kj}} @f]
84 //!
85 //! @param[out] d vector of mixture-averaged diffusion coefficients for
86 //! each species, length #m_nsp.
87 void getMixDiffCoeffsMole(span<double> d) override;
88
89 //! Returns the mixture-averaged diffusion coefficients [m²/s].
90 /*!
91 * These are the coefficients for calculating the diffusive mass fluxes
92 * from the species mass fraction gradients, computed according to
93 * Eq. 12.178 in "Chemically Reacting Flow":
94 *
95 * @f[
96 * \frac{1}{D_{km}} = \sum_{j \ne k}^K \frac{X_j}{\mathcal{D}_{kj}} +
97 * \frac{X_k}{1-Y_k} \sum_{j \ne k}^K \frac{Y_j}{\mathcal{D}_{kj}}
98 * @f]
99 *
100 * @param[out] d vector of mixture-averaged diffusion coefficients for
101 * each species, length #m_nsp.
102 */
103 void getMixDiffCoeffsMass(span<double> d) override;
104
105 //! Return the polynomial fits to the viscosity of species `i`.
106 //! @see fitProperties()
107 void getViscosityPolynomial(size_t i, span<double> coeffs) const override;
108
109 //! Return the temperature fits of the heat conductivity of species `i`.
110 //! @see fitProperties()
111 void getConductivityPolynomial(size_t i, span<double> coeffs) const override;
112
113 //! Return the polynomial fits to the binary diffusivity of species pair (i, j)
114 //! @see fitDiffCoeffs()
115 void getBinDiffusivityPolynomial(size_t i, size_t j, span<double> coeffs) const override;
116
117 //! Return the polynomial fits to the collision integral of species pair (i, j)
118 //! @see fitCollisionIntegrals()
119 void getCollisionIntegralPolynomial(size_t i, size_t j,
120 span<double> astar_coeffs,
121 span<double> bstar_coeffs,
122 span<double> cstar_coeffs) const override;
123
124 //! Modify the polynomial fits to the viscosity of species `i`
125 //! @see fitProperties()
126 void setViscosityPolynomial(size_t i, span<double> coeffs) override;
127
128 //! Modify the temperature fits of the heat conductivity of species `i`
129 //! @see fitProperties()
130 void setConductivityPolynomial(size_t i, span<double> coeffs) override;
131
132 //! Modify the polynomial fits to the binary diffusivity of species pair (i, j)
133 //! @see fitDiffCoeffs()
134 void setBinDiffusivityPolynomial(size_t i, size_t j, span<double> coeffs) override;
135
136 //! Modify the polynomial fits to the collision integral of species pair (i, j)
137 //! @see fitCollisionIntegrals()
138 void setCollisionIntegralPolynomial(size_t i, size_t j, span<double> astar_coeffs,
139 span<double> bstar_coeffs, span<double> cstar_coeffs, bool actualT) override;
140
141 void init(shared_ptr<ThermoPhase> thermo, int mode=0) override;
142
143 bool CKMode() const override {
144 return m_mode == CK_Mode;
145 }
146
147 void invalidateCache() override;
148
149protected:
150 GasTransport();
151
152 virtual void update_T();
153 virtual void update_C() = 0;
154
155 //! Update the temperature-dependent viscosity terms.
156 /**
157 * Updates the array of pure species viscosities, and the weighting
158 * functions in the viscosity mixture rule. The flag #m_visc_ok is set to true.
159 * @see viscosity()
160 */
161 virtual void updateViscosity_T();
162
163 //! Update the pure-species viscosities. These are evaluated from the
164 //! polynomial fits of the temperature and are assumed to be independent
165 //! of pressure.
166 virtual void updateSpeciesViscosities();
167
168 //! Update the binary diffusion coefficients
169 /*!
170 * These are evaluated from the polynomial fits of the temperature at the
171 * unit pressure of 1 Pa.
172 */
173 virtual void updateDiff_T();
174
175 //! @name Initialization
176 //! @{
177
178 //! Setup parameters for a new kinetic-theory-based transport manager for
179 //! low-density gases
180 virtual void setupCollisionParameters();
181
182 //! Setup range for polynomial fits to collision integrals of
183 //! Monchick & Mason @cite monchick1961
185
186 //! Read the transport database
187 /*!
188 * Read transport property data from a file for a list of species. Given the
189 * name of a file containing transport property parameters and a list of
190 * species names.
191 */
192 virtual void getTransportData();
193
194 //! Corrections for polar-nonpolar binary diffusion coefficients
195 /*!
196 * Calculate corrections to the well depth parameter and the diameter for use in
197 * computing the binary diffusion coefficient of polar-nonpolar pairs. For more
198 * information about this correction, see Dixon-Lewis @cite dixon-lewis1968.
199 *
200 * @param i Species one - this is a bimolecular correction routine
201 * @param j species two - this is a bimolecular correction routine
202 * @param f_eps Multiplicative correction factor to be applied to epsilon(i,j)
203 * @param f_sigma Multiplicative correction factor to be applied to diam(i,j)
204 */
205 void makePolarCorrections(size_t i, size_t j, double& f_eps,
206 double& f_sigma);
207
208 //! Generate polynomial fits to collision integrals
209 /*!
210 * @param integrals interpolator for the collision integrals
211 */
212 void fitCollisionIntegrals(MMCollisionInt& integrals);
213
214 //! Generate polynomial fits to the viscosity @f$ \eta @f$ and conductivity
215 //! @f$ \lambda @f$.
216 /*!
217 * If CKMode(), then the fits are of the form
218 * @f[
219 * \ln \eta(i) = \sum_{n=0}^3 a_n(i) \, (\ln T)^n
220 * @f]
221 * and
222 * @f[
223 * \ln \lambda(i) = \sum_{n=0}^3 b_n(i) \, (\ln T)^n
224 * @f]
225 * Otherwise the fits are of the form
226 * @f[
227 * \left(\eta(i)\right)^{1/2} = T^{1/4} \sum_{n=0}^4 a_n(i) \, (\ln T)^n
228 * @f]
229 * and
230 * @f[
231 * \lambda(i) = T^{1/2} \sum_{n=0}^4 b_n(i) \, (\ln T)^n
232 * @f]
233 *
234 * @param integrals interpolator for the collision integrals
235 */
236 virtual void fitProperties(MMCollisionInt& integrals);
237
238 //! Generate polynomial fits to the binary diffusion coefficients
239 /*!
240 * If CKMode(), then the fits are of the form
241 * @f[
242 * \ln \mathcal{D}(i,j) = \frac{1}{p} \sum_{n=0}^3 c_n(i,j) \, (\ln T)^n
243 * @f]
244 * Otherwise the fits are of the form
245 * @f[
246 * \mathcal{D}(i,j) = \frac{T^{3/2}}{p} \sum_{n=0}^4 c_n(i,j) \, (\ln T)^n
247 * @f]
248 *
249 * @param integrals interpolator for the collision integrals
250 */
251 virtual void fitDiffCoeffs(MMCollisionInt& integrals);
252
253 //! Second-order correction to the binary diffusion coefficients
254 /*!
255 * Calculate second-order corrections to binary diffusion coefficient pair
256 * (dkj, djk). At first order, the binary diffusion coefficients are
257 * independent of composition, and d(k,j) = d(j,k). But at second order,
258 * there is a weak dependence on composition, with the result that d(k,j) !=
259 * d(j,k). This method computes the multiplier by which the first-order
260 * binary diffusion coefficient should be multiplied to produce the value
261 * correct to second order. The expressions here are taken from Marerro and
262 * Mason @cite marrero1972.
263 *
264 * @param t Temperature (K)
265 * @param integrals interpolator for the collision integrals
266 * @param k index of first species
267 * @param j index of second species
268 * @param xk Mole fraction of species k
269 * @param xj Mole fraction of species j
270 * @param fkj multiplier for d(k,j)
271 * @param fjk multiplier for d(j,k)
272 *
273 * @note This method is not used currently.
274 */
275 void getBinDiffCorrection(double t, MMCollisionInt& integrals, size_t k,
276 size_t j, double xk, double xj,
277 double& fkj, double& fjk);
278
279 //! @}
280
281 //! Vector of species mole fractions. These are processed so that all mole
282 //! fractions are >= #Tiny. Length = #m_nsp.
283 vector<double> m_molefracs;
284
285 //! Internal storage for the viscosity of the mixture [Pa·s]
286 double m_viscmix = 0.0;
287
288 //! Update boolean for mixture rule for the mixture viscosity
289 bool m_visc_ok = false;
290
291 //! Update boolean for the weighting factors for the mixture viscosity
292 bool m_viscwt_ok = false;
293
294 //! Update boolean for the species viscosities
295 bool m_spvisc_ok = false;
296
297 //! Update boolean for the binary diffusivities at unit pressure
298 bool m_bindiff_ok = false;
299
300 //! Type of the polynomial fits to temperature. `CK_Mode` means Chemkin mode.
301 //! Any other value means to use %Cantera's preferred fitting functions.
302 int m_mode = 0;
303
304 //! Viscosity weighting function. size = #m_nsp * #m_nsp
306
307 //! work space length = #m_nsp
308 vector<double> m_spwork;
309
310 //! vector of species viscosities [Pa·s]. These are used in Wilke's
311 //! rule to calculate the viscosity of the solution. length = #m_nsp.
312 vector<double> m_visc;
313
314 //! Polynomial fits to the viscosity of each species. `m_visccoeffs[k]` is
315 //! the vector of polynomial coefficients for species `k` that fits the
316 //! viscosity as a function of temperature.
317 vector<vector<double>> m_visccoeffs;
318
319 //! Local copy of the species molecular weights.
320 vector<double> m_mw;
321
322 //! Holds square roots of molecular weight ratios
323 /*!
324 * @code
325 * m_wratjk(j,k) = sqrt(mw[j]/mw[k]) j < k
326 * m_wratjk(k,j) = sqrt(sqrt(mw[j]/mw[k])) j < k
327 * @endcode
328 */
330
331 //! Holds square roots of molecular weight ratios
332 /*!
333 * `m_wratjk1(j,k) = sqrt(1.0 + mw[k]/mw[j]) j < k`
334 */
336
337 //! vector of square root of species viscosities. These are used in Wilke's rule to
338 //! calculate the viscosity of the solution. length = #m_nsp.
339 vector<double> m_sqvisc;
340
341 //! Powers of the ln temperature, up to fourth order
342 vector<double> m_polytempvec;
343
344 //! Current value of the temperature [K] at which the properties in this object
345 //! are calculated.
346 double m_temp = -1.0;
347
348 //! Current value of Boltzmann constant times the temperature [J]
349 double m_kbt = 0.0;
350
351 //! current value of temperature to 1/2 power
352 double m_sqrt_t = 0.0;
353
354 //! Current value of the log of the temperature
355 double m_logt = 0.0;
356
357 //! Current value of temperature to 1/4 power
358 double m_t14 = 0.0;
359
360 //! Polynomial fits to the binary diffusivity of each species
361 /*!
362 * `m_diffcoeff[ic]` is the vector of polynomial coefficients that fits the binary
363 * diffusion coefficient for species `i` and `j`. The relationship between `i`, `j`,
364 * and `ic` is determined from the following algorithm:
365 * @code
366 * int ic = 0;
367 * for (i = 0; i < m_nsp; i++) {
368 * for (j = i; j < m_nsp; j++) {
369 * ic++;
370 * }
371 * }
372 * @endcode
373 */
374 vector<vector<double>> m_diffcoeffs;
375
376 //! Matrix of binary diffusion coefficients at the reference pressure and
377 //! the current temperature Size is #m_nsp x #m_nsp.
379
380 //! temperature fits of the heat conduction
381 /*!
382 * Dimensions are number of species (#m_nsp) and polynomial order of the collision
383 * integral fit (degree+1).
384 */
385 vector<vector<double>> m_condcoeffs;
386
387 //! Indices for the (i,j) interaction in collision integral fits
388 /*!
389 * `m_poly[i][j]` contains the index for (i,j) interactions in
390 * #m_omega22_poly, #m_astar_poly, #m_bstar_poly, and #m_cstar_poly.
391 */
392 vector<vector<int>> m_poly;
393
394 //! Fit for omega22 collision integral
395 /*!
396 * `m_omega22_poly[m_poly[i][j]]` is the vector of polynomial coefficients
397 * (length degree+1) for the collision integral fit for the species pair (i,j).
398 */
399 vector<vector<double>> m_omega22_poly;
400
401 //! Flag to indicate for which (i,j) interaction pairs the
402 //! actual temperature is used instead of the reduced temperature
403 vector<vector<int>> m_star_poly_uses_actualT;
404
405 //! Fit for astar collision integral
406 /*!
407 * `m_astar_poly[m_poly[i][j]]` is the vector of polynomial coefficients
408 * (length degree+1) for the collision integral fit for the species pair (i,j).
409 */
410 vector<vector<double>> m_astar_poly;
411
412 //! Fit for bstar collision integral
413 /*!
414 * `m_bstar_poly[m_poly[i][j]]` is the vector of polynomial coefficients
415 * (length degree+1) for the collision integral fit for the species pair (i,j).
416 */
417 vector<vector<double>> m_bstar_poly;
418
419 //! Fit for cstar collision integral
420 /*!
421 * `m_bstar_poly[m_poly[i][j]]` is the vector of polynomial coefficients
422 * (length degree+1) for the collision integral fit for the species pair (i,j).
423 */
424 vector<vector<double>> m_cstar_poly;
425
426 //! Rotational relaxation number for each species
427 /*!
428 * length is the number of species in the phase. units are dimensionless
429 */
430 vector<double> m_zrot;
431
432 //! Dimensionless rotational heat capacity of each species
433 /*!
434 * These values are 0, 1 and 1.5 for single-molecule, linear, and nonlinear
435 * species respectively. length is the number of species in the phase.
436 * Dimensionless (Cr / R)
437 */
438 vector<double> m_crot;
439
440 //! Vector of booleans indicating whether a species is a polar molecule
441 /*!
442 * Length is #m_nsp.
443 */
444 vector<bool> m_polar;
445
446 //! Polarizability [m³] of each species in the phase
447 vector<double> m_alpha;
448
449 //! Lennard-Jones well-depth [J] of the species in the current phase
450 /*!
451 * length is the number of species in the phase. Note this is not J/kmol; this is a
452 * per molecule amount.
453 */
454 vector<double> m_eps;
455
456 //! Lennard-Jones diameter [m] of the species in the current phase
457 vector<double> m_sigma;
458
459 //! This is the reduced mass [kg] of the interaction between species i and j
460 /*!
461 * @f[
462 * m_{ij} = \frac{M_i M_j}{N_A (M_i + M_j)}
463 * @f]
464 * Length #m_nsp * #m_nsp. This is a symmetric matrix
465 */
467
468 //! hard-sphere diameter [m] for (i,j) collision
469 /*!
470 * @f[
471 * \sigma_{ij} = \frac{\sigma_i + \sigma_j}{2}
472 * @f]
473 * Length #m_nsp * #m_nsp. This is a symmetric matrix.
474 */
476
477 //! The effective well depth [J] for (i,j) collisions
478 /*!
479 * @f[
480 * \epsilon_{ij} = \sqrt{\epsilon_i \epsilon_j}
481 * @f]
482 * Length #m_nsp * #m_nsp. This is a symmetric matrix.
483 */
485
486 //! The effective dipole moment [Coulomb·m] for (i,j) collisions
487 /*!
488 * @f[
489 * \mu_{ij} = \sqrt{\mu_i \mu_j}
490 * @f]
491 *
492 * Dipole moments are conventionally given in Debye. The conversion factor to
493 * Coulomb·m is @f$ 10^{-21} / c \approx 3.335 \times 10^{-30} @f$.
494 *
495 * Length #m_nsp * #m_nsp. This is a symmetric matrix.
496 */
498
499 //! Reduced dipole moment of the interaction between two species
500 /*!
501 * @f[
502 * \tilde{\delta}^*_{ij} =
503 * \frac{ \mu_{ij}^2 }{ 8 \pi \varepsilon_0 \epsilon_{ij} \sigma_{ij}^3 }
504 * @f]
505 * Length #m_nsp * #m_nsp. This is a symmetric matrix
506 */
508
509 //! Pitzer acentric factor [dimensionless]
510 /*!
511 * Length is the number of species in the phase.
512 */
513 vector<double> m_w_ac;
514
515 //! Dispersion coefficient normalized by the square of the elementary charge [m⁵].
516 vector<double> m_disp;
517
518 //! Quadrupole polarizability
519 vector<double> m_quad_polar;
520};
521
522} // namespace Cantera
523
524#endif
Headers for the DenseMatrix object, which deals with dense rectangular matrices and description of th...
Headers for the Transport object, which is the virtual base class for all transport property evaluato...
A class for full (non-sparse) matrices with Fortran-compatible data storage, which adds matrix operat...
Definition DenseMatrix.h:42
Class GasTransport implements some functions and properties that are shared by the MixTransport and M...
vector< bool > m_polar
Vector of booleans indicating whether a species is a polar molecule.
void getViscosityPolynomial(size_t i, span< double > coeffs) const override
Return the polynomial fits to the viscosity of species i.
virtual void getTransportData()
Read the transport database.
void getMixDiffCoeffsMole(span< double > d) override
Returns the mixture-averaged diffusion coefficients [m²/s].
virtual void setupCollisionParameters()
Setup parameters for a new kinetic-theory-based transport manager for low-density gases.
double m_t14
Current value of temperature to 1/4 power.
vector< double > m_mw
Local copy of the species molecular weights.
vector< double > m_molefracs
Vector of species mole fractions.
void setBinDiffusivityPolynomial(size_t i, size_t j, span< double > coeffs) override
Modify the polynomial fits to the binary diffusivity of species pair (i, j)
vector< double > m_quad_polar
Quadrupole polarizability.
double m_temp
Current value of the temperature [K] at which the properties in this object are calculated.
virtual void fitProperties(MMCollisionInt &integrals)
Generate polynomial fits to the viscosity and conductivity .
vector< vector< double > > m_visccoeffs
Polynomial fits to the viscosity of each species.
bool m_visc_ok
Update boolean for mixture rule for the mixture viscosity.
void getMixDiffCoeffsMass(span< double > d) override
Returns the mixture-averaged diffusion coefficients [m²/s].
DenseMatrix m_wratkj1
Holds square roots of molecular weight ratios.
virtual void fitDiffCoeffs(MMCollisionInt &integrals)
Generate polynomial fits to the binary diffusion coefficients.
void getCollisionIntegralPolynomial(size_t i, size_t j, span< double > astar_coeffs, span< double > bstar_coeffs, span< double > cstar_coeffs) const override
Return the polynomial fits to the collision integral of species pair (i, j)
vector< double > m_disp
Dispersion coefficient normalized by the square of the elementary charge [m⁵].
vector< double > m_eps
Lennard-Jones well-depth [J] of the species in the current phase.
virtual void updateDiff_T()
Update the binary diffusion coefficients.
vector< double > m_sqvisc
vector of square root of species viscosities.
DenseMatrix m_wratjk
Holds square roots of molecular weight ratios.
bool m_bindiff_ok
Update boolean for the binary diffusivities at unit pressure.
DenseMatrix m_epsilon
The effective well depth [J] for (i,j) collisions.
DenseMatrix m_diam
hard-sphere diameter [m] for (i,j) collision
vector< double > m_spwork
work space length = m_nsp
vector< double > m_zrot
Rotational relaxation number for each species.
int m_mode
Type of the polynomial fits to temperature.
bool CKMode() const override
Boolean indicating the form of the transport properties polynomial fits.
double m_logt
Current value of the log of the temperature.
void fitCollisionIntegrals(MMCollisionInt &integrals)
Generate polynomial fits to collision integrals.
virtual void updateViscosity_T()
Update the temperature-dependent viscosity terms.
double m_viscmix
Internal storage for the viscosity of the mixture [Pa·s].
vector< double > m_sigma
Lennard-Jones diameter [m] of the species in the current phase.
bool m_spvisc_ok
Update boolean for the species viscosities.
vector< double > m_visc
vector of species viscosities [Pa·s].
virtual void updateSpeciesViscosities()
Update the pure-species viscosities.
double m_sqrt_t
current value of temperature to 1/2 power
DenseMatrix m_bdiff
Matrix of binary diffusion coefficients at the reference pressure and the current temperature Size is...
void setViscosityPolynomial(size_t i, span< double > coeffs) override
Modify the polynomial fits to the viscosity of species i
vector< vector< double > > m_omega22_poly
Fit for omega22 collision integral.
vector< double > m_polytempvec
Powers of the ln temperature, up to fourth order.
DenseMatrix m_dipole
The effective dipole moment [Coulomb·m] for (i,j) collisions.
vector< double > m_crot
Dimensionless rotational heat capacity of each species.
vector< vector< double > > m_diffcoeffs
Polynomial fits to the binary diffusivity of each species.
void getBinaryDiffCoeffs(const size_t ld, span< double > d) override
Returns the matrix of binary diffusion coefficients [m²/s].
void getConductivityPolynomial(size_t i, span< double > coeffs) const override
Return the temperature fits of the heat conductivity of species i.
void invalidateCache() override
Invalidate any cached values which are normally updated only when a change in state is detected.
void setCollisionIntegralPolynomial(size_t i, size_t j, span< double > astar_coeffs, span< double > bstar_coeffs, span< double > cstar_coeffs, bool actualT) override
Modify the polynomial fits to the collision integral of species pair (i, j)
double m_kbt
Current value of Boltzmann constant times the temperature [J].
void getSpeciesViscosities(span< double > visc) override
Get the pure-species viscosities [Pa·s].
DenseMatrix m_reducedMass
This is the reduced mass [kg] of the interaction between species i and j.
vector< vector< int > > m_star_poly_uses_actualT
Flag to indicate for which (i,j) interaction pairs the actual temperature is used instead of the redu...
double viscosity() override
Get the viscosity [Pa·s] of the mixture.
vector< double > m_w_ac
Pitzer acentric factor [dimensionless].
vector< vector< double > > m_bstar_poly
Fit for bstar collision integral.
vector< vector< double > > m_astar_poly
Fit for astar collision integral.
void getMixDiffCoeffs(span< double > d) override
Returns the Mixture-averaged diffusion coefficients [m²/s].
vector< vector< int > > m_poly
Indices for the (i,j) interaction in collision integral fits.
void init(shared_ptr< ThermoPhase > thermo, int mode=0) override
Initialize a transport manager.
void getBinDiffusivityPolynomial(size_t i, size_t j, span< double > coeffs) const override
Return the polynomial fits to the binary diffusivity of species pair (i, j)
void setConductivityPolynomial(size_t i, span< double > coeffs) override
Modify the temperature fits of the heat conductivity of species i
vector< vector< double > > m_condcoeffs
temperature fits of the heat conduction
bool m_viscwt_ok
Update boolean for the weighting factors for the mixture viscosity.
vector< vector< double > > m_cstar_poly
Fit for cstar collision integral.
vector< double > m_alpha
Polarizability [m³] of each species in the phase.
DenseMatrix m_delta
Reduced dipole moment of the interaction between two species.
DenseMatrix m_phi
Viscosity weighting function. size = m_nsp * m_nsp.
void setupCollisionIntegral()
Setup range for polynomial fits to collision integrals of Monchick & Mason .
void makePolarCorrections(size_t i, size_t j, double &f_eps, double &f_sigma)
Corrections for polar-nonpolar binary diffusion coefficients.
void getBinDiffCorrection(double t, MMCollisionInt &integrals, size_t k, size_t j, double xk, double xj, double &fkj, double &fjk)
Second-order correction to the binary diffusion coefficients.
Calculation of Collision integrals.
Base class for transport property managers.
Definition Transport.h:72
size_t m_nsp
Number of species in the phase.
Definition Transport.h:435
ThermoPhase & thermo()
Phase object.
Definition Transport.h:111
Namespace for the Cantera kernel.
Definition AnyMap.cpp:595
void checkArraySize(const char *procedure, size_t available, size_t required)
Wrapper for throwing ArraySizeError.