Cantera
3.0.0
|
Class MultiTransport implements transport properties for high pressure gas mixtures. More...
#include <HighPressureGasTransport.h>
Class MultiTransport implements transport properties for high pressure gas mixtures.
The implementation employs a method of corresponding states, using the Takahashi [42] approach for binary diffusion coefficients (using multicomponent averaging rules for the mixture properties), and the Lucas method for the viscosity of a high-pressure gas mixture. All methods are described in Poling et al. [33] (viscosity in Ch. 9, thermal conductivity in Ch. 10, and diffusion coefficients in Ch. 11).
Definition at line 40 of file HighPressureGasTransport.h.
Public Member Functions | |
string | transportModel () const override |
Identifies the model represented by this Transport object. | |
void | getThermalDiffCoeffs (double *const dt) override |
Return the thermal diffusion coefficients (kg/m/s) | |
double | thermalConductivity () override |
Returns the mixture thermal conductivity in W/m/K. | |
void | getBinaryDiffCoeffs (const size_t ld, double *const d) override |
Returns the matrix of binary diffusion coefficients. | |
void | getMultiDiffCoeffs (const size_t ld, double *const d) override |
Return the Multicomponent diffusion coefficients. Units: [m^2/s]. | |
double | viscosity () override |
Viscosity of the mixture (kg /m /s) | |
Public Member Functions inherited from MultiTransport | |
MultiTransport (ThermoPhase *thermo=0) | |
default constructor | |
string | transportModel () const override |
Identifies the model represented by this Transport object. | |
void | getThermalDiffCoeffs (double *const dt) override |
Return the thermal diffusion coefficients (kg/m/s) | |
double | thermalConductivity () override |
Returns the mixture thermal conductivity in W/m/K. | |
void | getMultiDiffCoeffs (const size_t ld, double *const d) override |
Return the Multicomponent diffusion coefficients. Units: [m^2/s]. | |
void | getSpeciesFluxes (size_t ndim, const double *const grad_T, size_t ldx, const double *const grad_X, size_t ldf, double *const fluxes) override |
Get the species diffusive mass fluxes wrt to the mass averaged velocity, given the gradients in mole fraction and temperature. | |
void | getMolarFluxes (const double *const state1, const double *const state2, const double delta, double *const fluxes) override |
Get the molar diffusional fluxes [kmol/m^2/s] of the species, given the thermodynamic state at two nearby points. | |
void | getMassFluxes (const double *state1, const double *state2, double delta, double *fluxes) override |
Get the mass diffusional fluxes [kg/m^2/s] of the species, given the thermodynamic state at two nearby points. | |
void | init (ThermoPhase *thermo, int mode=0, int log_level=0) override |
Initialize a transport manager. | |
Public Member Functions inherited from GasTransport | |
double | viscosity () override |
Viscosity of the mixture (kg /m /s) | |
void | getSpeciesViscosities (double *const visc) override |
Get the pure-species viscosities. | |
void | getBinaryDiffCoeffs (const size_t ld, double *const d) override |
Returns the matrix of binary diffusion coefficients. | |
void | getMixDiffCoeffs (double *const d) override |
Returns the Mixture-averaged diffusion coefficients [m^2/s]. | |
void | getMixDiffCoeffsMole (double *const d) override |
Returns the mixture-averaged diffusion coefficients [m^2/s]. | |
void | getMixDiffCoeffsMass (double *const d) override |
Returns the mixture-averaged diffusion coefficients [m^2/s]. | |
void | getViscosityPolynomial (size_t i, double *coeffs) const override |
Return the polynomial fits to the viscosity of species i. | |
void | getConductivityPolynomial (size_t i, double *coeffs) const override |
Return the temperature fits of the heat conductivity of species i. | |
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) | |
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 | setViscosityPolynomial (size_t i, double *coeffs) override |
Modify the polynomial fits to the viscosity of species i. | |
void | setConductivityPolynomial (size_t i, double *coeffs) override |
Modify the temperature fits of the heat conductivity of species i. | |
void | setBinDiffusivityPolynomial (size_t i, size_t j, double *coeffs) override |
Modify the polynomial fits to the binary diffusivity of species pair (i, j) | |
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 | init (ThermoPhase *thermo, int mode=0, int log_level=0) override |
Initialize a transport manager. | |
bool | CKMode () const override |
Boolean indicating the form of the transport properties polynomial fits. | |
Public Member Functions inherited from Transport | |
Transport (ThermoPhase *thermo=0, size_t ndim=npos) | |
Constructor. | |
Transport (const Transport &)=delete | |
Transport & | operator= (const Transport &)=delete |
virtual string | transportModel () const |
Identifies the model represented by this Transport object. | |
string | transportType () const |
Identifies the Transport object type. | |
ThermoPhase & | thermo () |
Phase object. | |
bool | ready () |
Returns true if the transport manager is ready for use. | |
void | setNDim (const int ndim) |
Set the number of dimensions to be expected in flux expressions. | |
size_t | nDim () const |
Return the number of dimensions in flux expressions. | |
void | checkSpeciesIndex (size_t k) const |
Check that the specified species index is in range. | |
void | checkSpeciesArraySize (size_t kk) const |
Check that an array size is at least nSpecies(). | |
virtual double | getElectricConduct () |
Compute the mixture electrical conductivity (S m-1) at the current conditions of the phase (Siemens m-1) | |
virtual void | getElectricCurrent (int ndim, const double *grad_T, int ldx, const double *grad_X, int ldf, const double *grad_V, double *current) |
Compute the electric current density in A/m^2. | |
virtual void | getSpeciesFluxes (size_t ndim, const double *const grad_T, size_t ldx, const double *const grad_X, size_t ldf, double *const fluxes) |
Get the species diffusive mass fluxes wrt to the specified solution averaged velocity, given the gradients in mole fraction and temperature. | |
virtual void | getSpeciesFluxesES (size_t ndim, const double *grad_T, size_t ldx, const double *grad_X, size_t ldf, const double *grad_Phi, double *fluxes) |
Get the species diffusive mass fluxes wrt to the mass averaged velocity, given the gradients in mole fraction, temperature and electrostatic potential. | |
virtual void | getSpeciesVdiff (size_t ndim, const double *grad_T, int ldx, const double *grad_X, int ldf, double *Vdiff) |
Get the species diffusive velocities wrt to the mass averaged velocity, given the gradients in mole fraction and temperature. | |
virtual void | getSpeciesVdiffES (size_t ndim, const double *grad_T, int ldx, const double *grad_X, int ldf, const double *grad_Phi, double *Vdiff) |
Get the species diffusive velocities wrt to the mass averaged velocity, given the gradients in mole fraction, temperature, and electrostatic potential. | |
virtual void | getMolarFluxes (const double *const state1, const double *const state2, const double delta, double *const cfluxes) |
Get the molar fluxes [kmol/m^2/s], given the thermodynamic state at two nearby points. | |
virtual void | getMassFluxes (const double *state1, const double *state2, double delta, double *mfluxes) |
Get the mass fluxes [kg/m^2/s], given the thermodynamic state at two nearby points. | |
virtual void | getThermalDiffCoeffs (double *const dt) |
Return a vector of Thermal diffusion coefficients [kg/m/sec]. | |
virtual void | getBinaryDiffCoeffs (const size_t ld, double *const d) |
Returns the matrix of binary diffusion coefficients [m^2/s]. | |
virtual void | getMultiDiffCoeffs (const size_t ld, double *const d) |
Return the Multicomponent diffusion coefficients. Units: [m^2/s]. | |
virtual void | getMixDiffCoeffs (double *const d) |
Returns a vector of mixture averaged diffusion coefficients. | |
virtual void | getMixDiffCoeffsMole (double *const d) |
Returns a vector of mixture averaged diffusion coefficients. | |
virtual void | getMixDiffCoeffsMass (double *const d) |
Returns a vector of mixture averaged diffusion coefficients. | |
virtual void | getViscosityPolynomial (size_t i, double *coeffs) const |
Return the polynomial fits to the viscosity of species i. | |
virtual void | getConductivityPolynomial (size_t i, double *coeffs) const |
Return the temperature fits of the heat conductivity of species i. | |
virtual void | getBinDiffusivityPolynomial (size_t i, size_t j, double *coeffs) const |
Return the polynomial fits to the binary diffusivity of species pair (i, j) | |
virtual void | getCollisionIntegralPolynomial (size_t i, size_t j, double *astar_coeffs, double *bstar_coeffs, double *cstar_coeffs) const |
Return the polynomial fits to the collision integral of species pair (i, j) | |
virtual void | setViscosityPolynomial (size_t i, double *coeffs) |
Modify the polynomial fits to the viscosity of species i. | |
virtual void | setConductivityPolynomial (size_t i, double *coeffs) |
Modify the temperature fits of the heat conductivity of species i. | |
virtual void | setBinDiffusivityPolynomial (size_t i, size_t j, double *coeffs) |
Modify the polynomial fits to the binary diffusivity of species pair (i, j) | |
virtual void | setCollisionIntegralPolynomial (size_t i, size_t j, double *astar_coeffs, double *bstar_coeffs, double *cstar_coeffs, bool flag) |
Modify the polynomial fits to the collision integral of species pair (i, j) | |
virtual void | setParameters (const int type, const int k, const double *const p) |
Set model parameters for derived classes. | |
AnyMap | parameters () const |
Return the parameters for a phase definition which are needed to reconstruct an identical object using the newTransport function. | |
void | setVelocityBasis (VelocityBasis ivb) |
Sets the velocity basis. | |
VelocityBasis | getVelocityBasis () const |
Gets the velocity basis. | |
virtual double | bulkViscosity () |
The bulk viscosity in Pa-s. | |
virtual double | ionConductivity () |
The ionic conductivity in 1/ohm/m. | |
virtual void | getSpeciesIonConductivity (double *const ionCond) |
Returns the pure species ionic conductivity. | |
virtual void | mobilityRatio (double *mobRat) |
Returns the pointer to the mobility ratios of the species in the phase. | |
virtual void | getSpeciesMobilityRatio (double **mobRat) |
Returns the pure species limit of the mobility ratios. | |
virtual double | electricalConductivity () |
The electrical conductivity (Siemens/m). | |
virtual void | getMobilities (double *const mobil_e) |
Get the Electrical mobilities (m^2/V/s). | |
virtual void | getFluidMobilities (double *const mobil_f) |
Get the fluid mobilities (s kmol/kg). | |
virtual void | setThermo (ThermoPhase &thermo) |
Specifies the ThermoPhase object. | |
virtual void | setRoot (shared_ptr< Solution > root) |
Set root Solution holding all phase information. | |
Protected Member Functions | |
HighPressureGasTransport (ThermoPhase *thermo=0) | |
default constructor | |
double | Tcrit_i (size_t i) |
double | Pcrit_i (size_t i) |
double | Vcrit_i (size_t i) |
double | Zcrit_i (size_t i) |
vector< double > | store (size_t i, size_t nsp) |
double | FQ_i (double Q, double Tr, double MW) |
double | setPcorr (double Pr, double Tr) |
Protected Member Functions inherited from MultiTransport | |
void | update_T () override |
Update basic temperature-dependent quantities if the temperature has changed. | |
void | update_C () override |
Update basic concentration-dependent quantities if the concentrations have changed. | |
void | updateThermal_T () |
Update the temperature-dependent terms needed to compute the thermal conductivity and thermal diffusion coefficients. | |
void | eval_L0000 (const double *const x) |
Evaluate the L0000 matrices. | |
void | eval_L0010 (const double *const x) |
Evaluate the L0010 matrices. | |
void | eval_L1000 () |
Evaluate the L1000 matrices. | |
void | eval_L0100 () |
void | eval_L0001 () |
void | eval_L1010 (const double *x) |
void | eval_L1001 (const double *x) |
void | eval_L0110 () |
void | eval_L0101 (const double *x) |
bool | hasInternalModes (size_t j) |
double | pressure_ig () |
virtual void | solveLMatrixEquation () |
Protected Member Functions inherited from GasTransport | |
GasTransport (ThermoPhase *thermo=0) | |
virtual void | update_T () |
virtual void | update_C ()=0 |
virtual void | updateViscosity_T () |
Update the temperature-dependent viscosity terms. | |
virtual void | updateSpeciesViscosities () |
Update the pure-species viscosities. | |
virtual void | updateDiff_T () |
Update the binary diffusion coefficients. | |
virtual void | setupCollisionParameters () |
Setup parameters for a new kinetic-theory-based transport manager for low-density gases. | |
void | setupCollisionIntegral () |
Setup range for polynomial fits to collision integrals of Monchick & Mason [27]. | |
void | getTransportData () |
Read the transport database. | |
void | makePolarCorrections (size_t i, size_t j, double &f_eps, double &f_sigma) |
Corrections for polar-nonpolar binary diffusion coefficients. | |
void | fitCollisionIntegrals (MMCollisionInt &integrals) |
Generate polynomial fits to collision integrals. | |
virtual void | fitProperties (MMCollisionInt &integrals) |
Generate polynomial fits to the viscosity \( \eta \) and conductivity \( \lambda \). | |
virtual void | fitDiffCoeffs (MMCollisionInt &integrals) |
Generate polynomial fits to the 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. | |
Protected Member Functions inherited from Transport | |
void | finalize () |
Enable the transport object for use. | |
Friends | |
class | TransportFactory |
Additional Inherited Members | |
Protected Attributes inherited from MultiTransport | |
double | m_thermal_tlast |
DenseMatrix | m_astar |
Dense matrix for astar. | |
DenseMatrix | m_bstar |
Dense matrix for bstar. | |
DenseMatrix | m_cstar |
Dense matrix for cstar. | |
vector< double > | m_cinternal |
vector< double > | m_sqrt_eps_k |
DenseMatrix | m_log_eps_k |
vector< double > | m_frot_298 |
vector< double > | m_rotrelax |
double | m_lambda |
DenseMatrix | m_Lmatrix |
DenseMatrix | m_aa |
vector< double > | m_a |
vector< double > | m_b |
vector< double > | m_spwork1 |
vector< double > | m_spwork2 |
vector< double > | m_spwork3 |
vector< double > | m_molefracs_last |
Mole fraction vector from last L-matrix evaluation. | |
bool | m_l0000_ok |
Boolean indicating viscosity is up to date. | |
bool | m_lmatrix_soln_ok |
bool | m_debug |
Protected Attributes inherited from GasTransport | |
vector< double > | m_molefracs |
Vector of species mole fractions. | |
double | m_viscmix = 0.0 |
Internal storage for the viscosity of the mixture (kg /m /s) | |
bool | m_visc_ok = false |
Update boolean for mixture rule for the mixture viscosity. | |
bool | m_viscwt_ok = false |
Update boolean for the weighting factors for the mixture viscosity. | |
bool | m_spvisc_ok = false |
Update boolean for the species viscosities. | |
bool | m_bindiff_ok = false |
Update boolean for the binary diffusivities at unit pressure. | |
int | m_mode = 0 |
Type of the polynomial fits to temperature. | |
DenseMatrix | m_phi |
m_phi is a Viscosity Weighting Function. size = m_nsp * n_nsp | |
vector< double > | m_spwork |
work space length = m_kk | |
vector< double > | m_visc |
vector of species viscosities (kg /m /s). | |
vector< vector< double > > | m_visccoeffs |
Polynomial fits to the viscosity of each species. | |
vector< double > | m_mw |
Local copy of the species molecular weights. | |
DenseMatrix | m_wratjk |
Holds square roots of molecular weight ratios. | |
DenseMatrix | m_wratkj1 |
Holds square roots of molecular weight ratios. | |
vector< double > | m_sqvisc |
vector of square root of species viscosities sqrt(kg /m /s). | |
vector< double > | m_polytempvec |
Powers of the ln temperature, up to fourth order. | |
double | m_temp = -1.0 |
Current value of the temperature at which the properties in this object are calculated (Kelvin). | |
double | m_kbt = 0.0 |
Current value of Boltzmann constant times the temperature (Joules) | |
double | m_sqrt_t = 0.0 |
current value of temperature to 1/2 power | |
double | m_logt = 0.0 |
Current value of the log of the temperature. | |
double | m_t14 = 0.0 |
Current value of temperature to 1/4 power. | |
vector< vector< double > > | m_diffcoeffs |
Polynomial fits to the binary diffusivity of each species. | |
DenseMatrix | m_bdiff |
Matrix of binary diffusion coefficients at the reference pressure and the current temperature Size is nsp x nsp. | |
vector< vector< double > > | m_condcoeffs |
temperature fits of the heat conduction | |
vector< vector< int > > | m_poly |
Indices for the (i,j) interaction in collision integral fits. | |
vector< vector< double > > | m_omega22_poly |
Fit for omega22 collision integral. | |
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 reduced temperature. | |
vector< vector< double > > | m_astar_poly |
Fit for astar collision integral. | |
vector< vector< double > > | m_bstar_poly |
Fit for bstar collision integral. | |
vector< vector< double > > | m_cstar_poly |
Fit for cstar collision integral. | |
vector< double > | m_zrot |
Rotational relaxation number for each species. | |
vector< double > | m_crot |
Dimensionless rotational heat capacity of each species. | |
vector< bool > | m_polar |
Vector of booleans indicating whether a species is a polar molecule. | |
vector< double > | m_alpha |
Polarizability of each species in the phase. | |
vector< double > | m_eps |
Lennard-Jones well-depth of the species in the current phase. | |
vector< double > | m_sigma |
Lennard-Jones diameter of the species in the current phase. | |
DenseMatrix | m_reducedMass |
This is the reduced mass of the interaction between species i and j. | |
DenseMatrix | m_diam |
hard-sphere diameter for (i,j) collision | |
DenseMatrix | m_epsilon |
The effective well depth for (i,j) collisions. | |
DenseMatrix | m_dipole |
The effective dipole moment for (i,j) collisions. | |
DenseMatrix | m_delta |
Reduced dipole moment of the interaction between two species. | |
vector< double > | m_w_ac |
Pitzer acentric factor. | |
vector< double > | m_disp |
Dispersion coefficient. | |
vector< double > | m_quad_polar |
Quadrupole polarizability. | |
int | m_log_level = 0 |
Level of verbose printing during initialization. | |
Protected Attributes inherited from Transport | |
ThermoPhase * | m_thermo |
pointer to the object representing the phase | |
bool | m_ready = false |
true if finalize has been called | |
size_t | m_nsp = 0 |
Number of species. | |
size_t | m_nDim |
Number of dimensions used in flux expressions. | |
int | m_velocityBasis = VB_MASSAVG |
Velocity basis from which diffusion velocities are computed. | |
std::weak_ptr< Solution > | m_root |
reference to Solution | |
|
protected |
default constructor
thermo | Optional parameter for the pointer to the ThermoPhase object |
Definition at line 22 of file HighPressureGasTransport.cpp.
|
inlineoverridevirtual |
Identifies the model represented by this Transport object.
Each derived class should override this method to return a meaningful identifier.
Reimplemented from Transport.
Definition at line 50 of file HighPressureGasTransport.h.
|
overridevirtual |
Return the thermal diffusion coefficients (kg/m/s)
Currently not implemented for this model
Reimplemented from Transport.
Definition at line 117 of file HighPressureGasTransport.cpp.
|
overridevirtual |
Returns the mixture thermal conductivity in W/m/K.
Units are in W / m K or equivalently kg m / s3 K
Reimplemented from Transport.
Definition at line 27 of file HighPressureGasTransport.cpp.
|
overridevirtual |
Returns the matrix of binary diffusion coefficients.
d[ld*j + i] = rp*m_bdiff(i,j)*(DP)_R;
ld | offset of rows in the storage |
d | output vector of diffusion coefficients. Units of m**2 / s |
Reimplemented from GasTransport.
Definition at line 128 of file HighPressureGasTransport.cpp.
|
overridevirtual |
Return the Multicomponent diffusion coefficients. Units: [m^2/s].
If the transport manager implements a multicomponent diffusion model, then this method returns the array of multicomponent diffusion coefficients. Otherwise it throws an exception.
[in] | ld | The dimension of the inner loop of d (usually equal to m_nsp) |
[out] | d | flat vector of diffusion coefficients, fortran ordering. d[ld*j+i] is the D_ij diffusion coefficient (the diffusion coefficient for species i due to concentration gradients in species j). Units: m^2/s |
Reimplemented from Transport.
Definition at line 185 of file HighPressureGasTransport.cpp.
|
overridevirtual |
Viscosity of the mixture (kg /m /s)
The viscosity is computed using the Wilke mixture rule (kg /m /s)
\[ \mu = \sum_k \frac{\mu_k X_k}{\sum_j \Phi_{k,j} X_j}. \]
Here \( \mu_k \) is the viscosity of pure species k, and
\[ \Phi_{k,j} = \frac{\left[1 + \sqrt{\left(\frac{\mu_k}{\mu_j}\sqrt{\frac{M_j}{M_k}}\right)}\right]^2} {\sqrt{8}\sqrt{1 + M_k/M_j}} \]
Reimplemented from GasTransport.
Definition at line 269 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 387 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 398 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 409 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 420 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 431 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 443 of file HighPressureGasTransport.cpp.
|
protected |
Definition at line 451 of file HighPressureGasTransport.cpp.
|
friend |
Definition at line 76 of file HighPressureGasTransport.h.