Added a test problem for the duplication of common ThermoPhase
objects like IdealGasPhase and SurfPhase.
This commit is contained in:
parent
410dd699da
commit
084ac7aa53
11 changed files with 931 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -5,3 +5,4 @@ DH_graph_1.d
|
|||
DH_graph_1.log
|
||||
Makefile
|
||||
output.txt
|
||||
csvCode.txt
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ DH_graph_1.d
|
|||
DH_graph_1.log
|
||||
Makefile
|
||||
output.txt
|
||||
|
||||
csvCode.txt
|
||||
|
|
|
|||
|
|
@ -5,3 +5,4 @@ DH_graph_1.d
|
|||
DH_graph_1.log
|
||||
Makefile
|
||||
output.txt
|
||||
csvCode.txt
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
18
test_problems/diamondSurf_dupl/.cvsignore
Normal file
18
test_problems/diamondSurf_dupl/.cvsignore
Normal file
|
|
@ -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
|
||||
122
test_problems/diamondSurf_dupl/Makefile.in
Normal file
122
test_problems/diamondSurf_dupl/Makefile.in
Normal file
|
|
@ -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
|
||||
|
||||
|
||||
449
test_problems/diamondSurf_dupl/diamond.xml
Normal file
449
test_problems/diamondSurf_dupl/diamond.xml
Normal file
|
|
@ -0,0 +1,449 @@
|
|||
<?xml version="1.0"?>
|
||||
<ctml>
|
||||
<validate reactions="yes" species="yes"/>
|
||||
|
||||
<!-- phase gas -->
|
||||
<phase dim="3" id="gas">
|
||||
<elementArray datasrc="elements.xml">H C</elementArray>
|
||||
<speciesArray datasrc="gri30.xml#species_data">H H2 CH3 CH4</speciesArray>
|
||||
<state>
|
||||
<temperature units="K">1200.0</temperature>
|
||||
<pressure units="Pa">2666.4473684210525</pressure>
|
||||
<moleFractions>H:0.002, H2:0.988, CH3:0.0002, CH4:0.01</moleFractions>
|
||||
</state>
|
||||
<thermo model="IdealGas"/>
|
||||
<kinetics model="GasKinetics"/>
|
||||
<transport model="None"/>
|
||||
</phase>
|
||||
|
||||
<!-- phase diamond -->
|
||||
<phase dim="3" id="diamond">
|
||||
<elementArray datasrc="elements.xml">H C</elementArray>
|
||||
<speciesArray datasrc="#species_data">C(d)</speciesArray>
|
||||
<thermo model="StoichSubstance">
|
||||
<density units="g/cm3">3.52</density>
|
||||
</thermo>
|
||||
<transport model="None"/>
|
||||
<kinetics model="none"/>
|
||||
</phase>
|
||||
|
||||
<!-- phase diamond_100 -->
|
||||
<phase dim="2" id="diamond_100">
|
||||
<elementArray datasrc="elements.xml">H C </elementArray>
|
||||
<speciesArray datasrc="#species_data">c6HH c6H* c6*H c6** c6HM c6HM* c6*M c6B</speciesArray>
|
||||
<reactionArray datasrc="#reaction_data"/>
|
||||
<state>
|
||||
<temperature units="K">1200.0</temperature>
|
||||
<coverages>c6H*:0.1, c6HH:0.9</coverages>
|
||||
</state>
|
||||
<thermo model="Surface">
|
||||
<site_density units="mol/cm2">3e-09</site_density>
|
||||
</thermo>
|
||||
<kinetics model="Interface"/>
|
||||
<transport model="None"/>
|
||||
<phaseArray>gas diamond</phaseArray>
|
||||
</phase>
|
||||
|
||||
<!-- species definitions -->
|
||||
<speciesData id="species_data">
|
||||
|
||||
<!-- species C(d) -->
|
||||
<species name="C(d)">
|
||||
<atomArray>C:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="J/mol">0.0</h0>
|
||||
<s0 units="J/mol/K">0.0</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6H* -->
|
||||
<species name="c6H*">
|
||||
<atomArray>H:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">51.700000000000003</h0>
|
||||
<s0 units="cal/mol/K">19.5</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6*H -->
|
||||
<species name="c6*H">
|
||||
<atomArray>H:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">46.100000000000001</h0>
|
||||
<s0 units="cal/mol/K">19.899999999999999</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6HH -->
|
||||
<species name="c6HH">
|
||||
<atomArray>H:2 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">11.4</h0>
|
||||
<s0 units="cal/mol/K">21.0</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6HM -->
|
||||
<species name="c6HM">
|
||||
<atomArray>H:4 C:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">26.899999999999999</h0>
|
||||
<s0 units="cal/mol/K">40.299999999999997</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6HM* -->
|
||||
<species name="c6HM*">
|
||||
<atomArray>H:3 C:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">65.799999999999997</h0>
|
||||
<s0 units="cal/mol/K">40.100000000000001</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6*M -->
|
||||
<species name="c6*M">
|
||||
<atomArray>H:3 C:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">53.299999999999997</h0>
|
||||
<s0 units="cal/mol/K">38.899999999999999</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6** -->
|
||||
<species name="c6**">
|
||||
<atomArray>C:0 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">90.0</h0>
|
||||
<s0 units="cal/mol/K">18.399999999999999</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
|
||||
<!-- species c6B -->
|
||||
<species name="c6B">
|
||||
<atomArray>H:2 C:1 </atomArray>
|
||||
<thermo>
|
||||
<const_cp Tmax="5000.0" Tmin="100.0">
|
||||
<t0 units="K">298.14999999999998</t0>
|
||||
<h0 units="kcal/mol">40.899999999999999</h0>
|
||||
<s0 units="cal/mol/K">26.899999999999999</s0>
|
||||
<cp0 units="J/mol/K">0.0</cp0>
|
||||
</const_cp>
|
||||
</thermo>
|
||||
</species>
|
||||
</speciesData>
|
||||
<reactionData id="reaction_data">
|
||||
|
||||
<!-- reaction 0001 -->
|
||||
<reaction reversible="yes" type="surface" id="0001">
|
||||
<equation>c6HH + H [=] c6H* + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.300000E+11</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.300000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6HH:1.0</reactants>
|
||||
<products>H2:1 c6H*:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0002 -->
|
||||
<reaction reversible="yes" type="surface" id="0002">
|
||||
<equation>c6H* + H [=] c6HH</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6H*:1.0 H:1</reactants>
|
||||
<products>c6HH:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0003 -->
|
||||
<reaction reversible="yes" type="surface" id="0003">
|
||||
<equation>c6H* + CH3 [=] c6HM</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>5.000000E+09</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6H*:1.0 CH3:1</reactants>
|
||||
<products>c6HM:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0004 -->
|
||||
<reaction reversible="yes" type="surface" id="0004">
|
||||
<equation>c6HM + H [=] c6*M + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.300000E+11</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.300000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6HM:1.0</reactants>
|
||||
<products>H2:1 c6*M:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0005 -->
|
||||
<reaction reversible="yes" type="surface" id="0005">
|
||||
<equation>c6*M + H [=] c6HM</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6*M:1.0</reactants>
|
||||
<products>c6HM:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0006 -->
|
||||
<reaction reversible="yes" type="surface" id="0006">
|
||||
<equation>c6HM + H [=] c6HM* + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>2.800000E+04</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.700000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6HM:1.0</reactants>
|
||||
<products>H2:1 c6HM*:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0007 -->
|
||||
<reaction reversible="yes" type="surface" id="0007">
|
||||
<equation>c6HM* + H [=] c6HM</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6HM*:1.0 H:1</reactants>
|
||||
<products>c6HM:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0008 -->
|
||||
<reaction reversible="yes" type="surface" id="0008">
|
||||
<equation>c6HM* [=] c6*M</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+08</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6HM*:1.0</reactants>
|
||||
<products>c6*M:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0009 -->
|
||||
<reaction reversible="yes" type="surface" id="0009">
|
||||
<equation>c6HM* + H [=] c6H* + CH3</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>3.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6HM*:1.0 H:1</reactants>
|
||||
<products>c6H*:1.0 CH3:1</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0010 -->
|
||||
<reaction reversible="yes" type="surface" id="0010">
|
||||
<equation>c6HM* + H [=] c6B + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.300000E+11</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.300000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6HM*:1.0 H:1</reactants>
|
||||
<products>H2:1 c6B:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0011 -->
|
||||
<reaction reversible="yes" type="surface" id="0011">
|
||||
<equation>c6*M + H [=] c6B + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>2.800000E+04</A>
|
||||
<b>2.0</b>
|
||||
<E units="kcal/mol">7.700000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6*M:1.0</reactants>
|
||||
<products>H2:1 c6B:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0012 -->
|
||||
<reaction reversible="yes" type="surface" id="0012">
|
||||
<equation>c6HH + H [=] c6*H + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.300000E+11</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.300000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6HH:1.0</reactants>
|
||||
<products>H2:1 c6*H:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0013 -->
|
||||
<reaction reversible="yes" type="surface" id="0013">
|
||||
<equation>c6*H + H [=] c6HH</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6*H:1.0 H:1</reactants>
|
||||
<products>c6HH:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0014 -->
|
||||
<reaction reversible="yes" type="surface" id="0014">
|
||||
<equation>c6H* + H [=] c6** + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.300000E+11</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">7.300000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6H*:1.0 H:1</reactants>
|
||||
<products>H2:1 c6**:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0015 -->
|
||||
<reaction reversible="yes" type="surface" id="0015">
|
||||
<equation>c6** + H [=] c6H*</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6**:1.0</reactants>
|
||||
<products>c6H*:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0016 -->
|
||||
<reaction reversible="yes" type="surface" id="0016">
|
||||
<equation>c6*H + H [=] c6** + H2</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>4.500000E+03</A>
|
||||
<b>2.0</b>
|
||||
<E units="kcal/mol">5.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6*H:1.0 H:1</reactants>
|
||||
<products>H2:1 c6**:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0017 -->
|
||||
<reaction reversible="yes" type="surface" id="0017">
|
||||
<equation>c6** + H [=] c6*H</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+10</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>H:1 c6**:1.0</reactants>
|
||||
<products>c6*H:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0018 -->
|
||||
<reaction reversible="yes" type="surface" id="0018">
|
||||
<equation>c6** + CH3 [=] c6*M</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>5.000000E+09</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>CH3:1 c6**:1.0</reactants>
|
||||
<products>c6*M:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0019 -->
|
||||
<reaction reversible="yes" type="surface" id="0019">
|
||||
<equation>c6H* [=] c6*H</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+08</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6H*:1.0</reactants>
|
||||
<products>c6*H:1.0</products>
|
||||
</reaction>
|
||||
|
||||
<!-- reaction 0020 -->
|
||||
<reaction reversible="yes" type="surface" id="0020">
|
||||
<equation>c6B [=] c6HH + C(d)</equation>
|
||||
<rateCoeff>
|
||||
<Arrhenius>
|
||||
<A>1.000000E+09</A>
|
||||
<b>0.0</b>
|
||||
<E units="kcal/mol">0.000000</E>
|
||||
</Arrhenius>
|
||||
</rateCoeff>
|
||||
<reactants>c6B:1.0</reactants>
|
||||
<products>C(d):1 c6HH:1.0</products>
|
||||
</reaction>
|
||||
</reactionData>
|
||||
</ctml>
|
||||
53
test_problems/diamondSurf_dupl/output_blessed.txt
Normal file
53
test_problems/diamondSurf_dupl/output_blessed.txt
Normal file
|
|
@ -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
|
||||
240
test_problems/diamondSurf_dupl/runDiamondDupl.cpp
Normal file
240
test_problems/diamondSurf_dupl/runDiamondDupl.cpp
Normal file
|
|
@ -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 <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <iomanip>
|
||||
|
||||
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<ThermoPhase *> 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<ThermoPhase *> 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;
|
||||
}
|
||||
/***********************************************************/
|
||||
35
test_problems/diamondSurf_dupl/runtest
Executable file
35
test_problems/diamondSurf_dupl/runtest
Executable file
|
|
@ -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
|
||||
|
||||
|
||||
Loading…
Add table
Reference in a new issue