diff --git a/test_problems/Makefile.in b/test_problems/Makefile.in
index 4117f4b51..654d8eec4 100644
--- a/test_problems/Makefile.in
+++ b/test_problems/Makefile.in
@@ -13,6 +13,12 @@ all:
cd surfkin; @MAKE@ all
cd fracCoeff; @MAKE@ all
cd diamondSurf; @MAKE@ all
+ifeq ($(test_python),1)
+ cd min_python; @MAKE@ all
+endif
+ifeq ($(test_python),2)
+ cd min_python; @MAKE@ all
+endif
ifeq ($(test_ck),1)
cd ck2cti_test; @MAKE@ all
endif
@@ -28,7 +34,11 @@ test:
ifeq ($(test_ck),1)
cd ck2cti_test; @MAKE@ test
endif
+ifeq ($(test_python),1)
+ cd min_python; @MAKE@ test
+endif
ifeq ($(test_python),2)
+ cd min_python; @MAKE@ test
cd python; @MAKE@ test
endif
ifeq ($(test_cathermo),1)
diff --git a/test_problems/min_python/.cvsignore b/test_problems/min_python/.cvsignore
new file mode 100644
index 000000000..f3c7a7c5d
--- /dev/null
+++ b/test_problems/min_python/.cvsignore
@@ -0,0 +1 @@
+Makefile
diff --git a/test_problems/min_python/Makefile.in b/test_problems/min_python/Makefile.in
new file mode 100644
index 000000000..717376d12
--- /dev/null
+++ b/test_problems/min_python/Makefile.in
@@ -0,0 +1,22 @@
+#
+# $Revision$
+# $Author$
+# $Date$
+#
+#
+test_python=@BUILD_PYTHON@
+test_ck=@BUILD_CK@
+test_cathermo=@NEED_CATHERMO@
+
+all:
+ cd minDiamond; @MAKE@ all
+
+test:
+ cd minDiamond; @MAKE@ test
+
+clean:
+ $(RM) *.*~
+ cd minDiamond; @MAKE@ clean
+
+depends:
+ cd minDiamond; @MAKE@ depends
diff --git a/test_problems/min_python/minDiamond/.cvsignore b/test_problems/min_python/minDiamond/.cvsignore
new file mode 100644
index 000000000..a3f944249
--- /dev/null
+++ b/test_problems/min_python/minDiamond/.cvsignore
@@ -0,0 +1,17 @@
+Makefile
+csvCode.txt
+diff_test.out
+output.txt
+runDiamond
+ct2ctml.log
+diamond.xml
+xml_diff_test.out
+.depends
+*.d
+.cttmp.py
+runDiamond.ilk
+diamondSurf.pdb
+diamonda.xml
+outputa.txt
+test.xml
+SunWS_cache
diff --git a/test_problems/min_python/minDiamond/Makefile.in b/test_problems/min_python/minDiamond/Makefile.in
new file mode 100644
index 000000000..3ce3e9edf
--- /dev/null
+++ b/test_problems/min_python/minDiamond/Makefile.in
@@ -0,0 +1,113 @@
+#!/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 = runDiamond
+
+# the object files to be linked together. List those generated from Fortran
+# and from C/C++ separately
+OBJS = runDiamond.o
+
+# 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
+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_FLAGS)
+
+# How to compile the dependency file
+.cpp.d:
+ g++ -MM -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)/libcantera.a
+ $(CXX) -o $(PROGRAM) $(OBJS) $(LCXX_FLAGS) $(LINK_OPTIONS) \
+ $(CANTERA_LIBS) @LIBS@ $(FORT_LIBS) \
+ $(LCXX_END_LIBS)
+
+# 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@ $(PROGRAM)
+endif
+ ./runtest
+
+# clean target -> clean up
+clean:
+ $(RM) $(OBJS) $(PROGRAM) $(DEPENDS) .depends diamond.xml
+ ../../../bin/rm_cvsignore
+ (if test -d SunWS_cache ; then \
+ $(RM) -rf SunWS_cache ; \
+ fi )
+
diff --git a/test_problems/min_python/minDiamond/diamond.cti b/test_problems/min_python/minDiamond/diamond.cti
new file mode 100644
index 000000000..2cb6cb0d2
--- /dev/null
+++ b/test_problems/min_python/minDiamond/diamond.cti
@@ -0,0 +1,109 @@
+
+# Trough mechanism from 'S. J. Harris and D. G. Goodwin, 'Growth on
+# the reconstructed diamond (100) surface, 'J. Phys. Chem. vo. 97,
+# 23-28 (1993). reactions a - t are taken directly from Table II,
+# with thermochemistry from Table IV. Reaction u is added here.
+
+
+units(length = 'cm', quantity = 'mol', act_energy = 'kcal/mol')
+
+#------------- the gas -------------------------------------
+
+ideal_gas(name = 'gas',
+ elements = 'H C',
+ species = 'gri30: H H2 CH3 CH4',
+ initial_state = state(temperature = 1200.0,
+ pressure = 20.0*OneAtm/760.0,
+ mole_fractions = 'H:0.002, H2:0.988, CH3:0.0002, CH4:0.01'))
+
+
+#------------- bulk diamond -------------------------------------
+
+stoichiometric_solid(name = 'diamond',
+ elements = 'H C',
+ density = (3.52, 'g/cm3'),
+ species = 'C(d)')
+
+species(name = 'C(d)',
+ atoms = 'C:1') #no thermo needed (rxn is ireversible)
+
+
+#------------- the diamond surface -------------------------------------
+
+ideal_interface(name = 'diamond_100',
+ elements = ' H C ',
+ species = 'c6HH c6H* c6*H c6** c6HM c6HM* c6*M c6B',
+ reactions = 'all',
+ phases = 'gas diamond',
+ site_density = (3.0E-9, 'mol/cm2'),
+ initial_state = state(temperature= 1200.0,
+ coverages = 'c6H*:0.1, c6HH:0.9'))
+
+
+species(name = 'c6H*',
+ atoms = 'H:1',
+ thermo = const_cp(h0 = (51.7, 'kcal/mol'),
+ s0 = (19.5, 'cal/mol/K') ) )
+
+species(name = 'c6*H',
+ atoms = 'H:1',
+ thermo = const_cp(h0 = (46.1, 'kcal/mol'),
+ s0 = (19.9, 'cal/mol/K') ) )
+
+species(name = 'c6HH',
+ atoms = 'H:2',
+ thermo = const_cp(h0 = (11.4, 'kcal/mol'),
+ s0 = (21.0, 'cal/mol/K') ) )
+
+species(name = 'c6HM',
+ atoms = 'C:1 H:4',
+ thermo = const_cp(h0 = (26.9, 'kcal/mol'),
+ s0 = (40.3, 'cal/mol/K') ) )
+
+species(name = 'c6HM*',
+ atoms = 'C:1 H:3',
+ thermo = const_cp(h0 = (65.8, 'kcal/mol'),
+ s0 = (40.1, 'cal/mol/K') ) )
+
+species(name = 'c6*M',
+ atoms = 'C:1 H:3',
+ thermo = const_cp(h0 = (53.3, 'kcal/mol'),
+ s0 = (38.9, 'cal/mol/K') ) )
+
+species(name = 'c6**',
+ atoms = 'C:0',
+ thermo = const_cp(h0 = (90.0, 'kcal/mol'),
+ s0 = (18.4, 'cal/mol/K') ) )
+
+species(name = 'c6B',
+ atoms = 'H:2 C:1',
+ thermo = const_cp(h0 = (40.9, 'kcal/mol'),
+ s0 = (26.9, 'cal/mol/K') ) )
+
+
+
+surface_reaction( 'c6HH + H <=> c6H* + H2', [1.3E14, 0.0, 7.3]) #a
+surface_reaction( 'c6H* + H <=> c6HH', [1.0E13, 0.0, 0.0]) #b
+surface_reaction( 'c6H* + CH3 <=> c6HM', [5.0E12, 0.0, 0.0]) #c
+surface_reaction( 'c6HM + H <=> c6*M + H2', [1.3E14, 0.0, 7.3]) #d
+surface_reaction( 'c6*M + H <=> c6HM', [1.0E13, 0.0, 0.0]) #e
+surface_reaction( 'c6HM + H <=> c6HM* + H2', [2.8E7, 0.0, 7.7]) #f
+surface_reaction( 'c6HM* + H <=> c6HM', [1.0E13, 0.0, 0.0]) #g
+surface_reaction( 'c6HM* <=> c6*M', [1.0E8, 0.0, 0.0]) #h
+surface_reaction( 'c6HM* + H <=> c6H* + CH3', [3.0E13, 0.0, 0.0]) #i
+surface_reaction( 'c6HM* + H <=> c6B + H2', [1.3E14, 0.0, 7.3]) #k
+surface_reaction( 'c6*M + H <=> c6B + H2', [2.8E7, 2.0, 7.7]) #l
+surface_reaction( 'c6HH + H <=> c6*H + H2', [1.3E14, 0.0, 7.3]) #m
+surface_reaction( 'c6*H + H <=> c6HH', [1.0E13, 0.0, 0.0]) #m
+surface_reaction( 'c6H* + H <=> c6** + H2', [1.3E14, 0.0, 7.3]) #o
+surface_reaction( 'c6** + H <=> c6H*', [1.0E13, 0.0, 0.0]) #p
+surface_reaction( 'c6*H + H <=> c6** + H2', [4.5E6, 2.0, 5.0]) #q
+surface_reaction( 'c6** + H <=> c6*H', [1.0E13, 0.0, 0.0]) #r
+surface_reaction( 'c6** + CH3 <=> c6*M', [5.0E12, 0.0, 0.0]) #s
+surface_reaction( 'c6H* <=> c6*H', [1.0E8, 0.0, 0.0]) #t
+
+# reaction to add new carbon atom to bulk and regenerate a new site
+#
+surface_reaction( 'c6B <=> c6HH + C(d)', [1.0E9, 0.0, 0.0]) #u
+
+
diff --git a/test_problems/min_python/minDiamond/diamond_blessed.xml b/test_problems/min_python/minDiamond/diamond_blessed.xml
new file mode 100644
index 000000000..812d61a8a
--- /dev/null
+++ b/test_problems/min_python/minDiamond/diamond_blessed.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/min_python/minDiamond/runDiamond.cpp b/test_problems/min_python/minDiamond/runDiamond.cpp
new file mode 100644
index 000000000..294959dfc
--- /dev/null
+++ b/test_problems/min_python/minDiamond/runDiamond.cpp
@@ -0,0 +1,164 @@
+/**
+ * @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
+
+/*****************************************************************/
+/*****************************************************************/
+/*****************************************************************/
+static void printUsage()
+{
+
+}
+
+#ifdef SRCDIRTREE
+#include "ct_defs.h"
+#include "ctml.h"
+#include "GasKinetics.h"
+#include "importCTML.h"
+#include "ThermoPhase.h"
+#include "InterfaceKinetics.h"
+#else
+#include "Cantera.h"
+#include "kernel/ct_defs.h"
+#include "kernel/ctml.h"
+#include "kernel/GasKinetics.h"
+#include "kernel/importCTML.h"
+#include "kernel/ThermoPhase.h"
+#include "kernel/InterfaceKinetics.h"
+#endif
+
+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.cti";
+
+ 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);
+ 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.);
+
+
+ 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;
+ }
+ }
+ catch (CanteraError) {
+ showErrors(cout);
+ }
+
+ return 0;
+}
+/***********************************************************/
diff --git a/test_problems/min_python/minDiamond/runDiamond_blessed.out b/test_problems/min_python/minDiamond/runDiamond_blessed.out
new file mode 100644
index 000000000..99d1b45ac
--- /dev/null
+++ b/test_problems/min_python/minDiamond/runDiamond_blessed.out
@@ -0,0 +1,28 @@
+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
diff --git a/test_problems/min_python/minDiamond/run_diamond.py b/test_problems/min_python/minDiamond/run_diamond.py
new file mode 100644
index 000000000..802d5add5
--- /dev/null
+++ b/test_problems/min_python/minDiamond/run_diamond.py
@@ -0,0 +1,25 @@
+from Cantera import *
+# import the bulk phases
+g, dbulk = importPhases('diamond.cti', ['gas','diamond'])
+
+# import the interface
+d = importInterface('diamond.cti', 'diamond_100', phases = [g, dbulk])
+
+mw = dbulk.molarMasses()[0] #mol. wt. of carbin
+
+t = g.temperature()
+p = g.pressure()
+x = g.moleFractions()
+ih = g.speciesIndex('H')
+
+f = open('d.csv', 'w')
+for n in range (20):
+ x[ih] /= 1.4
+ g.setState_TPX(t, p, x)
+ # integrate the coverage equations to steady state
+ d.advanceCoverages(100.0)
+ cdot = d.netProductionRates(phase = dbulk) [0] #net rate of C(d production /m^2
+ mdot = mw * cdot
+ linear_rate = mdot/dbulk.density()
+ writeCSV(f, [x[ih], rate]+list(d.coverages()))
+f.close()
diff --git a/test_problems/min_python/minDiamond/runtest b/test_problems/min_python/minDiamond/runtest
new file mode 100755
index 000000000..0619bbc2c
--- /dev/null
+++ b/test_problems/min_python/minDiamond/runtest
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+#
+
+temp_success="1"
+/bin/rm -f output.txt outputa.txt diamond.xml diamonda.xml
+
+#################################################################
+#
+#################################################################
+CANTERA_DATA=${CANTERA_DATA:=../../data/inputs}; export CANTERA_DATA
+
+CANTERA_BIN=${CANTERA_BIN:=../../bin}
+./runDiamond > output.txt
+retnStat=$?
+if [ $retnStat != "0" ]
+then
+ temp_success="0"
+ echo "runDiamond returned with bad status, $retnStat, check output"
+fi
+
+../../../bin/exp3to2.sh output.txt > outputa.txt
+diff -w outputa.txt runDiamond_blessed.out > diff_test.out
+retnStat=$?
+if [ $retnStat = "0" ]
+then
+ echo "successful diff comparison on diamond test"
+else
+ echo "unsuccessful diff comparison on diamond test"
+ echo "FAILED" > csvCode.txt
+ temp_success="0"
+fi
+
+../../../bin/exp3to2.sh diamond.xml > diamonda.xml
+diff -w diamonda.xml diamond_blessed.xml > xml_diff_test.out
+retnStat=$?
+if [ $retnStat = "0" ]
+then
+ echo "successful diff comparison on diamond.xml test"
+else
+ echo "unsuccessful diff comparison on diamond.xml test"
+ echo "FAILED" > csvCode.txt
+ temp_success="0"
+fi
+
+
diff --git a/test_problems/min_python/minDiamond/tdia_a.py b/test_problems/min_python/minDiamond/tdia_a.py
new file mode 100755
index 000000000..23df6bc1b
--- /dev/null
+++ b/test_problems/min_python/minDiamond/tdia_a.py
@@ -0,0 +1,31 @@
+from Cantera import *
+import math
+
+g, dbulk = importPhases('diamond.cti',['gas','diamond'])
+
+d = importInterface('diamond.cti','diamond_100',phases = [g, dbulk])
+ns = d.nSpecies()
+mw = dbulk.molarMasses()[0]
+
+t = 1200.0
+x = g.moleFractions()
+p = 20.0*OneAtm/760.0
+g.setState_TPX(t, p, x)
+ih = g.speciesIndex('H')
+
+xh0 = x[ih]
+f = open('d.csv','w')
+#writeCSV(f, ['H mole Fraction', 'Rate']+d.speciesNames())
+for n in range(20):
+ x[ih] /= 1.4
+ g.setState_TPX(t, p, x)
+ d.advanceCoverages(10.0)
+ cdot = d.netProductionRates(phase = dbulk)[0]
+ mdot = mw*cdot
+ rate = mdot/dbulk.density()
+ print x[ih], rate*1.0e6*3600.0
+ writeCSV(f,[x[ih],rate]+list(d.coverages()))
+f.close()
+
+
+