diff --git a/test_problems/cathermo/HMW_graph_GvI/Makefile.in b/test_problems/cathermo/HMW_graph_GvI/Makefile.in index 10f71a480..4763d3257 100644 --- a/test_problems/cathermo/HMW_graph_GvI/Makefile.in +++ b/test_problems/cathermo/HMW_graph_GvI/Makefile.in @@ -11,11 +11,11 @@ .SUFFIXES : .d # the name of the executable program to be created -PROG_NAME = HMW_graph_GvT +PROG_NAME = HMW_graph_GvI # the object files to be linked together. List those generated from Fortran # and from C/C++ separately -OBJS = HMW_graph_GvT.o sortAlgorithms.o +OBJS = HMW_graph_GvI.o sortAlgorithms.o # Location of the current build. Will assume that tests are run # in the source directory tree location diff --git a/test_problems/cathermo/HMW_test_1/.cvsignore b/test_problems/cathermo/HMW_test_1/.cvsignore new file mode 100644 index 000000000..8df702c54 --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/.cvsignore @@ -0,0 +1,10 @@ +Makefile +HMW_test_1 +output.txt +outputa.txt +.cvsignore.swp +.depends +HMW_test_1.d +diff_test.out +table.csv + diff --git a/test_problems/cathermo/HMW_test_1/HMW_NaCl.xml b/test_problems/cathermo/HMW_test_1/HMW_NaCl.xml new file mode 100644 index 000000000..842cbacbf --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/HMW_NaCl.xml @@ -0,0 +1,182 @@ + + + + + H2O(L) Cl- H+ Na+ OH- + + + 298.15 + 101325.0 + + Na+:6.0954 + Cl-:6.0954 + H+:2.1628E-9 + OH-:1.3977E-6 + + + + + + + + 1.175930 + + 3.28640E9 + + + + 0.0765 + 0.2664 + 0.0 + 0.00127 + 2.0 + + + + 0.1775 + 0.2945 + 0.0 + 0.0008 + 2.0 + + + + 0.0864 + 0.253 + 0.0 + 0.0044 + 2.0 + + + + -0.05 + + + + -0.05 + -0.006 + + + + 0.036 + + + + 0.036 + -0.004 + + + + H2O(L) + + O H C 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 + + + + + 0.05555555 + + + + + Na:1 + +1 + + + 0.0 + 2 + + -125.5213, -125.5213 + + + 298.15, 333.15 + + + + + 1.3 + + + + + Cl:1 + -1 + + 1.3 + + + + 0.0 + 2 + + -52.8716 , -52.8716 + + + 298.15, 333.15 + + + + + + + H:1 + +1 + + 1.3 + + + + 0.0 + 2 + + 0.0 , 0.0 + + + 298.15, 333.15 + + + + + + + O:1 H:1 + -1 + + 1.3 + + + + 0.0 + 2 + + -91.523 , -91.523 + + + 298.15, 333.15 + + + + + + + + diff --git a/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp b/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp new file mode 100644 index 000000000..abbefe84f --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/HMW_test_1.cpp @@ -0,0 +1,164 @@ +/* ======================================================================= */ +/* $RCSfile$ */ +/* $Author$ */ +/* $Date$ */ +/* $Revision$ */ +/* ======================================================================= */ + +#include + +#ifdef SRCDIRTREE +#include "ct_defs.h" +#include "HMWSoln.h" +#else +#include "cantera/Cantera.h" +#include "HMWSoln.h" +#endif + +using namespace Cantera; + +int CHECK_DEBUG_HKM = 0; + +void printUsage() { + cout << "usage: HMW_test_1 " << endl; + cout <<" -> Everything is hardwired" << endl; +} + +void pAtable(HMWSoln *HMW) { + int nsp = HMW->nSpecies(); + double acMol[100]; + double mf[100]; + double activities[100]; + double moll[100]; + + HMW->m_debugCalc = 1; + HMW->getMolalityActivityCoefficients(acMol); + HMW->getMoleFractions(mf); + HMW->getActivities(activities); + HMW->m_debugCalc = 0; + HMW->getMolalities(moll); + string sName; + printf(" Name Activity ActCoeffMolal " + " MoleFract Molality\n"); + for (int k = 0; k < nsp; k++) { + sName = HMW->speciesName(k); + printf("%16s %13g %13g %13g %13g\n", + sName.c_str(), activities[k], acMol[k], mf[k], moll[k]); + } + +} + +int main(int argc, char **argv) +{ + + int retn = 0; + + try { + +#ifdef DEBUG_HKM + CHECK_DEBUG_HKM = 1; +#endif + if (CHECK_DEBUG_HKM != 1) { + printf("Check can only be done if DEBUG_HKM is defined\n"); + exit(-1); + } + HMWSoln *HMW = new HMWSoln(1); + + int nsp = HMW->nSpecies(); + + /* + * + */ + double a1 = HMW->AionicRadius(1); + printf("a1 = %g\n", a1); + double a2 = HMW->AionicRadius(2); + printf("a2 = %g\n", a2); + double mu0[100]; + double moll[100]; + string sName; + + HMW->getMolalities(moll); + moll[1] = 6.0997; + moll[2] = 2.1628E-9; + moll[3] = 6.0997; + moll[4] =1.3977E-6; + /* + * Equalize charge balance and dump into Cl- + */ + double sum = -moll[1] + moll[2] + moll[3] - moll[4]; + moll[1] += sum; + + HMW->setMolalities(moll); + HMW->setState_TP(298.15, 1.01325E5); + pAtable(HMW); + + HMW->setState_TP(298.15, 1.01325E5); + HMW->getStandardChemPotentials(mu0); + // translate from J/kmol to kJ/gmol + int k; + for (k = 0; k < nsp; k++) { + mu0[k] *= 1.0E-6; + } + + printf(" Species Standard chemical potentials (kJ/gmol) \n"); + printf("------------------------------------------------------------\n"); + for (k = 0; k < nsp; k++) { + sName = HMW->speciesName(k); + printf("%16s %16.9g\n", sName.c_str(), mu0[k]); + } + printf("------------------------------------------------------------\n"); + printf(" Some DeltaSS values: Delta(mu_0)\n"); + double deltaG; + int i1, i2, j1; + double RT = 8.314472E-3 * 298.15; + + + + + + i1 = HMW->speciesIndex("Na+"); + i2 = HMW->speciesIndex("Cl-"); + deltaG = -432.6304 - mu0[i1] - mu0[i2]; + printf(" NaCl(S): Na+ + Cl- -> NaCl(S): %14.7g kJ/gmol \n", + deltaG); + printf(" : %14.7g (dimensionless) \n", + deltaG/RT); + printf(" : %14.7g (dimensionless/ln10) \n", + deltaG/(RT * log(10.0))); + printf(" G0(NaCl(S)) = %14.7g (fixed)\n", -432.6304); + printf(" G0(Na+) = %14.7g\n", mu0[i1]); + printf(" G0(Cl-) = %14.7g\n", mu0[i2]); + + i1 = HMW->speciesIndex("H+"); + i2 = HMW->speciesIndex("H2O(L)"); + j1 = HMW->speciesIndex("OH-"); + if (i1 < 0 || i2 < 0 || j1 < 0) { + printf("problems\n"); + exit(-1); + } + deltaG = mu0[j1] + mu0[i1] - mu0[i2]; + printf(" OH-: H2O(L) - H+ -> OH-: %14.7g kJ/gmol \n", + deltaG); + printf(" : %14.7g (dimensionless) \n", + deltaG/RT); + printf(" : %14.7g (dimensionless/ln10) \n", + deltaG/(RT * log(10.0))); + printf(" G0(OH-) = %14.7g\n", mu0[j1]); + printf(" G0(H+) = %14.7g\n", mu0[i1]); + printf(" G0(H2O(L)) = %14.7g\n", mu0[i2]); + + + printf("------------------------------------------------------------\n"); + + delete HMW; + HMW = 0; + Cantera::appdelete(); + + return retn; + + } catch (CanteraError) { + + showErrors(); + return -1; + } +} diff --git a/test_problems/cathermo/HMW_test_1/Makefile.in b/test_problems/cathermo/HMW_test_1/Makefile.in new file mode 100644 index 000000000..67e13e60e --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/Makefile.in @@ -0,0 +1,112 @@ +#!/bin/sh + +############################################################################ +# +# Makefile to compile and link a C++ application to +# Cantera. +# +############################################################################# + +# addition to suffixes +.SUFFIXES : .d + +# the name of the executable program to be created +PROG_NAME = HMW_test_1 + +# the object files to be linked together. List those generated from Fortran +# and from C/C++ separately +OBJS = HMW_test_1 + +# Location of the current build. Will assume that tests are run +# in the source directory tree location +src_dir_tree = 1 + +# additional flags to be passed to the linker. If your program +# requires other external libraries, put them here +LINK_OPTIONS = @EXTRA_LINK@ + +############################################################################# + +# Check to see whether we are in the msvc++ environment +os_is_win = @OS_IS_WIN@ + +# Fortran libraries +FORT_LIBS = @FLIBS@ + +# the C++ compiler +CXX = @CXX@ + +# C++ compile flags +ifeq ($(src_dir_tree), 1) +CXX_FLAGS = -DSRCDIRTREE @CXXFLAGS@ +else +CXX_FLAGS = @CXXFLAGS@ +endif + +# Ending C++ linking libraries +LCXX_END_LIBS = @LCXX_END_LIBS@ + +# the directory where the Cantera libraries are located +CANTERA_LIBDIR=@buildlib@ + +# required Cantera libraries +CANTERA_LIBS = @LOCAL_LIBS@ -lctcxx + +# the directory where Cantera include files may be found. +ifeq ($(src_dir_tree), 1) +CANTERA_INCDIR=../../../Cantera/src +INCLUDES=-I$(CANTERA_INCDIR) -I$(CANTERA_INCDIR)/thermo +else +CANTERA_INCDIR=@ctroot@/build/include/cantera +INCLUDES=-I$(CANTERA_INCDIR) -I$(CANTERA_INCDIR)/kernel +endif + +# flags passed to the C++ compiler/linker for the linking step +LCXX_FLAGS = -L$(CANTERA_LIBDIR) @LOCAL_LIB_DIRS@ @CXXFLAGS@ + +# How to compile C++ source files to object files +.@CXX_EXT@.@OBJ_EXT@: + $(CXX) -c $< $(INCLUDES) $(CXX_FLAGS) + +# How to compile the dependency file +.cpp.d: + g++ -MM $(INCLUDES) $(CXX_FLAGS) $*.cpp > $*.d + +# List of dependency files to be created +DEPENDS=$(OBJS:.o=.d) + +# Program Name +PROGRAM = $(PROG_NAME)$(EXE_EXT) + +all: $(PROGRAM) .depends + +$(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \ + $(CANTERA_LIBDIR)/libcaThermo.a + $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \ + $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \ + $(LCXX_END_LIBS) + +# depends target -> forces recalculation of dependencies +depends: + @MAKE@ .depends + +.depends: $(DEPENDS) + cat $(DEPENDS) > .depends + +# Do the test -> For the windows vc++ environment, we have to skip checking on +# whether the program is uptodate, because we don't utilize make +# in that environment to build programs. +test: +ifeq ($(os_is_win), 1) +else + @MAKE@ $(PROGRAM) +endif + ./runtest + +clean: + $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends + ../../../bin/rm_cvsignore + (if test -d SunWS_cache ; then \ + $(RM) -rf SunWS_cache ; \ + fi ) + diff --git a/test_problems/cathermo/HMW_test_1/README b/test_problems/cathermo/HMW_test_1/README new file mode 100644 index 000000000..0c459c97a --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/README @@ -0,0 +1,2 @@ +This test exercises the basic Pitzer model. + diff --git a/test_problems/cathermo/HMW_test_1/output_blessed.txt b/test_problems/cathermo/HMW_test_1/output_blessed.txt new file mode 100644 index 000000000..454f66319 --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/output_blessed.txt @@ -0,0 +1,246 @@ +Index Name MoleF Molality Charge + 0 H2O(L) 8.1992706e-01 5.5508435e+01 0.0 + 1 Cl- 9.0036447e-02 6.0953986e+00 -1.0 + 2 H+ 3.1947185e-11 2.1628000e-09 1.0 + 3 Na+ 9.0036468e-02 6.0954000e+00 1.0 + 4 OH- 2.0645728e-08 1.3977000e-06 -1.0 + + Species Species beta0MX beta1MX beta2MX CphiMX alphaMX thetaij + Cl- H+ 0.17750 0.29450 0.00000 0.00080 2.00000 0.00000 + Cl- Na+ 0.07650 0.26640 0.00000 0.00127 2.00000 0.00000 + Cl- OH- 0.00000 0.00000 0.00000 0.00000 0.00000 -0.05000 + H+ Na+ 0.00000 0.00000 0.00000 0.00000 0.00000 0.03600 + H+ OH- 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + Na+ OH- 0.08640 0.25300 0.00000 0.00440 2.00000 0.00000 + + Species Species Species psi + Cl- H+ Na+ -0.00400 + Cl- Na+ H+ -0.00400 + Cl- Na+ OH- -0.00600 + Cl- OH- Na+ -0.00600 + H+ Cl- Na+ -0.00400 + H+ Na+ Cl- -0.00400 + Na+ Cl- H+ -0.00400 + Na+ Cl- OH- -0.00600 + Na+ H+ Cl- -0.00400 + Na+ OH- Cl- -0.00600 + OH- Cl- Na+ -0.00600 + OH- Na+ Cl- -0.00600 +a1 = 3.04284e-10 +a2 = 3.04284e-10 + + Debugging information from hmw_act + Step 1: + ionic strenth = 6.0997000e+00 + total molar charge = 1.2199400e+01 + Is = 6.0997 + ij = 1, elambda = 0.0454012, elambda1 = -0.00306854 + ij = 2, elambda = 0.200776, elambda1 = -0.014532 + ij = 3, elambda = 0.47109, elambda1 = -0.0351127 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 6, elambda = 1.98206, elambda1 = -0.153152 + ij = 8, elambda = 3.57685, elambda1 = -0.279391 + ij = 9, elambda = 4.55112, elambda1 = -0.356872 + ij = 12, elambda = 8.18289, elambda1 = -0.646977 + ij = 16, elambda = 14.6822, elambda1 = -1.16875 + Step 2: + z1= 1 z2= 1 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 1 z2= 2 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 1 z2= 3 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 1 z2= 4 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 2 z2= 1 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 2 z2= 2 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 2 z2= 3 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 2 z2= 4 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 3 z2= 1 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 3 z2= 2 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 3 z2= 3 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 3 z2= 4 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 1 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 4 z2= 2 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 4 z2= 3 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 4 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + Step 3: + Species Species g(x) hfunc(x) + Cl- H+ 0.07849 -0.07133 + Cl- Na+ 0.07849 -0.07133 + Cl- OH- 0.00000 0.00000 + H+ Na+ 0.00000 0.00000 + H+ OH- 0.00000 0.00000 + Na+ OH- 0.07849 -0.07133 + Step 4: + Species Species BMX BprimeMX BphiMX +1 0.200614: 0.1775 0.2945 0.0784862 + Cl- H+ 0.2006142 -0.0034438 0.1796081 +2 0.0974087: 0.0765 0.2664 0.0784862 + Cl- Na+ 0.0974087 -0.0031152 0.0784069 + Cl- OH- 0.0000000 0.0000000 0.0000000 + H+ Na+ 0.0000000 0.0000000 0.0000000 +5 0: 0 0 0 + H+ OH- 0.0000000 0.0000000 0.0000000 +6 0.106257: 0.0864 0.253 0.0784862 + Na+ OH- 0.1062570 -0.0029585 0.0882110 + Step 5: + Species Species CMX + Cl- H+ 0.0004000 + Cl- Na+ 0.0006350 + Cl- OH- 0.0000000 + H+ Na+ 0.0000000 + H+ OH- 0.0000000 + Na+ OH- 0.0022000 + Step 6: + Species Species Phi_ij Phiprime_ij Phi^phi_ij + Cl- H+ 0.000000 0.000000 0.000000 + Cl- Na+ 0.000000 0.000000 0.000000 + Cl- OH- -0.050000 0.000000 -0.050000 + H+ Na+ 0.036000 0.000000 0.036000 + H+ OH- 0.000000 0.000000 0.000000 + Na+ OH- 0.000000 0.000000 0.000000 + Step 7: + initial value of F = -1.143942 + F = -1.143942 + F = -1.259847 + F = -1.259847 + F = -1.259847 + F = -1.259847 + F = -1.259847 + Step 8: + Cl- lngamma[i]= -0.000641 gamma[i]= 0.999359 + -1.25985 1.23558 -1.90923e-07 -5.27697e-11 0.023626 0 + H+ lngamma[i]= 1.531269 gamma[i]= 4.624042 + -1.25985 2.47714 0.290353 0 0.023626 0 + Na+ lngamma[i]= -0.000641 gamma[i]= 0.999359 + -1.25985 1.23558 1.02952e-10 -5.11533e-08 0.023626 0 + OH- lngamma[i]= -0.609449 gamma[i]= 0.543650 + -1.25985 1.45998 -0.833208 0 0.023626 0 + Step 9: + term1= -1.489777 sum1= 3.205458 sum2= 0.000000 sum3= -0.000001 sum4= 0.000000 sum5= 0.000000 + sum_m_phi_minus_1= 3.431360 osmotic_coef= 1.281273 + Step 10: + Weight of Solvent = 18.01528 + molalitySum = 12.1994 + ln_a_water= -0.281593 a_water= 0.754581 + + + Debugging information from hmw_act + Step 1: + ionic strenth = 6.0997000e+00 + total molar charge = 1.2199400e+01 + Is = 6.0997 + ij = 1, elambda = 0.0454012, elambda1 = -0.00306854 + ij = 2, elambda = 0.200776, elambda1 = -0.014532 + ij = 3, elambda = 0.47109, elambda1 = -0.0351127 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 6, elambda = 1.98206, elambda1 = -0.153152 + ij = 8, elambda = 3.57685, elambda1 = -0.279391 + ij = 9, elambda = 4.55112, elambda1 = -0.356872 + ij = 12, elambda = 8.18289, elambda1 = -0.646977 + ij = 16, elambda = 14.6822, elambda1 = -1.16875 + Step 2: + z1= 1 z2= 1 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 1 z2= 2 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 1 z2= 3 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 1 z2= 4 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 2 z2= 1 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 2 z2= 2 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 2 z2= 3 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 2 z2= 4 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 3 z2= 1 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 3 z2= 2 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 3 z2= 3 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 3 z2= 4 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 1 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 4 z2= 2 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 4 z2= 3 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 4 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + Step 3: + Species Species g(x) hfunc(x) + Cl- H+ 0.07849 -0.07133 + Cl- Na+ 0.07849 -0.07133 + Cl- OH- 0.00000 0.00000 + H+ Na+ 0.00000 0.00000 + H+ OH- 0.00000 0.00000 + Na+ OH- 0.07849 -0.07133 + Step 4: + Species Species BMX BprimeMX BphiMX +1 0.200614: 0.1775 0.2945 0.0784862 + Cl- H+ 0.2006142 -0.0034438 0.1796081 +2 0.0974087: 0.0765 0.2664 0.0784862 + Cl- Na+ 0.0974087 -0.0031152 0.0784069 + Cl- OH- 0.0000000 0.0000000 0.0000000 + H+ Na+ 0.0000000 0.0000000 0.0000000 +5 0: 0 0 0 + H+ OH- 0.0000000 0.0000000 0.0000000 +6 0.106257: 0.0864 0.253 0.0784862 + Na+ OH- 0.1062570 -0.0029585 0.0882110 + Step 5: + Species Species CMX + Cl- H+ 0.0004000 + Cl- Na+ 0.0006350 + Cl- OH- 0.0000000 + H+ Na+ 0.0000000 + H+ OH- 0.0000000 + Na+ OH- 0.0022000 + Step 6: + Species Species Phi_ij Phiprime_ij Phi^phi_ij + Cl- H+ 0.000000 0.000000 0.000000 + Cl- Na+ 0.000000 0.000000 0.000000 + Cl- OH- -0.050000 0.000000 -0.050000 + H+ Na+ 0.036000 0.000000 0.036000 + H+ OH- 0.000000 0.000000 0.000000 + Na+ OH- 0.000000 0.000000 0.000000 + Step 7: + initial value of F = -1.143942 + F = -1.143942 + F = -1.259847 + F = -1.259847 + F = -1.259847 + F = -1.259847 + F = -1.259847 + Step 8: + Cl- lngamma[i]= -0.000641 gamma[i]= 0.999359 + -1.25985 1.23558 -1.90923e-07 -5.27697e-11 0.023626 0 + H+ lngamma[i]= 1.531269 gamma[i]= 4.624042 + -1.25985 2.47714 0.290353 0 0.023626 0 + Na+ lngamma[i]= -0.000641 gamma[i]= 0.999359 + -1.25985 1.23558 1.02952e-10 -5.11533e-08 0.023626 0 + OH- lngamma[i]= -0.609449 gamma[i]= 0.543650 + -1.25985 1.45998 -0.833208 0 0.023626 0 + Step 9: + term1= -1.489777 sum1= 3.205458 sum2= 0.000000 sum3= -0.000001 sum4= 0.000000 sum5= 0.000000 + sum_m_phi_minus_1= 3.431360 osmotic_coef= 1.281273 + Step 10: + Weight of Solvent = 18.01528 + molalitySum = 12.1994 + ln_a_water= -0.281593 a_water= 0.754581 + + Name Activity ActCoeffMolal MoleFract Molality + H2O(L) 0.754581 0.92042 0.819823 55.5084 + Cl- 6.09579 0.999359 0.0900885 6.0997 + H+ 1.00009e-08 4.62404 3.19431e-11 2.1628e-09 + Na+ 6.09579 0.999359 0.0900885 6.0997 + OH- 7.5986e-07 0.54365 2.06431e-08 1.3977e-06 + Species Standard chemical potentials (kJ/gmol) +------------------------------------------------------------ + H2O(L) -306.685777 + Cl- -131.064852 + H+ 0.0017225 + Na+ -311.160543 + OH- -226.880122 +------------------------------------------------------------ + Some DeltaSS values: Delta(mu_0) + NaCl(S): Na+ + Cl- -> NaCl(S): 9.594995 kJ/gmol + : 3.870573 (dimensionless) + : 1.680969 (dimensionless/ln10) + G0(NaCl(S)) = -432.6304 (fixed) + G0(Na+) = -311.1605 + G0(Cl-) = -131.0649 + OH-: H2O(L) - H+ -> OH-: 79.80738 kJ/gmol + : 32.1939 (dimensionless) + : 13.98163 (dimensionless/ln10) + G0(OH-) = -226.8801 + G0(H+) = 0.0017225 + G0(H2O(L)) = -306.6858 +------------------------------------------------------------ diff --git a/test_problems/cathermo/HMW_test_1/runtest b/test_problems/cathermo/HMW_test_1/runtest new file mode 100755 index 000000000..621e5eb70 --- /dev/null +++ b/test_problems/cathermo/HMW_test_1/runtest @@ -0,0 +1,42 @@ +#!/bin/sh +# +# +temp_success="1" +/bin/rm -f output.txt outputa.txt + +########################################################################## +prog=HMW_test_1 +if test ! -x $prog ; then + echo $prog ' does not exist' + exit -1 +fi +########################################################################## +/bin/rm -f test.out test.diff output.txt + +################################################################# +# +CANTERA_DATA=${CANTERA_DATA:=../../../data/inputs}; export CANTERA_DATA +CANTERA_BIN=${CANTERA_BIN:=../../../bin} + +################################################################# + +$prog > output.txt +retnStat=$? +if [ $retnStat != "0" ] +then + temp_success="0" + echo "$prog returned with bad status, $retnStat, check output" +fi + +$CANTERA_BIN/exp3to2.sh output.txt > outputa.txt +diff -w outputa.txt output_blessed.txt > diff_test.out +retnStat=$? +if [ $retnStat = "0" ] +then + echo "successful diff comparison on $prog test" +else + echo "unsuccessful diff comparison on $prog test" + echo "FAILED" > csvCode.txt + temp_success="0" +fi + diff --git a/test_problems/cathermo/HMW_test_3/.cvsignore b/test_problems/cathermo/HMW_test_3/.cvsignore new file mode 100644 index 000000000..929315411 --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/.cvsignore @@ -0,0 +1,8 @@ +.depends +HMW_test_3 +HMW_test_3.d +Makefile +diff_test.out +output.txt +outputa.txt +table.csv diff --git a/test_problems/cathermo/HMW_test_3/HMW_NaCl_tc.xml b/test_problems/cathermo/HMW_test_3/HMW_NaCl_tc.xml new file mode 100644 index 000000000..42ec12e84 --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/HMW_NaCl_tc.xml @@ -0,0 +1,190 @@ + + + + + H2O(L) Cl- H+ Na+ OH- + + + 298.15 + 101325.0 + + Na+:6.0954 + Cl-:6.0954 + H+:2.1628E-9 + OH-:1.3977E-6 + + + + + + + + 1.175930 + + 3.28640E9 + + + + 0.0765, 0.008946, -3.3158E-6, + -777.03, -4.4706 + + 0.2664, 6.1608E-5, 1.0715E-6 + 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.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.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 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 + + + + + 0.05555555 + + + + + Na:1 + +1 + + + 0.0 + 2 + + -125.5213, -125.5213 + + + 298.15, 333.15 + + + + + 1.3 + + + + + Cl:1 + -1 + + 1.3 + + + + 0.0 + 2 + + -52.8716 , -52.8716 + + + 298.15, 333.15 + + + + + + + H:1 + +1 + + 1.3 + + + + 0.0 + 2 + + 0.0 , 0.0 + + + 298.15, 333.15 + + + + + + + O:1 H:1 + -1 + + 1.3 + + + + 0.0 + 2 + + -91.523 , -91.523 + + + 298.15, 333.15 + + + + + + + + diff --git a/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp b/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp new file mode 100644 index 000000000..04ae44eb4 --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/HMW_test_3.cpp @@ -0,0 +1,151 @@ +/* ======================================================================= */ +/* $RCSfile$ */ +/* $Author$ */ +/* $Date$ */ +/* $Revision$ */ +/* ======================================================================= */ + +#include + +#ifdef SRCDIRTREE +#include "ct_defs.h" +#include "HMWSoln.h" +#else +#include "cantera/Cantera.h" +#include "HMWSoln.h" +#endif + +using namespace Cantera; + + +void printUsage() { + cout << "usage: HMW_test_1 " << endl; + cout <<" -> Everything is hardwired" << endl; +} + +void pAtable(HMWSoln *HMW) { + int nsp = HMW->nSpecies(); + double acMol[100]; + double mf[100]; + double activities[100]; + double moll[100]; + + HMW->getMolalityActivityCoefficients(acMol); + HMW->getMoleFractions(mf); + HMW->getActivities(activities); + HMW->getMolalities(moll); + string sName; + printf(" Name Activity ActCoeffMolal " + " MoleFract Molality\n"); + for (int k = 0; k < nsp; k++) { + sName = HMW->speciesName(k); + printf("%16s %13g %13g %13g %13g\n", + sName.c_str(), activities[k], acMol[k], mf[k], moll[k]); + } + +} + +int main(int argc, char **argv) +{ + int retn = 0; + try { + + HMWSoln *HMW = new HMWSoln("HMW_NaCl_tc.xml"); + + int nsp = HMW->nSpecies(); + + /* + * + */ + double a1 = HMW->AionicRadius(1); + printf("a1 = %g\n", a1); + double a2 = HMW->AionicRadius(2); + printf("a2 = %g\n", a2); + double mu0[100]; + double moll[100]; + string sName; + + HMW->getMolalities(moll); + moll[1] = 6.0997; + moll[2] = 2.1628E-9; + moll[3] = 6.0997; + moll[4] =1.3977E-6; + double Temp = 150 + 273.15; + /* + * Equalize charge balance and dump into Cl- + */ + double sum = -moll[1] + moll[2] + moll[3] - moll[4]; + moll[1] += sum; + + HMW->setState_TPM(Temp, OneAtm, moll); +#ifdef DEBUG_HKM + HMW->m_debugCalc = true; +#endif + printf(" Temperature = %g K\n", Temp); + HMW->printCoeffs(); + pAtable(HMW); + + HMW->setState_TP(Temp, 1.01325E5); + HMW->getStandardChemPotentials(mu0); + // translate from J/kmol to kJ/gmol + int k; + for (k = 0; k < nsp; k++) { + mu0[k] *= 1.0E-6; + } + + printf(" Species Standard chemical potentials (kJ/gmol) \n"); + printf("------------------------------------------------------------\n"); + for (k = 0; k < nsp; k++) { + sName = HMW->speciesName(k); + printf("%16s %16.9g\n", sName.c_str(), mu0[k]); + } + printf("------------------------------------------------------------\n"); + printf(" Some DeltaSS values: Delta(mu_0)\n"); + double deltaG; + int i1, i2, j1; + double RT = 8.314472E-3 * 298.15; + + + + i1 = HMW->speciesIndex("Na+"); + i2 = HMW->speciesIndex("Cl-"); + deltaG = -432.6304 - mu0[i1] - mu0[i2]; + printf(" NaCl(S): Na+ + Cl- -> NaCl(S): %14.7g kJ/gmol \n", + deltaG); + printf(" : %14.7g (dimensionless) \n", + deltaG/RT); + printf(" : %14.7g (dimensionless/ln10) \n", + deltaG/(RT * log(10.0))); + + i1 = HMW->speciesIndex("H+"); + i2 = HMW->speciesIndex("H2O(L)"); + j1 = HMW->speciesIndex("OH-"); + if (i1 < 0 || i2 < 0 || j1 < 0) { + printf("problems\n"); + exit(-1); + } + deltaG = mu0[j1] + mu0[i1] - mu0[i2]; + printf(" OH-: H2O(L) - H+ -> OH-: %14.7g kJ/gmol \n", + deltaG); + printf(" : %14.7g (dimensionless) \n", + deltaG/RT); + printf(" : %14.7g (dimensionless/ln10) \n", + deltaG/(RT * log(10.0))); + + + + printf("------------------------------------------------------------\n"); + + + delete HMW; + HMW = 0; + Cantera::appdelete(); + + return retn; + + } catch (CanteraError) { + + showErrors(); + return -1; + } +} diff --git a/test_problems/cathermo/HMW_test_3/Makefile.in b/test_problems/cathermo/HMW_test_3/Makefile.in new file mode 100644 index 000000000..deaaa74b9 --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/Makefile.in @@ -0,0 +1,112 @@ +#!/bin/sh + +############################################################################ +# +# Makefile to compile and link a C++ application to +# Cantera. +# +############################################################################# + +# addition to suffixes +.SUFFIXES : .d + +# the name of the executable program to be created +PROG_NAME = HMW_test_3 + +# the object files to be linked together. List those generated from Fortran +# and from C/C++ separately +OBJS = HMW_test_3 + +# Location of the current build. Will assume that tests are run +# in the source directory tree location +src_dir_tree = 1 + +# additional flags to be passed to the linker. If your program +# requires other external libraries, put them here +LINK_OPTIONS = @EXTRA_LINK@ + +############################################################################# + +# Check to see whether we are in the msvc++ environment +os_is_win = @OS_IS_WIN@ + +# Fortran libraries +FORT_LIBS = @FLIBS@ + +# the C++ compiler +CXX = @CXX@ + +# C++ compile flags +ifeq ($(src_dir_tree), 1) +CXX_FLAGS = -DSRCDIRTREE @CXXFLAGS@ +else +CXX_FLAGS = @CXXFLAGS@ +endif + +# Ending C++ linking libraries +LCXX_END_LIBS = @LCXX_END_LIBS@ + +# the directory where the Cantera libraries are located +CANTERA_LIBDIR=@buildlib@ + +# required Cantera libraries +CANTERA_LIBS = @LOCAL_LIBS@ -lctcxx + +# the directory where Cantera include files may be found. +ifeq ($(src_dir_tree), 1) +CANTERA_INCDIR=../../../Cantera/src +INCLUDES=-I$(CANTERA_INCDIR) -I$(CANTERA_INCDIR)/thermo +else +CANTERA_INCDIR=@ctroot@/build/include/cantera +INCLUDES=-I$(CANTERA_INCDIR) -I$(CANTERA_INCDIR)/kernel +endif + +# flags passed to the C++ compiler/linker for the linking step +LCXX_FLAGS = -L$(CANTERA_LIBDIR) @LOCAL_LIB_DIRS@ @CXXFLAGS@ + +# How to compile C++ source files to object files +.@CXX_EXT@.@OBJ_EXT@: + $(CXX) -c $< $(INCLUDES) $(CXX_FLAGS) + +# How to compile the dependency file +.cpp.d: + g++ -MM $(INCLUDES) $(CXX_FLAGS) $*.cpp > $*.d + +# List of dependency files to be created +DEPENDS=$(OBJS:.o=.d) + +# Program Name +PROGRAM = $(PROG_NAME)$(EXE_EXT) + +all: $(PROGRAM) .depends + +$(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a \ + $(CANTERA_LIBDIR)/libcaThermo.a + $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \ + $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \ + $(LCXX_END_LIBS) + +# depends target -> forces recalculation of dependencies +depends: + @MAKE@ .depends + +.depends: $(DEPENDS) + cat $(DEPENDS) > .depends + +# Do the test -> For the windows vc++ environment, we have to skip checking on +# whether the program is uptodate, because we don't utilize make +# in that environment to build programs. +test: +ifeq ($(os_is_win), 1) +else + @MAKE@ $(PROGRAM) +endif + ./runtest + +clean: + $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends + ../../../bin/rm_cvsignore + (if test -d SunWS_cache ; then \ + $(RM) -rf SunWS_cache ; \ + fi ) + diff --git a/test_problems/cathermo/HMW_test_3/README b/test_problems/cathermo/HMW_test_3/README new file mode 100644 index 000000000..0c459c97a --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/README @@ -0,0 +1,2 @@ +This test exercises the basic Pitzer model. + diff --git a/test_problems/cathermo/HMW_test_3/output_blessed.txt b/test_problems/cathermo/HMW_test_3/output_blessed.txt new file mode 100644 index 000000000..c4e48a56d --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/output_blessed.txt @@ -0,0 +1,335 @@ +a1 = 3.04284e-10 +a2 = 3.04284e-10 + Temperature = 423.15 K +Index Name MoleF Molality Charge + 0 H2O(L) 8.1982292e-01 5.5508435e+01 0.0 + 1 Cl- 9.0088519e-02 6.0996986e+00 -1.0 + 2 H+ 3.1943127e-11 2.1628000e-09 1.0 + 3 Na+ 9.0088540e-02 6.0997000e+00 1.0 + 4 OH- 2.0643106e-08 1.3977000e-06 -1.0 + + Species Species beta0MX beta1MX beta2MX CphiMX alphaMX thetaij + Cl- H+ 0.17750 0.29450 0.00000 0.00080 2.00000 0.00000 + Cl- Na+ 0.10037 0.37071 0.00000 -0.00457 2.00000 0.00000 + Cl- OH- 0.00000 0.00000 0.00000 0.00000 0.00000 -0.05000 + H+ Na+ 0.00000 0.00000 0.00000 0.00000 0.00000 0.03600 + H+ OH- 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + Na+ OH- 0.08640 0.25300 0.00000 0.00440 2.00000 0.00000 + + Species Species Species psi + Cl- H+ Na+ -0.00400 + Cl- Na+ H+ -0.00400 + Cl- Na+ OH- -0.00600 + Cl- OH- Na+ -0.00600 + H+ Cl- Na+ -0.00400 + H+ Na+ Cl- -0.00400 + Na+ Cl- H+ -0.00400 + Na+ Cl- OH- -0.00600 + Na+ H+ Cl- -0.00400 + Na+ OH- Cl- -0.00600 + OH- Cl- Na+ -0.00600 + OH- Na+ Cl- -0.00600 + + Debugging information from hmw_act + Step 1: + ionic strenth = 6.0997000e+00 + total molar charge = 1.2199400e+01 + Is = 6.0997 + ij = 1, elambda = 0.0454012, elambda1 = -0.00306854 + ij = 2, elambda = 0.200776, elambda1 = -0.014532 + ij = 3, elambda = 0.47109, elambda1 = -0.0351127 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 6, elambda = 1.98206, elambda1 = -0.153152 + ij = 8, elambda = 3.57685, elambda1 = -0.279391 + ij = 9, elambda = 4.55112, elambda1 = -0.356872 + ij = 12, elambda = 8.18289, elambda1 = -0.646977 + ij = 16, elambda = 14.6822, elambda1 = -1.16875 + Step 2: + z1= 1 z2= 1 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 1 z2= 2 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 1 z2= 3 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 1 z2= 4 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 2 z2= 1 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 2 z2= 2 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 2 z2= 3 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 2 z2= 4 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 3 z2= 1 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 3 z2= 2 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 3 z2= 3 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 3 z2= 4 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 1 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 4 z2= 2 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 4 z2= 3 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 4 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + Step 3: + Species Species g(x) hfunc(x) + Cl- H+ 0.07849 -0.07133 + Cl- Na+ 0.07849 -0.07133 + Cl- OH- 0.00000 0.00000 + H+ Na+ 0.00000 0.00000 + H+ OH- 0.00000 0.00000 + Na+ OH- 0.07849 -0.07133 + Step 4: + Species Species BMX BprimeMX BphiMX +1 0.200614: 0.1775 0.2945 0.0784862 + Cl- H+ 0.2006142 -0.0034438 0.1796081 +2 0.129466: 0.10037 0.37071 0.0784862 + Cl- Na+ 0.1294658 -0.0043350 0.1030237 + Cl- OH- 0.0000000 0.0000000 0.0000000 + H+ Na+ 0.0000000 0.0000000 0.0000000 +5 0: 0 0 0 + H+ OH- 0.0000000 0.0000000 0.0000000 +6 0.106257: 0.0864 0.253 0.0784862 + Na+ OH- 0.1062570 -0.0029585 0.0882110 + Step 5: + Species Species CMX + Cl- H+ 0.0004000 + Cl- Na+ -0.0022865 + Cl- OH- 0.0000000 + H+ Na+ 0.0000000 + H+ OH- 0.0000000 + Na+ OH- 0.0022000 + Step 6: + Species Species Phi_ij Phiprime_ij Phi^phi_ij + Cl- H+ 0.000000 0.000000 0.000000 + Cl- Na+ 0.000000 0.000000 0.000000 + Cl- OH- -0.050000 0.000000 -0.050000 + H+ Na+ 0.036000 0.000000 0.036000 + H+ OH- 0.000000 0.000000 0.000000 + Na+ OH- 0.000000 0.000000 0.000000 + Step 7: + initial value of F = -1.143942 + F = -1.143942 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + Step 8: + Cl- lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 -1.90923e-07 -5.27697e-11 -0.085074 0 + H+ lngamma[i]= 1.377186 gamma[i]= 3.963731 + -1.30523 2.47714 0.290353 0 -0.085074 0 + Na+ lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 1.02952e-10 -5.11533e-08 -0.085074 0 + OH- lngamma[i]= -0.763533 gamma[i]= 0.466017 + -1.30523 1.45998 -0.833208 0 -0.085074 0 + Step 9: + term1= -1.489777 sum1= 2.795284 sum2= 0.000000 sum3= -0.000001 sum4= 0.000000 sum5= 0.000000 + sum_m_phi_minus_1= 2.611013 osmotic_coef= 1.214028 + Step 10: + Weight of Solvent = 18.01528 + molalitySum = 12.1994 + ln_a_water= -0.266814 a_water= 0.765816 + + + Debugging information from hmw_act + Step 1: + ionic strenth = 6.0997000e+00 + total molar charge = 1.2199400e+01 + Is = 6.0997 + ij = 1, elambda = 0.0454012, elambda1 = -0.00306854 + ij = 2, elambda = 0.200776, elambda1 = -0.014532 + ij = 3, elambda = 0.47109, elambda1 = -0.0351127 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 6, elambda = 1.98206, elambda1 = -0.153152 + ij = 8, elambda = 3.57685, elambda1 = -0.279391 + ij = 9, elambda = 4.55112, elambda1 = -0.356872 + ij = 12, elambda = 8.18289, elambda1 = -0.646977 + ij = 16, elambda = 14.6822, elambda1 = -1.16875 + Step 2: + z1= 1 z2= 1 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 1 z2= 2 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 1 z2= 3 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 1 z2= 4 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 2 z2= 1 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 2 z2= 2 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 2 z2= 3 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 2 z2= 4 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 3 z2= 1 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 3 z2= 2 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 3 z2= 3 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 3 z2= 4 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 1 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 4 z2= 2 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 4 z2= 3 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 4 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + Step 3: + Species Species g(x) hfunc(x) + Cl- H+ 0.07849 -0.07133 + Cl- Na+ 0.07849 -0.07133 + Cl- OH- 0.00000 0.00000 + H+ Na+ 0.00000 0.00000 + H+ OH- 0.00000 0.00000 + Na+ OH- 0.07849 -0.07133 + Step 4: + Species Species BMX BprimeMX BphiMX +1 0.200614: 0.1775 0.2945 0.0784862 + Cl- H+ 0.2006142 -0.0034438 0.1796081 +2 0.129466: 0.10037 0.37071 0.0784862 + Cl- Na+ 0.1294658 -0.0043350 0.1030237 + Cl- OH- 0.0000000 0.0000000 0.0000000 + H+ Na+ 0.0000000 0.0000000 0.0000000 +5 0: 0 0 0 + H+ OH- 0.0000000 0.0000000 0.0000000 +6 0.106257: 0.0864 0.253 0.0784862 + Na+ OH- 0.1062570 -0.0029585 0.0882110 + Step 5: + Species Species CMX + Cl- H+ 0.0004000 + Cl- Na+ -0.0022865 + Cl- OH- 0.0000000 + H+ Na+ 0.0000000 + H+ OH- 0.0000000 + Na+ OH- 0.0022000 + Step 6: + Species Species Phi_ij Phiprime_ij Phi^phi_ij + Cl- H+ 0.000000 0.000000 0.000000 + Cl- Na+ 0.000000 0.000000 0.000000 + Cl- OH- -0.050000 0.000000 -0.050000 + H+ Na+ 0.036000 0.000000 0.036000 + H+ OH- 0.000000 0.000000 0.000000 + Na+ OH- 0.000000 0.000000 0.000000 + Step 7: + initial value of F = -1.143942 + F = -1.143942 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + Step 8: + Cl- lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 -1.90923e-07 -5.27697e-11 -0.085074 0 + H+ lngamma[i]= 1.377186 gamma[i]= 3.963731 + -1.30523 2.47714 0.290353 0 -0.085074 0 + Na+ lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 1.02952e-10 -5.11533e-08 -0.085074 0 + OH- lngamma[i]= -0.763533 gamma[i]= 0.466017 + -1.30523 1.45998 -0.833208 0 -0.085074 0 + Step 9: + term1= -1.489777 sum1= 2.795284 sum2= 0.000000 sum3= -0.000001 sum4= 0.000000 sum5= 0.000000 + sum_m_phi_minus_1= 2.611013 osmotic_coef= 1.214028 + Step 10: + Weight of Solvent = 18.01528 + molalitySum = 12.1994 + ln_a_water= -0.266814 a_water= 0.765816 + + Name Activity ActCoeffMolal MoleFract Molality + H2O(L) 0.765816 0.934123 0.819823 55.5084 + Cl- 6.2164 1.01913 0.0900885 6.0997 + H+ 8.57276e-09 3.96373 3.19431e-11 2.1628e-09 + Na+ 6.21641 1.01913 0.0900885 6.0997 + OH- 6.51352e-07 0.466017 2.06431e-08 1.3977e-06 + + Debugging information from hmw_act + Step 1: + ionic strenth = 6.0997000e+00 + total molar charge = 1.2199400e+01 + Is = 6.0997 + ij = 1, elambda = 0.0454012, elambda1 = -0.00306854 + ij = 2, elambda = 0.200776, elambda1 = -0.014532 + ij = 3, elambda = 0.47109, elambda1 = -0.0351127 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 4, elambda = 0.857674, elambda1 = -0.0650149 + ij = 6, elambda = 1.98206, elambda1 = -0.153152 + ij = 8, elambda = 3.57685, elambda1 = -0.279391 + ij = 9, elambda = 4.55112, elambda1 = -0.356872 + ij = 12, elambda = 8.18289, elambda1 = -0.646977 + ij = 16, elambda = 14.6822, elambda1 = -1.16875 + Step 2: + z1= 1 z2= 1 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 1 z2= 2 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 1 z2= 3 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 1 z2= 4 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 2 z2= 1 E-theta(I) = -0.059044, E-thetaprime(I) = 0.004790 + z1= 2 z2= 2 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 2 z2= 3 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 2 z2= 4 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 3 z2= 1 E-theta(I) = -0.355533, E-thetaprime(I) = 0.028969 + z1= 3 z2= 2 E-theta(I) = -0.178237, E-thetaprime(I) = 0.014566 + z1= 3 z2= 3 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + z1= 3 z2= 4 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 1 E-theta(I) = -1.068400, E-thetaprime(I) = 0.087216 + z1= 4 z2= 2 E-theta(I) = -0.951372, E-thetaprime(I) = 0.077813 + z1= 4 z2= 3 E-theta(I) = -0.357010, E-thetaprime(I) = 0.029220 + z1= 4 z2= 4 E-theta(I) = 0.000000, E-thetaprime(I) = 0.000000 + Step 3: + Species Species g(x) hfunc(x) + Cl- H+ 0.07849 -0.07133 + Cl- Na+ 0.07849 -0.07133 + Cl- OH- 0.00000 0.00000 + H+ Na+ 0.00000 0.00000 + H+ OH- 0.00000 0.00000 + Na+ OH- 0.07849 -0.07133 + Step 4: + Species Species BMX BprimeMX BphiMX +1 0.200614: 0.1775 0.2945 0.0784862 + Cl- H+ 0.2006142 -0.0034438 0.1796081 +2 0.129466: 0.10037 0.37071 0.0784862 + Cl- Na+ 0.1294658 -0.0043350 0.1030237 + Cl- OH- 0.0000000 0.0000000 0.0000000 + H+ Na+ 0.0000000 0.0000000 0.0000000 +5 0: 0 0 0 + H+ OH- 0.0000000 0.0000000 0.0000000 +6 0.106257: 0.0864 0.253 0.0784862 + Na+ OH- 0.1062570 -0.0029585 0.0882110 + Step 5: + Species Species CMX + Cl- H+ 0.0004000 + Cl- Na+ -0.0022865 + Cl- OH- 0.0000000 + H+ Na+ 0.0000000 + H+ OH- 0.0000000 + Na+ OH- 0.0022000 + Step 6: + Species Species Phi_ij Phiprime_ij Phi^phi_ij + Cl- H+ 0.000000 0.000000 0.000000 + Cl- Na+ 0.000000 0.000000 0.000000 + Cl- OH- -0.050000 0.000000 -0.050000 + H+ Na+ 0.036000 0.000000 0.036000 + H+ OH- 0.000000 0.000000 0.000000 + Na+ OH- 0.000000 0.000000 0.000000 + Step 7: + initial value of F = -1.143942 + F = -1.143942 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + F = -1.305230 + Step 8: + Cl- lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 -1.90923e-07 -5.27697e-11 -0.085074 0 + H+ lngamma[i]= 1.377186 gamma[i]= 3.963731 + -1.30523 2.47714 0.290353 0 -0.085074 0 + Na+ lngamma[i]= 0.018952 gamma[i]= 1.019133 + -1.30523 1.40926 1.02952e-10 -5.11533e-08 -0.085074 0 + OH- lngamma[i]= -0.763533 gamma[i]= 0.466017 + -1.30523 1.45998 -0.833208 0 -0.085074 0 + Step 9: + term1= -1.489777 sum1= 2.795284 sum2= 0.000000 sum3= -0.000001 sum4= 0.000000 sum5= 0.000000 + sum_m_phi_minus_1= 2.611013 osmotic_coef= 1.214028 + Step 10: + Weight of Solvent = 18.01528 + molalitySum = 12.1994 + ln_a_water= -0.266814 a_water= 0.765816 + + Species Standard chemical potentials (kJ/gmol) +------------------------------------------------------------ + H2O(L) -317.175857 + Cl- -186.014783 + H+ 0.0017225 + Na+ -441.615962 + OH- -322.000801 +------------------------------------------------------------ + Some DeltaSS values: Delta(mu_0) + NaCl(S): Na+ + Cl- -> NaCl(S): 195.0003 kJ/gmol + : 78.66216 (dimensionless) + : 34.16254 (dimensionless/ln10) + OH-: H2O(L) - H+ -> OH-: -4.823222 kJ/gmol + : -1.945664 (dimensionless) + : -0.8449909 (dimensionless/ln10) +------------------------------------------------------------ diff --git a/test_problems/cathermo/HMW_test_3/runtest b/test_problems/cathermo/HMW_test_3/runtest new file mode 100755 index 000000000..7f2d0dd40 --- /dev/null +++ b/test_problems/cathermo/HMW_test_3/runtest @@ -0,0 +1,42 @@ +#!/bin/sh +# +# +temp_success="1" +/bin/rm -f output.txt outputa.txt + +########################################################################## +prog=HMW_test_3 +if test ! -x $prog ; then + echo $prog ' does not exist' + exit -1 +fi +########################################################################## +/bin/rm -f test.out test.diff output.txt + +################################################################# +# +CANTERA_DATA=${CANTERA_DATA:=../../../data/inputs}; export CANTERA_DATA +CANTERA_BIN=${CANTERA_BIN:=../../../bin} + +################################################################# + +$prog > output.txt +retnStat=$? +if [ $retnStat != "0" ] +then + temp_success="0" + echo "$prog returned with bad status, $retnStat, check output" +fi + +$CANTERA_BIN/exp3to2.sh output.txt > outputa.txt +diff -w outputa.txt output_blessed.txt > diff_test.out +retnStat=$? +if [ $retnStat = "0" ] +then + echo "successful diff comparison on $prog test" +else + echo "unsuccessful diff comparison on $prog test" + echo "FAILED" > csvCode.txt + temp_success="0" +fi + diff --git a/test_problems/cathermo/Makefile.in b/test_problems/cathermo/Makefile.in index 9747118cc..bea6061b5 100644 --- a/test_problems/cathermo/Makefile.in +++ b/test_problems/cathermo/Makefile.in @@ -23,6 +23,8 @@ ifeq ($(test_electrolytes),1) cd HMW_graph_HvT; @MAKE@ all cd HMW_graph_CpvT; @MAKE@ all cd HMW_graph_VvT; @MAKE@ all + cd HMW_test_1; @MAKE@ all + cd HMW_test_3; @MAKE@ all endif test: @@ -41,6 +43,8 @@ ifeq ($(test_electrolytes),1) cd HMW_graph_HvT; @MAKE@ test cd HMW_graph_CpvT; @MAKE@ test cd HMW_graph_VvT; @MAKE@ test + cd HMW_test_1; @MAKE@ test + cd HMW_test_3; @MAKE@ test endif clean: @@ -57,6 +61,8 @@ clean: cd HMW_graph_HvT; @MAKE@ clean cd HMW_graph_CpvT; @MAKE@ clean cd HMW_graph_VvT; @MAKE@ clean + cd HMW_test_1; @MAKE@ clean + cd HMW_test_3; @MAKE@ clean depends: ifeq ($(test_issp),1) @@ -74,4 +80,6 @@ ifeq ($(test_electrolytes),1) cd HMW_graph_HvT; @MAKE@ depends cd HMW_graph_CpvT; @MAKE@ depends cd HMW_graph_VvT; @MAKE@ depends + cd HMW_test_1; @MAKE@ depends + cd HMW_test_3; @MAKE@ depends endif