Cantera
2.4.0
|
Stefan Maxwell Diffusion Coefficients can be solved for given ion conductivity, mobility ratios, and self diffusion coeffs. More...
#include <LiquidTranInteraction.h>
Public Member Functions | |
LTI_StefanMaxwell_PPN (TransportPropertyType tp_ind=TP_UNKNOWN) | |
void | setParameters (LiquidTransportParams &trParam) |
doublereal | getMixTransProp (doublereal *valueSpecies, doublereal *weightSpecies=0) |
Return the mixture transport property value. More... | |
doublereal | getMixTransProp (std::vector< LTPspecies *> LTPptrs) |
void | getMatrixTransProp (DenseMatrix &mat, doublereal *speciesValues=0) |
Return the matrix of binary interaction parameters. More... | |
Public Member Functions inherited from LiquidTranInteraction | |
LiquidTranInteraction (TransportPropertyType tp_ind=TP_UNKNOWN) | |
Constructor. More... | |
virtual void | init (const XML_Node &compModelNode=XML_Node(), thermo_t *thermo=0) |
initialize LiquidTranInteraction objects with thermo and XML node More... | |
Protected Types | |
typedef std::vector< LTPspecies * > | LTPvector |
Protected Attributes | |
doublereal | m_ionCondMix |
LiquidTranInteraction * | m_ionCondMixModel |
std::vector< LTPspecies * > | m_ionCondSpecies |
DenseMatrix | m_mobRatMix |
std::vector< LiquidTranInteraction * > | m_mobRatMixModel |
std::vector< LTPvector > | m_mobRatSpecies |
std::vector< LiquidTranInteraction * > | m_selfDiffMixModel |
vector_fp | m_selfDiffMix |
std::vector< LTPvector > | m_selfDiffSpecies |
Protected Attributes inherited from LiquidTranInteraction | |
LiquidTranMixingModel | m_model |
Model for species interaction effects. Takes enum LiquidTranMixingModel. More... | |
TransportPropertyType | m_property |
enum indicating what property this is (i.e viscosity) More... | |
thermo_t * | m_thermo |
pointer to thermo object to get current temperature More... | |
std::vector< DenseMatrix * > | m_Aij |
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (no temperature dependence, dimensionless) More... | |
std::vector< DenseMatrix * > | m_Bij |
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (linear temperature dependence, units 1/K) More... | |
DenseMatrix | m_Eij |
Matrix of interactions (in energy units, 1/RT temperature dependence) More... | |
std::vector< DenseMatrix * > | m_Hij |
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (in energy units, 1/RT temperature dependence) More... | |
std::vector< DenseMatrix * > | m_Sij |
Matrix of interaction coefficients for polynomial in molefraction*weight of speciesA (in entropy units, divided by R) More... | |
DenseMatrix | m_Dij |
Matrix of interactions. More... | |
Stefan Maxwell Diffusion Coefficients can be solved for given ion conductivity, mobility ratios, and self diffusion coeffs.
This class is only valid for a common anion mixture of two salts with cations of equal charge. Hence the name _PPN.
This class requres you specify
1 - ion conductivity
2 - mobility ratio of the two cations (set all other ratios to zero)
3 - Self diffusion coefficients of the cations (set others to zero) is used to calculate the "mutual diffusion coefficient". The approximation needed to do so requires the cations have equal charge.
We than calculate the Stefan Maxwell Diffusion Coefficients by
\[ \frac{1}{D_{12}} = (1-\epsilon X_A)(1+\epsilon X_B) \frac{\nu_- + \nu_+}{\nu_-\nu_+^2D} + \frac{z_-z_+ F^2}{\kappa V R T} \]
\[ \frac{1}{D_{12}} = -\epsilon X_B(1-\epsilon X_A) \frac{\nu_- + \nu_+}{\nu_-^2\nu_+D} - \frac{z_-z_+ F^2}{\kappa V R T} \]
\[ \frac{1}{D_{23}} = \epsilon X_A(1+\epsilon X_B) \frac{\nu_- + \nu_+}{\nu_-^2\nu_+D} - \frac{z_-z_+ F^2}{\kappa V R T} \]
where F is Faraday's constant, RT is the gas constant times the tempurature, and V is the molar volume (basis is moles of ions) that is calculated by the ThermoPhase member. X_A and X_B are the mole fractions of the salts composed of cation(1) and cation(2), respectively, that share a common anion(3). \(\nu_{+,-}\) are the stoichiometric coefficients in the dissociation reaction of the salts to the ions with charges of \(z_{+,-}\). Assuming that the cations have equal charge, the "mutual diffusion coefficient" is calculated using the cation self diffusion coefficients.
\[ \frac{1}{\nu_-\nu_+D} = \left(1+\frac{\partial \gamma_B}{\partial N_B} \right)\frac{X_A}{D_2^*}+\left(1+\frac{\partial \gamma_A}{\partial N_A} \right)\frac{X_B}{D_1^*} \]
where the self diffusion coefficients, \(D_i^*\), are temperature and composition parameterized inputs and the derivative of the activity coefficient, \(\frac{\partial \gamma_B}{\partial N_B}\), is calculated by the ThermoPhase member using the excess enthalpy and entropy upon mixing.
Finally, the deviation of the transferrence numbers from ideality, \(\epsilon\), is calculated from the mobility ratio of the cations.
\[ \epsilon = \frac{1-b_2/b_1}{X_A+X_Bb_2/b_1} \]
Where \(b_i\) are the mobilities of the two cations. Everywhere, cation 1 corresponds with salt A and cation 2 with salt B.
Sample input for this method is
* <transport model="Liquid"> * <speciesDiffusivity> * <compositionDependence model="stefanMaxwell_PPN"> * </compositionDependence> * </speciesDiffusivity> * </transport> *
Definition at line 452 of file LiquidTranInteraction.h.
|
virtual |
Return the mixture transport property value.
Takes the separate species transport properties as input (this method does not know what transport property it is at this point.
Reimplemented from LiquidTranInteraction.
Definition at line 477 of file LiquidTranInteraction.cpp.
|
virtual |
Return the matrix of binary interaction parameters.
Takes the proper mixing rule for the binary interaction parameters and calculates them
Reimplemented from LiquidTranInteraction.
Definition at line 487 of file LiquidTranInteraction.cpp.
References Cantera::GasConstant, IonsFromNeutralVPSSTP::getAnionList(), IonsFromNeutralVPSSTP::getCationList(), IonsFromNeutralVPSSTP::getDissociationCoeffs(), MargulesVPSSTP::getdlnActCoeffdlnN_diag(), LiquidTranInteraction::getMixTransProp(), Phase::getMoleFractions(), IonsFromNeutralVPSSTP::getNeutralMolecMoleFractions(), LiquidTranInteraction::m_thermo, Phase::molarVolume(), Phase::nSpecies(), DenseMatrix::resize(), and Phase::temperature().