diff --git a/include/cantera/transport/SimpleTransport.h b/include/cantera/transport/SimpleTransport.h index e4df1c849..25b3ab051 100644 --- a/include/cantera/transport/SimpleTransport.h +++ b/include/cantera/transport/SimpleTransport.h @@ -207,6 +207,10 @@ public: */ virtual bool initLiquid(LiquidTransportParams& tr); + void setCompositionDependence(LiquidTranMixingModel model) { + compositionDepType_ = model; + } + virtual std::string transportType() const { return "Simple"; } diff --git a/test/SConscript b/test/SConscript index fb275e572..42977e779 100644 --- a/test/SConscript +++ b/test/SConscript @@ -26,7 +26,8 @@ for optimize_flag in ('-O3', '-O2', '/O2'): ccflags.remove(optimize_flag) localenv['CCFLAGS'] = ccflags -localenv['ENV']['CANTERA_DATA'] = Dir('#build/data').abspath +localenv['ENV']['CANTERA_DATA'] = (Dir('#build/data').abspath + os.pathsep + + Dir('#test/data').abspath) PASSED_FILES = {} diff --git a/test_problems/simpleTransport/HMW_NaCl_pdss.xml b/test/data/HMW_NaCl_pdss.xml similarity index 100% rename from test_problems/simpleTransport/HMW_NaCl_pdss.xml rename to test/data/HMW_NaCl_pdss.xml diff --git a/test/transport/transportFromScratch.cpp b/test/transport/transportFromScratch.cpp index 149b6eaf2..2e1f86388 100644 --- a/test/transport/transportFromScratch.cpp +++ b/test/transport/transportFromScratch.cpp @@ -3,6 +3,7 @@ #include "cantera/transport/TransportData.h" #include "cantera/transport/MixTransport.h" #include "cantera/transport/MultiTransport.h" +#include "cantera/transport/SimpleTransport.h" #include "cantera/transport/TransportFactory.h" #include "cantera/thermo/ThermoFactory.h" #include "cantera/thermo/IdealGasPhase.h" @@ -166,6 +167,92 @@ TEST_F(TransportFromScratch, thermalConductivityMulti) } } +class SimpleTransportTest : public testing::Test +{ +public: + SimpleTransportTest() + : p(newPhase("HMW_NaCl_pdss.xml", "NaCl_electrolyte")) + { + } + + void check_transport(SimpleTransport& tr) { + p->setState_TP(303.13, OneAtm); + size_t N = p->nSpecies(); + EXPECT_NEAR(tr.viscosity(), 0.001, 1e-4); + EXPECT_NEAR(tr.thermalConductivity(), 0.58, 1e-3); + + vector_fp spvisc(N), Dmix(N), mobilities(N), fluxes1(N), fluxes2(N); + vector_fp gradX(N, 0.0); + gradX[1] = 1.0; + double gradT = 0.0; + double gradV = 1.0; + + vector_fp spvisc_ref = {0.001, 0, 0, 0, 0}; + vector_fp Dmix_ref = {1e-05, 1e-05, 1e-05, 1e-05, 1e-05}; + vector_fp mobilities_ref = {0.000382823, 0.000382823, 0.000382823, + 0.000382823, 0.000382823}; + vector_fp fluxes1_ref = {0.0102344, -0.0124461, 0.00221167, + 2.22987e-14, 2.43291e-10}; + vector_fp fluxes2_ref = {-0.0191255, -0.0505223, 0.0696478, + -7.85548e-13, 7.6615e-09}; + + tr.getSpeciesViscosities(spvisc.data()); + tr.getMixDiffCoeffs(Dmix.data()); + tr.getMobilities(mobilities.data()); + tr.getSpeciesFluxes(1, &gradT, N, gradX.data(), N, fluxes1.data()); + gradX[1] = 0.0; + tr.set_Grad_T(&gradT); + tr.set_Grad_V(&gradV); + tr.set_Grad_X(gradX.data()); + tr.getSpeciesFluxesExt(N, fluxes2.data()); + + for (size_t k = 0; k < N; k++) { + EXPECT_NEAR(spvisc[k], spvisc_ref[k], 1e-5); + EXPECT_NEAR(Dmix[k], Dmix_ref[k], 1e-7); + EXPECT_NEAR(mobilities[k], mobilities_ref[k], 1e-9); + EXPECT_NEAR(fluxes1[k], fluxes1_ref[k], 1e-5*std::abs(fluxes1_ref[k])); + EXPECT_NEAR(fluxes2[k], fluxes2_ref[k], 1e-5*std::abs(fluxes2_ref[k])); + } + } + + shared_ptr p; +}; + +TEST_F(SimpleTransportTest, fromScratch) +{ + SimpleTransport tr(p.get(), 3); + LiquidTransportParams params; + params.LTData.resize(p->nSpecies()); + + LTPspecies_Const* ltp = new LTPspecies_Const(); + ltp->setName(p->speciesName(0)); + ltp->setTransportPropertyType(TP_VISCOSITY); + ltp->setThermo(p.get()); + ltp->setCoeff(1.0 * toSI("centipoise")); + params.LTData[0].viscosity = ltp; + + ltp = new LTPspecies_Const(); + ltp->setName(p->speciesName(0)); + ltp->setTransportPropertyType(TP_THERMALCOND); + ltp->setThermo(p.get()); + ltp->setCoeff(0.58); + params.LTData[0].thermalCond = ltp; + + for (size_t k = 0; k < p->nSpecies(); k++) { + ltp = new LTPspecies_Const(); + ltp->setName(p->speciesName(k)); + ltp->setTransportPropertyType(TP_DIFFUSIVITY); + ltp->setThermo(p.get()); + ltp->setCoeff(1e-5); + params.LTData[k].speciesDiffusivity = ltp; + } + + params.thermo = p.get(); + tr.initLiquid(params); + tr.setCompositionDependence(LTI_MODEL_SOLVENT); + check_transport(tr); +} + int main(int argc, char** argv) { printf("Running main() from transportFromScratch.cpp\n");