From b0deb4170865937ccd348ffbdc08e4cb728dd011 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Tue, 28 Aug 2018 22:47:41 -0400 Subject: [PATCH] [Transport] Make WaterTransport constructible using newTransportMgr This makes it possible to specify the WaterTransport model in XML input files, and to use the model from Python and Matlab. Resolves #289 --- include/cantera/transport/WaterTransport.h | 6 ++---- src/transport/TransportFactory.cpp | 2 ++ src/transport/WaterTransport.cpp | 7 +++++-- test/data/liquid-water.xml | 1 + test_problems/cathermo/wtWater/wtWater.cpp | 4 ++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/cantera/transport/WaterTransport.h b/include/cantera/transport/WaterTransport.h index 785f0296b..de5eb61f9 100644 --- a/include/cantera/transport/WaterTransport.h +++ b/include/cantera/transport/WaterTransport.h @@ -81,11 +81,9 @@ public: */ virtual doublereal thermalConductivity(); -private: - //! Routine to do some common initializations at the start of using - //! this routine. - void initTP(); + virtual void init(thermo_t* thermo, int mode=0, int log_level=0); +private: //! Pointer to the WaterPropsIAPWS object, which does the actual calculations //! for the real equation of state /*! diff --git a/src/transport/TransportFactory.cpp b/src/transport/TransportFactory.cpp index f04fb870f..bbdd22fe0 100644 --- a/src/transport/TransportFactory.cpp +++ b/src/transport/TransportFactory.cpp @@ -8,6 +8,7 @@ #include "cantera/transport/MixTransport.h" #include "cantera/transport/UnityLewisTransport.h" #include "cantera/transport/IonGasTransport.h" +#include "cantera/transport/WaterTransport.h" #include "cantera/transport/SolidTransport.h" #include "cantera/transport/DustyGasTransport.h" #include "cantera/transport/SimpleTransport.h" @@ -52,6 +53,7 @@ TransportFactory::TransportFactory() reg("Mix", []() { return new MixTransport(); }); reg("Multi", []() { return new MultiTransport(); }); reg("Ion", []() { return new IonGasTransport(); }); + reg("Water", []() { return new WaterTransport(); }); m_synonyms["CK_Mix"] = "Mix"; m_synonyms["CK_Multi"] = "Multi"; reg("HighP", []() { return new HighPressureGasTransport(); }); diff --git a/src/transport/WaterTransport.cpp b/src/transport/WaterTransport.cpp index 1a9993166..3919373fb 100644 --- a/src/transport/WaterTransport.cpp +++ b/src/transport/WaterTransport.cpp @@ -16,11 +16,14 @@ namespace Cantera WaterTransport::WaterTransport(thermo_t* thermo, int ndim) : Transport(thermo, ndim) { - initTP(); + if (thermo) { + init(thermo); + } } -void WaterTransport::initTP() +void WaterTransport::init(thermo_t* thermo, int mode, int log_level) { + m_thermo = thermo; // The expectation is that we have a VPStandardStateTP derived object VPStandardStateTP* vpthermo = dynamic_cast(m_thermo); if (!vpthermo) { diff --git a/test/data/liquid-water.xml b/test/data/liquid-water.xml index 3a0faf0af..798f0895e 100644 --- a/test/data/liquid-water.xml +++ b/test/data/liquid-water.xml @@ -12,6 +12,7 @@ + diff --git a/test_problems/cathermo/wtWater/wtWater.cpp b/test_problems/cathermo/wtWater/wtWater.cpp index b1f2c09fe..61f2d056f 100644 --- a/test_problems/cathermo/wtWater/wtWater.cpp +++ b/test_problems/cathermo/wtWater/wtWater.cpp @@ -1,6 +1,6 @@ #include "cantera/thermo/ThermoFactory.h" -#include "cantera/transport/WaterTransport.h" +#include "cantera/transport/TransportFactory.h" #include @@ -22,7 +22,7 @@ int main() double lambda; ThermoPhase* w = newPhase("liquid-water.xml"); - WaterTransport* wtTran = new WaterTransport(w, 3); + Transport* wtTran = newDefaultTransportMgr(w); printf("------------------------------------------------------------------------------------\n"); printf(" T(C) MPa Phase Visc Visc(paper) lambda lambda(paper)\n"); printf(" 10-6 kg/m/s 10-3 W/m/s \n");