diff --git a/Cantera/src/transport/LiquidTransport.cpp b/Cantera/src/transport/LiquidTransport.cpp index faa351d56..e2a23fe29 100644 --- a/Cantera/src/transport/LiquidTransport.cpp +++ b/Cantera/src/transport/LiquidTransport.cpp @@ -185,6 +185,7 @@ namespace Cantera { int k; // constant substance attributes m_thermo = tr.thermo; + m_velocityBasis = tr.velocityBasis; m_nsp = m_thermo->nSpecies(); m_tmin = m_thermo->minTemp(); m_tmax = m_thermo->maxTemp(); diff --git a/Cantera/src/transport/TransportFactory.cpp b/Cantera/src/transport/TransportFactory.cpp index 42d467813..e9c40e42d 100644 --- a/Cantera/src/transport/TransportFactory.cpp +++ b/Cantera/src/transport/TransportFactory.cpp @@ -1116,6 +1116,31 @@ namespace Cantera { throw TransportDBError( linenum, "missing node for <" + tranTypeNode.name() + "> node." ); + } + /* Allow a switch between mass-averaged, mole-averaged + * and solvent specified reference velocities. + * XML code within the transportProperty node + * (i.e. within ) should read as follows + * + * + * + */ + if ( tranTypeNode.hasChild("velocityBasis")) { + std::string velocityBasis = + tranTypeNode.child("velocityBasis").attrib("basis"); + if ( velocityBasis == "mass" ) + trParam.velocityBasis = VB_MASSAVG; + else if ( velocityBasis == "mole" ) + trParam.velocityBasis = VB_MOLEAVG; + else if ( trParam.thermo->speciesIndex( velocityBasis ) > 0 ) + trParam.velocityBasis = trParam.thermo->speciesIndex( velocityBasis ) ; + else { + int linenum; + throw TransportDBError( linenum, "Unknown attribute " + velocityBasis + " for node. "); + } + + + } } } diff --git a/Cantera/src/transport/TransportParams.h b/Cantera/src/transport/TransportParams.h index 5fe1ef3d8..63c4b9f0b 100755 --- a/Cantera/src/transport/TransportParams.h +++ b/Cantera/src/transport/TransportParams.h @@ -19,7 +19,7 @@ namespace Cantera { public: - TransportParams() : thermo(0), xml(0) {} + TransportParams() : thermo(0), xml(0), velocityBasis(VB_MASSAVG) {} virtual ~TransportParams(); int nsp_; @@ -27,6 +27,10 @@ namespace Cantera { thermo_t* thermo; vector_fp mw; + //! A basis for the average velocity can be specified. + //! Valid bases include "mole" "mass" and species names. + int velocityBasis; + //minimum and maximum temperatures for parameter fits doublereal tmax, tmin; int mode_;