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