diff --git a/test_problems/Makefile.in b/test_problems/Makefile.in
index bddd95c46..ebcfccaa0 100644
--- a/test_problems/Makefile.in
+++ b/test_problems/Makefile.in
@@ -15,6 +15,7 @@ all:
cd fracCoeff; @MAKE@ all
cd negATest; @MAKE@ all
cd diamondSurf; @MAKE@ all
+ cd diamondSurf_dupl; @MAKE@ all
cd ChemEquil_gri_matrix; @MAKE@ all
cd ChemEquil_gri_pairs; @MAKE@ all
cd ChemEquil_ionizedGas; @MAKE@ all
@@ -41,6 +42,7 @@ test:
@ cd fracCoeff; @MAKE@ -s test
@ cd negATest; @MAKE@ -s test
@ cd diamondSurf; @MAKE@ -s test
+ @ cd diamondSurf_dupl; @MAKE@ -s test
@ cd ChemEquil_gri_matrix; @MAKE@ -s test
@ cd ChemEquil_gri_pairs; @MAKE@ -s test
@ cd ChemEquil_ionizedGas; @MAKE@ -s test
@@ -69,6 +71,7 @@ clean:
cd fracCoeff; $(RM) .depends ; @MAKE@ clean
cd negATest; $(RM) .depends ; @MAKE@ clean
cd diamondSurf; $(RM) .depends ; @MAKE@ clean
+ cd diamondSurf_dupl; $(RM) .depends ; @MAKE@ clean
cd ChemEquil_gri_matrix; $(RM) .depends ; @MAKE@ clean
cd ChemEquil_gri_pairs; $(RM) .depends ; @MAKE@ clean
cd ChemEquil_ionizedGas; $(RM) .depends ; @MAKE@ clean
@@ -85,6 +88,7 @@ depends:
cd fracCoeff; @MAKE@ depends
cd negATest; @MAKE@ depends
cd diamondSurf; @MAKE@ depends
+ cd diamondSurf_dupl; @MAKE@ depends
cd ChemEquil_gri_matrix; @MAKE@ depends
cd ChemEquil_gri_pairs; @MAKE@ depends
cd ChemEquil_ionizedGas; @MAKE@ depends
diff --git a/test_problems/cathermo/DH_graph_NM/.cvsignore b/test_problems/cathermo/DH_graph_NM/.cvsignore
index 06d3bfff1..900806e4b 100644
--- a/test_problems/cathermo/DH_graph_NM/.cvsignore
+++ b/test_problems/cathermo/DH_graph_NM/.cvsignore
@@ -5,3 +5,4 @@ DH_graph_1.d
DH_graph_1.log
Makefile
output.txt
+csvCode.txt
diff --git a/test_problems/cathermo/DH_graph_acommon/.cvsignore b/test_problems/cathermo/DH_graph_acommon/.cvsignore
index 465026376..627b80921 100644
--- a/test_problems/cathermo/DH_graph_acommon/.cvsignore
+++ b/test_problems/cathermo/DH_graph_acommon/.cvsignore
@@ -5,4 +5,4 @@ DH_graph_1.d
DH_graph_1.log
Makefile
output.txt
-
+csvCode.txt
diff --git a/test_problems/cathermo/DH_graph_bdotak/.cvsignore b/test_problems/cathermo/DH_graph_bdotak/.cvsignore
index 9ef6ad583..2c1529121 100644
--- a/test_problems/cathermo/DH_graph_bdotak/.cvsignore
+++ b/test_problems/cathermo/DH_graph_bdotak/.cvsignore
@@ -5,3 +5,4 @@ DH_graph_1.d
DH_graph_1.log
Makefile
output.txt
+csvCode.txt
diff --git a/test_problems/cathermo/Makefile.in b/test_problems/cathermo/Makefile.in
index 4ed5dd447..70f4f40af 100644
--- a/test_problems/cathermo/Makefile.in
+++ b/test_problems/cathermo/Makefile.in
@@ -31,6 +31,7 @@ ifeq ($(test_electrolytes),1)
cd DH_graph_bdotak; @MAKE@ all
cd DH_graph_NM; @MAKE@ all
cd DH_graph_Pitzer; @MAKE@ all
+ cd HMW_dupl_test; @MAKE@ all
endif
test:
@@ -57,6 +58,7 @@ ifeq ($(test_electrolytes),1)
cd DH_graph_bdotak; @MAKE@ -s test
cd DH_graph_NM; @MAKE@ -s test
cd DH_graph_Pitzer; @MAKE@ -s test
+ cd HMW_dupl_test; @MAKE@ -s test
endif
#
# Have to remove .depends before calling make, because
@@ -85,6 +87,7 @@ clean:
cd DH_graph_bdotak; $(RM) .depends ; @MAKE@ clean
cd DH_graph_NM; $(RM) .depends ; @MAKE@ clean
cd DH_graph_Pitzer; $(RM) .depends ; @MAKE@ clean
+ cd HMW_dupl_test; $(RM) .depends ; @MAKE@ clean
depends:
ifeq ($(test_issp),1)
@@ -107,7 +110,8 @@ ifeq ($(test_electrolytes),1)
cd HMW_test_3; @MAKE@ depends
cd DH_graph_1; @MAKE@ depends
cd DH_graph_acommon; @MAKE@ depends
- cd DH_graph_bdotak; @MAKE@ depends
- cd DH_graph_NM; @MAKE@ depends
- cd DH_graph_Pitzer; @MAKE@ depends
+ cd DH_graph_bdotak; @MAKE@ depends
+ cd DH_graph_NM; @MAKE@ depends
+ cd DH_graph_Pitzer; @MAKE@ depends
+ cd HMW_dupl_test; @MAKE@ depends
endif
diff --git a/test_problems/diamondSurf_dupl/.cvsignore b/test_problems/diamondSurf_dupl/.cvsignore
new file mode 100644
index 000000000..d4f626081
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/.cvsignore
@@ -0,0 +1,18 @@
+Makefile
+csvCode.txt
+diff_test.out
+output.txt
+runDiamond
+ct2ctml.log
+xml_diff_test.out
+.depends
+*.d
+.cttmp.py
+runDiamond.ilk
+diamondSurf.pdb
+diamonda.xml
+outputa.txt
+test.xml
+SunWS_cache
+diff_test.txt
+runDiamondDupl
diff --git a/test_problems/diamondSurf_dupl/Makefile.in b/test_problems/diamondSurf_dupl/Makefile.in
new file mode 100644
index 000000000..a329db688
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/Makefile.in
@@ -0,0 +1,122 @@
+#!/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 = runDiamondDupl
+
+# the object files to be linked together. List those generated from Fortran
+# and from C/C++ separately
+OBJS = runDiamondDupl.o
+
+# Location of the current build. Will assume that tests are run
+# in the source directory tree location
+src_dir_tree = 0
+
+# 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
+else
+CANTERA_INCDIR=@ctroot@/build/include/cantera
+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@: Interface.h
+ $(CXX) -c $< -I$(CANTERA_INCDIR) @CXX_INCLUDES@ $(CXX_FLAGS)
+
+# How to compile the dependency file
+.cpp.d:
+ @CXX_DEPENDS@ -I$(CANTERA_INCDIR) $(CXX_FLAGS) $*.cpp > $*.d
+
+# List of dependency files to be created
+DEPENDS=$(OBJS:.o=.d)
+
+# Program Name
+PROGRAM = $(PROG_NAME)$(EXE_EXT)
+
+# all rule makes a single program
+all: $(PROGRAM)
+
+# Rule to make the program
+$(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libctbase.a
+ $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \
+ $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
+ $(LCXX_END_LIBS)
+
+# Add an additional target for stability:
+$(OBJS): $(CANTERA_LIBDIR)/libctbase.a $(CANTERA_LIBDIR)/libthermo.a
+
+
+# depends target
+depends:
+ $(RM) *.d .depends
+ @MAKE@ .depends
+
+.depends: $(DEPENDS)
+ cat *.d > .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@ -s $(PROGRAM)
+endif
+ @ ./runtest
+
+# clean target -> clean up
+clean:
+ $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends
+ ../../bin/rm_cvsignore
+ (if test -d SunWS_cache ; then \
+ $(RM) -rf SunWS_cache ; \
+ fi )
+
+ifeq ($(wildcard .depends), .depends)
+include .depends
+endif
+
+
diff --git a/test_problems/diamondSurf_dupl/diamond.xml b/test_problems/diamondSurf_dupl/diamond.xml
new file mode 100644
index 000000000..812d61a8a
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/diamond.xml
@@ -0,0 +1,449 @@
+
+
+
+
+
+
+ H C
+ H H2 CH3 CH4
+
+ 1200.0
+ 2666.4473684210525
+ H:0.002, H2:0.988, CH3:0.0002, CH4:0.01
+
+
+
+
+
+
+
+
+ H C
+ C(d)
+
+ 3.52
+
+
+
+
+
+
+
+ H C
+ c6HH c6H* c6*H c6** c6HM c6HM* c6*M c6B
+
+
+ 1200.0
+ c6H*:0.1, c6HH:0.9
+
+
+ 3e-09
+
+
+
+ gas diamond
+
+
+
+
+
+
+
+ C:1
+
+
+ 298.14999999999998
+ 0.0
+ 0.0
+ 0.0
+
+
+
+
+
+
+ H:1
+
+
+ 298.14999999999998
+ 51.700000000000003
+ 19.5
+ 0.0
+
+
+
+
+
+
+ H:1
+
+
+ 298.14999999999998
+ 46.100000000000001
+ 19.899999999999999
+ 0.0
+
+
+
+
+
+
+ H:2
+
+
+ 298.14999999999998
+ 11.4
+ 21.0
+ 0.0
+
+
+
+
+
+
+ H:4 C:1
+
+
+ 298.14999999999998
+ 26.899999999999999
+ 40.299999999999997
+ 0.0
+
+
+
+
+
+
+ H:3 C:1
+
+
+ 298.14999999999998
+ 65.799999999999997
+ 40.100000000000001
+ 0.0
+
+
+
+
+
+
+ H:3 C:1
+
+
+ 298.14999999999998
+ 53.299999999999997
+ 38.899999999999999
+ 0.0
+
+
+
+
+
+
+ C:0
+
+
+ 298.14999999999998
+ 90.0
+ 18.399999999999999
+ 0.0
+
+
+
+
+
+
+ H:2 C:1
+
+
+ 298.14999999999998
+ 40.899999999999999
+ 26.899999999999999
+ 0.0
+
+
+
+
+
+
+
+
+ c6HH + H [=] c6H* + H2
+
+
+ 1.300000E+11
+ 0.0
+ 7.300000
+
+
+ H:1 c6HH:1.0
+ H2:1 c6H*:1.0
+
+
+
+
+ c6H* + H [=] c6HH
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ c6H*:1.0 H:1
+ c6HH:1.0
+
+
+
+
+ c6H* + CH3 [=] c6HM
+
+
+ 5.000000E+09
+ 0.0
+ 0.000000
+
+
+ c6H*:1.0 CH3:1
+ c6HM:1.0
+
+
+
+
+ c6HM + H [=] c6*M + H2
+
+
+ 1.300000E+11
+ 0.0
+ 7.300000
+
+
+ H:1 c6HM:1.0
+ H2:1 c6*M:1.0
+
+
+
+
+ c6*M + H [=] c6HM
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ H:1 c6*M:1.0
+ c6HM:1.0
+
+
+
+
+ c6HM + H [=] c6HM* + H2
+
+
+ 2.800000E+04
+ 0.0
+ 7.700000
+
+
+ H:1 c6HM:1.0
+ H2:1 c6HM*:1.0
+
+
+
+
+ c6HM* + H [=] c6HM
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ c6HM*:1.0 H:1
+ c6HM:1.0
+
+
+
+
+ c6HM* [=] c6*M
+
+
+ 1.000000E+08
+ 0.0
+ 0.000000
+
+
+ c6HM*:1.0
+ c6*M:1.0
+
+
+
+
+ c6HM* + H [=] c6H* + CH3
+
+
+ 3.000000E+10
+ 0.0
+ 0.000000
+
+
+ c6HM*:1.0 H:1
+ c6H*:1.0 CH3:1
+
+
+
+
+ c6HM* + H [=] c6B + H2
+
+
+ 1.300000E+11
+ 0.0
+ 7.300000
+
+
+ c6HM*:1.0 H:1
+ H2:1 c6B:1.0
+
+
+
+
+ c6*M + H [=] c6B + H2
+
+
+ 2.800000E+04
+ 2.0
+ 7.700000
+
+
+ H:1 c6*M:1.0
+ H2:1 c6B:1.0
+
+
+
+
+ c6HH + H [=] c6*H + H2
+
+
+ 1.300000E+11
+ 0.0
+ 7.300000
+
+
+ H:1 c6HH:1.0
+ H2:1 c6*H:1.0
+
+
+
+
+ c6*H + H [=] c6HH
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ c6*H:1.0 H:1
+ c6HH:1.0
+
+
+
+
+ c6H* + H [=] c6** + H2
+
+
+ 1.300000E+11
+ 0.0
+ 7.300000
+
+
+ c6H*:1.0 H:1
+ H2:1 c6**:1.0
+
+
+
+
+ c6** + H [=] c6H*
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ H:1 c6**:1.0
+ c6H*:1.0
+
+
+
+
+ c6*H + H [=] c6** + H2
+
+
+ 4.500000E+03
+ 2.0
+ 5.000000
+
+
+ c6*H:1.0 H:1
+ H2:1 c6**:1.0
+
+
+
+
+ c6** + H [=] c6*H
+
+
+ 1.000000E+10
+ 0.0
+ 0.000000
+
+
+ H:1 c6**:1.0
+ c6*H:1.0
+
+
+
+
+ c6** + CH3 [=] c6*M
+
+
+ 5.000000E+09
+ 0.0
+ 0.000000
+
+
+ CH3:1 c6**:1.0
+ c6*M:1.0
+
+
+
+
+ c6H* [=] c6*H
+
+
+ 1.000000E+08
+ 0.0
+ 0.000000
+
+
+ c6H*:1.0
+ c6*H:1.0
+
+
+
+
+ c6B [=] c6HH + C(d)
+
+
+ 1.000000E+09
+ 0.0
+ 0.000000
+
+
+ c6B:1.0
+ C(d):1 c6HH:1.0
+
+
+
diff --git a/test_problems/diamondSurf_dupl/output_blessed.txt b/test_problems/diamondSurf_dupl/output_blessed.txt
new file mode 100644
index 000000000..a0aab7f4d
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/output_blessed.txt
@@ -0,0 +1,53 @@
+Number of species = 4
+Number of species in diamond = 1
+Number of species in diamond_100 = 8
+Number of reactions = 20
+0 1 -8.95751e-05
+1 2 4.48403e-05
+2 3 -3.51539e-08
+3 4 nil
+4 0 3.51539e-08
+5 2 nil
+6 1 nil
+7 1 nil
+8 0 nil
+9 4 nil
+10 3 nil
+11 3 nil
+12 2 nil
+sum = nil
+growth rate = 0.43183 microns per hour
+Coverages:
+0 c6HH 0.462262
+1 c6H* 0.037052
+2 c6*H 0.474283
+3 c6** 0.0219445
+4 c6HM 0.00174648
+5 c6HM* 2.56272e-05
+6 c6*M 0.00264858
+7 c6B 3.8171e-05
+Number of reactions = 20
+0 1 -8.95751e-05
+1 2 4.48403e-05
+2 3 -3.51539e-08
+3 4 nil
+4 0 3.51539e-08
+5 2 nil
+6 1 nil
+7 1 nil
+8 0 nil
+9 4 nil
+10 3 nil
+11 3 nil
+12 2 nil
+sum = nil
+growth rate = 0.43183 microns per hour
+Coverages:
+0 c6HH 0.462262
+1 c6H* 0.037052
+2 c6*H 0.474283
+3 c6** 0.0219445
+4 c6HM 0.00174648
+5 c6HM* 2.56272e-05
+6 c6*M 0.00264858
+7 c6B 3.8171e-05
diff --git a/test_problems/diamondSurf_dupl/runDiamondDupl.cpp b/test_problems/diamondSurf_dupl/runDiamondDupl.cpp
new file mode 100644
index 000000000..0baa4a529
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/runDiamondDupl.cpp
@@ -0,0 +1,240 @@
+/**
+ * @file runDiamond.cpp
+ *
+ */
+
+// Example
+//
+// Note that this example needs updating. It works fine, but is
+// written in a way that is less than transparent or
+// user-friendly. This could be rewritten using class Interface to
+// make things simpler.
+
+
+#include
+#include
+#include
+#include
+#include
+
+using namespace std;
+
+#ifdef DEBUG_HKM
+int iDebug_HKM = 0;
+#endif
+
+/*****************************************************************/
+/*****************************************************************/
+
+#include "Cantera.h"
+#include "kinetics.h"
+
+
+using namespace Cantera;
+
+void printDbl(double val) {
+ if (fabs(val) < 5.0E-17) {
+ cout << " nil";
+ } else {
+ cout << val;
+ }
+}
+
+int main(int argc, char** argv) {
+ int i, k;
+ string infile = "diamond.xml";
+
+ try {
+ XML_Node *xc = new XML_Node();
+ string path = findInputFile(infile);
+ ctml::get_CTML_Tree(xc, path);
+
+ XML_Node * const xg = xc->findNameID("phase", "gas");
+ ThermoPhase *gasTP = newPhase(*xg);
+ int nsp = gasTP->nSpecies();
+ cout << "Number of species = " << nsp << endl;
+
+ XML_Node * const xd = xc->findNameID("phase", "diamond");
+ ThermoPhase *diamondTP = newPhase(*xd);
+ int nsp_diamond = diamondTP->nSpecies();
+ cout << "Number of species in diamond = " << nsp_diamond << endl;
+
+
+ XML_Node * const xs = xc->findNameID("phase", "diamond_100");
+ ThermoPhase *diamond100TP = newPhase(*xs);
+ //SurfPhase *diamond100TP = new SurfPhase(*xs);
+ int nsp_d100 = diamond100TP->nSpecies();
+ cout << "Number of species in diamond_100 = " << nsp_d100 << endl;
+
+ vector phaseList;
+ phaseList.push_back(gasTP);
+ phaseList.push_back(diamondTP);
+ phaseList.push_back(diamond100TP);
+ InterfaceKinetics *iKin_ptr = new InterfaceKinetics();
+ importKinetics(*xs, phaseList, iKin_ptr);
+ int nr = iKin_ptr->nReactions();
+ cout << "Number of reactions = " << nr << endl;
+
+ double x[20];
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ x[0] = 0.0010;
+ x[1] = 0.9888;
+ x[2] = 0.0002;
+ x[3] = 0.0100;
+ double p = 20.0*OneAtm/760.0;
+
+ gasTP->setState_TPX(1200., p, x);
+
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ int i0 = diamond100TP->speciesIndex("c6H*");
+ x[i0] = 0.1;
+ int i1 = diamond100TP->speciesIndex("c6HH");
+ x[i1] = 0.9;
+ diamond100TP->setState_TX(1200., x);
+
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ x[0] = 1.0;
+ diamondTP->setState_TPX(1200., p, x);
+
+ iKin_ptr->advanceCoverages(100.);
+
+ // Throw some asserts in here to test that they compile
+ AssertTrace(p == p);
+ AssertThrow(p == p, "main");
+ AssertThrowMsg(i == 20, "main", "are you kidding");
+
+ double src[20];
+ for (i = 0; i < 20; i++) src[i] = 0.0;
+ iKin_ptr->getNetProductionRates(src);
+ double sum = 0.0;
+ double naH = 0.0;
+ for (k = 0; k < 13; k++) {
+ if (k < 4) {
+ naH = gasTP->nAtoms(k, 0);
+ } else if (k == 4) {
+ naH = 0;
+ } else if (k > 4) {
+ int itp = k - 5;
+ naH = diamond100TP->nAtoms(itp, 0);
+ }
+ cout << k << " " << naH << " " ;
+ printDbl(src[k]);
+ cout << endl;
+ sum += naH * src[k];
+
+ }
+
+ cout << "sum = ";
+ printDbl(sum);
+ cout << endl;
+ double mwd = diamondTP->molecularWeight(0);
+ double dens = diamondTP->density();
+ double gr = src[4] * mwd / dens;
+ gr *= 1.0E6 * 3600.;
+ cout << "growth rate = " << gr << " microns per hour" << endl;
+
+
+ diamond100TP->getMoleFractions(x);
+ cout << "Coverages:" << endl;
+ for (k = 0; k < 8; k++) {
+ cout << k << " " << diamond100TP->speciesName(k)
+ << " "
+ << x[k] << endl;
+ }
+
+
+ /*********************************************************************************/
+ /*
+ * OK NOW DUPLICATE EVERYTHING AND RECALCULATE
+ */
+ ThermoPhase *gasTP_dupl = gasTP->duplMyselfAsThermoPhase();
+ ThermoPhase *diamondTP_dupl = diamondTP->duplMyselfAsThermoPhase();
+ ThermoPhase *diamond100TP_dupl = diamond100TP->duplMyselfAsThermoPhase();
+
+
+ vector phaseList_dupl;
+ phaseList_dupl.push_back(gasTP_dupl);
+ phaseList_dupl.push_back(diamondTP_dupl);
+ phaseList_dupl.push_back(diamond100TP_dupl);
+ InterfaceKinetics *iKin_ptr_dupl = new InterfaceKinetics();
+ importKinetics(*xs, phaseList_dupl, iKin_ptr_dupl);
+ int nr_dupl = iKin_ptr_dupl->nReactions();
+ cout << "Number of reactions = " << nr_dupl << endl;
+
+
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ x[0] = 0.0010;
+ x[1] = 0.9888;
+ x[2] = 0.0002;
+ x[3] = 0.0100;
+ p = 20.0*OneAtm/760.0;
+
+ gasTP_dupl->setState_TPX(1200., p, x);
+
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ i0 = diamond100TP_dupl->speciesIndex("c6H*");
+ x[i0] = 0.1;
+ i1 = diamond100TP_dupl->speciesIndex("c6HH");
+ x[i1] = 0.9;
+ diamond100TP_dupl->setState_TX(1200., x);
+
+ for (i = 0; i < 20; i++) x[i] = 0.0;
+ x[0] = 1.0;
+ diamondTP_dupl->setState_TPX(1200., p, x);
+
+ iKin_ptr_dupl->advanceCoverages(100.);
+
+ // Throw some asserts in here to test that they compile
+ AssertTrace(p == p);
+ AssertThrow(p == p, "main");
+ AssertThrowMsg(i == 20, "main", "are you kidding");
+
+
+ for (i = 0; i < 20; i++) src[i] = 0.0;
+ iKin_ptr_dupl->getNetProductionRates(src);
+ sum = 0.0;
+ naH = 0.0;
+ for (k = 0; k < 13; k++) {
+ if (k < 4) {
+ naH = gasTP_dupl->nAtoms(k, 0);
+ } else if (k == 4) {
+ naH = 0;
+ } else if (k > 4) {
+ int itp = k - 5;
+ naH = diamond100TP_dupl->nAtoms(itp, 0);
+ }
+ cout << k << " " << naH << " " ;
+ printDbl(src[k]);
+ cout << endl;
+ sum += naH * src[k];
+
+ }
+
+ cout << "sum = ";
+ printDbl(sum);
+ cout << endl;
+ mwd = diamondTP_dupl->molecularWeight(0);
+ dens = diamondTP_dupl->density();
+ gr = src[4] * mwd / dens;
+ gr *= 1.0E6 * 3600.;
+ cout << "growth rate = " << gr << " microns per hour" << endl;
+
+
+ diamond100TP_dupl->getMoleFractions(x);
+ cout << "Coverages:" << endl;
+ for (k = 0; k < 8; k++) {
+ cout << k << " " << diamond100TP_dupl->speciesName(k)
+ << " "
+ << x[k] << endl;
+ }
+
+
+
+ }
+ catch (CanteraError) {
+ showErrors(cout);
+ }
+
+ return 0;
+}
+/***********************************************************/
diff --git a/test_problems/diamondSurf_dupl/runtest b/test_problems/diamondSurf_dupl/runtest
new file mode 100755
index 000000000..5efc713c6
--- /dev/null
+++ b/test_problems/diamondSurf_dupl/runtest
@@ -0,0 +1,35 @@
+#!/bin/sh
+#
+#
+
+temp_success="1"
+/bin/rm -f output.txt outputa.txt diff_test.txt
+tname="diamondSurf_dupl"
+
+#################################################################
+#
+#################################################################
+CANTERA_DATA=${CANTERA_DATA:=../../data/inputs}; export CANTERA_DATA
+
+CANTERA_BIN=${CANTERA_BIN:=../../bin}
+./runDiamondDupl > output.txt
+retnStat=$?
+if [ $retnStat != "0" ]
+then
+ temp_success="0"
+ echo "runDiamond ($tname test) returned with bad status, $retnStat, check output"
+fi
+
+../../bin/exp3to2.sh output.txt > outputa.txt
+diff -w outputa.txt output_blessed.txt > diff_test.txt
+retnStat=$?
+if [ $retnStat = "0" ]
+then
+ echo "successful diff comparison on $tname test"
+else
+ echo "unsuccessful diff comparison on $tname test"
+ echo "FAILED" > csvCode.txt
+ temp_success="0"
+fi
+
+