diff --git a/Cantera/src/transport/LiquidTransportData.cpp b/Cantera/src/transport/LiquidTransportData.cpp index 6357231a9..531763b51 100644 --- a/Cantera/src/transport/LiquidTransportData.cpp +++ b/Cantera/src/transport/LiquidTransportData.cpp @@ -92,8 +92,9 @@ namespace Cantera { //! Construct an LTPspecies object for a liquid tranport property //! expressed as a constant value. - /** The transport property is constructed from the XML node, propNode, - * that is a child of the node and specifies a type of + /** The transport property is constructed from the XML node, + * \verbatim , \endverbatim that is a child of the + * \verbatim \endverbatim node and specifies a type of * transport property (like viscosity) */ LTPspecies_Const::LTPspecies_Const( const XML_Node &propNode, @@ -139,9 +140,10 @@ namespace Cantera { /////////////////////////////////////////////////////////////// //! Construct an LTPspecies object for a liquid tranport property - //! expressed as a constant value. - /** The transport property is constructed from the XML node, propNode, - * that is a child of the node and specifies a type of + //! expressed in extended Arrhenius form. + /** The transport property is constructed from the XML node, + * \verbatim , \endverbatim that is a child of the + * \verbatim \endverbatim node and specifies a type of * transport property (like viscosity) */ LTPspecies_Arrhenius::LTPspecies_Arrhenius( const XML_Node &propNode, @@ -190,7 +192,7 @@ namespace Cantera { return *this; } - //! Return the value for this transport property evaluated + //! Return the pure species value for this transport property evaluated //! from the Arrhenius expression /** * In general the Arrhenius expression is @@ -207,6 +209,9 @@ namespace Cantera { * \f[ * \mu = A T^n \exp( + E / R T ). * \f] + * + * Any temperature and composition dependence will be + * adjusted internally according to the information provided. */ doublereal LTPspecies_Arrhenius::getSpeciesTransProp( ) { @@ -236,9 +241,10 @@ namespace Cantera { /////////////////////////////////////////////////////////////// //! Construct an LTPspecies object for a liquid tranport property - //! expressed as a constant value. - /** The transport property is constructed from the XML node, propNode, - * that is a child of the node and specifies a type of + //! expressed as a polynomial in temperature. + /** The transport property is constructed from the XML node, + * \verbatim , \endverbatim that is a child of the + * \verbatim \endverbatim node and specifies a type of * transport property (like viscosity) */ LTPspecies_Poly::LTPspecies_Poly( const XML_Node &propNode, diff --git a/Cantera/src/transport/LiquidTransportData.h b/Cantera/src/transport/LiquidTransportData.h index 3f2be9bfa..29fb0bbc9 100644 --- a/Cantera/src/transport/LiquidTransportData.h +++ b/Cantera/src/transport/LiquidTransportData.h @@ -70,23 +70,22 @@ namespace Cantera { //! specific liquid-phase species. /** * Subclasses handle different means of specifying transport properties - * like constant, Arrhenius or polynomial fits. In its current state, + * like constant, %Arrhenius or polynomial fits. In its current state, * it is primarily suitable for specifying temperature dependence, but * the adjustCoeffsForComposition() method can be implemented to * adjust for composition dependence. * Mixing rules for computing mixture transport properties are handled - * separately in + * separately in LiquidTranInteraction subclasses. */ class LTPspecies { public: //! Construct an LTPspecies object for a liquid tranport property. - /** - * The transport property is constructed from the - * XML node, propNode, that is a child of the + /** The transport property is constructed from the XML node, + * \verbatim , \endverbatim that is a child of the * \verbatim \endverbatim node and specifies a type of - * transport property (like viscosity). + * transport property (like viscosity) */ LTPspecies( const XML_Node &propNode = 0, std::string name = "-", @@ -115,7 +114,7 @@ namespace Cantera { * The pure species transport property (i.e. pure species viscosity) * is returned. Any temperature and composition dependence will be * adjusted internally according to the information provided by the - * thermo object. + * subclass object. */ virtual doublereal getSpeciesTransProp( ) { return 0.0; } @@ -165,8 +164,14 @@ namespace Cantera { //! Class LiquidTransportData holds transport parameters for a //! specific liquid-phase species. /** + * A LiquidTransportData object is created for each species. + * * This class is mainly used to collect transport properties - * from the parse phase and transfer them to the Transport class. + * from the parse phase in the TranportFactory and transfer + * them to the Transport class. Transport properties are + * expressed by subclasses of LTPspecies. + * One may need to be careful about deleting pointers to LTPspecies + * objects created in the TransportFactory. */ class LiquidTransportData { @@ -176,12 +181,14 @@ namespace Cantera { speciesName("-") { } - //! copy constructor + //! Copy constructor LiquidTransportData( const LiquidTransportData &right ) ; //! Assignment operator LiquidTransportData& operator=(const LiquidTransportData& right ); + //! A LiquidTransportData object is instantiated for each species. + //! This is the species name for which this object is instantiated. std::string speciesName; //! Model type for the hydroradius @@ -206,6 +213,22 @@ namespace Cantera { //! Class LTPspecies_Const holds transport parameters for a //! specific liquid-phase species when the transport property //! is just a constant value. + /** + * As an example of the input required for LTPspecies_Const + * consider the following XML fragment + * + * \verbatim + * + * + * + * + * 1.000 + * + * + * + * + * \endverbatim + */ class LTPspecies_Const : public LTPspecies{ public: @@ -227,8 +250,7 @@ namespace Cantera { /*! * The pure species transport property (i.e. pure species viscosity) * is returned. Any temperature and composition dependence will be - * adjusted internally according to the information provided by the - * thermo object. + * adjusted internally according to the information provided. */ doublereal getSpeciesTransProp( ); @@ -246,7 +268,26 @@ namespace Cantera { //! Class LTPspecies_Arrhenius holds transport parameters for a //! specific liquid-phase species when the transport property - //! is just a constant value. + //! is expressed in Arrhenius form. + /** + * As an example of the input required for LTPspecies_Arrhenius + * consider the following XML fragment + * + * \verbatim + * + * + * + * + * + * 6.578e-5 + * 0.0 + * 23788.e3 + * + * + * + * + * \endverbatim + */ class LTPspecies_Arrhenius : public LTPspecies{ public: @@ -264,12 +305,26 @@ namespace Cantera { virtual ~LTPspecies_Arrhenius( ) { } - //! Returns the pure species tranport property - /*! - * The pure species transport property (i.e. pure species viscosity) - * is returned. Any temperature and composition dependence will be - * adjusted internally according to the information provided by the - * thermo object. + //! Return the pure species value for this transport property evaluated + //! from the Arrhenius expression + /** + * In general the Arrhenius expression is + * + * \f[ + * \mu = A T^n \exp( - E / R T ). + * \f] + * + * Note that for viscosity, the convention is such that + * 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] + * + * Any temperature and composition dependence will be + * adjusted internally according to the information provided. */ doublereal getSpeciesTransProp( ); @@ -299,7 +354,23 @@ namespace Cantera { //! Class LTPspecies_Poly holds transport parameters for a //! specific liquid-phase species when the transport property - //! is just a constant value. + //! is expressed as a polynomial in temperature. + /** + * As an example of the input required for LTPspecies_Poly + * consider the following XML fragment + * + * \verbatim + * + * + * + * + * 0.6, -15.0e-5 + * + * + * + * + * \endverbatim + */ class LTPspecies_Poly : public LTPspecies{ public: @@ -321,8 +392,7 @@ namespace Cantera { /*! * The pure species transport property (i.e. pure species viscosity) * is returned. Any temperature and composition dependence will be - * adjusted internally according to the information provided by the - * thermo object. + * adjusted internally according to the information provided. */ doublereal getSpeciesTransProp( ); diff --git a/Cantera/src/transport/LiquidTransportParams.h b/Cantera/src/transport/LiquidTransportParams.h index 709b68ef4..9267999c4 100644 --- a/Cantera/src/transport/LiquidTransportParams.h +++ b/Cantera/src/transport/LiquidTransportParams.h @@ -36,12 +36,12 @@ namespace Cantera { //! Composition dependence type for liquid mixture transport properties /*! * Types of temperature dependencies: - * 0 - Mixture calculations with this property are not allowed - * 1 - Use solvent (species 0) properties - * 2 - Properties weighted linearly by mole fractions - * 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) + * - 0 - Mixture calculations with this property are not allowed + * - 1 - Use solvent (species 0) properties + * - 2 - Properties weighted linearly by mole fractions + * - 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 * @@ -96,6 +96,26 @@ namespace Cantera { }; + //! Base class to handle transport property evaluation in a mixture. + /** + * In a mixture, the mixture transport properties will generally depend on + * the contributions of each of the pure species transport properties. + * Many composition dependencies are possible. This class, + * LiquidTranInteraction, is designed to be a base class for the + * implementation of various models for the mixing of pure species + * transport properties. + * + * There are two very broad types of transport properties to consider. + * First, there are properties for which a mixture value can be + * obtained through some mixing rule. These are obtained using the + * method getMixTransProp(). Viscosity is typical of this. + * Second there are properties for which a matrix of properties may + * exist. This matrix of properties is obtained from the method + * getMatrixTransProp(). Diffusion coefficients are of this type. + * Subclasses should implement the appropriate one or both of + * these methods. + * + */ class LiquidTranInteraction { public: @@ -192,25 +212,6 @@ namespace Cantera { //! Takes enum LiquidTranMixingModel LiquidTranMixingModel model_viscosity; - //! Energies of molecular interaction associated with viscosity. - /** - * These multiply the mixture viscosity by - * \f[ \exp( \sum_{i} \sum_{j} X_i X_j ( S_{i,j} + E_{i,j} / T ) ) \f]. - * - * The overall formula for the logarithm of the mixture viscosity is - * - * \f[ \ln \eta_{mix} = \sum_i X_i \ln \eta_i - * + \sum_i \sum_j X_i X_j ( S_{i,j} + E_{i,j} / T ) \f]. - */ - DenseMatrix visc_Eij; - - //! Entropies of molecular interaction associated with viscosity. - DenseMatrix visc_Sij; - - //! Model for species interaction effects for thermal conductivity - //! Takes enum LiquidTranMixingModel - LiquidTranMixingModel model_thermalCond; - //! Interaction associated with linear weighting of //! thermal conductivity. /** @@ -286,7 +287,15 @@ namespace Cantera { }; - + //! Simple mole fraction weighting of transport properties + /** + * This model weights the transport property by the mole + * fractions. + * The overall formula for the mixture viscosity is + * + * \f[ \eta_{mix} = \sum_i X_i \eta_i + * + \sum_i \sum_j X_i X_j A_{i,j} \f]. + */ class LTI_MoleFracs : public LiquidTranInteraction { public: @@ -321,6 +330,15 @@ namespace Cantera { }; + //! Simple mass fraction weighting of transport properties + /** + * This model weights the transport property by the mass + * fractions. + * The overall formula for the mixture viscosity is + * + * \f[ \eta_{mix} = \sum_i Y_i \eta_i + * + \sum_i \sum_j Y_i Y_j A_{i,j} \f]. + */ class LTI_MassFracs : public LiquidTranInteraction { public: @@ -355,6 +373,46 @@ namespace Cantera { }; + //! Mixing rule using logarithms of the mole fractions + /** + * This model is based on the idea that liquid molecules are + * generally interacting with some energy and entropy of interaction. + * For transport properties that depend on these energies of + * interaction, the mixture transport property can be written + * in terms of its logarithm + * + * \f[ \ln \eta_{mix} = \sum_i X_i \ln \eta_i + * + \sum_i \sum_j X_i X_j ( S_{i,j} + E_{i,j} / T ) + * \f]. + * + * These additional interaction terms multiply the mixture property by + * \f[ \exp( \sum_{i} \sum_{j} X_i X_j ( S_{i,j} + E_{i,j} / T ) ) \f] + * so that the self-interaction terms \f$ S_{i,j} \f$ and + * \f$ E_{i,j} \f$ should be zero. + * + * Note that the energies and entropies of interaction should be + * a function of the composition themselves, but this is not yet + * implemented. (We might follow the input of Margules model + * thermodynamic data for the purpose of implementing this.) + * + * Sample input for this method is + * \verbatim + * + * + * + * + * + * -1.0e3 + * 80.0e-5 + * + * + * + * + * \endverbatim + */ class LTI_Log_MoleFracs : public LiquidTranInteraction { public: @@ -389,6 +447,29 @@ namespace Cantera { }; + //! Transport properties that act like pairwise interactions + //! as in binary diffusion coefficients. + /** + * This class holds parameters for transport properties expressed + * as a matrix of pairwise interaction parameters. + * Input can be provided for constant or Arrhenius forms of the + * separate parameters. + * + * Sample input for this method is + * \verbatim + * + * + * + * + * 1.0e-8 + * 24.0e6 + * + * + * + * + * \endverbatim + * + */ class LTI_Pairwise_Interaction : public LiquidTranInteraction { public: