diff --git a/test_problems/SConscript b/test_problems/SConscript index 0b6dde927..9ebb47de7 100644 --- a/test_problems/SConscript +++ b/test_problems/SConscript @@ -267,6 +267,8 @@ CompileAndTest('rankine_democxx', 'rankine_democxx', 'rankine', 'output_blessed. artifacts=['liquidvapor.xml']) CompileAndTest('silane_equil', 'silane_equil', 'silane_equi', 'output_blessed.txt') # spectroscopy is incomplete +CompileAndTest('simpleTransport', 'simpleTransport', 'simpleTransport', + 'output_blessed.txt') CompileAndTest('stoichSolidKinetics', 'stoichSolidKinetics', 'stoichSolidKinetics', 'output_blessed.txt') CompileAndTest('surfkin', 'surfkin', 'surfdemo', 'output_blessed.txt') diff --git a/test_problems/simpleTransport/HMW_NaCl_pdss.xml b/test_problems/simpleTransport/HMW_NaCl_pdss.xml new file mode 100644 index 000000000..6e9c6194f --- /dev/null +++ b/test_problems/simpleTransport/HMW_NaCl_pdss.xml @@ -0,0 +1,242 @@ + + + + + + H2O(L) Na+ Cl- H+ OH- + + + 298.15 + 101325.0 + + Na+:6.0954 + Cl-:6.0954 + H+:2.1628E-9 + OH-:1.3977E-6 + + + + + + + + + + + + 0.0765, 0.008946, -3.3158E-6, + -777.03, -4.4706 + + 0.2664, 6.1608E-5, 1.0715E-6, 0.0, 0.0 + 0.0, 0.0, 0.0, 0.0, 0.0 + 0.00127, -4.655E-5, 0.0, + 33.317, 0.09421 + + 2.0 + + + + 0.1775, 0.0, 0.0, 0.0, 0.0 + 0.2945, 0.0, 0.0, 0.0, 0.0 + 0.0, 0.0, 0.0, 0.0, 0.0 + 0.0008, 0.0, 0.0, 0.0, 0.0 + 2.0 + + + + 0.0864, 0.0, 0.0, 0.0, 0.0 + 0.253, 0.0, 0.0, 0.0, 0.0 + 0.0, 0.0, 0.0, 0.0, 0.0 + 0.0044, 0.0, 0.0, 0.0, 0.0 + 2.0 + + + + -0.05 + + + + -0.05 + -0.006 + + + + 0.036 + + + + 0.036 + -0.004 + + + + H2O(L) + + O H C E Fe Si N Na Cl + + + + + + + + + + + + + + H:2 O:1 + + + + 7.255750050E+01, -6.624454020E-01, 2.561987460E-03, -4.365919230E-06, + 2.781789810E-09, -4.188654990E+04, -2.882801370E+02 + + + + + + + + 1.0E0 + 0.58 + 1.0E-5 + + + + + + Na:1 E:-1 + +1 + + + -62591. + -57433. + 13.96 + + + + 0.1839 + -228.5 + 3.256 + -27260. + 18.18 + -29810. + 33060. + + + 1.0E-5 + + + ref:G9 + + + + + Cl:1 E:1 + -1 + + + -31379. + -39933. + 13.56 + + + + 0.4032 + 480.1 + 5.563 + -28470. + -4.4 + -57140. + 145600. + + + 1.0E-5 + + + ref:G9 + + + + + H:1 E:-1 + +1 + + + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 1.0E-5 + + + ref:G9 + + + + + + O:1 H:1 E:1 + -1 + + + -37595. + -54977. + -2.56 + + + + 0.12527 + 7.38 + 1.8423 + -27821 + 4.15 + -103460. + 172460. + + + 1.0E-5 + + + ref:G9 + + + + + + diff --git a/test_problems/simpleTransport/output_blessed.txt b/test_problems/simpleTransport/output_blessed.txt new file mode 100644 index 000000000..ba5905bad --- /dev/null +++ b/test_problems/simpleTransport/output_blessed.txt @@ -0,0 +1,27 @@ +visc = 0.001 +sp visc (H2O(L)) = 0.001 +sp visc (Na+) = 0 +sp visc (Cl-) = 0 +sp visc (H+) = 0 +sp visc (OH-) = 0 +cond = 0.58 +sp diff (H2O(L)) = 1e-05 +sp diff (Na+) = 1e-05 +sp diff (Cl-) = 1e-05 +sp diff (H+) = 1e-05 +sp diff (OH-) = 1e-05 +Mobility (H2O(L)) = 0.000382823 +Mobility (Na+) = 0.000382823 +Mobility (Cl-) = 0.000382823 +Mobility (H+) = 0.000382823 +Mobility (OH-) = 0.000382823 +SpeciesFlux (H2O(L)) = 0.0102344 +SpeciesFlux (Na+) = -0.0124461 +SpeciesFlux (Cl-) = 0.00221167 +SpeciesFlux (H+) = 2.22987e-14 +SpeciesFlux (OH-) = 2.43291e-10 +SpeciesFlux (H2O(L)) = -0.0191255 +SpeciesFlux (Na+) = -0.0505223 +SpeciesFlux (Cl-) = 0.0696478 +SpeciesFlux (H+) = -7.85548e-13 +SpeciesFlux (OH-) = 7.6615e-09 diff --git a/test_problems/simpleTransport/simpleTransportTest.cpp b/test_problems/simpleTransport/simpleTransportTest.cpp new file mode 100644 index 000000000..4f22e57a4 --- /dev/null +++ b/test_problems/simpleTransport/simpleTransportTest.cpp @@ -0,0 +1,78 @@ +#include "cantera/thermo.h" +#include "cantera/transport.h" +#include "cantera/thermo/HMWSoln.h" +#include "cantera/transport/SimpleTransport.h" + +#include + +using namespace std; +using namespace Cantera; + +int main(int argc, char **argv) +{ + try { + int log_level = 3; + + HMWSoln HMW("HMW_NaCl_pdss.xml", "NaCl_electrolyte"); + + auto_ptr tran(newDefaultTransportMgr(&HMW, log_level)); + + SimpleTransport& tranSimple = dynamic_cast(*tran.get()); + int nsp = HMW.nSpecies(); + + HMW.setState_TP(30+273.13, OneAtm); + + double visc = tranSimple.viscosity(); + printf("visc = %g\n", visc); + + vector_fp x(nsp, 0.0); + + tranSimple.getSpeciesViscosities(&x[0]); + for (int k = 0; k < nsp; k++) { + printf("sp visc (%s) = %g\n", HMW.speciesName(k).c_str(), x[k]); + } + + double cond = tranSimple.thermalConductivity(); + printf("cond = %g\n", cond); + + tranSimple.getMixDiffCoeffs(&x[0]); + for (int k = 0; k < nsp; k++) { + printf("sp diff (%s) = %g\n", HMW.speciesName(k).c_str(), x[k]); + } + + tranSimple.getMobilities(&x[0]); + for (int k = 0; k < nsp; k++) { + printf("Mobility (%s) = %g\n", HMW.speciesName(k).c_str(), x[k]); + } + + vector_fp gradX(nsp, 0.0); + gradX[1] = 1.0; + double gradT = 0.0; + + tranSimple.getSpeciesFluxes(1, &gradT, 5, &gradX[0], 5, &x[0]); + for (int k = 0; k < nsp; k++) { + string spName = HMW.speciesName(k); + printf("SpeciesFlux (%s) = %g\n", spName.c_str(), x[k]); + } + + gradX[1] = 0.0; + double gradV = 1.0; + + tranSimple.set_Grad_T(&gradT); + tranSimple.set_Grad_V(&gradV); + tranSimple.set_Grad_X(&gradX[0]); + + tranSimple.getSpeciesFluxesExt(5, &x[0]); + for (int k = 0; k < nsp; k++) { + printf("SpeciesFlux (%s) = %g\n", HMW.speciesName(k).c_str(), x[k]); + } + + Cantera::appdelete(); + return 0; + + } catch (CanteraError) { + + showErrors(); + return -1; + } +}