diff --git a/Cantera/src/transport/LiquidTransport.cpp b/Cantera/src/transport/LiquidTransport.cpp index 6f0a401db..779000a66 100644 --- a/Cantera/src/transport/LiquidTransport.cpp +++ b/Cantera/src/transport/LiquidTransport.cpp @@ -169,7 +169,7 @@ namespace Cantera { if ( m_viscMixModel ) delete m_viscMixModel; if ( m_lambdaMixModel ) delete m_lambdaMixModel; if ( m_diffMixModel ) delete m_diffMixModel; - if ( m_radiusMixModel ) delete m_radiusMixModel; + //if ( m_radiusMixModel ) delete m_radiusMixModel; } @@ -265,7 +265,7 @@ namespace Cantera { */ m_viscMixModel = tr.viscosity; m_lambdaMixModel = tr.thermalCond; - m_radiusMixModel = tr.hydroRadius; + //m_radiusMixModel = tr.hydroRadius; m_diffMixModel = tr.speciesDiffusivity; m_bdiff.resize(m_nsp,m_nsp); //Don't really need to update this here. @@ -939,14 +939,14 @@ namespace Cantera { stefan_maxwell_solve(); - for (n = 0; n < m_nDim; n++) { - for (k = 0; k < m_nsp; k++) { + for ( int n = 0; n < m_nDim; n++) { + for (int k = 0; k < m_nsp; k++) { if ( m_Grad_X[n*m_nsp + k] != 0.0 ) { - d[n*ldf + k] = - m_Vdiff(k,n) * m_molefracs[k] + d[n*m_nsp + k] = - m_Vdiff(k,n) * m_molefracs[k] / m_Grad_X[n*m_nsp + k]; } else { //avoid divide by zero with nonsensical response - d[n*ldf + k] = - 1.0; + d[n*m_nsp + k] = - 1.0; } } } @@ -1063,7 +1063,8 @@ namespace Cantera { /** * Update the temperature-dependent parts of the species - * thermal conductivity. + * thermal conductivity internally using calls to the + * appropriate LTPspecies subclass. */ void LiquidTransport::updateCond_T() { @@ -1077,11 +1078,8 @@ namespace Cantera { } - //! Update the StefanMaxwell interaction parameters. - /** - * These are evaluated using the Stokes-Einstein - * relation from the viscosity and hydrodynamic radius. - */ + //! Update the binary Stefan-Maxwell diffusion coefficients + //! wrt T using calls to the appropriate LTPspecies subclass void LiquidTransport::updateDiff_T() { m_bdiff = m_diffMixModel->getMatrixTransProp(); @@ -1097,9 +1095,8 @@ namespace Cantera { /** - * Update the temperature-dependent viscosity terms. - * Updates the array of pure species viscosities, and the - * weighting functions in the viscosity mixture rule. + * Updates the array of pure species viscosities internally + * using calls to the appropriate LTPspecies subclass. * The flag m_visc_ok is set to true. * * Note that for viscosity, a positive activation energy @@ -1127,12 +1124,9 @@ namespace Cantera { } - /** - * Update the temperature-dependent hydrodynamic radius terms. - * Updates the array of pure species viscosities, and the - * weighting functions in the viscosity mixture rule. - * The flag m_visc_ok is set to true. - */ + //! Update the temperature-dependent hydrodynamic radius terms + //! for each species internally using calls to the + //! appropriate LTPspecies subclass void LiquidTransport::updateHydrodynamicRadius_T() { int k; diff --git a/Cantera/src/transport/LiquidTransport.h b/Cantera/src/transport/LiquidTransport.h index a14034c65..767629bcf 100644 --- a/Cantera/src/transport/LiquidTransport.h +++ b/Cantera/src/transport/LiquidTransport.h @@ -698,23 +698,29 @@ namespace Cantera { */ void stefan_maxwell_solve(); - //! Update the temperature-dependent viscosity terms. - //! Updates the array of pure species viscosities, and the - //! weighting functions in the viscosity mixture rule. + //! Updates the array of pure species viscosities internally. /*! * The flag m_visc_ok is set to true. + * + * Note that for viscosity, a positive activation energy + * corresponds to the typical case of a positive argument + * to the exponential so that the Arrhenius expression is + * + * \f[ + * \mu = A T^n \exp( + E / R T ) + * \f] */ void updateViscosity_T(); //! Update the temperature-dependent hydrodynamic radius terms - //! for each species + //! for each species internally /*! * The flag m_radi_temp_ok is set to true. */ void updateHydrodynamicRadius_T(); //! Update the temperature-dependent parts of the mixture-averaged - //! thermal conductivity. + //! thermal conductivity internally void updateCond_T(); //! Update the concentration parts of the viscosities @@ -737,11 +743,8 @@ namespace Cantera { */ void updateHydrodynamicRadius_C(); - //! Update the binary diffusion coefficients wrt T. - /*! - * These are evaluated - * from the polynomial fits at unit pressure (1 Pa). - */ + //! Update the binary Stefan-Maxwell diffusion coefficients + //! wrt T using calls to the appropriate LTPspecies subclass void updateDiff_T(); @@ -762,54 +765,64 @@ namespace Cantera { */ vector_fp m_mw; - //! Viscosity temperature dependence type + //! Viscosity for each species expressed as an appropriate subclass + //! of LTPspecies /*! - * Types of temperature dependencies: - * 0 - Independent of temperature (only one implemented so far) - * 1 - extended arrhenius form - * 2 - polynomial in temperature form + * These subclasses of LTPspecies evaluate the species-specific + * transport properties according to the parameters parsed in + * TransportFactory::getLiquidSpeciesTransportData(). */ std::vector m_viscTempDep_Ns; - //! Viscosity mixing model type + //! Viscosity of the mixture expressed as a subclass of + //! LiquidTranInteraction /*! - * Types of mixing models supported: - * 2 - Mole fraction weighting of species viscosities - * 3 - Mass fraction weighting of species viscosities - * 4 - Mole fraction weighting of logarithms of species viscosities + * These subclasses of LiquidTranInteraction evaluate the + * mixture transport properties according to the parameters parsed in + * TransportFactory::getLiquidInteractionsTransportData(). */ LiquidTranInteraction *m_viscMixModel; - //! Thermal conductivity temperature dependence type + //! Thermal conductivity for each species expressed as an + //! appropriate subclass of LTPspecies /*! - * Types of temperature dependencies: - * 0 - Independent of temperature (only one implemented so far) - * 1 - extended arrhenius form - * 2 - polynomial in temperature form + * These subclasses of LTPspecies evaluate the species-specific + * transport properties according to the parameters parsed in + * TransportFactory::getLiquidSpeciesTransportData(). */ std::vector m_lambdaTempDep_Ns; - //! Thermal conductivity mixing model type + //! Thermal conductivity of the mixture expressed as a subclass of + //! LiquidTranInteraction /*! - * Types of mixing models supported: - * 2 - Mole fraction weighting of species viscosities - * 3 - Mass fraction weighting of species viscosities + * These subclasses of LiquidTranInteraction evaluate the + * mixture transport properties according to the parameters parsed in + * TransportFactory::getLiquidInteractionsTransportData(). */ LiquidTranInteraction *m_lambdaMixModel; - //! Diffusion coefficient temperature dependence type + //! (NOT USED IN LiquidTransport.) + //! Diffusion coefficient model for each species expressed as an + //! appropriate subclass of LTPspecies /*! - * Types of temperature dependencies: - * 0 - Independent of temperature (only one implemented so far) - * 1 - extended arrhenius form - * 2 - polynomial in temperature form + * These subclasses of LTPspecies evaluate the species-specific + * transport properties according to the parameters parsed in + * TransportFactory::getLiquidSpeciesTransportData(). + * + * Since the LiquidTransport class uses the Stefan-Maxwell equation + * to describe species diffusivity, the species-specific + * diffusivity is irrelevant. */ std::vector m_diffTempDep_Ns; - //! Species diffusivity mixing model type + //! Species diffusivity of the mixture expressed as a subclass of + //! LiquidTranInteraction. This will return an array of + //! Stefan-Maxwell interaction parameters for use in the + //! Stefan-Maxwell solution. /*! - * Types of mixing models supported: - * 5 - Pairwise interactions -- Setfan-Maxwell diffusion coefficients + * These subclasses of LiquidTranInteraction evaluate the + * mixture transport properties according to the parameters parsed in + * TransportFactory::getLiquidInteractionsTransportData(). */ LiquidTranInteraction *m_diffMixModel; @@ -817,37 +830,29 @@ namespace Cantera { DenseMatrix m_diff_Dij; - std::vector useHydroRadius_; - - //!Hydrodynamic radius temperature dependence type + //!Hydrodynamic radius for each species expressed as an + //! appropriate subclass of LTPspecies /*! - * Types of temperature dependencies: - * 0 - Independent of temperature - * 1 - extended arrhenius form - * 2 - polynomial in temperature form + * These subclasses of LTPspecies evaluate the species-specific + * transport properties according to the parameters parsed in + * TransportFactory::getLiquidSpeciesTransportData(). */ std::vector m_radiusTempDep_Ns; + //! (Not used in LiquidTransport) + //! Hydrodynamic radius of the mixture expressed as a subclass of + //! LiquidTranInteraction + /*! + * These subclasses of LiquidTranInteraction evaluate the + * mixture transport properties according to the parameters parsed in + * TransportFactory::getLiquidInteractionsTransportData(). + */ + LiquidTranInteraction *m_radiusMixModel; + //! Species hydrodynamic radius vector_fp m_hydrodynamic_radius; - //! Hydrodynamic radius mixing model type - /*! - * Types of mixing models supported: - * 0 - No mixing model allowed - */ - LiquidTranInteraction *m_radiusMixModel; - - - //! Polynomial coefficients of the binary diffusion coefficients - /*! - * These express the temperature dependendence of the - * binary diffusivities. An overall pressure dependence is then - * added. - */ - /* - std::vector m_diffcoeffs; - */ + //! Hydrodynamic radius //! Internal value of the gradient of the mole fraction vector @@ -874,10 +879,10 @@ namespace Cantera { * It multiplies the gradient of the mole fraction, and in this way * serves to "modify" the diffusion coefficient. * - * m_Grad_X[k] = 1 + \partial \left[ \ln ( \gamma_i ) \right] + * m_Grad_lnAC[k] = \partial \left[ \ln ( \gamma_i ) \right] * / \partial \left[ \ln ( \X_i ) \right] * - * Note that where "molefraction is used here, whatever + * Note that where "mole fraction" is used here, whatever * concentration-related variable applies, so that if * molality is the concentration variable, the gradient of the * activity coefficient should be with respect to the molality. @@ -937,8 +942,8 @@ namespace Cantera { //! Array of Binary Diffusivities /*! - * Depends on the temperature. We have set the pressure dependence - * to zero for this liquid phase constituitve model + * These are evaluated according to the subclass of + * LiquidTranInteraction stored in m_diffMixModel. * * This has a size equal to nsp x nsp * It is a symmetric matrix. @@ -949,13 +954,12 @@ namespace Cantera { */ DenseMatrix m_bdiff; - //! Species viscosities and their logarithm + //! Internal value of the species viscosities /*! - * Viscosity of the species and its logarithm - * Length = number of species + * Viscosity of the species evaluated using subclass of LTPspecies + * held in m_viscTempDep_Ns. * - * Depends on the temperature. We have set the pressure dependence - * to zero for this liquid phase constituitve model + * Length = number of species * * controlling update boolean -> m_visc_temp_ok */ @@ -963,12 +967,11 @@ namespace Cantera { //! Internal value of the species individual thermal conductivities /*! - * Then a mixture rule is applied to get the solution conductivities + * Thermal conductivities of the species evaluated using subclass + * of LTPspecies held in m_lambdaTempDep_Ns. * - * Depends on the temperature and perhaps pressure, but - * not the species concentrations + * Length = number of species * - * controlling update boolean -> m_cond_temp_ok */ vector_fp m_lambdaSpecies; @@ -1014,8 +1017,6 @@ namespace Cantera { */ vector_fp m_molefracs_tran; - vector_fp Xdelta_; - //! Local copy of the concentrations of the species in the phase /*! * The concentrations are consistent with the m_molefracs @@ -1073,7 +1074,7 @@ namespace Cantera { //! Current value of the pressure doublereal m_press; - //! Solution of the flux system + //! Solution of the Stefan Maxwell equation in terms of flux /*! * This is the mass flux of species k * in units of kg m-3 s-1. diff --git a/Cantera/src/transport/LiquidTransportData.h b/Cantera/src/transport/LiquidTransportData.h index 733f0b463..3f2be9bfa 100644 --- a/Cantera/src/transport/LiquidTransportData.h +++ b/Cantera/src/transport/LiquidTransportData.h @@ -29,6 +29,19 @@ namespace Cantera { + /** + * Enumeration of the types of transport properties that can be + * handled by the variables in the various Transport classes. + * Not all of these are handled by each class and each class + * should handle exceptions where the transport property is not handled. + * + * Tranport properties currently on the list + * 0 - viscosity + * 1 - thermal conductivity + * 2 - species diffusivity + * 3 - hydrodynamic radius + * 4 - thermal conductivity + */ enum TransportPropertyList { TP_UNKNOWN = -1, TP_VISCOSITY = 0, @@ -38,14 +51,14 @@ namespace Cantera { TP_ELECTCOND }; + //! Temperature dependence type for pure (liquid) species properties + /*! + * Types of temperature dependencies: + * 0 - Independent of temperature + * 1 - extended arrhenius form + * 2 - polynomial in temperature form + */ enum LiquidTR_Model { - //! Temperature dependence type for pure (liquid) species properties - /*! - * Types of temperature dependencies: - * 0 - Independent of temperature (only one implemented so far) - * 1 - extended arrhenius form - * 2 - polynomial in temperature form - */ LTR_MODEL_NOTSET=-1, LTR_MODEL_CONSTANT, LTR_MODEL_ARRHENIUS, @@ -72,7 +85,7 @@ namespace Cantera { /** * The transport property is constructed from the * XML node, propNode, that is a child of the - * node and specifies a type of + * \verbatim \endverbatim node and specifies a type of * transport property (like viscosity). */ LTPspecies( const XML_Node &propNode = 0, @@ -150,7 +163,11 @@ namespace Cantera { //! Class LiquidTransportData holds transport parameters for a - //! specific liquid-phase species. + //! specific liquid-phase species. + /** + * This class is mainly used to collect transport properties + * from the parse phase and transfer them to the Transport class. + */ class LiquidTransportData { public: diff --git a/Cantera/src/transport/LiquidTransportParams.h b/Cantera/src/transport/LiquidTransportParams.h index 4e0656ac9..709b68ef4 100644 --- a/Cantera/src/transport/LiquidTransportParams.h +++ b/Cantera/src/transport/LiquidTransportParams.h @@ -42,7 +42,8 @@ namespace Cantera { * 3 - Properties weighted linearly by mass fractions * 4 - Properties weighted logarithmically by mole fractions (interaction energy weighting) * 5 - Interactions given pairwise between each possible species (i.e. D_ij) - * + * + * \verbatim * * * @@ -80,6 +81,7 @@ namespace Cantera { * * * + * \endverbatim * */ enum LiquidTranMixingModel { @@ -114,7 +116,7 @@ namespace Cantera { //! initialize LiquidTranInteraction objects with thermo and XML node /** - * @param compModelNode XML node + * @param compModelNode \verbatim \endverbatim XML node * @param thermo Pointer to thermo object */ virtual void init( const XML_Node &compModelNode = 0,