From 9bd690ae048fda59c5dda0cabb55d904708bf5a3 Mon Sep 17 00:00:00 2001 From: Dave Goodwin Date: Sat, 18 Jun 2005 16:58:39 +0000 Subject: [PATCH] Prerelease_1_6_0_branch merged into trunk --- .cvsignore | 1 - Cantera/Makefile.in | 4 - Cantera/clib/src/Cabinet.h | 7 +- Cantera/clib/src/Makefile.in | 25 +- Cantera/clib/src/Storage.cpp | 10 +- Cantera/clib/src/ct.cpp | 64 +- Cantera/clib/src/ct.h | 13 +- Cantera/clib/src/ctfunc.cpp | 2 +- Cantera/clib/src/ctmultiphase.cpp | 18 +- Cantera/clib/src/ctmultiphase.h | 5 +- Cantera/clib/src/ctonedim.cpp | 33 +- Cantera/clib/src/ctonedim.h | 4 +- Cantera/clib/src/ctreactor.cpp | 10 +- Cantera/clib/src/ctrpath.cpp | 8 +- Cantera/clib/src/ctxml.cpp | 2 +- Cantera/cxx/Makefile.in | 22 +- Cantera/cxx/demos/Makefile.in | 9 +- Cantera/cxx/demos/flamespeed.cpp | 23 +- Cantera/cxx/demos/kinetics1.cpp | 1 + Cantera/cxx/demos/rankine.cpp | 1 + Cantera/cxx/include/Cantera.h | 4 + Cantera/cxx/include/equilibrium.h | 8 +- Cantera/cxx/include/importPhase.h | 18 + Cantera/cxx/include/integrators.h | 4 + Cantera/cxx/include/onedim.h | 1 + Cantera/cxx/include/transport.h | 8 + Cantera/cxx/include/zerodim.h | 3 +- Cantera/cxx/src/cxxutils.cpp | 5 + Cantera/fortran/src/cantera_kinetics.f90 | 3 +- Cantera/fortran/src/cantera_thermo.f90 | 2 + Cantera/matlab/Makefile.in | 22 +- .../matlab/cantera/1D/@Domain1D/Domain1D.m | 14 +- .../1D/@Domain1D/private/domain_methods.m | 2 + Cantera/matlab/cantera/@Mixture/Mixture.m | 61 + Cantera/matlab/cantera/@Mixture/addPhase.m | 21 + .../matlab/cantera/@Mixture/chemPotentials.m | 3 + Cantera/matlab/cantera/@Mixture/display.m | 8 + .../matlab/cantera/@Mixture/elementIndex.m | 5 + Cantera/matlab/cantera/@Mixture/equilibrate.m | 70 + Cantera/matlab/cantera/@Mixture/mix_hndl.m | 6 + Cantera/matlab/cantera/@Mixture/nElements.m | 5 + Cantera/matlab/cantera/@Mixture/nPhases.m | 5 + Cantera/matlab/cantera/@Mixture/nSpecies.m | 5 + Cantera/matlab/cantera/@Mixture/phaseMoles.m | 15 + Cantera/matlab/cantera/@Mixture/pressure.m | 5 + .../cantera/@Mixture/private/mixturemethods.m | 17 + .../matlab/cantera/@Mixture/setPhaseMoles.m | 7 + Cantera/matlab/cantera/@Mixture/setPressure.m | 6 + .../matlab/cantera/@Mixture/setSpeciesMoles.m | 12 + .../matlab/cantera/@Mixture/setTemperature.m | 6 + .../matlab/cantera/@Mixture/speciesIndex.m | 5 + Cantera/matlab/cantera/@Mixture/temperature.m | 5 + Cantera/matlab/cantera/@Reactor/mass.m | 2 +- Cantera/matlab/cantera/@Reactor/setEnergy.m | 8 +- Cantera/matlab/cantera/@Solution/display.m | 22 - Cantera/matlab/cantera/@ThermoPhase/display.m | 3 + .../matlab/cantera/@ThermoPhase/equilibrate.m | 41 +- Cantera/matlab/cantera/@ThermoPhase/name.m | 6 + .../cantera/@ThermoPhase/private/thermo_set.m | 10 +- Cantera/matlab/cantera/@ThermoPhase/setName.m | 9 + Cantera/matlab/cantera/buildwin.m | 3 + Cantera/matlab/cantera/ck2cti.m | 31 +- Cantera/matlab/cantera/examples/catcomb.m | 4 +- Cantera/matlab/cantera/examples/flame1.m | 4 +- Cantera/matlab/cantera/examples/ignite.m | 6 +- Cantera/matlab/cantera/examples/ignite2.m | 4 +- Cantera/matlab/cantera/examples/ignite3.m | 6 +- Cantera/matlab/cantera/examples/ignite_hp.m | 4 +- Cantera/matlab/cantera/examples/ignite_uv.m | 4 +- .../matlab/cantera/examples/test_examples.m | 12 + .../matlab/cantera/private/ctfunctions.cpp | 9 +- Cantera/matlab/cantera/private/ctmatutils.h | 13 +- Cantera/matlab/cantera/private/ctmethods.cpp | 8 +- .../matlab/cantera/private/mixturemethods.cpp | 173 + .../matlab/cantera/private/onedimmethods.cpp | 13 +- .../matlab/cantera/private/phasemethods.cpp | 14 +- .../matlab/cantera/private/thermomethods.cpp | 14 +- Cantera/matlab/cantera/private/write.cpp | 2 +- Cantera/matlab/cantera/tutorial/tut1.m | 221 +- Cantera/matlab/cantera/tutorial/tut4.m | 15 +- Cantera/matlab/setup_matlab.py.in | 3 +- Cantera/python/Cantera/Kinetics.py | 15 +- Cantera/python/Cantera/OneD/BurnerFlame.py | 2 +- Cantera/python/Cantera/OneD/FreeFlame.py | 135 + Cantera/python/Cantera/OneD/onedim.py | 8 +- Cantera/python/Cantera/Phase.py | 39 +- Cantera/python/Cantera/ThermoPhase.py | 5 +- Cantera/python/Cantera/__init__.py | 18 +- Cantera/python/Cantera/ck2cti.py | 34 + Cantera/python/Cantera/constants.py | 2 +- Cantera/python/Cantera/mixture.py | 69 +- Cantera/python/Cantera/num.py | 21 +- Cantera/python/Makefile.in | 7 +- Cantera/python/ctml_writer.py | 280 +- Cantera/python/examples/equilibrium/KOH.cti | 70 + .../python/examples/equilibrium/adiabatic.py | 100 + .../examples/equilibrium/multiphase_plasma.py | 40 + .../python/examples/equilibrium/plotting.py | 85 + Cantera/python/examples/equilibrium/simple.py | 23 + Cantera/python/examples/equilibrium/stoich.py | 61 + Cantera/python/examples/flame1.py | 2 +- .../python/examples/flames/adiabatic_flame.py | 84 + Cantera/python/examples/flames/flame1.py | 88 + Cantera/python/examples/flames/flame2.py | 97 + Cantera/python/examples/flames/stflame1.py | 117 + .../python/examples/kinetics/ratecoeffs.py | 48 + Cantera/python/setup.py.in | 93 +- Cantera/python/src/cantera.def | 2 - Cantera/python/src/ct.def | 2 - Cantera/python/src/ctflow.def | 2 - Cantera/python/src/ctfuncs.cpp | 39 +- Cantera/python/src/ctkinetics.def | 2 - Cantera/python/src/ctmultiphase_methods.cpp | 7 +- Cantera/python/src/ctnumerics.def | 2 - Cantera/python/src/ctonedim_methods.cpp | 19 +- Cantera/python/src/ctphase.def | 2 - Cantera/python/src/ctphase_methods.cpp | 4 +- Cantera/python/src/ctsurf.def | 2 - Cantera/python/src/ctthermo.def | 2 - Cantera/python/src/ctthermo_methods.cpp | 13 +- Cantera/python/src/cttransport.def | 2 - Cantera/python/src/methods.h | 3 + Cantera/python/src/pycantera.cpp | 9 +- Cantera/python/src/pylogger.h | 2 + Cantera/python/src/pyutils.h | 118 +- Cantera/python/winsetup.py | 2 +- Cantera/src/.cvsignore | 2 + Cantera/src/Array.h | 1 - Cantera/src/ArrayViewer.h | 19 +- Cantera/src/BandMatrix.h | 19 +- Cantera/src/ChemEquil.cpp | 12 +- Cantera/src/ChemEquil.h | 13 +- Cantera/src/ConstDensityThermo.cpp | 81 +- Cantera/src/ConstDensityThermo.h | 76 +- Cantera/src/Constituents.cpp | 11 + Cantera/src/Constituents.h | 10 +- Cantera/src/Elements.cpp | 30 +- Cantera/src/Elements.h | 11 +- Cantera/src/GRI_30_Kinetics.cpp | 9 +- Cantera/src/GasKinetics.cpp | 43 +- Cantera/src/GasKinetics.h | 16 +- Cantera/src/IdealGasPhase.cpp | 208 +- Cantera/src/IdealGasPhase.h | 299 +- Cantera/src/ImplicitSurfChem.cpp | 23 +- Cantera/src/InterfaceKinetics.cpp | 76 +- Cantera/src/InterfaceKinetics.h | 72 +- Cantera/src/Kinetics.cpp | 223 + Cantera/src/Kinetics.h | 302 +- Cantera/src/KineticsFactory.cpp | 93 - Cantera/src/LatticeSolidPhase.cpp | 143 + Cantera/src/LatticeSolidPhase.h | 154 + Cantera/src/Makefile.in | 147 +- Cantera/src/MetalPhase.h | 29 +- Cantera/src/MultiPhase.cpp | 281 +- Cantera/src/MultiPhase.h | 20 +- Cantera/src/MultiPhaseEquil.cpp | 244 +- Cantera/src/MultiPhaseEquil.h | 39 +- Cantera/src/Phase.cpp | 5 + Cantera/src/Phase.h | 11 +- Cantera/src/RateCoeffMgr.h | 2 +- Cantera/src/ReactionData.h | 4 +- Cantera/src/ReactionStoichMgr.cpp | 102 +- Cantera/src/ReactionStoichMgr.h | 5 +- Cantera/src/RxnRates.h | 13 +- Cantera/src/SpeciesThermoFactory.cpp | 69 +- Cantera/src/State.h | 137 +- Cantera/src/StoichManager.h | 183 +- Cantera/src/StoichSubstance.cpp | 7 + Cantera/src/StoichSubstance.h | 188 +- Cantera/src/SurfPhase.h | 34 +- Cantera/src/ThermoFactory.cpp | 37 +- Cantera/src/ThermoPhase.cpp | 5 +- Cantera/src/ThermoPhase.h | 458 +- Cantera/src/config.h | 108 +- Cantera/src/converters/Makefile.in | 36 +- Cantera/src/converters/ck2ct.cpp | 276 +- Cantera/src/converters/ck2ct.h | 2 +- Cantera/src/ct2ctml.cpp | 101 +- Cantera/src/ct_defs.h | 2 +- Cantera/src/ctexceptions.h | 15 +- Cantera/src/ctml.cpp | 2 +- Cantera/src/ctvector.cpp | 2 + Cantera/src/global.h | 63 +- Cantera/src/importCTML.cpp | 14 +- Cantera/src/logger.h | 40 + Cantera/src/misc.cpp | 302 +- Cantera/src/mix_defs.h | 25 +- Cantera/src/oneD/Domain1D.h | 12 +- Cantera/src/oneD/Inlet1D.h | 85 +- Cantera/src/oneD/Makefile.in | 40 +- Cantera/src/oneD/OneDim.cpp | 8 +- Cantera/src/oneD/StFlow.cpp | 343 +- Cantera/src/oneD/StFlow.h | 32 +- Cantera/src/oneD/boundaries1D.cpp | 468 +- Cantera/src/phasereport.cpp | 39 +- Cantera/src/reaction_defs.h | 15 +- Cantera/src/transport/Makefile.in | 7 +- Cantera/src/transport/MultiTransport.cpp | 2 +- Cantera/src/transport/SolidTransport.cpp | 34 +- Cantera/src/transport/TransportFactory.cpp | 11 +- Cantera/src/units.h | 12 +- Cantera/src/utilities.h | 78 +- Cantera/src/zeroD/FlowDevice.cpp | 2 +- Cantera/src/zeroD/FlowDevice.h | 11 +- Cantera/src/zeroD/Makefile.in | 9 +- Cantera/src/zeroD/PID_Controller.h | 2 +- Cantera/src/zeroD/Reactor.cpp | 4 +- Cantera/src/zeroD/Reactor.h | 2 +- Cantera/src/zeroD/ReactorBase.cpp | 2 +- Cantera/src/zeroD/ReactorBase.h | 5 +- Cantera/src/zeroD/ReactorNet.cpp | 2 +- Cantera/src/zeroD/ReactorNet.h | 2 +- Cantera/src/zeroD/Reservoir.h | 2 +- Cantera/src/zeroD/Wall.cpp | 2 +- Cantera/src/zeroD/Wall.h | 11 +- Cantera/src/zeroD/flowControllers.h | 2 +- ChangeLog | 598 +- INSTALLING | 147 - Makefile.in | 102 +- README | 125 - apps/MixMaster/KineticsFrame.py | 91 +- apps/MixMaster/Mix.py | 23 +- apps/MixMaster/ThermoFrame.py | 14 +- apps/MixMaster/ThermoProp.py | 34 +- config.h.in | 6 + config/configure | 447 +- config/configure.in | 327 +- configure | 147 +- data/inputs/elements.xml | 196 +- data/inputs/nasa.cti | 17 +- data/inputs/nasa_condensed.cti | 4946 +++++++++ data/inputs/nasa_gas.cti | 9739 +++++++++++++++++ examples/cxx/Makefile.in | 2 +- examples/cxx/equil_example1.cpp | 3 +- examples/cxx/examples.cpp | 4 +- examples/cxx/kinetics_example1.cpp | 1 + ext/Makefile.in | 4 +- ext/blas/Makefile.in | 9 +- ext/cvode/Makefile.in | 5 + ext/f2c_blas/Makefile.in | 5 + ext/f2c_lapack/Makefile.in | 8 +- ext/f2c_libs/Makefile.in | 5 +- ext/f2c_libs/arith.h | 6 +- ext/f2c_math/.cvsignore | 2 + ext/f2c_math/Makefile.in | 4 + ext/f2c_math/fdump.c | 117 +- ext/f2c_recipes/Makefile.in | 5 + ext/lapack/Makefile.in | 9 +- ext/math/Makefile.in | 12 +- ext/recipes/Makefile.in | 10 +- ext/tpx/.depends | 11 - ext/tpx/Makefile.in | 10 +- test_problems/ck2cti_test/gri30a_blessed.cti | 662 +- test_problems/ck2cti_test/runtest.in | 2 +- test_problems/diamondSurf/Makefile.in | 2 +- test_problems/diamondSurf/diamond_blessed.xml | 80 +- test_problems/diamondSurf/runDiamond.cpp | 2 +- test_problems/python/flame1_blessed.csv | 210 +- test_problems/python/flame1_blessed_linux.csv | 208 +- test_problems/python/frac.cti | 106 + test_problems/python/frac.py | 27 + test_problems/python/frac_blessed.out | 23 + test_problems/python/runtest | 15 + test_problems/silane_equil/Makefile.in | 2 +- test_problems/silane_equil/output_blessed.txt | 2 +- test_problems/silane_equil/silane_equil.cpp | 2 +- test_problems/surfkin/Makefile.in | 2 +- tools/doc/Cantera.cfg | 976 +- tools/doc/doxyinput/Cantera.txt | 21 + tools/doc/doxyinput/build.txt | 93 + tools/doc/doxyinput/ctnew.txt | 29 + tools/doc/doxyinput/cxx-headers.txt | 44 + tools/doc/doxyinput/demo.cpp | 99 + tools/doc/doxyinput/demo1.cpp | 107 + tools/doc/doxyinput/demo1a.cpp | 38 + tools/doc/doxyinput/demoequil.cpp | 21 + tools/doc/doxyinput/equildemo.txt | 60 + tools/doc/doxyinput/ex1.cpp | 6 + tools/doc/doxyinput/except.cpp | 20 + tools/doc/doxyinput/exceptions.txt | 29 + tools/doc/doxyinput/introcxx.txt | 89 + tools/doc/doxyinput/languages.txt | 51 + tools/doc/doxyinput/thermo.txt | 84 + tools/doc/doxyinput/thermodemo.cpp | 40 + tools/doc/doxyinput/thermodemo.txt | 29 + tools/doc/footer.html | 2 +- tools/doc/header.html | 2 +- tools/src/Makefile.in | 14 +- tools/src/ck2cti.cpp | 54 +- tools/src/findtag.py | 21 + tools/src/finish_install.py.in | 22 +- tools/src/fixtext.cpp | 38 + tools/src/package4mac.in | 42 +- tools/templates/cxx/demo.mak.in | 9 +- winconfig.h | 4 + 295 files changed, 24396 insertions(+), 5446 deletions(-) create mode 100644 Cantera/cxx/include/importPhase.h create mode 100644 Cantera/matlab/cantera/@Mixture/Mixture.m create mode 100644 Cantera/matlab/cantera/@Mixture/addPhase.m create mode 100644 Cantera/matlab/cantera/@Mixture/chemPotentials.m create mode 100644 Cantera/matlab/cantera/@Mixture/display.m create mode 100644 Cantera/matlab/cantera/@Mixture/elementIndex.m create mode 100644 Cantera/matlab/cantera/@Mixture/equilibrate.m create mode 100644 Cantera/matlab/cantera/@Mixture/mix_hndl.m create mode 100644 Cantera/matlab/cantera/@Mixture/nElements.m create mode 100644 Cantera/matlab/cantera/@Mixture/nPhases.m create mode 100644 Cantera/matlab/cantera/@Mixture/nSpecies.m create mode 100644 Cantera/matlab/cantera/@Mixture/phaseMoles.m create mode 100644 Cantera/matlab/cantera/@Mixture/pressure.m create mode 100644 Cantera/matlab/cantera/@Mixture/private/mixturemethods.m create mode 100644 Cantera/matlab/cantera/@Mixture/setPhaseMoles.m create mode 100644 Cantera/matlab/cantera/@Mixture/setPressure.m create mode 100644 Cantera/matlab/cantera/@Mixture/setSpeciesMoles.m create mode 100644 Cantera/matlab/cantera/@Mixture/setTemperature.m create mode 100644 Cantera/matlab/cantera/@Mixture/speciesIndex.m create mode 100644 Cantera/matlab/cantera/@Mixture/temperature.m delete mode 100755 Cantera/matlab/cantera/@Solution/display.m create mode 100644 Cantera/matlab/cantera/@ThermoPhase/display.m create mode 100644 Cantera/matlab/cantera/@ThermoPhase/name.m create mode 100644 Cantera/matlab/cantera/@ThermoPhase/setName.m create mode 100644 Cantera/matlab/cantera/examples/test_examples.m create mode 100644 Cantera/matlab/cantera/private/mixturemethods.cpp create mode 100644 Cantera/python/Cantera/OneD/FreeFlame.py create mode 100644 Cantera/python/Cantera/ck2cti.py create mode 100644 Cantera/python/examples/equilibrium/KOH.cti create mode 100644 Cantera/python/examples/equilibrium/adiabatic.py create mode 100644 Cantera/python/examples/equilibrium/multiphase_plasma.py create mode 100644 Cantera/python/examples/equilibrium/plotting.py create mode 100644 Cantera/python/examples/equilibrium/simple.py create mode 100644 Cantera/python/examples/equilibrium/stoich.py create mode 100644 Cantera/python/examples/flames/adiabatic_flame.py create mode 100755 Cantera/python/examples/flames/flame1.py create mode 100755 Cantera/python/examples/flames/flame2.py create mode 100644 Cantera/python/examples/flames/stflame1.py create mode 100644 Cantera/python/examples/kinetics/ratecoeffs.py delete mode 100755 Cantera/python/src/cantera.def delete mode 100755 Cantera/python/src/ct.def delete mode 100755 Cantera/python/src/ctflow.def delete mode 100755 Cantera/python/src/ctkinetics.def delete mode 100755 Cantera/python/src/ctnumerics.def delete mode 100755 Cantera/python/src/ctphase.def delete mode 100755 Cantera/python/src/ctsurf.def delete mode 100755 Cantera/python/src/ctthermo.def delete mode 100755 Cantera/python/src/cttransport.def create mode 100644 Cantera/src/Kinetics.cpp create mode 100644 Cantera/src/LatticeSolidPhase.cpp create mode 100644 Cantera/src/LatticeSolidPhase.h delete mode 100644 INSTALLING delete mode 100755 README create mode 100644 data/inputs/nasa_condensed.cti create mode 100644 data/inputs/nasa_gas.cti delete mode 100755 ext/tpx/.depends create mode 100644 test_problems/python/frac.cti create mode 100644 test_problems/python/frac.py create mode 100644 test_problems/python/frac_blessed.out create mode 100644 tools/doc/doxyinput/Cantera.txt create mode 100644 tools/doc/doxyinput/build.txt create mode 100644 tools/doc/doxyinput/ctnew.txt create mode 100644 tools/doc/doxyinput/cxx-headers.txt create mode 100644 tools/doc/doxyinput/demo.cpp create mode 100644 tools/doc/doxyinput/demo1.cpp create mode 100644 tools/doc/doxyinput/demo1a.cpp create mode 100644 tools/doc/doxyinput/demoequil.cpp create mode 100644 tools/doc/doxyinput/equildemo.txt create mode 100644 tools/doc/doxyinput/ex1.cpp create mode 100644 tools/doc/doxyinput/except.cpp create mode 100644 tools/doc/doxyinput/exceptions.txt create mode 100644 tools/doc/doxyinput/introcxx.txt create mode 100644 tools/doc/doxyinput/languages.txt create mode 100644 tools/doc/doxyinput/thermo.txt create mode 100644 tools/doc/doxyinput/thermodemo.cpp create mode 100644 tools/doc/doxyinput/thermodemo.txt create mode 100644 tools/src/findtag.py create mode 100644 tools/src/fixtext.cpp diff --git a/.cvsignore b/.cvsignore index f8fb4788e..70d09cf09 100644 --- a/.cvsignore +++ b/.cvsignore @@ -2,7 +2,6 @@ Makefile configure.sol configure.linux build -config.h win32_old configure.vc++ configure.my_vc++ diff --git a/Cantera/Makefile.in b/Cantera/Makefile.in index ff67d1335..b4bd37d3f 100755 --- a/Cantera/Makefile.in +++ b/Cantera/Makefile.in @@ -11,7 +11,6 @@ build_f90=@BUILD_F90@ build_python=@BUILD_PYTHON@ -build_particles=@BUILD_PARTICLES@ build_matlab = @BUILD_MATLAB@ all: @@ -21,9 +20,6 @@ all: ifeq ($(build_f90),1) cd fortran/src; @MAKE@ endif -ifeq ($(build_particles),1) - cd cads; @MAKE@ -endif clean: cd src; @MAKE@ clean diff --git a/Cantera/clib/src/Cabinet.h b/Cantera/clib/src/Cabinet.h index 088ab922a..460338de7 100755 --- a/Cantera/clib/src/Cabinet.h +++ b/Cantera/clib/src/Cabinet.h @@ -168,12 +168,17 @@ public: } } + /** + * Constructor. + */ + Cabinet(bool canDelete = true) : _can_delete(canDelete) { add(new M); } + private: /** * Constructor. */ - Cabinet(bool canDelete = true) : _can_delete(canDelete) { add(new M); } + // Cabinet(bool canDelete = true) : _can_delete(canDelete) { add(new M); } /** diff --git a/Cantera/clib/src/Makefile.in b/Cantera/clib/src/Makefile.in index d606fd2d3..7bd88d876 100755 --- a/Cantera/clib/src/Makefile.in +++ b/Cantera/clib/src/Makefile.in @@ -9,17 +9,22 @@ ############################################################### -SUFFIXES= -SUFFIXES= .cpp .d .o +.SUFFIXES : +.SUFFIXES : .cpp .d .o + +INSTALL_TSC = ../../../bin/install_tsc +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) OBJS = ct.o Storage.o ctsurf.o ctrpath.o \ ctreactor.o ctfunc.o ctxml.o ctonedim.o ctmultiphase.o +CLIB_H= Cabinet.h ctreactor.h clib_defs.h ctfunc.h \ + ctnum.h ctsurf.h ct.h ctrpath.h Storage.h \ + ctbdry.h ctonedim.h ctxml.h ctmultiphase.h ctstagn.h DEPENDS = $(OBJS:.o=.d) - # Fortran libraries FORT_LIBS = @FLIBS@ @@ -67,14 +72,24 @@ ifeq ($(shared_ctlib),1) @SHARED@ $(LINK_OPTIONS) \ $(EXT_LIBS) @LIBS@ $(FORT_LIBS) else - @ARCHIVE@ $(CTLIB) $(OBJS) + @ARCHIVE@ $(CTLIB) $(OBJS) +ifeq ($(do_ranlib),1) + @RANLIB@ $(CTLIB) +endif endif clean: $(RM) $(OBJS) $(CTLIB) install: - @INSTALL@ $(CTLIB) @prefix@/lib/cantera + @INSTALL@ -d @ct_libdir@ + @INSTALL@ -m 644 $(CTLIB) @ct_libdir@ +ifeq ($(do_ranlib),1) +ifeq ($(shared_ctlib),0) + @RANLIB@ @ct_libdir@/$(LIB_NAME).a +endif +endif + win-install: @INSTALL@ ../../../lib/clib.lib @prefix@/lib/cantera diff --git a/Cantera/clib/src/Storage.cpp b/Cantera/clib/src/Storage.cpp index c933ef2b7..fadfb2dc8 100755 --- a/Cantera/clib/src/Storage.cpp +++ b/Cantera/clib/src/Storage.cpp @@ -30,7 +30,15 @@ int Storage::addThermo(thermo_t* th) { __thtable.push_back(th); int n = static_cast(__thtable.size()) - 1; th->setIndex(n); - __thmap[th->id()] = n; + //string id = th->id(); + //if (__thmap.count(id) == 0) { + // __thmap[id] = n; + // th->setID(id); + //} + //else { + // throw CanteraError("Storage::addThermo","id already used"); + // return -1; + //} return n; } diff --git a/Cantera/clib/src/ct.cpp b/Cantera/clib/src/ct.cpp index 2fb0a1e15..984b3f4fb 100755 --- a/Cantera/clib/src/ct.cpp +++ b/Cantera/clib/src/ct.cpp @@ -59,7 +59,10 @@ inline int nThermo() { return Storage::storage()->nThermo(); } - +namespace Cantera { + void writephase(const ThermoPhase& th, bool show_thermo); +} + /** * Exported functions. */ @@ -101,6 +104,12 @@ extern "C" { return ph(n)->molarDensity(); } + int DLL_EXPORT phase_setMolarDensity(int n, double ndens) { + if (ndens < 0.0) return -1; + ph(n)->setMolarDensity(ndens); + return 0; + } + doublereal DLL_EXPORT phase_meanMolecularWeight(int n) { return ph(n)->meanMolecularWeight(); } @@ -223,6 +232,20 @@ extern "C" { return -10; } + int DLL_EXPORT phase_getName(int n, int lennm, char* nm) { + string name = ph(n)->name(); + int lout = min(lennm,name.size()); + copy(name.c_str(), name.c_str() + lout, nm); + nm[lout] = '\0'; + return 0; + } + + int DLL_EXPORT phase_setName(int n, const char* nm) { + string name = string(nm); + ph(n)->setName(name); + return 0; + } + int DLL_EXPORT phase_getSpeciesName(int n, int k, int lennm, char* nm) { try { string spnm = ph(n)->speciesName(k); @@ -402,7 +425,7 @@ extern "C" { thermo_t* thrm = th(n); int nel = thrm->nElements(); if (lenm >= nel) { - equilibrate(*thrm, "TP"); + equilibrate(*thrm, "TP", 0); thrm->getElementPotentials(lambda); return 0; } @@ -464,9 +487,11 @@ extern "C" { catch (CanteraError) {return -1;} } - int DLL_EXPORT th_equil(int n, int XY) { + int DLL_EXPORT th_equil(int n, int XY, int solver, + double rtol, int maxsteps, int loglevel) { try { - equilibrate(*th(n), XY); return 0; + equilibrate(*th(n), XY, solver, rtol, maxsteps, + loglevel); return 0; } catch (CanteraError) {return -1;} } @@ -629,7 +654,7 @@ extern "C" { } int DLL_EXPORT kin_start(int n, int p) { - return kin(n)->start(p); + return kin(n)->kineticsSpeciesIndex(0,p); } int DLL_EXPORT kin_speciesIndex(int n, const char* nm, const char* ph) { @@ -848,7 +873,8 @@ extern "C" { } int DLL_EXPORT kin_phase(int n, int i) { - return thermo_index(kin(n)->thermo(i).id()); + return kin(n)->thermo(i).index(); + // return thermo_index(kin(n)->thermo(i).id()); } int DLL_EXPORT kin_getEquilibriumConstants(int n, int len, double* kc) { @@ -1005,6 +1031,15 @@ extern "C" { catch (CanteraError) { return -1; } } + int DLL_EXPORT write_phase(int nth, int show_thermo) { + try { + bool stherm = (show_thermo != 0); + writephase(*th(nth), stherm); + return 0; + } + catch (CanteraError) { return -1; } + } + int DLL_EXPORT getCanteraError(int buflen, char* buf) { string e; e = lastErrorMessage(); @@ -1104,9 +1139,18 @@ extern "C" { } -// int DLL_EXPORT ck_to_cti(char* in_file, char* db_file, -// char* tr_file, char* id_tag) { -// return pip::convert_ck(in_file, db_file, tr_file, id_tag); -// } + int DLL_EXPORT ck_to_cti(char* in_file, char* db_file, + char* tr_file, char* id_tag, int debug, int validate) { + bool dbg = (debug != 0); + bool val = (validate != 0); + return pip::convert_ck(in_file, db_file, tr_file, id_tag, dbg, val); + } + + + int DLL_EXPORT writelogfile(char* logfile) { + write_logfile(string(logfile)); + return 0; + } + } diff --git a/Cantera/clib/src/ct.h b/Cantera/clib/src/ct.h index bb28c8b2c..7c662ce5e 100755 --- a/Cantera/clib/src/ct.h +++ b/Cantera/clib/src/ct.h @@ -2,7 +2,7 @@ #define CTC_CT_H #include "clib_defs.h" -#include "../../../config.h" +#include "../../src/config.h" extern "C" { @@ -13,6 +13,7 @@ extern "C" { double DLL_IMPORT phase_density(int n); int DLL_IMPORT phase_setDensity(int n, double rho); double DLL_IMPORT phase_molarDensity(int n); + int DLL_IMPORT phase_setMolarDensity(int n, double ndens); double DLL_IMPORT phase_meanMolecularWeight(int n); double DLL_IMPORT phase_moleFraction(int n, int k); double DLL_IMPORT phase_massFraction(int n, int k); @@ -28,10 +29,14 @@ extern "C" { int DLL_IMPORT phase_getMolecularWeights(int n, int lenm, double* mw); int DLL_IMPORT phase_getElementName(int n, int k, int lennm, char* nm); int DLL_IMPORT phase_getSpeciesName(int n, int m, int lennm, char* nm); + int DLL_IMPORT phase_getName(int n, int lennm, char* nm); + int DLL_IMPORT phase_setName(int n, const char* nm); int DLL_IMPORT phase_elementIndex(int n, char* nm); int DLL_IMPORT phase_speciesIndex(int n, char* nm); int DLL_IMPORT phase_report(int nth, int ibuf, char* buf, int show_thermo); + int DLL_EXPORT write_phase(int nth, int show_thermo); + double DLL_IMPORT phase_nAtoms(int n, int k, int m); int DLL_IMPORT phase_addElement(int n, char* name, double weight); @@ -75,7 +80,8 @@ extern "C" { int DLL_IMPORT th_set_UV(int n, double* vals); int DLL_IMPORT th_set_SV(int n, double* vals); int DLL_IMPORT th_set_SP(int n, double* vals); - int DLL_IMPORT th_equil(int n, int XY); + int DLL_IMPORT th_equil(int n, int XY, int solver, + double rtol, int maxsteps, int loglevel); #ifdef INCL_PURE_FLUIDS double DLL_IMPORT th_critTemperature(int n); @@ -153,7 +159,8 @@ extern "C" { int ith, int ikin); int DLL_IMPORT ck_to_cti(char* in_file, char* db_file, - char* tr_file, char* id_tag); + char* tr_file, char* id_tag, int debug, int validate); + int DLL_IMPORT writelogfile(char* logfile); } #endif diff --git a/Cantera/clib/src/ctfunc.cpp b/Cantera/clib/src/ctfunc.cpp index 27f94c5ee..635bf16d7 100755 --- a/Cantera/clib/src/ctfunc.cpp +++ b/Cantera/clib/src/ctfunc.cpp @@ -20,7 +20,7 @@ using namespace Cantera; typedef Func1 func_t; -Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; inline func_t* _func(int i) { return Cabinet::cabinet()->item(i); diff --git a/Cantera/clib/src/ctmultiphase.cpp b/Cantera/clib/src/ctmultiphase.cpp index cab84795c..dca41debe 100644 --- a/Cantera/clib/src/ctmultiphase.cpp +++ b/Cantera/clib/src/ctmultiphase.cpp @@ -21,7 +21,7 @@ typedef MultiPhase mix_t; -Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; inline mix_t* _mix(int i) { return Cabinet::cabinet()->item(i); @@ -120,6 +120,10 @@ extern "C" { return DERR; } + double DLL_EXPORT mix_nPhases(int i) { + return _mix(i)->nPhases(); + } + doublereal DLL_EXPORT mix_phaseMoles(int i, int n) { if (!checkPhase(i, n)) return DERR; return _mix(i)->phaseMoles(n); @@ -146,8 +150,11 @@ extern "C" { int DLL_EXPORT mix_setMolesByName(int i, char* n) { - _mix(i)->setMolesByName(string(n)); - return 0; + try { + _mix(i)->setMolesByName(string(n)); + return 0; + } + catch (CanteraError) { return -1; } } int DLL_EXPORT mix_setTemperature(int i, double t) { @@ -182,9 +189,10 @@ extern "C" { doublereal DLL_EXPORT mix_equilibrate(int i, char* XY, - doublereal err, int maxiter) { + doublereal err, int maxsteps, int maxiter, int loglevel) { try { - return equilibrate(*_mix(i), _equilflag(XY), err, maxiter); + return _mix(i)->equilibrate(_equilflag(XY), + err, maxsteps, maxiter, loglevel); } catch (CanteraError) { return DERR; diff --git a/Cantera/clib/src/ctmultiphase.h b/Cantera/clib/src/ctmultiphase.h index 12ceafd5b..e8d8f7153 100644 --- a/Cantera/clib/src/ctmultiphase.h +++ b/Cantera/clib/src/ctmultiphase.h @@ -19,14 +19,15 @@ extern "C" { int DLL_IMPORT mix_setPressure(int i, double p); double DLL_IMPORT mix_pressure(int i); double DLL_IMPORT mix_nAtoms(int i, int k, int m); + double DLL_IMPORT mix_nPhases(int i); double DLL_IMPORT mix_phaseMoles(int i, int n); int DLL_IMPORT mix_setPhaseMoles(int i, int n, double v); int DLL_IMPORT mix_setMoles(int i, int nlen, double* n); - int DLL_IMPORT mix_setMolesByName(int i, char* n); + int DLL_IMPORT mix_setMolesByName(int i, char* n); double DLL_IMPORT mix_speciesMoles(int i, int k); double DLL_IMPORT mix_elementMoles(int i, int m); double DLL_IMPORT mix_equilibrate(int i, char* XY, - double err, int maxiter); + double err, int maxsteps, int maxiter, int loglevel); int DLL_IMPORT mix_getChemPotentials(int i, int lenmu, double* mu); } #endif diff --git a/Cantera/clib/src/ctonedim.cpp b/Cantera/clib/src/ctonedim.cpp index c59f75132..f633d9986 100644 --- a/Cantera/clib/src/ctonedim.cpp +++ b/Cantera/clib/src/ctonedim.cpp @@ -28,8 +28,8 @@ #define DERR -999.999 -Cabinet* Cabinet::__storage = 0; -Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; inline Sim1D* _sim1D(int i) { @@ -329,14 +329,24 @@ extern "C" { //------------------ stagnation flow domains -------------------- - int DLL_EXPORT stflow_new(int iph, int ikin, int itr) { + int DLL_EXPORT stflow_new(int iph, int ikin, int itr, int itype) { try { IdealGasPhase* ph = (IdealGasPhase*)_thermo(iph); - AxiStagnFlow* x = new AxiStagnFlow(ph, ph->nSpecies(), 2); - x->setKinetics(*_kinetics(ikin)); - x->setTransport(*_transport(itr)); - - return Cabinet::cabinet()->add(x); + if (itype == 1) { + AxiStagnFlow* x = new AxiStagnFlow(ph, ph->nSpecies(), 2); + x->setKinetics(*_kinetics(ikin)); + x->setTransport(*_transport(itr)); + return Cabinet::cabinet()->add(x); + } + else if (itype == 2) { + FreeFlame* x = new FreeFlame(ph, ph->nSpecies(), 2); + x->setKinetics(*_kinetics(ikin)); + x->setTransport(*_transport(itr)); + return Cabinet::cabinet()->add(x); + } + else { + return -2; + } } catch (CanteraError) { return -1; } } @@ -601,4 +611,11 @@ extern "C" { catch (CanteraError) { return -1; } } + int DLL_EXPORT sim1D_setFixedTemperature(int i, double temp) { + try { + _sim1D(i)->setFixedTemperature(temp); + } + catch (CanteraError) { return -1; } + } + } diff --git a/Cantera/clib/src/ctonedim.h b/Cantera/clib/src/ctonedim.h index 1889a3ebf..6a6ebb3e8 100644 --- a/Cantera/clib/src/ctonedim.h +++ b/Cantera/clib/src/ctonedim.h @@ -45,7 +45,7 @@ extern "C" { int DLL_IMPORT inlet_setSpreadRate(int i, double v); - int DLL_IMPORT stflow_new(int iph, int ikin, int itr); + int DLL_IMPORT stflow_new(int iph, int ikin, int itr, int itype=1); int DLL_IMPORT stflow_setTransport(int i, int itr); int DLL_IMPORT stflow_setPressure(int i, double p); int DLL_IMPORT stflow_setFixedTempProfile(int i, int n, double* pos, @@ -79,7 +79,7 @@ extern "C" { int DLL_IMPORT sim1D_setMaxJacAge(int i, int ss_age, int ts_age); int DLL_IMPORT sim1D_timeStepFactor(int i, double tfactor); int DLL_IMPORT sim1D_setTimeStepLimits(int i, double tsmin, double tsmax); - + int DLL_IMPORT sim1D_setFixedTemperature(int i, double temp); } diff --git a/Cantera/clib/src/ctreactor.cpp b/Cantera/clib/src/ctreactor.cpp index f2ecd3772..520cb8bd6 100755 --- a/Cantera/clib/src/ctreactor.cpp +++ b/Cantera/clib/src/ctreactor.cpp @@ -22,15 +22,17 @@ #define ERR -999 #define DERR -999.999 +using namespace CanteraZeroD; + typedef ReactorBase reactor_t; typedef ReactorNet reactornet_t; typedef FlowDevice flowdev_t; typedef Wall wall_t; -Cabinet* Cabinet::__storage = 0; -Cabinet* Cabinet::__storage = 0; -Cabinet* Cabinet::__storage = 0; -Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; inline reactor_t* _reactor(int i) { return Cabinet::cabinet()->item(i); diff --git a/Cantera/clib/src/ctrpath.cpp b/Cantera/clib/src/ctrpath.cpp index 3373fff3b..71bd5b8b5 100755 --- a/Cantera/clib/src/ctrpath.cpp +++ b/Cantera/clib/src/ctrpath.cpp @@ -10,8 +10,8 @@ // Cantera includes -#include "ReactionPath.h" +#include "ReactionPath.h" #include "Cabinet.h" #include "Storage.h" @@ -22,8 +22,10 @@ typedef ReactionPathDiagram diag_t; typedef ReactionPathBuilder builder_t; -Cabinet* Cabinet::__storage = 0; -Cabinet* Cabinet::__storage = 0; + +template<> Cabinet* Cabinet::__storage = 0; + +template<> Cabinet* Cabinet::__storage = 0; inline ReactionPathDiagram* _diag(int i) { return Cabinet::cabinet()->item(i); diff --git a/Cantera/clib/src/ctxml.cpp b/Cantera/clib/src/ctxml.cpp index 56688a270..ad427431c 100644 --- a/Cantera/clib/src/ctxml.cpp +++ b/Cantera/clib/src/ctxml.cpp @@ -19,7 +19,7 @@ #define ERR -999 #define DERR -999.999 -Cabinet* Cabinet::__storage = 0; +template<> Cabinet* Cabinet::__storage = 0; inline XML_Node* _xml(int i) { return Cabinet::cabinet(false)->item(i); diff --git a/Cantera/cxx/Makefile.in b/Cantera/cxx/Makefile.in index c34cf2887..a5183feec 100644 --- a/Cantera/cxx/Makefile.in +++ b/Cantera/cxx/Makefile.in @@ -11,14 +11,32 @@ build_f90=@BUILD_F90@ build_python=@BUILD_PYTHON@ -build_particles=@BUILD_PARTICLES@ + +INCDIR = ../../build/include/cantera +INSTALL_TSC = ../../../bin/install_tsc + +CXX_H = Cantera.h equilibrium.h IncompressibleSolid.h \ + kinetics.h onedim.h surface.h GRI30.h integrators.h \ + Metal.h PureFluid.h transport.h Edge.h \ + IdealGasMix.h Interface.h numerics.h \ + reactionpaths.h zerodim.h all: - @INSTALL@ include/*.h ../../build/include/cantera + @(cd include ; \ + for lh in $(CXX_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) cd src; @MAKE@ cd demos; @MAKE@ clean: + @(for lh in $(CXX_H) ; do \ + th=$(INCDIR)/"$${lh}" ; \ + if test -f "$${th}" ; then \ + $(RM) "$${th}" ; \ + echo "$(RM) $${th}" ; \ + fi \ + done) cd src; @MAKE@ clean cd demos; @MAKE@ clean diff --git a/Cantera/cxx/demos/Makefile.in b/Cantera/cxx/demos/Makefile.in index a00f5ee62..1d4aab328 100644 --- a/Cantera/cxx/demos/Makefile.in +++ b/Cantera/cxx/demos/Makefile.in @@ -16,7 +16,7 @@ OBJS = demos.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = +LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# @@ -53,6 +53,8 @@ LCXX_FLAGS = -L$(CANTERA_LIBDIR) @LOCAL_LIB_DIRS@ @CXXFLAGS@ PROGRAM = $(PROG_NAME)$(EXE_EXT) +DEPENDS = $(OBJS:.o=.d) + all: $(PROGRAM) $(PROGRAM): $(OBJS) $(CANTERA_LIBDIR)/libcantera.a @@ -71,8 +73,11 @@ install: @INSTALL@ Makefile.install @ct_demodir@/cxx/Makefile chown -R @username@ @ct_demodir@/cxx +depends: $(DEPENDS) + cat *.d > .depends + $(RM) $(DEPENDS) clean: - $(RM) $(OBJS) $(PROGRAM) + $(RM) $(OBJS) $(PROGRAM) .depends ../../../bin/rm_cvsignore diff --git a/Cantera/cxx/demos/flamespeed.cpp b/Cantera/cxx/demos/flamespeed.cpp index 6a3272710..2133e4dcd 100644 --- a/Cantera/cxx/demos/flamespeed.cpp +++ b/Cantera/cxx/demos/flamespeed.cpp @@ -78,7 +78,8 @@ int flamespeed(int np, void* p) { //-------- step 1: create the flow ------------- - AxiStagnFlow flow(&gas); + //AxiStagnFlow flow(&gas); + FreeFlame flow(&gas); // create an initial grid int nz=5; @@ -123,7 +124,7 @@ int flamespeed(int np, void* p) { domains.push_back(&flow); domains.push_back(&outlet); - OneDim flamesim(domains); + // OneDim flamesim(domains); Sim1D flame(domains); @@ -172,9 +173,9 @@ int flamespeed(int np, void* p) { bool refine_grid = true; /* Solve species*/ - flow.fixTemperature(); - refine_grid=false; - flame.solve(loglevel,refine_grid); + //flow.fixTemperature(); + //refine_grid=false; + //flame.solve(loglevel,refine_grid); /* Solve freely propagating flame*/ @@ -183,12 +184,14 @@ int flamespeed(int np, void* p) { location will then be fixed for remainder of calculation.*/ - - flow.solveEnergyEqn(); - refine_grid=true; + flow.fixTemperature(); + refine_grid=false; flame.setFixedTemperature(900.0); - flame.setAdiabaticFlame(); - flame.solve(loglevel=1,refine_grid); + // flame.setAdiabaticFlame(); + flame.solve(loglevel,refine_grid); + refine_grid = true; + flow.solveEnergyEqn(); + flame.solve(loglevel,refine_grid); int np=flow.nPoints(); vector zvec,Tvec,COvec,CO2vec,Uvec; diff --git a/Cantera/cxx/demos/kinetics1.cpp b/Cantera/cxx/demos/kinetics1.cpp index 6e719c8cd..a069dc3da 100644 --- a/Cantera/cxx/demos/kinetics1.cpp +++ b/Cantera/cxx/demos/kinetics1.cpp @@ -16,6 +16,7 @@ #pragma warning(disable:4503) #endif +#include #include #include #include diff --git a/Cantera/cxx/demos/rankine.cpp b/Cantera/cxx/demos/rankine.cpp index 2e5d352a3..50b7d2db7 100644 --- a/Cantera/cxx/demos/rankine.cpp +++ b/Cantera/cxx/demos/rankine.cpp @@ -71,6 +71,7 @@ int openRankine(int np, void* p) { double heat_in = h["3"] - h["2"]; double efficiency = work/heat_in; + cout << "efficiency = " << efficiency << endl; #ifdef WIN32 #ifndef CXX_DEMO diff --git a/Cantera/cxx/include/Cantera.h b/Cantera/cxx/include/Cantera.h index b03a7d51a..346510028 100755 --- a/Cantera/cxx/include/Cantera.h +++ b/Cantera/cxx/include/Cantera.h @@ -6,6 +6,7 @@ namespace std{} using namespace std; // definitions +#define CANTERA_APP #include "kernel/ct_defs.h" // some useful functions @@ -14,6 +15,9 @@ using namespace std; // the CanteraError exception class #include "kernel/ctexceptions.h" +// +#include "kernel/importCTML.h" + using namespace Cantera; #endif diff --git a/Cantera/cxx/include/equilibrium.h b/Cantera/cxx/include/equilibrium.h index 504b6f8e2..169970b72 100755 --- a/Cantera/cxx/include/equilibrium.h +++ b/Cantera/cxx/include/equilibrium.h @@ -1,12 +1,12 @@ -/* - * header file providing support for chemical equilibrium. +/** + * @file equilibrium.h + * + * Header file providing support for chemical equilibrium calculations. */ #ifndef CT_EQUIL_INCL #define CT_EQUIL_INCL #include "kernel/ChemEquil.h" -//#ifdef DEV_EQUIL #include "kernel/MultiPhaseEquil.h" -//#endif #endif diff --git a/Cantera/cxx/include/importPhase.h b/Cantera/cxx/include/importPhase.h new file mode 100644 index 000000000..0269cf4a6 --- /dev/null +++ b/Cantera/cxx/include/importPhase.h @@ -0,0 +1,18 @@ +#ifndef CXX_IMPORTPHASE +#define CXX_IMPORTPHASE + +#include + +#include "kernel/ThermoPhase.h" +#include "kernel/importCTML.h" + +namespace Cantera { + + ThermoPhase* importPhase(string infile, string id="") { + ThermoPhase* p = newPhase(infile, id); + return p; + } +} + + +#endif diff --git a/Cantera/cxx/include/integrators.h b/Cantera/cxx/include/integrators.h index 60f34716c..8dca72cfb 100755 --- a/Cantera/cxx/include/integrators.h +++ b/Cantera/cxx/include/integrators.h @@ -1,3 +1,7 @@ +/** + * @file integrators.h + * ODE integrators. Currently, the only integrator is CVODE. + */ #ifndef CT_INTEG_H_INCL #define CT_INTEG_H_INCL diff --git a/Cantera/cxx/include/onedim.h b/Cantera/cxx/include/onedim.h index 9dc433542..6a7e0a87b 100755 --- a/Cantera/cxx/include/onedim.h +++ b/Cantera/cxx/include/onedim.h @@ -7,5 +7,6 @@ #include "kernel/oneD/Inlet1D.h" #include "kernel/oneD/MultiNewton.h" #include "kernel/oneD/MultiJac.h" +#include "kernel/oneD/StFlow.h" #endif diff --git a/Cantera/cxx/include/transport.h b/Cantera/cxx/include/transport.h index 246c8178b..cd1f7df36 100755 --- a/Cantera/cxx/include/transport.h +++ b/Cantera/cxx/include/transport.h @@ -1,3 +1,11 @@ +/** + * @file transport.h + * + * Support for transport property calculation from C++ application programs. + * This header file includes several headers from the Cantera kernel needed + * to evaluate transport properties. + */ + #ifndef CT_TRANSPORT_INCL #define CT_TRANSPORT_INCL diff --git a/Cantera/cxx/include/zerodim.h b/Cantera/cxx/include/zerodim.h index 214a9b245..c6673d03a 100644 --- a/Cantera/cxx/include/zerodim.h +++ b/Cantera/cxx/include/zerodim.h @@ -1,10 +1,11 @@ #ifndef CT_INCL_ZERODIM_H #define CT_INCL_ZERODIM_H - #include "kernel/zeroD/Reactor.h" #include "kernel/zeroD/ReactorNet.h" #include "kernel/zeroD/Reservoir.h" #include "kernel/zeroD/Wall.h" #include "kernel/zeroD/flowControllers.h" +using namespace CanteraZeroD; + #endif diff --git a/Cantera/cxx/src/cxxutils.cpp b/Cantera/cxx/src/cxxutils.cpp index 3ff35199e..4da320c79 100644 --- a/Cantera/cxx/src/cxxutils.cpp +++ b/Cantera/cxx/src/cxxutils.cpp @@ -14,6 +14,7 @@ namespace Cantera { */ string report(const ThermoPhase& th, bool show_thermo) { + try { char p[200]; string s = ""; @@ -71,6 +72,10 @@ namespace Cantera { s += p; } return s; + } + catch (CanteraError) { + return string(""); + } } /** diff --git a/Cantera/fortran/src/cantera_kinetics.f90 b/Cantera/fortran/src/cantera_kinetics.f90 index d794d04fa..1f1067e82 100644 --- a/Cantera/fortran/src/cantera_kinetics.f90 +++ b/Cantera/fortran/src/cantera_kinetics.f90 @@ -42,6 +42,7 @@ module cantera_kinetics phase%kin_id = newkineticsfromxml(xml_phase%xml_id, phase%thermo_id, & missing, missing, missing, missing) end if + phase%nrxn = kin_nreactions(phase%kin_id) end subroutine newKinetics integer function ctkin_kineticsType(self) @@ -110,7 +111,7 @@ module cantera_kinetics subroutine ctkin_getRevRatesOfProgress(self, revROP) implicit none type(phase_t), intent(inout) :: self - double precision, intent(out) :: revROP(*) + double precision, intent(out) :: revROP(self%nrxn) self%err = kin_getrevratesofprogress(self%kin_id, revROP) end subroutine ctkin_getrevratesofprogress diff --git a/Cantera/fortran/src/cantera_thermo.f90 b/Cantera/fortran/src/cantera_thermo.f90 index 24a481194..8b0edffdd 100644 --- a/Cantera/fortran/src/cantera_thermo.f90 +++ b/Cantera/fortran/src/cantera_thermo.f90 @@ -10,6 +10,7 @@ module cantera_thermo integer :: err integer :: nel integer :: nsp + integer :: nrxn end type phase_t ! these definitions are for use with the equilibrate function. @@ -43,6 +44,7 @@ contains self%thermo_id = newthermofromxml(xml_phase%xml_id) self%nel = phase_nelements(self%thermo_id) self%nsp = phase_nspecies(self%thermo_id) + self%nrxn = 0 self%err = 0 else call cantera_error('newThermoPhase','xml_phase or id must be specified.') diff --git a/Cantera/matlab/Makefile.in b/Cantera/matlab/Makefile.in index db36cd14b..a0c249599 100644 --- a/Cantera/matlab/Makefile.in +++ b/Cantera/matlab/Makefile.in @@ -15,6 +15,7 @@ SRCS = cantera/private/ctmethods.cpp \ cantera/private/xmlmethods.cpp \ cantera/private/phasemethods.cpp \ cantera/private/thermomethods.cpp \ + cantera/private/mixturemethods.cpp \ cantera/private/kineticsmethods.cpp \ cantera/private/transportmethods.cpp \ cantera/private/reactormethods.cpp \ @@ -23,7 +24,8 @@ SRCS = cantera/private/ctmethods.cpp \ cantera/private/flowdevicemethods.cpp \ cantera/private/onedimmethods.cpp \ cantera/private/surfmethods.cpp \ - cantera/private/funcmethods.cpp + cantera/private/funcmethods.cpp \ + cantera/private/write.cpp CANTERA_LIBDIR=@buildlib@ @@ -32,7 +34,9 @@ os_is_win=@OS_IS_WIN@ ifeq ($(os_is_win),0) LIB_DEPS = $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libzeroD.a \ $(CANTERA_LIBDIR)/liboneD.a \ - $(CANTERA_LIBDIR)/libtransport.a + $(CANTERA_LIBDIR)/libtransport.a \ + $(CANTERA_LIBDIR)/libclib.a \ + $(CANTERA_LIBDIR)/libconverters.a else LIB_DEPS = $(CANTERA_LIBDIR)/cantera.lib $(CANTERA_LIBDIR)/zeroD.lib \ $(CANTERA_LIBDIR)/oneD.lib \ @@ -60,6 +64,7 @@ install: @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera-demos @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/private @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/@ThermoPhase/private + @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/@Mixture/private @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/@Kinetics/private @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/@Transport/private @INSTALL@ -d @prefix@/matlab/toolbox/cantera/cantera/@Interface/private @@ -95,6 +100,10 @@ install: *.m @prefix@/matlab/toolbox/cantera/cantera/@Interface cd cantera/@Interface/private; @INSTALL@ *.m \ @prefix@/matlab/toolbox/cantera/cantera/@Interface/private + cd cantera/@Mixture; @INSTALL@ \ + *.m @prefix@/matlab/toolbox/cantera/cantera/@Mixture + cd cantera/@Mixture/private; @INSTALL@ *.m \ + @prefix@/matlab/toolbox/cantera/cantera/@Mixture/private cd cantera/@XML_Node; @INSTALL@ *.m \ @prefix@/matlab/toolbox/cantera/cantera/@XML_Node cd cantera/@Reactor; @INSTALL@ *.m \ @@ -127,6 +136,12 @@ install: @prefix@/matlab/toolbox/cantera/cantera/1D/@Stack cd cantera/1D/@Stack/private; @INSTALL@ *.m \ @prefix@/matlab/toolbox/cantera/cantera/1D/@Stack/private + @INSTALL@ -d @ct_demodir@/matlab + @INSTALL@ cantera/examples/*.m @ct_demodir@/matlab + @INSTALL@ -d @ct_tutdir@/matlab + @INSTALL@ cantera/tutorial/*.m @ct_tutdir@/matlab + chown -R @username@ @ct_demodir@/matlab + chown -R @username@ @ct_tutdir@/matlab clean: @@ -150,6 +165,9 @@ endif run-demo: (cd @ct_dir@; matlab -nojvm -nosplash -r cantera_demos) +test-demo: + (cd @ct_dir@/demos/matlab; matlab -nojvm -nosplash -r test_demos) + # end of file diff --git a/Cantera/matlab/cantera/1D/@Domain1D/Domain1D.m b/Cantera/matlab/cantera/1D/@Domain1D/Domain1D.m index efa53d210..7fd2e2680 100755 --- a/Cantera/matlab/cantera/1D/@Domain1D/Domain1D.m +++ b/Cantera/matlab/cantera/1D/@Domain1D/Domain1D.m @@ -10,7 +10,7 @@ elseif nargin == 2 if a == 1 if isa(b,'Solution') d.dom_id = domain_methods(0, 1, thermo_hndl(b), kinetics_hndl(b), ... - trans_hndl(b)); + trans_hndl(b), 1); else error('Wrong argument type. Expecting instance of class Solution.'); end @@ -23,7 +23,17 @@ elseif nargin == 2 else error('wrong object type'); end - +elseif nargin == 3 + if a == 1 + if isa(b,'Solution') + d.dom_id = domain_methods(0, 1, thermo_hndl(b), kinetics_hndl(b), ... + trans_hndl(b), c); + else + error('Wrong argument type. Expecting instance of class Solution.'); + end + else + error('unknown domain type'); + end end if d.dom_id < 0 error(geterr); diff --git a/Cantera/matlab/cantera/1D/@Domain1D/private/domain_methods.m b/Cantera/matlab/cantera/1D/@Domain1D/private/domain_methods.m index 7ae071844..bc5e68afa 100644 --- a/Cantera/matlab/cantera/1D/@Domain1D/private/domain_methods.m +++ b/Cantera/matlab/cantera/1D/@Domain1D/private/domain_methods.m @@ -10,4 +10,6 @@ elseif nargin == 5 v = ctmethods(90, n, job, a, b, c); elseif nargin == 6 v = ctmethods(90, n, job, a, b, c, d); +elseif nargin == 7 + v = ctmethods(90, n, job, a, b, c, d, e); end diff --git a/Cantera/matlab/cantera/@Mixture/Mixture.m b/Cantera/matlab/cantera/@Mixture/Mixture.m new file mode 100644 index 000000000..2a27d34aa --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/Mixture.m @@ -0,0 +1,61 @@ +function m = Mixture(phases) +% +% MIXTURE - Multiphase mixtures. +% +% Class Mixture represents +% mixtures of one or more phases of matter. To construct a mixture, +% supply a cell array of phases and mole numbers: +% +% >> gas = importPhase('gas.cti'); +% >> graphite = importPhase('graphite.cti'); +% >> mix = Mixture({gas, 1.0; graphite, 0.1}); +% +% Phases may also be added later using the addPhase method: +% +% >> water = importPhase('water.cti'); +% >> addPhase(mix, water, 3.0); +% +% Note that the objects representing each phase compute only the +% intensive state of the phase -- they do not store any information +% on the amount of this phase. Mixture objects, on the other hand, +% represent the full extensive state. +% +% Mixture objects are 'lightweight' in the sense that they do not +% store parameters needed to compute thermodynamic or kinetic +% properties of the phases. These are contained in the +% ('heavyweight') phase objects. Multiple mixture objects may be +% constructed using the same set of phase objects. Each one stores +% its own state information locally, and synchronizes the phase +% objects whenever it requires phase properties. +% +if nargin > 1 + error('Mixture: wrong number of arguments'); +end + +% create an empty mixture +m.mixindex = mixturemethods(0, 0, 0); +m.phases = phases; + +m = class(m,'Mixture'); + +% if phases are supplied, add them +if nargin == 1 + if ~isa(phases,'cell') + error('enter phases as a cell array'); + end + + % first column contains the phase objects, and the second column + % the mole numbers of each phase + [np nc] = size(phases); + if nc ~= 2 + error('wrong size for phases cell array'); + end + for n = 1:np + addPhase(m, phases{n,1}, phases{n,2}); + end + setTemperature(m, temperature(phases{n,1})); + setPressure(m, pressure(phases{n,1})); +end + + + diff --git a/Cantera/matlab/cantera/@Mixture/addPhase.m b/Cantera/matlab/cantera/@Mixture/addPhase.m new file mode 100644 index 000000000..6eff96515 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/addPhase.m @@ -0,0 +1,21 @@ +function addPhase(self, phase, moles) +% ADDPHASE - Add a phase to the mixture. +% +% carbon = importPhase('graphite.cti'); +% addPhase(mix, carbon, 1.0); +% +if ~isa(phase,'ThermoPhase') + error('phase object of wrong type.'); +end +if ~isa(moles,'numeric') + error('number of moles must be numeric.'); +end +if moles < 0.0 + error('negative moles!'); +end + +iphase = thermo_hndl(phase); +iok = mixturemethods(4, mix_hndl(self), iphase, moles); +if iok < 0 + error('error adding phase'); +end diff --git a/Cantera/matlab/cantera/@Mixture/chemPotentials.m b/Cantera/matlab/cantera/@Mixture/chemPotentials.m new file mode 100644 index 000000000..ef5bac934 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/chemPotentials.m @@ -0,0 +1,3 @@ +function mu = chemPotentials(self) +% CHEMPOTENTIALS - Chemical potentials of all species in all phases +mu = mixturemethods(41, mix_hndl(self)); diff --git a/Cantera/matlab/cantera/@Mixture/display.m b/Cantera/matlab/cantera/@Mixture/display.m new file mode 100644 index 000000000..1fa900830 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/display.m @@ -0,0 +1,8 @@ +function display(self) +[np nc] = size(self.phases); +for n = 1:np + s = [sprintf('\n******************* Phase %d', n) ... + sprintf(' ******************************\n\n Moles: %12.6g', phaseMoles(self,n))]; + disp(s); + display(self.phases{n,1}); +end diff --git a/Cantera/matlab/cantera/@Mixture/elementIndex.m b/Cantera/matlab/cantera/@Mixture/elementIndex.m new file mode 100644 index 000000000..40a80f929 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/elementIndex.m @@ -0,0 +1,5 @@ +function n = elementIndex(self, name) +% ELEMENTINDEX - index of element with name 'name' +% +n = mixturemethods(22, mix_hndl(self), name); + diff --git a/Cantera/matlab/cantera/@Mixture/equilibrate.m b/Cantera/matlab/cantera/@Mixture/equilibrate.m new file mode 100644 index 000000000..04fde1593 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/equilibrate.m @@ -0,0 +1,70 @@ +function r = equilibrate(self, XY, err, maxsteps, maxiter, ... + loglevel) +% +% EQUILIBRATE - Set the mixture to a state of chemical equilibrium. +% +% This method uses a version of the VCS algorithm to find the +% composition that minimizes the total Gibbs free energy of the +% mixture, subject to element conservation constraints. For a +% description of the theory, see Smith and Missen, "Chemical +% Reaction Equilibrium." The VCS algorithm is implemented in +% Cantera kernel class MultiPhaseEquil. +% +% The VCS algorithm solves for the equilibrium composition for +% specified temperature and pressure. If any other property pair +% other than "TP" is specified, then an outer iteration loop is +% used to adjust T and/or P so that the specified property +% values are obtained. +% +% XY - Two-letter string specifying the two properties to hold +% fixed. Currently, 'TP', 'HP', and 'SP' are +% implemented. Default: 'TP'. +% +% err - Error tolerance. Iteration will continue until (Delta +% mu)/RT is less than this value for each reaction. Default: +% 1.0e-9. Note that this default is very conservative, and good +% equilibrium solutions may be obtained with larger error +% tolerances. +% +% maxsteps - Maximum number of steps to take while solving the +% equilibrium problem for specified T and P. Default: 1000. +% +% maxiter - Maximum number of temperature and/or pressure +% iterations. This is only relevant if a property pair other +% than (T,P) is specified. Default: 200. +% +% loglevel - Controls the amount of diagnostic output. If +% loglevel = 0, no diagnostic output is written. For values > 0, +% more detailed information is written to the log file as +% loglevel increases. The default is loglevel = 0. +% +% The logfile is written in HTML format, and may be viewed with +% any web browser. The default log file name is +% "equilibrium_log.html", but if this file exists, the log +% information will be written to "equilibrium_log{n}.html", +% where {n} is an integer chosen so that the log file does not +% already exist. Therefore, if 'equilibrate' is called multiple +% times, multiple log files will be written, with names +% "equilibrate_log.html", "equilibrate_log1.html", +% "equilibrate_log2.html", and so on. Existing log files will +% not be overwritten. +% +% >> equilibrate(mix, 'TP') +% >> equilibrate('TP', 1.0e-6, 500) +% +if nargin < 6 + loglevel = 0; +end +if nargin < 5 + maxiter = 200; +end +if nargin < 4 + maxsteps = 1000; +end +if nargin < 3 + err = 1.0e-9; +end +if nargin < 2 + XY = 'TP'; +end +r = mixturemethods(31, mix_hndl(self), XY, err, maxsteps, maxiter, loglevel); diff --git a/Cantera/matlab/cantera/@Mixture/mix_hndl.m b/Cantera/matlab/cantera/@Mixture/mix_hndl.m new file mode 100644 index 000000000..0e32fedb3 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/mix_hndl.m @@ -0,0 +1,6 @@ +function i = mix_hndl(self) +% MIX_HNDL - integer used to access kernel object +% +i = self.mixindex; + + diff --git a/Cantera/matlab/cantera/@Mixture/nElements.m b/Cantera/matlab/cantera/@Mixture/nElements.m new file mode 100644 index 000000000..0c2ba5de1 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/nElements.m @@ -0,0 +1,5 @@ +function n = nElements(self) +% NELEMENTS - number of elements +% +n = mixturemethods(21, mix_hndl(self)); + diff --git a/Cantera/matlab/cantera/@Mixture/nPhases.m b/Cantera/matlab/cantera/@Mixture/nPhases.m new file mode 100644 index 000000000..49d8b89fb --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/nPhases.m @@ -0,0 +1,5 @@ +function n = nPhases(self) +% NPHASES - number of phases +% +n = mixturemethods(19, mix_hndl(self)); + diff --git a/Cantera/matlab/cantera/@Mixture/nSpecies.m b/Cantera/matlab/cantera/@Mixture/nSpecies.m new file mode 100644 index 000000000..e747a5aa9 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/nSpecies.m @@ -0,0 +1,5 @@ +function n = nSpecies(self) +% NSPECIES - number of species +% +n = mixturemethods(24, mix_hndl(self)); + diff --git a/Cantera/matlab/cantera/@Mixture/phaseMoles.m b/Cantera/matlab/cantera/@Mixture/phaseMoles.m new file mode 100644 index 000000000..487178a2b --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/phaseMoles.m @@ -0,0 +1,15 @@ +function moles = phaseMoles(self, n) +% PHASEMOLES - moles of phase number 'n' (kmol). +% +if nargin == 2 + moles = mixturemethods(28, mix_hndl(self), n); +elseif nargin == 1 + np = nPhases(self); + for n = 1:np + m(n) = mixturemethods(28, mix_hndl(self), n); + end + moles = m; +else + error('wrong number of arguments'); +end + diff --git a/Cantera/matlab/cantera/@Mixture/pressure.m b/Cantera/matlab/cantera/@Mixture/pressure.m new file mode 100644 index 000000000..84dda17ee --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/pressure.m @@ -0,0 +1,5 @@ +function n = pressure(self) +% PRESSURE - pressure (Pa) +% +n = mixturemethods(26, mix_hndl(self)); + diff --git a/Cantera/matlab/cantera/@Mixture/private/mixturemethods.m b/Cantera/matlab/cantera/@Mixture/private/mixturemethods.m new file mode 100644 index 000000000..8978e7337 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/private/mixturemethods.m @@ -0,0 +1,17 @@ +function v = mixturemethods(n, job, a, b, c, d, e, f) +% +if nargin == 2 + v = ctmethods(120, n, job); +elseif nargin == 3 + v = ctmethods(120, n, job, a); +elseif nargin == 4 + v = ctmethods(120, n, job, a, b); +elseif nargin == 5 + v = ctmethods(120, n, job, a, b, c); +elseif nargin == 6 + v = ctmethods(120, n, job, a, b, c, d); +elseif nargin == 7 + v = ctmethods(120, n, job, a, b, c, d, e); +elseif nargin == 8 + v = ctmethods(120, n, job, a, b, c, d, e, f); +end \ No newline at end of file diff --git a/Cantera/matlab/cantera/@Mixture/setPhaseMoles.m b/Cantera/matlab/cantera/@Mixture/setPhaseMoles.m new file mode 100644 index 000000000..a91c801ad --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/setPhaseMoles.m @@ -0,0 +1,7 @@ +function setPhaseMoles(self, n, moles) +% SETPHASEMOLES - set the number of moles of phase number 'n' to +% 'moles' (kmol). +% +mixturemethods(7, mix_hndl(self), n, moles); + + diff --git a/Cantera/matlab/cantera/@Mixture/setPressure.m b/Cantera/matlab/cantera/@Mixture/setPressure.m new file mode 100644 index 000000000..066fb30af --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/setPressure.m @@ -0,0 +1,6 @@ +function setPressure(self, P) +% SETPRESSURE - set the mixture pressure (Pa) +% +mixturemethods(6, mix_hndl(self), P); + + diff --git a/Cantera/matlab/cantera/@Mixture/setSpeciesMoles.m b/Cantera/matlab/cantera/@Mixture/setSpeciesMoles.m new file mode 100644 index 000000000..f519863bb --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/setSpeciesMoles.m @@ -0,0 +1,12 @@ +function setSpeciesMoles(self, moles) +% SETSPECIESMOLES - Set the moles of the species [kmol]. The moles may +% be specified either as a string, or as an array. If an array is +% used, it must be dimensioned at least as large as the total number +% of species in the mixture. Note that the species may belong to any +% phase, and unspecified species are set to zero. +% +% >> setSpeciesMoles(mix, 'C(s):1.0, CH4:2.0, O2:0.2'); +% +mixturemethods(8, mix_hndl(self), moles); + + diff --git a/Cantera/matlab/cantera/@Mixture/setTemperature.m b/Cantera/matlab/cantera/@Mixture/setTemperature.m new file mode 100644 index 000000000..a4aef15e9 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/setTemperature.m @@ -0,0 +1,6 @@ +function setTemperature(self, T) +% SETTEMPERATURE - set the mixture temperature +% +mixturemethods(5, mix_hndl(self), T); + + diff --git a/Cantera/matlab/cantera/@Mixture/speciesIndex.m b/Cantera/matlab/cantera/@Mixture/speciesIndex.m new file mode 100644 index 000000000..e005f9ecc --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/speciesIndex.m @@ -0,0 +1,5 @@ +function n = speciesIndex(self, k, p) +% SPECIESINDEX - index of species with name 'name' +% +n = mixturemethods(23, mix_hndl(self), k, p); + diff --git a/Cantera/matlab/cantera/@Mixture/temperature.m b/Cantera/matlab/cantera/@Mixture/temperature.m new file mode 100644 index 000000000..9d1f25388 --- /dev/null +++ b/Cantera/matlab/cantera/@Mixture/temperature.m @@ -0,0 +1,5 @@ +function n = temperature(self) +% TEMPERATURE - temperature (K) +% +n = mixturemethods(25, mix_hndl(self)); + diff --git a/Cantera/matlab/cantera/@Reactor/mass.m b/Cantera/matlab/cantera/@Reactor/mass.m index 213273225..1ec85c620 100644 --- a/Cantera/matlab/cantera/@Reactor/mass.m +++ b/Cantera/matlab/cantera/@Reactor/mass.m @@ -1,5 +1,5 @@ function m = mass(r) % MASS - % -reactormethods(23, reactor_hndl(r)); +m = reactormethods(23, reactor_hndl(r)); diff --git a/Cantera/matlab/cantera/@Reactor/setEnergy.m b/Cantera/matlab/cantera/@Reactor/setEnergy.m index 194ae5288..9f29568a3 100644 --- a/Cantera/matlab/cantera/@Reactor/setEnergy.m +++ b/Cantera/matlab/cantera/@Reactor/setEnergy.m @@ -2,7 +2,11 @@ function setEnergy(f, flag) % SETENERGY - % iflag = 0 -if flag = 'on' - iflag = 1 +try + if strcmp(flag,{'on'}) + iflag = 1 + end +catch + iflag = 0 end reactormethods(9, f.index, iflag) diff --git a/Cantera/matlab/cantera/@Solution/display.m b/Cantera/matlab/cantera/@Solution/display.m deleted file mode 100755 index 77bfc2732..000000000 --- a/Cantera/matlab/cantera/@Solution/display.m +++ /dev/null @@ -1,22 +0,0 @@ -function display(a) - -s = [sprintf('\n temperature %12.6g K\n', temperature(a)) ... - sprintf(' pressure %12.6g Pa\n', pressure(a)) ... - sprintf(' density %12.6g kg/m^3\n', density(a)) ... - sprintf(' mean mol. weight %12.6g amu', ... - meanMolecularWeight(a))]; -disp(s); - -nsp = nSpecies(a); -x = moleFractions(a); -y = massFractions(a); - -s = [... - sprintf('\n X Y \n') ... - sprintf(' ------------- ------------ ')]; - disp(s); - - for k = 1:nsp - disp(sprintf('%18s %12.6e %12.6e', char(speciesName(a,k)), x(k), y(k))); - end -disp(' '); \ No newline at end of file diff --git a/Cantera/matlab/cantera/@ThermoPhase/display.m b/Cantera/matlab/cantera/@ThermoPhase/display.m new file mode 100644 index 000000000..43e3c357c --- /dev/null +++ b/Cantera/matlab/cantera/@ThermoPhase/display.m @@ -0,0 +1,3 @@ +function display(self) +phase_get(thermo_hndl(self), 15, 1); + diff --git a/Cantera/matlab/cantera/@ThermoPhase/equilibrate.m b/Cantera/matlab/cantera/@ThermoPhase/equilibrate.m index 21510dd9a..24bfee247 100644 --- a/Cantera/matlab/cantera/@ThermoPhase/equilibrate.m +++ b/Cantera/matlab/cantera/@ThermoPhase/equilibrate.m @@ -1,4 +1,4 @@ -function a = equilibrate(a, xy) +function a = equilibrate(a, xy, solver, rtol, maxsteps, loglevel) % EQUILIBRATE Set the phase to a state of chemical equilibrium. % % The second argument must be one of the strings 'TP', 'TV', @@ -8,36 +8,47 @@ function a = equilibrate(a, xy) % specified, it is the specific value (per unit mass), not the % molar value, that is held fixed. % -if nargin ~= 2 - error('two arguments required') + +% use the ChemEquil solver by default +if nargin < 3 + solver = 0; +end +if nargin < 4 + rtol = 1.0e-9; +end +if nargin < 5 + maxsteps = 1000; +end +if nargin < 6 + loglevel = 0; end iok = 0; switch xy case 'TP' - iok = thermo_set(a.tp_id, 50, 104); + iok = thermo_set(a.tp_id, 50, 104, solver, rtol, maxsteps, loglevel); case 'TV' - iok = thermo_set(a.tp_id, 50, 100); + iok = thermo_set(a.tp_id, 50, 100, solver, rtol, maxsteps, loglevel); case 'HP' - iok = thermo_set(a.tp_id, 50, 101); + iok = thermo_set(a.tp_id, 50, 101, solver, rtol, maxsteps, loglevel); case 'SP' - iok = thermo_set(a.tp_id, 50, 102); + iok = thermo_set(a.tp_id, 50, 102, solver, rtol, maxsteps, loglevel); case 'SV' - iok = thermo_set(a.tp_id, 50, 107); + iok = thermo_set(a.tp_id, 50, 107, solver, rtol, maxsteps, loglevel); case 'UV' - iok = thermo_set(a.tp_id, 50, 105); + iok = thermo_set(a.tp_id, 50, 105, solver, rtol, maxsteps, loglevel); case 'PT' - iok = thermo_set(a.tp_id, 50, 104); + iok = thermo_set(a.tp_id, 50, 104, solver, rtol, maxsteps, loglevel); case 'VT' - iok = thermo_set(a.tp_id, 50, 100); + iok = thermo_set(a.tp_id, 50, 100, solver, rtol, maxsteps, loglevel); case 'PH' - iok = thermo_set(a.tp_id, 50, 101); + iok = thermo_set(a.tp_id, 50, 101, solver, rtol, maxsteps, loglevel); case 'PS' - iok = thermo_set(a.tp_id, 50, 102); + iok = thermo_set(a.tp_id, 50, 102, solver, rtol, maxsteps, loglevel); case 'VS' - iok = thermo_set(a.tp_id, 50, 107); + iok = thermo_set(a.tp_id, 50, 107, solver, rtol, maxsteps, loglevel); case 'VU' - iok = thermo_set(a.tp_id, 50, 105); + iok = thermo_set(a.tp_id, 50, 105, solver, rtol, maxsteps, loglevel); otherwise error('unsupported option') end diff --git a/Cantera/matlab/cantera/@ThermoPhase/name.m b/Cantera/matlab/cantera/@ThermoPhase/name.m new file mode 100644 index 000000000..07942f411 --- /dev/null +++ b/Cantera/matlab/cantera/@ThermoPhase/name.m @@ -0,0 +1,6 @@ +function nm = name(self) +% NAME - user-specified phase name. +nm = phase_get(thermo_hndl(self), 42); + + + diff --git a/Cantera/matlab/cantera/@ThermoPhase/private/thermo_set.m b/Cantera/matlab/cantera/@ThermoPhase/private/thermo_set.m index 3ffd94c30..5341b05dd 100644 --- a/Cantera/matlab/cantera/@ThermoPhase/private/thermo_set.m +++ b/Cantera/matlab/cantera/@ThermoPhase/private/thermo_set.m @@ -1,8 +1,14 @@ -function i = thermo_set(n, job, a, b) +function i = thermo_set(n, job, a, b, c, d, e) if nargin == 2 i = ctmethods(20,n,-job); elseif nargin == 3 i = ctmethods(20,n,-job,a); -else +elseif nargin == 4 i = ctmethods(20, n,-job, a, b); +elseif nargin == 5 + i = ctmethods(20, n,-job, a, b, c); +elseif nargin == 6 + i = ctmethods(20, n,-job, a, b, c, d); +elseif nargin == 7 + i = ctmethods(20, n,-job, a, b, c, d, e); end \ No newline at end of file diff --git a/Cantera/matlab/cantera/@ThermoPhase/setName.m b/Cantera/matlab/cantera/@ThermoPhase/setName.m new file mode 100644 index 000000000..283583d98 --- /dev/null +++ b/Cantera/matlab/cantera/@ThermoPhase/setName.m @@ -0,0 +1,9 @@ +function setName(self, name) +% SETNAME - Set the name of the phase. +% +if isa(name,'char') + phase_set(thermo_hndl(self), 32, name); +else + error('name must be a string.'); +end + diff --git a/Cantera/matlab/cantera/buildwin.m b/Cantera/matlab/cantera/buildwin.m index 2d7e70506..382ec5796 100755 --- a/Cantera/matlab/cantera/buildwin.m +++ b/Cantera/matlab/cantera/buildwin.m @@ -1,9 +1,11 @@ disp('building Cantera...'); +diary mex -I../../../build/include private/ctmethods.cpp ... private/ctfunctions.cpp ... private/xmlmethods.cpp private/phasemethods.cpp ... private/thermomethods.cpp private/kineticsmethods.cpp ... + private/mixturemethods.cpp ... private/transportmethods.cpp private/reactormethods.cpp ... private/reactornetmethods.cpp ... private/wallmethods.cpp private/flowdevicemethods.cpp ... @@ -21,4 +23,5 @@ mex -I../../../build/include private/ctmethods.cpp ... ../../../build/lib/i686-pc-win32/ctblas.lib ... ../../../build/lib/i686-pc-win32/tpx.lib disp('done.'); +diary off exit; diff --git a/Cantera/matlab/cantera/ck2cti.m b/Cantera/matlab/cantera/ck2cti.m index 57598bfce..7ea5ee168 100644 --- a/Cantera/matlab/cantera/ck2cti.m +++ b/Cantera/matlab/cantera/ck2cti.m @@ -14,7 +14,14 @@ function f = ck2cti(infile, thermo, transport) % function return value is a string containing the output file % name. % -prog = [ctbin,'/ck2cti']; +%prog = [ctbin,'/ck2cti']; + +% set this to zero to turn off mechanism validation +validate = 1; + +% set this to one to turn on debugging. Use only if ck2cti +% fails, and you want to see how the parser is parsing the input file. +debug = 0; if nargin == 0 error('input file name must be supplied') @@ -34,16 +41,18 @@ else outfile = [infile '.cti']; end -iok = system([prog,' -i ',infile,' -t ',thermo,' -tr ',transport, ... - ' -id ',idtag,' > ',outfile]); +iok = ctmethods(0,1, infile, thermo, transport, idtag, debug, validate); + +%iok = system([prog,' -i ',infile,' -t ',thermo,' -tr ',transport, ... +% ' -id ',idtag,' > ',outfile]); if iok - ierr2 = system([prog,' > log']) - if ierr2 - error(['Program ck2cti is not found at ',prog,['. Edit file' ... - [' ctbin.m to point to the Cantera bin directory.']]]) - else - error(['Error occurred while running ck2cti. Check file ck2cti.log' ... - ' for error messages.']); - end + %ierr2 = system([prog,' > log']) + %if ierr2 + % error(['Program ck2cti is not found at ',prog,['. Edit file' ... + % [' ctbin.m to point to the Cantera bin directory.']]]) + % else + error(['Error occurred while running ck2cti. Check file ck2cti.log' ... + ' for error messages.']); + %end end f = outfile; diff --git a/Cantera/matlab/cantera/examples/catcomb.m b/Cantera/matlab/cantera/examples/catcomb.m index a9155c4c8..860818d67 100644 --- a/Cantera/matlab/cantera/examples/catcomb.m +++ b/Cantera/matlab/cantera/examples/catcomb.m @@ -14,8 +14,8 @@ % help catcomb; -disp('press any key to start the simulation'); -pause; +%disp('press any key to start the simulation'); +%pause; clear all; cleanup; diff --git a/Cantera/matlab/cantera/examples/flame1.m b/Cantera/matlab/cantera/examples/flame1.m index e4498a9cb..83012af7b 100644 --- a/Cantera/matlab/cantera/examples/flame1.m +++ b/Cantera/matlab/cantera/examples/flame1.m @@ -4,8 +4,8 @@ % at low pressure. help flame1; -disp('press any key to begin the simulation'); -pause; +%disp('press any key to begin the simulation'); +%pause; t0 = cputime; % record the starting time diff --git a/Cantera/matlab/cantera/examples/ignite.m b/Cantera/matlab/cantera/examples/ignite.m index a510e617e..c02cf6a61 100755 --- a/Cantera/matlab/cantera/examples/ignite.m +++ b/Cantera/matlab/cantera/examples/ignite.m @@ -90,7 +90,7 @@ for j = 1:n pv(5:end,j) = y; end -% plot the temperature and OH mole fractions. +% plot the temperature and OH mass fractions. figure(1); plot(pv(1,:),pv(2,:)); xlabel('time'); @@ -101,5 +101,5 @@ figure(2); ioh = speciesIndex(gas,'OH'); plot(pv(1,:),pv(4+ioh,:)); xlabel('time'); -ylabel('Mole Fraction'); -title('OH Mole Fraction'); +ylabel('Mass Fraction'); +title('OH Mass Fraction'); diff --git a/Cantera/matlab/cantera/examples/ignite2.m b/Cantera/matlab/cantera/examples/ignite2.m index 8bbcd0ee8..dfbb58855 100755 --- a/Cantera/matlab/cantera/examples/ignite2.m +++ b/Cantera/matlab/cantera/examples/ignite2.m @@ -102,5 +102,5 @@ figure(2); ioh = speciesIndex(gas,'OH'); plot(pv(1,:),pv(4+ioh,:)); xlabel('time'); -ylabel('Mole Fraction'); -title('OH Mole Fraction'); +ylabel('Mass Fraction'); +title('OH Mass Fraction'); diff --git a/Cantera/matlab/cantera/examples/ignite3.m b/Cantera/matlab/cantera/examples/ignite3.m index da4f7e0fb..770049084 100755 --- a/Cantera/matlab/cantera/examples/ignite3.m +++ b/Cantera/matlab/cantera/examples/ignite3.m @@ -23,7 +23,7 @@ out = ode15s(@conuv,tel,y0,options,gas,mw); disp(['CPU time = ' num2str(cputime - t0)]); if nargout == 0 - % plot the temperature and OH mole fractions. + % plot the temperature and OH mass fractions. figure(1); plot(out.x,out.y(1,:)); xlabel('time'); @@ -34,7 +34,7 @@ if nargout == 0 ioh = speciesIndex(gas,'OH'); plot(out.x,out.y(1+ioh,:)); xlabel('time'); - ylabel('Mole Fraction'); - title('OH Mole Fraction'); + ylabel('Mass Fraction'); + title('OH Mass Fraction'); end diff --git a/Cantera/matlab/cantera/examples/ignite_hp.m b/Cantera/matlab/cantera/examples/ignite_hp.m index dabf2e8cf..b38ce2282 100755 --- a/Cantera/matlab/cantera/examples/ignite_hp.m +++ b/Cantera/matlab/cantera/examples/ignite_hp.m @@ -33,6 +33,6 @@ if nargout == 0 ioh = speciesIndex(gas,'OH'); plot(out.x,out.y(1+ioh,:)); xlabel('time'); - ylabel('Mole Fraction'); - title('OH Mole Fraction'); + ylabel('Mass Fraction'); + title('OH Mass Fraction'); end diff --git a/Cantera/matlab/cantera/examples/ignite_uv.m b/Cantera/matlab/cantera/examples/ignite_uv.m index 6843368e6..e5a310332 100755 --- a/Cantera/matlab/cantera/examples/ignite_uv.m +++ b/Cantera/matlab/cantera/examples/ignite_uv.m @@ -32,7 +32,7 @@ if nargout == 0 ioh = speciesIndex(gas,'OH'); plot(out.x,out.y(1+ioh,:)); xlabel('time'); - ylabel('Mole Fraction'); - title('OH Mole Fraction'); + ylabel('Mass Fraction'); + title('OH Mass Fraction'); end diff --git a/Cantera/matlab/cantera/examples/test_examples.m b/Cantera/matlab/cantera/examples/test_examples.m new file mode 100644 index 000000000..6f59901c6 --- /dev/null +++ b/Cantera/matlab/cantera/examples/test_examples.m @@ -0,0 +1,12 @@ +% runs selected examples without pausing +equil(0); +isentropic(0); +reactor1(0); +reactor2(0); +surfreactor; +periodic_cstr; +rankine(300.0, 2.0*oneatm, 0.8, 0.7); +prandtl1(0); +flame1; +catcomb; +exit; diff --git a/Cantera/matlab/cantera/private/ctfunctions.cpp b/Cantera/matlab/cantera/private/ctfunctions.cpp index b0423d84e..82e0f437d 100644 --- a/Cantera/matlab/cantera/private/ctfunctions.cpp +++ b/Cantera/matlab/cantera/private/ctfunctions.cpp @@ -20,7 +20,7 @@ void ctfunctions( int nlhs, mxArray *plhs[], { int job = getInt(prhs[1]); - int j, m, iok, id; + int j, m, iok, id, dbg, validate; char *file, *key, *val; char *infile, *dbfile, *trfile, *outfile, *idtag; @@ -31,7 +31,7 @@ void ctfunctions( int nlhs, mxArray *plhs[], // convert CK file to CTI case 1: - if (nrhs < 6) { + if (nrhs < 8) { mexErrMsgTxt("Wrong number of inputs."); return; } @@ -39,8 +39,9 @@ void ctfunctions( int nlhs, mxArray *plhs[], dbfile = getString(prhs[3]); trfile = getString(prhs[4]); idtag = getString(prhs[5]); - - iok = -1; //ck_to_cti(infile, dbfile, trfile, idtag); + dbg = getInt(prhs[6]); + validate = getInt(prhs[7]); + iok = ck_to_cti(infile, dbfile, trfile, idtag, dbg, validate); break; // get Cantera error diff --git a/Cantera/matlab/cantera/private/ctmatutils.h b/Cantera/matlab/cantera/private/ctmatutils.h index 03a24942e..ffabe9d40 100755 --- a/Cantera/matlab/cantera/private/ctmatutils.h +++ b/Cantera/matlab/cantera/private/ctmatutils.h @@ -1,6 +1,9 @@ const double Undef = -999.123; //const double DERR = -999.999; +#include +using namespace std; + void reportError(); void checkNArgs(const int n, const int nrhs); @@ -21,12 +24,16 @@ inline char* getString(const mxArray* p) { int m = mxGetM(p); int n = mxGetN(p); int buflen = m*n + 1; - + string msg; + if (m == 1) { input_buf = (char*)mxCalloc(buflen, sizeof(char)); status = mxGetString(p, input_buf, buflen); - if(status != 0) - mexWarnMsgTxt("Not enough space. String is truncated."); + if(status != 0) { + msg = string(input_buf) + + "\nNot enough space. String is truncated."; + mexWarnMsgTxt(msg.c_str()); + } } else { mexErrMsgTxt("string must be a row vector"); diff --git a/Cantera/matlab/cantera/private/ctmethods.cpp b/Cantera/matlab/cantera/private/ctmethods.cpp index 07b0d883a..1ac76f56e 100644 --- a/Cantera/matlab/cantera/private/ctmethods.cpp +++ b/Cantera/matlab/cantera/private/ctmethods.cpp @@ -9,8 +9,8 @@ * class is indicated by the first parameter in the call from MATLAB. */ -#include "mex.h" #include "../../../clib/src/ct.h" +#include "mex.h" #include "ctmatutils.h" #include "mllogger.h" #include "../../../src/global.h" @@ -32,6 +32,7 @@ const int FLOWDEVICE_CLASS = 80; const int ONEDIM_CLASS = 90; const int SURF_CLASS = 100; const int FUNC_CLASS = 110; +const int MIXTURE_CLASS = 120; void ctfunctions( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ); @@ -45,6 +46,9 @@ void thermomethods( int nlhs, mxArray *plhs[], int nrhs, void phasemethods( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ); +void mixturemethods( int nlhs, mxArray *plhs[], int nrhs, + const mxArray *prhs[] ); + void surfmethods( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ); @@ -106,6 +110,8 @@ extern "C" { thermomethods(nlhs, plhs, nrhs, prhs); break; case PHASE_CLASS: phasemethods(nlhs, plhs, nrhs, prhs); break; + case MIXTURE_CLASS: + mixturemethods(nlhs, plhs, nrhs, prhs); break; case KINETICS_CLASS: kineticsmethods(nlhs, plhs, nrhs, prhs); break; case TRANSPORT_CLASS: diff --git a/Cantera/matlab/cantera/private/mixturemethods.cpp b/Cantera/matlab/cantera/private/mixturemethods.cpp new file mode 100644 index 000000000..a5a91c35d --- /dev/null +++ b/Cantera/matlab/cantera/private/mixturemethods.cpp @@ -0,0 +1,173 @@ + +#include "mex.h" +#include "../../../clib/src/ctmultiphase.h" +#include "../../../clib/src/ct.h" +#include "ctmatutils.h" +#include +using namespace std; + + void mixturemethods( int nlhs, mxArray *plhs[], + int nrhs, const mxArray *prhs[] ) + { + int j, m, iok, n; + char *file, *key, *val; + + int job = getInt(prhs[1]); + int i = getInt(prhs[2]); + + double r = Undef; + double v = Undef; + if (nrhs > 3 && job != 8 && job != 22 && job != 23) + v = getDouble(prhs[3]); + + // constructor + if (job == 0) { + n = mix_new(); + plhs[0] = mxCreateNumericMatrix(1,1,mxDOUBLE_CLASS,mxREAL); + double *h = mxGetPr(plhs[0]); + *h = double(n); + if (n < 0) reportError(); + return; + } + + // options that do not return a value + double moles, err; + char *nmstr, *XY, *nm; + int maxiter, maxsteps, loglevel; + if (job < 15) { + switch (job) { + + case 1: + iok = mix_del(i); + break; + case 2: + iok = mix_copy(i); + break; + case 3: + iok = mix_assign(i, int(v)); + break; + case 4: + checkNArgs(5, nrhs); + moles = getDouble(prhs[4]); + iok = mix_addPhase(i, int(v), moles); + break; + case 5: + iok = mix_setTemperature(i, v); + break; + case 6: + iok = mix_setPressure(i, v); + break; + case 7: + checkNArgs(5, nrhs); + moles = getDouble(prhs[4]); + iok = mix_setPhaseMoles(i, int(v)-1, moles); + break; + case 8: + checkNArgs(4, nrhs); + nmstr = getString(prhs[3]); + iok = mix_setMolesByName(i, nmstr); + break; + default: + mexErrMsgTxt("unknown job parameter"); + } + plhs[0] = mxCreateNumericMatrix(1,1,mxDOUBLE_CLASS,mxREAL); + double *h = mxGetPr(plhs[0]); + *h = double(iok); + if (iok < 0) reportError(); + return; + } + + + // options that return a value of type 'double' + + else if (job < 40) { + switch (job) { + case 19: + r = mix_nPhases(i); + break; + case 21: + r = mix_nElements(i); + break; + case 22: + checkNArgs(4, nrhs); + nm = getString(prhs[3]); + r = mix_elementIndex(i, nm)+1; + break; + case 23: + checkNArgs(5, nrhs); + m = getInt(prhs[3]); + n = getInt(prhs[4]); + r = mix_speciesIndex(i, m-1, n-1)+1; + break; + case 24: + r = mix_nSpecies(i); + break; + case 25: + r = mix_temperature(i); + break; + case 26: + r = mix_pressure(i); + break; + case 27: + m = getInt(prhs[4]); + r = mix_nAtoms(i,int(v), m); + break; + case 28: + r = mix_phaseMoles(i, int(v)-1); + break; + case 29: + r = mix_speciesMoles(i, int(v)-1); + break; + case 30: + r = mix_elementMoles(i, int(v)-1); + break; + case 31: + checkNArgs(8, nrhs); + XY = getString(prhs[3]); + err = getDouble(prhs[4]); + maxsteps = getInt(prhs[5]); + maxiter = getInt(prhs[6]); + loglevel = getInt(prhs[7]); + r = mix_equilibrate(i, XY, err, maxsteps, + maxiter, loglevel); + break; + default: + mexErrMsgTxt("unknown job parameter"); + } + plhs[0] = mxCreateNumericMatrix(1,1,mxDOUBLE_CLASS,mxREAL); + double *h = mxGetPr(plhs[0]); + *h = r; + if (r == Undef) reportError(); + return; + } + + // species properties + else if (job < 60) { + + int iok = 0; + int nsp = mix_nSpecies(i); + double* x = new double[nsp]; + switch (job) { + case 41: + iok = mix_getChemPotentials(i,nsp,x); + break; + default: + ; + } + plhs[0] = mxCreateNumericMatrix(nsp,1, + mxDOUBLE_CLASS,mxREAL); + double *h = mxGetPr(plhs[0]); + if (iok >= 0) { + for (int i = 0; i < nsp; i++) h[i] = x[i]; + delete x; + return; + } + else { + for (int i = 0; i < nsp; i++) h[i] = -999.99; + delete x; + mexErrMsgTxt("unknown attribute"); + return; + } + } + } + diff --git a/Cantera/matlab/cantera/private/onedimmethods.cpp b/Cantera/matlab/cantera/private/onedimmethods.cpp index e683bccd1..af60b8a24 100644 --- a/Cantera/matlab/cantera/private/onedimmethods.cpp +++ b/Cantera/matlab/cantera/private/onedimmethods.cpp @@ -27,17 +27,18 @@ void onedimmethods( int nlhs, mxArray *plhs[], int idom, icomp, localPoint; if (job < 10) { - int ph, kin, tr, nd, sz, k, *ptrs; + int ph, kin, tr, itype, nd, sz, k, *ptrs; switch (job) { // construct a new stagnation flow instance case 1: - checkNArgs(6, nrhs); + checkNArgs(7, nrhs); ph = getInt(prhs[3]); kin = getInt(prhs[4]); tr = getInt(prhs[5]); - indx = stflow_new(ph, kin, tr); + itype = getInt(prhs[6]); + indx = stflow_new(ph, kin, tr, itype); break; // construct a new Inlet1D instance @@ -99,6 +100,12 @@ void onedimmethods( int nlhs, mxArray *plhs[], //writelog("done\n"); break; + // construct a new OutletRes1D instance + case -2: + checkNArgs(3,nrhs); + indx = outletres_new(); + break; + default: mexErrMsgTxt("onedimmethods: unknown object type"); } diff --git a/Cantera/matlab/cantera/private/phasemethods.cpp b/Cantera/matlab/cantera/private/phasemethods.cpp index e36ef0d32..582153d8f 100644 --- a/Cantera/matlab/cantera/private/phasemethods.cpp +++ b/Cantera/matlab/cantera/private/phasemethods.cpp @@ -15,7 +15,7 @@ int status, buflen; char* input_buf; double* ptr; - int n, nsp, mjob; + int n, nsp, mjob, show_thermo; // methods to set attributes if (job < 0) { @@ -93,6 +93,9 @@ case 31: iok = phase_setMassFractionsByName(ph, input_buf); break; + case 32: + iok = phase_setName(ph, input_buf); + break; default: mexErrMsgTxt("what?"); } @@ -135,6 +138,10 @@ k = getInt(prhs[3]); m = getInt(prhs[4]); vv = phase_nAtoms(ph,k-1,m-1); break; + case 15: + show_thermo = getInt(prhs[3]); + vv = write_phase(ph,show_thermo); + break; default: ok = false; } @@ -228,6 +235,11 @@ output_buf = (char*)mxCalloc(buflen, sizeof(char)); iok = phase_getElementName(ph, mel-1, buflen, output_buf); break; + case 42: + buflen = 40; + output_buf = (char*)mxCalloc(buflen, sizeof(char)); + iok = phase_getName(ph, buflen, output_buf); + break; default: iok = -1; } diff --git a/Cantera/matlab/cantera/private/thermomethods.cpp b/Cantera/matlab/cantera/private/thermomethods.cpp index 3b9b33180..571ceab3d 100644 --- a/Cantera/matlab/cantera/private/thermomethods.cpp +++ b/Cantera/matlab/cantera/private/thermomethods.cpp @@ -6,9 +6,9 @@ static void thermoset( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { - if (nrhs != 4) { - mexErrMsgTxt("wrong number of input parameters."); - } + //if (nrhs != 4) { + // mexErrMsgTxt("wrong number of input parameters."); + //} int ierr = 0; double vv; int th = getInt(prhs[1]); @@ -60,8 +60,12 @@ static void thermoset( int nlhs, mxArray *plhs[], // equilibrate else if (job == 50) { - int xy = int(*ptr); - ierr = th_equil(th, xy); + int xy = getInt(prhs[3]); //int(*ptr); + int solver = getInt(prhs[4]); + double rtol = getDouble(prhs[5]); + int maxsteps = getInt(prhs[6]); + int loglevel = getInt(prhs[7]); + ierr = th_equil(th, xy, solver, rtol, maxsteps, loglevel); } if (ierr < 0) reportError(); diff --git a/Cantera/matlab/cantera/private/write.cpp b/Cantera/matlab/cantera/private/write.cpp index e56dd72da..92191151a 100644 --- a/Cantera/matlab/cantera/private/write.cpp +++ b/Cantera/matlab/cantera/private/write.cpp @@ -11,7 +11,7 @@ namespace Cantera { int n = 0; while (ch != '\0') { if (ch =='\n') { - ss += "');"; + ss += " ');"; mexEvalString(ss.c_str()); ss = "disp('"; } diff --git a/Cantera/matlab/cantera/tutorial/tut1.m b/Cantera/matlab/cantera/tutorial/tut1.m index d92c7751d..8d2290eba 100755 --- a/Cantera/matlab/cantera/tutorial/tut1.m +++ b/Cantera/matlab/cantera/tutorial/tut1.m @@ -11,70 +11,77 @@ help tut1 gas1 = GRI30 -% If you have successfully installed the Cantera toolbox, -% you should see something like this: -% -% -% temperature 300 K -% pressure 101325 Pa -% density 0.081896 kg/m^3 -% mean mol. weight 2.01594 amu -% -% X Y -% ------------- ------------ -% H2 1.000000e+000 1.000000e+000 -% H 0.000000e+000 0.000000e+000 -% O 0.000000e+000 0.000000e+000 -% O2 0.000000e+000 0.000000e+000 -% OH 0.000000e+000 0.000000e+000 -% H2O 0.000000e+000 0.000000e+000 -% HO2 0.000000e+000 0.000000e+000 -% H2O2 0.000000e+000 0.000000e+000 -% C 0.000000e+000 0.000000e+000 -% CH 0.000000e+000 0.000000e+000 -% CH2 0.000000e+000 0.000000e+000 -% CH2(S) 0.000000e+000 0.000000e+000 -% CH3 0.000000e+000 0.000000e+000 -% CH4 0.000000e+000 0.000000e+000 -% CO 0.000000e+000 0.000000e+000 -% CO2 0.000000e+000 0.000000e+000 -% HCO 0.000000e+000 0.000000e+000 -% CH2O 0.000000e+000 0.000000e+000 -% CH2OH 0.000000e+000 0.000000e+000 -% CH3O 0.000000e+000 0.000000e+000 -% CH3OH 0.000000e+000 0.000000e+000 -% C2H 0.000000e+000 0.000000e+000 -% C2H2 0.000000e+000 0.000000e+000 -% C2H3 0.000000e+000 0.000000e+000 -% C2H4 0.000000e+000 0.000000e+000 -% C2H5 0.000000e+000 0.000000e+000 -% C2H6 0.000000e+000 0.000000e+000 -% HCCO 0.000000e+000 0.000000e+000 -% CH2CO 0.000000e+000 0.000000e+000 -% HCCOH 0.000000e+000 0.000000e+000 -% N 0.000000e+000 0.000000e+000 -% NH 0.000000e+000 0.000000e+000 -% NH2 0.000000e+000 0.000000e+000 -% NH3 0.000000e+000 0.000000e+000 -% NNH 0.000000e+000 0.000000e+000 -% NO 0.000000e+000 0.000000e+000 -% NO2 0.000000e+000 0.000000e+000 -% N2O 0.000000e+000 0.000000e+000 -% HNO 0.000000e+000 0.000000e+000 -% CN 0.000000e+000 0.000000e+000 -% HCN 0.000000e+000 0.000000e+000 -% H2CN 0.000000e+000 0.000000e+000 -% HCNN 0.000000e+000 0.000000e+000 -% HCNO 0.000000e+000 0.000000e+000 -% HOCN 0.000000e+000 0.000000e+000 -% HNCO 0.000000e+000 0.000000e+000 -% NCO 0.000000e+000 0.000000e+000 -% N2 0.000000e+000 0.000000e+000 -% AR 0.000000e+000 0.000000e+000 -% C3H7 0.000000e+000 0.000000e+000 -% C3H8 0.000000e+000 0.000000e+000 -% CH2CHO 0.000000e+000 0.000000e+000 -% CH3CHO 0.000000e+000 0.000000e+000 +% If you have successfully installed the Cantera toolbox, you should +%see something like this: +% temperature 300 K +% pressure 101325 Pa +% density 0.081889 kg/m^3 +% mean mol. weight 2.01588 amu +% +% 1 kg 1 kmol +% ----------- ------------ +% enthalpy 26470.1 5.336e+04 J +% internal energy -1.21088e+06 -2.441e+06 J +% entropy 64914 1.309e+05 J/K +% Gibbs function -1.94477e+07 -3.92e+07 J +% heat capacity c_p 14311.8 2.885e+04 J/K +% heat capacity c_v 10187.3 2.054e+04 J/K +% +% X Y Chem. Pot. / RT +% ------------- ------------ ------------ +% H2 1 1 -15.7173 +% H 0 0 +% O 0 0 +% O2 0 0 +% OH 0 0 +% H2O 0 0 +% HO2 0 0 +% H2O2 0 0 +% C 0 0 +% CH 0 0 +% CH2 0 0 +% CH2(S) 0 0 +% CH3 0 0 +% CH4 0 0 +% CO 0 0 +% CO2 0 0 +% HCO 0 0 +% CH2O 0 0 +% CH2OH 0 0 +% CH3O 0 0 +% CH3OH 0 0 +% C2H 0 0 +% C2H2 0 0 +% C2H3 0 0 +% C2H4 0 0 +% C2H5 0 0 +% C2H6 0 0 +% HCCO 0 0 +% CH2CO 0 0 +% HCCOH 0 0 +% N 0 0 +% NH 0 0 +% NH2 0 0 +% NH3 0 0 +% NNH 0 0 +% NO 0 0 +% NO2 0 0 +% N2O 0 0 +% HNO 0 0 +% CN 0 0 +% HCN 0 0 +% H2CN 0 0 +% HCNN 0 0 +% HCNO 0 0 +% HOCN 0 0 +% HNCO 0 0 +% NCO 0 0 +% N2 0 0 +% AR 0 0 +% C3H7 0 0 +% C3H8 0 0 +% CH2CHO 0 0 +% CH3CHO 0 0 % % What you have just done is to create an object ("gas1") that % implements GRI-Mech 3.0, the 53-species, 325-reaction natural gas @@ -101,7 +108,7 @@ gas1 = GRI30 % Setting the state % ----------------- -% The state of the object can easily be changed. For example, +% The state of the object can be easily changed. For example, setTemperature(gas1, 1200) @@ -141,14 +148,14 @@ setTemperature(gas1, 1200) % on an object. In MATLAB, methods take the object as the first % argument.) -set(gas1, 'Temperature', 900.0, 'Pressure', 1.e5) +set(gas1, 'Temperature', 900.0, 'Pressure', 1.e5); % This statement sets both temperature and pressure at the same % time. Any number of property/value pairs can be specified in a % call to 'set'. For example, the following sets the mole fractions % too: set(gas1, 'Temperature', 900.0, 'Pressure', 1.e5, 'MoleFractions', ... - 'CH4:1,O2:2,N2:7.52') + 'CH4:1,O2:2,N2:7.52'); % The 'set' method also accepts abbreviated property names: @@ -156,17 +163,75 @@ set(gas1,'T',900.0,'P',1.e5,'X','CH4:1,O2:2,N2:7.52') % Either version results in % -% temperature 900 K -% pressure 100000 Pa -% density 0.3693 kg/m^3 -% mean mol. weight 27.6332 amu -% -% X Y -% ------------- ------------ -% O2 1.901141e-001 2.201489e-001 -% CH4 9.505703e-002 5.518732e-002 -% N2 7.148289e-001 7.246638e-001 -% +% temperature 900 K +% pressure 100000 Pa +% density 0.369279 kg/m^3 +% mean mol. weight 27.6332 amu +% +% 1 kg 1 kmol +% ----------- ------------ +% enthalpy 455660 1.259e+07 J +% internal energy 184862 5.108e+06 J +% entropy 8529.31 2.357e+05 J/K +% Gibbs function -7.22072e+06 -1.995e+08 J +% heat capacity c_p 1304.4 3.604e+04 J/K +% heat capacity c_v 1003.52 2.773e+04 J/K +% +% X Y Chem. Pot. / RT +% ------------- ------------ ------------ +% H2 0 0 +% H 0 0 +% O 0 0 +% O2 0.190114 0.220149 -27.9596 +% OH 0 0 +% H2O 0 0 +% HO2 0 0 +% H2O2 0 0 +% C 0 0 +% CH 0 0 +% CH2 0 0 +% CH2(S) 0 0 +% CH3 0 0 +% CH4 0.095057 0.0551863 -37.0813 +% CO 0 0 +% CO2 0 0 +% HCO 0 0 +% CH2O 0 0 +% CH2OH 0 0 +% CH3O 0 0 +% CH3OH 0 0 +% C2H 0 0 +% C2H2 0 0 +% C2H3 0 0 +% C2H4 0 0 +% C2H5 0 0 +% C2H6 0 0 +% HCCO 0 0 +% CH2CO 0 0 +% HCCOH 0 0 +% N 0 0 +% NH 0 0 +% NH2 0 0 +% NH3 0 0 +% NNH 0 0 +% NO 0 0 +% NO2 0 0 +% N2O 0 0 +% HNO 0 0 +% CN 0 0 +% HCN 0 0 +% H2CN 0 0 +% HCNN 0 0 +% HCNO 0 0 +% HOCN 0 0 +% HNCO 0 0 +% NCO 0 0 +% N2 0.714829 0.724665 -24.935 +% AR 0 0 +% C3H7 0 0 +% C3H8 0 0 +% CH2CHO 0 0 +% CH3CHO 0 0 % Other properties may also be set using 'set', including some that % can't be set individually. The following property pairs may be diff --git a/Cantera/matlab/cantera/tutorial/tut4.m b/Cantera/matlab/cantera/tutorial/tut4.m index 5d63c1c98..51dc02409 100755 --- a/Cantera/matlab/cantera/tutorial/tut4.m +++ b/Cantera/matlab/cantera/tutorial/tut4.m @@ -11,7 +11,7 @@ help tut4 % 'equilibrate' method. % g = GRI30; -set(g,'T',300.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52') +set(g,'T',1200.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52') equilibrate(g,'TP') % The above statement sets the state of object 'g' to the state of @@ -19,21 +19,26 @@ equilibrate(g,'TP') % fixed. Alternatively, the specific enthalpy and pressure can be held % fixed: -set(g,'T',300.0,'P',oneatm,'X','CH4:0.95,O2:2.0,N2:7.52'); +disp('fixed H and P:'); +set(g,'T',1200.0,'P',oneatm,'X','CH4:0.95,O2:2.0,N2:7.52'); equilibrate(g,'HP') + % Other options are % 'UV' fixed specific internal energy and specific volume % 'SV' fixed specific entropy and specific volume % 'SP' fixed specific entropy and pressure -set(g,'T',300.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); +disp('fixed U and V:'); +set(g,'T',1200.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); equilibrate(g,'UV') -set(g,'T',300.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); +disp('fixed S and V:'); +set(g,'T',1200.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); equilibrate(g,'SV') -set(g,'T',300.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); +disp('fixed S and P:'); +set(g,'T',1200.0,'P',oneatm,'X','CH4:0.95,O2:2,N2:7.52'); equilibrate(g,'SP') % How can you tell if 'equilibrate' has correctly found the diff --git a/Cantera/matlab/setup_matlab.py.in b/Cantera/matlab/setup_matlab.py.in index 0a1ca9236..2b04c4117 100644 --- a/Cantera/matlab/setup_matlab.py.in +++ b/Cantera/matlab/setup_matlab.py.in @@ -13,9 +13,10 @@ f.close() fb = open('cantera/buildux.m','w') fb.write(""" disp('building Cantera..'); -mex private/ctmethods.cpp private/ctfunctions.cpp ... +mex -v private/ctmethods.cpp private/ctfunctions.cpp ... private/xmlmethods.cpp private/phasemethods.cpp ... private/thermomethods.cpp private/kineticsmethods.cpp ... + private/mixturemethods.cpp ... private/transportmethods.cpp private/reactormethods.cpp ... private/reactornetmethods.cpp ... private/wallmethods.cpp private/flowdevicemethods.cpp ... diff --git a/Cantera/python/Cantera/Kinetics.py b/Cantera/python/Cantera/Kinetics.py index da7b564d2..905deb812 100755 --- a/Cantera/python/Cantera/Kinetics.py +++ b/Cantera/python/Cantera/Kinetics.py @@ -52,17 +52,16 @@ class Kinetics: p4 = phases[4].thermophase() if np >= 6: raise CanteraError("a maximum of 4 neighbor phases allowed") - + self.ckin = _cantera.KineticsFromXML(xml_phase, p0, p1, p2, p3, p4) for nn in range(self._np): - p = self.phase(nn) + p = phases[nn] # self.phase(nn) self._phnum[p.thermophase()] = nn self._end.append(self._end[-1]+p.nSpecies()) for k in range(p.nSpecies()): self._sp.append(p.speciesName(k)) - def __del__(self): self.clear() @@ -141,7 +140,10 @@ class Kinetics: nur = _cantera.kin_rstoichcoeff(self.ckin,k,i) if nur <> 0.0: if nur <> 1.0: - s += `int(nur)`+' ' + if nur <> round(nur): + s += `nur`+' ' + else: + s += `int(nur)`+' ' s += self._sp[k]+' + ' s = s[:-2] if self.isReversible(i): @@ -152,7 +154,10 @@ class Kinetics: nup = _cantera.kin_pstoichcoeff(self.ckin,k,i) if nup <> 0.0: if nup <> 1.0: - s += `int(nup)`+' ' + if nup <> round(nup): + s += `nup`+' ' + else: + s += `int(nup)`+' ' s += self._sp[k]+' + ' s = s[:-2] return s diff --git a/Cantera/python/Cantera/OneD/BurnerFlame.py b/Cantera/python/Cantera/OneD/BurnerFlame.py index 19d738454..44e87cb09 100644 --- a/Cantera/python/Cantera/OneD/BurnerFlame.py +++ b/Cantera/python/Cantera/OneD/BurnerFlame.py @@ -55,7 +55,7 @@ class BurnerFlame(Stack): t0 = self.burner.temperature() # get adiabatic flame temperature and composition - gas.equilibrate('HP') + gas.equilibrate('HP',solver=1) teq = gas.temperature() yeq = gas.massFractions() u1 = self.burner.mdot()/gas.density() diff --git a/Cantera/python/Cantera/OneD/FreeFlame.py b/Cantera/python/Cantera/OneD/FreeFlame.py new file mode 100644 index 000000000..f6d1c4661 --- /dev/null +++ b/Cantera/python/Cantera/OneD/FreeFlame.py @@ -0,0 +1,135 @@ +from onedim import * +from Cantera import _cantera + +from Cantera.num import array, zeros + +class FreeFlame(Stack): + """A freely-propagating flat flame.""" + + def __init__(self, gas = None, grid = None, tfix = 500.0): + """ + gas -- object to use to evaluate all gas properties and reaction + rates. Required + grid -- array of initial grid points + + A domain of type FreeFlame named 'flame' will be created to + represent the flame. The three domains comprising the stack + are stored as self.inlet, self.flame, and self.outlet. + """ + + self.inlet = Inlet('burner') + self.gas = gas + self.inlet.set(temperature = gas.temperature()) + self.outlet = Outlet('outlet') + self.pressure = gas.pressure() + + # type 2 is Cantera C++ class FreeFlame + self.flame = AxisymmetricFlow('flame',gas = gas,type=2) + + self.flame.setupGrid(grid) + Stack.__init__(self, [self.inlet, self.flame, self.outlet]) + self.setRefineCriteria() + self._initialized = 0 + self.tfix = tfix + + + def init(self): + """Set the initial guess for the solution. The adiabatic flame + temperature and equilibrium composition are computed for the + inlet gas composition. The temperature profile rises linearly + in the first 20% of the flame to Tad, then is flat. The mass + fraction profiles are set similarly. + """ + self.getInitialSoln() + gas = self.gas + nsp = gas.nSpecies() + yin = zeros(nsp, 'd') + for k in range(nsp): + yin[k] = self.inlet.massFraction(k) + gas.setState_TPY(self.inlet.temperature(), self.pressure, yin) + u0 = self.inlet.mdot()/gas.density() + t0 = self.inlet.temperature() + + # get adiabatic flame temperature and composition + gas.equilibrate('HP',solver=1) + teq = gas.temperature() + yeq = gas.massFractions() + u1 = self.inlet.mdot()/gas.density() + + z1 = 0.5 + locs = array([0.0, 0.3, z1, 1.0],'d') + self.setProfile('u', locs, [u0, u0, u1, u1]) + self.setProfile('T', locs, [t0, t0, teq, teq]) + self.setFixedTemperature(self.tfix) + for n in range(nsp): + self.setProfile(gas.speciesName(n), locs, [yin[n], yin[n], + yeq[n], yeq[n]]) + self._initialized = 1 + + + def solve(self, loglevel = 1, refine_grid = 1): + """Solve the flame. See Stack.solve""" + if not self._initialized: self.init() + Stack.solve(self, loglevel = loglevel, refine_grid = refine_grid) + + + def setRefineCriteria(self, ratio = 10.0, slope = 0.8, + curve = 0.8, prune = 0.0): + """See Stack.setRefineCriteria""" + Stack.setRefineCriteria(self, domain = self.flame, + ratio = ratio, slope = slope, curve = curve, + prune = prune) + + def setFixedTemperature(self, temp): + _cantera.sim1D_setFixedTemperature(self._hndl, temp) + + def setProfile(self, component, locs, vals): + """Set a profile in the flame""" + self._initialized = 1 + Stack.setProfile(self, self.flame, component, locs, vals) + + def set(self, tol = None, energy = '', tol_time = None): + """Set parameters. + tol -- (rtol, atol) for steady-state + tol_time -- (rtol, atol) for time stepping + energy -- 'on' or 'off' to enable or disable the energy equation + """ + if tol: + self.flame.setTolerances(default = tol) + if tol_time: + self.flame.setTolerances(default = tol_time, time = 1) + if energy: + self.flame.set(energy = energy) + + def T(self, point = -1): + """Temperature profile or value at one point.""" + return self.solution('T', point) + + def u(self, point = -1): + """Axial velocity profile or value at one point.""" + return self.solution('u', point) + + def V(self, point = -1): + """Radial velocity profile or value at one point.""" + return self.solution('V', point) + + def solution(self, component = '', point = -1): + """Solution component at one point, or full profile if no + point specified.""" + if point >= 0: return self.value(self.flame, component, point) + else: return self.profile(self.flame, component) + + def setGasState(self, j): + """Set the state of the object representing the gas to the + current solution at grid point j.""" + nsp = self.gas.nSpecies() + y = zeros(nsp, 'd') + for n in range(nsp): + nm = self.gas.speciesName(n) + y[n] = self.solution(nm, j) + self.gas.setState_TPY(self.T(j), self.pressure, y) + + + + + diff --git a/Cantera/python/Cantera/OneD/onedim.py b/Cantera/python/Cantera/OneD/onedim.py index dcbda3639..10f2fd9bf 100644 --- a/Cantera/python/Cantera/OneD/onedim.py +++ b/Cantera/python/Cantera/OneD/onedim.py @@ -371,12 +371,12 @@ class AxisymmetricFlow(Domain1D): allowed, as well as arbitrary variation of the transport properties. """ - def __init__(self, id = 'axisymmetric_flow', gas = None): + def __init__(self, id = 'axisymmetric_flow', gas = None, type = 1): Domain1D.__init__(self) iph = gas.thermo_hndl() ikin = gas.kinetics_hndl() itr = gas.transport_hndl() - self._hndl = _cantera.stflow_new(iph, ikin, itr) + self._hndl = _cantera.stflow_new(iph, ikin, itr, type) if id: self.setID(id) self._p = -1.0 self.setPressure(gas.pressure()) @@ -676,6 +676,10 @@ class Stack: """Set the maximum and minimum time steps.""" return _cantera.sim1D_setTimeStepLimits(self._hndl, tsmin, tsmax) + def setFixedTemperature(self, temp): + """This is a temporary fix.""" + _cantera.sim1D_setFixedTemperature(self._hndl, temp) + def clearDomains(): """Clear all domains.""" _cantera.domain_clear() diff --git a/Cantera/python/Cantera/Phase.py b/Cantera/python/Cantera/Phase.py index ec027223d..5590eed0a 100755 --- a/Cantera/python/Cantera/Phase.py +++ b/Cantera/python/Cantera/Phase.py @@ -12,6 +12,14 @@ from exceptions import CanteraError __revision__ = "$Id$" +# return true is x is a sequence +def _isseq(n, x): + try: + y = x[n-1] + return 1 + except: + return 0 + class Phase: """Phases of matter. @@ -224,6 +232,10 @@ class Phase: def setDensity(self, rho): """Set the density [kg/m3].""" _cantera.phase_setfp(self._phase_id,2,rho) + + def setMolarDensity(self, n): + """Set the density [kmol/m3].""" + _cantera.phase_setfp(self._phase_id,3,n) def setMoleFractions(self, x, norm = 1): """Set the mole fractions. @@ -241,9 +253,11 @@ class Phase: """ if type(x) == types.StringType: _cantera.phase_setstring(self._phase_id,1,x) - else: + elif _isseq(self.nSpecies(), x): _cantera.phase_setarray(self._phase_id,1,norm,asarray(x)) - + else: + raise CanteraError('mole fractions must be a string or array') + def setMassFractions(self, x, norm = 1): """Set the mass fractions. @@ -251,8 +265,11 @@ class Phase: """ if type(x) == types.StringType: _cantera.phase_setstring(self._phase_id,2,x) - else: - _cantera.phase_setarray(self._phase_id,2,norm,asarray(x)) + elif _isseq(self.nSpecies(), x): + _cantera.phase_setarray(self._phase_id,2,norm,asarray(x)) + else: + raise CanteraError('mass fractions must be a string or array') + def setState_TRX(self, t, rho, x): """Set the temperature, density, and mole fractions. The mole @@ -264,6 +281,16 @@ class Phase: self.setMoleFractions(x) self.setDensity(rho) + def setState_TNX(self, t, n, x): + """Set the temperature, molardensity, and mole fractions. The mole + fractions may be entered as a string or array, + >>> ph.setState_TNX(600.0, 2.0e-3, 'CH4:0.4, O2:0.6') + """ + + self.setTemperature(t) + self.setMoleFractions(x) + self.setMolarDensity(n) + def setState_TRY(self, t, rho, y): """Set the temperature, density, and mass fractions.""" self.setTemperature(t) @@ -293,7 +320,7 @@ class Phase: fs.append(f[k]) return asarray(fs) else: - return f + return asarray(f) def selectElements(self, f, elements): """Given an array 'f' of floating-point element properties, @@ -310,5 +337,5 @@ class Phase: fs.append(f[k]) return asarray(fs) else: - return f + return asarray(f) diff --git a/Cantera/python/Cantera/ThermoPhase.py b/Cantera/python/Cantera/ThermoPhase.py index 8be4ff66d..604f7ecf5 100644 --- a/Cantera/python/Cantera/ThermoPhase.py +++ b/Cantera/python/Cantera/ThermoPhase.py @@ -269,7 +269,8 @@ class ThermoPhase(Phase): """Set the electric potential.""" _cantera.thermo_setfp(self._phase_id, 6, v, 0); - def equilibrate(self, XY): + def equilibrate(self, XY, solver = 0, rtol = 1.0e-9, + maxsteps = 1000, loglevel = 0): """Set to a state of chemical equilibrium holding property pair 'XY' constant. The pair is specified by a two-letter string, which must be one of the set @@ -279,7 +280,7 @@ class ThermoPhase(Phase): """ ixy = ThermoPhase._equilmap[XY] if ixy > 0: - _cantera.thermo_equil(self._phase_id, ixy) + _cantera.thermo_equil(self._phase_id, ixy, solver, rtol, maxsteps, loglevel) else: raise 'invalid equilibrium option: '+XY diff --git a/Cantera/python/Cantera/__init__.py b/Cantera/python/Cantera/__init__.py index 4429cfb53..244386d3e 100755 --- a/Cantera/python/Cantera/__init__.py +++ b/Cantera/python/Cantera/__init__.py @@ -4,15 +4,13 @@ """ import types +import _cantera from constants import * from exceptions import * from gases import * from set import set from importFromFile import * -from mixture import Mixture -from num import * - def writeCSV(f, list): """ Write list items to file 'f' in @@ -40,17 +38,25 @@ def table(keys, values): def getCanteraError(): """Return the Cantera error message, if any.""" - import _cantera return _cantera.get_Cantera_Error() def refCount(a): """Return the reference count for an object.""" - import _cantera return _cantera.ct_refcnt(a) def addDirectory(dir): """Add a directory to search for Cantera data files.""" - import _cantera return _cantera.ct_addDirectory(dir) +def writeLogFile(file): + return _cantera.ct_writelogfile(file) + +# workaround for case problems in CVS repository file Mixture.py. On some +# systems it appears as mixture.py, and on others as Mixture.py +try: + from Mixture import Mixture +except: + from mixture import Mixture + +from num import * diff --git a/Cantera/python/Cantera/ck2cti.py b/Cantera/python/Cantera/ck2cti.py new file mode 100644 index 000000000..6bf936477 --- /dev/null +++ b/Cantera/python/Cantera/ck2cti.py @@ -0,0 +1,34 @@ +import _cantera + +""" +Convert a Chemkin-format input file to CTI format. +Parameters: + +infile - name of the Chemkin-format input file. + +thermodb - Thermodynamic database. This may be a standard + Chemkin-format thermo database, or may be any + Chemkin-format input file containing a THERMO section. + +trandb - Transport database. File containing species transport + parameters in Chemkin format. If this argument is omitted, + the CTI file will not contain transport property information. + +idtag - ID tag. Used to identify the ideal_gas entry in the CTI file. Optional. + +debug - If set to 1, extra debugging output will be written. This + should only be used if ck2cti fails, in order to view + intermediate output of the parser. Default: off (0). + +validate - If set to 1, the mechanism will be checked for errors. This + is recommended, but for very large mechanisms may slow down + the conversion process. Default: on (1). + +The translated file is written to the standard output. +""" + +def ck2cti(infile = "chem.inp", thermodb = "", trandb + = "", idtag = "", debug = 0, validate = 1): + _cantera.ct_ck2cti(infile, + thermodb, trandb, idtag, debug, validate) + diff --git a/Cantera/python/Cantera/constants.py b/Cantera/python/Cantera/constants.py index 7534e9bfc..c0ebb015b 100755 --- a/Cantera/python/Cantera/constants.py +++ b/Cantera/python/Cantera/constants.py @@ -6,7 +6,7 @@ Physical Constants OneAtm = 101325.0 # The ideal gas constant in J/kmo-K -GasConstant = 8314.0 +GasConstant = 8314.47215 # Avogadro's Number, /kmol Avogadro = 6.022136736e26 diff --git a/Cantera/python/Cantera/mixture.py b/Cantera/python/Cantera/mixture.py index e0cb85c7e..41301afd5 100644 --- a/Cantera/python/Cantera/mixture.py +++ b/Cantera/python/Cantera/mixture.py @@ -6,10 +6,11 @@ import _cantera import types from Cantera.num import zeros, array, asarray from exceptions import CanteraError +from Cantera import writeLogFile class Mixture: """ - xxx Multiphase mixtures. Class Mixture represents + Multiphase mixtures. Class Mixture represents mixtures of one or more phases of matter. To construct a mixture, supply a list of phases to the constructor, each paired with the number of moles for that phase: @@ -180,14 +181,14 @@ class Mixture: def setPhaseMoles(self, n, moles): """Set the number of moles of phase n.""" _cantera.mix_setPhaseMoles(self.__mixid, n, moles) - def setMoles(self, moles): + def setSpeciesMoles(self, moles): """Set the moles of the species [kmol]. The moles may be specified either as a string, or as an array. If an array is used, it must be dimensioned at least as large as the total number of species in the mixture. Note that the species may belong to any phase, and unspecified species are set to zero. - >>> mix.setMoles('C(s):1.0, CH4:2.0, O2:0.2') + >>> mix.setSpeciesMoles('C(s):1.0, CH4:2.0, O2:0.2') """ if type(moles) == types.StringType: @@ -197,7 +198,7 @@ class Mixture: def speciesMoles(self, species = ""): """Moles of species k.""" - moles = array(self.nSpecies(),'d') + moles = zeros(self.nSpecies(),'d') for k in range(self.nSpecies()): moles[k] = _cantera.mix_speciesMoles(self.__mixid, k) return self.selectSpecies(moles, species) @@ -227,30 +228,64 @@ class Mixture: else: raise CanteraError("unknown property: "+o) - def equilibrate(self, XY = "TP", err = 1.0e-9, maxiter = 1000): + def equilibrate(self, XY = "TP", err = 1.0e-9, + maxsteps = 1000, maxiter = 200, loglevel = 0): """Set the mixture to a state of chemical equilibrium. - This method uses the VCS algorithm to find the composition - that minimizes the total Gibbs free energy of the mixture, - subject to element conservation constraints. For a description - of the theory, see Smith and Missen, "Chemical Reaction - Equilibrium." The VCS algorithm is implemented in Cantera - kernel class MultiPhaseEquil. + This method uses a version of the VCS algorithm to find the + composition that minimizes the total Gibbs free energy of the + mixture, subject to element conservation constraints. For a + description of the theory, see Smith and Missen, "Chemical + Reaction Equilibrium." The VCS algorithm is implemented in + Cantera kernel class MultiPhaseEquil. + + The VCS algorithm solves for the equilibrium composition for + specified temperature and pressure. If any other property pair + other than "TP" is specified, then an outer iteration loop is + used to adjust T and/or P so that the specified property + values are obtained. XY - Two-letter string specifying the two properties to hold fixed. - Currently, only TP (constant T and P) is implemented. Default: "TP". + Currently, 'TP', 'HP', and 'SP' are implemented. Default: 'TP'. err - Error tolerance. Iteration will continue until (Delta mu)/RT is less than this value for each reaction. Default: - 1.0e-9. + 1.0e-9. Note that this default is very conservative, and good + equilibrium solutions may be obtained with larger error + tolerances. - maxiter - Maximum number of iterations to attempt. Default: 1000. + maxsteps - Maximum number of steps to take while solving the + equilibrium problem for specified T and P. Default: 1000. + + maxiter - Maximum number of temperature and/or pressure iterations. + This is only relevant if a property pair other than (T,P) is + specified. Default: 200. + + loglevel - Controls the amount of diagnostic output. If + loglevel = 0, no diagnostic output is written. For values > 0, + more detailed information is written to the log file as + loglevel increases. The default is loglevel = 0. + + The logfile is written in HTML format, and may be viewed with + any web browser. The default log file name is + "equilibrium_log.html", but if this file exists, the log + information will be written to "equilibrium_log{n}.html", + where {n} is an integer chosen so that the log file does not + already exist. Therefore, if 'equilibrate' is called multiple + times, multiple log files will be written, with names + "equilibrate_log.html", "equilibrate_log1.html", + "equilibrate_log2.html", and so on. Existing log files will + not be overwritten. + >>> mix.equilibrate('TP') >>> mix.equilibrate('TP', err = 1.0e-6, maxiter = 500) """ - return _cantera.mix_equilibrate(self.__mixid, XY, err, maxiter) + i = _cantera.mix_equilibrate(self.__mixid, XY, err, maxsteps, + maxiter, loglevel) + if loglevel > 0: + writeLogFile("equilibrate_log"); def selectSpecies(self, f, species): """Given an array 'f' of floating-point species properties, @@ -263,12 +298,12 @@ class Mixture: sp = [] if species: if type(species) == types.StringType: - sp = [sp] + sp = [species] else: sp = species fs = [] k = 0 - for s in s: + for s in sp: k = self.speciesIndex(s) fs.append(f[k]) return asarray(fs) diff --git a/Cantera/python/Cantera/num.py b/Cantera/python/Cantera/num.py index c5ed378d9..ab6efebfa 100644 --- a/Cantera/python/Cantera/num.py +++ b/Cantera/python/Cantera/num.py @@ -1,26 +1,27 @@ - +import _cantera nummodule = None + try: - import numarray - nummodule = numarray -except: - try: + if _cantera.nummod == 'numarray': + import numarray + nummodule = numarray + else: import Numeric nummodule = Numeric - except: - print """ +except: + print """ - ERROR: numarray / numeric not found! + ERROR: """+_cantera.nummod+""" not found! Cantera uses a set of numerical extensions to Python, but these do not appear to be present on your system. To install the required package, go to http://sourceforge.net/projects/numpy, and install - either the numarray or Numeric package for your system. If you are + either the """+_cantera.nummod+""" package for your system. If you are using a Windows system, use the binary installer to install the selected package for you automatically. """ - raise "could not import numarray or Numeric" + raise "could not import "+_cantera.nummod zeros = nummodule.zeros array = nummodule.array diff --git a/Cantera/python/Makefile.in b/Cantera/python/Makefile.in index 180948059..904a692fe 100755 --- a/Cantera/python/Makefile.in +++ b/Cantera/python/Makefile.in @@ -15,7 +15,10 @@ python_site_package_topdir=@python_prefix@ CANTERA_LIBDIR= @buildlib@ LIB_DEPS = $(CANTERA_LIBDIR)/libcantera.a $(CANTERA_LIBDIR)/libzeroD.a \ $(CANTERA_LIBDIR)/liboneD.a \ - $(CANTERA_LIBDIR)/libtransport.a + $(CANTERA_LIBDIR)/libtransport.a \ + $(CANTERA_LIBDIR)/libclib.a \ + $(CANTERA_LIBDIR)/libconverters.a + WIN_LIB_DEPS = $(CANTERA_LIBDIR)/cantera.lib $(CANTERA_LIBDIR)/zeroD.lib \ $(CANTERA_LIBDIR)/oneD.lib \ $(CANTERA_LIBDIR)/transport.lib @@ -40,7 +43,7 @@ all: _build win: _winbuild -_build: $(SRCS) $(LIB_DEPS) +_build: $(SRCS) $(LIB_DEPS) Makefile touch src/pycantera.cpp (CXX=@CXX@; export CXX; CC=@CC@; export CC; @PYTHON_CMD@ setup.py build) echo 'ok' > _build diff --git a/Cantera/python/ctml_writer.py b/Cantera/python/ctml_writer.py index d951fc05b..69c1c4ea2 100644 --- a/Cantera/python/ctml_writer.py +++ b/Cantera/python/ctml_writer.py @@ -199,17 +199,25 @@ _pref = 1.0e5 # 1 bar _name = 'noname' # these lists store top-level entries +_elements = [] _species = [] _speciesnames = [] _phases = [] _reactions = [] _atw = {} - +_enames = {} _valsp = '' _valrxn = '' +_valexport = '' +_valfmt = '' - +def export_species(file, fmt = 'CSV'): + global _valexport + global _valfmt + _valexport = file + _valfmt = fmt + def validate(species = 'yes', reactions = 'yes'): global _valsp global _valrxn @@ -265,7 +273,12 @@ def write(): v = x.addChild("validate") v["species"] = _valsp v["reactions"] = _valrxn - + + if _elements: + ed = x.addChild("elementData") + for e in _elements: + e.build(ed) + for ph in _phases: ph.build(x) s = species_set(name = _name, species = _species) @@ -281,6 +294,11 @@ def write(): else: print x + if _valexport: + f = open(_valexport,'w') + for s in _species: + s.export(f, _valfmt) + f.close() def addFloat(x, nm, val, fmt='', defunits=''): """ @@ -320,20 +338,65 @@ def getAtomicComp(atoms): return d def getReactionSpecies(s): + """Take a reaction string and return a + dictionary mapping species names to stoichiometric + coefficients. If any species appears more than once, + the returned stoichiometric coefficient is the sum. + >>> s = 'CH3 + 3 H + 5.2 O2 + 0.7 H' + >>> getReactionSpecies(s) + >>> {'CH3':1, 'H':3.7, 'O2':5.2} + """ + + # get rid of the '+' signs separating species. Only plus signs + # surrounded by spaces are replaced, so that plus signs may be + # used in species names (e.g. 'Ar3+') toks = s.replace(' + ',' ').split() d = {} - n = 1 + n = 1.0 for t in toks: - if t > '0' and t < '9': - n = int(t) - else: - if d.has_key(t): - d[t] += n + + # try to convert the token to a number. + try: + n = float(t) + if n <= 0.0: + raise CTI_Error("zero or negative stoichiometric coefficient:" + +s) + + #if t > '0' and t < '9': + # n = int(t) + #else: + + # token isn't a number, so it must be a species name + except: + if d.has_key(t): # already seen this token + d[t] += n # so increment its value by the last + # value of n else: - d[t] = n - n = 1 + d[t] = n # first time this token has been seen, + # so set its value to n + + n = 1 # reset n to 1.0 for species that do not + # specify a stoichiometric coefficient return d + +class element: + def __init__(self, symbol = '', + atomic_mass = 0.01, + atomic_number = 0): + self._sym = symbol + self._atw = atomic_mass + self._num = atomic_number + global _elements + _elements.append(self) + + def build(self, db): + e = db.addChild("element") + e["name"] = self._sym + e["atomicWt"] = `self._atw` + e["atomicNumber"] = `self._num` + + class species_set: def __init__(self, name = '', species = []): self._s = species @@ -384,12 +447,33 @@ class species: # self.type = SPECIES global _species + global _enames _species.append(self) global _speciesnames if name in _speciesnames: raise CTI_Error('species '+name+' multiply defined.') _speciesnames.append(name) - + for e in self._atoms.keys(): + _enames[e] = 1 + + def export(self, f, fmt = 'CSV'): + global _enames + if fmt == 'CSV': + str = self._name+',' + for e in _enames: + if self._atoms.has_key(e): + str += `self._atoms[e]`+',' + else: + str += '0,' + f.write(str) + if type(self._thermo) == types.InstanceType: + self._thermo.export(f, fmt) + else: + nt = len(self._thermo) + for n in range(nt): + self._thermo[n].export(f, fmt) + f.write('\n') + def build(self, p): hdr = ' species '+self._name+' ' @@ -425,6 +509,8 @@ class thermo: """Base class for species standard-state thermodynamic properties.""" def _build(self, p): return p.addChild("thermo") + def export(self, f, fmt = 'CSV'): + pass class NASA(thermo): @@ -438,7 +524,14 @@ class NASA(thermo): raise CTI_Error('NASA coefficient list must have length = 7') self._coeffs = coeffs - + + def export(self, f, fmt='CSV'): + if fmt == 'CSV': + str = 'NASA,'+`self._t[0]`+','+`self._t[1]`+',' + for i in range(7): + str += '%17.9E, ' % self._coeffs[i] + f.write(str) + def build(self, t): n = t.addChild("NASA") n['Tmin'] = `self._t[0]` @@ -786,7 +879,6 @@ class reaction: unit_fctr = (math.pow(_length[_ulen], -ldim) * math.pow(_moles[_umol], -mdim) / _time[_utime]) - if type(kf) == types.InstanceType: k = kf else: @@ -1320,6 +1412,64 @@ class incompressible_solid(phase): k['model'] = 'none' +class lattice: + def __init__(self, name = '', site_density = -1.0, + vacancy_species = ''): + self._name = name + self._n = site_density + self._vac = vacancy_species + if name == '': + raise CTI_Error('sublattice name must be specified') + if site_density < 0.0: + raise CTI_Error('sublattice '+name + +' site density must be specified') + def build(self,p): + lat = p.addChild('Lattice') + lat['name'] = self._name + addFloat(lat, 'site_density', self._n, defunits = _umol+'/'+_ulen+'3') + if self._vac: + lat.addChild('vacancy_species',self._vac) + + +class lattice_solid(phase): + """A solid crystal consisting of one or more sublattices.""" + def __init__(self, + name = '', + elements = '', + species = '', + lattices = [], + transport = 'None', + initial_state = None, + options = []): + + phase.__init__(self, name, 3, elements, species, 'none', + initial_state, options) + self._lattices = lattices + if lattices == []: + raise CTI_Error('One or more sublattices must be specified.') + self._pure = 0 + self._tr = transport + + def conc_dim(self): + return (0,0) + + def build(self, p): + ph = phase.build(self, p) + e = ph.addChild("thermo") + e['model'] = 'LatticeSolid' + + if self._lattices: + lat = e.addChild('LatticeArray') + for n in self._lattices: + n.build(lat) + + if self._tr: + t = ph.addChild('transport') + t['model'] = self._tr + k = ph.addChild("kinetics") + k['model'] = 'none' + + class liquid_vapor(phase): """A fluid with a complete liquid/vapor equation of state. This entry type selects one of a set of predefined fluids with @@ -1485,105 +1635,3 @@ if __name__ == "__main__": execfile(file) write() - -########################################## -# -# $Author$ -# $Revision$ -# $Date$ -# $Log$ -# Revision 1.9 2005-01-08 22:28:01 dggoodwin -# *** empty log message *** -# -# Revision 1.8 2004/12/02 22:11:28 dggoodwin -# *** empty log message *** -# -# Revision 1.7 2004/11/15 02:33:21 dggoodwin -# changed f90 mod file handling in Makefiles -# -# Revision 1.6 2004/09/29 11:00:39 dggoodwin -# *** empty log message *** -# -# Revision 1.5 2004/09/20 10:25:02 dggoodwin -# *** empty log message *** -# -# Revision 1.4 2004/07/14 11:24:13 dggoodwin -# *** empty log message *** -# -# Revision 1.3 2004/06/09 01:02:31 dggoodwin -# *** empty log message *** -# -# Revision 1.2 2004/06/04 06:05:31 dggoodwin -# *** empty log message *** -# -# Revision 1.1 2004/06/02 04:39:09 dggoodwin -# moved ctml_writer.py out of Cantera package -# -# Revision 1.34 2004/05/30 04:02:55 dggoodwin -# converted to pure python -# -# Revision 1.33 2004/04/23 19:03:21 dggoodwin -# *** empty log message *** -# -# Revision 1.32 2004/04/23 16:35:32 dggoodwin -# *** empty log message *** -# -# Revision 1.31 2004/03/12 05:59:59 dggoodwin -# *** empty log message *** -# -# Revision 1.30 2004/02/08 13:25:21 dggoodwin -# *** empty log message *** -# -# Revision 1.29 2004/02/08 13:22:31 dggoodwin -# *** empty log message *** -# -# Revision 1.28 2004/02/08 13:09:10 dggoodwin -# *** empty log message *** -# -# Revision 1.27 2004/02/03 16:42:54 dggoodwin -# *** empty log message *** -# -# Revision 1.26 2004/02/03 03:31:06 dggoodwin -# *** empty log message *** -# -# Revision 1.25 2003/11/24 16:39:33 dggoodwin -# - -# -# Revision 1.24 2003/11/13 12:29:45 dggoodwin -# *** empty log message *** -# -# Revision 1.23 2003/11/12 18:58:15 dggoodwin -# *** empty log message *** -# -# Revision 1.22 2003/11/01 04:48:20 dggoodwin -# added capability to have species names with embedded commas -# -# Revision 1.21 2003/10/14 06:48:07 dggoodwin -# *** empty log message *** -# -# Revision 1.20 2003/09/22 13:14:34 dggoodwin -# *** empty log message *** -# -# Revision 1.19 2003/08/26 03:39:02 dggoodwin -# *** empty log message *** -# -# Revision 1.18 2003/08/21 14:29:53 dggoodwin -# *** empty log message *** -# -# Revision 1.17 2003/08/20 15:35:32 dggoodwin -# *** empty log message *** -# -# Revision 1.16 2003/08/19 22:02:01 hkmoffa -# Fixed an error in an argument list -# -# Revision 1.15 2003/08/18 05:05:02 dggoodwin -# added support for specified reaction order, sticking coefficients, -# coverage dependence of rate coefficients; fixed error where site_density -# was not being converted to SI. -# -# Revision 1.14 2003/08/16 20:17:21 dggoodwin -# changed handling of reaction pre-exponential units to write converted -# value to CTML, rather than pass original value with a units string -# -# -########################################### diff --git a/Cantera/python/examples/equilibrium/KOH.cti b/Cantera/python/examples/equilibrium/KOH.cti new file mode 100644 index 000000000..ff7a208cd --- /dev/null +++ b/Cantera/python/examples/equilibrium/KOH.cti @@ -0,0 +1,70 @@ + +units(length = "cm", time = "s", quantity = "mol", act_energy = "cal/mol") + + + +# ideal gas containing all gaseous species in the NASA database +# that contain the elements K, O, and H. "Element" E is included +# too for charged species. +ideal_gas(name = "KOH_plasma", + elements = " K O H E", + species = """nasa_gas: all""", + options = ["skip_undeclared_elements"], + initial_state = state(temperature = 300.0, + pressure = OneAtm) ) + +# solid potassium +stoichiometric_solid(name = "K_solid", + elements = "K", + density = (0.86,'g/cm3'), + species = "nasa_condensed: K(cr)") + +# liquid potassium +stoichiometric_liquid(name = "K_liquid", + elements = "K", + density = (1.0,'g/cm3'), + species = "nasa_condensed: K(L)") + +# potassium hydroxide "a" +stoichiometric_solid(name = "KOH_a", + elements = "K O H", + density = (2.04,'g/cm3'), + species = "nasa_condensed: KOH(a)") + +# potassium hydroxide "b" +stoichiometric_solid(name = "KOH_b", + elements = "K O H", + density = (1.0,'g/cm3'), + species = "nasa_condensed: KOH(b)") + +# liquid potassium hydroxide +stoichiometric_liquid(name = "KOH_liquid", + elements = "K O H", + density = (1.0,'g/cm3'), + species = "nasa_condensed: KOH(L)") + +stoichiometric_solid(name = "K2O2_solid", + elements = "K O", + density = (1.0,'g/cm3'), + species = "nasa_condensed: K2O2(s)") + +stoichiometric_solid(name = "K2O_solid", + elements = "K O", + density = (1.0,'g/cm3'), + species = "nasa_condensed: K2O(s)") + +stoichiometric_solid(name = "KO2_solid", + elements = "K O", + density = (1.0,'g/cm3'), + species = "nasa_condensed: KO2(s)") + +stoichiometric_solid(name = "ice", + elements = "H O", + density = (0.917,'g/cm3'), + species = "nasa_condensed: H2O(s)") + +stoichiometric_liquid(name = "liquid_water", + elements = "H O", + density = (1.0,'g/cm3'), + species = "nasa_condensed: H2O(L)") + diff --git a/Cantera/python/examples/equilibrium/adiabatic.py b/Cantera/python/examples/equilibrium/adiabatic.py new file mode 100644 index 000000000..ab9586e9c --- /dev/null +++ b/Cantera/python/examples/equilibrium/adiabatic.py @@ -0,0 +1,100 @@ +""" +Adiabatic flame temperature and equilibrium composition for a +fuel/air mixture as a function of equivalence ratio, +including formation of solid carbon. +""" + +from Cantera import * +import sys + +############################################################## +# +# Edit these parameters to change the initial temperature, the +# pressure, and the phases in the mixture +# +############################################################### + +temp = 300.0 +pres = 101325.0 + +# phases +gas = importPhase('gri30.cti') +carbon = importPhase('graphite.cti') + +# the phases that will be included in the calculation, and their +# initial moles +mix_phases = [ (gas, 1.0), (carbon, 0.0) ] + +# gaseous fuel species +fuel_species = 'CH4' + +# air composition +air_N2_O2_ratio = 3.76 + +# equivalence ratio range +phi_min = 0.3 +phi_max = 3.5 +npoints = 50 + +################################################## + + +mix = Mixture(mix_phases) +nsp = mix.nSpecies() + +# create some arrays to hold the data +phi = zeros(npoints,'d') +tad = zeros(npoints,'d') +xeq = zeros([nsp,npoints],'d') + +# find fuel, nitrogen, and oxygen indices +ifuel, io2, in2 = gas.speciesIndex([fuel_species, 'O2', 'N2']) +if ifuel < 0: + raise "fuel species "+fuel_species+" not present!" + +if gas.nAtoms(fuel_species,'O') > 0 or gas.nAtoms(fuel_species,'N') > 0: + raise "Error: only hydrocarbon fuels are supported." + +stoich_O2 = gas.nAtoms(fuel_species,'C') + 0.25*gas.nAtoms(fuel_species,'H') + + +for i in range(npoints): + phi[i] = phi_min + (phi_max - phi_min)*i/(npoints - 1) + x = zeros(nsp,'d') + x[ifuel] = phi[i] + x[io2] = stoich_O2 + x[in2] = stoich_O2*air_N2_O2_ratio + + # set the gas state + gas.set(T = temp, P = pres, X = x) + + # create a mixture of 1 mole of gas, and 0 moles of solid carbon. + mix = Mixture(mix_phases) + mix.setTemperature(temp) + mix.setPressure(pres) + + # equilibrate the mixture adiabatically at constant P + mix.equilibrate('HP', maxsteps = 1000, + err = 1.0e-6, maxiter = 200, loglevel=0) + + tad[i] = mix.temperature(); + print 'At phi = %12.4g, Tad = %12.4g' % (phi[i],tad[i]) + xeq[:,i] = mix.speciesMoles() + + +# write output CSV file for importing into Excel + +csvfile = 'adiabatic.csv' +f = open(csvfile,'w') +writeCSV(f,['T (K)']+mix.speciesNames()) +for n in range(npoints): + writeCSV(f,[phi[n], tad[n]]+list(xeq[:,n])) +f.close() +print 'output written to '+csvfile + + +# make plots +if '--plot' in sys.argv: + import plotting + plotting.plotEquilData(mix, phi, tad, xeq) + diff --git a/Cantera/python/examples/equilibrium/multiphase_plasma.py b/Cantera/python/examples/equilibrium/multiphase_plasma.py new file mode 100644 index 000000000..0311a09c5 --- /dev/null +++ b/Cantera/python/examples/equilibrium/multiphase_plasma.py @@ -0,0 +1,40 @@ +# An equilibrium example with charged species in the gas phase +# and multiple condensed phases. + +from Cantera import * + +# create objects representing the gas phase and the condensed +# phases. The gas is a mixture of multiple species, and the condensed +# phases are all modeled as incompressible stoichiometric +# substances. See file KOH.cti for more information. +phases = importPhases('KOH.cti', + ['K_solid', + 'K_liquid', 'KOH_a', 'KOH_b', + 'KOH_liquid', 'K2O2_solid', + 'K2O_solid', 'KO2_solid', + 'ice', 'liquid_water','KOH_plasma']) + +# create the Mixture object from the list of phases +mix = Mixture(phases) + +# open the output file and write the column headings +f = open('equil_koh.csv','w') +writeCSV(f,['T']+mix.speciesNames()) + +# loop over temperature +for n in range(500): + t = 350.0 + 10.0*n + print 'T = ',t + mix.set(T= t, P = OneAtm, Moles="K:1.03, H2:2.12, O2:0.9") + + # set the mixture to a state of chemical equilibrium holding + # temperature and pressure fixed + mix.equilibrate("TP",maxsteps=1000,loglevel=0) + + # write out the moles of each species + writeCSV(f,[t]+ list(mix.speciesMoles())) + +# close the output file +f.close() + + diff --git a/Cantera/python/examples/equilibrium/plotting.py b/Cantera/python/examples/equilibrium/plotting.py new file mode 100644 index 000000000..3a8a7ccfe --- /dev/null +++ b/Cantera/python/examples/equilibrium/plotting.py @@ -0,0 +1,85 @@ + +from matplotlib.pylab import * +from matplotlib import get_backend, interactive +import sys + +# Print a warning if 'python' rather than 'pythonw' is invoked on a +# Mac. Does nothing on other platforms. +def warnMac(): + if sys.platform == 'darwin': + if sys.executable == '/usr/bin/python': + b = get_backend() + if b[-3:] == 'Agg': + print 'Error: on a Mac, this script must be run with pythonw instead of python' + print 'to display plots' + return -1 + return 0 + + +def plotEquilData(mix, phi, tad, xeq): + + if warnMac() < 0: return + npoints = len(phi) + + nsp = mix.nSpecies() + + #titles = ['Major Species', 'Minor Species', 'N Minor Species'] + # assign species to 3 plots + p = {} + mm = 0 + for k in range(nsp): + if amax(xeq[k,:]) > 0.01: + p[k] = 0 # major species plot + else: + mm += 1 + if mix.nAtoms(k,'N') <= 0: + p[k] = 1 # non-N minor species plot + else: + p[k] = 2 # N-containing minor species plot + + clf + subplot(2,2,1) + plot(phi,tad) + xlabel('Equivalence Ratio') + ylabel('Temperature (K)') + title('Adiabatic Flame Temperature') + axis([phi[1], phi[-1], amin(tad)-200.0, amax(tad)+200.0]) + + # do three species plots + for m in range(3): + + subplot(2,2,2+m); + hold(True); + + for i in range(nsp): + if p[i] == m: + for j in range(npoints): + if xeq[i,j] <= 0.0: + xeq[i,j] = 1.0e-20 + if m == 0: + plot(phi, xeq[i,:]) + else: + semilogy(phi,xeq[i,:]) + + xmax = amax(xeq[i,:]) + for j in range(npoints): + if xeq[i,j] == xmax: break + offset = 0.0 + if j == 0: + offset = 0.3 + elif j >= npoints-1: + offset = -0.3 + text(phi[j]+offset,xeq[i,j],mix.speciesName(i)) + + if m == 0: + axis([phi[1], phi[-1], 0.0, 1.0]); + else: + axis([phi[1], phi[-1], 1.0e-14, 1]); + + xlabel('Equivalence Ratio'); + ylabel('Mole Fraction'); + #title(titles[m]); + hold(False) + + show() + diff --git a/Cantera/python/examples/equilibrium/simple.py b/Cantera/python/examples/equilibrium/simple.py new file mode 100644 index 000000000..930322db5 --- /dev/null +++ b/Cantera/python/examples/equilibrium/simple.py @@ -0,0 +1,23 @@ +# homogeneous equilibrium of a gas + +from Cantera import * + +# create an object representing the gas phase +gas = importPhase("h2o2.cti") + +# set the initial state +gas.set(T = 2000.0, P = 0.1*OneAtm, X = "H2:1.0, O2:0.6") + +# equilibrate the gas holding T and P fixed +gas.equilibrate("TP") + +# print a summary of the results +print gas + +# Individual properties can also be retrieved... +x = gas.moleFractions() +y = gas.massFractions() +mu = gas.chemPotentials() +names = gas.speciesNames() +for n in range(gas.nSpecies()): + print "%20s %10.4g %10.4g %10.4g " % (names[n], x[n], y[n], mu[n]) diff --git a/Cantera/python/examples/equilibrium/stoich.py b/Cantera/python/examples/equilibrium/stoich.py new file mode 100644 index 000000000..ce08e49b8 --- /dev/null +++ b/Cantera/python/examples/equilibrium/stoich.py @@ -0,0 +1,61 @@ +# Equilibrium of a (nearly) stoichiometric hydrogen/oxygen mixture at +# fixed temperature. + +# Cantera has 2 different equilibrium solvers. The 'ChemEquil' solver +# uses the element potential method for homogeneous equilibrium in gas +# mixtures. It is fast, but sometimes doesn't converge. The +# 'MultiPhaseEquil' solver uses the VCS algorithm (Gibbs +# minimization), which is slower but more robust. As the name +# suggests, it can also handle multiple phases. Here we'll solve a +# problem for which the ChemEquil solver fails, but the +# MultiPhaseEquil solver has no problem. + +from Cantera import * + +# create an object representing the gas phase +gas = importPhase("h2o2.cti") + +temp = 400.0 + +# make the composition very close to stoichiometric +comp = "H2:1.00000001, O2:0.5" + +# set the initial state +gas.set(T = temp, P = OneAtm, X = comp) + +# equilibrate the gas holding T and P fixed. First try the default +# (ChemEquil) solver... (This will fail, throwing an exception that +# will be caught in the 'except' block, where we will try the other +# solver.) +try: + gas.equilibrate("TP") +except: + print "ChemEquil solver failed! Try the MultiPhaseEquil solver..." + + # Try again. Reset the gas to the initial state + gas.set(T = temp, P = OneAtm, X = comp) + + # setting parameter 'solver' to 1 requests that the + # MultiPhaseEquil solver be used (specifying 0 would cause + # ChemEquil to be used). Some other useful parameters are rtol + # (relative error tolerance, default = 1.0e-9), max_steps (default = 1000), + # loglevel (default = 0). + gas.equilibrate("TP", solver = 1, rtol = 1.0e-10, loglevel = 4) + +# print a summary of the results +print gas + + + +# To check that this is an equilibrium state, verify that the chemical +# potentials may be computed by summing the element potentials for each atom. +# (The element potentials are the chemical potentials of the atomic vapors.) + +mu_H2, mu_OH, mu_H2O, mu_O2, lambda_H, lambda_O = gas.chemPotentials( + ["H2", "OH", "H2O", "O2", "H", "O"]) + +print mu_H2, 2.0*lambda_H +print mu_O2, 2.0*lambda_O +print mu_OH, lambda_H + lambda_O +print mu_H2O, 2.0*lambda_H + lambda_O + diff --git a/Cantera/python/examples/flame1.py b/Cantera/python/examples/flame1.py index 904c461be..084ab061b 100755 --- a/Cantera/python/examples/flame1.py +++ b/Cantera/python/examples/flame1.py @@ -55,7 +55,7 @@ f.burner.set(massflux = mdot, mole_fractions = comp, temperature = tburner) f.set(tol = tol_ss, tol_time = tol_ts) f.setMaxJacAge(5, 10) f.set(energy = 'off') -f.init() +#f.init() f.showSolution() f.solve(loglevel, refine_grid) diff --git a/Cantera/python/examples/flames/adiabatic_flame.py b/Cantera/python/examples/flames/adiabatic_flame.py new file mode 100644 index 000000000..850728b07 --- /dev/null +++ b/Cantera/python/examples/flames/adiabatic_flame.py @@ -0,0 +1,84 @@ +# +# ADIABATIC_FLAME - A freely-propagating, premixed methane/air flat +# flame with multicomponent transport properties +# +from Cantera import * +from Cantera.OneD import * +from Cantera.OneD.FreeFlame import FreeFlame + +################################################################ +# +# parameter values +# +p = OneAtm # pressure +tin = 300.0 # unburned gas temperature +mdot = 0.04 # kg/m^2/s + +comp = 'CH4:0.45, O2:1, N2:3.76' # premixed gas composition + +initial_grid = [0.0, 0.001, 0.01, 0.02, 0.029, 0.03] # m + +tol_ss = [1.0e-5, 1.0e-9] # [rtol atol] for steady-state + # problem +tol_ts = [1.0e-5, 1.0e-4] # [rtol atol] for time stepping + +loglevel = 1 # amount of diagnostic output (0 + # to 5) + +refine_grid = 1 # 1 to enable refinement, 0 to + # disable + + +gas = GRI30('Mix') +gas.addTransportModel('Multi') + +# set its state to that of the unburned gas +gas.setState_TPX(tin, p, comp) + +f = FreeFlame(gas = gas, grid = initial_grid, tfix = 600.0) + +# set the upstream properties +f.inlet.set(mole_fractions = comp, temperature = tin) + +f.set(tol = tol_ss, tol_time = tol_ts) +f.showSolution() + +f.set(energy = 'off') +f.setRefineCriteria(ratio = 10.0, slope = 1, curve = 1) +f.setMaxJacAge(50, 50) +f.setTimeStep(1.0e-5, [1, 2, 5, 10, 20]) + +f.solve(loglevel, refine_grid) +f.save('ch4_adiabatic.xml','no_energy', + 'solution with the energy equation disabled') + +f.set(energy = 'on') +f.setRefineCriteria(ratio = 3.0, slope = 0.1, curve = 0.2) +f.solve(loglevel, refine_grid) +f.save('ch4_adiabatic.xml','energy', + 'solution with the energy equation enabled') +print 'mixture-averaged flamespeed = ',f.u()[0] + +gas.switchTransportModel('Multi') +f.flame.setTransportModel(gas) +f.solve(loglevel, refine_grid) +f.save('ch4_adiabatic.xml','energy_multi', + 'solution with the energy equation enabled and multicomponent transport') + +# write the velocity, temperature, density, and mole fractions to a CSV file +z = f.flame.grid() +T = f.T() +u = f.u() +V = f.V() +fcsv = open('adiabatic_flame.csv','w') +writeCSV(fcsv, ['z (m)', 'u (m/s)', 'V (1/s)', 'T (K)', 'rho (kg/m3)'] + + list(gas.speciesNames())) +for n in range(f.flame.nPoints()): + f.setGasState(n) + writeCSV(fcsv, [z[n], u[n], V[n], T[n], gas.density()] + +list(gas.moleFractions())) +fcsv.close() + +print 'solution saved to adiabatic_flame.csv' +print 'multicomponent flamespeed = ',u[0] +f.showStats() diff --git a/Cantera/python/examples/flames/flame1.py b/Cantera/python/examples/flames/flame1.py new file mode 100755 index 000000000..904c461be --- /dev/null +++ b/Cantera/python/examples/flames/flame1.py @@ -0,0 +1,88 @@ +# +# FLAME1 - A burner-stabilized flat flame +# +# This script simulates a burner-stablized lean hydrogen-oxygen flame +# at low pressure. +# +from Cantera import * +from Cantera.OneD import * +from Cantera.OneD.BurnerFlame import BurnerFlame + +################################################################ +# +# parameter values +# +p = 0.05*OneAtm # pressure +tburner = 373.0 # burner temperature +mdot = 0.06 # kg/m^2/s + +rxnmech = 'h2o2.cti' # reaction mechanism file +mix = 'ohmech' # gas mixture model +comp = 'H2:1.8, O2:1, AR:7' # premixed gas composition + +# The solution domain is chosen to be 50 cm, and a point very near the +# downstream boundary is added to help with the zero-gradient boundary +# condition at this boundary. +initial_grid = [0.0, 0.02, 0.04, 0.06, 0.08, 0.1, + 0.15, 0.2, 0.4, 0.49, 0.5] # m + +tol_ss = [1.0e-5, 1.0e-13] # [rtol atol] for steady-state + # problem +tol_ts = [1.0e-4, 1.0e-9] # [rtol atol] for time stepping + +loglevel = 1 # amount of diagnostic output (0 + # to 5) + +refine_grid = 1 # 1 to enable refinement, 0 to + # disable + + +################ create the gas object ######################## +# +# This object will be used to evaluate all thermodynamic, kinetic, +# and transport properties +# +gas = IdealGasMix(rxnmech, mix) + +# set its state to that of the unburned gas at the burner +gas.set(T = tburner, P = p, X = comp) + +f = BurnerFlame(gas = gas, grid = initial_grid) + +# set the properties at the burner +f.burner.set(massflux = mdot, mole_fractions = comp, temperature = tburner) + +f.set(tol = tol_ss, tol_time = tol_ts) +f.setMaxJacAge(5, 10) +f.set(energy = 'off') +f.init() +f.showSolution() + +f.solve(loglevel, refine_grid) + +f.setRefineCriteria(ratio = 200.0, slope = 0.05, curve = 0.1) +f.set(energy = 'on') +f.solve(loglevel,refine_grid) + +f.save('flame1.xml') +f.showSolution() + + +# write the velocity, temperature, and mole fractions to a CSV file +z = f.flame.grid() +T = f.T() +u = f.u() +V = f.V() +fcsv = open('flame1.csv','w') +writeCSV(fcsv, ['z (m)', 'u (m/s)', 'V (1/s)', 'T (K)', 'rho (kg/m3)'] + + list(gas.speciesNames())) +for n in range(f.flame.nPoints()): + f.setGasState(n) + writeCSV(fcsv, [z[n], u[n], V[n], T[n], gas.density()] + +list(gas.moleFractions())) +fcsv.close() + +print 'solution saved to flame1.csv' + +f.showStats() + diff --git a/Cantera/python/examples/flames/flame2.py b/Cantera/python/examples/flames/flame2.py new file mode 100755 index 000000000..a3bf9ebf1 --- /dev/null +++ b/Cantera/python/examples/flames/flame2.py @@ -0,0 +1,97 @@ +# +# FLAME2 - A burner-stabilized, premixed methane/air flat flame +# with multicomponent transport properties +# +from Cantera import * +from Cantera.OneD import * +from Cantera.OneD.BurnerFlame import BurnerFlame + +################################################################ +# +# parameter values +# +p = OneAtm # pressure +tburner = 373.7 # burner temperature +mdot = 0.04 # kg/m^2/s + +comp = 'CH4:0.65, O2:1, N2:3.76' # premixed gas composition + +# The solution domain is chosen to be 1 cm, and a point very near the +# downstream boundary is added to help with the zero-gradient boundary +# condition at this boundary. +initial_grid = [0.0, 0.0025, 0.005, 0.0075, 0.0099, 0.01] # m + +tol_ss = [1.0e-5, 1.0e-9] # [rtol atol] for steady-state + # problem +tol_ts = [1.0e-5, 1.0e-4] # [rtol atol] for time stepping + +loglevel = 1 # amount of diagnostic output (0 + # to 5) + +refine_grid = 1 # 1 to enable refinement, 0 to + # disable + + +################ create the gas object ######################## +# +# This object will be used to evaluate all thermodynamic, kinetic, and +# transport properties. It is created with two transport managers, to +# enable switching from mixture-averaged to multicomponent transport +# on the last solution. +gas = GRI30('Mix') +gas.addTransportModel('Multi') + +# set its state to that of the unburned gas at the burner +gas.setState_TPX(tburner, p, comp) + +f = BurnerFlame(gas = gas, grid = initial_grid) + +# set the properties at the burner +f.burner.set(massflux = mdot, mole_fractions = comp, temperature = tburner) + +f.set(tol = tol_ss, tol_time = tol_ts) +f.showSolution() + +f.set(energy = 'off') +f.setRefineCriteria(ratio = 10.0, slope = 1, curve = 1) +f.setMaxJacAge(50, 50) +f.setTimeStep(1.0e-5, [1, 2, 5, 10, 20]) + +f.solve(loglevel, refine_grid) +f.save('ch4_flame1.xml','no_energy', + 'solution with the energy equation disabled') + +f.set(energy = 'on') +f.setRefineCriteria(ratio = 3.0, slope = 0.1, curve = 0.2) +f.solve(loglevel, refine_grid) +f.save('ch4_flame1.xml','energy', + 'solution with the energy equation enabled') + +gas.switchTransportModel('Multi') +f.flame.setTransportModel(gas) +f.solve(loglevel, refine_grid) +f.save('ch4_flame1.xml','energy_multi', + 'solution with the energy equation enabled and multicomponent transport') + +# write the velocity, temperature, density, and mole fractions to a CSV file +z = f.flame.grid() +T = f.T() +u = f.u() +V = f.V() +fcsv = open('flame2.csv','w') +writeCSV(fcsv, ['z (m)', 'u (m/s)', 'V (1/s)', 'T (K)', 'rho (kg/m3)'] + + list(gas.speciesNames())) +for n in range(f.flame.nPoints()): + f.setGasState(n) + writeCSV(fcsv, [z[n], u[n], V[n], T[n], gas.density()] + +list(gas.moleFractions())) +fcsv.close() + +print 'solution saved to flame2.csv' + +f.showStats() + + + + + diff --git a/Cantera/python/examples/flames/stflame1.py b/Cantera/python/examples/flames/stflame1.py new file mode 100644 index 000000000..88bd4fee2 --- /dev/null +++ b/Cantera/python/examples/flames/stflame1.py @@ -0,0 +1,117 @@ +# +# STFLAME1 - A detached flat flame stabilized at a stagnation point +# + +# This script simulates a lean hydrogen-oxygen flame stabilized in +# a strained flowfield at an axisymmetric stagnation point on a +# non-reacting surface. The solution begins with a flame attached +# to the inlet (burner), and the mass flow rate is progressively +# increased, causing the flame to detach and move closer to the +# surface. This example illustrates use of the new 'prune' grid +# refinement parameter, which allows grid points to be removed if +# they are no longer required to resolve the solution. This is +# important here, since the flamefront moves as the mass flowrate +# is increased. Without using 'prune', a large number of grid +# points would be concentrated upsteam of the flame, where the +# flamefront had been previously. (To see this, try setting prune +# to zero.) + +from Cantera import * +from Cantera.OneD import * +from Cantera.OneD.StagnationFlow import StagnationFlow + +################################################################ +# +# parameter values +# +p = 0.05*OneAtm # pressure +tburner = 373.0 # burner temperature +tsurf = 600.0 + +# each mdot value will be solved to convergence, with grid refinement, +# and then that solution will be used for the next mdot +mdot = [0.06, 0.07, 0.08, 0.09, 0.1, 0.11, 0.12] # kg/m^2/s + +rxnmech = 'h2o2.cti' # reaction mechanism file +comp = 'H2:1.8, O2:1, AR:7' # premixed gas composition + +# The solution domain is chosen to be 50 cm, and a point very near the +# downstream boundary is added to help with the zero-gradient boundary +# condition at this boundary. +initial_grid = [0.0, 0.02, 0.04, 0.06, 0.08, 0.1, + 0.15, 0.2] # m + +tol_ss = [1.0e-5, 1.0e-13] # [rtol atol] for steady-state + # problem +tol_ts = [1.0e-4, 1.0e-9] # [rtol atol] for time stepping + +loglevel = 1 # amount of diagnostic output (0 + # to 5) + +refine_grid = 1 # 1 to enable refinement, 0 to + # disable +ratio = 5.0 +slope = 0.1 +curve = 0.2 +prune = 0.05 + + + +################ create the gas object ######################## +# +# This object will be used to evaluate all thermodynamic, kinetic, +# and transport properties +# +gas = IdealGasMix(rxnmech) + +# set its state to that of the unburned gas at the burner +gas.setState_TPX(tburner, p, comp) + +# Create the stagnation flow object with a non-reactive surface. (To +# make the surface reactive, supply a surface reaction mechanism. see +# example catcomb.py for how to do this.) +f = StagnationFlow(gas = gas, grid = initial_grid) + +# set the properties at the inlet +f.inlet.set(massflux = mdot[0], mole_fractions = comp, temperature = tburner) + +# set the surface state +f.surface.setTemperature(tsurf) + +f.set(tol = tol_ss, tol_time = tol_ts) +f.setMaxJacAge(5, 10) +f.set(energy = 'off') +f.init(products = 'equil') # assume adiabatic equilibrium products +f.showSolution() + +f.solve(loglevel, refine_grid) + +f.setRefineCriteria(ratio = ratio, slope = slope, + curve = curve, prune = prune) +f.set(energy = 'on') + +m = 0 +for md in mdot: + f.inlet.set(mdot = md) + f.solve(loglevel,refine_grid) + m = m + 1 + f.save('stflame1.xml','mdot'+`m`,'mdot = '+`md`+' kg/m2/s') + + + # write the velocity, temperature, and mole fractions to a CSV file + z = f.flow.grid() + T = f.T() + u = f.u() + V = f.V() + fcsv = open('stflame1_'+`m`+'.csv','w') + writeCSV(fcsv, ['z (m)', 'u (m/s)', 'V (1/s)', 'T (K)'] + + list(gas.speciesNames())) + for n in range(f.flow.nPoints()): + f.setGasState(n) + writeCSV(fcsv, [z[n], u[n], V[n], T[n]]+list(gas.moleFractions())) + fcsv.close() + + print 'solution saved to flame1.csv' + +f.showStats() + diff --git a/Cantera/python/examples/kinetics/ratecoeffs.py b/Cantera/python/examples/kinetics/ratecoeffs.py new file mode 100644 index 000000000..be0d0aea2 --- /dev/null +++ b/Cantera/python/examples/kinetics/ratecoeffs.py @@ -0,0 +1,48 @@ +# print forward and reverse rate coefficients for all reactions + +from Cantera import * + + +def show_rate_coefficients(mech, doIrrev = 0): + + """ Print the rate coefficients for a reaction mechanism. The + rate coefficients include all factors that multiply the reactant + concentrations in the law of mass action. The rate coefficients + may depend on temperature and/or pressure, and are evaluated at + the temperature and pressure of the object 'mech.' + + If doIrrev has a non-zero value, then the reverse rate coefficients + will be computed for all reactions, including irreversible + ones. Otherwise, the rate coefficients for irreversible reactions + will be set to zero. """ + + # get the array of forward rate coefficients + kf = mech.fwdRateConstants() + + # get the array of reverse rate coefficients + kr = mech.revRateConstants(doIrreversible = doIrrev) + + nr = mech.nReactions() + + # get the array of reaction equations + eqs = mech.reactionEqn(range(nr)) + + for i in range(nr): + print '%40s %12.5g %12.5g ' % (eqs[i], kf[i], kr[i]) + + print 'units: kmol, m, s' + + + +if __name__ == "__main__": + import sys + if len(sys.argv) == 2: + mech = importPhase(sys.argv[1]) + elif len(sys.argv) > 2: + mech = importPhase(sys.argv[1], sys.argv[2]) + else: + mech = GRI30() + + show_rate_coefficients(mech) + + diff --git a/Cantera/python/setup.py.in b/Cantera/python/setup.py.in index 7f96dcacd..feb6d381c 100644 --- a/Cantera/python/setup.py.in +++ b/Cantera/python/setup.py.in @@ -10,10 +10,21 @@ platform = sys.platform flibs = '@FLIBS@' #linkargs = '@LCXX_FLAGS@' +numarray_incl = "@NUMARRAY_INC_DIR@" + +incdirs=["../../build/include", "src", "../clib/src"] + +if numarray_incl <> '': + incdirs.append(numarray_incl) + + bllibstr = "@BLAS_LAPACK_LIBS@" bllibs = bllibstr.replace('-l',' ') bllist = bllibs.split() +extra_link = "@EXTRA_LINK@" +linkargs = extra_link.split() + bldirstr = "@LOCAL_LIB_DIRS@" bldirs = bldirstr.replace('-L',' ') dirlist = bldirs.split() @@ -23,7 +34,7 @@ for d in dirlist: if platform == "win32": libs = ["clib", "zeroD","oneD","transport", - "cantera","recipes"] + bllist + ["ctmath", "cvode", "tpx"] + "cantera","recipes"] + bllist + ["ctmath", "cvode", "tpx", "converters"] else: # The library 'g2c' is needed if the g77 Fortran compiler is @@ -32,40 +43,54 @@ else: # compiler is used, add the appropriate libraries here. libs = ["clib", "zeroD","oneD","transport", - "cantera","recipes"] + bllist + ["ctmath", "cvode", "tpx", + "cantera","recipes", "converters"] + bllist + ["ctmath", "cvode", "tpx", "stdc++", "g2c", "m"] +# values: +# 0 do nothing +# 1 install only ctml_writer.py +# 2 install full package +# 3 try to install full, but install ctml_writer if full package +# install fails +buildPython = @BUILD_PYTHON@ +if buildPython >= 2: -if @BUILD_PYTHON@ == 2: + try: + setup(name="Cantera", + version="@ctversion@", + description="The Cantera Python Interface", + long_description=""" + """, + author="Prof. D. G. Goodwin, Caltech", + author_email="dgoodwin@caltech.edu", + url="http://www.cantera.org", + package_dir = {'MixMaster':'../../apps/MixMaster'}, + packages = ["","Cantera","Cantera.OneD", + "MixMaster","MixMaster.Units"], + ext_modules=[ Extension("Cantera._cantera", + ["src/pycantera.cpp"], + include_dirs=incdirs, + library_dirs = libdir, + libraries = libs, + extra_link_args = linkargs + ) + ], + ) + except: + buildPython = 1 - setup(name="Cantera", - version="@ctversion@", - description="The Cantera Python Interface", - long_description=""" - """, - author="Prof. D. G. Goodwin, Caltech", - author_email="dgoodwin@caltech.edu", - url="http://www.cantera.org", - package_dir = {'MixMaster':'../../apps/MixMaster'}, - packages = ["","Cantera","Cantera.OneD", - "MixMaster","MixMaster.Units"], - ext_modules=[ Extension("Cantera._cantera", - ["src/pycantera.cpp"], - include_dirs=["../../build/include", - "src", "../clib/src"], - library_dirs = libdir, - libraries = libs) - ], - ) -else: - - setup(name="Cantera CTI File Processor", - version="@ctversion@", - description="Converts .cti files to CTML", - long_description=""" - """, - author="Prof. D. G. Goodwin, Caltech", - author_email="dgoodwin@caltech.edu", - url="http://www.cantera.org", - py_modules = ["ctml_writer"], - ) + +if buildPython == 1: + try: + setup(name="Cantera CTI File Processor", + version="@ctversion@", + description="Converts .cti files to CTML", + long_description=""" + """, + author="Prof. D. G. Goodwin, Caltech", + author_email="dgoodwin@caltech.edu", + url="http://www.cantera.org", + py_modules = ["ctml_writer"], + ) + except: + raise 'Error encountered while building or installing the Cantera CTI file preprocessor!' diff --git a/Cantera/python/src/cantera.def b/Cantera/python/src/cantera.def deleted file mode 100755 index 436c790fe..000000000 --- a/Cantera/python/src/cantera.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initcantera diff --git a/Cantera/python/src/ct.def b/Cantera/python/src/ct.def deleted file mode 100755 index 27caa82f2..000000000 --- a/Cantera/python/src/ct.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctphase diff --git a/Cantera/python/src/ctflow.def b/Cantera/python/src/ctflow.def deleted file mode 100755 index 9d4937774..000000000 --- a/Cantera/python/src/ctflow.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctflow \ No newline at end of file diff --git a/Cantera/python/src/ctfuncs.cpp b/Cantera/python/src/ctfuncs.cpp index 2d1765931..124017cf0 100644 --- a/Cantera/python/src/ctfuncs.cpp +++ b/Cantera/python/src/ctfuncs.cpp @@ -67,18 +67,33 @@ ct_addDirectory(PyObject *self, PyObject *args) // return Py_BuildValue("s",""); //} -// static PyObject * -// ct_ck2cti(PyObject *self, PyObject *args) -// { -// int iok; -// char *infile, *thermo, *tran, *idtag; -// if (!PyArg_ParseTuple(args, "ssss:ck2cti", &infile, -// &thermo, &tran, &idtag)) -// return NULL; -// iok = ck_to_cti(infile, thermo, tran, idtag); -// if (iok == -1) { return reportCanteraError();} -// return Py_BuildValue("i",iok); -// } +static PyObject * +ct_ck2cti(PyObject *self, PyObject *args) +{ + int iok; + char *infile, *thermo, *tran, *idtag; + int debug, validate; + if (!PyArg_ParseTuple(args, "ssssii:ck2cti", &infile, + &thermo, &tran, &idtag, &debug, &validate)) + return NULL; + iok = ck_to_cti(infile, thermo, tran, idtag, debug, validate); + if (iok == -1) { return reportCanteraError();} + return Py_BuildValue("i",iok); +} + +static PyObject * +ct_writelogfile(PyObject *self, PyObject *args) +{ + int iok; + char *logfile; + if (!PyArg_ParseTuple(args, "s:ck2cti", &logfile)) + return NULL; + iok = writelogfile(logfile); + if (iok == -1) { return reportCanteraError();} + return Py_BuildValue("i",iok); +} + + diff --git a/Cantera/python/src/ctkinetics.def b/Cantera/python/src/ctkinetics.def deleted file mode 100755 index 273bc855c..000000000 --- a/Cantera/python/src/ctkinetics.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctkinetics \ No newline at end of file diff --git a/Cantera/python/src/ctmultiphase_methods.cpp b/Cantera/python/src/ctmultiphase_methods.cpp index 48507985a..c419beeab 100644 --- a/Cantera/python/src/ctmultiphase_methods.cpp +++ b/Cantera/python/src/ctmultiphase_methods.cpp @@ -265,11 +265,12 @@ py_mix_equilibrate(PyObject *self, PyObject *args) int i; char* XY; double err; - int maxiter; - if (!PyArg_ParseTuple(args, "isdi:mix_equilibrate", &i, &XY, &err, &maxiter)) + int maxsteps, maxiter, loglevel; + if (!PyArg_ParseTuple(args, "isdiii:mix_equilibrate", &i, &XY, &err, + &maxsteps, &maxiter, &loglevel)) return NULL; - _val = mix_equilibrate(i,XY,err,maxiter); + _val = mix_equilibrate(i,XY,err,maxsteps,maxiter,loglevel); if (int(_val) < -900) return reportCanteraError(); return Py_BuildValue("d",_val); } diff --git a/Cantera/python/src/ctnumerics.def b/Cantera/python/src/ctnumerics.def deleted file mode 100755 index a83831e99..000000000 --- a/Cantera/python/src/ctnumerics.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctnumerics \ No newline at end of file diff --git a/Cantera/python/src/ctonedim_methods.cpp b/Cantera/python/src/ctonedim_methods.cpp index 66d90c39b..daf20594e 100644 --- a/Cantera/python/src/ctonedim_methods.cpp +++ b/Cantera/python/src/ctonedim_methods.cpp @@ -475,10 +475,11 @@ py_stflow_new(PyObject *self, PyObject *args) int iph; int ikin; int itr; - if (!PyArg_ParseTuple(args, "iii:stflow_new", &iph, &ikin, &itr)) + int itype; + if (!PyArg_ParseTuple(args, "iiii:stflow_new", &iph, &ikin, &itr, &itype)) return NULL; - _val = stflow_new(iph,ikin,itr); + _val = stflow_new(iph,ikin,itr,itype); if (int(_val) == -1) return reportCanteraError(); return Py_BuildValue("i",_val); } @@ -943,3 +944,17 @@ py_sim1D_setTimeStepLimits(PyObject *self, PyObject *args) return Py_BuildValue("i",_val); } + +static PyObject * +py_sim1D_setFixedTemperature(PyObject *self, PyObject *args) +{ + int _val; + int i; + double temp; + if (!PyArg_ParseTuple(args, "id:sim1D_setFixedTemperature", &i, &temp)) + return NULL; + _val = sim1D_setFixedTemperature(i,temp); + if (int(_val) == -1) return reportCanteraError(); + return Py_BuildValue("i",_val); +} + diff --git a/Cantera/python/src/ctphase.def b/Cantera/python/src/ctphase.def deleted file mode 100755 index 59852c9fc..000000000 --- a/Cantera/python/src/ctphase.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctphase \ No newline at end of file diff --git a/Cantera/python/src/ctphase_methods.cpp b/Cantera/python/src/ctphase_methods.cpp index b8544a3a0..666ca8a56 100644 --- a/Cantera/python/src/ctphase_methods.cpp +++ b/Cantera/python/src/ctphase_methods.cpp @@ -139,7 +139,7 @@ phase_getarray(PyObject *self, PyObject *args) break; case 22: iok = phase_getMolecularWeights(ph,nsp,xd); - break; + break; default: ; } @@ -222,6 +222,8 @@ phase_setfp(PyObject *self, PyObject *args) iok = phase_setTemperature(ph, vv); break; case 2: iok = phase_setDensity(ph, vv); break; + case 3: + iok = phase_setMolarDensity(ph, vv); break; default: iok = -10; } diff --git a/Cantera/python/src/ctsurf.def b/Cantera/python/src/ctsurf.def deleted file mode 100755 index 6d0fa5368..000000000 --- a/Cantera/python/src/ctsurf.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctsurf \ No newline at end of file diff --git a/Cantera/python/src/ctthermo.def b/Cantera/python/src/ctthermo.def deleted file mode 100755 index 3a996256a..000000000 --- a/Cantera/python/src/ctthermo.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initctthermo \ No newline at end of file diff --git a/Cantera/python/src/ctthermo_methods.cpp b/Cantera/python/src/ctthermo_methods.cpp index e3d6c1057..87de53e01 100644 --- a/Cantera/python/src/ctthermo_methods.cpp +++ b/Cantera/python/src/ctthermo_methods.cpp @@ -1,4 +1,4 @@ - + static PyObject * ct_newThermoFromXML(PyObject *self, PyObject *args) { @@ -232,11 +232,16 @@ thermo_equil(PyObject *self, PyObject *args) int iok = -2; int th; int XY; - - if (!PyArg_ParseTuple(args, "ii:thermo_equil", &th, &XY)) + int solver; + double rtol; + int maxsteps; + int loglevel; + + if (!PyArg_ParseTuple(args, "iiidii:thermo_equil", &th, &XY, + &solver, &rtol, &maxsteps, &loglevel)) return NULL; - iok = th_equil(th, XY); + iok = th_equil(th, XY, solver, rtol, maxsteps, loglevel); if (iok >= 0) return Py_BuildValue("i",iok); if (iok == -1) return reportCanteraError(); diff --git a/Cantera/python/src/cttransport.def b/Cantera/python/src/cttransport.def deleted file mode 100755 index e2f1f45e5..000000000 --- a/Cantera/python/src/cttransport.def +++ /dev/null @@ -1,2 +0,0 @@ -EXPORTS - initcttransport diff --git a/Cantera/python/src/methods.h b/Cantera/python/src/methods.h index fb4635fc2..b4ee0b4ad 100644 --- a/Cantera/python/src/methods.h +++ b/Cantera/python/src/methods.h @@ -86,6 +86,8 @@ static PyMethodDef ct_methods[] = { //{"ct_print", ct_print, METH_VARARGS}, {"ct_addDirectory", ct_addDirectory, METH_VARARGS}, {"ct_refcnt", ct_refcnt, METH_VARARGS}, + {"ct_ck2cti", ct_ck2cti, METH_VARARGS}, + {"ct_writelogfile", ct_writelogfile, METH_VARARGS}, //{"readlog", ct_readlog, METH_VARARGS}, //{"buildSolutionFromXML", ct_buildSolutionFromXML, METH_VARARGS}, @@ -150,6 +152,7 @@ static PyMethodDef ct_methods[] = { {"sim1D_setMaxJacAge", py_sim1D_setMaxJacAge, METH_VARARGS}, {"sim1D_timeStepFactor", py_sim1D_timeStepFactor, METH_VARARGS}, {"sim1D_setTimeStepLimits", py_sim1D_setTimeStepLimits, METH_VARARGS}, + {"sim1D_setFixedTemperature", py_sim1D_setFixedTemperature, METH_VARARGS}, {"surf_setsitedensity", py_surf_setsitedensity, METH_VARARGS}, {"surf_sitedensity", py_surf_sitedensity, METH_VARARGS}, diff --git a/Cantera/python/src/pycantera.cpp b/Cantera/python/src/pycantera.cpp index 139e3aa93..1c1944b4e 100644 --- a/Cantera/python/src/pycantera.cpp +++ b/Cantera/python/src/pycantera.cpp @@ -11,7 +11,7 @@ #pragma warning(disable:4503) #endif -#include "../../../config.h" +#include "../../src/config.h" #include "Python.h" @@ -42,7 +42,7 @@ static PyObject *ErrorObject; #include "ctphase_methods.cpp" #include "ctthermo_methods.cpp" -#include "ctkinetics_methods.cpp" +#include "ctkinetics_methods.cpp" #include "cttransport_methods.cpp" #include "ctxml_methods.cpp" #include "ctfuncs.cpp" @@ -84,6 +84,11 @@ extern "C" { d = PyModule_GetDict(m); ErrorObject = PyErr_NewException("cantera.error", NULL, NULL); PyDict_SetItemString(d, "error", ErrorObject); +#ifdef HAS_NUMERIC + PyDict_SetItemString(d, "nummod",PyString_FromString("Numeric")); +#else + PyDict_SetItemString(d, "nummod",PyString_FromString("numarray")); +#endif } } diff --git a/Cantera/python/src/pylogger.h b/Cantera/python/src/pylogger.h index ad883ecfa..2055b5d4f 100644 --- a/Cantera/python/src/pylogger.h +++ b/Cantera/python/src/pylogger.h @@ -11,6 +11,8 @@ static std::string ss = "print \"\"\" "; namespace Cantera { + /// Logger for Python. + /// @ingroup textlogs class Py_Logger : public Logger { public: Py_Logger() {} diff --git a/Cantera/python/src/pyutils.h b/Cantera/python/src/pyutils.h index fffc534a8..c0b384ecc 100755 --- a/Cantera/python/src/pyutils.h +++ b/Cantera/python/src/pyutils.h @@ -2,17 +2,15 @@ #define CTPY_UTILS #include "Python.h" -//#include "../../clib/src/ct.h" static PyObject* reportCanteraError() { - //showCanteraErrors(); char* buf = 0; int buflen = getCanteraError(0, buf) + 1; buf = new char[buflen+1]; getCanteraError(buflen, buf); PyErr_SetString(ErrorObject,buf); delete buf; - //PyErr_SetString(ErrorObject,"An exception was thrown by Cantera."); + //writelogfile("log.html"); return NULL; } @@ -24,119 +22,5 @@ static PyObject* reportError(int n) { return NULL; } -// template -// int pyNumericSequence_ToVector(PyObject* seq, V& vec) -// { -// if (!PySequence_Check(seq)) return -1; -// int n = PySequence_Size(seq); -// vec.resize(n); -// PyObject* item; -// double x; -// for (int i = 0; i < n; i++) { -// item = PySequence_GetItem(seq, i); -// if (PyFloat_Check(item)) -// x = PyFloat_AsDouble(item); -// else if (PyInt_Check(item)) -// x = 1.0*PyInt_AsLong(item); -// else -// return -2; -// vec[i] = x; -// } -// return 1; -// } - - -// template -// PyObject* pyNumericTuple_FromVector(const V& vec) -// { -// int n = vec.size(); -// PyObject* seq = PyTuple_New(n); -// PyObject* item; -// for (int i = 0; i < n; i++) { -// item = PyFloat_FromDouble(1.0*vec[i]); -// if (PyTuple_SetItem(seq, i, item) < 0) return NULL; -// } -// return seq; -// } - - -// template -// PyObject* pyNumericList_FromVector(const V& vec) -// { -// int n = vec.size(); -// PyObject* seq = PyList_New(n); -// PyObject* item; -// for (int i = 0; i < n; i++) { -// item = PyFloat_FromDouble(1.0*vec[i]); -// if (PyList_SetItem(seq, i, item) < 0) return NULL; -// } -// return seq; -// } - -// template -// PyObject* pyStringTuple_FromVector(const V& vec) -// { -// int n = vec.size(); -// PyObject* seq = PyTuple_New(n); -// PyObject* item; -// for (int i = 0; i < n; i++) { -// item = PyString_FromString(vec[i].c_str()); -// if (PyTuple_SetItem(seq, i, item) < 0) return NULL; -// } -// return seq; -// } - - -// template -// int pyStrNumMapping_ToMap(PyObject* d, M& m) -// { -// if (!PyMapping_Check(d)) return -1; -// int n = PyMapping_Length(d); -// PyObject *keys, *values, *ky, *v; -// double x; -// string key; -// keys = PyMapping_Keys(d); -// values = PyMapping_Values(d); -// for (int i = 0; i < n; i++) { -// ky = PySequence_GetItem(keys, i); -// v = PySequence_GetItem(values, i); -// key = string(PyString_AsString(ky)); -// if (PyFloat_Check(v)) -// x = PyFloat_AsDouble(v); -// else if (PyInt_Check(v)) -// x = 1.0*PyInt_AsLong(v); -// else -// return -2; -// m[key] = x; -// } -// return 1; -// } - - -// template -// PyObject* pyStrNumMapping_FromMap(M& m) -// { -// if (!PyMapping_Check(d)) return -1; -// int n = m.size(); -// double value; -// char* key; -// PyObject* x; -// TYPENAME_KEYWORD M::const_iter ptr; -// PyObject* map = PyDict_New(); -// for (int i = 0; i < n; i++) { -// key = ptr->first.c_str(); -// value = ptr->second; -// x = PyFloat_FromDouble(value); -// PyMapping_SetItemString(map, key, x); -// } -// return map; -// } - - -// static int lengthError() { -// PyErr_SetString(PyExc_AttributeError, -// "wrong length for sequence"); -// return -1; -// } #endif diff --git a/Cantera/python/winsetup.py b/Cantera/python/winsetup.py index 448e8bc79..403c0bf6d 100755 --- a/Cantera/python/winsetup.py +++ b/Cantera/python/winsetup.py @@ -3,7 +3,7 @@ from distutils.core import setup, Extension libdir = ['../../build/lib/i686-pc-win32'] setup(name="Cantera", - version="1.5.5", + version="1.6.0", description="The Cantera Python Interface", long_description=""" """, diff --git a/Cantera/src/.cvsignore b/Cantera/src/.cvsignore index 9d7c374ae..dcdfcff32 100644 --- a/Cantera/src/.cvsignore +++ b/Cantera/src/.cvsignore @@ -3,3 +3,5 @@ pypath.h ctdir.h .depends config.h +*.d + diff --git a/Cantera/src/Array.h b/Cantera/src/Array.h index 6081c47d5..73b05fc91 100755 --- a/Cantera/src/Array.h +++ b/Cantera/src/Array.h @@ -174,7 +174,6 @@ namespace Cantera { /// Return a const reference to the data vector const vector_fp& data() const { return m_data; } - /// Return a pointer to the top of column j, columns are contiguous /// in memory doublereal * ptrColumn(int j) { return &(m_data[m_nrows*j]); } diff --git a/Cantera/src/ArrayViewer.h b/Cantera/src/ArrayViewer.h index 769c8370a..1320d67f3 100755 --- a/Cantera/src/ArrayViewer.h +++ b/Cantera/src/ArrayViewer.h @@ -25,9 +25,15 @@ namespace Cantera { /** - * A viewer for 2D arrays stored in column-major - * (Fortran-compatible) form. This class is simply an interface - * to data stored in an external array. + * An interface for 2D arrays stored in column-major + * (Fortran-compatible) form. This class is designed for + * situations when you have a Fortran-compatible 2D array that + * you want to be able to easily get/set individual elements or + * entire rows or columns. Instances of ArrayViewer store only a + * pointer to the first element in the array; no copy is made of + * the array. @todo This class should probably be renamed, since + * it not only views, but also can modify, array elements. This + * class is hardly used; candidate for removal. */ class ArrayViewer { @@ -38,7 +44,7 @@ namespace Cantera { /** - * Default constructor. Create an empty array. + * Default constructor. Create an empty array viewer. */ ArrayViewer() : m_nrows(0), m_ncols(0) { data = 0; } @@ -91,7 +97,10 @@ namespace Cantera { doublereal& operator()( int i, int j) {return value(i,j);} doublereal operator() ( int i, int j) const {return value(i,j);} + /// Return a reference to the (i,j) array element. doublereal& value( int i, int j) {return data[m_nrows*j + i];} + + /// Return the value of the (i,j) array element. doublereal value( int i, int j) const {return data[m_nrows*j + i];} /// Number of rows @@ -126,10 +135,12 @@ namespace Cantera { return s; } + /// Multiply the array by a constant. inline void operator*=(ArrayViewer& m, doublereal a) { scale(m.begin(), m.end(), m.begin(), a); } + /// Increment the entire array by a constant. inline void operator+=(ArrayViewer& x, const ArrayViewer& y) { sum_each(x.begin(), x.end(), y.begin()); } diff --git a/Cantera/src/BandMatrix.h b/Cantera/src/BandMatrix.h index 6ab4dc845..8f67cacfd 100755 --- a/Cantera/src/BandMatrix.h +++ b/Cantera/src/BandMatrix.h @@ -2,7 +2,9 @@ * @file BandMatrix.h * * Banded matrices. - * + */ + +/* * $Author$ * $Revision$ * $Date$ @@ -33,7 +35,7 @@ namespace Cantera { /// copy constructor BandMatrix(const BandMatrix& y); - + /// Destructor. Does nothing. virtual ~BandMatrix(){} @@ -55,6 +57,9 @@ namespace Cantera { return value(i,j); } + /// Return a reference to element (i,j). Since this method may + /// alter the element value, it may need to be refactored, so + /// the flag m_factored is set to false. doublereal& value( int i, int j) { m_factored = false; if (i < j - m_ku || i > j + m_kl) { @@ -64,26 +69,36 @@ namespace Cantera { return data[index(i,j)]; } + /// Return the value of element (i,j). This method does not + /// alter the array. doublereal value( int i, int j) const { if (i < j - m_ku || i > j + m_kl) return 0.0; return data[index(i,j)]; } + /// Return the location in the internal 1D array corresponding to + /// the (i,j) element in the banded array. int index(int i, int j) const { int rw = m_kl + m_ku + i - j; return (2*m_kl + m_ku + 1)*j + rw; } + /// Return the value of the (i,j) element for (i,j) within the + /// bandwidth. For efficiency, this method does not check that + /// (i,j) are within the bandwidth; it is up to the calling + /// program to insure that this is true. doublereal _value(int i, int j) const { return data[index(i,j)]; } /// Number of rows int nRows() const { return m_n; } + /// @deprecated Redundant. int rows() const { return m_n; } /// Number of columns int nColumns() const { return m_n; } + /// @deprecated Redundant. int columns() const { return m_n; } /// Number of subdiagonals diff --git a/Cantera/src/ChemEquil.cpp b/Cantera/src/ChemEquil.cpp index 2133130f6..ab5f67888 100755 --- a/Cantera/src/ChemEquil.cpp +++ b/Cantera/src/ChemEquil.cpp @@ -5,10 +5,6 @@ * Chemical equilibrium. * Implementation file for class ChemEquil * - * $Author$ - * $Date$ - * $Revision$ - * * Copyright 2001 California Institute of Technology * */ @@ -221,7 +217,7 @@ namespace Cantera { // first column contains fixed element moles for (m = 0; m < mm; m++) { - aa(m+1,0) = elementMoles[m] + 0.01; + aa(m+1,0) = elementMoles[m]; // + 0.01; } // get the array of non-dimensional Gibbs functions for the pure @@ -517,7 +513,7 @@ namespace Cantera { vector_fp below(nvar); for (m = 0; m < mm; m++) { - above[m] = 30.0; + above[m] = 200.0; // 30.0; below[m] = -2000.0; if (elMoles[m] < Cutoff && m != m_eloc) x[m] = -1000.0; //if (m == m_eloc) x[m] = -10.0; @@ -591,10 +587,10 @@ namespace Cantera { newval = x[m] + res_trial[m]; if (newval > above[m]) { fctr = fmaxx( 0.0, fminn( fctr, - 0.4*(above[m] - x[m])/(newval - x[m]))); + 0.8*(above[m] - x[m])/(newval - x[m]))); } else if (newval < below[m]) { - fctr = fminn(fctr, 0.4*(x[m] - below[m])/(x[m] - newval)); + fctr = fminn(fctr, 0.8*(x[m] - below[m])/(x[m] - newval)); } } diff --git a/Cantera/src/ChemEquil.h b/Cantera/src/ChemEquil.h index a492f3e71..4caa68a93 100755 --- a/Cantera/src/ChemEquil.h +++ b/Cantera/src/ChemEquil.h @@ -153,13 +153,15 @@ namespace Cantera { * determines the two properties that will be held fixed in the * calculation. */ - inline void equilibrate(thermo_t& s, int XY) { - if (XY == TP) { + inline void equilibrate(thermo_t& s, int XY, int solver = 0, + doublereal rtol = 1.0e-9, int maxsteps = 1000, + int loglevel = 0) { + if (solver > 0) { MultiPhase mix; mix.addPhase(&s, 1.0); mix.setTemperature(s.temperature()); mix.setPressure(s.pressure()); - equilibrate(mix, XY); + equilibrate(mix, XY, rtol, maxsteps, loglevel); } else { ChemEquil e; @@ -173,8 +175,9 @@ namespace Cantera { * determines the two properties that will be held fixed in the * calculation. */ - inline void equilibrate(thermo_t& s, const char* XY) { - equilibrate(s,_equilflag(XY)); + inline void equilibrate(thermo_t& s, const char* XY, + int solver = 0) { + equilibrate(s,_equilflag(XY), solver); } } diff --git a/Cantera/src/ConstDensityThermo.cpp b/Cantera/src/ConstDensityThermo.cpp index d7b476721..74416eb67 100755 --- a/Cantera/src/ConstDensityThermo.cpp +++ b/Cantera/src/ConstDensityThermo.cpp @@ -16,10 +16,58 @@ namespace Cantera { + int ConstDensityThermo:: + eosType() const { return cIncompressible; } + + doublereal ConstDensityThermo::enthalpy_mole() const { + doublereal p0 = m_spthermo->refPressure(); + return GasConstant * temperature() * + mean_X(enthalpy_RT().begin()) + + (pressure() - p0)/molarDensity(); + } + + doublereal ConstDensityThermo::intEnergy_mole() const { + doublereal p0 = m_spthermo->refPressure(); + return GasConstant * temperature() * + mean_X(enthalpy_RT().begin()) + - p0/molarDensity(); + } + + doublereal ConstDensityThermo::entropy_mole() const { + return GasConstant * (mean_X(entropy_R().begin()) - + sum_xlogx()); + } + + doublereal ConstDensityThermo::gibbs_mole() const { + return enthalpy_mole() - temperature() * entropy_mole(); + } + + doublereal ConstDensityThermo::cp_mole() const { + return GasConstant * mean_X(cp_R().begin()); + } + + doublereal ConstDensityThermo::cv_mole() const { + return cp_mole(); + } + + doublereal ConstDensityThermo::pressure() const { + return m_press; + } + + void ConstDensityThermo::setPressure(doublereal p) { + m_press = p; + } + void ConstDensityThermo::getActivityConcentrations(doublereal* c) const { getConcentrations(c); } + void ConstDensityThermo::getActivityCoefficients(doublereal* ac) const { + for (int k = 0; k < m_kk; k++) { + ac[k] = 1.0; + } + } + doublereal ConstDensityThermo::standardConcentration(int k) const { return molarDensity(); } @@ -40,6 +88,7 @@ namespace Cantera { } } + void ConstDensityThermo::getStandardChemPotentials(doublereal* mu0) const { getPureGibbs(mu0); } @@ -64,34 +113,8 @@ namespace Cantera { } - /** - * Set mixture to an equilibrium state consistent with specified - * element potentials and temperature. - * - * @param lambda_RT vector of non-dimensional element potentials - * \f[ \lambda_m/RT \f]. - * @param t temperature in K. - * @param work. Temporary work space. Must be dimensioned at least - * as large as the number of species. - * - */ - void ConstDensityThermo::setToEquilState(const doublereal* lambda_RT) - { + void ConstDensityThermo::setToEquilState(const doublereal* lambda_RT) { throw CanteraError("setToEquilState","not yet impl."); - //const array_fp& grt = gibbs_RT(); - - // set the pressure and composition to be consistent with - // the temperature, - // doublereal pres = 0.0; -// for (int k = 0; k < m_kk; k++) { -// m_pp[k] = -grt[k]; -// for (int m = 0; m < m_mm; m++) -// m_pp[k] += phase().nAtoms(k,m)*lambda_RT[m]; -// m_pp[k] = m_p0 * exp(m_pp[k]); -// pres += m_pp[k]; -// } -// // set state -// setState_PX(pres, m_pp.begin()); } void ConstDensityThermo::_updateThermo() const { @@ -100,12 +123,8 @@ namespace Cantera { m_spthermo->update(tnow, m_cp0_R.begin(), m_h0_RT.begin(), m_s0_R.begin()); m_tlast = tnow; - // doublereal rrt = 1.0 / (GasConstant * tnow); int k; - //doublereal deltaE; for (k = 0; k < m_kk; k++) { - //deltaE = rrt * m_pe[k]; - //m_h0_RT[k] += deltaE; m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k]; } m_tlast = tnow; diff --git a/Cantera/src/ConstDensityThermo.h b/Cantera/src/ConstDensityThermo.h index 6305c706b..1af591791 100755 --- a/Cantera/src/ConstDensityThermo.h +++ b/Cantera/src/ConstDensityThermo.h @@ -3,7 +3,9 @@ * @file ConstDensityThermo.h * * Thermo manager for incompressible substances. + */ +/* * $Author$ * $Date$ * $Revision$ @@ -24,7 +26,7 @@ namespace Cantera { /** - * Overloads the virtual methods of class Thermo to implement the + * Overloads the virtual methods of class ThermoPhase to implement the * incompressible equation of state. */ class ConstDensityThermo : public ThermoPhase { @@ -32,71 +34,26 @@ namespace Cantera { public: ConstDensityThermo() : m_tlast(0.0) {} - virtual ~ConstDensityThermo() {} - virtual int eosType() const { return cIncompressible; } - - virtual doublereal enthalpy_mole() const { - doublereal p0 = m_spthermo->refPressure(); - return GasConstant * temperature() * - mean_X(enthalpy_RT().begin()) - + (pressure() - p0)/molarDensity(); - } - - virtual doublereal intEnergy_mole() const { - doublereal p0 = m_spthermo->refPressure(); - return GasConstant * temperature() * - mean_X(enthalpy_RT().begin()) - - p0/molarDensity(); - } - - virtual doublereal entropy_mole() const { - return GasConstant * (mean_X(entropy_R().begin()) - - sum_xlogx()); - } - - virtual doublereal gibbs_mole() const { - return enthalpy_mole() - temperature() * entropy_mole(); - } - - virtual doublereal cp_mole() const { - return GasConstant * mean_X(cp_R().begin()); - } - - virtual doublereal cv_mole() const { - return cp_mole(); - } - - virtual doublereal pressure() const { - return m_press; - } - - virtual void setPressure(doublereal p) { - m_press = p; - } + // overloaded methods of class ThermoPhase + virtual int eosType() const; + virtual doublereal enthalpy_mole() const; + virtual doublereal intEnergy_mole() const; + virtual doublereal entropy_mole() const; + virtual doublereal gibbs_mole() const; + virtual doublereal cp_mole() const; + virtual doublereal cv_mole() const; + virtual doublereal pressure() const; + virtual void setPressure(doublereal p); virtual void getActivityConcentrations(doublereal* c) const; - + virtual void getActivityCoefficients(doublereal* ac) const; virtual void getChemPotentials(doublereal* mu) const; virtual void getStandardChemPotentials(doublereal* mu0) const; virtual doublereal standardConcentration(int k=0) const; virtual doublereal logStandardConc(int k=0) const; -// virtual void getPartialMolarEnthalpies(doublereal* hbar) const { -// const array_fp& _h = enthalpy_RT(); -// doublereal rt = GasConstant * _temp(); -// scale(_h.begin(), _h.end(), hbar, rt); -// } - - //virtual void getPartialMolarEntropies(doublereal* sbar) const { - // err("getPartialMolarEntropies"); - //} - - //virtual void getPartialMolarVolumes(doublereal* vbar) const { - // err("getPartialMolarVolumes"); - //} - virtual void getPureGibbs(doublereal* gpure) const { const array_fp& gibbsrt = gibbs_RT(); scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT()); @@ -202,8 +159,3 @@ namespace Cantera { } #endif - - - - - diff --git a/Cantera/src/Constituents.cpp b/Cantera/src/Constituents.cpp index a2405270f..8a7eafcd1 100755 --- a/Cantera/src/Constituents.cpp +++ b/Cantera/src/Constituents.cpp @@ -146,6 +146,17 @@ namespace Cantera { return m_Elements->atomicWeights(); } + + /******************************************************************** + * + * atomicNumber + * + * Return the atomic number of element m. + */ + int Constituents::atomicNumber(int m) const { + return m_Elements->atomicNumber(m); + } + #ifdef INCL_DEPRECATED_METHODS /******************************************************************** * element(): diff --git a/Cantera/src/Constituents.h b/Cantera/src/Constituents.h index 82e4e7f55..51b753a87 100755 --- a/Cantera/src/Constituents.h +++ b/Cantera/src/Constituents.h @@ -8,7 +8,13 @@ * $Revision$ * * $Log$ - * Revision 1.6 2004-06-09 00:59:24 dggoodwin + * Revision 1.7 2005-06-18 17:01:08 dggoodwin + * Prerelease_1_6_0_branch merged into trunk + * + * Revision 1.6.2.1 2005/01/24 15:09:11 dggoodwin + * *** empty log message *** + * + * Revision 1.6 2004/06/09 00:59:24 dggoodwin * moved functions to read XML input files out of importCTML.cpp and into specific classes * * Revision 1.5 2003/11/12 18:58:17 dggoodwin @@ -99,6 +105,8 @@ namespace Cantera { /// Atomic weight of element m. doublereal atomicWeight(int m) const; + /// Atomic number of element m. + int atomicNumber(int m) const; /// Return a read-only reference to the vector of element names. const vector& elementNames() const; diff --git a/Cantera/src/Elements.cpp b/Cantera/src/Elements.cpp index 557dbf29b..528ef2ae9 100644 --- a/Cantera/src/Elements.cpp +++ b/Cantera/src/Elements.cpp @@ -352,7 +352,7 @@ namespace Cantera { */ #ifdef USE_DGG_CODE void Elements:: - addUniqueElement(const string& symbol, doublereal weight) + addUniqueElement(const string& symbol, doublereal weight, int atomicNumber) { if (m_elementsFrozen) throw ElementsFrozen("addElement"); @@ -370,6 +370,7 @@ namespace Cantera { if (i < 0) { m_atomicWeights.push_back(weight); m_elementNames.push_back(symbol); + m_atomicNumbers.push_back(atomicNumber); m_mm++; } else { @@ -383,7 +384,8 @@ namespace Cantera { #else void Elements:: - addUniqueElement(const string& symbol, doublereal weight) + addUniqueElement(const string& symbol, + doublereal weight, int atomicNumber) { if (weight == -12345.0) { weight = LookupWtElements(symbol); @@ -412,6 +414,7 @@ namespace Cantera { } m_atomicWeights.push_back(weight); m_elementNames.push_back(symbol); + m_atomicNumbers.push_back(atomicNumber); m_mm++; } else { if (m_atomicWeights[i] != weight) { @@ -433,9 +436,12 @@ namespace Cantera { doublereal weight = 0.0; if (e.hasAttrib("atomicWt")) weight = atof(stripws(e["atomicWt"]).c_str()); + int anum = 0; + if (e.hasAttrib("atomicNumber")) + anum = atoi(stripws(e["atomicNumber"]).c_str()); string symbol = e["name"]; if (weight != 0.0) - addUniqueElement(symbol, weight); + addUniqueElement(symbol, weight, anum); else addUniqueElement(symbol); } @@ -523,14 +529,29 @@ namespace Cantera { string element_database = "elements.xml"; if (elements.hasAttrib("datasrc")) element_database = elements["datasrc"]; + XML_Node* doc = get_XML_File(element_database); XML_Node* dbe = &doc->child("ctml/elementData"); + XML_Node& root = phase.root(); + XML_Node* local_db = 0; + if (root.child("ctml").hasChild("elementData")) { + local_db = &root.child("ctml/elementData"); + } + int nel = static_cast(enames.size()); int i; string enm; + XML_Node* e = 0; for (i = 0; i < nel; i++) { - XML_Node* e = dbe->findByAttr("name",enames[i]); + e = 0; + if (local_db) { + //writelog("looking in local database."); + e = local_db->findByAttr("name",enames[i]); + //if (!e) writelog(enames[i]+" not found."); + } + if (!e) + e = dbe->findByAttr("name",enames[i]); if (e) { addUniqueElement(*e); } @@ -539,6 +560,7 @@ namespace Cantera { +enames[i]); } } + } /*********************************************************************** diff --git a/Cantera/src/Elements.h b/Cantera/src/Elements.h index de3af4f2e..17f0c1a9c 100644 --- a/Cantera/src/Elements.h +++ b/Cantera/src/Elements.h @@ -49,6 +49,9 @@ namespace Cantera { /// Atomic weight of element m. doublereal atomicWeight(int m) const { return m_atomicWeights[m]; } + /// Atomic number of element m. + int atomicNumber(int m) const { return m_atomicNumbers[m]; } + /// vector of element atomic weights const vector_fp& atomicWeights() const { return m_atomicWeights; } @@ -99,7 +102,7 @@ namespace Cantera { * This is accomplished via a string match on symbol. */ void addUniqueElement(const string& symbol, - doublereal weight = -12345.0); + doublereal weight = -12345.0, int atomicNumber = 0); void addUniqueElement(const XML_Node& e); void addElementsFromXML(const XML_Node& phase); @@ -152,6 +155,12 @@ namespace Cantera { * units = kg / kmol */ vector_fp m_atomicWeights; + + /** + * Vector of element atomic numbers: + * + */ + vector_int m_atomicNumbers; /** Vector of strings containing the names of the elements * diff --git a/Cantera/src/GRI_30_Kinetics.cpp b/Cantera/src/GRI_30_Kinetics.cpp index 710a78469..dcc9bd893 100755 --- a/Cantera/src/GRI_30_Kinetics.cpp +++ b/Cantera/src/GRI_30_Kinetics.cpp @@ -42,7 +42,7 @@ namespace Cantera { doublereal T = thermo().temperature(); if (fabs(T - m_kdata->m_temp) > m_dt_threshold) { doublereal logT = log(T); - m_kdata->m_logc0 = m_kdata->m_logp0 - logT; + m_kdata->m_logc_ref = m_kdata->m_logp_ref - logT; update_rates(T, logT, m_kdata->m_rfn.begin()); m_falloff_low_rates.update(T, logT, m_kdata->m_rfn_low.begin()); @@ -62,9 +62,10 @@ namespace Cantera { */ void GRI_30_Kinetics::gri30_updateKc() { doublereal* rkc = m_kdata->m_rkcn.begin(); - const doublereal* a = ((IdealGasPhase*)m_thermo[0])->expGibbs_RT().begin(); - doublereal exp_c0 = exp(m_kdata->m_logc0); - update_kc(a, exp_c0, rkc); + const doublereal* a = + ((IdealGasPhase*)m_thermo[0])->expGibbs_RT_ref().begin(); + doublereal exp_c_ref = exp(m_kdata->m_logc_ref); + update_kc(a, exp_c_ref, rkc); } diff --git a/Cantera/src/GasKinetics.cpp b/Cantera/src/GasKinetics.cpp index 47171199e..3daf1a260 100755 --- a/Cantera/src/GasKinetics.cpp +++ b/Cantera/src/GasKinetics.cpp @@ -33,7 +33,7 @@ namespace Cantera { */ GasKinetics:: GasKinetics(thermo_t* thermo) : - Kinetics(thermo), + Kinetics(), m_kk(0), m_nfall(0), m_dt_threshold(0.0), // 1.e-6), @@ -41,6 +41,7 @@ namespace Cantera { m_nrev(0), m_finalized(false) { + if (thermo != 0) addPhase(*thermo); m_kdata = new GasKineticsData; m_kdata->m_temp = 0.0; // m_rxnstoich = new ReactionStoichMgr; @@ -59,7 +60,7 @@ namespace Cantera { void GasKinetics:: _update_rates_T() { doublereal T = thermo().temperature(); - m_kdata->m_logc0 = log(thermo().standardConcentration()); + m_kdata->m_logStandConc = log(thermo().standardConcentration()); if (fabs(T - m_kdata->m_temp) > 0.0) { // m_dt_threshold) { doublereal logT = log(T); //m_kdata->m_logp0 - logT; @@ -101,11 +102,11 @@ namespace Cantera { // compute Delta G^0 for all reversible reactions m_rxnstoich.getRevReactionDelta(m_ii, m_grt.begin(), m_rkc.begin()); - doublereal logc0 = m_kdata->m_logc0; + doublereal logStandConc = m_kdata->m_logStandConc; doublereal rrt = 1.0/(GasConstant * thermo().temperature()); for (i = 0; i < m_nrev; i++) { irxn = m_revindex[i]; - m_rkc[irxn] = exp(m_rkc[irxn]*rrt - m_dn[irxn]*logc0); + m_rkc[irxn] = exp(m_rkc[irxn]*rrt - m_dn[irxn]*logStandConc); } for(i = 0; i != m_nirrev; ++i) { @@ -128,10 +129,10 @@ namespace Cantera { // compute Delta G^0 for all reactions m_rxnstoich.getReactionDelta(m_ii, m_grt.begin(), rkc.begin()); - doublereal logc0 = m_kdata->m_logc0; + doublereal logStandConc = m_kdata->m_logStandConc; doublereal rrt = 1.0/(GasConstant * thermo().temperature()); for (i = 0; i < m_ii; i++) { - kc[i] = exp(-rkc[i]*rrt + m_dn[i]*logc0); + kc[i] = exp(-rkc[i]*rrt + m_dn[i]*logStandConc); } } @@ -447,7 +448,6 @@ namespace Cantera { else if (r.reactionType == FALLOFF_RXN) addFalloffReaction(r); // operations common to all reaction types - //installReagents( r.reactants, r.products, r.reversible ); installReagents( r ); installGroups(reactionNumber(), r.rgroups, r.pgroups); incrementRxnCount(); @@ -564,7 +564,7 @@ namespace Cantera { int np = r.products.size(); for (n = 0; n < np; n++) { ns = r.pstoich[n]; - if (ns != 0) m_prxn[r.products[n]][rnum] += ns; + if (r.pstoich[n] != 0.0) m_prxn[r.products[n]][rnum] += r.pstoich[n]; for (m = 0; m < ns; m++) { pk.push_back(r.products[n]); } @@ -576,13 +576,11 @@ namespace Cantera { m_rxnstoich.add(reactionNumber(), r); if (r.reversible) { - // m_rxnstoich.add(reactionNumber(), rk, pk, true); m_dn.push_back(pk.size() - rk.size()); m_revindex.push_back(reactionNumber()); m_nrev++; } else { - //m_rxnstoich.add(reactionNumber(), rk, pk, false); m_dn.push_back(pk.size() - rk.size()); m_irrev.push_back( reactionNumber() ); m_nirrev++; @@ -593,6 +591,7 @@ namespace Cantera { void GasKinetics::installGroups(int irxn, const vector& r, const vector& p) { if (!r.empty()) { + writelog("installing groups for reaction "+int2str(reactionNumber())); m_rgroups[reactionNumber()] = r; m_pgroups[reactionNumber()] = p; } @@ -605,12 +604,12 @@ namespace Cantera { m_prxn.resize(m_kk); m_conc.resize(m_kk); m_grt.resize(m_kk); - m_kdata->m_logp0 = log(thermo().refPressure()) - log(GasConstant); + m_kdata->m_logp_ref = log(thermo().refPressure()) - log(GasConstant); } void GasKinetics::finalize() { if (!m_finalized) { - int i, j, nr, np; + // int i, j, nr, np; m_kdata->falloff_work.resize( static_cast(m_falloffn.workSize())); m_kdata->concm_3b_values.resize( @@ -618,16 +617,16 @@ namespace Cantera { m_kdata->concm_falloff_values.resize( static_cast(m_falloff_concm.workSize())); - for (i = 0; i < m_ii; i++) { - nr = m_reactants[i].size(); - for (j = 0; j < nr; j++) { - m_rstoich[i][m_reactants[i][j]]++; - } - np = m_products[i].size(); - for (j = 0; j < np; j++) { - m_pstoich[i][m_products[i][j]]++; - } - } +// for (i = 0; i < m_ii; i++) { +// nr = m_reactants[i].size(); +// for (j = 0; j < nr; j++) { +// m_rstoich[i][m_reactants[i][j]]++; +// } +// np = m_products[i].size(); +// for (j = 0; j < np; j++) { +// m_pstoich[i][m_products[i][j]]++; +// } +// } m_finalized = true; } } diff --git a/Cantera/src/GasKinetics.h b/Cantera/src/GasKinetics.h index 25a34899d..08127df36 100755 --- a/Cantera/src/GasKinetics.h +++ b/Cantera/src/GasKinetics.h @@ -22,8 +22,6 @@ #include "utilities.h" -//#include "StoichManager.h" - #include "ReactionStoichMgr.h" #include "ThirdBodyMgr.h" #include "FalloffMgr.h" @@ -46,14 +44,15 @@ namespace Cantera { class GasKineticsData { public: GasKineticsData() : - m_logp0(0.0), - m_logc0(0.0), + m_logp_ref(0.0), + m_logc_ref(0.0), + m_logStandConc(0.0), m_ROP_ok(false), m_temp(0.0) {} virtual ~GasKineticsData(){} - doublereal m_logp0, m_logc0; + doublereal m_logp_ref, m_logc_ref, m_logStandConc; array_fp m_ropf, m_ropr, m_ropnet; array_fp m_rfn_low, m_rfn_high; bool m_ROP_ok; @@ -70,8 +69,8 @@ namespace Cantera { /** * Kinetics manager for elementary gas-phase chemistry. This * kinetics manager implements standard mass-action reaction rate - * expressions for low-density gases. It assumes that all - * stoichiometric coefficients are integers. + * expressions for low-density gases. + * @ingroup kinetics */ class GasKinetics : public Kinetics { @@ -399,9 +398,6 @@ namespace Cantera { vector_int m_dn; vector_int m_revindex; - map > m_rstoich; - map > m_pstoich; - vector m_rxneqn; GasKineticsData* m_kdata; diff --git a/Cantera/src/IdealGasPhase.cpp b/Cantera/src/IdealGasPhase.cpp index 49e542920..8a99c8be2 100644 --- a/Cantera/src/IdealGasPhase.cpp +++ b/Cantera/src/IdealGasPhase.cpp @@ -2,6 +2,7 @@ * * @file IdealGasPhase.cpp * + * $Id$ */ #ifdef WIN32 @@ -16,18 +17,203 @@ namespace Cantera { + // Molar Thermodynamic Properties of the Solution ---------- + // Mechanical Equation of State ---------------------------- + // Chemical Potentials and Activities ---------------------- + + /** + * Get the array of non-dimensional activity coefficients + */ + void IdealGasPhase::getActivityCoefficients(doublereal *ac) const { + for (int k = 0; k < m_kk; k++) { + ac[k] = 1.0; + } + } + + /** + * Get the array of chemical potentials at unit activity \f$ + * \mu^0_k(T,P) \f$. + */ + void IdealGasPhase::getStandardChemPotentials(doublereal* muStar) const { + const array_fp& gibbsrt = gibbs_RT_ref(); + scale(gibbsrt.begin(), gibbsrt.end(), muStar, _RT()); + double tmp = log (pressure() /m_spthermo->refPressure()); + tmp *= GasConstant * temperature(); + for (int k = 0; k < m_kk; k++) { + muStar[k] += tmp; // add RT*ln(P/P_0) + } + } + + // Partial Molar Properties of the Solution -------------- + void IdealGasPhase::getChemPotentials(doublereal* mu) const { - doublereal logp = log(pressure()/m_spthermo->refPressure()); + getStandardChemPotentials(mu); + //doublereal logp = log(pressure()/m_spthermo->refPressure()); doublereal xx; doublereal rt = temperature() * GasConstant; - const array_fp& g_RT = gibbs_RT(); + //const array_fp& g_RT = gibbs_RT_ref(); for (int k = 0; k < m_kk; k++) { xx = fmaxx(SmallNumber, moleFraction(k)); - mu[k] = rt*(g_RT[k] + log(xx) + logp); + mu[k] += rt*(log(xx)); } } - // new methods defined here + /** + * Get the array of partial molar enthalpies of the species + * units = J / kmol + */ + void IdealGasPhase::getPartialMolarEnthalpies(doublereal* hbar) const { + const array_fp& _h = enthalpy_RT_ref(); + doublereal rt = GasConstant * temperature(); + scale(_h.begin(), _h.end(), hbar, rt); + } + + /** + * Get the array of partial molar entropies of the species + * units = J / kmol / K + */ + void IdealGasPhase::getPartialMolarEntropies(doublereal* sbar) const { + const array_fp& _s = entropy_R_ref(); + doublereal r = GasConstant; + scale(_s.begin(), _s.end(), sbar, r); + doublereal logp = log(pressure()/m_spthermo->refPressure()); + for (int k = 0; k < m_kk; k++) { + doublereal xx = fmaxx(SmallNumber, moleFraction(k)); + sbar[k] += r * (- logp - log(xx)); + } + } + + /** + * Get the array of partial molar volumes + * units = m^3 / kmol + */ + void IdealGasPhase::getPartialMolarVolumes(doublereal* vbar) const { + double vol = 1.0 / molarDensity(); + for (int k = 0; k < m_kk; k++) { + vbar[k] = vol; + } + } + + // Properties of the Standard State of the Species in the Solution -- + + /** + * Get the nondimensional Enthalpy functions for the species + * at their standard states at the current T and P of the + * solution + */ + void IdealGasPhase::getEnthalpy_RT(doublereal* hrt) const { + const array_fp& _h = enthalpy_RT_ref(); + copy(_h.begin(), _h.end(), hrt); + } + + /** + * Get the array of nondimensional entropy functions for the + * standard state species + * at the current T and P of the solution. + */ + void IdealGasPhase::getEntropy_R(doublereal* sr) const { + const array_fp& _s = entropy_R_ref(); + copy(_s.begin(), _s.end(), sr); + double tmp = log (pressure() /m_spthermo->refPressure()); + for (int k = 0; k < m_kk; k++) { + sr[k] -= tmp; + } + } + + /** + * Get the nondimensional gibbs function for the species + * standard states at the current T and P of the solution. + */ + void IdealGasPhase::getGibbs_RT(doublereal* grt) const { + const array_fp& gibbsrt = gibbs_RT_ref(); + copy(gibbsrt.begin(), gibbsrt.end(), grt); + double tmp = log (pressure() /m_spthermo->refPressure()); + for (int k = 0; k < m_kk; k++) { + grt[k] += tmp; + } + } + + /** + * get the pure Gibbs free energies of each species assuming + * it is in its standard state. This is the same as + * getStandardChemPotentials(). + */ + void IdealGasPhase::getPureGibbs(doublereal* gpure) const { + const array_fp& gibbsrt = gibbs_RT_ref(); + scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT()); + double tmp = log (pressure() /m_spthermo->refPressure()); + tmp *= _RT(); + for (int k = 0; k < m_kk; k++) { + gpure[k] += tmp; + } + } + + /** + * Get the nondimensional heat capacity at constant pressure + * function for the species + * standard states at the current T and P of the solution. + */ + void IdealGasPhase::getCp_R(doublereal* cpr) const { + const array_fp& _cpr = cp_R_ref(); + copy(_cpr.begin(), _cpr.end(), cpr); + } + + + // Thermodynamic Values for the Species Reference States --------- + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * and reference presssure. + */ + void IdealGasPhase::getEnthalpy_RT_ref(doublereal *hrt) const { + const array_fp& _h = enthalpy_RT_ref(); + copy(_h.begin(), _h.end(), hrt); + } + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * and reference pressure. + */ + void IdealGasPhase::getGibbs_RT_ref(doublereal *grt) const { + const array_fp& gibbsrt = gibbs_RT_ref(); + copy(gibbsrt.begin(), gibbsrt.end(), grt); + } + + /** + * Returns the vector of the + * gibbs function of the reference state at the current temperature + * and reference pressure. + * units = J/kmol + */ + void IdealGasPhase::getGibbs_ref(doublereal *g) const { + const array_fp& gibbsrt = gibbs_RT_ref(); + scale(gibbsrt.begin(), gibbsrt.end(), g, _RT()); + } + + /** + * Returns the vector of nondimensional + * entropies of the reference state at the current temperature + * and reference pressure. + */ + void IdealGasPhase::getEntropy_R_ref(doublereal *er) const { + const array_fp& _s = entropy_R_ref(); + copy(_s.begin(), _s.end(), er); + } + + /** + * Returns the vector of nondimensional + * constant pressure heat capacities of the reference state + * at the current temperature and reference pressure. + */ + void IdealGasPhase::getCp_R_ref(doublereal *cprt) const { + const array_fp& _cpr = cp_R_ref(); + copy(_cpr.begin(), _cpr.end(), cprt); + } + + + // new methods defined here ------------------------------- void IdealGasPhase::initThermo() { @@ -49,14 +235,14 @@ namespace Cantera { m_pp.resize(leng); } - /** * Set mixture to an equilibrium state consistent with specified - * chemical potentials and temperature. + * chemical potentials and temperature. This method is needed by + * the ChemEquil equillibrium solver. */ void IdealGasPhase::setToEquilState(const doublereal* mu_RT) { - const array_fp& grt = gibbs_RT(); + const array_fp& grt = gibbs_RT_ref(); doublereal pres = 0.0; for (int k = 0; k < m_kk; k++) { @@ -69,12 +255,20 @@ namespace Cantera { } + /// This method is called each time a thermodynamic property is + /// requested, to check whether the species properties need to be + /// updated. void IdealGasPhase::_updateThermo() const { doublereal tnow = temperature(); + + // If the temperature has changed since the last time these + // properties were computed, recompute them. if (m_tlast != tnow) { m_spthermo->update(tnow, m_cp0_R.begin(), m_h0_RT.begin(), m_s0_R.begin()); m_tlast = tnow; + + // update the species Gibbs functions int k; for (k = 0; k < m_kk; k++) { m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k]; diff --git a/Cantera/src/IdealGasPhase.h b/Cantera/src/IdealGasPhase.h index 53d93645e..081eda449 100644 --- a/Cantera/src/IdealGasPhase.h +++ b/Cantera/src/IdealGasPhase.h @@ -49,7 +49,7 @@ namespace Cantera { /** - * @name Molar Thermodynamic Properties + * @name Molar Thermodynamic Properties of the Solution ------------------------------ * @{ */ @@ -67,7 +67,7 @@ namespace Cantera { */ virtual doublereal enthalpy_mole() const { return GasConstant * temperature() * - mean_X(enthalpy_RT().begin()); + mean_X(enthalpy_RT_ref().begin()); } /** @@ -76,34 +76,36 @@ namespace Cantera { * \hat u(T) = \sum_k X_k \hat h^0_k(T) - \hat R T, * \f] * and is a function only of temperature. - * The standard-state pure-species enthalpies + * The reference-state pure-species enthalpies * \f$ \hat h^0_k(T) \f$ are computed by the species thermodynamic * property manager. * @see SpeciesThermo */ virtual doublereal intEnergy_mole() const { return GasConstant * temperature() - * ( mean_X(enthalpy_RT().begin()) - 1.0); + * ( mean_X(enthalpy_RT_ref().begin()) - 1.0); } - /** * Molar entropy. Units: J/kmol/K. * For an ideal gas mixture, * \f[ * \hat s(T, P) = \sum_k X_k \hat s^0_k(T) - \hat R \log (P/P^0). * \f] - * The standard-state pure-species entropies + * The reference-state pure-species entropies * \f$ \hat s^0_k(T) \f$ are computed by the species thermodynamic * property manager. * @see SpeciesThermo */ virtual doublereal entropy_mole() const { - return GasConstant * (mean_X(entropy_R().begin()) - + return GasConstant * (mean_X(entropy_R_ref().begin()) - sum_xlogx() - log(pressure()/m_spthermo->refPressure())); } - + /** + * Molar Gibbs free Energy for an ideal gas. + * Units = J/kmol. + */ virtual doublereal gibbs_mole() const { return enthalpy_mole() - temperature() * entropy_mole(); } @@ -115,13 +117,13 @@ namespace Cantera { * \f[ * \hat c_p(t) = \sum_k \hat c^0_{p,k}(T). * \f] - * The standard-state pure-species heat capacities + * The reference-state pure-species heat capacities * \f$ \hat c^0_{p,k}(T) \f$ are computed by the species thermodynamic * property manager. * @see SpeciesThermo */ virtual doublereal cp_mole() const { - return GasConstant * mean_X(cp_R().begin()); + return GasConstant * mean_X(cp_R_ref().begin()); } /** @@ -135,9 +137,8 @@ namespace Cantera { //@} - /** - * @name Mechanical Equation of State + * @name Mechanical Equation of State ------------------------------------------------ * @{ */ @@ -162,133 +163,267 @@ namespace Cantera { /(GasConstant * temperature())); } - //@} - - - virtual void getChemPotentials(doublereal* mu) const; - - virtual void getStandardChemPotentials(doublereal* mu0) const { - getPureGibbs(mu0); + virtual doublereal isothermalCompressibility() const { + return -1.0/pressure(); } - /** + virtual doublereal thermalExpansionCoeff() const { + return 1.0/temperature(); + } + + //@} + /** + * @name Chemical Potentials and Activities ------------------------------------------ + * + * + * The activity \f$a_k\f$ of a species in solution is + * related to the chemical potential by + * \f[ + * \mu_k(T,P,X_k) = \mu_k^0(T,P) + * + \hat R T \log a_k. + * \f] + * The quantity \f$\mu_k^0(T,P)\f$ is + * the standard state chemical potential at unit activity. + * It may depend on the pressure and the temperature. However, + * it may not depend on the mole fractions of the species + * in the solution. + * + * The activities are related to the generalized + * concentrations, \f$\tilde C_k\f$, and standard + * concentrations, \f$C^0_k\f$, by the following formula: + * + * \f[ + * a_k = \frac{\tilde C_k}{C^0_k} + * \f] + * The generalized concentrations are used in the kinetics classes + * to describe the rates of progress of reactions involving the + * species. Their formulation depends upons the specification + * of the rate constants for reaction, especially the units used + * in specifying the rate constants. The bridge between the + * thermodynamic equilibrium expressions that use a_k and the + * kinetics expressions which use the generalized concentrations + * is provided by the multiplicative factor of the + * standard concentrations. + * @{ + */ + + /** * This method returns the array of generalized * concentrations. For an ideal gas mixture, these are simply * the actual concentrations. */ virtual void getActivityConcentrations(doublereal* c) const { getConcentrations(c); - //for (int k = 0; k < m_kk; k++) if (c[k] < 0.0) c[k] = 0.0; } - /** + /** * The standard concentration. This is defined as the concentration * by which the generalized concentration is normalized to produce * the activity. Since the activity for an ideal gas mixture is * simply the mole fraction, the standard concentration is - * \f$ P^0/\hat R T \f$. + * \f$ P / R T \f$. */ virtual doublereal standardConcentration(int k=0) const { - return m_p0/(GasConstant * temperature()); + double p = pressure(); + return p/(GasConstant * temperature()); } + /** + * Returns the natural logarithm of the standard + * concentration of the kth species + */ virtual doublereal logStandardConc(int k=0) const { _updateThermo(); - return m_logc0; + double p = pressure(); + double lc = log (p / (GasConstant * temperature())); + return lc; } - virtual void getPartialMolarEnthalpies(doublereal* hbar) const { - const array_fp& _h = enthalpy_RT(); - doublereal rt = GasConstant * temperature(); - scale(_h.begin(), _h.end(), hbar, rt); - } + /** + * Get the array of non-dimensional activity coefficients at + * the current solution temperature, pressure, and + * solution concentration. + * For ideal gases, the activity coefficients are all equal + * to one. + */ + virtual void getActivityCoefficients(doublereal* ac) const; - virtual void getPureGibbs(doublereal* gpure) const { - const array_fp& gibbsrt = gibbs_RT(); - scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT()); - } + /** + * Get the array of chemical potentials at unit activity \f$ + * \mu^0_k \f$ at the current temperature and pressure of the + * solution. + * These are the standard state chemical potentials. + */ + virtual void getStandardChemPotentials(doublereal* muStar) const; - void getEnthalpy_RT(doublereal* hrt) const { - const array_fp& _h = enthalpy_RT(); - copy(_h.begin(), _h.end(), hrt); - } + + //@} + /// @name Partial Molar Properties of the Solution ---------------------------------- + //@{ - void getEntropy_R(doublereal* sr) const { - const array_fp& _s = entropy_R(); - copy(_s.begin(), _s.end(), sr); - } + /** + * Get the species chemical potentials. Units: J/kmol. + * + * This function returns a vector of chemical potentials of the + * species in solution at the current temperature, pressure + * and mole fraction of the solution. + */ + virtual void getChemPotentials(doublereal* mu) const; + + /** + * Get the array of partial molar enthalpies + * units = J / kmol + */ + virtual void getPartialMolarEnthalpies(doublereal* hbar) const; - virtual void getGibbs_RT(doublereal* grt) const { - const array_fp& gibbsrt = gibbs_RT(); - copy(gibbsrt.begin(), gibbsrt.end(), grt); - } + /** + * Returns an array of partial molar entropies of the species in the + * solution. Units: J/kmol. + */ + virtual void getPartialMolarEntropies(doublereal* sbar) const; - void getCp_R(doublereal* cpr) const { - const array_fp& _cpr = cp_R(); - copy(_cpr.begin(), _cpr.end(), cpr); - } + /** + * Get the array of partial molar volumes + * units = m^3 / kmol + */ + virtual void getPartialMolarVolumes(doublereal* vbar) const; + + //@} + /// @name Properties of the Standard State of the Species in the Solution ---------- + //@{ + + /** + * Get the nondimensional Enthalpy functions for the species + * at their standard states at the current + * T and P of the solution. + */ + virtual void getEnthalpy_RT(doublereal* hrt) const; + + /** + * Get the array of nondimensional Enthalpy functions for the + * standard state species + * at the current T and P of the solution. + */ + virtual void getEntropy_R(doublereal* sr) const; + + /** + * Get the nondimensional gibbs function for the species + * standard states at the current T and P of the solution. + */ + virtual void getGibbs_RT(doublereal* grt) const; + + /** + * Get the Gibbs functions for the pure species + * at the current T and P of the solution. + */ + virtual void getPureGibbs(doublereal* gpure) const; + + /** + * Get the nondimensional heat capacity at constant pressure + * function for the species + * standard states at the current T and P of the solution. + */ + virtual void getCp_R(doublereal* cpr) const; + + //@} + /// @name Thermodynamic Values for the Species Reference States --------------------- + //@{ + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * and reference presssure for the species + */ + virtual void getEnthalpy_RT_ref(doublereal *hrt) const; + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * and reference pressure for the species. + */ + virtual void getGibbs_RT_ref(doublereal *grt) const; + + /** + * Returns the vector of the + * gibbs function of the reference state at the current temperature + * and reference pressure for the species. + * units = J/kmol + */ + virtual void getGibbs_ref(doublereal *g) const; + + /** + * Returns the vector of nondimensional + * entropies of the reference state at the current temperature + * and reference pressure for the species. + */ + virtual void getEntropy_R_ref(doublereal *er) const; + + /** + * Returns the vector of nondimensional + * constant pressure heat capacities of the reference state + * at the current temperature and reference pressure + * for the species. + */ + virtual void getCp_R_ref(doublereal *cprt) const; - virtual doublereal isothermalCompressibility() { - return -1.0/pressure(); - } + //@} + /// @name New Methods Defined Here ------------------------------------------------- + //@{ - virtual doublereal thermalExpansionCoeff() { - return 1.0/temperature(); - } - - // new methods defined here - - const array_fp& enthalpy_RT() const { + const array_fp& enthalpy_RT_ref() const { _updateThermo(); return m_h0_RT; } - const array_fp& gibbs_RT() const { + const array_fp& gibbs_RT_ref() const { _updateThermo(); return m_g0_RT; } - const array_fp& expGibbs_RT() const { + const array_fp& expGibbs_RT_ref() const { _updateThermo(); int k; for (k = 0; k != m_kk; k++) m_expg0_RT[k] = exp(m_g0_RT[k]); return m_expg0_RT; } - const array_fp& entropy_R() const { + const array_fp& entropy_R_ref() const { _updateThermo(); return m_s0_R; } - const array_fp& cp_R() const { + const array_fp& cp_R_ref() const { _updateThermo(); return m_cp0_R; } - virtual void setPotentialEnergy(int k, doublereal pe) { - m_pe[k] = pe; - _updateThermo(); - } +// virtual void setPotentialEnergy(int k, doublereal pe) { +// m_pe[k] = pe; +// _updateThermo(); +// } - virtual doublereal potentialEnergy(int k) const { - return m_pe[k]; - } +// virtual doublereal potentialEnergy(int k) const { +// return m_pe[k]; +// } virtual void initThermo(); - /** - * Set mixture to an equilibrium state consistent with specified - * element potentials and temperature. - * - * @param lambda_RT vector of non-dimensional element potentials - * \f[ \lambda_m/RT \f]. - * @param t temperature in K. - * @param work. Temporary work space. Must be dimensioned at least - * as large as the number of species. - * - */ + /** + * @internal + * @name Chemical Equilibrium + * @{ + * + * Set mixture to an equilibrium state consistent with specified + * element potentials and temperature. + * + * @param lambda_RT vector of non-dimensional element potentials + * \f[ \lambda_m/RT \f]. + * @param t temperature in K. + * @param work. Temporary work space. Must be dimensioned at least + * as large as the number of species. + * + */ virtual void setToEquilState(const doublereal* lambda_RT); diff --git a/Cantera/src/ImplicitSurfChem.cpp b/Cantera/src/ImplicitSurfChem.cpp index 5f4c1a9f1..4e348c190 100755 --- a/Cantera/src/ImplicitSurfChem.cpp +++ b/Cantera/src/ImplicitSurfChem.cpp @@ -21,27 +21,6 @@ namespace Cantera { -// ImplicitSurfChem::ImplicitSurfChem(InterfaceKinetics& kin) -// : FuncEval(), m_kin(&kin), m_integ(0), -// m_atol(1.e-14), m_rtol(1.e-7), m_maxstep(0.0) -// { -// m_integ = new CVodeInt; -// m_surfindex = kin.surfacePhaseIndex(); -// if (m_surfindex < 0) -// throw CanteraError("ImplicitSurfChem","kinetics manager contains no surface phase"); -// m_surf = (SurfPhase*)&kin.thermo(m_surfindex);; - -// // use backward differencing, with a full Jacobian computed -// // numerically, and use a Newton linear iterator - -// m_integ->setMethod(BDF_Method); -// m_integ->setProblemType(DENSE + NOJAC); -// m_integ->setIterator(Newton_Iter); -// m_nsp = m_surf->nSpecies(); -// m_work.resize(m_kin->nTotalSpecies()); -// } - - ImplicitSurfChem::ImplicitSurfChem(vector k) : FuncEval(), m_nv(0), m_integ(0), m_atol(1.e-14), m_rtol(1.e-7), m_maxstep(0.0) @@ -117,7 +96,7 @@ namespace Cantera { for (int n = 0; n < m_nsurf; n++) { rs0 = 1.0/m_surf[n]->siteDensity(); m_kin[n]->getNetProductionRates(m_work.begin()); - kstart = m_kin[n]->start(m_surfindex[n]); + kstart = m_kin[n]->kineticsSpeciesIndex(0,m_surfindex[n]); sum = 0.0; loc = 0; for (k = 1; k < m_nsp[n]; k++) { diff --git a/Cantera/src/InterfaceKinetics.cpp b/Cantera/src/InterfaceKinetics.cpp index 4dad1df1a..d9d68a400 100644 --- a/Cantera/src/InterfaceKinetics.cpp +++ b/Cantera/src/InterfaceKinetics.cpp @@ -39,7 +39,7 @@ namespace Cantera { */ InterfaceKinetics:: InterfaceKinetics(thermo_t* thermo) : - Kinetics(thermo), + Kinetics(), m_kk(0), m_redo_rates(false), m_nirrev(0), @@ -49,6 +49,7 @@ namespace Cantera { m_finalized(false), m_has_coverage_dependence(false) { + if (thermo != 0) addPhase(*thermo); m_kdata = new InterfaceKineticsData; m_kdata->m_temp = 0.0; } @@ -177,30 +178,40 @@ namespace Cantera { int i, irxn; vector_fp dmu(nTotalSpecies(), 0.0); vector_fp rmu(nReactions(), 0.0); + vector_fp frop(nReactions(), 0.0); + vector_fp rrop(nReactions(), 0.0); + vector_fp netrop(nReactions(), 0.0); if (m_nrev > 0) { - + doublereal rt = GasConstant*thermo(0).temperature(); + cout << "T = " << thermo(0).temperature() << " " << rt << endl; int n, nsp, k, ik=0; //doublereal rt = GasConstant*thermo(0).temperature(); // doublereal rrt = 1.0/rt; int np = nPhases(); + doublereal delta; for (n = 0; n < np; n++) { thermo(n).getChemPotentials(dmu.begin() + m_start[n]); nsp = thermo(n).nSpecies(); for (k = 0; k < nsp; k++) { - dmu[ik] += Faraday * m_phi[n] * thermo(n).charge(k); - cout << thermo(n).speciesName(k) << " " << dmu[ik] << endl; + delta = Faraday * m_phi[n] * thermo(n).charge(k); + cout << thermo(n).speciesName(k) << " " << (delta+dmu[ik])/rt << " " << dmu[ik]/rt << endl; + dmu[ik] += delta; ik++; } } // compute Delta mu^ for all reversible reactions - //m_reactantStoich.decrementReactions(dmu.begin(), rmu.begin()); - //m_revProductStoich.incrementReactions(dmu.begin(), rmu.begin()); m_rxnstoich.getRevReactionDelta(m_ii, dmu.begin(), rmu.begin()); - + getFwdRatesOfProgress(frop.begin()); + getRevRatesOfProgress(rrop.begin()); + getNetRatesOfProgress(netrop.begin()); for (i = 0; i < m_nrev; i++) { irxn = m_revindex[i]; - cout << "Reaction " << reactionString(irxn) << " " << rmu[irxn] << endl; + cout << "Reaction " << reactionString(irxn) + << " " << rmu[irxn]/rt << endl; + printf("%12.6e %12.6e %12.6e %12.6e \n", + frop[irxn], rrop[irxn], netrop[irxn], + netrop[irxn]/(frop[irxn] + rrop[irxn])); } } } @@ -280,8 +291,19 @@ namespace Cantera { eamod = 0.5*m_rwork[i]; if (eamod != 0.0 && m_E[i] != 0.0) { ea = GasConstant * m_E[i]; - if (eamod + ea < 0.0) eamod = -ea; + if (eamod + ea < 0.0) { + eamod = -ea; + writelog("warning: modified E < 0.\n"); + } kf[i] *= exp(-eamod*rrt); + if (kf[i] == 0.0) { + for (n = 0; n < np; n++) { + cout << "phi " << n << " " << thermo(n).electricPotential() << " " << m_phi[n] << endl; + } + cout << "Zero rate coeff." << endl; + cout << "eamod = " << eamod << " " << eamod*rrt << endl; + cout << eamod/Faraday << endl; + } } } } @@ -582,44 +604,8 @@ namespace Cantera { void InterfaceKinetics:: addReaction(const ReactionData& r) { - // int nr = r.reactants.size(); - - // a global reaction is identified as one with - // a reactant stoichiometric coefficient not equal - // to the molecularity for some reactant -// bool isglobal = false; -// for (int n = 0; n < nr; n++) { -// if (r.rstoich[n] != int(r.order[n])) { -// isglobal = true; break; -// } -// } - // if (isglobal) - // addGlobalReaction(r); - //else - - // if (r.global) - // cout << r.equation << " is global " << endl; - addElementaryReaction(r); - //if (r.global) { - // int nr = r.order.size(); - // vector_fp ordr(nr); - // for (int n = 0; n < nr; n++) { - // ordr[n] = r.order[n] - r.rstoich[n]; - // cout << r.reactants[n] << " " << r.order[n] << " " << ordr[n] << endl; - // } - //m_globalReactantStoich.add( reactionNumber(), - // r.reactants, ordr); - //} - -// if (r.reactionType == ELEMENTARY_RXN) -// addElementaryReaction(r); -// if (r.reactionType == SURFACE_RXN) -// addElementaryReaction(r); -// else if (r.reactionType == GLOBAL_RXN) -// addGlobalReaction(r); - // operations common to all reaction types installReagents( r ); installGroups(reactionNumber(), r.rgroups, r.pgroups); diff --git a/Cantera/src/InterfaceKinetics.h b/Cantera/src/InterfaceKinetics.h index 69a60b436..7304a6afa 100644 --- a/Cantera/src/InterfaceKinetics.h +++ b/Cantera/src/InterfaceKinetics.h @@ -58,8 +58,9 @@ namespace Cantera { /// - /// A kinetics manager for heterogeneous reaction mechanisms. The reactions are - /// assumed to occur at a 2D interface between two 3D phases. + /// A kinetics manager for heterogeneous reaction mechanisms. The + /// reactions are assumed to occur at a 2D interface between two + /// 3D phases. /// class InterfaceKinetics : public Kinetics { @@ -81,16 +82,7 @@ namespace Cantera { /// Destructor. virtual ~InterfaceKinetics(); - /** - * Identifies the subclass of the Kinetics manager type. - * These are listed in mix_defs.h. - */ virtual int ID() { return cInterfaceKinetics; } - - /** - * Identifies the subclass of the kinetics manager type. - * These are listed in mix_defs.h. - */ virtual int type() { return cInterfaceKinetics; } /** @@ -100,10 +92,11 @@ namespace Cantera { * @param n phase Index in this kinetics object. * @param V Electric potential (volts) */ - void setElectricPotential(int n, doublereal V) { - thermo(n).setElectricPotential(V); - m_redo_rates = true; - } +// void setElectricPotential(int n, doublereal V) { +// thermo(n).setElectricPotential(V); +// m_redo_rates = true; +// } + /// /// @name Reaction Rates Of Progress @@ -111,49 +104,21 @@ namespace Cantera { //@{ - /** - * Forward rates of progress. - * Return the forward rates of progress in array fwdROP, which - * must be dimensioned at least as large as the total number - * of reactions. - * Units are kmol/m2/s - */ virtual void getFwdRatesOfProgress(doublereal* fwdROP) { updateROP(); copy(m_kdata->m_ropf.begin(), m_kdata->m_ropf.end(), fwdROP); } - - /** - * Reverse rates of progress. - * Return the reverse rates of progress in array revROP, which - * must be dimensioned at least as large as the total number - * of reactions. - * Units are kmol/m2/s - */ virtual void getRevRatesOfProgress(doublereal* revROP) { updateROP(); copy(m_kdata->m_ropr.begin(), m_kdata->m_ropr.end(), revROP); } - /** - * Net rates of progress. Return the net (forward - reverse) - * rates of progress in array netROP, which must be - * dimensioned at least as large as the total number of - * reactions. - * Units are kmol/m2/s - */ virtual void getNetRatesOfProgress(doublereal* netROP) { updateROP(); copy(m_kdata->m_ropnet.begin(), m_kdata->m_ropnet.end(), netROP); } - /** - * Equilibrium constants. Return the equilibrium constants of - * the reactions in concentration units in array kc, which - * must be dimensioned at least as large as the total number - * of reactions. - */ virtual void getEquilibriumConstants(doublereal* kc); @@ -228,13 +193,6 @@ namespace Cantera { updateROP(); m_rxnstoich.getCreationRates(m_kk, m_kdata->m_ropf.begin(), m_kdata->m_ropr.begin(), cdot); - //fill(cdot, cdot + m_kk, 0.0); - //m_revProductStoich.incrementSpecies( - // m_kdata->m_ropf.begin(), cdot); - //m_irrevProductStoich.incrementSpecies( - // m_kdata->m_ropf.begin(), cdot); - //m_reactantStoich.incrementSpecies( - // m_kdata->m_ropr.begin(), cdot); } /** @@ -249,11 +207,6 @@ namespace Cantera { updateROP(); m_rxnstoich.getDestructionRates(m_kk, m_kdata->m_ropf.begin(), m_kdata->m_ropr.begin(), ddot); - // fill(ddot, ddot + m_kk, 0.0); - //m_revProductStoich.incrementSpecies( - // m_kdata->m_ropr.begin(), ddot); - //m_reactantStoich.incrementSpecies( - // m_kdata->m_ropf.begin(), ddot); } /** @@ -265,14 +218,7 @@ namespace Cantera { */ virtual void getNetProductionRates(doublereal* net) { updateROP(); - //fill(net, net + m_kk, 0.0); - //m_revProductStoich.incrementSpecies( - // m_kdata->m_ropnet.begin(), net); - //m_irrevProductStoich.incrementSpecies( - // m_kdata->m_ropnet.begin(), net); - //m_reactantStoich.decrementSpecies( - // m_kdata->m_ropnet.begin(), net); - m_rxnstoich.getNetProductionRates(m_kk, + m_rxnstoich.getNetProductionRates(m_kk, m_kdata->m_ropnet.begin(), net); } diff --git a/Cantera/src/Kinetics.cpp b/Cantera/src/Kinetics.cpp new file mode 100644 index 000000000..db7cba121 --- /dev/null +++ b/Cantera/src/Kinetics.cpp @@ -0,0 +1,223 @@ +/** + * @file Kinetics.cpp + * + */ + +// Copyright 2001-2004 California Institute of Technology + + + +#include "InterfaceKinetics.h" +#include "SurfPhase.h" +#include "ReactionData.h" +#include "StoichManager.h" +#include "RateCoeffMgr.h" + +#include "ImplicitSurfChem.h" + +#include +using namespace std; + + +namespace Cantera { + + + Kinetics::Kinetics() : m_ii(0), m_thermo(0), + m_index(-1), m_surfphase(-1) {} + + Kinetics::Kinetics(thermo_t* thermo) : + m_ii(0), + m_index(-1), + m_surfphase(-1) , + m_rxnphase(0) + { + if (thermo) { + addPhase(*thermo); + } + deprecatedMethod("Kinetics","Kinetics(thermo_t*)","Kinetics()"); + } + + /** + * Destructor. Does nothing. + */ + Kinetics::~Kinetics(){} + + /** + * Takes as input an array of properties for all species in the + * mechanism and copies those values beloning to a particular + * phase to the output array. + * @param data Input data array. + * @param phase Pointer to one of the phase objects participating + * in this reaction mechanism + * @param phase_data Output array where the values for the the + * specified phase are to be written. + */ + void Kinetics::selectPhase(const doublereal* data, const thermo_t* phase, + doublereal* phase_data) { + int n, nsp, np = nPhases(); + for (n = 0; n < np; n++) { + if (phase == m_thermo[n]) { + nsp = phase->nSpecies(); + copy(data + m_start[n], + data + m_start[n] + nsp, phase_data); + return; + } + } + throw CanteraError("Kinetics::selectPhase", "Phase not found."); + } + + + /** + * kineticsSpeciesName(): + * + * Return the string name of the kth species in the kinetics + * manager. k is an integer from 0 to ktot - 1, where ktot is + * the number of species in the kinetics manager, which is the + * sum of the number of species in all phases participating in + * the kinetics manager. If k is out of bounds, the string + * "" is returned. + */ + string Kinetics::kineticsSpeciesName(int k) const { + int np = m_start.size(); + for (int n = np-1; n >= 0; n--) { + if (k >= m_start[n]) { + return thermo(n).speciesName(k - m_start[n]); + } + } + return ""; + } + + /** + * kineticsSpeciesIndex(): + * + * This routine will look up a species number based on + * the input string nm. The lookup of species will + * occur for all phases listed in the kinetics object, + * unless the string ph refers to a specific phase of + * the object. + * + * return + * - If a match is found, the position in the species list + * is returned. + * - If a specific phase is specified and no match is found, + * the value -1 is returned. + * - If no match is found in any phase, the value -2 is returned. + */ + int Kinetics::kineticsSpeciesIndex(string nm, string ph) const { + int np = static_cast(m_thermo.size()); + int k; + string id; + for (int n = 0; n < np; n++) { + id = thermo(n).id(); + if (ph == id) { + k = thermo(n).speciesIndex(nm); + if (k < 0) return -1; + return k + m_start[n]; + } + else if (ph == "") { + /* + * Call the speciesIndex() member function of the + * ThermoPhase object to find a match. + */ + k = thermo(n).speciesIndex(nm); + if (k >= 0) return k + m_start[n]; + } + } + return -2; + } + + /** + * This function looks up the string name of a species and + * returns a reference to the ThermoPhase object of the + * phase where the species resides. + * Will throw an error if the species string doesn't match. + */ + thermo_t& Kinetics::speciesPhase(string nm) { + int np = static_cast(m_thermo.size()); + int k; + string id; + for (int n = 0; n < np; n++) { + k = thermo(n).speciesIndex(nm); + if (k >= 0) return thermo(n); + } + throw CanteraError("speciesPhase", "unknown species "+nm); + } + + /** + * This function takes as an argument the kineticsSpecies index + * (i.e., the list index in the list of species in the kinetics + * manager) and returns the index of the phase owning the + * species. + */ + int Kinetics::speciesPhaseIndex(int k) { + int np = m_start.size(); + for (int n = np-1; n >= 0; n--) { + if (k >= m_start[n]) { + return n; + } + } + throw CanteraError("speciesPhaseIndex", + "illegal species index: "+int2str(k)); + } + + /** + * Add a phase to the kinetics manager object. This must + * be done before the function init() is called or + * before any reactions are input. + * The following fields are updated: + * m_start -> vector of integers, containing the + * starting position of the species for + * each phase in the kinetics mechanism. + * m_surfphase -> index of the surface phase. + * m_thermo -> vector of pointers to ThermoPhase phases + * that participate in the kinetics + * mechanism. + * m_phaseindex -> map containing the string id of each + * ThermoPhase phase as a key and the + * index of the phase within the kinetics + * manager object as the value. + */ + void Kinetics::addPhase(thermo_t& thermo) { + + // if not the first thermo object, set the start position + // to that of the last object added + the number of its species + if (m_thermo.size() > 0) { + m_start.push_back(m_start.back() + + m_thermo.back()->nSpecies()); + } + // otherwise start at 0 + else { + m_start.push_back(0); + } + // there should only be one surface phase + int ptype = -100; + if (type() == cEdgeKinetics) ptype = cEdge; + else if (type() == cInterfaceKinetics) ptype = cSurf; + if (thermo.eosType() == ptype) { + // if (m_surfphase >= 0) { + // throw CanteraError("Kinetics::addPhase", + // "cannot add more than one surface phase"); + // } + m_surfphase = nPhases(); + m_rxnphase = nPhases(); + } + m_thermo.push_back(&thermo); + m_phaseindex[m_thermo.back()->id()] = nPhases(); + } + + /** + * err(): + * + * Private function of the class Kinetics, indicating that a function + * inherited from the base class hasn't had a definition assigned to it + */ + void Kinetics::err(string m) const { + throw CanteraError("Kinetics::" + m, + "The default Base class method was called, when " + "the inherited class's method should " + "have been called"); + } + + + +} diff --git a/Cantera/src/Kinetics.h b/Cantera/src/Kinetics.h index 8828f1999..f1d54229c 100755 --- a/Cantera/src/Kinetics.h +++ b/Cantera/src/Kinetics.h @@ -1,9 +1,6 @@ /** * @file Kinetics.h * - * $Author$ - * $Revision$ - * $Date$ */ // Copyright 2001-2004 California Institute of Technology @@ -24,17 +21,112 @@ namespace Cantera { // forward references class ReactionData; - + /// @defgroup kineticsmgr Kinetics Managers + /// @section kinmodman Models and Managers + /// + /// A kinetics manager is a C++ class that implements a kinetics + /// model, which is a set of mathematical equation describing how + /// various kinetic quanities are to be computed -- reaction + /// rates, species production rates, etc. Many different kinetics + /// models might be defined to handle different types of kinetic + /// processes. For example, one kinetics model might use + /// expressions valid for elementary reactions in ideal gas + /// mixtures. It might, for example, require the reaction orders + /// to be integral and equal to the forward stoichiometric + /// coefficients, require that each reaction be reversible with a + /// reverse rate satisfying detailed balance, include + /// pressure-dependent unimolecular reactions, etc. Another + /// kinetics model might be designed for heterogeneous chemistry + /// at interfaces, and might allow empirical reaction orders, + /// coverage-dependent activation energies, irreversible + /// reactions, and include effects of potential differences across + /// the interface on reaction rates. /// + /// A kinetics manager implements a kinetics model. Since the + /// model equations may be complex and expensive to evaluate, a + /// kinetics manager may adopt various strategies to 'manage' the + /// computation and evaluate the expressions efficiently. For + /// example, if there are rate coefficients or other quantities + /// that depend only on temperature, a manager class may choose to + /// store these quantities internally, and re-evaluate them only + /// when the temperature has actually changed. Or a manager + /// designed for use with reaction mechanisms with a few repeated + /// activation energies might precompute the terms \f$ exp(-E/RT) + /// \f$, instead of evaluating the exponential repeatedly for each + /// reaction. There are many other possible 'management styles', + /// each of which might be better suited to some reaction + /// mechanisms than others. + /// + /// But however a manager structures the internal computation, the + /// tasks the manager class must perform are, for the most part, + /// the same. It must be able to compute reaction rates, species + /// production rates, equilibrium constants, etc. Therefore, all + /// kinetics manager classes should have a common set of public + /// methods, but differ in how they implement these methods. + /// + /// All kinetics manager classes derive from a common base class + /// (class Kinetics). The primary purpose of class Kinetics is to + /// define the common public interface for the family of kinetics + /// managers. For example, Kinetics defines a method + /// getNetProductionRates that every family member is required to + /// implement. The details of how it is implemented are left to + /// the individual manager, but the end result must be that the + /// net production rates for each species are written to an output + /// array. + /// + /// A kinetics manager computes reaction rates of progress, + /// species production rates, equilibrium constants, and similar + /// quantities for a reaction mechanism. All kinetics manager + /// classes derive from class Kinetics, which defines a common + /// public interface for all kinetics managers. Each derived class + /// overloads the virtual methods of Kinetics to implement a + /// particular kinetics model. + /// + /// For example, class GasKinetics implements reaction rate + /// expressions appropriate for homogeneous reactions in ideal gas + /// mixtures, and class InterfaceKinetics implements expressions + /// appropriate for heterogeneous mechanisms at interfaces, + /// including how to handle reactions involving charged species of + /// phases with different electric potentials --- something that + /// class GasKinetics doesn't deal with at all. + /// + /// Kinetics managers may be also created that hard-wire a + /// particular reaction mechanism in C++ code. This can often + /// result in faster performance. An example of this is the + /// kinetics manager GRI30_Kinetics that hard-wires the rate + /// expressions for the natural gas combustion mechanism GRI-3.0. + /// + /// Many of the methods of class Kinetics write into arrays the + /// values of some quantity for each species, for example the net + /// production rate. These methods always write the results into + /// flat arrays, ordered by phase in the order the phase was + /// added, and within a phase in the order the species were added + /// to the phase (which is the same ordering as in the input + /// file). Example: suppose a heterogeneous mechanism involves + /// three phases -- a bulk phase 'a', another bulk phase 'b', and + /// the surface phase 'a:b' at the a/b interface. Phase 'a' + /// contains 12 species, phase 'b' contains 3, and at the + /// interface there are 5 adsorbed species defined in phase + /// 'a:b'. Then methods like getNetProductionRates(doublereal* net) + /// will write and output array of length 20, beginning at the location + /// pointed to by 'net'. The first 12 values will be the net production + /// rates for all 12 species of phase 'a' (even if some do not participate + /// in the reactions), the next 3 will be for phase 'b', and finally the + /// net production rates for the surface species will occupy the last + /// 5 locations. + + /// Public interface for kinetics managers. This class serves as a /// base class to derive 'kinetics managers', which are classes /// that manage homogeneous chemistry within one phase, or - /// heterogeneous chemistry at one interface. - /// + /// heterogeneous chemistry at one interface. The virtual methods + /// of this class are meant to be overloaded in subclasses. The + /// non-virtual methods perform generic functions and are + /// implemented in Kinetics. They should not be overloaded. Only + /// those methods required by a subclass need to be overloaded; + /// the rest will throw exceptions if called. @ingroup kinetics + /// @ingroup kineticsmgr - // Note: Implementations for methods not implemented here may be - // found in KineticsFactory.cpp - class Kinetics { public: @@ -47,34 +139,22 @@ namespace Cantera { */ //@{ - /// Constructors. - Kinetics() : m_ii(0), m_thermo(0), m_index(-1), m_surfphase(-1) {} + /// Default constructor. + Kinetics(); - /** - * This Constructor initializes with a starting phase. - */ - Kinetics(thermo_t* thermo) - : m_ii(0), m_index(-1), m_surfphase(-1) { - if (thermo) { - addPhase(*thermo); - } - } + /// This Constructor initializes with a starting phase. + /// @deprecated + Kinetics(thermo_t* thermo); - /// Destructor. Does nothing. - virtual ~Kinetics() {} + /// Destructor. + virtual ~Kinetics(); - /// For internal use. - int index(){ return m_index; } - void setIndex(int index) { m_index = index; } - - - /** - * Identifies the subclass of the Kinetics manager type. - * These are listed in mix_defs.h. - */ + /// Identifies the kinetics manager type. Each class derived + /// from Kinetics should overload this method to return a + /// unique integer. Standard values are defined in file + /// mix_defs.h. virtual int type() { return 0; } - /// Number of reactions in the reaction mechanism int nReactions() const {return m_ii;} @@ -87,24 +167,23 @@ namespace Cantera { //@{ /** - * The number of phases defined within the kinetics - * object. + * The number of phases participating in the reaction + * mechanism. For a homogeneous reaction mechanism, this will + * always return 1, but for a heterogeneous mechanism it will + * return the total number of phases in the mechanism. */ - int nPhases() const { return static_cast(m_thermo.size()); } + int nPhases() const { return static_cast(m_thermo.size()); } /** * Return the phase index of a phase in the list of phases * defined within the object. * - * Input - * ---------- - * ph = string name of the phase + * @param ph string name of the phase * * If a -1 is returned, then the phase is not defined in * the Kinetics object. - * (HKM -> unfound object will create another entry in the + * @todo (HKM -> unfound object will create another entry in the * map, suggest rewriting this function) - * @todo rewrite. */ int phaseIndex(string ph) { return m_phaseindex[ph] - 1; } @@ -116,6 +195,19 @@ namespace Cantera { */ int surfacePhaseIndex() { return m_surfphase; } + /** + * Phase where the reactions occur. For heterogeneous + * mechanisms, one of the phases in the list of phases + * represents the 2D interface or 1D edge at which the + * reactions take place. This method returns the index of the + * phase with the smallest spatial dimension (1, 2, or 3) + * among the list of phases. If there is more than one, the + * index of the first one is returned. For homogeneous + * mechanisms, the value 0 is returned. + */ + int reactionPhaseIndex() { return m_rxnphase; } + + /** * This method returns a reference to the nth ThermoPhase * object defined in this kinetics mechanism. It is typically @@ -133,8 +225,14 @@ namespace Cantera { * It is typically used so that member functions of the * ThermoPhase may be called. @deprecated This method is redundant. */ - thermo_t& phase(int n=0) { return *m_thermo[n]; } - const thermo_t& phase(int n=0) const { return *m_thermo[n]; } + thermo_t& phase(int n=0) { + deprecatedMethod("Kinetics","phase","thermo"); + return *m_thermo[n]; + } + const thermo_t& phase(int n=0) const { + deprecatedMethod("Kinetics","phase","thermo"); + return *m_thermo[n]; + } /** * The total number of species in all phases participating in @@ -151,13 +249,15 @@ namespace Cantera { /** * Returns the starting index of the species in the nth phase - * associated with the reaction mechanism. @deprecated. Can be - * replaced by kineticsSpeciesIndex(0,n). + * associated with the reaction mechanism. * * @param n Return the index of first species in the nth phase * associated with the reaction mechanism. */ - int start(int n) { return m_start[n]; } + int start(int n) { + deprecatedMethod("Kinetics","start","kineticsSpeciesIndex(0,n)"); + return m_start[n]; + } /** @@ -285,6 +385,24 @@ namespace Cantera { err("getEquilibriumConstants"); } + /** + * Change in species properties. Given an array of molar species + * property values \f$ z_k, k = 1, \dots, K \f$, return the + * array of reaction values + * \f[ + * \Delta Z_i = \sum_k \nu_{k,i} z_k, i = 1, \dots, I. + * \f] + * For example, if this method is called with the array of + * standard-state molar Gibbs free energies for the species, + * then the values returned in array \c deltaProperty would be + * the standard-state Gibbs free energies of reaction for each + * reaction. + */ + virtual void getReactionDelta(const doublereal* property, + doublereal* deltaProperty) { + err("getReactionDelta"); + } + /** * Return the vector of values for the reaction gibbs free * energy change. These values depend upon the concentration @@ -362,7 +480,7 @@ namespace Cantera { * Species creation rates [kmol/m^3 or kmol/m^2]. Return the * species creation rates in array cdot, which must be * dimensioned at least as large as the total number of - * species. @see nTotalSpecies. + * species in all phases. @see nTotalSpecies. * */ virtual void getCreationRates(doublereal* cdot) { @@ -521,16 +639,24 @@ namespace Cantera { void addPhase(thermo_t& thermo); /** - * Prepare the class for the addition of reactions. This function - * must be called after instantiation of the class, but before - * any reactions are actually added to the mechanism. + * Prepare the class for the addition of reactions. This + * method is called by function importKinetics after all + * phases have been added but before any reactions have + * been. The base class method does nothing, but derived + * classes may use this to perform any initialization + * (allocating arrays, etc.) that requires knowing the phases + * and species, but before any reactions are added. */ virtual void init() {} /** - * Finish adding reactions and prepare for use. This function - * must be called after all reactions are entered into the mechanism - * and before the mechanism is used to calculate reaction rates. + * Finish adding reactions and prepare for use. This method is + * called by function importKinetics after all reactions have + * been entered into the mechanism and before the mechanism is + * used to calculate reaction rates. The base class method + * does nothing, but derived classes may use this to perform + * any initialization (allocating arrays, etc.) that must be + * done after the reactions are entered. */ virtual void finalize() {} @@ -552,12 +678,18 @@ namespace Cantera { return m_dummygroups; } + //@} /** * @name Altering Reaction Rates * * These methods alter reaction rates. They are designed - * primarily for carrying out sensitivity analysis. + * primarily for carrying out sensitivity analysis, but may be + * used for any purpose requiring dynamic alteration of rate + * constants. For each reaction, a real-valued multiplier may + * be defined that multiplies the reaction rate + * coefficient. The multiplier may be set to zero to + * completely remove a reaction from the mechanism. */ //@{ @@ -577,31 +709,41 @@ namespace Cantera { /** * Returns true if the kinetics manager has been properly - * initialized and finalized. + * initialized and finalized. */ virtual bool ready() const { return false; } + /** + * Extract from array \c data the portion pertaining to phase \c phase. + */ + void selectPhase(const doublereal* data, const thermo_t* phase, + doublereal* phase_data); + + + /// For internal use. May be removed in a future release. + int index(){ return m_index; } + void setIndex(int index) { m_index = index; } + + protected: - /** - * m_ii is the number of reactions in the mechanism - */ + + /// Number of reactions in the mechanism int m_ii; - - /** - * m_perturb is a vector of perturbation factors for each - * reaction's rate of progress vector. It is initialized to one. - */ + + /// Vector of perturbation factors for each reaction's rate of + /// progress vector. It is initialized to one. + /// vector_fp m_perturb; /** * This is a vector of vectors containing the reactants for * each reaction. The outer vector is over the number of * reactions, m_ii. The inner vector is a list of species - * indicises. If the stoichiometric coefficient for a reactant + * indices. If the stoichiometric coefficient for a reactant * is greater than one, then the reactant is listed * contiguously in the vector a number of times equal to its * stoichiometric coefficient. @@ -612,22 +754,23 @@ namespace Cantera { * This is a vector of vectors containing the products for * each reaction. The outer vector is over the number of * reactions, m_ii. The inner vector is a list of species - * indecises. If the stoichiometric coefficient for a product - * is greater than one, then the reactant is listed - * contiguously in the vector a number of times equal to its - * stoichiometric coefficient. + * indeces. If the stoichiometric coefficient for a product is + * greater than one, then the reactant is listed contiguously + * in the vector a number of times equal to its stoichiometric + * coefficient. */ vector m_products; /** - * m_thermo is a vector of pointers to ThermoPhase objects. For - * homogeneous kinetics applications, this vector will only - * consist of one entry. For interfacial reactions, this vector - * will consist of multiple entries; some of them will be surface - * phases, and the other ones will be bulk phases. - * The order that the objects are listed determines the order in - * which the species comprising each phase are listed in the - * source term vector, originating from the reaction mechanism. + * m_thermo is a vector of pointers to ThermoPhase + * objects. For homogeneous kinetics applications, this vector + * will only have one entry. For interfacial reactions, this + * vector will consist of multiple entries; some of them will + * be surface phases, and the other ones will be bulk phases. + * The order that the objects are listed determines the order + * in which the species comprising each phase are listed in + * the source term vector, originating from the reaction + * mechanism. */ vector m_thermo; @@ -654,6 +797,13 @@ namespace Cantera { */ int m_surfphase; + /** + * Index in the list of phases of the one phase where the reactions + * occur. + */ + int m_rxnphase; + + private: vector m_dummygroups; @@ -661,7 +811,9 @@ namespace Cantera { }; + typedef Kinetics kinetics_t; + } diff --git a/Cantera/src/KineticsFactory.cpp b/Cantera/src/KineticsFactory.cpp index b6eff3e50..0d36aaa1d 100644 --- a/Cantera/src/KineticsFactory.cpp +++ b/Cantera/src/KineticsFactory.cpp @@ -25,99 +25,6 @@ namespace Cantera { - - //---------- class Kinetics methods ------------------ - string Kinetics::kineticsSpeciesName(int k) const { - int np = m_start.size(); - for (int n = np-1; n >= 0; n--) { - if (k >= m_start[n]) { - return thermo(n).speciesName(k - m_start[n]); - } - } - return ""; - } - - - int Kinetics::kineticsSpeciesIndex(string nm, string ph) const { - int np = static_cast(m_thermo.size()); - int k; - string id; - for (int n = 0; n < np; n++) { - id = thermo(n).id(); - if (ph == id) { - k = thermo(n).speciesIndex(nm); - if (k < 0) return -1; - return k + m_start[n]; - } - else if (ph == "") { - /* - * Call the speciesIndex() member function of the - * ThermoPhase object to find a match. - */ - k = thermo(n).speciesIndex(nm); - if (k >= 0) return k + m_start[n]; - } - } - return -2; - } - - thermo_t& Kinetics::speciesPhase(string nm) { - int np = static_cast(m_thermo.size()); - int k; - string id; - for (int n = 0; n < np; n++) { - k = thermo(n).speciesIndex(nm); - if (k >= 0) return thermo(n); - } - throw CanteraError("speciesPhase", "unknown species "+nm); - } - - int Kinetics::speciesPhaseIndex(int k) { - int np = m_start.size(); - for (int n = np-1; n >= 0; n--) { - if (k >= m_start[n]) { - return n; - } - } - throw CanteraError("speciesPhaseIndex", - "illegal species index: "+int2str(k)); - } - - void Kinetics::addPhase(thermo_t& thermo) { - - // if not the first thermo object, set the start position - // to that of the last object added + the number of its species - if (m_thermo.size() > 0) { - m_start.push_back(m_start.back() - + m_thermo.back()->nSpecies()); - } - // otherwise start at 0 - else { - m_start.push_back(0); - } - // there should only be one surface phase - int ptype = -100; - if (type() == cEdgeKinetics) ptype = cEdge; - else if (type() == cInterfaceKinetics) ptype = cSurf; - if (thermo.eosType() == ptype) { - if (m_surfphase >= 0) { - throw CanteraError("Kinetics::addPhase", - "cannot add more than one surface phase"); - } - m_surfphase = nPhases(); - } - m_thermo.push_back(&thermo); - m_phaseindex[m_thermo.back()->id()] = nPhases(); - } - - void Kinetics::err(string m) const { - throw CanteraError("Kinetics::" + m, - "The default Base class method was called, when " - "the inherited class's method should have been called"); - } - - //----------------------------------------------------- - KineticsFactory* KineticsFactory::__factory = 0; static int ntypes = 5; diff --git a/Cantera/src/LatticeSolidPhase.cpp b/Cantera/src/LatticeSolidPhase.cpp new file mode 100644 index 000000000..0a836f903 --- /dev/null +++ b/Cantera/src/LatticeSolidPhase.cpp @@ -0,0 +1,143 @@ +/** + * + * @file LatticeSolidPhase.cpp + * + * $Id$ + */ + +#ifdef WIN32 +#pragma warning(disable:4786) +#pragma warning(disable:4503) +#endif + +#include "ct_defs.h" +#include "mix_defs.h" +#include "LatticeSolidPhase.h" +#include "SpeciesThermo.h" + +namespace Cantera { + + doublereal LatticeSolidPhase:: + enthalpy_mole() const { + doublereal p0 = m_spthermo->refPressure(); + return GasConstant * temperature() * + mean_X(enthalpy_RT().begin()) + + (pressure() - p0)/molarDensity(); + } + + doublereal LatticeSolidPhase::intEnergy_mole() const { + doublereal p0 = m_spthermo->refPressure(); + return GasConstant * temperature() * + mean_X(enthalpy_RT().begin()) + - p0/molarDensity(); + } + + doublereal LatticeSolidPhase::entropy_mole() const { + return GasConstant * (mean_X(entropy_R().begin()) - + sum_xlogx()); + } + + doublereal LatticeSolidPhase::gibbs_mole() const { + return enthalpy_mole() - temperature() * entropy_mole(); + } + + doublereal LatticeSolidPhase::cp_mole() const { + return GasConstant * mean_X(cp_R().begin()); + } + + void LatticeSolidPhase::getActivityConcentrations(doublereal* c) const { + getMoleFractions(c); + } + + void LatticeSolidPhase::getActivityCoefficients(doublereal* ac) const { + for (int k = 0; k < m_kk; k++) { + ac[k] = 1.0; + } + } + + doublereal LatticeSolidPhase::standardConcentration(int k) const { + return 1.0; + } + + doublereal LatticeSolidPhase::logStandardConc(int k) const { + return 0.0; + } + + void LatticeSolidPhase::getChemPotentials(doublereal* mu) const { + doublereal vdp = (pressure() - m_spthermo->refPressure())/ + molarDensity(); + doublereal xx; + doublereal rt = temperature() * GasConstant; + const array_fp& g_RT = gibbs_RT(); + for (int k = 0; k < m_kk; k++) { + xx = fmaxx(SmallNumber, moleFraction(k)); + mu[k] = rt*(g_RT[k] + log(xx)) + vdp; + } + } + + void LatticeSolidPhase::getStandardChemPotentials(doublereal* mu0) const { + getPureGibbs(mu0); + } + + void LatticeSolidPhase::initThermo() { + m_kk = nSpecies(); + m_mm = nElements(); + doublereal tmin = m_spthermo->minTemp(); + doublereal tmax = m_spthermo->maxTemp(); + if (tmin > 0.0) m_tmin = tmin; + if (tmax > 0.0) m_tmax = tmax; + m_p0 = refPressure(); + + int leng = m_kk; + m_h0_RT.resize(leng); + m_g0_RT.resize(leng); + m_cp0_R.resize(leng); + m_s0_R.resize(leng); + setMolarDensity(m_molar_density); + } + + + void LatticeSolidPhase::_updateThermo() const { + doublereal tnow = temperature(); + if (fabs(molarDensity() - m_molar_density)/m_molar_density > 0.0001) { + throw CanteraError("_updateThermo","molar density changed from " + +fp2str(m_molar_density)+" to "+fp2str(molarDensity())); + } + if (m_tlast != tnow) { + m_spthermo->update(tnow, m_cp0_R.begin(), m_h0_RT.begin(), + m_s0_R.begin()); + m_tlast = tnow; + int k; + for (k = 0; k < m_kk; k++) { + m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k]; + } + m_tlast = tnow; + } + } + + void LatticeSolidPhase::setParametersFromXML(const XML_Node& eosdata) { + eosdata.require("model","LatticeSolid"); + XML_Node& la = eosdata.child("LatticeArray"); + vector lattices; + la.getChildren("Lattice",lattices); + int n; + int nl = lattices.size(); + doublereal site_density; + string vacancy; + doublereal sum = 0.0; + for (n = 0; n < nl; n++) { + XML_Node& i = *lattices[n]; + site_density = getFloat(i, "site_density", "-"); + vacancy = getString(i, "vacancy_species"); + m_vac.push_back(vacancy); + m_sitedens.push_back(site_density); + sum += site_density; + } + m_molar_density = sum; + } + +} + + + + diff --git a/Cantera/src/LatticeSolidPhase.h b/Cantera/src/LatticeSolidPhase.h new file mode 100644 index 000000000..26dfd7919 --- /dev/null +++ b/Cantera/src/LatticeSolidPhase.h @@ -0,0 +1,154 @@ +/** + * + * @file LatticeSolidPhase.h + */ + +/* $Author$ + * $Date$ + * $Revision$ + * + * Copyright 2005 California Institute of Technology + * + */ + +#ifndef CT_LATTICESOLID_H +#define CT_LATTICESOLID_H + +#include "ct_defs.h" +#include "mix_defs.h" +#include "ThermoPhase.h" +#include "SpeciesThermo.h" +#include "utilities.h" + +namespace Cantera { + + /** + * Overloads the virtual methods of class Thermo to implement the + * incompressible equation of state. + */ + class LatticeSolidPhase : public ThermoPhase { + + public: + + LatticeSolidPhase() : m_tlast(0.0) {} + + virtual ~LatticeSolidPhase() {} + + virtual int eosType() const { return cLatticeSolid; } + + virtual doublereal enthalpy_mole() const; + + virtual doublereal intEnergy_mole() const; + + virtual doublereal entropy_mole() const; + + virtual doublereal gibbs_mole() const; + + virtual doublereal cp_mole() const; + + virtual doublereal cv_mole() const { + return cp_mole(); + } + + virtual doublereal pressure() const { + return m_press; + } + + virtual void setPressure(doublereal p) { + m_press = p; + setMolarDensity(m_molar_density); + } + + virtual void getActivityConcentrations(doublereal* c) const; + + virtual void getActivityCoefficients(doublereal* ac) const; + + virtual void getChemPotentials(doublereal* mu) const; + virtual void getStandardChemPotentials(doublereal* mu0) const; + virtual doublereal standardConcentration(int k=0) const; + virtual doublereal logStandardConc(int k=0) const; + + virtual void getPureGibbs(doublereal* gpure) const { + const array_fp& gibbsrt = gibbs_RT(); + scale(gibbsrt.begin(), gibbsrt.end(), gpure, _RT()); + } + + void getEnthalpy_RT(doublereal* hrt) const { + const array_fp& _h = enthalpy_RT(); + copy(_h.begin(), _h.end(), hrt); + } + + void getEntropy_R(doublereal* sr) const { + const array_fp& _s = entropy_R(); + copy(_s.begin(), _s.end(), sr); + } + + virtual void getGibbs_RT(doublereal* grt) const { + const array_fp& gibbsrt = gibbs_RT(); + copy(gibbsrt.begin(), gibbsrt.end(), grt); + } + + void getCp_R(doublereal* cpr) const { + const array_fp& _cpr = cp_R(); + copy(_cpr.begin(), _cpr.end(), cpr); + } + + + // new methods defined here + + const array_fp& enthalpy_RT() const { + _updateThermo(); + return m_h0_RT; + } + + const array_fp& gibbs_RT() const { + _updateThermo(); + return m_g0_RT; + } + + const array_fp& entropy_R() const { + _updateThermo(); + return m_s0_R; + } + + const array_fp& cp_R() const { + _updateThermo(); + return m_cp0_R; + } + + virtual void initThermo(); + + // set the site density of sublattice n + virtual void setParameters(int n, doublereal* c) {} + + virtual void getParameters(int &n, doublereal * const c) { + double d = molarDensity(); + c[0] = d; + n = 1; + } + + virtual void setParametersFromXML(const XML_Node& eosdata); + + + protected: + + int m_mm; + doublereal m_tmin, m_tmax, m_p0; + + mutable doublereal m_tlast; + mutable array_fp m_h0_RT; + mutable array_fp m_cp0_R; + mutable array_fp m_g0_RT; + mutable array_fp m_s0_R; + doublereal m_press; + vector m_vac; + vector_fp m_sitedens; + doublereal m_molar_density; + + private: + + void _updateThermo() const; + }; +} + +#endif diff --git a/Cantera/src/Makefile.in b/Cantera/src/Makefile.in index 7fafde103..0608c3f8f 100755 --- a/Cantera/src/Makefile.in +++ b/Cantera/src/Makefile.in @@ -11,59 +11,96 @@ .SUFFIXES : .SUFFIXES : .cpp .d .o .dh .h .h.gch -OBJDIR = . - -# LOCAL_DEFNS=-DDEBUG_PATHS -CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) $(LOCAL_DEFNS) - -EXT = ../../ext +INCDIR = ../../build/include/cantera/kernel +INSTALL_TSC = ../../bin/install_tsc +CANTERA_LIB = @buildlib@/libcantera.a +#LOCAL_DEFNS=-DDEBUG_PATHS -DDEBUG_MULTIPHASE_EQUIL +CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) $(LOCAL_DEFNS) +EXT = ../../ext +do_ranlib = @DO_RANLIB@ #---------------------- # kernel components #---------------------- # basic components always needed -BASE = State.o Elements.o Constituents.o stringUtils.o misc.o importCTML.o plots.o \ - xml.o Phase.o DenseMatrix.o ctml.o funcs.o ctvector.o phasereport.o ct2ctml.o +BASE_OBJ = State.o Elements.o Constituents.o stringUtils.o misc.o \ + importCTML.o plots.o \ + xml.o Phase.o DenseMatrix.o ctml.o funcs.o ctvector.o \ + phasereport.o ct2ctml.o + +BASE_H = State.h Elements.h Constituents.h stringUtils.h global.h \ + importCTML.h plots.h xml.h Phase.h DenseMatrix.h ctml.h \ + funcs.h ctvector.h ct_defs.h Array.h PropertyCalculator.h \ + ctexceptions.h ctlapack.h units.h recipes.h mix_defs.h\ + utilities.h vec_functions.h XML_Writer.h diagnostics.h \ + config.h +BASE = $(BASE_OBJ) # thermodynamic properties -THERMO = $(BASE) ThermoPhase.o IdealGasPhase.o ConstDensityThermo.o StoichSubstance.o PureFluidPhase.o SpeciesThermoFactory.o ThermoFactory.o MultiPhase.o +THERMO_OBJ = ThermoPhase.o IdealGasPhase.o ConstDensityThermo.o \ + SpeciesThermoFactory.o \ + ThermoFactory.o @phase_object_files@ + +THERMO_H = ThermoPhase.h IdealGasPhase.h ConstDensityThermo.h \ + SpeciesThermoFactory.h \ + ThermoFactory.h NasaPoly1.h NasaThermo.h ShomateThermo.h \ + ShomatePoly.h SimpleThermo.h SpeciesThermoMgr.h \ + speciesThermoTypes.h SpeciesThermo.h SurfPhase.h \ + EdgePhase.h polyfit.h Func1.h \ + FuncEval.h StoichManager.h @phase_header_files@ +THERMO = $(BASE_OBJ) $(THERMO_OBJ) $(THERMO_H) # homogeneous kinetics -KINETICS = GRI_30_Kinetics.o KineticsFactory.o GasKinetics.o FalloffFactory.o \ - ReactionStoichMgr.o $(THERMO) +KINETICS_OBJ=GRI_30_Kinetics.o KineticsFactory.o GasKinetics.o \ + FalloffFactory.o ReactionStoichMgr.o Kinetics.o +KINETICS_H = GRI_30_Kinetics.h KineticsFactory.h Kinetics.h GasKinetics.h \ + FalloffFactory.h ReactionStoichMgr.h reaction_defs.h \ + FalloffMgr.h ThirdBodyMgr.h RateCoeffMgr.h ReactionData.h \ + RxnRates.h Enhanced3BConc.h +KINETICS = $(THERMO) $(KINETICS_OBJ) $(KINETICS_H) + # heterogeneous kinetics -HETEROKIN = InterfaceKinetics.o ImplicitSurfChem.o SurfPhase.o EdgeKinetics.o $(THERMO) +HETEROKIN_OBJ=InterfaceKinetics.o ImplicitSurfChem.o SurfPhase.o \ + EdgeKinetics.o +HETEROKIN_H =InterfaceKinetics.h ImplicitSurfChem.h SurfPhase.h \ + EdgeKinetics.h +HETEROKIN = $(THERMO) $(HETEROKIN_OBJ) # support for importing from Chemkin-compatible reaction mechanisms CK = $(KINETICS) # chemical equilibrium -EQUIL = ChemEquil.o MultiPhaseEquil.o sort.o $(THERMO) +EQUIL_OBJ = ChemEquil.o MultiPhaseEquil.o sort.o MultiPhase.o +EQUIL_H = ChemEquil.h MultiPhaseEquil.h MultiPhase.h sort.h +EQUIL = $(THERMO) $(EQUIL_OBJ) # reaction path analysis -RPATH = Group.o ReactionPath.o +RPATH_OBJ = Group.o ReactionPath.o +RPATH_H = Group.h ReactionPath.h +RPATH = $(RPATH_OBJ) + # solvers -SOLVERS = CVode.o BandMatrix.o +SOLVERS_OBJ = CVode.o BandMatrix.o +SOLVERS_H = CVode.h BandMatrix.h Integrator.h +SOLVERS = $(SOLVERS_OBJ) # 1D flow models FLOW1D = $(KINETICS) $(SOLVERS) +ALL_OBJ = $(BASE_OBJ) $(THERMO_OBJ) $(KINETICS_OBJ) $(HETEROKIN_OBJ) \ + $(EQUIL_OBJ) $(RPATH_OBJ) $(SOLVERS_OBJ) -EVERYTHING = $(KINETICS) $(HETEROKIN) $(ELECTROCHEM) $(EQUIL) $(CK) \ - $(TRANSPORT) $(REACTOR) $(RPATH) $(SOLVERS) $(FLOW1D) PCH = -#config.h ct_defs.h utilities.h ThermoPhase.h Kinetics.h ReactionData.h RateCoeffMgr.h ReactionStoichMgr.h +# config.h ct_defs.h utilities.h ThermoPhase.h Kinetics.h ReactionData.h \ +# RateCoeffMgr.h ReactionStoichMgr.h PCHGCH = $(PCH:.h=.h.gch) -all: config.h $(PCHGCH) @KERNEL@ lib - -config.h: ../../config.h - cp -f ../../config.h ./config.h +all: .depends $(PCHGCH) @KERNEL@ $(CANTERA_LIB) %.h.gch : %.h ifeq (@precompile_headers@,yes) @@ -72,17 +109,31 @@ else @echo 'skipping precompiling header file $*.h' endif - base: $(BASE) + @(for lh in $(BASE_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) thermo: $(THERMO) + @(for lh in $(THERMO_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) kinetics: $(KINETICS) $(HETEROKIN) + @(for lh in $(KINETICS_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) + @(for lh in $(HETEROKIN_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) ck: cd converters; @MAKE@ equil: $(EQUIL) + @(for lh in $(EQUIL_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) flow1d: $(FLOW1D) @@ -93,8 +144,14 @@ reactor: cd zeroD; @MAKE@ rpath: $(RPATH) + @(for lh in $(RPATH_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) solvers: $(SOLVERS) + @(for lh in $(SOLVERS_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) tpx: cd $(EXT)/tpx; @MAKE@ @@ -106,37 +163,42 @@ CXX_LIBS = @LIBS@ CXX_INCLUDES = -I. CANTERA_LIB = @buildlib@/libcantera.a -DEPENDS = $(EVERYTHING:.o=.d) -SRCS = $(EVERYTHING:.o=.cpp) +DEPENDS = $(ALL_OBJ:.o=.d) +SRCS = $(ALL_OBJ:.o=.cpp) +ALL_H = $(BASE_H) $(THERMO_H) $(KINETICS_H) $(HETEROKIN_H) \ + $(EQUIL_H) $(SOLVERS_H) $(RPATH_H) .cpp.d: g++ -MM $(CXX_INCLUDES) $*.cpp > $*.d .cpp.o: @CXX@ -c $< $(CXX_FLAGS) -#$(CXX_INCLUDES) -.f.o: - @F77@ -c $< $(F77_FLAGS) - -# -# HKM note: The lib function below removes the library first. -# I was having trouble linking applications on linux -# without removing the cantera library first. -# suggest the following change: -# -# lib: -# @(if [ `ls -1t $(CANTERA_LIB) *.o | head -1` != $(CANTERA_LIB) ] ; then \ -# $(RM) $(CANTERA_LIB) ; echo 'ar ruv ' $(CANTERA_LIB) '*.o' ; \ -# ar ruv $(CANTERA_LIB) *.o ; fi) -# -lib: +lib: $(OBJ_LIB) $(RM) $(CANTERA_LIB) @ARCHIVE@ $(CANTERA_LIB) *.o > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(CANTERA_LIB) +endif + cd ../.. ; @MAKE@ hdr-collect +$(CANTERA_LIB): @KERNEL_OBJ@ + $(RM) $(CANTERA_LIB) + @ARCHIVE@ $(CANTERA_LIB) @KERNEL_OBJ@ +ifeq ($(do_ranlib),1) + @RANLIB@ $(CANTERA_LIB) +endif + clean: $(RM) *.o *.gch *~ $(CANTERA_LIB) + @(for lh in $(ALL_H) ; do \ + th=$(INCDIR)/$$lh ; \ + if test -f $$th ; then \ + $(RM) $$th ; \ + fi \ + done) + $(RM) *.o *.gch *~ $(CANTERA_LIB) .depends cd zeroD; @MAKE@ clean cd oneD; @MAKE@ clean cd converters; @MAKE@ clean @@ -150,6 +212,9 @@ depends: $(DEPENDS) cd converters; @MAKE@ depends cd transport; @MAKE@ depends +.depends: $(DEPENDS) Makefile + cat *.d > .depends + TAGS: etags *.h *.cpp diff --git a/Cantera/src/MetalPhase.h b/Cantera/src/MetalPhase.h index f0a37372e..9186b2a3f 100644 --- a/Cantera/src/MetalPhase.h +++ b/Cantera/src/MetalPhase.h @@ -16,7 +16,7 @@ #ifndef CT_METALPHASE_H #define CT_METALPHASE_H -//#include "ct_defs.h" + #include "mix_defs.h" #include "ThermoPhase.h" #include "SpeciesThermo.h" @@ -26,7 +26,7 @@ namespace Cantera { /** * @ingroup thermoprops * - * Class MetalPhase represents electrons in a metal. + * Class MetalPhase represents electrons in a metal. * */ class MetalPhase : public ThermoPhase { @@ -37,9 +37,8 @@ namespace Cantera { virtual ~MetalPhase() {} - /** - * Equation of state flag. - */ + // Overloaded methoods of class ThermoPhase + virtual int eosType() const { return cMetal; } virtual doublereal enthalpy_mole() const { return 0.0; } @@ -49,16 +48,22 @@ namespace Cantera { virtual doublereal cp_mole() const { return 0.0; } virtual doublereal cv_mole() const { return 0.0; } + virtual void setPressure(doublereal pres) { m_press = pres; } + virtual doublereal pressure() const { return m_press; } + virtual void getChemPotentials(doublereal* mu) const { - mu[0] = 0.0; + int n, nsp = nSpecies(); + for (n = 0; n < nsp; n++) mu[n] = 0.0; } virtual void getStandardChemPotentials(doublereal* mu0) const { - mu0[0] = 0.0; + int n, nsp = nSpecies(); + for (n = 0; n < nsp; n++) mu0[n] = 0.0; } virtual void getActivityConcentrations(doublereal* c) const { - c[0] = 1.0; + int n, nsp = nSpecies(); + for (n = 0; n < nsp; n++) c[n] = 1.0; } virtual doublereal standardConcentration(int k=0) const { @@ -69,10 +74,16 @@ namespace Cantera { return 0.0; } + virtual void setParametersFromXML(const XML_Node& eosdata) { + eosdata.require("model","Metal"); + doublereal rho = getFloat(eosdata, "density", "-"); + setDensity(rho); + } + protected: private: - + doublereal m_press; }; } diff --git a/Cantera/src/MultiPhase.cpp b/Cantera/src/MultiPhase.cpp index 37759e915..ec84ded43 100644 --- a/Cantera/src/MultiPhase.cpp +++ b/Cantera/src/MultiPhase.cpp @@ -44,6 +44,8 @@ namespace Cantera { if (m_enamemap[ename] == 0) { m_enamemap[ename] = m_nel + 1; m_enames.push_back(ename); + m_atomicNumber.push_back(p->atomicNumber(m)); + if (ename == "E" || ename == "e") m_eloc = m_nel; m_nel++; } } @@ -92,6 +94,18 @@ namespace Cantera { } } + if (m_eloc >= 0) { + doublereal esum; + for (k = 0; k < m_nsp; k++) { + esum = 0.0; + for (m = 0; m < m_nel; m++) { + if (int(m) != m_eloc) + esum += m_atoms(m,k) * m_atomicNumber[m]; + } + //m_atoms(m_eloc, k) += esum; + } + } + /// set the initial composition within each phase to the /// mole fractions stored in the phase objects m_init = true; @@ -116,12 +130,12 @@ namespace Cantera { return m_moles[ip]*m_moleFractions[k]; } - /// Total moles of element m, summed over all /// phases doublereal MultiPhase::elementMoles(index_t m) { doublereal sum = 0.0, phasesum; index_t i, k = 0, ik, nsp; + if (!m_init) init(); for (i = 0; i < m_np; i++) { phasesum = 0.0; nsp = m_phase[i]->nSpecies(); @@ -134,6 +148,28 @@ namespace Cantera { return sum; } + /// Total charge, summed over all phases + doublereal MultiPhase::charge() { + doublereal sum = 0.0; + index_t i; + for (i = 0; i < m_np; i++) { + sum += phaseCharge(i); + } + return sum; + } + + /// Charge of one phase + doublereal MultiPhase::phaseCharge(index_t p) { + doublereal phasesum = 0.0; + int ik, k, nsp = m_phase[p]->nSpecies(); + for (ik = 0; ik < nsp; ik++) { + k = speciesIndex(ik, p); + phasesum += m_phase[p]->charge(ik)*m_moleFractions[k]; + } + return Faraday*phasesum*m_moles[p]; + } + + /// Chemical potentials. Write into array \c mu the chemical /// potentials of all species [J/kmol]. void MultiPhase::getChemPotentials(doublereal* mu) { @@ -188,6 +224,33 @@ namespace Cantera { return sum; } + doublereal MultiPhase::enthalpy() { + index_t i; + doublereal sum = 0.0; + updatePhases(); + for (i = 0; i < m_np; i++) + sum += m_phase[i]->enthalpy_mole() * m_moles[i]; + return sum; + } + + doublereal MultiPhase::entropy() { + index_t i; + doublereal sum = 0.0; + updatePhases(); + for (i = 0; i < m_np; i++) + sum += m_phase[i]->entropy_mole() * m_moles[i]; + return sum; + } + + doublereal MultiPhase::cp() { + index_t i; + doublereal sum = 0.0; + updatePhases(); + for (i = 0; i < m_np; i++) + sum += m_phase[i]->cp_mole() * m_moles[i]; + return sum; + } + void MultiPhase::updateMoleFractions() { if (!m_init) init(); // save the current mole fractions for each phase @@ -205,6 +268,7 @@ namespace Cantera { } void MultiPhase::setMolesByName(compositionMap& xMap) { + if (!m_init) init(); int kk = nSpecies(); doublereal x; vector_fp mf(kk, 0.0); @@ -217,6 +281,7 @@ namespace Cantera { void MultiPhase::setMolesByName(const string& x) { compositionMap xx; + if (!m_init) init(); int kk = nSpecies(); for (int k = 0; k < kk; k++) { xx[speciesName(k)] = -1.0; @@ -250,6 +315,15 @@ namespace Cantera { } } + doublereal MultiPhase::volume() { + int i; + doublereal sum = 0; + for (i = 0; i < int(m_np); i++) { + sum += m_moles[i]/m_phase[i]->molarDensity(); + } + return sum; + } + void MultiPhase::updatePhases() { if (!m_init) init(); index_t p, nsp, loc = 0; @@ -265,13 +339,204 @@ namespace Cantera { } doublereal MultiPhase::equilibrate(int XY, doublereal err, - int maxsteps) { - init(); - if (m_equil == 0) { - m_equil = new MultiPhaseEquil(this); - } - return m_equil->equilibrate(XY, err, maxsteps); - } + int maxsteps, int maxiter, int loglevel) { + doublereal error; + bool strt = false; + doublereal dt; + doublereal h0; + int n; + bool start, once; + doublereal ferr, hnow, herr = 1.0; + doublereal Tlow = -1.0, Thigh = -1.0; + doublereal hlow = 0.0, hhigh = 0.0, slope, tnew; + doublereal dta, dtmax; + if (!m_init) init(); + if (loglevel > 0) { + beginLogGroup("MultiPhase::equilibrate"); + } + if (XY == TP) { + if (loglevel > 0) { + addLogEntry("problem type","fixed T,P"); + } + MultiPhaseEquil e(this); + error = e.equilibrate(XY, err, maxsteps, loglevel-1); + if (loglevel > 0) e.printInfo(); + goto done; + } + else if (XY == HP) { + dt = 1.0e2; + h0 = enthalpy(); + start = true; + Tlow = 1.0; + Thigh = 1.0e4; + hlow = 0.0; + hhigh = 0.0; + once = true; + if (loglevel > 0) { + addLogEntry("problem type","fixed H,P"); + addLogEntry("H target",fp2str(h0)); + } + ferr = 0.1; + for (n = 0; n < maxiter; n++) { + MultiPhaseEquil e(this, start); + start = false; + if (loglevel > 1) { + beginLogGroup("iteration "+int2str(n)); + } + try { + error = e.equilibrate(TP, err, maxsteps, loglevel-1); + + hnow = enthalpy(); + if (hnow < h0) { + if (m_temp > Tlow) Tlow = m_temp; + } + else { + if (m_temp < Thigh) Thigh = m_temp; + } + herr = fabs((h0 - hnow)/h0); + if (loglevel > 1) { + addLogEntry("T",fp2str(temperature())); + addLogEntry("H",fp2str(hnow)); + addLogEntry("H rel error",fp2str(herr)); + endLogGroup(); + } + dt = (h0 - hnow)/cp(); + dtmax = fminn(500.0,0.5*(Thigh - Tlow)); + dta = fabs(dt); + if (dta > dtmax) dt *= dtmax/dta; + if (herr < err || dta < 1.0e-4) { + if (loglevel > 0) { + addLogEntry("T iterations",int2str(n)); + addLogEntry("Final T",fp2str(temperature())); + addLogEntry("H rel error",fp2str(herr)); + } + goto done; + } + tnew = m_temp + dt; + setTemperature(tnew); + if (dta < 100.0) strt = false; +// if (Thigh > 0.0 && Tlow > 0.0) { +// slope = (hhigh - hlow)/(Thigh - Tlow); +// setTemperature(0.5*(Tlow + Thigh)); //(h0 - hlow)/slope); +// } +// else if (Tlow > 0.0) +// setTemperature(m_temp + dt); +// else +// setTemperature(m_temp - dt); + } + catch (CanteraError e) { + if (!strt) { + if (loglevel > 0) + addLogEntry("no convergence","setting strt to True"); + strt = true; + } + else { + tnew = 0.5*(m_temp + Thigh); + setTemperature(tnew); + if (loglevel > 0) + addLogEntry("no convergence", + "trying T = "+fp2str(m_temp)); + + } + + // else { + // if (loglevel > 0) + // addLogEntry("no convergence","throwing exception"); + // throw e; + //} + } + } + throw CanteraError("MultiPhase::equilibrate", + "No convergence for T"); + } + else if (XY == SP) { + if (loglevel > 0) { + addLogEntry("problem type","fixed S,P"); + } + doublereal dt = 1.0e3; + doublereal s0 = entropy(); + int n; + bool start = true; + doublereal ferr, snow, serr, tnew; + for (n = 0; n < maxiter; n++) { + MultiPhaseEquil e(this, start); + ferr = 0.1; + start = false; + if (fabs(dt) < 1.0) ferr = err; + if (loglevel > 1) { + beginLogGroup("iteration "+int2str(n)); + } + error = e.equilibrate(TP, ferr, maxsteps, loglevel-1); + snow = entropy(); + tnew = exp(0.5*(s0 - snow)/cp())*temperature(); + serr = fabs((s0 - snow)/s0); + if (loglevel > 1) { + addLogEntry("T",fp2str(temperature())); + addLogEntry("S rel error",fp2str(serr)); + endLogGroup(); + } + if (serr < err) { + if (loglevel > 0) { + addLogEntry("T iterations",int2str(n)); + addLogEntry("Final T",fp2str(temperature())); + addLogEntry("S rel error",fp2str(serr)); + } + goto done; + } + setTemperature(tnew); + } + } + else if (XY == TV) { + if (loglevel > 0) { + addLogEntry("problem type","fixed T, V"); + } + doublereal dt = 1.0e3; + doublereal v0 = volume(); + doublereal dVdP; + int n; + bool start = true; + doublereal error, ferr, vnow, pnow, verr, tnew; + for (n = 0; n < maxiter; n++) { + pnow = pressure(); + MultiPhaseEquil e(this, start); + start = false; + if (loglevel > 1) { + beginLogGroup("iteration "+int2str(n)); + } + error = e.equilibrate(TP, err, maxsteps, loglevel-1); + vnow = volume(); + verr = fabs((v0 - vnow)/v0); + if (loglevel > 1) { + addLogEntry("P",fp2str(pressure())); + addLogEntry("V rel error",fp2str(verr)); + endLogGroup(); + } + if (verr < err) { + if (loglevel > 0) { + addLogEntry("P iterations",int2str(n)); + addLogEntry("Final P",fp2str(pressure())); + addLogEntry("V rel error",fp2str(verr)); + } + goto done; + } + // find dV/dP + setPressure(pnow*1.01); + dVdP = (volume() - vnow)/(0.01*pnow); + setPressure(pnow + 0.5*(v0 - vnow)/dVdP); + } + } + + else { + if (loglevel > 0) endLogGroup(); + throw CanteraError("MultiPhase::equilibrate","unknown option"); + } + return -1.0; +done: + if (loglevel > 0) { + endLogGroup(); + } + return err; + } } diff --git a/Cantera/src/MultiPhase.h b/Cantera/src/MultiPhase.h index d894c56f8..6c00d6f66 100644 --- a/Cantera/src/MultiPhase.h +++ b/Cantera/src/MultiPhase.h @@ -29,7 +29,8 @@ namespace Cantera { /// Constructor. The constructor takes no arguments, since /// phases are added using method addPhase. MultiPhase() : m_temp(0.0), m_press(0.0), - m_nel(0), m_nsp(0), m_init(false), m_equil(0) {} + m_nel(0), m_nsp(0), m_init(false), m_eloc(-1), + m_equil(0) {} /// Destructor. Does nothing. Class MultiPhase does not take /// "ownership" (i.e. responsibility for destroying) the @@ -87,6 +88,10 @@ namespace Cantera { return m_spstart[p] + k; } + + doublereal charge(); + doublereal phaseCharge(index_t p); + /// Total moles of element m, summed over all /// phases doublereal elementMoles(index_t m); @@ -95,6 +100,10 @@ namespace Cantera { /// potentials of all species [J/kmol]. void getChemPotentials(doublereal* mu); + /// Valid chemical potentials. Write into array \c mu the + /// chemical potentials of all species with thermo data valid + /// for the current temperature [J/kmol]. For other species, + /// set the chemical potential to the value \c not_mu. void getValidChemPotentials(doublereal not_mu, doublereal* mu); /// Chemical potentials. Write into array \c mu the chemical @@ -107,7 +116,7 @@ namespace Cantera { } doublereal equilibrate(int XY, doublereal err = 1.0e-9, - int maxsteps = 1000); + int maxsteps = 1000, int maxiter = 200, int loglevel = 0); /// Set the temperature [K]. @@ -120,12 +129,17 @@ namespace Cantera { return m_press; } + doublereal volume(); + void setPressure(doublereal P) { m_press = P; updatePhases(); } + doublereal enthalpy(); + doublereal entropy(); doublereal gibbs(); + doublereal cp(); index_t nPhases() { return m_np; @@ -169,6 +183,7 @@ namespace Cantera { vector_int m_spphase; vector_int m_spstart; vector m_enames; + vector_int m_atomicNumber; vector m_snames; map m_enamemap; index_t m_np; @@ -177,6 +192,7 @@ namespace Cantera { index_t m_nel; index_t m_nsp; bool m_init; + int m_eloc; vector m_temp_OK; MultiPhaseEquil* m_equil; }; diff --git a/Cantera/src/MultiPhaseEquil.cpp b/Cantera/src/MultiPhaseEquil.cpp index c62fa64e7..7b5ee8a18 100644 --- a/Cantera/src/MultiPhaseEquil.cpp +++ b/Cantera/src/MultiPhaseEquil.cpp @@ -2,11 +2,23 @@ #include "MultiPhase.h" #include "sort.h" #include "recipes.h" +#include "global.h" #include #include using namespace std; +#if DARWIN == 1 +#define ISNAN __isnand +#else +#ifdef WIN32 +#include +#define ISNAN _isnan +#else +#define ISNAN isnan +#endif +#endif + #undef DEBUG_MULTIPHASE_EQUIL namespace Cantera { @@ -35,7 +47,7 @@ namespace Cantera { /// Constructor. Construct a multiphase equilibrium manager for /// a multiphase mixture. /// @param mix Pointer to a multiphase mixture object. - MultiPhaseEquil::MultiPhaseEquil(mix_t* mix) : m_mix(mix) + MultiPhaseEquil::MultiPhaseEquil(mix_t* mix, bool start) : m_mix(mix) { // the multi-phase mixture m_mix = mix; @@ -50,24 +62,52 @@ namespace Cantera { index_t m, k; m_nel = 0; m_nsp = 0; + m_eloc = 1000; m_incl_species.resize(m_nsp_mix,1); m_incl_element.resize(m_nel_mix,1); for (m = 0; m < m_nel_mix; m++) { + string enm = mix->elementName(m); + if (enm == "E" || enm == "e") m_eloc = m; if (m_mix->elementMoles(m) <= 0.0) { - m_incl_element[m] = 0; - for (k = 0; k < m_nsp_mix; k++) { - if (m_mix->nAtoms(k,m) != 0.0) { - m_incl_species[k] = 0; + if (m != m_eloc) { + m_incl_element[m] = 0; + for (k = 0; k < m_nsp_mix; k++) { + if (m_mix->nAtoms(k,m) != 0.0) { + m_incl_species[k] = 0; + } } } } } + + if (m_eloc < m_nel_mix) { + m_element.push_back(m_eloc); + m_nel++; + } + for (m = 0; m < m_nel_mix; m++) { - if (m_incl_element[m] == 1) { + if (m_incl_element[m] == 1 && m != m_eloc) { m_nel++; m_element.push_back(m); } } + + index_t ip; + for (k = 0; k < m_nsp_mix; k++) { + ip = m_mix->speciesPhaseIndex(k); + if (!m_mix->solutionSpecies(k) && + !m_mix->tempOK(ip)) { + m_incl_species[k] = 0; + if (m_mix->speciesMoles(k) > 0.0) { + throw CanteraError("MultiPhaseEquil", + "condensed-phase species"+ m_mix->speciesName(k) + + " is excluded since its thermo properties are \n" + "not valid at this temperature, but it has " + "non-zero moles in the initial state."); + } + //cout << "excluding species " << m_mix->speciesName(k) << endl; + } + } for (k = 0; k < m_nsp_mix; k++) { if (m_incl_species[k] ==1) { m_nsp++; @@ -88,6 +128,9 @@ namespace Cantera { index_t ik; for (ik = 0; ik < m_nsp; ik++) { m_moles[ik] = m_mix->speciesMoles(m_species[ik]); + //if (ISNAN(m_moles[ik])) { + // writelog("moles "+int2str(ik)+" initialized to nan \n"); + //} } // Delta G / RT for each reaction @@ -100,21 +143,25 @@ namespace Cantera { m_N.resize(m_nsp, m_nsp - m_nel); m_order.resize(m_nsp, 0); - setInitialMoles(); + if (start) + setInitialMoles(); computeN(); // make sure the components are non-zero - for (k = 0; k < m_nel; k++) { - if (m_moles[m_order[k]] <= 0.0) { - m_moles[m_order[k]] = 1.0e-17; - } - } + //for (k = 0; k < m_nel; k++) { + // if (m_moles[m_order[k]] <= 0.0) { + // m_moles[m_order[k]] = 1.0e-17; + // } + //} vector_fp dxi(m_nsp - m_nel, 1.0e-20); multiply(m_N, dxi.begin(), m_work.begin()); unsort(m_work); - + for (k = 0; k < m_nsp; k++) { m_moles[k] += m_work[k]; + //if (ISNAN(m_moles[k])) { + // writelog("moles "+int2str(k)+" is nan 2. \n"); + // } m_lastmoles[k] = m_moles[k]; if (m_mix->solutionSpecies(m_species[k])) m_dsoln.push_back(1); @@ -123,6 +170,46 @@ namespace Cantera { } m_force = false; setMoles(); + } + + doublereal MultiPhaseEquil::equilibrate(int XY, doublereal err, + int maxsteps, int loglevel) { + int i; + m_iter = 0; + if (loglevel > 0) + beginLogGroup("MultiPhaseEquil::equilibrate"); + + for (i = 0; i < maxsteps; i++) { + stepComposition(loglevel - 1); + if (loglevel > 1) { + beginLogGroup("iteration "+int2str(i)); + addLogEntry("error",fp2str(error())); + endLogGroup(); + } + printInfo(); + if (error() == 0.0) { + write_logfile("equil_err.html"); + Cantera::error("stopping"); + } + if (error() < err) break; + } + if (i >= maxsteps) { + if (loglevel > 0) { + addLogEntry("Error","no convergence in "+int2str(maxsteps) + +" iterations"); + printInfo(); + } + throw CanteraError("MultiPhaseEquil::equilibrate", + "no convergence in " + int2str(maxsteps) + + " iterations. Error = " + fp2str(error())); + } + if (loglevel > 0) { + addLogEntry("iterations",int2str(iterations())); + addLogEntry("error tolerance",fp2str(err)); + addLogEntry("error",fp2str(error())); + endLogGroup(); + } + return error(); } void MultiPhaseEquil::setMoles() { @@ -193,6 +280,9 @@ namespace Cantera { for (int k = 0; k < int(m_nsp); k++) { if (ip == ksp) { m_moles[k] = aa(n+1, 0); + //if (ISNAN(m_moles[k])) { + // writelog("moles "+int2str(k)+" is nan 3. \n"); + //} } ksp++; } @@ -252,6 +342,13 @@ namespace Cantera { index_t nColumns = m_nsp; doublereal fctr; +#ifdef DEBUG_MULTIPHASE_EQUIL + cout << "most abundant:" << endl; + for (m = 0; m < nRows; m++) { + cout << m_mix->speciesName(m_species[m_order[m]]) << " " << m_moles[m_order[m]] << endl; + } +#endif + // set up the atomic composition matrix for (m = 0; m < nRows; m++) { for (k = 0; k < nColumns; k++) { @@ -263,23 +360,33 @@ namespace Cantera { for (m = 0; m < nRows; m++) { // if a pivot is zero, exchange columns if (m_A(m,m) == 0.0) { + doublereal maxmoles = -999.0; + index_t kmax = 0; for (k = m+1; k < nColumns; k++) { if (m_A(m,k) != 0.0) { - for (n = 0; n < int(nRows); n++) { - tmp = m_A(n,m); - m_A(n, m) = m_A(n, k); - m_A(n, k) = tmp; + if (fabs(m_moles[m_order[k]]) > maxmoles) { + kmax = k; + maxmoles = fabs(m_moles[m_order[k]]); } - // exchange the species labels on the columns - itmp = m_order[m]; - m_order[m] = m_order[k]; - m_order[k] = itmp; - break; } } + for (n = 0; n < int(nRows); n++) { + tmp = m_A(n,m); + m_A(n, m) = m_A(n, kmax); + m_A(n, kmax) = tmp; + } + // exchange the species labels on the columns +#ifdef DEBUG_MULTIPHASE_EQUIL + cout << "in row " << m << ", pivot is zero" << endl; + cout << "exchanging " << m_mix->speciesName(m_species[m_order[m]]) << " for " << m_mix->speciesName(m_species[m_order[kmax]]) << endl; +#endif + itmp = m_order[m]; + m_order[m] = m_order[kmax]; + m_order[kmax] = itmp; + // throw an exception if the entire row is zero - if (k >= m_nsp) - throw CanteraError("getComponents","all zeros!"); + // if (k >= m_nsp) + // throw CanteraError("getComponents","all zeros!"); } // scale row m so that the diagonal element is unity @@ -316,7 +423,7 @@ namespace Cantera { // check bool ok = true; for (m = 0; m < nRows; m++) { - cout << m_mix->speciesName(m_species[m_order[m]]) << endl; + cout << m_mix->speciesName(m_species[m_order[m]]) << " " << m_moles[m_order[m]] << endl; if (m_A(m,m) != 1.0) ok = false; for (n = 0; n < nRows; n++) { if (n != m && fabs(m_A(m,n)) > TINY) @@ -374,22 +481,30 @@ namespace Cantera { void MultiPhaseEquil::printInfo() { index_t m, ik, k; - cout << "components: " << endl; + beginLogGroup("info"); + beginLogGroup("components"); for (m = 0; m < m_nel; m++) { ik = m_order[m]; k = m_species[ik]; - cout << m_mix->speciesName(k) << " " << m_moles[ik] << endl; + addLogEntry("m, k, ik",int2str(m)+int2str(k)+int2str(ik)); + addLogEntry(m_mix->speciesName(k), fp2str(m_moles[ik])); } - cout << "non-components: " << endl; + endLogGroup(); + beginLogGroup("non-components"); for (m = m_nel; m < m_nsp; m++) { ik = m_order[m]; k = m_species[ik]; - cout << m_mix->speciesName(k) << " " << m_moles[ik] << endl; + addLogEntry("m, k, ik",int2str(m)+int2str(k)+int2str(ik)); + addLogEntry(m_mix->speciesName(k), fp2str(m_moles[ik])); } - cout << "Error = " << error() << endl; + endLogGroup(); + addLogEntry("Error",fp2str(error())); + beginLogGroup("Delta G / RT"); for (k = 0; k < m_nsp - m_nel; k++) { - cout << reactionString(k) << " " << m_deltaG_RT[k] << endl; + addLogEntry(reactionString(k), fp2str(m_deltaG_RT[k])); } + endLogGroup(); + endLogGroup(); } /// Return a string specifying the jth reaction. @@ -423,6 +538,15 @@ namespace Cantera { k = m_order[ik]; m_lastmoles[k] = m_moles[k]; m_moles[k] += omega * deltaN[k]; + //if (ISNAN(omega)) { + // writelog("omega is nan\n"); + //} + //if (ISNAN(deltaN[k])) { + // writelog("deltaN["+int2str(k)=" is nan\n"); + //} + //if (ISNAN(m_moles[k])) { + // writelog("moles "+int2str(k)+" is nan 4. \n"); + //} } for (ik = m_nel; ik < m_nsp; ik++) { @@ -430,10 +554,16 @@ namespace Cantera { m_lastmoles[k] = m_moles[k]; if (m_majorsp[k]) { m_moles[k] += omega * deltaN[k]; - if (m_moles[k] < 0.0) m_moles[k] = 0.0; + //if (ISNAN(m_moles[k])) { + // writelog("moles "+int2str(k)+" is nan 5. \n"); + //} + //if (m_moles[k] < 0.0) m_moles[k] = 0.0; } else { m_moles[k] = fabs(m_moles[k])*fminn(10.0, exp(-m_deltaG_RT[ik - m_nel])); + //if (ISNAN(m_moles[k])) { + // writelog("moles "+int2str(k)+" is nan 6. \n"); + //} } } setMoles(); @@ -442,7 +572,9 @@ namespace Cantera { /// Take one step in composition, given the gradient of G at the /// starting point, and a vector of reaction steps dxi. doublereal MultiPhaseEquil:: - stepComposition() { + stepComposition(int loglevel) { + + if (loglevel > 0) beginLogGroup("MultiPhaseEquil::stepComposition"); m_iter++; index_t ik, j, k = 0; @@ -462,6 +594,12 @@ namespace Cantera { k = m_order[ik]; for (j = 0; j < m_nsp - m_nel; j++) { m_work[ik] += m_N(ik, j) * m_dxi[j]; +#ifdef DEBUG_MULTIPHASE_EQUIL + if (m_work[ik] < -999.0) { + cout << ik << " " << m_work[ik] << " " << m_N(ik,j) << " " << m_dxi[j] << endl; + cout << reactionString(j) << endl; + } +#endif } } @@ -497,10 +635,10 @@ namespace Cantera { cout << m_mix->speciesName(m_species[k]) << " results in " << " omega = " << omegamax << endl; //cout << m_moles[k] << " " << m_work[k] << endl; - if (ik < m_nel) cout << "component" << endl; + if (ik < m_nel) cout << "(component)" << endl; index_t nk; for (nk = 0; nk < m_nel; nk++) { - cout << "component " << m_mix->speciesName(m_species[m_order[nk]]) << " " << m_moles[m_order[nk]] << endl; + cout << "component: " << m_mix->speciesName(m_species[m_order[nk]]) << " " << m_moles[m_order[nk]] << endl; } #endif } @@ -515,7 +653,7 @@ namespace Cantera { if (m_work[k] < 0.0 && m_moles[k] > 0.0) { omax = -m_moles[k]/m_work[k]; if (omax < omegamax) { - omegamax = omax*1.000001; + omegamax = omax; //*1.000001; if (omegamax < 1.0e-5) { m_force = true; #ifdef DEBUG_MULTIPHASE_EQUIL @@ -527,6 +665,10 @@ namespace Cantera { } } } + if (loglevel > 0 && m_moles[k] < -SmallNumber) { + addLogEntry("Negative moles for " + +m_mix->speciesName(m_species[k]), fp2str(m_moles[k])); + } m_majorsp[k] = true; } } @@ -537,7 +679,7 @@ namespace Cantera { // compute the gradient of G at this new position in the // current direction. If it is positive, then we have overshot // the minimum. In this case, interpolate back. - doublereal not_mu = 1.0e8; + doublereal not_mu = 1.0e12; m_mix->getValidChemPotentials(not_mu, m_mu.begin()); doublereal grad1 = 0.0; for (k = 0; k < m_nsp; k++) { @@ -551,6 +693,7 @@ namespace Cantera { for (k = 0; k < m_nsp; k++) m_moles[k] = m_lastmoles[k]; step(omega, m_work); } + if (loglevel > 0) endLogGroup(); return omega; } @@ -560,14 +703,14 @@ namespace Cantera { doublereal MultiPhaseEquil::computeReactionSteps(vector_fp& dxi) { index_t j, k, ik, kc, ip; - doublereal stoich, nmoles, csum, term1, fctr; + doublereal stoich, nmoles, csum, term1, fctr, rfctr; vector_fp nu; const doublereal TINY = 1.0e-20; doublereal grad = 0.0; dxi.resize(m_nsp - m_nel); computeN(); - doublereal not_mu = 1.0e8; + doublereal not_mu = 1.0e12; m_mix->getValidChemPotentials(not_mu, m_mu.begin()); for (j = 0; j < m_nsp - m_nel; j++) { @@ -594,7 +737,7 @@ namespace Cantera { fctr = 0.0; } else { - fctr = 0.05; + fctr = 0.5; } } else if (!m_solnrxn[j]) { @@ -632,7 +775,15 @@ namespace Cantera { sum -= psum / (fabs(m_mix->phaseMoles(ip)) + TINY); } } - fctr = 1.0/(term1 + csum + sum); + rfctr = term1 + csum + sum; + if (fabs(rfctr) < TINY) + fctr = 1.0; + else + fctr = 1.0/(term1 + csum + sum); + if (fctr < -999.0 || fctr > 999.0) { + cout << "fctr, term1, csum, sum = " << fctr << " " << term1 << " " << csum << " " << sum << endl; + cout << reactionString(j) << endl; + } } dxi[j] = -fctr*dg_rt; index_t m; @@ -672,7 +823,7 @@ namespace Cantera { for (m = 0; m < m_nel; m++) { for (ik = 0; ik < m_nsp; ik++) { k = m_sortindex[ik]; - if (m_mix->nAtoms(m_species[k],m_element[m]) > 0) break; + if (m_mix->nAtoms(m_species[k],m_element[m]) != 0) break; } ok = false; for (ij = 0; ij < m_nel; ij++) { @@ -688,15 +839,18 @@ namespace Cantera { doublereal MultiPhaseEquil::error() { index_t j, ik, k, maxj; + bool exists = false; doublereal err, maxerr = 0.0; for (j = 0; j < m_nsp - m_nel; j++) { ik = j + m_nel; k = m_order[ik]; - if (m_dsoln[k] == 0 && m_moles[k] <= 0.0) { + if (m_dsoln[k] > 0 && fabs(m_moles[k]) <= SmallNumber) err = 0.0; + else if (m_dsoln[k] == 0 && m_moles[k] <= 0.0) { if (m_deltaG_RT[j] >= 0.0) err = 0.0; - else err = 1.0; + else err = fabs(m_deltaG_RT[j]);//1.0; } else { + exists = true; err = fabs(m_deltaG_RT[j]); } if (err > maxerr) { @@ -704,7 +858,7 @@ namespace Cantera { maxj = j; } } + return maxerr; } - } diff --git a/Cantera/src/MultiPhaseEquil.h b/Cantera/src/MultiPhaseEquil.h index 09fb3dea3..77dd38a81 100644 --- a/Cantera/src/MultiPhaseEquil.h +++ b/Cantera/src/MultiPhaseEquil.h @@ -16,7 +16,7 @@ namespace Cantera { typedef size_t index_t; typedef DenseMatrix matrix_t; - MultiPhaseEquil(mix_t* mix); + MultiPhaseEquil(mix_t* mix, bool start=true); virtual ~MultiPhaseEquil() {} @@ -37,31 +37,18 @@ namespace Cantera { int iterations() { return m_iter; } doublereal equilibrate(int XY, doublereal err = 1.0e-9, - int maxsteps = 1000) { - int i; - m_iter = 0; - for (i = 0; i < maxsteps; i++) { - stepComposition(); - if (error() < err) break; - } - if (i >= maxsteps) { - printInfo(); - throw CanteraError("MultiPhaseEquil::equilibrate", - "no convergence in " + int2str(maxsteps) + - " iterations. Error = " + fp2str(error())); - } - return error(); - } + int maxsteps = 1000, int loglevel=0); string reactionString(index_t j); doublereal error(); void printInfo(); + protected: void getComponents(const vector_int& order); int setInitialMoles(); void computeN(); - doublereal stepComposition(); + doublereal stepComposition(int loglevel); void sort(vector_fp& x); void unsort(vector_fp& x); void step(doublereal omega, vector_fp& deltaN); @@ -70,6 +57,7 @@ namespace Cantera { index_t m_nel_mix, m_nsp_mix, m_np; index_t m_nel, m_nsp; + index_t m_eloc; int m_iter; mix_t* m_mix; doublereal m_press, m_temp; @@ -98,11 +86,16 @@ namespace Cantera { * calculation. */ inline doublereal equilibrate(MultiPhase& s, int XY, - doublereal tol = 1.0e-9, int maxsteps = 1000) { + doublereal tol = 1.0e-9, int maxsteps = 1000, int loglevel = 0) { s.init(); - MultiPhaseEquil e(&s); - if (XY == TP) - return e.equilibrate(XY, tol, maxsteps); + //MultiPhaseEquil e(&s); + if (XY == TP || XY == HP) { + double err = s.equilibrate(XY, tol, maxsteps, maxsteps, loglevel); + if (loglevel > 0) { + write_logfile("equilibrate.html"); + } + return err; + } else { throw CanteraError("equilibrate","only fixed T, P supported"); return -1.0; @@ -115,8 +108,8 @@ namespace Cantera { * calculation. */ inline doublereal equilibrate(MultiPhase& s, const char* XY, - doublereal tol = 1.0e-9, int maxsteps = 1000) { - return equilibrate(s,_equilflag(XY), tol, maxsteps); + doublereal tol = 1.0e-9, int maxsteps = 1000, int loglevel = 0) { + return equilibrate(s,_equilflag(XY), tol, maxsteps, loglevel); } } diff --git a/Cantera/src/Phase.cpp b/Cantera/src/Phase.cpp index 56434a495..65e3d36bd 100755 --- a/Cantera/src/Phase.cpp +++ b/Cantera/src/Phase.cpp @@ -96,6 +96,11 @@ namespace Cantera { setMoleFractions(x); setTemperature(t); setDensity(dens); } + void Phase::setState_TNX(doublereal t, doublereal n, + const doublereal* x) { + setMoleFractions(x); setTemperature(t); setMolarDensity(n); + } + /** Set the temperature (K), density (kg/m^3), and mole fractions. */ void Phase::setState_TRX(doublereal t, doublereal dens, compositionMap& x) { diff --git a/Cantera/src/Phase.h b/Cantera/src/Phase.h index 7c78d7f75..4ebb25379 100755 --- a/Cantera/src/Phase.h +++ b/Cantera/src/Phase.h @@ -43,7 +43,8 @@ namespace Cantera { /// Default constructor. Phase() : m_kk(-1), m_ndim(3), m_index(-1), - m_xml(new XML_Node("phase")), m_id("") {} + m_xml(new XML_Node("phase")), + m_id(""), m_name("") {} /// Destructor. virtual ~Phase(){ @@ -54,6 +55,10 @@ namespace Cantera { XML_Node& xml() { return *m_xml; } string id() const { return m_id; } void setID(string id) {m_id = id;} + + string name() const { return m_name; } + void setName(string nm) { m_name = nm; } + int index() const { return m_index; } void setIndex(int m) { m_index = m; } @@ -106,6 +111,9 @@ namespace Cantera { /** Set the temperature (K), density (kg/m^3), and mass fractions. */ void setState_TRY(doublereal t, doublereal dens, compositionMap& y); + + /** Set the temperature (K), molar density (kmol/m^3), and mole fractions. */ + void setState_TNX(doublereal t, doublereal n, const doublereal* x); /** Set the temperature (K) and density (kg/m^3) */ void setState_TR(doublereal t, doublereal rho); @@ -201,6 +209,7 @@ namespace Cantera { vector_fp m_data; XML_Node* m_xml; string m_id; + string m_name; }; typedef Phase phase_t; diff --git a/Cantera/src/RateCoeffMgr.h b/Cantera/src/RateCoeffMgr.h index 339c0ec87..c14b6d409 100755 --- a/Cantera/src/RateCoeffMgr.h +++ b/Cantera/src/RateCoeffMgr.h @@ -47,7 +47,7 @@ namespace Cantera { * throw an error condition. */ if (rateType != R::type()) - throw CanteraError("InterfaceKinetics::install", + throw CanteraError("Rate1::install", "incorrect rate coefficient type: "+int2str(rateType)); // if any coefficient other than the first is non-zero, or diff --git a/Cantera/src/ReactionData.h b/Cantera/src/ReactionData.h index 48547b3f3..113ab2c18 100755 --- a/Cantera/src/ReactionData.h +++ b/Cantera/src/ReactionData.h @@ -43,8 +43,8 @@ namespace Cantera { vector_int reactants; vector_int products; vector_fp order; - vector_int rstoich; - vector_int pstoich; + vector_fp rstoich; + vector_fp pstoich; vector rgroups; vector pgroups; map thirdBodyEfficiencies; diff --git a/Cantera/src/ReactionStoichMgr.cpp b/Cantera/src/ReactionStoichMgr.cpp index c558ce10f..4b49f01c9 100644 --- a/Cantera/src/ReactionStoichMgr.cpp +++ b/Cantera/src/ReactionStoichMgr.cpp @@ -33,6 +33,7 @@ namespace Cantera { m_revproducts = new StoichManagerN; m_irrevproducts = new StoichManagerN; m_global = new StoichManagerN; + } // delete the three stoichiometry managers @@ -56,107 +57,88 @@ namespace Cantera { m_irrevproducts->add(rxn, products); } + void ReactionStoichMgr:: add(int rxn, const ReactionData& r) { vector_int rk; + doublereal frac; int n, ns, m, nr = r.reactants.size(); for (n = 0; n < nr; n++) { - ns = r.rstoich[n]; - // m_rrxn[r.reactants[n]][rnum] = ns; + ns = int(r.rstoich[n]); + frac = r.rstoich[n] - 1.0*int(r.rstoich[n]); + if (frac != 0.0) { + throw CanteraError("ReactionStoichMgr::add", + "fractional reactant stoichiometric coefficient not allowed!"); + } for (m = 0; m < ns; m++) { rk.push_back(r.reactants[n]); } } + + m_reactants->add( rxn, rk); vector_int pk; + bool isfrac = false; int np = r.products.size(); for (n = 0; n < np; n++) { - ns = r.pstoich[n]; - // m_prxn[r.products[n]][rnum] = ns; + ns = int(r.pstoich[n]); + frac = r.pstoich[n] - 1.0*int(r.pstoich[n]); + if (frac != 0.0) isfrac = true; for (m = 0; m < ns; m++) { pk.push_back(r.products[n]); } } - m_reactants->add( rxn, rk); - - if (r.reversible) { + if (isfrac) { + if (r.reversible) { + throw CanteraError("ReactionStoichMgr::add", + "fractional product stoichiometric coefficients only allowed " + "\nfor irreversible reactions"); + } + else { + cout << "adding fractional reaction" << endl; + m_irrevproducts->add(rxn, r.products, r.order, r.pstoich); + } + } + else if (r.reversible) { m_revproducts->add(rxn, pk); } - else { + else { m_irrevproducts->add(rxn, pk); } + // if the reaction is a global one, then add it to the global + // stoichiometry manager. The reaction was added to + // m_reactants above, but this will compute the rate using + // stoichiometric coefficients. The global stoich manager then + // corrects this, using orders that are the difference between + // the true order and the reactant stoichiometric coefficient. if (r.global) { vector_fp delta_order(nr,0.0); for (n = 0; n < nr; n++) { delta_order[n] = r.order[n] - r.rstoich[n]; - //cout << "rxn stoich " << r.reactants[n] << " " << r.order[n] << " " << delta_order[n] << endl; } m_global->add(rxn, r.reactants, delta_order); } } - -// void ReactionStoichMgr:: -// add(int rxn, const vector_int& reactants, const vector_int& products, -// bool reversible, const vector_fp& fwdOrder) { - -// #ifdef DIAGNOSE_RXNSTOICHMGR -// printf("ReactionStoichMgr::add adding reaction number %d\n", rxn); -// #endif - -// // add the reactants with the specified forward order -// m_reactants->add(rxn, reactants, fwdOrder); - -// // check whether any orders are not equal to 1.0 -// // if so, add an entry to the global stoich manager -// // with orders decremented by one -// int nr = reactants.size(); -// int n; -// bool global = false; -// for (n = 0; n < nr; n++) { -// if (fwdOrder[n] != 1.0) { - -// #ifdef DIAGNOSE_RXNSTOICHMGR -// printf(".... global reaction: fwdOrder[%d] = %f.\n", n, fwdOrder[n]); -// #endif -// global = true; -// if (reversible) { -// throw CanteraError("ReactionStoichMgr::add", -// "reversible global reactions not allowed"); -// } -// } -// } -// if (global) { -// vector_fp fwdOrder_minus_one; -// for (n = 0; n < nr; n++) -// fwdOrder_minus_one[n] = fwdOrder[n] - 1.0; -// m_global->add(rxn, reactants, fwdOrder_minus_one); -// } - - -// // depending on whether the reversible flag is set or not, add the -// // products either to the reversible or irreversible product -// // stoichiometry manager. -// if (reversible) -// m_revproducts->add(rxn, products); -// else -// m_irrevproducts->add(rxn, products); -// } - - void ReactionStoichMgr:: - getCreationRates(int nsp, const doublereal* ropf, const doublereal* ropr, doublereal* c) { + getCreationRates(int nsp, const doublereal* ropf, + const doublereal* ropr, doublereal* c) { + // zero out the output array fill(c, c + nsp, 0.0); + m_revproducts->incrementSpecies(ropf, c); m_irrevproducts->incrementSpecies(ropf, c); + + // the reverse direction creates reactant species m_reactants->incrementSpecies(ropr, c); } void ReactionStoichMgr:: - getDestructionRates(int nsp, const doublereal* ropf, const doublereal* ropr, doublereal* d) { + getDestructionRates(int nsp, const doublereal* ropf, + const doublereal* ropr, doublereal* d) { fill(d, d + nsp, 0.0); m_revproducts->incrementSpecies(ropr, d); m_reactants->incrementSpecies(ropf, d); diff --git a/Cantera/src/ReactionStoichMgr.h b/Cantera/src/ReactionStoichMgr.h index 0791bb39f..8c4a86d9a 100644 --- a/Cantera/src/ReactionStoichMgr.h +++ b/Cantera/src/ReactionStoichMgr.h @@ -90,8 +90,8 @@ namespace Cantera { * - reactants: (2, 2) [ note repeated index ] * - products: (1) * - * @param rxn Reaction number. This number will be used as the index into the - * rate of progess vector in the methods below. + * @param rxn Reaction number. This number will be used as the index + * into the rate of progess vector in the methods below. * @param reactants vector of integer reactant indices * @param products vector of integer product indices * @param reversible true if the reaction is reversible, false otherwise @@ -225,7 +225,6 @@ namespace Cantera { StoichManagerN* m_revproducts; StoichManagerN* m_irrevproducts; StoichManagerN* m_global; - }; } diff --git a/Cantera/src/RxnRates.h b/Cantera/src/RxnRates.h index 3d43b7a79..1ae3cd393 100755 --- a/Cantera/src/RxnRates.h +++ b/Cantera/src/RxnRates.h @@ -36,9 +36,10 @@ namespace Cantera { return m_logA + m_b*logT - m_E*recipT; } - doublereal update_dT(doublereal logT, doublereal recipT) const { - return recipT*(m_b + m_E*recipT); - } + /// no longer used + //doublereal update_dT(doublereal logT, doublereal recipT) const { + // return recipT*(m_b + m_E*recipT); + //} void writeUpdateRHS(ostream& s) const { s << " exp(" << m_logA; @@ -84,9 +85,9 @@ namespace Cantera { return log(fexp); } - doublereal update_dT(doublereal logT, doublereal recipT) const { - throw CanteraError("ArrheniusSum::update_dT","not implemented."); - } + // doublereal update_dT(doublereal logT, doublereal recipT) const { + // throw CanteraError("ArrheniusSum::update_dT","not implemented."); + //} void writeUpdateRHS(ostream& s) const { ; diff --git a/Cantera/src/SpeciesThermoFactory.cpp b/Cantera/src/SpeciesThermoFactory.cpp index 626feb1f3..20ff7732a 100755 --- a/Cantera/src/SpeciesThermoFactory.cpp +++ b/Cantera/src/SpeciesThermoFactory.cpp @@ -2,12 +2,6 @@ * @file SpeciesThermoFactory.cpp */ -/* - * $Author$ - * $Revision$ - * $Date$ - */ - // Copyright 2001 California Institute of Technology @@ -223,9 +217,70 @@ namespace Cantera { sp.install(speciesName, k, NASA, c.begin(), tmin, tmax, p0); } +#ifdef INCL_NASA96 /** - * Install a NASA polynomial thermodynamic property + * Install a NASA96 polynomial thermodynamic property + * parameterization for species k into a SpeciesThermo instance. + */ + static void installNasa96ThermoFromXML(string speciesName, + SpeciesThermo& sp, int k, + const XML_Node* f0ptr, const XML_Node* f1ptr) { + doublereal tmin0, tmax0, tmin1, tmax1, tmin, tmid, tmax; + + const XML_Node& f0 = *f0ptr; + bool dualRange = false; + if (f1ptr) {dualRange = true;} + tmin0 = fpValue(f0["Tmin"]); + tmax0 = fpValue(f0["Tmax"]); + tmin1 = tmax0; + tmax1 = tmin1 + 0.0001; + if (dualRange) { + tmin1 = fpValue((*f1ptr)["Tmin"]); + tmax1 = fpValue((*f1ptr)["Tmax"]); + } + + vector_fp c0, c1; + if (fabs(tmax0 - tmin1) < 0.01) { + tmin = tmin0; + tmid = tmax0; + tmax = tmax1; + getFloatArray(f0.child("floatArray"), c0, false); + if (dualRange) + getFloatArray(f1ptr->child("floatArray"), c1, false); + else { + c1.resize(7,0.0); + copy(c0.begin(), c0.end(), c1.begin()); + } + } + else if (fabs(tmax1 - tmin0) < 0.01) { + tmin = tmin1; + tmid = tmax1; + tmax = tmax0; + getFloatArray(f1ptr->child("floatArray"), c0, false); + getFloatArray(f0.child("floatArray"), c1, false); + } + else { + throw CanteraError("installNasaThermo", + "non-continuous temperature ranges."); + } + array_fp c(15); + c[0] = tmid; + doublereal p0 = OneAtm; + c[1] = c0[5]; + c[2] = c0[6]; + copy(c0.begin(), c0.begin()+5, c.begin() + 3); + c[8] = c1[5]; + c[9] = c1[6]; + copy(c1.begin(), c1.begin()+5, c.begin() + 10); + sp.install(speciesName, k, NASA, c.begin(), tmin, tmax, p0); + } + +#endif + + + /** + * Install a Shomate polynomial thermodynamic property * parameterization for species k. */ static void installShomateThermoFromXML(string speciesName, diff --git a/Cantera/src/State.h b/Cantera/src/State.h index 83cc89a1c..ea06e6019 100755 --- a/Cantera/src/State.h +++ b/Cantera/src/State.h @@ -24,15 +24,22 @@ namespace Cantera { /** - * Manages the thermodynamic state. Class State manages the - * thermodynamic state of a multi-species solution. It holds - * values for the temperature, mass density, and mean molecular - * weight, and a vector of species mass fractions. For efficiency - * in mass/mole conversion, the vector of mass fractions divided - * by molecular weight \f$ Y_k/M_k \f$ is also stored. + * Manages the thermodynamic state. Class State stores just enough + * information about a multicomponent solution to specify its + * intensive thermodynamic state. It stores values for the + * temperature, mass density, and an array of species mass + * fractions. It also stores an array of species molecular + * weights, which are used to convert between mole and mass + * representations of the composition. These are the \e only + * properties of the species that class State knows about. For + * efficiency in mass/mole conversion, the vector of mass + * fractions divided by molecular weight \f$ Y_k/M_k \f$ is also + * stored. * * Class State is not usually used directly in application - * programs. Its primary use is as a base class for class Phase. + * programs. Its primary use is as a base class for class + * Phase. Class State has no virtual methods, and none of its + * methods are meant to be overloaded. */ class State { @@ -50,12 +57,22 @@ namespace Cantera { */ virtual ~State(); - /** - * Return a read-only reference to the array of molecular - * weights. - */ + + /// @name Species Information + /// The only thing class State knows about the species is their + /// molecular weights. + //@{ + + /// Return a read-only reference to the array of molecular + /// weights. const array_fp& molecularWeights() const { return m_molwts; } + + //@} + /// @name Composition + //@{ + + /** * Get the species mole fractions. * @param x On return, x contains the mole fractions. Must have a @@ -89,7 +106,7 @@ namespace Cantera { /** * Get the species mass fractions. * @param y On return, y - * contains the mass fractions. Array \i y must have a length + * contains the mass fractions. Array \a y must have a length * greater than or equal to the number of species. */ void getMassFractions(doublereal* y) const; @@ -115,12 +132,42 @@ namespace Cantera { /** * Get the species concentrations (kmol/m^3). - * @param c On return, \i c contains the concentrations. - * Array \i c must have a length greater than or equal to + * @param c On return, \a c contains the concentrations. + * Array \a c must have a length greater than or equal to * the number of species. */ void getConcentrations(doublereal* c) const; + /** + * Set the concentrations to the specified values within the + * phase. + * + * @param c The input vector to this routine is in dimensional + * units. For volumetric phases c[k] is the + * concentration of the kth species in kmol/m3. + * For surface phases, c[k] is the concentration + * in kmol/m2. The length of the vector is the number + * of species in the phase. + */ + void setConcentrations(const doublereal* c); + + /** + * Returns a pointer to the start of the massFraction array + */ + const doublereal* massFractions() const { return m_y.begin(); } + + /** + * Returns a pointer to the start of the moleFraction/MW array. + * This array is the array of mole fractions, each divided by + * the mean molecular weight. + */ + const doublereal* moleFractdivMMW() const { return m_ym.begin();} + + + //@} + + /// @name Mean Properties + //@{ /** * Evaluate the mole-fraction-weighted mean of Q: * \f[ \sum_k X_k Q_k. \f] @@ -149,65 +196,43 @@ namespace Cantera { /// Evaluate \f$ \sum_k X_k \log Q_k \f$. doublereal sum_xlogQ(doublereal* Q) const; + //@} - /// Temperature. Units: K. + /// @name Thermodynamic Properties + /// Class State only stores enough thermodynamic data to + /// specify the state. In addition to composition information, + /// it stores the temperature and + /// mass density. + //@{ + + /// Temperature (K). doublereal temperature() const { return m_temp; } - /// Density. Units: kg/m^3. + /// Density (kg/m^3). doublereal density() const { return m_dens; } - /// Molar density. Units: kmol/m^3. + /// Molar density (kmol/m^3). doublereal molarDensity() const { return m_dens/meanMolecularWeight(); } - /// Set the density to value rho (kg/m^3). - void setDensity(doublereal rho) { - m_dens = rho; + /// Set the density (kg/m^3). + void setDensity(doublereal density) { + m_dens = density; } - /// Set the molar density to value n (kmol/m^3). - void setMolarDensity(doublereal n) { - m_dens = n*meanMolecularWeight(); + /// Set the molar density (kmol/m^3). + void setMolarDensity(doublereal molarDensity) { + m_dens = molarDensity*meanMolecularWeight(); } - /// Set the temperature to value temp (K). + /// Set the temperature (K). void setTemperature(doublereal temp) { m_temp = temp; } + //@} - /** - * Set the concentrations to the specified values within the - * phase. This is the MAIN function for internally setting - * the composition of a phase. It sets all of the internal - * parameters within the state object except the temperature. - * These are: - * m_dens = density of state - * m_ym[k] = mole fraction of species k / MolecWeight species k - * m_y[k] = Mass fractions of species k - * m_mmw = mean molecular weight of mixture - * - * @param The input vector to this routine is in dimensional - * units. For volumetric phases c[k] is the - * concentration of the kth species in kmol/m3. - * For surface phases, c[k] is the concentration - * in kmol/m2. The length of the vector is the number - * of species in the phase. - */ - void setConcentrations(const doublereal* c); - - /** - * Returns a pointer to the start of the massFraction array - */ - const doublereal* massFractions() const { return m_y.begin(); } - - /** - * Returns a pointer to the start of the moleFraction/MW array. - * This array is the array of mole fractions, each divided by - * the mean molecular weight. - */ - const doublereal* moleFractdivMMW() const { return m_ym.begin();} - + /// True if species bool ready() const { return (m_kk > 0); } diff --git a/Cantera/src/StoichManager.h b/Cantera/src/StoichManager.h index 9d3ea927d..8d478592d 100755 --- a/Cantera/src/StoichManager.h +++ b/Cantera/src/StoichManager.h @@ -41,7 +41,7 @@ namespace Cantera { * methods into the body of the corresponding StoichManager method, * and so there is no performance penalty (unless inlining is turned * off). - * + * * To describe the methods, consider class C3 and suppose an instance * is created with reaction number irxn and species numbers k0, k1, * and k2. @@ -114,25 +114,32 @@ namespace Cantera { public: - C1( int rxn = 0, int ic0 = 0, doublereal order = 1.0 ) - : m_rxn (rxn), m_ic0 (ic0), m_order(order) {} + C1( int rxn = 0, int ic0 = 0, doublereal order = 1.0 ) + : m_rxn (rxn), m_ic0 (ic0), m_order(order) {} + + int data(vector& ic) { + ic.resize(3); + ic[0] = m_ic0; + return m_rxn; + } + + void multiply(const doublereal* input, doublereal* output) const { + *(output + m_rxn) *= *(input + m_ic0); + } + void power(const doublereal* input, doublereal* output) const { + output[m_rxn] *= ppow(input[m_ic0], m_order); + } + + /** + * Add the sum of N specified elements of array 'input' + * to element I or array 'output'. + */ + void incrementSpecies(const doublereal* input, + doublereal* output) const { + *(output + m_ic0) += *(input + m_rxn); + } - int data(vector& ic) { - ic.resize(3); - ic[0] = m_ic0; - return m_rxn; - } - void multiply(const doublereal* input, doublereal* output) const { - *(output + m_rxn) *= *(input + m_ic0); - } - void power(const doublereal* input, doublereal* output) const { - output[m_rxn] *= ppow(input[m_ic0], m_order); - } - void incrementSpecies(const doublereal* input, - doublereal* output) const { - *(output + m_ic0) += *(input + m_rxn); - } void decrementSpecies(const doublereal* input, doublereal* output) const { *(output + m_ic0) -= *(input + m_rxn); @@ -286,16 +293,20 @@ namespace Cantera { public: C_AnyN() : m_rxn (-1) {} - C_AnyN( int rxn, const vector_int& ic, const vector_fp& order) - : m_rxn (rxn) { - m_n = ic.size(); - m_ic.resize(m_n); - m_order.resize(m_n); - for (int n = 0; n < m_n; n++) { - m_ic[n] = ic[n]; - m_order[n] = order[n]; + C_AnyN( int rxn, const vector_int& ic, const vector_fp& order, + const vector_fp& stoich) + : m_rxn (rxn) { + m_n = ic.size(); + m_ic.resize(m_n); + m_order.resize(m_n); + m_stoich.resize(m_n); + for (int n = 0; n < m_n; n++) { + m_ic[n] = ic[n]; + m_order[n] = order[n]; + m_stoich[n] = stoich[n]; + cout << "n, stoich[n] = " << n << " " << stoich[n] << endl; + } } - } int data(vector& ic) { ic.resize(m_n); @@ -304,37 +315,48 @@ namespace Cantera { return m_rxn; } - void power(const doublereal* input, doublereal* output) const { - for (int n = 0; n < m_n; n++) output[m_rxn] - *= ppow(input[m_ic[n]],m_order[n]); - } + void power(const doublereal* input, doublereal* output) const { + for (int n = 0; n < m_n; n++) output[m_rxn] + *= ppow(input[m_ic[n]],m_order[n]); + } - void multiply(const doublereal* input, doublereal* output) const { - for (int n = 0; n < m_n; n++) output[m_rxn] *= input[m_ic[n]]; - } + void multiply(const doublereal* input, doublereal* output) const { + for (int n = 0; n < m_n; n++) output[m_rxn] *= input[m_ic[n]]; + } - void incrementSpecies(const doublereal* input, + void incrementSpecies(const doublereal* input, doublereal* output) const { - doublereal x = input[m_rxn]; - for (int n = 0; n < m_n; n++) output[m_ic[n]] += x; - } + doublereal x = input[m_rxn]; + for (int n = 0; n < m_n; n++) output[m_ic[n]] += m_stoich[n]*x; + } + void decrementSpecies(const doublereal* input, doublereal* output) const { doublereal x = input[m_rxn]; - for (int n = 0; n < m_n; n++) output[m_ic[n]] -= x; - } - void incrementReaction(const doublereal* input, - doublereal* output) const { - for (int n = 0; n < m_n; n++) output[m_rxn] += input[m_ic[n]]; - } - void decrementReaction(const doublereal* input, - doublereal* output) const { - for (int n = 0; n < m_n; n++) output[m_rxn] -= input[m_ic[n]]; + for (int n = 0; n < m_n; n++) output[m_ic[n]] -= m_stoich[n]*x; } + + /** + * Increment R[I] by the sum of N specified elements of array S. + */ + void incrementReaction(const doublereal* input, + doublereal* output) const { + for (int n = 0; n < m_n; n++) output[m_rxn] += m_stoich[n]*input[m_ic[n]]; + } + + /** + * Decrement R[I] by the sum of N specified elements of array S. + */ + void decrementReaction(const doublereal* input, + doublereal* output) const { + for (int n = 0; n < m_n; n++) output[m_rxn] -= m_stoich[n]*input[m_ic[n]]; + } + private: - int m_n, m_rxn, m_ic0, m_ic1, m_ic2; + int m_n, m_rxn; vector_int m_ic; vector_fp m_order; + vector_fp m_stoich; }; @@ -443,7 +465,13 @@ namespace Cantera { */ void add(int rxn, const vector_int& k) { vector_fp order(k.size(), 1.0); - add(rxn, k, order); + vector_fp stoich(k.size(), 1.0); + add(rxn, k, order, stoich); + } + + void add(int rxn, const vector_int& k, const vector_fp& order) { + vector_fp stoich(k.size(), 1.0); + add(rxn, k, order, stoich); } /** @@ -459,30 +487,45 @@ namespace Cantera { * These are used as indexes into vectors which have * length n_total_species. * @param order This is a vector of the same length as vector k. - * The order is used for the routine order(), which produces + * The order is used for the routine power(), which produces * a power law expression involving the species vector. + * @param stoich This is used to handle fractional stoichiometric coefficients + * on the product side of irreversible reactions. */ - void add(int rxn, const vector_int& k, const vector_fp& order) { - m_n[rxn] = static_cast(k.size()); - switch (k.size()) { - case 1: - m_loc[rxn] = static_cast(m_c1_list.size()); - m_c1_list.push_back(C1(rxn, k[0], order[0])); - break; - case 2: - m_loc[rxn] = static_cast(m_c2_list.size()); - m_c2_list.push_back(C2(rxn, k[0], k[1], order[0], order[1])); - break; - case 3: - m_loc[rxn] = static_cast(m_c3_list.size()); - m_c3_list.push_back(C3(rxn, k[0], k[1], k[2], - order[0], order[1], order[2])); - break; - default: - m_loc[rxn] = static_cast(m_cn_list.size()); - m_cn_list.push_back(C_AnyN(rxn, k, order)); + void add(int rxn, const vector_int& k, const vector_fp& order, + const vector_fp& stoich) { + m_n[rxn] = static_cast(k.size()); + int ns = stoich.size(); + int n; + bool frac = false; + for (n = 0; n < ns; n++) { + if (stoich[n] != 1.0) frac = true; + } + if (frac) { + m_loc[rxn] = static_cast(m_cn_list.size()); + m_cn_list.push_back(C_AnyN(rxn, k, order, stoich)); + } + else { + switch (k.size()) { + case 1: + m_loc[rxn] = static_cast(m_c1_list.size()); + m_c1_list.push_back(C1(rxn, k[0], order[0])); + break; + case 2: + m_loc[rxn] = static_cast(m_c2_list.size()); + m_c2_list.push_back(C2(rxn, k[0], k[1], order[0], order[1])); + break; + case 3: + m_loc[rxn] = static_cast(m_c3_list.size()); + m_c3_list.push_back(C3(rxn, k[0], k[1], k[2], + order[0], order[1], order[2])); + break; + default: + m_loc[rxn] = static_cast(m_cn_list.size()); + m_cn_list.push_back(C_AnyN(rxn, k, order, stoich)); + } + } } - } void multiply(const doublereal* input, doublereal* output) const { _multiply(m_c1_list.begin(), m_c1_list.end(), input, output); diff --git a/Cantera/src/StoichSubstance.cpp b/Cantera/src/StoichSubstance.cpp index 27f0f4c2b..620d1d977 100644 --- a/Cantera/src/StoichSubstance.cpp +++ b/Cantera/src/StoichSubstance.cpp @@ -44,6 +44,13 @@ namespace Cantera { } } + void StoichSubstance:: + getUnitsStandardConc(double *uA, int k, int sizeUA) { + for (int i = 0; i < sizeUA; i++) { + uA[i] = 0.0; + } + } + void StoichSubstance::setParameters(int n, double * c) { double rho = c[0]; setDensity(rho); diff --git a/Cantera/src/StoichSubstance.h b/Cantera/src/StoichSubstance.h index e65481ef8..de030dc49 100644 --- a/Cantera/src/StoichSubstance.h +++ b/Cantera/src/StoichSubstance.h @@ -43,6 +43,12 @@ namespace Cantera { virtual ~StoichSubstance() {} + /** + * + * @name Utilities + * @{ + */ + /** * Equation of state flag. Returns the value cStoichSubstance, * defined in mix_defs.h. @@ -51,7 +57,8 @@ namespace Cantera { /** - * @name Molar Thermodynamic Properties + * @} + * @name Molar Thermodynamic Properties of the Solution --------- * @{ */ @@ -92,6 +99,10 @@ namespace Cantera { } + /** + * Molar gibbs Function. Units: J/kmol. This is determined + * from the molar enthalpy and entropy functions. + */ virtual doublereal gibbs_mole() const { return enthalpy_mole() - temperature() * entropy_mole(); } @@ -145,25 +156,10 @@ namespace Cantera { //@} - - /** - * For a stoichiometric substance, there is only one species. - * This method returns the molar gibbs function in the - * first element of array \c mu. + /** + * @name Chemical Potentials and Activities + *@{ */ - virtual void getChemPotentials(doublereal* mu) const { - mu[0] = gibbs_mole(); - } - - /** - * For a stoichiometric substance, there is no activity term in - * the chemical potential expression, and therefore the - * standard chemical potential and the chemical potential - * are both equal to the molar Gibbs function. - */ - virtual void getStandardChemPotentials(doublereal* mu0) const { - mu0[0] = gibbs_mole(); - } /** * This method returns the array of generalized @@ -183,10 +179,164 @@ namespace Cantera { return 1.0; } + /** + * Returns the natural logarithm of the standard + * concentration of the kth species + */ virtual doublereal logStandardConc(int k=0) const { return 0.0; } + /** + * Get the array of chemical potentials at unit activity + * \f$ \mu^0_k \f$. + * + * For a stoichiometric substance, there is no activity term in + * the chemical potential expression, and therefore the + * standard chemical potential and the chemical potential + * are both equal to the molar Gibbs function. + */ + virtual void getStandardChemPotentials(doublereal* mu0) const { + mu0[0] = gibbs_mole(); + } + + /** + * Returns the units of the standard and generalized + * concentrations Note they have the same units, as their + * ratio is defined to be equal to the activity of the kth + * species in the solution, which is unitless. + * + * This routine is used in print out applications where the + * units are needed. Usually, MKS units are assumed throughout + * the program and in the XML input files. + * + * uA[0] = kmol units - default = 0 + * uA[1] = m units - default = 0 + * uA[2] = kg units - default = 0; + * uA[3] = Pa(pressure) units - default = 0; + * uA[4] = Temperature units - default = 0; + * uA[5] = time units - default = 0 + */ + virtual void getUnitsStandardConc(double *uA, int k = 0, + int sizeUA = 6); + + + //@} + /// @name Partial Molar Properties of the Solution ---------------------------------- + //@{ + + + /** + * Get the array of non-dimensional chemical potentials + * \f$ \mu_k / \hat R T \f$. + */ + virtual void getChemPotentials_RT(doublereal* mu) const { + mu[0] = gibbs_mole() / (GasConstant * temperature()); + } + + /** + * For a stoichiometric substance, there is only one species. + * This method returns the molar gibbs function in the + * first element of array \c mu. + */ + virtual void getChemPotentials(doublereal* mu) const { + mu[0] = gibbs_mole(); + } + + /** + * Get the species electrochemical potentials. Units: J/kmol. + * This method adds a term \f$ Fz_k \phi_k \f$ to the + * to each chemical potential. + */ + void getElectrochemPotentials(doublereal* mu) const { + getChemPotentials(mu); + } + + /** + * Returns an array of partial molar enthalpies for the species + * in the mixture. + * Units (J/kmol) + */ + virtual void getPartialMolarEnthalpies(doublereal* hbar) const { + hbar[0] = enthalpy_mole(); + } + + /** + * Returns an array of partial molar entropies of the species in the + * solution. Units: J/kmol/K. + */ + virtual void getPartialMolarEntropies(doublereal* sbar) const { + sbar[0] = entropy_mole(); + } + + /** + * returns an array of partial molar volumes of the species + * in the solution. Units: m^3 kmol-1. + */ + virtual void getPartialMolarVolumes(doublereal* vbar) const { + vbar[0] = 1.0 / molarDensity(); + } + + + //@} + /// @name Properties of the Standard State of the Species in the Solution ------------------------------------- + //@{ + /** + * Get the nondimensional Enthalpy functions for the species + * at their standard states at the current + * T and P of the solution. + */ + virtual void getEnthalpy_RT(doublereal* hrt) const { + hrt[0] = enthalpy_mole() / (GasConstant * temperature()); + } + + + //@} + /// @name Thermodynamic Values for the Species Reference States -------------------- + //@{ + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getEnthalpy_RT_ref(doublereal *hrt) const { + _updateThermo(); + hrt[0] = m_h0_RT[0]; + } + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getGibbs_RT_ref(doublereal *grt) const { + _updateThermo(); + grt[0] = m_h0_RT[0] - m_s0_R[0]; + } + + /** + * Returns the vector of the + * gibbs function of the reference state at the current temperature + * of the solution and the reference pressure for the species. + * units = J/kmol + */ + virtual void getGibbs_ref(doublereal *g) const { + getGibbs_RT_ref(g); + g[0] *= GasConstant * temperature(); + } + + /** + * Returns the vector of nondimensional + * entropies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getEntropy_R_ref(doublereal *er) const { + _updateThermo(); + er[0] = m_s0_R[0]; + } + + virtual void initThermo(); virtual void setParameters(int n, double *c); diff --git a/Cantera/src/SurfPhase.h b/Cantera/src/SurfPhase.h index 3d345731c..f4f592cec 100644 --- a/Cantera/src/SurfPhase.h +++ b/Cantera/src/SurfPhase.h @@ -35,8 +35,14 @@ namespace Cantera { public: + /// Constructor. SurfPhase(doublereal n0 = 0.0); + + /// Destructor. virtual ~SurfPhase(); + + //----- reimplimented methods of class ThermoPhase ------ + virtual int eosType() const { return cSurf; } virtual doublereal enthalpy_mole() const; virtual doublereal intEnergy_mole() const; @@ -53,25 +59,21 @@ namespace Cantera { void setPotentialEnergy(int k, doublereal pe); doublereal potentialEnergy(int k) {return m_pe[k];} void setSiteDensity(doublereal n0); - //void setElectricPotential(doublereal V); void getEnthalpy_RT(doublereal* hrt) const; void getEntropy_R(doublereal* sr) const; - /** - * Pressure. Units: Pa. - */ virtual doublereal pressure() const { return m_press; } - - /** - * Set the pressure at constant temperature. Units: Pa. - */ + virtual void setPressure(doublereal p) { m_press = p; } + + //------- new methods defined in this class ---------- + /** * Set the surface site fractions to a specified * state. This routine converts to concentrations @@ -86,8 +88,24 @@ namespace Cantera { * This is a dimensionless quantity. */ void setCoverages(const doublereal* theta); + + /** + * Set the coverages without normalizing them to sum to 1.0. + * This may be used when the normalization condition is part + * of the system of equations being solved. + */ void setCoveragesNoNorm(const doublereal* theta); + + /** + * Set the coverages from a string of colon-separated + * name:value pairs. + */ void setCoveragesByName(string cov); + + /** + * Get the coverages. Array theta must be at least as long as + * the number of species. + */ void getCoverages(doublereal* theta) const; protected: diff --git a/Cantera/src/ThermoFactory.cpp b/Cantera/src/ThermoFactory.cpp index a01ef7656..25cd54266 100644 --- a/Cantera/src/ThermoFactory.cpp +++ b/Cantera/src/ThermoFactory.cpp @@ -19,28 +19,45 @@ #include "SpeciesThermoFactory.h" #include "IdealGasPhase.h" + +#ifdef WITH_PURE_FLUIDS #include "PureFluidPhase.h" +#endif + #include "ConstDensityThermo.h" #include "SurfPhase.h" #include "EdgePhase.h" + +#ifdef WITH_METAL #include "MetalPhase.h" -//#include "SolidCompound.h" +#endif + +#ifdef WITH_STOICH_SUBSTANCE #include "StoichSubstance.h" +#endif + #include "importCTML.h" +#ifdef WITH_LATTICE_SOLID +#include "LatticeSolidPhase.h" +#endif + namespace Cantera { ThermoFactory* ThermoFactory::__factory = 0; - static int ntypes = 7; + static int ntypes = 8; static string _types[] = {"IdealGas", "Incompressible", "Surface", "Edge", "Metal", "StoichSubstance", - "PureFluid"}; + "PureFluid", "LatticeSolid"}; static int _itypes[] = {cIdealGas, cIncompressible, cSurf, cEdge, cMetal, cStoichSubstance, - cPureFluid}; + cPureFluid, cLatticeSolid}; + /** + * This method returns a new instance of a subclass of ThermoPhase + */ ThermoPhase* ThermoFactory::newThermoPhase(string model) { int ieos=-1; @@ -69,15 +86,25 @@ namespace Cantera { th = new EdgePhase; break; +#ifdef WITH_METAL case cMetal: th = new MetalPhase; break; +#endif +#ifdef WITH_STOICH_SUBSTANCE case cStoichSubstance: th = new StoichSubstance; break; +#endif -#ifdef INCL_PURE_FLUIDS +#ifdef WITH_LATTICE_SOLID + case cLatticeSolid: + th = new LatticeSolidPhase; + break; +#endif + +#ifdef WITH_PURE_FLUIDS case cPureFluid: th = new PureFluidPhase; break; diff --git a/Cantera/src/ThermoPhase.cpp b/Cantera/src/ThermoPhase.cpp index a7618d0df..afffc7236 100644 --- a/Cantera/src/ThermoPhase.cpp +++ b/Cantera/src/ThermoPhase.cpp @@ -96,8 +96,11 @@ namespace Cantera { doublereal tol) { doublereal dt; setPressure(p); + + // Newton iteration for (int n = 0; n < 50; n++) { dt = (h - enthalpy_mass())/cp_mass(); + // limit step size to 100 K if (dt > 100.0) dt = 100.0; else if (dt < -100.0) dt = -100.0; setState_TP(temperature() + dt, p); @@ -105,7 +108,7 @@ namespace Cantera { return; } } - throw CanteraError("setState_HP","no convergence. dt = " + fp2str(dt)); + throw CanteraError("setState_HP","No convergence. dt = " + fp2str(dt)); } void ThermoPhase::setState_UV(doublereal u, doublereal v, diff --git a/Cantera/src/ThermoPhase.h b/Cantera/src/ThermoPhase.h index 1e0b0570e..c6acad87c 100755 --- a/Cantera/src/ThermoPhase.h +++ b/Cantera/src/ThermoPhase.h @@ -1,7 +1,8 @@ /** - * * @file ThermoPhase.h * + * Header file for class ThermoPhase. + * */ /* @@ -27,19 +28,34 @@ namespace Cantera { /** * @defgroup thermoprops Thermodynamic Properties * - * These classes are used to compute thermodynamic properties. + * These classes are used to compute thermodynamic properties of + * phases of matter. */ /** - * A phase with thermodynamic properties. Extends class Phase by - * adding methods that compute thermodynamic properties that - * require knowledge of the equation of state. - * + * A phase with thermodynamic properties. * Class ThermoPhase is the base class for the family of classes - * that represent phases of matter with particular equations of - * state. Instances of subclasses of ThermoPhase should be created - * using the factory class ThermoFactory, not by calling the - * constructor directly. + * that represent phases of matter of any type. It defines a + * common public interface, and implements a few methods. Most of + * the methods, however, are declared virtual and are meant to be + * overloaded in derived classes. The standard way used + * throughout Cantera to compute properties of phases of matter is + * through pointers of type ThermoPhase* that point to objects of + * subclasses of ThermoPhase. + * + * Class ThermoPhase + * extends class Phase by adding methods to compute thermodynamic + * properties in addition to the ones (temperature, density, + * composition) that class Phase provides. The distinction is that + * the methods declared in ThermoPhase require knowing the + * particular equation of state of the phase of interest, while + * those of class Phase do not, since they only involve data values + * stored within the object. + * + * Instances of subclasses of ThermoPhase should be created using + * the factory class ThermoFactory, not by calling the constructor + * directly. This allows new classes to be used with the various + * Cantera language interfaces. * * To implement a new equation of state, derive a class from * ThermoPhase and overload the virtual methods in @@ -52,12 +68,15 @@ namespace Cantera { class ThermoPhase : public Phase { public: - - /// Constructor. + + /// Constructor. Note that ThermoPhase is meant to be used as + /// a base class, so this constructor should not be called + /// explicitly. ThermoPhase() : Phase(), m_spthermo(0), m_speciesData(0), m_index(-1), m_phi(0.0) {} - + + /// Destructor. Deletes the species thermo manager. virtual ~ThermoPhase() { delete m_spthermo; } @@ -65,7 +84,7 @@ namespace Cantera { /** * - * @name Utilities + * @name Information Methods * @{ */ @@ -78,6 +97,39 @@ namespace Cantera { virtual int eosType() const { return 0; } + /** + * Returns the reference pressure in Pa. This function is a wrapper + * that calls the species thermo refPressure function. + */ + doublereal refPressure() const { + return m_spthermo->refPressure(); + } + + /** + * Minimum temperature for which the thermodynamic data for + * the species are valid. If no argument is supplied, the + * value returned will be the lowest temperature at which the + * data for \e all species are valid. Otherwise, the value + * will be only for species \a k. This function is a wrapper + * that calls the species thermo minTemp function. + */ + doublereal minTemp(int k = -1) { + return m_spthermo->minTemp(k); + } + + /** + * Maximum temperature for which the thermodynamic data for + * the species are valid. If no argument is supplied, the + * value returned will be the highest temperature at which the + * data for \e all species are valid. Otherwise, the value + * will be only for species \a k. This function is a wrapper + * that calls the species thermo maxTemp function. + */ + doublereal maxTemp(int k = -1) { + return m_spthermo->maxTemp(k); + } + + /** * @} * @name Molar Thermodynamic Properties @@ -89,36 +141,31 @@ namespace Cantera { return err("enthalpy_mole"); } - /// Molar internal energy. Units: J/kmol. virtual doublereal intEnergy_mole() const { return err("intEnergy_mole"); } - /// Molar entropy. Units: J/kmol/K. virtual doublereal entropy_mole() const { return err("entropy_mole"); } - /// Molar Gibbs function. Units: J/kmol. virtual doublereal gibbs_mole() const { return err("gibbs_mole"); } - /// Molar heat capacity at constant pressure. Units: J/kmol/K. virtual doublereal cp_mole() const { return err("cp_mole"); } - /// Molar heat capacity at constant volume. Units: J/kmol/K. virtual doublereal cv_mole() const { return err("cv_mole"); } - + /** * @} @@ -127,9 +174,12 @@ namespace Cantera { */ /** - * Pressure. Units: Pa. - * Returns the thermodynamic pressure -> must be reimplemented - * in inherited classes. + * Pressure. Return the thermodynamic pressure (Pa). This + * method must be overloaded in derived classes. Since the + * mass density, temperature, and mass fractions are stored, + * this method should use these values to implement the + * mechanical equation of state \f$ P(T, \rho, Y_1, \dots, + * Y_K) \f$. */ virtual doublereal pressure() const { return err("pressure"); @@ -137,46 +187,77 @@ namespace Cantera { /** - * Set the pressure. Units: Pa. - * Sets the thermodynamic pressure -> must be reimplemented - * in inherited classes. + * Set the pressure (Pa). This method must be reimplemented + * in derived classes. */ virtual void setPressure(doublereal p) { err("setPressure"); } - virtual void updateDensity() {} + + /** + * The isothermal compressibility. Units: 1/Pa. + * The isothermal compressibility is defined as + * \f[ + * \kappa_T = -\frac{1}{v}\left(\frac{\partial v}{\partial P}\right)_T + * \f] + * This method may optionally be defined in derived classes. + */ + virtual doublereal isothermalCompressibility() const { + err("isothermalCompressibility"); return -1.0; + } + + + /** + * The volumetric thermal expansion coefficient. Units: 1/K. + * The thermal expansion coefficient is defined as + * + * \f[ + * \beta = \frac{1}{v}\left(\frac{\partial v}{\partial T}\right)_P + * \f] + */ + virtual doublereal thermalExpansionCoeff() const { + err("thermalExpansionCoeff()"); return -1.0; + } + + /// @deprecated + virtual void updateDensity() { + deprecatedMethod("ThermoPhase","updateDensity",""); + } /** * @} - * @name Potential Energy + * @name Electric Potential * - * Species may have an additional potential energy due to the - * presence of external gravitation or electric fields. These - * methods allow specifying a potential energy for individual - * species. - * @{ + * The phase may be at some non-zero electrical + * potential. These methods set or get the value of the + * electric potential. + //@{ */ - /** - * Set the potential energy of species k to pe. - * Units: J/kmol. - * This function must be reimplemented in inherited classes - * of ThermoPhase. - */ - virtual void setPotentialEnergy(int k, doublereal pe) { - err("setPotentialEnergy"); - } +// /** +// * Set the potential energy of species k to pe. +// * Units: J/kmol. +// * This function must be reimplemented in inherited classes +// * of ThermoPhase. +// @deprecated +// */ +// virtual void setPotentialEnergy(int k, doublereal pe) { +// deprecatedMethod("ThermoPhase","setPotentialEnergy","none"); +// err("setPotentialEnergy"); +// } - /** - * Get the potential energy of species k. - * Units: J/kmol. - * This function must be reimplemented in inherited classes - * of ThermoPhase. - */ - virtual doublereal potentialEnergy(int k) const { - return err("potentialEnergy"); - } +// /** +// * Get the potential energy of species k. +// * Units: J/kmol. +// * This function must be reimplemented in inherited classes +// * of ThermoPhase. +// * @deprecated +// */ +// virtual doublereal potentialEnergy(int k) const { +// deprecatedMethod("ThermoPhase","potentialEnergy","none"); +// return err("potentialEnergy"); +// } /** * Set the electric potential of this phase (V). @@ -191,29 +272,32 @@ namespace Cantera { /// The electric potential of this phase (V). doublereal electricPotential() const { return m_phi; } - /** * @} * @name Chemical Potentials and Activities * - * The activity \f$a_k\f$ of a species in solution is - * related to the chemical potential by \f[ \mu_k = \mu_k^0(T) - * + \hat R T \log a_k. \f] The quantity \f$\mu_k^0(T)\f$ is - * the chemical potential at unit activity, which depends only - * on temperature. - * @{ + * The activity \f$a_k\f$ of a species in solution is related + * to the chemical potential by \f[ \mu_k = \mu_k^0(T,P) + + * \hat R T \log a_k. \f] The quantity \f$\mu_k^0(T,P)\f$ is + * the chemical potential at unit activity, which depends on + * temperature and pressure, but not on composition. The + * activity is dimensionless. + * @{ */ + /** * This method returns an array of generalized concentrations - * \f$ C_k\f$ that are defined such that - * \f$ a_k = C_k / C^0_k, \f$ where \f$ C^0_k \f$ - * is a standard concentration + * \f$ C_k\f$ that are defined such that \f$ a_k = C_k / + * C^0_k, \f$ where \f$ C^0_k \f$ is a standard concentration * defined below. These generalized concentrations are used * by kinetics manager classes to compute the forward and - * reverse rates of elementary reactions. + * reverse rates of elementary reactions. Note that they may + * or may not have units of concentration --- they might be + * partial pressures, mole fractions, or surface coverages, + * for example. * - * @param c Array of generalized concentrations. The + * @param c Output array of generalized concentrations. The * units depend upon the implementation of the * reaction rate expressions within the phase. */ @@ -221,11 +305,12 @@ namespace Cantera { err("getActivityConcentrations"); } + /** * The standard concentration \f$ C^0_k \f$ used to normalize * the generalized concentration. In many cases, this quantity * will be the same for all species in a phase - for example, - * for an ideal gas \f$ C^0_k = P^0/\hat R T \f$. For this + * for an ideal gas \f$ C^0_k = P/\hat R T \f$. For this * reason, this method returns a single value, instead of an * array. However, for phases in which the standard * concentration is species-specific (e.g. surface species of @@ -238,16 +323,19 @@ namespace Cantera { } /** - * Returns the natural logarithm of the standard - * concentration of the kth species + * Natural logarithm of the standard + * concentration of the kth species. */ virtual doublereal logStandardConc(int k=0) const { err("logStandardConc"); return -1.0; } - /** Get the array of chemical potentials at unit activity - * \f$ \mu^0_k \f$. + /** + * Get the array of chemical potentials at unit activity These + * are the standard state chemical potentials \f$ \mu^0_k(T,P) + * \f$.. The values are evaluated at the current + * temperature and pressure. */ virtual void getStandardChemPotentials(doublereal* mu) const { err("getStandardChemPotentials"); @@ -255,7 +343,7 @@ namespace Cantera { /** * Returns the units of the standard and generalized - * concentrations Note they have the same units, as their + * concentrations. Note they have the same units, as their * ratio is defined to be equal to the activity of the kth * species in the solution, which is unitless. * @@ -274,25 +362,36 @@ namespace Cantera { virtual void getUnitsStandardConc(double *uA, int k = 0, int sizeUA = 6); - /** - * Get the array of non-dimensional chemical potentials + + //@} + /// @name Partial Molar Properties of the Solution + //@{ + + /** + * Get the array of non-dimensional species chemical potentials + * These are partial molar Gibbs free energies. * \f$ \mu_k / \hat R T \f$. + * Units: unitless */ virtual void getChemPotentials_RT(doublereal* mu) const { err("getChemPotentials_RT"); } - - /** - * Get the species chemical potentials. Units: J/kmol. + + /** + * Get the species chemical potentials in the solution + * These are partial molar Gibbs free energies. + * Units: J/kmol. */ virtual void getChemPotentials(doublereal* mu) const { - err("getChemPotentials_RT"); + err("getChemPotentials"); } /** - * Get the species electrochemical potentials. Units: J/kmol. - * This method adds a term \f$ Fz_k \phi_k \f$ to the - * to each chemical potential. + * Get the species electrochemical potentials. These are + * partial molar quantities. This method adds a term \f$ Fz_k + * \phi_k \f$ to each chemical potential. + * + * Units: J/kmol */ void getElectrochemPotentials(doublereal* mu) const { getChemPotentials(mu); @@ -302,9 +401,21 @@ namespace Cantera { } } - //@} - /// @name Partial Molar Properties - //@{ + void getActivities(doublereal* a); + + /** + * Get the array of non-dimensional activity coefficients at + * the current solution temperature, pressure, and + * solution concentration. + */ + virtual void getActivityCoefficients(doublereal* ac) const { + if (m_kk == 1) { + ac[0] = 1.0; + } else { + err("getActivityCoefficients"); + } + } + /** * Get the species partial molar enthalpies. Units: J/kmol. @@ -313,7 +424,6 @@ namespace Cantera { err("getPartialMolarEnthalpies"); } - /** * Get the species partial molar entropies. Units: J/kmol. */ @@ -321,59 +431,123 @@ namespace Cantera { err("getPartialMolarEntropies"); } - /** * Get the species partial molar volumes. Units: m^3/kmol. */ virtual void getPartialMolarVolumes(doublereal* vbar) const { err("getPartialMolarVolumes"); } + //@} + /// @name Properties of the Standard State of the Species in the Solution + //@{ /** - * Get the nondimensional Enthalpy functions for the species - * at their standard states at the current T and P. + * Get the nondimensional Enthalpy functions for the species + * at their standard states at the current + * T and P of the solution. */ virtual void getEnthalpy_RT(doublereal* hrt) const { err("getEnthalpy_RT"); } - /** - * Get the nondimensional Entropies for the species - * at their standard states at the current T and P. + * Get the array of nondimensional Enthalpy functions for the + * standard state species + * at the current T and P of the solution. */ virtual void getEntropy_R(doublereal* sr) const { err("getEntropy_R"); } - /** * Get the nondimensional Gibbs functions for the species - * at their standard states at the current T and P. + * at their standard states of solution at the current T and P + * of the solution. */ virtual void getGibbs_RT(doublereal* grt) const { err("getGibbs_RT"); } - /** - * Get the nondimensional Gibbs functions for the pure species - * at the current T and P. + * Get the nondimensional Gibbs functions for the standard + * state of the species at the current T and P. */ virtual void getPureGibbs(doublereal* gpure) const { err("getPureGibbs"); } - /** - * Get the nondimensional Gibbs functions for the pure species - * at the current T and P. @deprecated + * Get the nondimensional Heat Capacities at constant + * pressure for the standard state of the species + * at the current T and P. */ virtual void getCp_R(doublereal* cpr) const { err("getCp_RT"); } + /** + * Get the molar volumes of each species in their standard + * states at the current + * T and P of the solution. + * units = m^3 / kmol + */ + virtual void getStandardVolumes(doublereal *vol) const { + err("getStandardVolumes"); + } + + + //@} + /// @name Thermodynamic Values for the Species Reference States + //@{ + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getEnthalpy_RT_ref(doublereal *hrt) const { + err("enthalpy_RT_ref"); + } + + /** + * Returns the vector of nondimensional + * enthalpies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getGibbs_RT_ref(doublereal *grt) const { + err("gibbs_RT_ref"); + } + + /** + * Returns the vector of the + * gibbs function of the reference state at the current temperature + * of the solution and the reference pressure for the species. + * units = J/kmol + */ + virtual void getGibbs_ref(doublereal *g) const { + err("gibbs_ref"); + } + + /** + * Returns the vector of nondimensional + * entropies of the reference state at the current temperature + * of the solution and the reference pressure for the species. + */ + virtual void getEntropy_R_ref(doublereal *er) const { + err("entropy_R_ref"); + } + + /** + * Returns the vector of nondimensional + * constant pressure heat capacities of the reference state + * at the current temperature of the solution + * and reference pressure for the species. + */ + virtual void getCp_R_ref(doublereal *cprt) const { + err("cp_R_ref()"); + } + /////////////////////////////////////////////////////// // @@ -407,7 +581,7 @@ namespace Cantera { doublereal entropy_mass() const { //cout << "entropy_mass. " << endl; //cout << "entropy_mole = " << entropy_mole() << endl; - //cout << "meanMolecularWeight = " << meanMolecularWeight() << endl; + //cout << "meanMolecularWeight = " << meanMolecularWeight()<< endl; return entropy_mole()/meanMolecularWeight(); } @@ -520,33 +694,13 @@ namespace Cantera { } //@} - - void getActivities(doublereal* a); - - - /** - * @internal - * Set equation of state parameters. The number and meaning of - * these depends on the subclass. - * @param n number of parameters - * @param c array of \i n coefficients - */ - virtual void setParameters(int n, doublereal* c) {} - virtual void getParameters(int &n, doublereal * const c) {} - virtual void setParametersFromXML(const XML_Node& eosdata) {} - virtual void setStateFromXML(const XML_Node& state); - - virtual doublereal isothermalCompressibility() { - err("isothermalCompressibility"); return -1.0; - } - - virtual doublereal thermalExpansionCoeff() { - err("thermalExpansionCoeff()"); return -1.0; - } + //--------------------------------------------------------- + /// @name Critical state properties. - /// These methods are only implemented by some subclasses. + /// These methods are only implemented by some subclasses, and may + /// be moved out of ThermoPhase at a later date. //@{ @@ -569,7 +723,8 @@ namespace Cantera { /// @name Saturation properties. /// These methods are only implemented by subclasses that - /// implement full liquid-vapor equations of state. + /// implement full liquid-vapor equations of state. They may be + /// moved out of ThermoPhase at a later date. /// virtual doublereal satTemperature(doublereal p) const { err("satTemperature"); return -1.0; @@ -594,36 +749,25 @@ namespace Cantera { //@} - /** - * Returns the reference pressure in Pa. This function is a wrapper - * that calls the species thermo refPressure function. - */ - doublereal refPressure() const { - return m_spthermo->refPressure(); - } - - doublereal minTemp(int k = -1) { - return m_spthermo->minTemp(k); - } - - doublereal maxTemp(int k = -1) { - return m_spthermo->maxTemp(k); - } - + /// @name For Internal Use /// The following methods are used in the process of constructing /// the phase and setting its parameters from a specification in an /// input file. They are not normally used in application programs. /// To see how they are used, see files importCTML.cpp and /// ThermoFactory.cpp. + //@{ - - /// used to access data needed to construct transport manager - /// later. + /// Store a reference to the XML tree containing the species + /// data for this phase. This is used to access data needed to + /// construct transport manager later. + /// @internal void saveSpeciesData(const XML_Node* data) { m_speciesData = data; } + /// Return a pointer to the XML tree containing the species + /// data for this phase. const XML_Node* speciesData() { if (m_speciesData) return m_speciesData; @@ -641,13 +785,14 @@ namespace Cantera { * computes properties of the pure species for use in * constructing solution properties. It is meant for internal * use, and some classes derived from ThermoPhase may not use - * any species thermodynamic property manager. + * any species thermodynamic property manager. This method is + * called by function importPhase in importCTML.cpp. */ void setSpeciesThermo(SpeciesThermo* spthermo) { m_spthermo = spthermo; } /** - * Return a reference to the species thermodynamic property + * @internal Return a reference to the species thermodynamic property * manager. @todo This method will fail if no species thermo * manager has been installed. */ @@ -694,6 +839,33 @@ namespace Cantera { void setIndex(int m) { m_index = m; } + /** + * @internal + * Set equation of state parameters. The number and meaning of + * these depends on the subclass. + * @param n number of parameters + * @param c array of \a n coefficients + * + */ + virtual void setParameters(int n, doublereal* c) {} + virtual void getParameters(int &n, doublereal * const c) {} + + /** + * Set equation of state parameter values from XML + * entries. This method is called by function importPhase in + * file importCTML.cpp when processing a phase definition in + * an input file. It should be overloaded in subclasses to set + * any parameters that are specific to that particular phase + * model. + * + * @param eosdata An XML_Node object corresponding to + * the "thermo" entry for this phase in the input file. + */ + virtual void setParametersFromXML(const XML_Node& eosdata) {} + virtual void setStateFromXML(const XML_Node& state); + + + //@} protected: diff --git a/Cantera/src/config.h b/Cantera/src/config.h index 3adbbe92d..db96ab2c9 100755 --- a/Cantera/src/config.h +++ b/Cantera/src/config.h @@ -1,90 +1,20 @@ +#ifndef SRC_CONFIG_H +#define SRC_CONFIG_H +#ifdef _WIN32 +#undef WIN32 +#define WIN32 +#endif +#ifdef WIN32 +#ifdef CANTERA_APP +#include "../winconfig.h" +#else +#include "../../winconfig.h" +#endif +#else +#ifdef CANTERA_APP +#include "../config.h" +#else #include "../../config.h" - - - -// /* ../config.h. Generated by configure. */ -// // -// // Run the 'configure' script to generate 'config.h' from this input file. -// // -// #ifndef CT_CONFIG_H -// #define CT_CONFIG_H - - -// //------------------------ Development flags ------------------// -// // -// // These flags turn on or off features that are still in -// // development and are not yet stable. - -// #undef DEV_EQUIL - - -// //------------------------ Fortran settings -------------------// - - -// // define types doublereal, integer, and ftnlen to match the -// // corresponding Fortran data types on your system. The defaults -// // are OK for most systems - -// typedef double doublereal; // Fortran double precision -// typedef int integer; // Fortran integer -// typedef int ftnlen; // Fortran hidden string length type - - - -// // Fortran compilers pass character strings in argument lists by -// // adding a hidden argement with the length of the string. Some -// // compilers add the hidden length argument immediately after the -// // CHARACTER variable being passed, while others put all of the hidden -// // length arguments at the end of the argument list. Define this if -// // the lengths are at the end of the argument list. This is usually the -// // case for most unix Fortran compilers, but is (by default) false for -// // Visual Fortran under Windows. -// #define STRING_LEN_AT_END - - -// // Define this if Fortran adds a trailing underscore to names in object files. -// // For linux and most unix systems, this is the case. -// #define FTN_TRAILING_UNDERSCORE - - -// //-------- LAPACK / BLAS --------- - -// // Define if you are using LAPACK and BLAS from the Intel Math Kernel -// // Library -// /* #undef HAVE_INTEL_MKL */ - -// #define LAPACK_FTN_STRING_LEN_AT_END -// #define LAPACK_NAMES_LOWERCASE -// #define LAPACK_FTN_TRAILING_UNDERSCORE - - -// //--------- operating system -------------------------------------- - -// // The configure script defines this if the operatiing system is Mac -// // OS X, This used to add some Mac-specific directories to the default -// // data file search path. -// #define DARWIN 0 -// /* #undef HAS_SSTREAM */ - -// // Identify whether the operating system is cygwin's overlay of -// // windows, with gcc being used as the compiler. -// /* #undef CYGWIN */ - -// // Identify whether the operating system is windows based, with -// // microsoft vc++ being used as the compiler -// #define WINMSVC - -// //--------- Fonts for reaction path diagrams ---------------------- -// #define RXNPATH_FONT "Helvetica" - -// //--------------------- Python ------------------------------------ -// // If this is defined, the Cantera Python interface will use the -// // Numeric package; otherwise, it will use numarray. -// /* #define HAS_NUMERIC 1 */ - -// #define INCL_PURE_FLUIDS 1 - -// //--------------------- compile options ---------------------------- -// /* #define USE_PCH 1 */ - -// #endif +#endif +#endif +#endif diff --git a/Cantera/src/converters/Makefile.in b/Cantera/src/converters/Makefile.in index b9cf58ca7..c418410fb 100644 --- a/Cantera/src/converters/Makefile.in +++ b/Cantera/src/converters/Makefile.in @@ -8,35 +8,55 @@ # ############################################################### -SUFFIXES= -SUFFIXES= .cpp .d .o +.SUFFIXES : +.SUFFIXES : .cpp .d .o .h -OBJDIR = . +INCDIR = ../../../build/include/cantera/kernel/converters +INSTALL_TSC = ../../../bin/install_tsc +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) -# Temporarily removed 'filter.o', since it was causing a compile error on Mac OS X. OBJS = atomicWeightDB.o CKParser.o CKReader.o Reaction.o ckr_utils.o \ - thermoFunctions.o writelog.o ck2ct.o + thermoFunctions.o writelog.o ck2ct.o ck2ctml.o +CONV_H = ck2ctml.h CKReader.h thermoFunctions.h \ + Element.h Reaction.h CKParser.h \ + ckr_utils.h RxnSpecies.h writelog.h \ + ck2ct.h ckr_defs.h Constituent.h \ + Species.h CXX_INCLUDES = -I. -I.. CONV_LIB = @buildlib@/libconverters.a DEPENDS = $(OBJS:.o=.d) +all: $(CONV_LIB) + @(@INSTALL@ -d $(INCDIR)) + @(for lh in $(CONV_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) + %.d: g++ -MM $(CXX_INCLUDES) $*.cpp > $*.d .cpp.o: @CXX@ -c $< $(CXX_FLAGS) $(CXX_INCLUDES) -all: $(CONV_LIB) - $(CONV_LIB): $(OBJS) @ARCHIVE@ $(CONV_LIB) $(OBJS) +ifeq ($(do_ranlib),1) + @RANLIB@ $(CONV_LIB) +endif clean: - $(RM) *.o *~ $(CONV_LIB) + @(for lh in $(CONV_H) ; do \ + th=$(INCDIR)/"$${lh}" ; \ + if test -f "$${th}" ; then \ + $(RM) "$${th}" ; \ + echo "$(RM) $${th}" ; \ + fi \ + done) + $(RM) *.o *~ $(CONV_LIB) .depends CKParser.o: CKParser.cpp @CXX@ -c CKParser.cpp $(CXX_FLAGS) $(CXX_INCLUDES) -O0 diff --git a/Cantera/src/converters/ck2ct.cpp b/Cantera/src/converters/ck2ct.cpp index af8919bc7..36384d1b6 100644 --- a/Cantera/src/converters/ck2ct.cpp +++ b/Cantera/src/converters/ck2ct.cpp @@ -12,7 +12,7 @@ #include #include -#include "../../../config.h" +#include "../config.h" #ifdef HAS_SSTREAM #include @@ -111,25 +111,25 @@ namespace pip { // add a NASA polynomial parameterization - static void addNASA( + static void addNASA(FILE* f, const vector_fp& low, const vector_fp& high, doublereal minx, doublereal midx, doublereal maxx) { - printf(" thermo = (\n"); - printf(" NASA( [%8.2f, %8.2f], ", minx, midx); - printf("[%17.9E, %17.9E, \n", low[0], low[1]); - printf(" %17.9E, %17.9E, %17.9E,\n", low[2], low[3], low[4]); - printf(" %17.9E, %17.9E] ),\n", low[5], low[6]); - printf(" NASA( [%8.2f, %8.2f], ", midx, maxx); - printf("[%17.9E, %17.9E, \n", high[0], high[1]); - printf(" %17.9E, %17.9E, %17.9E,\n", high[2], high[3], high[4]); - printf(" %17.9E, %17.9E] )\n", high[5], high[6]); - printf(" )"); + fprintf(f," thermo = (\n"); + fprintf(f," NASA( [%8.2f, %8.2f], ", minx, midx); + fprintf(f,"[%17.9E, %17.9E, \n", low[0], low[1]); + fprintf(f," %17.9E, %17.9E, %17.9E,\n", low[2], low[3], low[4]); + fprintf(f," %17.9E, %17.9E] ),\n", low[5], low[6]); + fprintf(f," NASA( [%8.2f, %8.2f], ", midx, maxx); + fprintf(f,"[%17.9E, %17.9E, \n", high[0], high[1]); + fprintf(f," %17.9E, %17.9E, %17.9E,\n", high[2], high[3], high[4]); + fprintf(f," %17.9E, %17.9E] )\n", high[5], high[6]); + fprintf(f," )"); } - static void addTransportParams(string name) { + static void addTransportParams(FILE* f, string name) { trdata td; if (_with_transport && _trmap.find(name) != _trmap.end()) { @@ -140,47 +140,47 @@ namespace pip { "no transport data for species "+name); } - printf(",\n transport = gas_transport(\n"); + fprintf(f,",\n transport = gas_transport(\n"); int geom = td.geom; switch (geom) { - case 0: printf(" geom = \"atom\",\n"); break; - case 1: printf(" geom = \"linear\",\n"); break; - case 2: printf(" geom = \"nonlinear\",\n"); break; + case 0: fprintf(f," geom = \"atom\",\n"); break; + case 1: fprintf(f," geom = \"linear\",\n"); break; + case 2: fprintf(f," geom = \"nonlinear\",\n"); break; } - printf(" diam = %8.2f,\n",td.diam); - printf(" well_depth = %8.2f",td.welldepth); + fprintf(f," diam = %8.2f,\n",td.diam); + fprintf(f," well_depth = %8.2f",td.welldepth); if (td.polar != 0.0) - printf(",\n polar = %8.2f",td.polar); + fprintf(f,",\n polar = %8.2f",td.polar); if (td.dipole != 0.0) - printf(",\n dipole = %8.2f",td.dipole); + fprintf(f,",\n dipole = %8.2f",td.dipole); if (td.rot != 0.0) - printf(",\n rot_relax = %8.2f",td.rot); - printf(")"); + fprintf(f,",\n rot_relax = %8.2f",td.rot); + fprintf(f,")"); } - static void addFalloff(string type, + static void addFalloff(FILE* f, string type, const vector_fp& params) { if (type == "Troe") { - cout << ",\n falloff = Troe(A = " - << fp2str(params[0]) << ", T3 = " - << fp2str(params[1]) << ", T1 = " - << fp2str(params[2]); + fprintf(f, (",\n falloff = Troe(A = " + + fp2str(params[0]) + ", T3 = " + + fp2str(params[1]) + ", T1 = " + + fp2str(params[2])).c_str()); if (params.size() >= 4) { - cout << ", T2 = " << fp2str(params[3]); + fprintf(f, (", T2 = " + fp2str(params[3])).c_str()); } - cout << ")"; + fprintf(f, ")"); } else if (type == "SRI") { - cout << ",\n falloff = SRI(A = " - << fp2str(params[0]) << ", B = " - << fp2str(params[1]) << ", C = " - << fp2str(params[2]); + fprintf(f, (",\n falloff = SRI(A = " + + fp2str(params[0]) + ", B = " + + fp2str(params[1]) + ", C = " + + fp2str(params[2])).c_str()); if (params.size() >= 5) { - cout << ", D = " << fp2str(params[3]) - << ", E = " << fp2str(params[4]); + fprintf(f, (", D = " + fp2str(params[3]) + + ", E = " + fp2str(params[4])).c_str()); } - cout << ")"; + fprintf(f, ")"); } } @@ -188,9 +188,9 @@ namespace pip { * addSpecies(): * */ - static void addSpecies(string idtag, const ckr::Species& sp) { + static void addSpecies(FILE* f, string idtag, const ckr::Species& sp) { string spname = sp.name; - printf("\nspecies(name = \"%s\",\n",spname.c_str()); + fprintf(f,"\nspecies(name = \"%s\",\n",spname.c_str()); int nel = static_cast(sp.elements.size()); int m, num; string nm, str=""; @@ -220,54 +220,58 @@ namespace pip { if (nm == "E") charge = -sp.elements[m].number; } - printf(" atoms = \"%s\",\n", str.c_str()); - addNASA(sp.lowCoeffs, sp.highCoeffs, + fprintf(f," atoms = \"%s\",\n", str.c_str()); + addNASA(f, sp.lowCoeffs, sp.highCoeffs, sp.tlow, sp.tmid, sp.thigh); if (_with_transport) - addTransportParams(sp.name); - if (sp.id != "") printf(",\n note = \"%s\"", sp.id.c_str()); - printf("\n )\n"); + addTransportParams(f, sp.name); + if (sp.id != "") fprintf(f,",\n note = \"%s\"", sp.id.c_str()); + fprintf(f,"\n )\n"); } - static void addReaction(string idtag, int i, + static void addReaction(FILE* f, string idtag, int i, const ckr::Reaction& rxn, const ckr::ReactionUnits& runits, doublereal version) { - cout << "\n# Reaction " << i+1 << endl; + fprintf(f, ("\n# Reaction " + int2str(i+1) + "\n").c_str()); int nc = static_cast(rxn.comment.size()); + vector options; + for (int nn = 0; nn < nc; nn++) - if (rxn.comment[nn] != "") cout << "# " << rxn.comment[nn] << endl; + if (rxn.comment[nn] != "") fprintf(f, "# %s \n", + rxn.comment[nn].c_str()); + string eqn = ckr::reactionEquation(rxn); if (rxn.isThreeBodyRxn) - cout << "three_body_reaction( \"" << eqn << "\", "; + fprintf(f, "three_body_reaction( \"%s\",", eqn.c_str()); else if (rxn.isFalloffRxn) - cout << "falloff_reaction( \"" << eqn << "\", "; + fprintf(f, "falloff_reaction( \"%s\",", eqn.c_str()); else - cout << "reaction( \"" << eqn << "\", "; + fprintf(f, "reaction( \"%s\",", eqn.c_str()); if (rxn.isFalloffRxn) { if (rxn.kf.type == ckr::Arrhenius) { - printf("\n kf = [%10.5E, %g, %g]", rxn.kf.A, rxn.kf.n, rxn.kf.E); + fprintf(f,"\n kf = [%10.5E, %g, %g]", rxn.kf.A, rxn.kf.n, rxn.kf.E); } if (rxn.kf_aux.type == ckr::Arrhenius) { - printf(",\n kf0 = [%10.5E, %g, %g]", rxn.kf_aux.A, rxn.kf_aux.n, rxn.kf_aux.E); + fprintf(f,",\n kf0 = [%10.5E, %g, %g]", rxn.kf_aux.A, rxn.kf_aux.n, rxn.kf_aux.E); } if (rxn.falloffType == ckr::Lindemann) - addFalloff("Lindemann",rxn.falloffParameters); + addFalloff(f, "Lindemann",rxn.falloffParameters); else if (rxn.falloffType == ckr::Troe) - addFalloff("Troe",rxn.falloffParameters); + addFalloff(f, "Troe",rxn.falloffParameters); else if (rxn.falloffType == ckr::SRI) - addFalloff("SRI",rxn.falloffParameters); + addFalloff(f, "SRI",rxn.falloffParameters); else throw CanteraError("addReaction","unknown falloff type"); } else { if (rxn.kf.type == ckr::Arrhenius) { - printf(" [%10.5E, %g, %g]", rxn.kf.A, rxn.kf.n, rxn.kf.E); + fprintf(f," [%10.5E, %g, %g]", rxn.kf.A, rxn.kf.n, rxn.kf.E); } } @@ -284,34 +288,48 @@ namespace pip { for (; b != e; ++b) { estr += " "+b->first+":"+fp2str(b->second)+" "; } - cout << ",\n efficiencies = \"" << estr << "\""; + fprintf(f, ",\n efficiencies = \"%s\"", estr.c_str()); } } - if (rxn.isDuplicate) { - cout << ",\n options = \'duplicate\'"; + if (rxn.kf.A <= 0.0) { + options.push_back("negative_A"); } - cout << ")" << endl; + if (rxn.isDuplicate) { + options.push_back("duplicate"); + } + int nopt = options.size(); + if (nopt > 0) { + fprintf(f, ",\n options = ["); + int n; + for (n = 0; n < nopt; n++) { + fprintf(f, "\"%s\"", options[n].c_str()); + if (n < nopt-1) fprintf(f, ", "); + } + fprintf(f, "]"); + } + fprintf(f, ")\n"); } - void writeline() { - cout << "#-------------------------------------------------------------------------------" << endl; + void writeline(FILE* f) { + fprintf(f, "#-------------------------------------------------------------------------------\n"); } /*! - * This routine is the main routine. It + * This routine is the main routine. * - * @param r reference to a ckreader object that has already read a chemkin formatted - * mechanism. This is the input to the routine. + * @param r reference to a ckreader object that has already + * read a chemkin formatted mechanism. This is the input to the routine. + * * @param root Reference to the root node of an XML description of the * mechanism. The node will be filled up with the description * of the mechanism. This is the output to the routine. */ - void ck2ct(string idtag, ckr::CKReader& r, bool hastransport) { + void ck2ct(FILE* f, string idtag, ckr::CKReader& r, bool hastransport) { popError(); doublereal version = 1.0; - cout << "units(length = \"cm\", time = \"s\", quantity = \"mol\", "; + fprintf(f, "units(length = \"cm\", time = \"s\", quantity = \"mol\", "); string e_unit; int eunit = r.units.ActEnergy; if (eunit == ckr::Cal_per_Mole) @@ -326,10 +344,10 @@ namespace pip { e_unit = "K"; else if (eunit == ckr::Electron_Volts) e_unit = "eV"; - cout << "act_energy = " << "\"" << e_unit << "\")\n\n"; + fprintf(f, "act_energy = \"%s\")\n\n", e_unit.c_str()); - printf("\nideal_gas(name = \"%s\",\n",idtag.c_str()); + fprintf(f,"\nideal_gas(name = \"%s\",\n",idtag.c_str()); string enames; int nel = static_cast(r.elements.size()); @@ -342,9 +360,8 @@ namespace pip { if (elnm.size() == 2) elnm[1] = tolower(elnm[1]); emap[r.elements[i].name] = elnm; enames += " "+elnm+" "; - //addElement(earray, idtag, r.elements[i]); } - printf(" elements = \"%s\",\n",enames.c_str()); + fprintf(f," elements = \"%s\",\n",enames.c_str()); string spnames = ""; int nsp = static_cast(r.species.size()); @@ -352,28 +369,28 @@ namespace pip { spnames += " "+r.species[i].name+" "; if ((i+1) % 10 == 0) spnames += "\n "; } - printf(" species = \"\"\"%s\"\"\",\n", spnames.c_str()); - printf(" reactions = \"all\",\n"); + fprintf(f," species = \"\"\"%s\"\"\",\n", spnames.c_str()); + fprintf(f," reactions = \"all\",\n"); if (hastransport) { - printf(" transport = \"Mix\",\n"); + fprintf(f," transport = \"Mix\",\n"); } - printf(" initial_state = state(temperature = 300.0,\n"); - printf(" pressure = OneAtm)"); - cout << " )" << endl; + fprintf(f," initial_state = state(temperature = 300.0,\n"); + fprintf(f," pressure = OneAtm)"); + fprintf(f, " )\n"); - cout << "\n\n\n"; - writeline(); - cout << "# Species data \n"; - writeline(); + fprintf(f, "\n\n\n"); + writeline(f); + fprintf(f, "# Species data \n"); + writeline(f); for (i = 0; i < nsp; i++) { - addSpecies(idtag, r.species[i]); + addSpecies(f, idtag, r.species[i]); } - cout << "\n\n\n"; - writeline(); - cout << "# Reaction data \n"; - writeline(); + fprintf(f, "\n\n\n"); + writeline(f); + fprintf(f, "# Reaction data \n"); + writeline(f); int nrxns = static_cast(r.reactions.size()); @@ -388,12 +405,12 @@ namespace pip { // two irreversible reactions. if (r.reactions[i].krev.A != 0.0) { - cout << endl << "# [CK Reaction (+" << i+1 << ")]" << endl; - addReaction(idktag, irxn, + fprintf(f, "\n# [CK Reaction (+%d)]\n",i+1); + addReaction(f, idktag, irxn, ckr::forwardReaction(r.reactions[i]), r.units, version); irxn++; - cout << "# [CK Reaction (-" << (i+1) << ")]" << endl; - addReaction(idktag, irxn, + fprintf(f, "# [CK Reaction (-%d)]\n",i+1); + addReaction(f, idktag, irxn, ckr::reverseReaction(r.reactions[i]), r.units, version); irxn++; } @@ -402,23 +419,51 @@ namespace pip { // not be reversible. else { if (i != irxn) - cout << endl << "# [CK Reaction (" << (i+1) << ")]" << endl; - addReaction(idktag, irxn, r.reactions[i], + fprintf(f, "\n# [CK Reaction (%s)]\n",i+1); + addReaction(f, idktag, irxn, r.reactions[i], r.units, version); irxn++; } } -// incl.addAttribute("min",1); -// incl.addAttribute("max", irxn); } + static int fixtext(string infile, string outfile) { + ifstream fin(infile.c_str()); + ofstream fout(outfile.c_str()); + if (!fout) { + throw CanteraError("fixtext","could not open "+outfile+" for writing."); + } + char ch; + char last_eol = ' '; + const char char10 = char(10); + const char char13 = char(13); + string line; + while (1 > 0) { + line = ""; + while (1 > 0) { + fin.get(ch); + if (fin.eof()) break; + if (ch == char13 || (ch == char10 + && (last_eol != char13))) { + last_eol = ch; + break; + } + if (isprint(ch)) line += ch; + } + fout << line << endl; + if (fin.eof()) break; + } + fin.close(); + fout.close(); + return 0; + } int convert_ck(const char* in_file, const char* db_file, - const char* tr_file, const char* id_tag, bool debug) { + const char* tr_file, const char* id_tag, bool debug, bool validate) { ckr::CKReader r; - r.validate = true; + r.validate = validate; r.debug = debug; //int i=1; @@ -431,6 +476,18 @@ namespace pip { if (dbfile == "-") dbfile = ""; if (trfile == "-") trfile = ""; + string::size_type idot = infile.rfind('.'); + string ctifile, ext; + if (idot != string::npos) { + ext = infile.substr(idot, infile.size()); + ctifile = infile.substr(0,idot)+".cti"; + } + else { + ctifile = infile+".cti"; + } + + FILE *f = fopen(ctifile.c_str(),"w"); + struct tm *newtime; time_t aclock; ::time( &aclock ); /* Get time in seconds */ @@ -438,6 +495,20 @@ namespace pip { try { + //string tmpinfile = tmpDir()+ + //fixtext(infile, tmpinfile); + + //string tmpdbfile = ""; + //string tmptrfile = ""; + //if (dbfile != "") { + // tmpdbfile = tmpDir()+"/.tmp_"+dbfile; + // fixtext(dbfile, tmpdbfile); + //} + //if (trfile != "") { + // tmptrfile = tmpDir()+"/.tmp_"+trfile; + // fixtext(trfile, tmptrfile); + //} + logfile = "ck2cti.log"; if (!r.read(infile, dbfile, logfile)) { throw CanteraError("convert_ck", @@ -445,19 +516,22 @@ namespace pip { + "\nsee file ck2cti.log for more information.\n"); } - cout << "#" << endl; - cout << "# Generated from file " - << infile << "\n# by ck2cti on " << asctime(newtime) << "#" << endl; + fprintf(f, "#\n"); + fprintf(f, "# Generated from file %s\n# by ck2cti on %s#\n", + infile.c_str(), asctime(newtime)); if (trfile != "") { - cout << "# Transport data from file "+trfile+".\n" << endl; + fprintf(f, "# Transport data from file %s.\n\n", + trfile.c_str()); getTransportData(trfile); } bool hastransport = (trfile != ""); - ck2ct(idtag, r, hastransport); + ck2ct(f, idtag, r, hastransport); } catch (CanteraError) { + fclose(f); return -1; } + fclose(f); return 0; } } diff --git a/Cantera/src/converters/ck2ct.h b/Cantera/src/converters/ck2ct.h index 67df67aa5..10343bc00 100644 --- a/Cantera/src/converters/ck2ct.h +++ b/Cantera/src/converters/ck2ct.h @@ -16,7 +16,7 @@ namespace pip { void ck2ct(string idtag, ckr::CKReader& r); int convert_ck(const char* in_file, const char* db_file, - const char* tr_file, const char* id_tag, bool debug); + const char* tr_file, const char* id_tag, bool debug, bool validate); } diff --git a/Cantera/src/ct2ctml.cpp b/Cantera/src/ct2ctml.cpp index 18e527933..e5f791d6c 100644 --- a/Cantera/src/ct2ctml.cpp +++ b/Cantera/src/ct2ctml.cpp @@ -6,7 +6,7 @@ * $Date$ */ -// Copyright 2001 California Institute of Technology +// Copyright 2001-2005 California Institute of Technology // turn off warnings under Windows #ifdef WIN32 @@ -29,8 +29,7 @@ using namespace Cantera; namespace ctml { // return the full path to the Python interpreter. Use - // environment variable PYTHON_CMD if it is set, otherwise use the - // definition PYTHON_EXE if it is defined. Failing that, return + // environment variable PYTHON_CMD if it is set. If not, return // the string 'python'. static string pypath() { string s = "python"; @@ -39,65 +38,9 @@ namespace ctml { string sp = stripws(string(py)); if (sp.size() > 0) s = sp; } - //#ifdef PYTHON_EXE - //else { - //string se = stripws(string(PYTHON_EXE)); - // if (se.size() > 0) s = se; - //} - //#endif return s; } -#ifdef INCL_CHECKPYTHON - static bool checkPython() { - time_t aclock; - time( &aclock ); - int ia = static_cast(aclock); - string path = tmpDir() + "/.check"+int2str(ia)+".pyw"; - ofstream f(path.c_str()); - if (!f) { - throw CanteraError("checkPython","cannot open "+path+" for writing"); - } - f << "import ctml_writer\n"; - f.close(); - int ierr = 0; -#ifdef WIN32 - string cmd = "cmd /C "+pypath() + " " + path + ">> log 2>&1"; -#else - string cmd = pypath() + " " + path + " &> " + tmpDir() + "/log"; -#endif - try { - ierr = system(cmd.c_str()); - if (ierr != 0) { - string msg; - msg = cmd +"\n\n########################################################################\n\n" - "The Cantera Python interface is required in order to process\n" - "Cantera input files, but it does not seem to be correctly installed.\n\n" - "Check that you can invoke the Python interpreter with \n" - "the command \"python\", and that typing \"from Cantera import *\" \n" - "at the Python prompt does not produce an error. If Python on your system\n" - "is invoked with some other command, set environment variable PYTHON_CMD\n" - "to the full path to the Python interpreter. \n\n" - "#########################################################################\n\n"; - writelog(msg); - return false; - } - } - catch (...) { - return false; - } -#ifdef WIN32 - cmd = "cmd /C rm " + path; -#else - cmd = "rm -f " + path; - try { - system(cmd.c_str()); - } - catch (...) { ; } -#endif - return true; - } -#endif void ct2ctml(const char* file) { @@ -136,21 +79,18 @@ namespace ctml { } /* - * HKM -> This next section may seem a bit weird. However, - * it is in response to an issue that arises when - * running cantera with cygwin, using cygwin's - * python intepreter. Basically, the xml file is - * written to the local directory by the last - * system command. Then, the xml file is read - * immediately after by an ifstream() c++ - * command. Unfortunately, it seems that the - * directory info is not being synched fast enough - * so that the ifstream() read fails, even - * though the file is actually there. Putting in a - * sleep system call here fixes this problem. Also, - * having the xml file pre-existing fixes the - * problem as well. There may be more direct ways - * to fix this bug; however, I am not aware of them. + * This next section may seem a bit weird. However, it is in + * response to an issue that arises when running cantera with + * cygwin, using cygwin's python intepreter. Basically, the + * xml file is written to the local directory by the last + * system command. Then, the xml file is read immediately + * after by an ifstream() c++ command. Unfortunately, it seems + * that the directory info is not being synched fast enough so + * that the ifstream() read fails, even though the file is + * actually there. Putting in a sleep system call here fixes + * this problem. Also, having the xml file pre-existing fixes + * the problem as well. There may be more direct ways to fix + * this bug; however, I am not aware of them. */ #ifdef CYGWIN #ifdef DEBUG_PATHS @@ -165,6 +105,7 @@ namespace ctml { } #endif + // show the contents of the log file on the screen try { char ch=0; string s = ""; @@ -186,15 +127,13 @@ namespace ctml { } if (ierr != 0) { string msg = cmd; - //bool pyok = checkPython(); - //if (!pyok) - // msg += "\nError in Python installation."; - //else - // msg += "\nCheck error messages above for syntax errors."; throw CanteraError("ct2ctml", - "could not convert input file to CTML\n " - "command line was: " + msg); + "could not convert input file to CTML.\n " + "Command line was: \n" + msg); } + + // if the conversion succeeded and DEBUG_PATHS is not defined, + // then clean up by deleting the temporary Python file. #ifndef DEBUG_PATHS #ifdef WIN32 cmd = "cmd /C rm " + path; diff --git a/Cantera/src/ct_defs.h b/Cantera/src/ct_defs.h index d3a81f336..ee46d6e89 100755 --- a/Cantera/src/ct_defs.h +++ b/Cantera/src/ct_defs.h @@ -47,7 +47,7 @@ using namespace ct; */ namespace Cantera { -#define CANTERA_VERSION 1.5 +#define CANTERA_VERSION 1.6 // use kg-moles, rather than g-moles. diff --git a/Cantera/src/ctexceptions.h b/Cantera/src/ctexceptions.h index 7f688472d..f1205136e 100755 --- a/Cantera/src/ctexceptions.h +++ b/Cantera/src/ctexceptions.h @@ -2,25 +2,21 @@ * @file ctexceptions.h */ -// $Author$ -// $Revision$ -// $Date$ - // Copyright 2001 California Institute of Technology #ifndef CT_CTEXCEPTIONS_H #define CT_CTEXCEPTIONS_H -//#include "global.h" -//#include "stringUtils.h" - #include using namespace std; +// See file misc.cpp for implementations of methods/functions declared +// here. + namespace Cantera { /** - * Base class for exceptions thrown by Cantera classes + * Base class for exceptions thrown by Cantera classes. */ class CanteraError { public: @@ -30,16 +26,19 @@ namespace Cantera { protected: }; + /// Array size error. class ArraySizeError : public CanteraError { public: ArraySizeError(string proc, int sz, int reqd); }; + /// Exception thrown if an element index is out of range. class ElementRangeError : public CanteraError { public: ElementRangeError(string func, int m, int mmax); }; + void deprecatedMethod(string classnm, string oldnm, string newnm); } diff --git a/Cantera/src/ctml.cpp b/Cantera/src/ctml.cpp index 1e20b088f..283037843 100755 --- a/Cantera/src/ctml.cpp +++ b/Cantera/src/ctml.cpp @@ -381,7 +381,7 @@ namespace ctml { +v[i]+")"); } key.push_back(v[i].substr(0,icolon)); - val.push_back(v[i].substr(icolon+1, v.size())); + val.push_back(v[i].substr(icolon+1, v[i].size())); } } diff --git a/Cantera/src/ctvector.cpp b/Cantera/src/ctvector.cpp index 101d73b54..6738eec70 100755 --- a/Cantera/src/ctvector.cpp +++ b/Cantera/src/ctvector.cpp @@ -1,6 +1,8 @@ /** * @file ctvector.cpp * + * $Id$ + * * Simple vector classes. Classes ctvector_fp and ctvector_int are * designed to be wrappers around double* and int* arrays, * respectively. They provide a few convenient methods that function diff --git a/Cantera/src/global.h b/Cantera/src/global.h index f09efe636..3f787648d 100755 --- a/Cantera/src/global.h +++ b/Cantera/src/global.h @@ -1,9 +1,10 @@ /** * @file global.h * - * These functions handle various utility functions, and store some parameters in + * These functions handle various utility functions, and store + * some parameters in * global storage that are accessible at all times. -8 + * */ /* $Author$ @@ -36,14 +37,15 @@ namespace Cantera { /// Print the error messages to stream f void showErrors(ostream& f); + /// Print the error messages using function writelog. void showErrors(); /// Discard the last error message void popError(); + /// Find an input file. string findInputFile(string name); - /// Add a directory to the search path void addDirectory(string dir); void appdelete(); @@ -51,59 +53,48 @@ namespace Cantera { /// The root directory where Cantera is installed string canteraRoot(); - /// Set the temporary file directory. Default: /tmp. + /// Set the temporary file directory. The default is to use the + /// directory specified by enviroment variable TMP or TEMP. If neither + /// of these are defined, then the current working directory will be + /// used for temporary files. Call this function to specify some other + /// place to put temporary files. void setTmpDir(string tmp); /// The directory where temporary files may be created string tmpDir(); + /// Delay time in seconds. string sleep(); - /** - * Write a diagnostic message to standard output. - * - * There are several versions of function writelog, each designed - * for a particular environment. One version is designed for use - * in C++ programs, or in any environment where messages can be - * written to the standard output stream. Other versions are - * written specifically for Matlab and for Python, which call - * Matlab or Python functions, respectively, to display the - * message. This is particularly important for Matlab, since - * everything written to the standard output simply - * disappears. For Python, the messages show up, but are not in - * the right order if Python scripts also print output. Hence the - * need for separate versions. - * - * The C++ version may be linked to an application by linking in - * the library libctcxx.a (-lctcxx). The Python and Matlab - * interfaces do not link this library, and instead link to their - * own versions of writelog. - */ - void writelog(const string& msg); + void writelog(const char* msg); - /// write an error message and quit. Like writelog, this is - /// specific to each environment. The C++ version calls exit(), - /// the Python version throws a Python exception, and the Matlab - /// version calls Matlab function error(). void error(const string& msg); - /// returns 1 for MATLAB, 2 for Python, and 0 for C++ or Fortran. + // returns 1 for MATLAB, 2 for Python, and 0 for C++ or Fortran. int userInterface(); void setLogger(Logger* logwriter); - /** - * Return the conversion factor to convert unit string 'unit' to - * SI units. - */ + /// Return the conversion factor to convert unit string 'unit' to + /// SI units. doublereal toSI(string unit); - doublereal actEnergyToSI(string unit); - // + /// Return the conversion factor to convert activation energy unit + /// string 'unit' to Kelvin. + doublereal actEnergyToSI(string unit); + + /// Return a pointer to the XML tree for a Cantera input file. XML_Node* get_XML_File(string file); + + /// Close a Cantera input file. void close_XML_File(string file); + + void beginLogGroup(string title, int loglevel=1); + void addLogEntry(string tag, string value, int loglevel=1); + void endLogGroup(int loglevel=1); + void write_logfile(string file = "log.html"); } #endif diff --git a/Cantera/src/importCTML.cpp b/Cantera/src/importCTML.cpp index 4aa5bd2b9..4af00a8d6 100755 --- a/Cantera/src/importCTML.cpp +++ b/Cantera/src/importCTML.cpp @@ -265,7 +265,8 @@ namespace Cantera { for (index = 0; index < np; index++) { kp = rdata.products[index]; n = kin.speciesPhaseIndex(kp); - klocal = kp - kin.start(n); + //klocal = kp - kin.start(n); + klocal = kp - kin.kineticsSpeciesIndex(0,n); kstoich = rdata.pstoich[index]; const ThermoPhase& ph = kin.speciesPhase(kp); nel = ph.nElements(); @@ -278,7 +279,8 @@ namespace Cantera { for (index = 0; index < nr; index++) { kr = rdata.reactants[index]; n = kin.speciesPhaseIndex(kr); - klocal = kr - kin.start(n); + //klocal = kr - kin.start(n); + klocal = kr - kin.kineticsSpeciesIndex(0,n); kstoich = rdata.rstoich[index]; const ThermoPhase& ph = kin.speciesPhase(kr); nel = ph.nElements(); @@ -338,7 +340,7 @@ namespace Cantera { */ static bool getReagents(const XML_Node& rxn, kinetics_t& kin, int rp, string default_phase, - vector_int& spnum, vector_int& stoich, vector_fp& order, + vector_int& spnum, vector_fp& stoich, vector_fp& order, int rule) { string rptype; @@ -366,8 +368,8 @@ namespace Cantera { /* * Loop over each of the pairs and process them */ - int stch, isp; - doublereal ord; + int isp; + doublereal ord, stch; string ph, sp; map speciesMap; for (int n = 0; n < ns; n++) { @@ -397,7 +399,7 @@ namespace Cantera { * specified species. */ spnum.push_back(isp); - stch = atoi(val[n].c_str()); + stch = atof(val[n].c_str()); stoich.push_back(stch); ord = doublereal(stch); order.push_back(ord); diff --git a/Cantera/src/logger.h b/Cantera/src/logger.h index 0cbdd3aae..0b292c268 100644 --- a/Cantera/src/logger.h +++ b/Cantera/src/logger.h @@ -1,3 +1,7 @@ +/// @file logger.h +/// Class Logger +/// + #ifndef CT_LOGGER_H #define CT_LOGGER_H @@ -6,21 +10,57 @@ using namespace std; namespace Cantera { + /// + /// Base class for 'loggers' that write text messages to log files. + /// + /// This class is used to direct log messages to application- or + /// environment-specific output. The default is to simply print + /// the messages to the standard output stream or standard error + /// stream, but classes may be derived from Logger that implement + /// other output options. This is important when Cantera is used + /// in applications that do not display the standard output, such + /// as MATLAB. The Cantera MATLAB interface derives a class from + /// Logger that implements these methods with MATLAB-specific + /// procedures, insuring that the messages will be passed through + /// to the user. It would also be possible to derive a class that + /// displayed the messages in a pop-up window, or redirected them + /// to a file, etc. + /// + /// To install a logger, call function setLogger (global.h / misc.cpp). + /// + /// See the files Cantera/python/src/pylogger.h and + /// Cantera/matlab/cantera/private/mllogger.h for examples of + /// deriving logger classes. + /// @ingroup textlogs + /// class Logger { public: Logger() {} virtual ~Logger() {} + /// Write a log message. The default behavior is to write to + /// the standard output. Note that no end-of-line character is + /// appended to the message, and so if one is desired it must + /// be included in the string. virtual void write(const string& msg) { cout << msg; } + /// Write an error message and quit. The default behavior is + /// to write to the standard eror stream, and then call + /// exit(). Note that no end-of-line character is appended to + /// the message, and so if one is desired it must be included + /// in the string. Note that this default behavior will + /// terminate the application Cantera is invoked from (MATLAB, + /// Excel, etc.) If this is not desired, then derive a class + /// and reimplement this method. virtual void error(const string& msg) { cerr << msg << endl; exit(-1); } + /// Return an integer specifying the application environment. virtual int env() { return 0; } }; diff --git a/Cantera/src/misc.cpp b/Cantera/src/misc.cpp index 3544d2284..e255511c1 100755 --- a/Cantera/src/misc.cpp +++ b/Cantera/src/misc.cpp @@ -1,11 +1,7 @@ /** * @file misc.cpp - */ - -/* - * $Author$ - * $Revision$ - * $Date$ + * + * */ #ifdef WIN32 @@ -24,9 +20,7 @@ #include "FalloffFactory.h" #include "logger.h" -//#ifndef WIN32 -//#include "ctdir.h" -//#endif +#undef DEBUG_PATHS #include using namespace std; @@ -44,24 +38,31 @@ namespace Cantera { class Application { public: Application() : linelen(0), stop_on_error(false), - //#ifdef WIN32 tmp_dir("."), sleep("1") - //#else - //tmp_dir(".") - //#endif { + // if TMP or TEMP is set, use it for the temporary + // directory char* tmpdir = getenv("TMP"); if (tmpdir == 0) tmpdir = getenv("TEMP"); if (tmpdir != 0) tmp_dir = string(tmpdir); + + // if SLEEP is set, use it as the sleep time char* sleepstr = getenv("SLEEP"); if (sleepstr != 0) { sleep = string(sleepstr); } + + // install a default logwriter that writes to standard + // output / standard error logwriter = new Logger(); + xmllog = 0; + current = 0; } + /// Delete any open XML trees, the logwriter, and + /// the XML log, if any. virtual ~Application() { map::iterator pos; for (pos = xmlfiles.begin(); pos != xmlfiles.end(); ++pos) { @@ -69,8 +70,13 @@ namespace Cantera { delete pos->second; pos->second = 0; } + delete logwriter; + if (xmllog) { + delete xmllog; + } } - vector inputDirs; + + vector inputDirs; vector errorMessage; vector warning; vector errorRoutine; @@ -82,16 +88,19 @@ namespace Cantera { map xmlfiles; string sleep; Logger* logwriter; + XML_Node *xmllog, *current; }; - /// Returns a pointer to the one and only instance of Application + /// Return a pointer to the one and only instance of class Application Application* app(); void setDefaultDirectories(); + /// Pointer to the single Application instance static Application* __app = 0; + Unit* Unit::__u = 0; static void appinit() { @@ -99,9 +108,8 @@ namespace Cantera { } /** - * This function deletes the global information. It should be called - * at the end of the application, especially if leak checking is - * to be done. + * Delete all global data. It should be called at the end of the + * application if leak checking is to be done. */ void appdelete() { if (__app) { @@ -318,9 +326,37 @@ namespace Cantera { __app->errorRoutine.push_back(r); } - + /// @defgroup inputfiles Input File Handling + /// The properties of phases and interfaces are specified in + /// text files. These procedures handle various aspects of reading + /// these files. + /** - * Set the default directories for input data files. + * Set the default directories for input files. Cantera searches + * for input files along a path that includes platform-specific + * default locations, and possibly user-specified locations. This + * function installs the platform-specific directories on the + * search path. It is invoked at startup by appinit(), and never + * should need to be called by user programs. + * + * The current directory (".") is always searched first. Then, on + * Windows platforms, if environment variable COMMONPROGRAMFILES + * is set (which it should be on Win XP or Win 2000), then + * directories under this one will be added to the search + * path. The Cantera Windows installer installs data files to this + * location. + * + * On the Mac, directory '/Applications/Cantera/data' is added to the + * search path. + * + * On any platform, if environment variable CANTERA_DATA is set to a + * directory name, then this directory is added to the search path. + * + * Finally, the location where the data files were installed when + * Cantera was built is added to the search path. + * + * Additional directories may be added by calling function addDirectory. + * @ingroup inputfiles */ void setDefaultDirectories() { appinit(); @@ -384,7 +420,8 @@ namespace Cantera { - + /// Add a directory to the input file search path. + /// @ingroup inputfiles void addDirectory(string dir) { appinit(); if (__app->inputDirs.size() == 0) setDefaultDirectories(); @@ -398,9 +435,7 @@ namespace Cantera { __app->inputDirs.push_back(stripnonprint(dir)); } - /** - * findInputFile(): - * + /*! * This routine will search for a file in the default * locations specified for the application. * See the routine setDefaultDirectories() listed above. @@ -413,8 +448,8 @@ namespace Cantera { * The presence of the file is determined by whether the file * can be opened for reading by the current user. * - * Return - * ------- + * \return + * * The absolute path name of the first matching * file is returned. If a relative path name * is indicated, the relative path name is returned. @@ -464,26 +499,6 @@ namespace Cantera { } } - void writelog(const string& msg) { - app()->logwriter->write(msg); - } - - void error(const string& msg) { - app()->logwriter->error(msg); - } - - int userInterface() { - return app()->logwriter->env(); - } - - void setLogger(Logger* logwriter) { - appinit(); - delete __app->logwriter; - __app->logwriter = logwriter; - } - - void writelog(const char* msg) {writelog(string(msg));} - doublereal toSI(string unit) { doublereal f = Unit::units()->toSI(unit); if (f) return f; @@ -511,7 +526,7 @@ namespace Cantera { } - /// exceptions + // exceptions CanteraError::CanteraError(string proc, string msg) { setError(proc, msg); @@ -524,6 +539,197 @@ namespace Cantera { ElementRangeError::ElementRangeError(string func, int m, int mmax) : CanteraError(func, "Element index " + int2str(m) + " outside valid range of 0 to " + int2str(mmax-1)) {} + + + + /////////////////////////////////////////////////////////// + // + // Warnings + // + ////////////////////////////////////////////////////////// + + /// Print a warning when a deprecated method is called. + /// @param classnm Class the method belongs to + /// @param oldnm Name of the deprecated method + /// @param newnm Name of the method users should use instead + void deprecatedMethod(string classnm, string oldnm, string newnm) { + writelog(">>>> WARNING: method "+oldnm+" of class "+classnm + +" is deprecated.\n"); + writelog(" Use method "+newnm+" instead.\n"); + writelog(" (If you want to rescue this method from deprecated\n"); + writelog(" status, see http://www.cantera.org/deprecated.html)"); + } + + + /// @defgroup logs Diagnostic Output + /// + /// Writing diagnostic information to the screen or to a file. + /// It is often useful to be able to write diagnostic messages to + /// the screen or to a file. Cantera provides two sets of + /// procedures for this purpose. The first set is designed to + /// write text messages to the screen to document the progress of + /// a complex calculation, such as a flame simulation.The second + /// set writes nested lists in HTML format. This is useful to + /// print debugging output for a complex calculation that calls + /// many different procedures. + + + /// @defgroup textlogs Writing messages to the screen + /// @ingroup logs + + /// Write a message to the screen. The string may be of any + /// length, and may contain end-of-line characters. This method is + /// used throughout Cantera to write log messages. It can also be + /// called by user programs. The advantage of using writelog over + /// writing directly to the standard output is that messages + /// written with writelog will display correctly even when Cantera + /// is used from MATLAB or other application that do not have a + /// standard output stream. @ingroup textlogs + void writelog(const string& msg) { + app()->logwriter->write(msg); + } + + /// test + /// @ingroup textlogs + void writelog(const char* msg) {writelog(string(msg));} + + /// Write an error message and terminate execution. test. + /// @ingroup textlogs + void error(const string& msg) { + app()->logwriter->error(msg); + } + + /// test + /// @ingroup textlogs + int userInterface() { + return app()->logwriter->env(); + } + + /// Install a logger. Called by the language interfaces to install an + /// appropriate logger. + /// @see Logger. + /// @ingroup textlogs + void setLogger(Logger* logwriter) { + appinit(); + delete __app->logwriter; + __app->logwriter = logwriter; + } + + + + ///////////////////////////////////////////////////////////////// + /// + /// @defgroup HTML_logs Writing HTML Logfiles + /// @ingroup logs + /// + /// These functions are designed to allow writing HTML diagnostic + /// messages in a manner that allows users to control how much + /// diagnostic output to print. It works like this: Suppose you + /// have function A that invokes function B that invokes function + /// C. You want to be able to print diagnostic messages just from + /// function A, or from A and B, or from A, B, and C, or to turn + /// off printing diagnostic messages altogether. All you need to + /// do is to pass into each function the parameter loglevel, and + /// when calling other functions decrement the value of + /// logvalue. Since the procedures that print HTML log output only + /// do so if loglevel > 0, the initial value of loglevel controls + /// how deeply nested the log messages will be. For an example of + /// how to do this, see files MultiPhase.cpp and + /// MultiPhaseEquil.cpp. + /// + ////////////////////////////////////////////////////////////////// + + + /// Create a new group for log messages. Usually this is called + /// upon entering the function, with the title parameter equal to + /// the name of the function or method. Subsequent messages + /// written with addLogEntry will appear grouped under this + /// heading, until endLogGroup() is called. + /// @ingroup HTML_logs + void beginLogGroup(string title, int loglevel) { + if (loglevel <= 0) return; + appinit(); + if (__app->xmllog == 0) { + __app->xmllog = new XML_Node("html"); + __app->current = &__app->xmllog->addChild("ul"); + } + __app->current = &__app->current->addChild("li",title); + __app->current = &__app->current->addChild("ul"); + } + + /// Add an entry to the log file. Entries appear in the form "tag: + /// value". + /// @ingroup HTML_logs + void addLogEntry(string tag, string value, int loglevel) { + if (loglevel <= 0) return; + __app->current->addChild("li",tag+": "+value); + } + + /// Close the current group of log messages. This is typically + /// called just before leaving a function or method, to close the + /// group of messages that were output from this + /// function. Subsequent messages written with addLogEntry will + /// appear at the next-higher level in the outline, unless + /// beginLogGroup is called first to create a new group. + /// @ingroup HTML_logs + void endLogGroup(int loglevel) { + if (loglevel <= 0) return; + __app->current = __app->current->parent(); + __app->current = __app->current->parent(); + } + + + /// Write the HTML log file. Log entries are stored in memory in + /// an XML tree until this function is called, which writes the + /// tree to a file and clears the entries stored in memory. The + /// output file will have the name specified in the 'file' + /// argument. If this argument has no extension, the extension + /// '.html' will be appended. Also, if the file already exists, an + /// integer will be appended to the name so that no existing log + /// file will be overwritten. will be appended to the name. + /// @ingroup HTML_logs + void write_logfile(string file) { + string::size_type idot = file.rfind('.'); + string ext = ""; + string nm = file; + if (idot != string::npos) { + ext = file.substr(idot, file.size()); + nm = file.substr(0,idot); + } + else { + ext = ".html"; + nm = file; + } + + // see if file exists. If it does, find an integer that + // can be appended to the name to create the name of a file + // that does not exist. + string fname = nm + ext; + ifstream f(fname.c_str()); + if (f) { + int n = 0; + while (1 > 0) { + n++; + fname = nm + int2str(n) + ext; + ifstream f(fname.c_str()); + if (!f) break; + } + } + + // Now we have a file name that does not correspond to any + // existing file. Open it as an output stream, and dump the + // XML (HTML) tree to it. + if (__app->xmllog) { + ofstream f(fname.c_str()); + // go to the top of the tree, and write it all. + __app->xmllog->root().write(f); + f.close(); + writelog("Log file " + fname + " written.\n"); + delete __app->xmllog; + __app->xmllog = 0; + __app->current = 0; + } + } + /// } - diff --git a/Cantera/src/mix_defs.h b/Cantera/src/mix_defs.h index 7dfa9b77e..4d762223d 100755 --- a/Cantera/src/mix_defs.h +++ b/Cantera/src/mix_defs.h @@ -13,18 +13,19 @@ namespace Cantera { // species thermo types const int cNASA = 1; const int cShomate = 2; + const int cNASA96 = 3; /** * Equation of state types: * - * These types are used in the member function eosType() - * of the virtual base class ThermoPhase. They are used to - * distinguish different types of equation of states. And, - * they may be used for upcasting from the ThermoPhase class. - * Their id's should be distinct. + * These types are used in the member function eosType() of + * the virtual base class ThermoPhase. They are used to + * distinguish different types of equation of states. Also, they + * may be used for upcasting from the ThermoPhase class. Their + * id's should be distinct. * * Users who wish to define their own equation of states which - * inherit from ThermoPhase should define a unique id which + * derive from ThermoPhase should define a unique id which * doesn't conflict with those listed below. The Cantera Kernel * however, will not be know about the class and will therefore * not be able to initialize the class within its "factory" @@ -32,14 +33,20 @@ namespace Cantera { */ const int cIdealGas = 1; // IdealGasPhase in IdealGasPhase.h const int cIncompressible = 2; // ConstDensityThermo in ConstDensityThermo.h - const int cSurf = 3; // SurfPhase in SurfPhase.h + /// A surface phase. Used by class SurfPhase. + const int cSurf = 3; + + /// A metal phase. const int cMetal = 4; // MetalPhase in MetalPhase.h // const int cSolidCompound = 5; // SolidCompound in SolidCompound.h const int cStoichSubstance = 5; // StoichSubstance.h - + + const int cLatticeSolid = 20; // LatticeSolidPhase.h + // pure fluids with liquid/vapor eqs of state const int cPureFluid = 10; - + + /// An edge between two 2D surfaces const int cEdge = 6; // kinetic manager types diff --git a/Cantera/src/oneD/Domain1D.h b/Cantera/src/oneD/Domain1D.h index 5953cc241..5e5d9b8a5 100644 --- a/Cantera/src/oneD/Domain1D.h +++ b/Cantera/src/oneD/Domain1D.h @@ -450,15 +450,13 @@ namespace Cantera { * not need to be overloaded. */ virtual void _finalize(const doublereal* x) {} - //throw CanteraError("Domain1D::_finalize", - // "base class method _finalize called!"); - //} - //added by Karl Meredith - doublereal m_zfixed; - doublereal m_tfixed; + //added by Karl Meredith + doublereal m_zfixed; + doublereal m_tfixed; + + bool m_adiabatic; - bool m_adiabatic; protected: doublereal m_rdt; diff --git a/Cantera/src/oneD/Inlet1D.h b/Cantera/src/oneD/Inlet1D.h index c8dbffdbd..fbe80ac28 100644 --- a/Cantera/src/oneD/Inlet1D.h +++ b/Cantera/src/oneD/Inlet1D.h @@ -126,21 +126,21 @@ namespace Cantera { return m_V0; } - virtual void showSolution(ostream& s, const doublereal* x) { - s << "------------------- Inlet " << domainIndex() << " ------------------- " << endl; - s << " mdot: " << m_mdot << " kg/m^2/s" << " " << x[0] << endl; - s << " temperature: " << m_temp << " K" << " " << x[1] << endl; - if (m_flow) { - s << " mass fractions: " << endl; - for (int k = 0; k < m_flow->phase().nSpecies(); k++) { - if (m_yin[k] != 0.0) { - s << " " << m_flow->phase().speciesName(k) - << " " << m_yin[k] << endl; - } - } - } - s << endl; - } +// virtual void showSolution(ostream& s, const doublereal* x) { +// s << "------------------- Inlet " << domainIndex() << " ------------------- " << endl; +// s << " mdot: " << m_mdot << " kg/m^2/s" << " " << x[0] << endl; +// s << " temperature: " << m_temp << " K" << " " << x[1] << endl; +// if (m_flow) { +// s << " mass fractions: " << endl; +// for (int k = 0; k < m_flow->phase().nSpecies(); k++) { +// if (m_yin[k] != 0.0) { +// s << " " << m_flow->phase().speciesName(k) +// << " " << m_yin[k] << endl; +// } +// } +// } +// s << endl; +// } virtual void showSolution(const doublereal* x) { char buf[80]; @@ -166,10 +166,7 @@ namespace Cantera { x[1] = m_temp; } - virtual void _finalize(const doublereal* x) { - ;//m_mdot = x[0]; - //m_temp = x[1]; - } + virtual void _finalize(const doublereal* x) {} virtual void setMoleFractions(string xin); virtual void setMoleFractions(doublereal* xin); @@ -454,54 +451,4 @@ namespace Cantera { } -// // }; - - - -// // ///////////////////////////////////////////////////////////// -// // // -// // // surf1D -// // // -// // //////////////////////////////////////////////////////////// -// // #ifdef WITH_CHEMSURF - -// // class ChemSurf1D : public Bdry1D { - -// // public: - -// // ChemSurf1D(InterfaceKinetics* skin = 0) { -// // m_type = cSurfType; -// // m_kin = 0; -// // m_sphase = 0; -// // m_nsp = 0; -// // if (skin) setKinetics(skin); -// // } -// // virtual ~ChemSurf1D(){} - -// // void setKinetics(InterfaceKinetics* kin); - -// // virtual string componentName(int n) const; -// // virtual void init(); - -// // virtual void eval(int jg, doublereal* xg, doublereal* rg, -// // integer* diagg, doublereal rdt); - -// // virtual void save(XML_Node& o, doublereal* soln); - -// // protected: - -// // int m_ilr, m_nsp; -// InterfaceKinetics* m_kin; -// SurfPhase* m_sphase; -// vector_fp m_work; -// const doublereal *m_molwt_right, *m_molwt_left; -// int m_start_surf; -// vector m_bulk; -// vector m_nbulk; -// int m_nsurf; -// vector_fp m_mult; -// vector m_do_surf_species; -// vector_fp m_fixed_cov; -// }; - #endif diff --git a/Cantera/src/oneD/Makefile.in b/Cantera/src/oneD/Makefile.in index a6a4159f5..93a9f4ebd 100644 --- a/Cantera/src/oneD/Makefile.in +++ b/Cantera/src/oneD/Makefile.in @@ -8,37 +8,53 @@ # ############################################################### -SUFFIXES= -SUFFIXES= .cpp .d .o - -OBJDIR = . +.SUFFIXES : +.SUFFIXES : .cpp .d .o +INCDIR = ../../../build/include/cantera/kernel/oneD +INSTALL_TSC = ../../../bin/install_tsc +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) +CXX_INCLUDES = -I.. # stirred reactors -OBJS = MultiJac.o MultiNewton.o newton_utils.o OneDim.o StFlow.o boundaries1D.o refine.o Sim1D.o +OBJS = MultiJac.o MultiNewton.o newton_utils.o OneDim.o\ + StFlow.o boundaries1D.o refine.o Sim1D.o +ONED_H = Inlet1D.h MultiJac.h Sim1D.h StFlow.h \ + Surf1D.h Domain1D.h MultiNewton.h OneDim.h \ + Resid1D.h Solid1D.h refine.h -CXX_INCLUDES = -I.. ONED_LIB = @buildlib@/liboneD.a DEPENDS = $(OBJS:.o=.d) %.d: - g++ -MM $(CXX_INCLUDES) $*.cpp > $*.d + g++ -MM @CXXFLAGS@ $(CXX_INCLUDES) $*.cpp > $*.d .cpp.o: @CXX@ -c $< @DEFS@ $(CXX_FLAGS) $(CXX_INCLUDES) -.f.o: - @F77@ -c $< $(F77_FLAGS) - all: $(ONED_LIB) + @(@INSTALL@ -d $(INCDIR)) + @(for lh in $(ONED_H) ; do \ + $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ + done) $(ONED_LIB): $(OBJS) @ARCHIVE@ $(ONED_LIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(ONED_LIB) +endif -clean: - $(RM) *.o *~ $(ONED_LIB) +clean: + @(for lh in $(ONED_H) ; do \ + th=$(INCDIR)/"$${lh}" ; \ + if test -f "$${th}" ; then \ + $(RM) "$${th}" ; \ + echo "$(RM) $${th}" ; \ + fi \ + done) + $(RM) *.o *~ $(ONED_LIB) .depends depends: $(DEPENDS) cat *.d > .depends diff --git a/Cantera/src/oneD/OneDim.cpp b/Cantera/src/oneD/OneDim.cpp index e1aab26ff..835154f38 100644 --- a/Cantera/src/oneD/OneDim.cpp +++ b/Cantera/src/oneD/OneDim.cpp @@ -237,16 +237,18 @@ namespace Cantera { fill(r, r + m_size, 0.0); fill(m_mask.begin(), m_mask.end(), 0); if (rdt < 0.0) rdt = m_rdt; - + int nn; vector::iterator d; // iterate over the bulk domains first - for (d = m_bulk.begin(); d != m_bulk.end(); ++d) + for (d = m_bulk.begin(); d != m_bulk.end(); ++d) { (*d)->eval(j, x, r, m_mask.begin(), rdt); + } // then over the connector domains - for (d = m_connect.begin(); d != m_connect.end(); ++d) + for (d = m_connect.begin(); d != m_connect.end(); ++d) { (*d)->eval(j, x, r, m_mask.begin(), rdt); + } // increment counter and time if (count) { diff --git a/Cantera/src/oneD/StFlow.cpp b/Cantera/src/oneD/StFlow.cpp index 919cd7eb0..d1803027c 100644 --- a/Cantera/src/oneD/StFlow.cpp +++ b/Cantera/src/oneD/StFlow.cpp @@ -92,21 +92,11 @@ namespace Cantera { } - //---------------------- drawline ---------------------------------- - - //static void drawline(ostream& s) { - // s << "\n-------------------------------------" - // << "------------------------------------------"; - //} - static void drawline() { writelog("\n-------------------------------------" "------------------------------------------"); } - - //--------------------- linear interp ------------------------------ - StFlow::StFlow(igthermo_t* ph, int nsp, int points) : Domain1D(nsp+4, points), m_inlet_u(0.0), @@ -126,8 +116,6 @@ namespace Cantera { { m_type = cFlowType; - //m_boundary.resize(2,0); - m_points = points; m_thermo = ph; @@ -242,15 +230,6 @@ namespace Cantera { } -/* void StFlow::init() { - - - cout << m_do_energy.begin()<< endl; - // this->_getInitialSoln(); - cout << "Initializing StFlow\n"; - } - -*/ void StFlow::setupGrid(int n, const doublereal* z) { resize(n); int j; @@ -468,6 +447,8 @@ namespace Cantera { rsd[index(0,j)] = rho_u(x,j); rsd[index(1,j)] = V(x,j); rsd[index(2,j)] = T(x,j); + rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1); + diag[index(c_offset_L, j)] = 0; doublereal sum = 0.0; for (k = 0; k < m_nsp; k++) { sum += Y(x,k,j); @@ -498,35 +479,12 @@ namespace Cantera { // //------------------------------------------------ - //added by Karl Meredith - if(!m_adiabatic){ - rsd[index(c_offset_U,j)] = - -(rho_u(x,j+1) - rho_u(x,j))/m_dz[j] - -(density(j+1)*V(x,j+1) + density(j)*V(x,j)); - } - else{ - //we want mdot to propagate outward from fixed T point. - if(grid(j)>m_zfixed){ - rsd[index(c_offset_U,j)] = - -(rho_u(x,j) - rho_u(x,j-1))/m_dz[j-1] - -(density(j+1)*V(x,j+1) + density(j)*V(x,j)); - //algebraic constraint - diag[index(c_offset_U, j)] = 0; - } - else if(grid(j)==m_zfixed){ - rsd[index(c_offset_U,j)] = 0.001*(T(x,j)-m_tfixed); - //algebraic constraint - diag[index(c_offset_U, j)] = 0; - } - else if(grid(j)enthalpy_RT(); - const vector_fp& cp_R = m_thermo->cp_R(); + const vector_fp& h_RT = m_thermo->enthalpy_RT_ref(); + const vector_fp& cp_R = m_thermo->cp_R_ref(); + sum = 0.0; sum2 = 0.0; doublereal flxk; @@ -599,25 +556,14 @@ namespace Cantera { rsd[index(c_offset_T, j)] -= rdt*(T(x,j) - T_prev(j)); diag[index(c_offset_T, j)] = 1; } - } - // residual equations if the energy or species equations - // are disabled + // residual equations if the energy equation is disabled - for (k = 0; k < m_nsp; k++) { - if (!m_do_species[k]) { - rsd[index(c_offset_Y+k,j)] = Y(x,k,j) - Y_fixed(k,j); - diag[index(c_offset_Y+k, j)] = 0; + if (!m_do_energy[j]) { + rsd[index(c_offset_T, j)] = T(x,j) - T_fixed(j); + diag[index(c_offset_T, j)] = 0; } - } - if (!m_do_energy[j]) { - rsd[index(c_offset_T, j)] = T(x,j) - T_fixed(j); - diag[index(c_offset_T, j)] = 0; - } - - // Propagate lambda from left to right - if (j > 0) { rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1); diag[index(c_offset_L, j)] = 0; } @@ -630,13 +576,13 @@ namespace Cantera { * Update the transport properties at grid points in the range * from j0 to j1, based on solution x. */ - void AxiStagnFlow::updateTransport(doublereal* x,int j0, int j1) { + void StFlow::updateTransport(doublereal* x,int j0, int j1) { int j,k,m; if (m_transport_option == c_Mixav_Transport) { for (j = j0; j < j1; j++) { setGasAtMidpoint(x,j); - m_visc[j] = m_trans->viscosity(); + m_visc[j] = (m_dovisc ? m_trans->viscosity() : 0.0); m_trans->getMixDiffCoeffs(m_diff.begin() + j*m_nsp); m_tcon[j] = m_trans->thermalConductivity(); } @@ -649,7 +595,7 @@ namespace Cantera { dz = m_z[m+1] - m_z[m]; wtm = m_thermo->meanMolecularWeight(); - m_visc[m] = m_trans->viscosity(); + m_visc[m] = (m_dovisc ? m_trans->viscosity() : 0.0); m_trans->getMultiDiffCoeffs(m_nsp, m_multidiff.begin() + mindex(0,0,m)); @@ -676,6 +622,259 @@ namespace Cantera { } + //------------------------------------------------------ + + /** + * Evaluate the residual function for axisymmetric stagnation + * flow. If jpt is less than zero, the residual function is + * evaluated at all grid points. If jpt >= 0, then the residual + * function is only evaluated at grid points jpt-1, jpt, and + * jpt+1. This option is used to efficiently evaluate the + * Jacobian numerically. + * + */ + + void FreeFlame::eval(int jg, doublereal* xg, + doublereal* rg, integer* diagg, doublereal rdt) { + + // if evaluating a Jacobian, and the global point is outside + // the domain of influence for this domain, then skip + // evaluating the residual + if (jg >=0 && (jg < firstPoint() - 1 || jg > lastPoint() + 1)) return; + + // if evaluating a Jacobian, compute the steady-state residual + if (jg >= 0) rdt = 0.0; + + // start of local part of global arrays + doublereal* x = xg + loc(); + doublereal* rsd = rg + loc(); + integer* diag = diagg + loc(); + + int jmin, jmax, jpt; + jpt = jg - firstPoint(); + + if (jg < 0) { // evaluate all points + jmin = 0; + jmax = m_points - 1; + } + else { // evaluate points for Jacobian + jmin = max(jpt-1, 0); + jmax = min(jpt+1,m_points-1); + } + + // properties are computed for grid points from j0 to j1 + int j0 = max(jmin-1,0); + int j1 = min(jmax+1,m_points-1); + + + int j, k; + + + //----------------------------------------------------- + // update properties + //----------------------------------------------------- + + // update thermodynamic properties only if a Jacobian is not + // being evaluated + if (jpt < 0) { + updateThermo(x, j0, j1); + updateTransport(x, j0, j1); + } + + // update the species diffusive mass fluxes whether or not a + // Jacobian is being evaluated + updateDiffFluxes(x, j0, j1); + + + //---------------------------------------------------- + // evaluate the residual equations at all required + // grid points + //---------------------------------------------------- + + doublereal sum, sum2, dtdzj; + + for (j = jmin; j <= jmax; j++) { + + + //---------------------------------------------- + // left boundary + //---------------------------------------------- + + if (j == 0) { + + // these may be modified by a boundary object + + // Continuity. This propagates information right-to-left, + // since rho_u at point 0 is dependent on rho_u at point 1, + // but not on mdot from the inlet. + rsd[index(c_offset_U,0)] = + -(rho_u(x,1) - rho_u(x,0))/m_dz[0] + -(density(1)*V(x,1) + density(0)*V(x,0)); + + // the inlet (or other) object connected to this one + // will modify these equations by subtracting its values + // for V, T, and mdot. As a result, these residual equations + // will force the solution variables to the values for + // the boundary object + rsd[index(c_offset_V,0)] = V(x,0); + rsd[index(c_offset_T,0)] = T(x,0); + rsd[index(c_offset_L,0)] = -rho_u(x,0); + + // The default boundary condition for species is zero + // flux + sum = 0.0; + for (k = 0; k < m_nsp; k++) { + sum += Y(x,k,0); + rsd[index(c_offset_Y + k, 0)] = + -(m_flux(k,0) + rho_u(x,0)* Y(x,k,0)); + } + rsd[index(c_offset_Y, 0)] = 1.0 - sum; + } + + + //---------------------------------------------- + // + // right boundary + // + //---------------------------------------------- + + else if (j == m_points - 1) { + + // the boundary object connected to the right of this + // one may modify or replace these equations. The + // default boundary conditions are zero u, V, and T, + // and zero diffusive flux for all species. + + // zero gradient + rsd[index(0,j)] = rho_u(x,j) - rho_u(x,j-1); + rsd[index(1,j)] = V(x,j); + rsd[index(2,j)] = T(x,j) - T(x,j-1); + doublereal sum = 0.0; + rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1); + diag[index(c_offset_L, j)] = 0; + for (k = 0; k < m_nsp; k++) { + sum += Y(x,k,j); + rsd[index(k+4,j)] = m_flux(k,j-1) + rho_u(x,j)*Y(x,k,j); + } + rsd[index(4,j)] = 1.0 - sum; + diag[index(4,j)] = 0; + } + + //------------------------------------------ + // interior points + //------------------------------------------ + + else { + + //---------------------------------------------- + // Continuity equation + //---------------------------------------------- + + if (grid(j) > m_zfixed){ + rsd[index(c_offset_U,j)] = + - (rho_u(x,j) - rho_u(x,j-1))/m_dz[j-1] + - (density(j-1)*V(x,j-1) + density(j)*V(x,j)); + } + + else if (grid(j) == m_zfixed){ + if (m_do_energy[j]) { + rsd[index(c_offset_U,j)] = (T(x,j) - m_tfixed); + } + else { + rsd[index(c_offset_U,j)] = (rho_u(x,j) + - m_rho[0]*0.3); + } + } + else if(grid(j) < m_zfixed){ + rsd[index(c_offset_U,j)] = + - (rho_u(x,j+1) - rho_u(x,j))/m_dz[j] + - (density(j+1)*V(x,j+1) + density(j)*V(x,j)); + } + //algebraic constraint + diag[index(c_offset_U, j)] = 0; + + //------------------------------------------------ + // Radial momentum equation + // + // \rho u dV/dz + \rho V^2 = d(\mu dV/dz)/dz - lambda + // + //------------------------------------------------- + rsd[index(c_offset_V,j)] + = (shear(x,j) - lambda(x,j) - rho_u(x,j)*dVdz(x,j) + - m_rho[j]*V(x,j)*V(x,j))/m_rho[j] + - rdt*(V(x,j) - V_prev(j)); + diag[index(c_offset_V, j)] = 1; + + + //------------------------------------------------- + // Species equations + // + // \rho u dY_k/dz + dJ_k/dz + M_k\omega_k + // + //------------------------------------------------- + getWdot(x,j); + + doublereal convec, diffus; + for (k = 0; k < m_nsp; k++) { + convec = rho_u(x,j)*dYdz(x,k,j); + diffus = 2.0*(m_flux(k,j) - m_flux(k,j-1)) + /(z(j+1) - z(j-1)); + rsd[index(c_offset_Y + k, j)] + = (m_wt[k]*(wdot(k,j) ) + - convec - diffus)/m_rho[j] + - rdt*(Y(x,k,j) - Y_prev(k,j)); + diag[index(c_offset_Y + k, j)] = 1; + } + + + //----------------------------------------------- + // energy equation + //----------------------------------------------- + + if (m_do_energy[j]) { + + setGas(x,j); + + // heat release term + const vector_fp& h_RT = m_thermo->enthalpy_RT_ref(); + const vector_fp& cp_R = m_thermo->cp_R_ref(); + + sum = 0.0; + sum2 = 0.0; + doublereal flxk; + for (k = 0; k < m_nsp; k++) { + flxk = 0.5*(m_flux(k,j-1) + m_flux(k,j)); + sum += wdot(k,j)*h_RT[k]; + sum2 += flxk*cp_R[k]/m_wt[k]; + } + sum *= GasConstant * T(x,j); + dtdzj = dTdz(x,j); + sum2 *= GasConstant * dtdzj; + + rsd[index(c_offset_T, j)] = + - m_cp[j]*rho_u(x,j)*dtdzj + - divHeatFlux(x,j) - sum - sum2; + rsd[index(c_offset_T, j)] /= (m_rho[j]*m_cp[j]); + + rsd[index(c_offset_T, j)] = + rsd[index(c_offset_T, j)] + m_efctr*(T_fixed(j) - T(x,j)); + + rsd[index(c_offset_T, j)] -= rdt*(T(x,j) - T_prev(j)); + diag[index(c_offset_T, j)] = 1; + } + // residual equations if the energy equation is disabled + else { + rsd[index(c_offset_T, j)] = T(x,j) - T_fixed(j); + diag[index(c_offset_T, j)] = 0; + } + + rsd[index(c_offset_L, j)] = lambda(x,j) - lambda(x,j-1); + diag[index(c_offset_L, j)] = 0; + } + } + } + + /** * Print the solution. */ diff --git a/Cantera/src/oneD/StFlow.h b/Cantera/src/oneD/StFlow.h index bd576dd95..7bd15ce62 100644 --- a/Cantera/src/oneD/StFlow.h +++ b/Cantera/src/oneD/StFlow.h @@ -250,6 +250,8 @@ namespace Cantera { return m_rho[j]; } + virtual bool fixed_mdot() { return true; } + void setViscosityFlag(bool dovisc) { m_dovisc = dovisc; } protected: @@ -384,6 +386,7 @@ namespace Cantera { void updateDiffFluxes(const doublereal* x, int j0, int j1); + //--------------------------------------------------------- // // member data @@ -453,16 +456,14 @@ namespace Cantera { vector_fp m_zfix; vector_fp m_tfix; - // vector m_boundary; - doublereal m_efctr; - + bool m_dovisc; + void updateTransport(doublereal* x,int j0, int j1); private: - vector_fp m_ybar; - }; + }; /** @@ -471,17 +472,29 @@ namespace Cantera { class AxiStagnFlow : public StFlow { public: AxiStagnFlow(igthermo_t* ph = 0, int nsp = 1, int points = 1) : - StFlow(ph, nsp, points) { - } + StFlow(ph, nsp, points) { m_dovisc = true; } virtual ~AxiStagnFlow() {} virtual void eval(int j, doublereal* x, doublereal* r, integer* mask, doublereal rdt); virtual string flowType() { return "Axisymmetric Stagnation"; } - private: - void updateTransport(doublereal* x,int j0, int j1); + }; + + /** + * A class for freely-propagating premixed flames. + */ + class FreeFlame : public StFlow { + public: + FreeFlame(igthermo_t* ph = 0, int nsp = 1, int points = 1) : + StFlow(ph, nsp, points) { m_dovisc = false; } + virtual ~FreeFlame() {} + virtual void eval(int j, doublereal* x, doublereal* r, + integer* mask, doublereal rdt); + virtual string flowType() { return "Free Flame"; } + virtual bool fixed_mdot() { return false; } }; + /* class OneDFlow : public StFlow { public: OneDFlow(igthermo_t* ph = 0, int nsp = 1, int points = 1) : @@ -498,6 +511,7 @@ namespace Cantera { private: void updateTransport(doublereal* x,int j0, int j1); }; + */ void importSolution(doublereal* oldSoln, igthermo_t& oldmech, doublereal* newSoln, igthermo_t& newmech); diff --git a/Cantera/src/oneD/boundaries1D.cpp b/Cantera/src/oneD/boundaries1D.cpp index fbac9675f..9d059e62b 100644 --- a/Cantera/src/oneD/boundaries1D.cpp +++ b/Cantera/src/oneD/boundaries1D.cpp @@ -10,7 +10,6 @@ // Copyright 2002-3 California Institute of Technology - // turn off warnings under Windows #ifdef WIN32 #pragma warning(disable:4786) @@ -40,6 +39,8 @@ namespace Cantera { throw CanteraError("Bdry1D", "install in container before calling init."); } + + // A boundary object contains only one grid point resize(n,1); m_left_nsp = 0; @@ -63,6 +64,8 @@ namespace Cantera { + " domains."); } + // if this is not the last domain, see what is connected on + // the right if (m_index < container().nDomains() - 1) { Domain1D& r = container().domain(m_index+1); if (r.domainType() == cFlowType) { @@ -135,7 +138,8 @@ namespace Cantera { // if a flow domain is present on the left, then this must be // a right inlet. Note that an inlet object can only be a - // terminal object. + // terminal object - it cannot have flows on both the left and + // right if (m_flow_left) { m_ilr = RightInlet; m_flow = m_flow_left; @@ -147,7 +151,7 @@ namespace Cantera { else { throw CanteraError("Inlet1D::init","no flow!"); } - + // components = u, V, T, lambda, + mass fractions m_nsp = m_flow->nComponents() - 4; m_yin.resize(m_nsp, 0.0); @@ -172,51 +176,50 @@ namespace Cantera { // residual equations for the two local variables - //added by Karl Meredith - if (m_adiabatic) - // For the adiabatic case, the mass flow rate is not known. For - // this case, set mdot (x[0]) to match rho*u in the flow domain - // dgg: I think this formulation will only work if the adiabatic - // inlet is on the left, i.e., the flow is left-to-right. - - r[0] = m_flow->density(0)*x[2] - x[0]; - else - // Specified mass flow rate - r[0] = m_mdot - x[0]; + r[0] = m_mdot - x[0]; - // The inlet temperature is always specified. For the adiabatic - // case, this is the temperature of the gas far upstream of the - // flame. + // Temperature r[1] = m_temp - x[1]; // both are algebraic constraints diag[0] = 0; diag[1] = 0; + // if it is a left inlet, then the flow solution vector // starts 2 to the right in the global solution vector if (m_ilr == LeftInlet) { xb = x + 2; rb = r + 2; - rb[2] = xb[2] - x[1]; // T + // The first flow residual is for u. This, however, is not + // modified by the inlet, since this is set within the flow + // domain from the continuity equation. - // spreading rate. Flow domain sets this to V(0), + // spreading rate. The flow domain sets this to V(0), // so for finite spreading rate subtract m_V0. rb[1] -= m_V0; + + // The third flow residual is for T, where it is set to + // T(0). Subtract the local temperature to hold the flow + // T to the inlet T. + rb[2] -= x[1]; - //added by Karl Meredith - if(m_adiabatic){ - rb[3]=xb[3]; //zeroo lambda (Avoids last species on last node being singular ???) - } - else{ - rb[3] += x[0]; // lambda - } + // The flow domain sets this to -rho*u. Add mdot to + // specify the mass flow rate. + rb[3] += x[0]; + + // add the convective term to the species residual equations for (k = 1; k < m_nsp; k++) { - if (m_flow->doSpecies(k)) { - rb[4+k] += x[0]*m_yin[k]; - //writelog("Left "+int2str(k)+" "+fp2str(m_yin[k])+"\n"); - } + rb[4+k] += x[0]*m_yin[k]; + } + + // if the flow is a freely-propagating flame, mdot is not + // specified. Set mdot equal to rho*u, and also set + // lambda to zero. + if (!m_flow->fixed_mdot()) { + r[0] = m_flow->density(0)*xb[0] - x[0]; + rb[3] = xb[3]; } } @@ -226,22 +229,19 @@ namespace Cantera { xb = x - boffset; rb = r - boffset; rb[1] -= m_V0; - rb[2] = xb[2] - x[1]; // T - rb[0] += x[0]; // u + rb[2] -= x[1]; // T + rb[0] += x[0]; // u for (k = 1; k < m_nsp; k++) { - if (m_flow->doSpecies(k)) { - // rb[4+k] += x[0]*(-xb[4+k] + m_yin[k]); - rb[4+k] += x[0]*(m_yin[k]); - //writelog("Right "+int2str(k)+" "+fp2str(m_yin[k])+"\n"); - } + rb[4+k] += x[0]*(m_yin[k]); } } + + } void Inlet1D:: save(XML_Node& o, doublereal* soln) { doublereal* s = soln + loc(); - //XML_Node& inlt = o.addChild("inlet"); XML_Node& inlt = o.addChild("domain"); inlt.addAttribute("id",id()); inlt.addAttribute("points",1); @@ -263,7 +263,6 @@ namespace Cantera { - //-------------------------------------------------- // Empty1D //-------------------------------------------------- @@ -388,7 +387,7 @@ namespace Cantera { XML_Node& symm = o.addChild("domain"); symm.addAttribute("id",id()); symm.addAttribute("points",1); - symm.addAttribute("type","outlet"); + symm.addAttribute("type","symmetry"); symm.addAttribute("components",nComponents()); } @@ -421,6 +420,8 @@ namespace Cantera { const doublereal rtol = 1e-4; const doublereal atol = 1.e-4; setTolerances(1, &rtol, 1, &atol); + if (m_flow_right) m_flow_right->setViscosityFlag(false); + if (m_flow_left) m_flow_left->setViscosityFlag(false); } @@ -462,17 +463,15 @@ namespace Cantera { // zero Lambda - //added by Karl Meredith - if (m_adiabatic) { - rb[0] = xb[0] - xb[0-nc]; //zero U gradient - //(This makes it so that U at last node is not undefined) - } - else{ + if (!m_flow_left->fixed_mdot()) + ;// rb[0] = xb[0] - xb[0-nc]; //zero U gradient + else rb[0] = xb[3]; // zero Lambda - } + rb[2] = xb[2] - xb[2 - nc]; // zero T gradient for (k = 5; k < nc; k++) { rb[k] = xb[k] - xb[k - nc]; // zero mass fraction gradient + db[k] = 0; } } } @@ -602,10 +601,14 @@ namespace Cantera { rb = r - nc; db = diag - nc; - rb[0] = xb[3]; // zero Lambda + if (!m_flow_left->fixed_mdot()) + ; + else + rb[0] = xb[3]; // zero Lambda rb[2] = xb[2] - m_temp; //xb[2] - xb[2 - nc]; // zero dT/dz for (k = 5; k < nc; k++) { rb[k] = xb[k] - m_yres[k-4]; // fixed Y + db[k] = 0; } } } @@ -843,64 +846,6 @@ namespace Cantera { rb[4+nl] += m_work[nl]*mwleft[nl]; } } - - // gas-phase residuals -// doublereal rho; -// if (m_flow_left) { -// rho = m_phase_left->density(); - // doublereal rdz = 2.0/ - // (m_flow_left->z(m_left_points-1) - - // m_flow_left->z(m_left_points - 2)); - - -// for (k = 0; k < m_left_nsp; k++) -// m_work[k + m_start_left] *= m_molwt_left[k]; - -// int ileft = loc() - m_left_nv; - -// // if the energy equation is enabled at this point, -// // set the gas temperature to the surface temperature -// if (m_flow_left->doEnergy(pnt)) { -// rg[ileft + 2] = xg[ileft + 2] - m_sphase->temperature(); -// } - -// for (k = 1; k < m_left_nsp; k++) { -// if (enabled && m_flow_left->doSpecies(k)) { -// rg[ileft + 4 + k] += m_work[k + m_start_left]; -// //+= rdz*m_work[k + m_sp_left]/rho; - -// } -// } -// } - -// if (m_flow_right) { -// for (k = 0; k < m_right_nsp; k++) -// m_work[k + m_start_right] *= m_molwt_right[k]; - -// int iright = loc() + m_nsp; -// rg[iright + 2] -= m_sphase->temperature(); -// //r[iright + 3] = x[iright]; -// for (k = 0; k < m_right_nsp; k++) { -// rg[iright + 4 + k] -= m_work[k + m_start_right]; -// } -// } - - -// diag[0] = 0; -// int nc; - -// if (m_flow_right) { -// rb = r + 1; -// xb = x + 1; -// rb[2] = xb[2] - x[0]; // specified T -// } - -// if (m_flow_left) { -// nc = m_flow_left->nComponents(); -// rb = r - nc; -// xb = x - nc; -// rb[2] = xb[2] - x[0]; // specified T -// } } void ReactingSurf1D:: @@ -926,314 +871,3 @@ namespace Cantera { } } - - ///////////////////////////////////////////////////////////// - // - // surf1D - // - //////////////////////////////////////////////////////////// - - -// string ChemSurf1D:: -// componentName(int n) const { -// /// @todo why dummy? -// switch (n) { -// case 0: return "dummy"; break; -// case 1: return "temperature"; break; -// default: return ""; -// } -// } - -// // Set the kinetics manager for the surface. -// void ChemSurf1D:: -// setKinetics(InterfaceKinetics* kin) { -// m_kin = kin; -// int np = kin->nPhases(); -// m_sphase = 0; -// for (int n = 0; n < np; n++) { -// if (kin->phase(n).eosType() == cSurf) { -// m_sphase = (SurfPhase*)&m_kin->phase(n); -// m_nsurf = n; -// } -// else { -// m_bulk.push_back(&kin->phase(n)); -// m_nbulk.push_back(n); -// } -// } -// if (!m_sphase) -// throw CanteraError("setKinetics","no surface phase defined"); - -// m_nsp = m_sphase->nSpecies(); -// resize(m_nsp,1); -// if (m_bulk.size() == 1) { -// m_bulk.push_back(0); -// } -// } - -// void ChemSurf1D:: -// init() { -// cout << "ChemSurf1D::init" << endl; -// if (m_index < 0) { -// throw CanteraError("Surf1D", -// "install in container before calling init."); -// } -// resize(m_nsp,1); -// m_mult.resize(m_nsp, 1.0); -// m_do_surf_species.resize(m_nsp, true); -// if (!m_sphase) m_do_surf_species[0] = false; -// m_fixed_cov.resize(m_nsp, 1.0/m_nsp); - -// // set bounds -// vector_fp lower(m_nsp, -1.e-3); -// vector_fp upper(m_nsp, 1.0); -// setBounds(m_nsp, lower.begin(), m_nsp, upper.begin()); - -// // set tolerances -// vector_fp rtol(m_nsp, 1e-4); -// vector_fp atol(m_nsp, 1.e-10); -// setTolerances(m_nsp, rtol.begin(), m_nsp, atol.begin()); - -// m_left_nsp = 0; -// m_right_nsp = 0; - -// // check for left and right flow objects -// if (m_index > 0) { -// Domain1D& r = container().domain(m_index-1); -// if (r.domainType() == cFlowType) { -// m_flow_left = (StFlow*)&r; -// m_left_nv = m_flow_left->nComponents(); -// m_left_points = m_flow_left->nPoints(); -// m_left_loc = container().start(m_index-1); -// m_left_nsp = m_left_nv - 4; -// m_phase_left = &m_flow_left->phase(); -// m_molwt_left = m_phase_left->molecularWeights().begin(); -// if (m_phase_left == m_bulk[0]) -// m_start_left = m_kin->start(m_nbulk[0]); -// else if (m_phase_left == m_bulk[1]) -// m_start_left = m_kin->start(m_nbulk[1]); -// else -// throw CanteraError("ChemSurf1D::init", -// "left gas does not match one in surface mechanism"); -// } -// else -// throw CanteraError("ChemSurf1D::init", -// "Surface domains can only be " -// "connected to flow domains."); -// } - -// if (m_index < container().nDomains() - 1) { -// Domain1D& r = container().domain(m_index+1); -// if (r.domainType() == cFlowType) { -// m_flow_right = (StFlow*)&r; -// m_right_nv = m_flow_right->nComponents(); -// m_right_loc = container().start(m_index+1); -// m_right_nsp = m_right_nv - 4; -// m_phase_right = &m_flow_right->phase(); -// m_molwt_right = m_phase_right->molecularWeights().begin(); -// if (m_phase_right == m_bulk[0]) -// m_start_right = m_kin->start(m_nbulk[0]); -// else if (m_phase_right == m_bulk[1]) -// m_start_right = m_kin->start(m_nbulk[1]); -// else -// throw CanteraError("ChemSurf1D::init", -// "right gas does not match one in surface mechanism"); -// } -// else -// throw CanteraError("ChemSurf1D::init", -// "Surface domains can only be " -// "connected to flow domains."); -// } -// m_work.resize(m_kin->nTotalSpecies()); -// } - - -// void ChemSurf1D::eval(int jg, doublereal* xg, doublereal* rg, -// integer* diagg, doublereal rdt) { -// int k; - -// // if computing a Jacobian (jg > 0), and the global point is -// // outside the points the surface can influence, then skip -// // evaluating the residual -// if (jg >= 0 && (jg < firstPoint() - 2 -// || jg > lastPoint() + 2)) return; - -// // start of local part of global arrays -// doublereal* x = xg + loc(); -// doublereal* r = rg + loc(); -// integer* diag = diagg + loc(); - -// // set the coverages -// doublereal sum = 0.0; -// for (k = 0; k < m_nsp; k++) { -// m_work[k] = x[k]; -// sum += x[k]; -// } -// m_sphase->setCoverages(m_work.begin()); - -// // set the left gas state to the adjacent point - -// int leftloc = 0, rightloc = 0; -// int pnt = 0; - -// if (m_flow_left) { -// leftloc = m_flow_left->loc(); -// pnt = m_flow_left->nPoints() - 1; -// m_flow_left->setGas(xg + leftloc, pnt); -// } - -// if (m_flow_right) { -// rightloc = m_flow_right->loc(); -// m_flow_right->setGas(xg + rightloc, 0); -// } - -// m_kin->getNetProductionRates(m_work.begin()); -// doublereal rs0 = 1.0/m_sphase->siteDensity(); - -// scale(m_work.begin(), m_work.end(), m_work.begin(), m_mult[0]); - -// bool enabled = true; -// int ioffset = m_kin->start(m_nsurf); // m_left_nsp + m_right_nsp; -// doublereal maxx = -1.0; -// int imx = -1; -// for (k = 0; k < m_nsp; k++) { -// r[k] = m_work[k + ioffset] * m_sphase->size(k) * rs0; -// r[k] -= rdt*(x[k] - prevSoln(k,0)); -// diag[k] = 1; -// if (x[k] > maxx) { -// maxx = x[k]; -// imx = k; -// } -// if (!m_do_surf_species[k]) { -// r[k] = x[k] - m_fixed_cov[k]; -// diag[k] = 0; -// enabled = false; -// } -// } -// if (enabled) { -// r[imx] = 1.0 - sum; -// diag[imx] = 0; -// } - -// // gas-phase residuals -// doublereal rho; -// if (m_flow_left) { -// rho = m_phase_left->density(); -// // doublereal rdz = 2.0/ -// // (m_flow_left->z(m_left_points-1) - -// // m_flow_left->z(m_left_points - 2)); - -// for (k = 0; k < m_left_nsp; k++) -// m_work[k + m_start_left] *= m_molwt_left[k]; - -// int ileft = loc() - m_left_nv; - -// // if the energy equation is enabled at this point, -// // set the gas temperature to the surface temperature -// if (m_flow_left->doEnergy(pnt)) { -// rg[ileft + 2] = xg[ileft + 2] - m_sphase->temperature(); -// } - -// for (k = 1; k < m_left_nsp; k++) { -// if (enabled && m_flow_left->doSpecies(k)) { -// rg[ileft + 4 + k] += m_work[k + m_start_left]; -// //+= rdz*m_work[k + m_sp_left]/rho; - -// } -// } -// } - -// if (m_flow_right) { -// for (k = 0; k < m_right_nsp; k++) -// m_work[k + m_start_right] *= m_molwt_right[k]; - -// int iright = loc() + m_nsp; -// rg[iright + 2] -= m_sphase->temperature(); -// //r[iright + 3] = x[iright]; -// for (k = 0; k < m_right_nsp; k++) { -// rg[iright + 4 + k] -= m_work[k + m_start_right]; -// } -// } -// } - -// void ChemSurf1D:: -// save(XML_Node& o, doublereal* soln) { -// doublereal* s = soln + loc(); -// XML_Node& srf = o.addChild("surface"); -// for (int k = 0; k < m_nsp; k++) { -// ctml::addFloat(srf, componentName(k), s[k], "", "coverage", -// 0.0, 1.0); -// } -// } - - -// ///////////////////////////////////////////////////////////// -// // -// // surf1D -// // -// //////////////////////////////////////////////////////////// - -// string ChemSurf1D:: -// componentName(int n) const { -// /// @todo why dummy? -// switch (n) { -// case 0: return "temperature"; break; -// default: return ""; -// } -// } - -// void ChemSurf1D:: -// init() { -// if (m_index < 0) { -// throw CanteraError("Surf1D", -// "install in container before calling init."); -// } -// if (m_index > 0) m_left_flow = true; -// resize(1,1); - -// // set bounds -// vector_fp lower(1, 200.0); -// vector_fp upper(1, 10000.0); -// setBounds(1, lower.begin(), 1, upper.begin()); - -// // set tolerances -// vector_fp rtol(1, 1e-4); -// vector_fp atol(1, 1.e-5); -// setTolerances(1, rtol.begin(), 1, atol.begin()); -// } - - -// void ChemSurf1D::eval(int jg, doublereal* xg, doublereal* rg, -// integer* diagg, doublereal rdt) { -// int k; - -// // if computing a Jacobian (jg > 0), and the global point is -// // outside the points the surface can influence, then skip -// // evaluating the residual -// if (jg >= 0 && (jg < firstPoint() - 2 -// || jg > lastPoint() + 2)) return; - -// // start of local part of global arrays -// doublereal* x = xg + loc(); -// doublereal* r = rg + loc(); -// integer* diag = diagg + loc(); - -// // set the left gas state to the adjacent point - -// // gas-phase residuals -// doublereal rho; -// } - -// void ChemSurf1D:: -// save(XML_Node& o, doublereal* soln) { -// doublereal* s = soln + loc(); -// XML_Node& srf = o.addChild("surface"); -// for (int k = 0; k < m_nsp; k++) { -// ctml::addFloat(srf, componentName(k), s[k], "", "coverage", -// 0.0, 1.0); -// } -// } - - - - - diff --git a/Cantera/src/phasereport.cpp b/Cantera/src/phasereport.cpp index 12b857db1..e438a2d6d 100644 --- a/Cantera/src/phasereport.cpp +++ b/Cantera/src/phasereport.cpp @@ -18,8 +18,12 @@ namespace Cantera { char p[200]; string s = ""; - - sprintf(p, "\n temperature %12.6g K\n", th.temperature()); + try { + if (th.name() != "") { + sprintf(p, " \n %s:\n", th.name().c_str()); + s += p; + } + sprintf(p, " \n temperature %12.6g K\n", th.temperature()); s += p; sprintf(p, " pressure %12.6g Pa\n", th.pressure()); s += p; @@ -34,9 +38,13 @@ namespace Cantera { s += p; //} } - + doublereal phi = th.electricPotential(); + if (phi != 0.0) { + sprintf(p, " potential %12.6g V\n", phi); + s += p; + } if (show_thermo) { - sprintf(p, "\n"); + sprintf(p, " \n"); s += p; sprintf(p, " 1 kg 1 kmol\n"); s += p; @@ -74,20 +82,26 @@ namespace Cantera { if (th.nSpecies() > 1) { if (show_thermo) { - sprintf(p, "\n X " + sprintf(p, " \n X " " Y Chem. Pot. / RT \n"); s += p; sprintf(p, " ------------- " "------------ ------------\n"); s += p; for (k = 0; k < kk; k++) { - sprintf(p, "%18s %12.6g %12.6g %12.6g\n", - th.speciesName(k).c_str(), x[k], y[k], mu[k]/rt); + if (x[k] > SmallNumber) { + sprintf(p, "%18s %12.6g %12.6g %12.6g\n", + th.speciesName(k).c_str(), x[k], y[k], mu[k]/rt); + } + else { + sprintf(p, "%18s %12.6g %12.6g \n", + th.speciesName(k).c_str(), x[k], y[k]); + } s += p; } } else { - sprintf(p, "\n X" + sprintf(p, " \n X" "Y\n"); s += p; sprintf(p, " -------------" @@ -100,9 +114,18 @@ namespace Cantera { } } } + } + catch (CanteraError) { + ; + } return s; } + void writephase(const ThermoPhase& th, bool show_thermo) { + string s = report(th, show_thermo); + writelog(s+"\n"); + } + /** * Format a composition list for output. */ diff --git a/Cantera/src/reaction_defs.h b/Cantera/src/reaction_defs.h index bac39a1ce..e76191971 100755 --- a/Cantera/src/reaction_defs.h +++ b/Cantera/src/reaction_defs.h @@ -1,6 +1,7 @@ /** * @file reaction_defs.h * + * This file defines some constants used to specify reaction types. */ // Copyright 2001 California Institute of Technology @@ -41,7 +42,8 @@ namespace Cantera { * A chemical activation reaction. For these reactions, the rate falls * off as the pressure increases, due to collisional stabilization of * a reaction intermediate. Example: Si + SiH4 (+M) <-> Si2H2 + H2 - * (+M), which competes with Si + SiH4 (+M) <-> Si2H4 (+M). + * (+M), which competes with Si + SiH4 (+M) <-> Si2H4 (+M). + * @todo Implement chemical activation reactions. */ const int CHEMACT_RXN = 8; @@ -50,8 +52,16 @@ namespace Cantera { */ const int SURFACE_RXN = 20; + /** + * A reaction occurring at a one-dimensional interface between two + * surface phases. + */ const int EDGE_RXN = 22; + /** + * A global reaction. These may have non-integral reaction orders, + * and are not allowed to be reversible. + */ const int GLOBAL_RXN = 30; //@} @@ -60,6 +70,9 @@ namespace Cantera { * These types define the supported rate coefficient types for * elementary reactions. Any of these may also be used as the high and * low-pressure limits of falloff and chemical activation reactions. + * + * Note that not all of these are currently implemented! + * @todo Finish implementing reaction rate types. */ //@{ diff --git a/Cantera/src/transport/Makefile.in b/Cantera/src/transport/Makefile.in index 9d03e553d..4480868dc 100644 --- a/Cantera/src/transport/Makefile.in +++ b/Cantera/src/transport/Makefile.in @@ -13,6 +13,7 @@ INCDIR = ../../../build/include/cantera/kernel/transport INSTALL_TSC = ../../../bin/install_tsc +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) @@ -29,6 +30,7 @@ LIB = @buildlib@/libtransport.a DEPENDS = $(OBJS:.o=.d) all: $(LIB) + @(@INSTALL@ -d $(INCDIR)) @(for lh in $(TRAN_H) ; do \ $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ done) @@ -40,6 +42,9 @@ all: $(LIB) $(LIB): $(OBJS) $(TRAN_H) @ARCHIVE@ $(LIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(LIB) +endif clean: @(for lh in $(TRAN_H) ; do \ @@ -53,7 +58,7 @@ clean: $(RM) $(LIB) ; \ echo "$(RM) $(LIB)" ; \ fi) - $(RM) *.o *~ + $(RM) *.o *~ .depends depends: $(DEPENDS) cat *.d > .depends diff --git a/Cantera/src/transport/MultiTransport.cpp b/Cantera/src/transport/MultiTransport.cpp index e96449d8a..5b3988e7d 100755 --- a/Cantera/src/transport/MultiTransport.cpp +++ b/Cantera/src/transport/MultiTransport.cpp @@ -980,7 +980,7 @@ namespace Cantera { } // internal heat capacities - const array_fp& cp = ((IdealGasPhase*)m_thermo)->cp_R(); + const array_fp& cp = ((IdealGasPhase*)m_thermo)->cp_R_ref(); for (k = 0; k < m_nsp; k++) m_cinternal[k] = cp[k] - 2.5; } diff --git a/Cantera/src/transport/SolidTransport.cpp b/Cantera/src/transport/SolidTransport.cpp index aec394ac3..95cceef5f 100644 --- a/Cantera/src/transport/SolidTransport.cpp +++ b/Cantera/src/transport/SolidTransport.cpp @@ -32,6 +32,9 @@ namespace Cantera { void SolidTransport::setParameters(int n, int k, double* p) { switch (n) { + + // set the Arrhenius parameters for the diffusion coefficient + // of species k. case 0: m_sp.push_back(k); m_Adiff.push_back(p[0]); @@ -39,6 +42,8 @@ namespace Cantera { m_Ediff.push_back(p[2]); m_nmobile = m_sp.size(); break; + + // set the thermal conductivity. case 1: m_lam = p[0]; break; @@ -55,6 +60,10 @@ namespace Cantera { *********************************************************/ + /** + * Compute the mobilities of the species from the diffusion coefficients, + * usind the Einstein relation. + */ void SolidTransport::getMobilities(doublereal* mobil) { int k; getMixDiffCoeffs(mobil); @@ -62,7 +71,7 @@ namespace Cantera { int nsp = m_thermo->nSpecies(); doublereal c1 = ElectronCharge / (Boltzmann * t); for (k = 0; k < nsp; k++) { - mobil[k] *= c1 * m_thermo->charge(k); + mobil[k] *= c1 * fabs(m_thermo->charge(k)); } } @@ -72,6 +81,17 @@ namespace Cantera { } + /** + * The diffusion coefficients are computed from + * + * \f[ + * D_k = A_k T^{n_k} \exp(-E_k/RT). + * \f] + * + * The diffusion coefficients are only non-zero for species for + * which parameters have been specified using method + * setParameters. + */ void SolidTransport::getMixDiffCoeffs(doublereal* d) { doublereal temp = m_thermo->temperature(); int nsp = m_thermo->nSpecies(); @@ -82,4 +102,16 @@ namespace Cantera { m_Adiff[k] * pow(temp, m_Ndiff[k]) * exp(-m_Ediff[k]/temp); } } + +// void SolidTransport::electricalConductivity() { +// getMobilities(m_work.begin()); +// int nsp = m_thermo->nSpecies(); +// int k; +// doublereal sum = 0.0; +// for (k = 0; k < nsp; n++) { +// sum += m_thermo->charge(k)*m_thermo->moleFraction(k)*m_work[k]; +// } +// return sum * m_thermo->molarDensity(); +// } + } diff --git a/Cantera/src/transport/TransportFactory.cpp b/Cantera/src/transport/TransportFactory.cpp index 0045a01ec..e8f7996e2 100755 --- a/Cantera/src/transport/TransportFactory.cpp +++ b/Cantera/src/transport/TransportFactory.cpp @@ -230,7 +230,13 @@ namespace Cantera { f_eps = xi*xi; } - + /** + * TransportFactory(): default constructor + * + * The default constructor for this class sets up + * m_models[], a mapping between the string name + * for a transport model and the integer name. + */ TransportFactory::TransportFactory() : m_integrals(0) { m_models["Mix"] = cMixtureAveraged; m_models["Multi"] = cMulticomponent; @@ -242,7 +248,6 @@ namespace Cantera { m_models["None"] = 0; } - /** * Destructor * @@ -760,7 +765,7 @@ namespace Cantera { t = tr.tmin + dt*n; tr.thermo->setTemperature(t); - cp_R = ((IdealGasPhase*)tr.thermo)->cp_R()[k]; + cp_R = ((IdealGasPhase*)tr.thermo)->cp_R_ref()[k]; tstar = Boltzmann * t/ tr.eps[k]; sqrt_T = sqrt(t); diff --git a/Cantera/src/units.h b/Cantera/src/units.h index 08f1c8aae..0c3881c8d 100644 --- a/Cantera/src/units.h +++ b/Cantera/src/units.h @@ -1,7 +1,7 @@ /** * @file units.h * - * Unit conversions. + * Unit conversions. This header is included only by file misc.cpp. */ #ifndef CT_UNITS_H @@ -46,6 +46,9 @@ namespace Cantera { /** * Return the multiplier required to convert a dimensional quantity * with units specified by string 'units' to SI units. + * The list of recognized units is storred as a stl map + * called m_u[] and m_act_u for activity + * coefficients. These maps are initialized with likely values. */ doublereal toSI(string units) { @@ -115,7 +118,9 @@ namespace Cantera { private: + /// pointer to the single instance of Unit static Unit* __u; + map m_u; map m_act_u; @@ -127,7 +132,10 @@ namespace Cantera { m_u["km"] = 1.0e3; m_u["mm"] = 1.0e-3; m_u["micron"] = 1.0e-6; + m_u["nm"] = 1.0e-9; m_u["A"] = 1.0e-10; + m_u["Angstrom"] = 1.0e-10; + m_u["Angstroms"] = 1.0e-10; // energy m_u["J"] = 1.0; @@ -163,6 +171,8 @@ namespace Cantera { m_act_u["eV"] = m_u["eV"]/m_u["molec"]; m_act_u["K"] = GasConstant; + m_act_u["Kelvin"] = GasConstant; + m_act_u["Dimensionless"] = (GasConstant * 273.15); } }; } diff --git a/Cantera/src/utilities.h b/Cantera/src/utilities.h index 8d9bba07f..9676430d3 100755 --- a/Cantera/src/utilities.h +++ b/Cantera/src/utilities.h @@ -14,7 +14,8 @@ namespace Cantera { /** - * Maximum of i and j. + * Maximum of i and j. If \a i and \a j have different types, \a j + * is converted to the type of \a i before the comparison. */ template inline T max(T i, S j) { @@ -22,7 +23,8 @@ namespace Cantera { } /** - * Minimum of i and j. + * Minimum of i and j. If \a i and \a j have different types, \a j + * is converted to the type of \a i before the comparison. */ template inline T min(T i, S j) { @@ -31,8 +33,8 @@ namespace Cantera { /** * Inner product of two vectors of length 4. - * If either \i x - * or \i y has length greater than 4, only the first 4 elements + * If either \a x + * or \a y has length greater than 4, only the first 4 elements * will be used. */ template @@ -42,8 +44,8 @@ namespace Cantera { /** * Inner product of two vectors of length 5. - * If either \i x - * or \i y has length greater than 5, only the first 5 elements + * If either \a x + * or \a y has length greater than 5, only the first 5 elements * will be used. */ template @@ -54,8 +56,8 @@ namespace Cantera { /** * Inner product of two vectors of length 6. - * If either \i x - * or \i y has length greater than 6, only the first 6 elements + * If either \a x + * or \a y has length greater than 6, only the first 6 elements * will be used. */ template @@ -90,6 +92,13 @@ namespace Cantera { *__out = scale_factor * *__begin; } + template + inline void increment_scale(_InputIter __begin, _InputIter __end, + _OutputIter __out, S scale_factor) { + for (; __begin != __end; ++__begin, ++__out) + *__out += scale_factor * *__begin; + } + /** * Multiply each entry in x by the corresponding entry in y. */ @@ -101,7 +110,7 @@ namespace Cantera { /** - * Invoke method 'resize' with argument \i m for a sequence of objects. + * Invoke method 'resize' with argument \a m for a sequence of objects. */ template inline void _resize_each(int m, _InputIter __begin, _InputIter __end) { @@ -130,7 +139,7 @@ namespace Cantera { } /** - * Divide each element of \i x by the corresponding element of \i y. + * Divide each element of \a x by the corresponding element of \a y. */ template inline void divide_each(_OutputIter x_begin, _OutputIter x_end, @@ -139,7 +148,7 @@ namespace Cantera { } /** - * Increment each entry in \i x by the corresponding entry in \i y. + * Increment each entry in \a x by the corresponding entry in \a y. */ template inline void sum_each(_OutputIter x_begin, _OutputIter x_end, @@ -168,25 +177,42 @@ namespace Cantera { } /** - * Multiply selected values in a sequence by . x[indx[i]] *= m[i] + * Multiply selected elements in an array by a contiguous + * sequence of multipliers. + * Example: * \code - * vector multipliers(3), data(20); - * vector index(3); + * double multipliers[] = {8.9, -2.0, 5.6}; + * int index[] = {7, 4, 13}; + * vector_fp data(20); * ... - * _scatter_mult(multipliers.begin(), multipliers.end(), data.begin(), - * index.begin()); + * // multiply elements 7, 4, and 13 in data by multipliers + * _scatter_mult(multipliers, multipliers + 3, data.begin(), + * index); * \endcode */ template - inline void _scatter_mult(_InputIter __begin, _InputIter __end, - _RandAccessIter __result, _IndexIter __index) { - for (; __begin != __end; ++__begin, ++__index) { - *(__result + *__index) *= *__begin; + inline void _scatter_mult(_InputIter __mult_begin, _InputIter __mult_end, + _RandAccessIter __data, _IndexIter __index) { + for (; __mult_begin != __mult_end; ++__mult_begin, ++__index) { + *(__data + *__index) *= *__mult_begin; } } - + /** + * Divide selected elements in an array by a contiguous + * sequence of divisors. + * Example: + * \code + * double divisors[] = {8.9, -2.0, 5.6}; + * int index[] = {7, 4, 13}; + * vector_fp data(20); + * ... + * // divide elements 7, 4, and 13 in data by divisors + * _scatter_divide(divisors, divisors + 3, data.begin(), + * index); + * \endcode + */ template inline void _scatter_divide(_InputIter __begin, _InputIter __end, _OutputIter __result, _IndexIter __index) { @@ -195,6 +221,10 @@ namespace Cantera { } } + /** + * Compute \f[ \sum_k x_k \log x_k. \f]. A small number (1.0E-20) + * is added before taking the log. + */ template inline doublereal _sum_xlogx(_InputIter __begin, _InputIter __end) { doublereal sum = 0.0; @@ -202,8 +232,12 @@ namespace Cantera { sum += (*__begin) * log(*__begin + Tiny); } return sum; - } + } + /** + * Compute \f[ \sum_k x_k \log Q_k. \f]. A small number (1.0E-20) + * is added before taking the log. + */ template inline doublereal _sum_xlogQ(_InputIter1 __begin, _InputIter1 __end, _InputIter2 _Q_begin) { diff --git a/Cantera/src/zeroD/FlowDevice.cpp b/Cantera/src/zeroD/FlowDevice.cpp index a76e2b936..bdf9e3ead 100644 --- a/Cantera/src/zeroD/FlowDevice.cpp +++ b/Cantera/src/zeroD/FlowDevice.cpp @@ -3,7 +3,7 @@ #include "ReactorBase.h" #include "../Func1.h" -namespace Cantera { +namespace CanteraZeroD { bool FlowDevice::install(ReactorBase& in, ReactorBase& out) { if (m_in || m_out) return false; diff --git a/Cantera/src/zeroD/FlowDevice.h b/Cantera/src/zeroD/FlowDevice.h index 7baddbdaa..7936cba1d 100644 --- a/Cantera/src/zeroD/FlowDevice.h +++ b/Cantera/src/zeroD/FlowDevice.h @@ -19,9 +19,14 @@ #include "../ct_defs.h" namespace Cantera { + class Func1; +} +using namespace Cantera; + +namespace CanteraZeroD { class ReactorBase; // forward reference - class Func1; + const int MFC_Type = 1; const int PressureController_Type = 2; @@ -151,14 +156,14 @@ namespace Cantera { copy(coeffs, coeffs + n, m_coeffs.begin()); } - void setFunction(Func1* f); + void setFunction(Cantera::Func1* f); void setMassFlowRate(doublereal mdot) {m_mdot = mdot;} protected: doublereal m_mdot; - Func1* m_func; + Cantera::Func1* m_func; vector_fp m_coeffs; int m_type; diff --git a/Cantera/src/zeroD/Makefile.in b/Cantera/src/zeroD/Makefile.in index 8b4d52e0d..ba0114d0d 100644 --- a/Cantera/src/zeroD/Makefile.in +++ b/Cantera/src/zeroD/Makefile.in @@ -13,6 +13,7 @@ INCDIR = ../../../build/include/cantera/kernel/zeroD INSTALL_TSC = ../../../bin/install_tsc +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) @@ -27,9 +28,10 @@ ZEROD_LIB = @buildlib@/libzeroD.a DEPENDS = $(OBJS:.o=.d) all: $(ZEROD_LIB) + @(@INSTALL@ -d $(INCDIR)) @(for lh in $(ZEROD_H) ; do \ $(INSTALL_TSC) "$${lh}" $(INCDIR) ; \ - done) + done) %.d: g++ -MM $(CXX_INCLUDES) $*.cpp > $*.d @@ -42,6 +44,9 @@ all: $(ZEROD_LIB) $(ZEROD_LIB): $(OBJS) $(ZEROD_H) @ARCHIVE@ $(ZEROD_LIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(ZEROD_LIB) +endif clean: @(for lh in $(ZEROD_H) ; do \ @@ -55,7 +60,7 @@ clean: $(RM) $(ZEROD_LIB) ; \ echo "$(RM) $(ZEROD_LIB)" ; \ fi) - $(RM) *.o *~ + $(RM) *.o *~ .depends depends: $(DEPENDS) cat *.d > .depends diff --git a/Cantera/src/zeroD/PID_Controller.h b/Cantera/src/zeroD/PID_Controller.h index ff597499a..77560dfd0 100644 --- a/Cantera/src/zeroD/PID_Controller.h +++ b/Cantera/src/zeroD/PID_Controller.h @@ -16,7 +16,7 @@ #pragma warning(disable:4503) #endif -namespace Cantera { +namespace CanteraZeroD { class PID_Controller { diff --git a/Cantera/src/zeroD/Reactor.cpp b/Cantera/src/zeroD/Reactor.cpp index fad757d10..bb5c9f139 100644 --- a/Cantera/src/zeroD/Reactor.cpp +++ b/Cantera/src/zeroD/Reactor.cpp @@ -19,7 +19,9 @@ #include "../InterfaceKinetics.h" #include "../SurfPhase.h" -namespace Cantera { +using namespace Cantera; + +namespace CanteraZeroD { doublereal quadInterp(doublereal x0, doublereal* x, doublereal* y); diff --git a/Cantera/src/zeroD/Reactor.h b/Cantera/src/zeroD/Reactor.h index b9fb5bae0..470e95516 100644 --- a/Cantera/src/zeroD/Reactor.h +++ b/Cantera/src/zeroD/Reactor.h @@ -23,7 +23,7 @@ #define INCL_REACTOR_INTEG -namespace Cantera { +namespace CanteraZeroD { /** * Class Reactor is a general-purpose class for stirred diff --git a/Cantera/src/zeroD/ReactorBase.cpp b/Cantera/src/zeroD/ReactorBase.cpp index ea9a35167..41621e394 100644 --- a/Cantera/src/zeroD/ReactorBase.cpp +++ b/Cantera/src/zeroD/ReactorBase.cpp @@ -18,7 +18,7 @@ #include "FlowDevice.h" #include "Wall.h" -namespace Cantera { +namespace CanteraZeroD { ReactorBase::ReactorBase(string name) : m_nsp(0), m_mix(0), diff --git a/Cantera/src/zeroD/ReactorBase.h b/Cantera/src/zeroD/ReactorBase.h index 80217ad4c..d72f0f003 100644 --- a/Cantera/src/zeroD/ReactorBase.h +++ b/Cantera/src/zeroD/ReactorBase.h @@ -20,7 +20,10 @@ #include "../ThermoPhase.h" -namespace Cantera { +using namespace Cantera; + +/// Namespace for classes implementing zero-dimensional reactor networks. +namespace CanteraZeroD { // typedef Thermo thermo_t; diff --git a/Cantera/src/zeroD/ReactorNet.cpp b/Cantera/src/zeroD/ReactorNet.cpp index 1bf91e9f3..7676b38d2 100644 --- a/Cantera/src/zeroD/ReactorNet.cpp +++ b/Cantera/src/zeroD/ReactorNet.cpp @@ -1,7 +1,7 @@ #include "ReactorNet.h" #include "../CVode.h" -namespace Cantera { +namespace CanteraZeroD { ReactorNet::ReactorNet() : FuncEval(), m_nr(0), m_nreactors(0), m_integ(0), m_time(0.0), m_init(false), diff --git a/Cantera/src/zeroD/ReactorNet.h b/Cantera/src/zeroD/ReactorNet.h index 33ee6dc01..ae663f486 100644 --- a/Cantera/src/zeroD/ReactorNet.h +++ b/Cantera/src/zeroD/ReactorNet.h @@ -22,7 +22,7 @@ #include "../FuncEval.h" #include "../CVode.h" -namespace Cantera { +namespace CanteraZeroD { class ReactorNet : public FuncEval { diff --git a/Cantera/src/zeroD/Reservoir.h b/Cantera/src/zeroD/Reservoir.h index 0779f3eed..d60539df3 100644 --- a/Cantera/src/zeroD/Reservoir.h +++ b/Cantera/src/zeroD/Reservoir.h @@ -21,7 +21,7 @@ #include #include "ReactorBase.h" -namespace Cantera { +namespace CanteraZeroD { class Reservoir : public ReactorBase { diff --git a/Cantera/src/zeroD/Wall.cpp b/Cantera/src/zeroD/Wall.cpp index 04b0e8b9c..4719b8ddc 100644 --- a/Cantera/src/zeroD/Wall.cpp +++ b/Cantera/src/zeroD/Wall.cpp @@ -5,7 +5,7 @@ #include "../InterfaceKinetics.h" #include "../SurfPhase.h" -namespace Cantera { +namespace CanteraZeroD { Wall::Wall() : m_left(0), m_right(0), diff --git a/Cantera/src/zeroD/Wall.h b/Cantera/src/zeroD/Wall.h index a1f822288..d56a3ab43 100644 --- a/Cantera/src/zeroD/Wall.h +++ b/Cantera/src/zeroD/Wall.h @@ -24,17 +24,16 @@ #include "../Func1.h" namespace Cantera { - - // forward references - class ReactorBase; class Kinetics; class Func1; class SurfPhase; +} +using namespace Cantera; - // const int Rigid_Type = 1; - // const int Flexible_Type = 2; +namespace CanteraZeroD { - + // forward references + class ReactorBase; class Wall { diff --git a/Cantera/src/zeroD/flowControllers.h b/Cantera/src/zeroD/flowControllers.h index 3a7e33acc..911cfcf88 100644 --- a/Cantera/src/zeroD/flowControllers.h +++ b/Cantera/src/zeroD/flowControllers.h @@ -24,7 +24,7 @@ //#include "PID_Controller.h" #include "../Func1.h" -namespace Cantera { +namespace CanteraZeroD { /** diff --git a/ChangeLog b/ChangeLog index c2dac6691..c8704a404 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,356 @@ -2005-01-22 04:48 dggoodwin +2005-05-22 14:07 dggoodwin - * win32/vc7/: SetupCantera/SetupCantera.vdproj, - cantera/cantera.vcproj, ck2cti/ck2cti.vcproj, - converters/converters.vcproj, ctmatlab/ctmatlab.vcproj, - ctpython/ctpython.vcproj, cvode/cvode.vcproj, - cxxutils/cxxutils.vcproj, f2c_blas/f2c_blas.vcproj, - f2c_lapack/f2c_lapack.vcproj, f2c_libs/f2c_libs.vcproj, - f2c_math/f2c_math.vcproj, f2c_recipes/f2c_recipes.vcproj, - oneD/oneD.vcproj, tpx/tpx.vcproj, transport/transport.vcproj, - zeroD/zeroD.vcproj: added hfc134a to Cantera + * test_problems/python/: frac.cti, frac.py, frac_blessed.out, + runtest: fractional stoichiometric coefficient test + +2005-05-22 13:38 dggoodwin + + * Cantera/src/GasKinetics.cpp, Cantera/src/GasKinetics.h, + Cantera/src/ReactionStoichMgr.cpp, + Cantera/src/SpeciesThermoFactory.cpp, + Cantera/src/StoichManager.h, Cantera/src/ct2ctml.cpp, + Cantera/src/mix_defs.h, configure, Cantera/clib/src/ct.cpp, + Cantera/clib/src/ct.h, Cantera/clib/src/ctmultiphase.cpp, + Cantera/clib/src/ctmultiphase.h, + Cantera/fortran/src/cantera_kinetics.f90, + Cantera/fortran/src/cantera_thermo.f90, + Cantera/matlab/Makefile.in, Cantera/matlab/setup_matlab.py.in, + Cantera/matlab/cantera/@ThermoPhase/name.m, + Cantera/matlab/cantera/private/ctmethods.cpp, + Cantera/matlab/cantera/private/phasemethods.cpp, + Cantera/matlab/cantera/private/thermomethods.cpp, + Cantera/matlab/cantera/private/write.cpp, + Cantera/python/Cantera/Kinetics.py, + Cantera/python/Cantera/Mixture.py, + Cantera/python/Cantera/ThermoPhase.py, + Cantera/python/Cantera/mixture.py, + Cantera/python/src/ctthermo_methods.cpp, + tools/doc/doxyinput/Cantera.txt, tools/doc/doxyinput/ctnew.txt, + tools/doc/doxyinput/demo1a.cpp, tools/doc/doxyinput/introcxx.txt: + support for fractional stoichiometric coefficients + +2005-05-19 15:15 hkmoffa + + * Cantera/src/units.h: Added in more units: nm + nanometers Angstrom Angstroms Activation Energy Units: + Kelvin (GasConstant) Dimensionless (273.15 * + GasConstant) + + -> specification of dimensionless gibbs free energies is + common + in electrochemistry. However, you have to multiply by the + current temperature to convert correctly here. + +2005-05-01 06:58 dggoodwin + + * Cantera/src/: Array.h, ArrayViewer.h, BandMatrix.h, ChemEquil.h, + Kinetics.h, MultiPhase.cpp, MultiPhase.h, MultiPhaseEquil.cpp, + MultiPhaseEquil.h, ReactionData.h, ReactionStoichMgr.cpp, + ReactionStoichMgr.h, StoichManager.h, ct_defs.h, ctml.cpp, + global.h, importCTML.cpp, phasereport.cpp: added support for + non-integral product stoichiometric coefficients + +2005-04-23 10:14 dggoodwin + + * Cantera/matlab/cantera/@Mixture/: Mixture.m, addPhase.m, + mix_hndl.m, nPhases.m, private/mixturemethods.m: initial import + +2005-04-23 10:12 dggoodwin + + * Cantera/matlab/cantera/@ThermoPhase/: equilibrate.m, name.m, + setName.m, private/thermo_set.m: added name and setName methods + +2005-04-22 19:42 dggoodwin + + * Cantera/matlab/cantera/examples/: ignite.m, ignite2.m, ignite3.m, + ignite_hp.m, ignite_uv.m: corrected plot labels to be mass, + rather than mole, fractions + +2005-04-17 08:48 hkmoffa + + * Cantera/src/global.h: Added cvs id information. + +2005-04-15 12:47 hkmoffa + + * ext/Makefile.in: Changed the Makefile to always make f2c_libs. + Applications may have use of this even if Cantera doesn't + actually use f2c. + +2005-04-15 12:01 hkmoffa + + * Cantera/cxx/demos/kinetics1.cpp: Added in the cantera/Cantera.h + include file. It seemed to need it to compile in the demo + directory of the install directory. + +2005-04-13 04:17 dggoodwin + + * Cantera/python/examples/: equilibrium/adiabatic.py, + equilibrium/plotting.py, flames/flame1.py, flames/flame2.py, + flames/stflame1.py, kinetics/ratecoeffs.py: updated examples + +2005-04-06 17:03 dggoodwin + + * Cantera/matlab/cantera/buildwin.m: minor changes to SetupCantera + +2005-04-01 20:37 dggoodwin + + * Cantera/python/Cantera/constants.py: changed GasConstant to 1999 + CODATA value + +2005-04-01 06:29 dggoodwin + + * tools/doc/: Cantera.cfg, doxyinput/Cantera.txt, + doxyinput/build.txt, doxyinput/ctnew.txt, + doxyinput/cxx-headers.txt, doxyinput/demo.cpp, + doxyinput/demo1.cpp, doxyinput/demo1a.cpp, + doxyinput/demoequil.cpp, doxyinput/equildemo.txt, + doxyinput/ex1.cpp, doxyinput/except.cpp, + doxyinput/exceptions.txt, doxyinput/introcxx.txt, + doxyinput/languages.txt, doxyinput/thermo.txt, + doxyinput/thermodemo.cpp, doxyinput/thermodemo.txt: new doxygen + files + +2005-03-31 17:10 dggoodwin + + * Cantera/src/: IdealGasPhase.h, State.h, ThermoPhase.h, misc.cpp, + utilities.h: updated comments + +2005-03-30 09:33 hkmoffa + + * Cantera/src/ThermoPhase.h: Fixed a comment section that + incorrectly identified a function as returning a Gibbs energy + when it actually returned a Heat capacity. + +2005-03-30 08:03 hkmoffa + + * Makefile.in: Took residual particle Makefile stuff out of this + file. + +2005-03-30 08:02 hkmoffa + + * Cantera/Makefile.in: Took residual particle configure stuff out + of this file. + +2005-03-30 08:00 hkmoffa + + * config/configure.in: Took residual particle stuff out of this + file. + +2005-03-23 12:54 hkmoffa + + * Cantera/src/.cvsignore: Added *.d + +2005-03-09 12:48 dggoodwin + + * Cantera/python/ctml_writer.py: added support for fractional + product stoichiometric coefficients in global irreversible + reactions + +2005-03-05 07:43 dggoodwin + + * Cantera/src/: LatticeSolidPhase.h, LatticeSolidPhase.cpp: initial + import + +2005-02-25 04:48 dggoodwin + + * Makefile.in, config/configure, config/configure.in: g95 changes + +2005-02-24 19:52 dggoodwin + + * Makefile.in, Cantera/python/setup.py.in, config/configure, + config/configure.in, tools/src/finish_install.py.in: minor + cleanup + +2005-02-24 11:01 dggoodwin + + * Cantera/src/converters/ck2ct.cpp: minor cleanup + +2005-02-24 11:01 dggoodwin + + * Cantera/src/config.h: added check for CANTERA_APP + +2005-02-24 11:01 dggoodwin + + * Cantera/cxx/include/Cantera.h: added definition of CANTERA_APP, + which is used in Cantera/src/config.h to control where to find + the config file + +2005-02-24 10:59 dggoodwin + + * test_problems/: diamondSurf/runDiamond.cpp, + silane_equil/silane_equil.cpp: added #include for file Cantera.h + +2005-02-24 10:59 dggoodwin + + * test_problems/silane_equil/output_blessed.txt: changed output + format + +2005-02-24 08:54 dggoodwin + + * tools/src/findtag.py: initial import + +2005-02-17 09:35 dggoodwin + + * apps/MixMaster/: Mix.py, ThermoFrame.py, ThermoProp.py: minor + changes + +2005-02-17 08:25 dggoodwin + + * apps/MixMaster/KineticsFrame.py: added scrollbar to reaction + window + +2005-02-16 22:12 dggoodwin + + * apps/MixMaster/KineticsFrame.py: changed default reaction path + diagram format to SVG + +2005-02-10 00:15 dggoodwin + + * Cantera/src/Makefile.in: minor win32 bug fixes + +2005-02-10 00:10 dggoodwin + + * Cantera/: clib/src/ct.h, matlab/cantera/buildwin.m, + matlab/cantera/private/ctmethods.cpp, python/src/pycantera.cpp, + src/MultiPhase.cpp, src/config.h, src/converters/ck2ct.cpp: minor + win32 bug fixes + +2005-02-09 02:26 dggoodwin + + * Makefile.in, configure, Cantera/clib/src/ct.cpp, + Cantera/clib/src/ct.h, Cantera/python/Cantera/Mixture.py, + Cantera/python/Cantera/__init__.py, + Cantera/python/Cantera/mixture.py, + Cantera/python/examples/equilibrium/adiabatic.py, + Cantera/python/examples/equilibrium/plotting.py, + Cantera/python/src/ctfuncs.cpp, + Cantera/python/src/ctthermo_methods.cpp, + Cantera/python/src/methods.h, Cantera/python/src/pycantera.cpp, + Cantera/python/src/pyutils.h, tools/src/package4mac.in: support + for HTML log files. + +2005-02-09 02:23 dggoodwin + + * Cantera/src/: MultiPhase.cpp, MultiPhaseEquil.cpp, misc.cpp: + support for HTML log files. + +2005-02-08 08:52 dggoodwin + + * config/: configure, configure.in: corrected error in g95 options + +2005-02-03 13:44 dggoodwin + + * Cantera/python/examples/equilibrium/adiabatic.py: initial import + +2005-02-02 12:07 dggoodwin + + * test_problems/ck2cti_test/runtest.in: minor output format change + +2005-02-02 11:59 dggoodwin + + * test_problems/ck2cti_test/gri30a_blessed.cti: minor output format + change + +2005-02-02 11:37 dggoodwin + + * Cantera/src/config.h: not needed in repository + +2005-02-02 11:10 dggoodwin + + * Cantera/: clib/src/Cabinet.h, clib/src/ctfunc.cpp, + clib/src/ctmultiphase.cpp, clib/src/ctonedim.cpp, + clib/src/ctreactor.cpp, clib/src/ctrpath.cpp, clib/src/ctxml.cpp, + src/config.h: added template<> + +2005-02-01 15:27 dggoodwin + + * Cantera/python/: Makefile.in, Cantera/Phase.py, Cantera/num.py, + src/pycantera.cpp: changed numarray/Numeric selection to avoid + importing the wrong module + +2005-02-01 07:22 dggoodwin + + * Cantera/python/src/: cantera.def, ct.def, ctflow.def, + ctkinetics.def, ctnumerics.def, ctphase.def, ctphase_methods.cpp, + ctsurf.def, ctthermo.def, cttransport.def: removed unused files + +2005-01-31 10:54 dggoodwin + + * Cantera/matlab/: Makefile.in, cantera/ck2cti.m, + cantera/private/ctfunctions.cpp: added support for ck2cti without + requiring external program + +2005-01-31 04:20 dggoodwin + + * Cantera/python/Cantera/ck2cti.py: initial import + +2005-01-31 04:18 dggoodwin + + * Cantera/: clib/src/ct.cpp, clib/src/ct.h, + clib/src/ctmultiphase.cpp, clib/src/ctmultiphase.h, + python/Makefile.in, python/setup.py.in, + python/Cantera/Mixture.py, python/Cantera/mixture.py, + python/src/ctfuncs.cpp, python/src/ctmultiphase_methods.cpp, + python/src/methods.h: added function ck2cti + +2005-01-31 04:18 dggoodwin + + * Cantera/src/converters/ck2ct.cpp: printf and stream i/o changed + to fprintf to allow writing cti file to a file rather than to the + standard output + +2005-01-31 04:16 dggoodwin + + * Cantera/src/phasereport.cpp: only print mu for non-zero species + +2005-01-28 18:57 dggoodwin + + * Cantera/clib/src/: Storage.cpp, ct.cpp: corrected a problem with + phases with identical names + +2005-01-28 18:46 dggoodwin + + * Cantera/python/Cantera/Kinetics.py: corrected a problem with + phases with identical names + +2005-01-24 19:48 dggoodwin + + * ext/: f2c_lapack/Makefile.in, f2c_math/.cvsignore: added files to + .cvsignore + +2005-01-24 19:41 dggoodwin + + * ChangeLog, Makefile.in, configure, Cantera/cxx/demos/Makefile.in, + Cantera/cxx/demos/demos.cpp, Cantera/cxx/demos/flamespeed.cpp, + Cantera/cxx/demos/kin1_blessed.csv, + Cantera/cxx/demos/kin1_blessed.dat, + Cantera/cxx/demos/kinetics1.cpp, Cantera/cxx/demos/rankine.cpp, + Cantera/python/Cantera/liquidvapor.py, Cantera/src/config.h, + Cantera/src/misc.cpp, Cantera/src/phasereport.cpp, + bin/mixmaster.py, config/configure, config/configure.in, + data/inputs/liquidvapor.cti, ext/tpx/.depends, + ext/tpx/HFC134a.cpp, ext/tpx/HFC134a.h, ext/tpx/Makefile.in, + ext/tpx/subs.h, ext/tpx/utils.cpp, tools/bin/erase: fixed problem + with dependencies for ck2cti + +2005-01-24 19:38 dggoodwin + + * tools/src/ck2cti.cpp, Cantera/src/converters/ck2ct.cpp, + Cantera/src/converters/ck2ct.h: added validate option + +2005-01-24 07:06 dggoodwin + + * Makefile.in, configure, Cantera/cxx/demos/Makefile.in, + Cantera/cxx/demos/demos.cpp, Cantera/cxx/demos/flamespeed.cpp, + Cantera/cxx/demos/kinetics1.cpp, Cantera/cxx/demos/rankine.cpp, + Cantera/src/config.h, Cantera/src/misc.cpp, ext/tpx/.depends, + ext/tpx/utils.cpp, tools/bin/erase: changed C++ demos + +2005-01-24 03:32 dggoodwin + + * Cantera/cxx/demos/: Makefile.in, demos.cpp, flamespeed.cpp, + kin1_blessed.csv, kin1_blessed.dat, kinetics1.cpp, rankine.cpp: + added program demo to run all demos 2005-01-19 13:22 dggoodwin @@ -162,20 +504,6 @@ * data/inputs/: graphite.cti, water.cti: added water.cti -2005-01-07 17:10 dggoodwin - - * win32/vc7/: cantera/cantera.vcproj, config_h/config_h.vcproj: - added a file to project cantera - -2005-01-07 16:59 dggoodwin - - * win32/vc7/config_h/config_h.vcproj: added project config_h - -2005-01-07 16:29 dggoodwin - - * win32/vc7/demos/: CanteraDemos.sln, Rankine.vcproj: added project - rankine - 2005-01-07 02:26 dggoodwin * Cantera/: clib/src/ct.cpp, clib/src/ct.h, @@ -287,50 +615,6 @@ * ext/tpx/Sub.cpp: fixed problem with starting guess for T in Tsat that caused an exception with T > Tcrit on entry -2005-01-04 17:04 hkmoffa - - * win32/vc7/cvode/.cvsignore: Added a directory name - -2005-01-04 17:03 hkmoffa - - * win32/vc7/.cvsignore: added a file name - -2005-01-04 17:01 hkmoffa - - * win32/vc7/: transport/.cvsignore, oneD/.cvsignore: Added a - directory - -2005-01-04 17:00 hkmoffa - - * win32/vc7/SetupCantera/.cvsignore: Adding the .cvsignore file - -2005-01-04 16:58 hkmoffa - - * win32/vc7/clib/: .cvsignore, clib.vcproj: Changed the library - paths in the Debug and Release versions. - -2005-01-04 16:54 hkmoffa - - * win32/vc7/ctmatlab/: .cvsignore, runmlab.cmd: changed forward - slashes into backslashes. - -2005-01-04 16:46 hkmoffa - - * win32/vc7/ctpython/: .cvsignore, ctpython.vcproj, runpython.cmd: - changed runpython.cmd to use backslashes. - -2005-01-04 14:28 hkmoffa - - * win32/vc7/SetupCantera/SetupCantera.vdproj: Changed LF's to - CR-LF's in the entire file. mcvc++ was having trouble reading the - file with just LF's. - -2005-01-04 14:23 hkmoffa - - * win32/vc7/SetupCantera/SetupCantera.vdproj: Changed LF's into - CR-LF's in this file. This was causing msvc++ not to be able to - load the file, at least for me. - 2005-01-04 12:32 hkmoffa * Cantera/src/transport/Makefile.in: New Makefile Format: @@ -360,11 +644,6 @@ * Cantera/src/MultiPhase.cpp: initial import -2004-12-13 10:38 dggoodwin - - * win32/vc7/demos/: CanteraDemos.sln, ReadMe.txt, demo.vcproj: - initial import - 2004-12-13 06:58 dggoodwin * tools/bin/cvs2cl.pl: updated version @@ -430,25 +709,6 @@ * Cantera/src/importCTML.cpp: changed buildSolutionFromXML to use get_XML_NameID instead of get_XML_Node -2004-11-15 14:07 hkmoffa - - * win32/vc7/ck2cti/ck2cti.vcproj: use debug libraries on debug - version. - -2004-11-15 14:05 hkmoffa - - * win32/vc7/diamondSurf/diamondSurf.vcproj: ignored msvct default - library - -2004-11-15 14:03 hkmoffa - - * win32/vc7/cantera/cantera.vcproj: Dos format - -2004-11-15 13:41 hkmoffa - - * win32/vc7/clib/clib.vcproj: For the debug dll, you have to - compile with debug libraries. - 2004-11-15 12:52 hkmoffa * Cantera/clib/src/ct.cpp: Added a static_cast. @@ -501,10 +761,6 @@ * bin/install_tsc.in: Check for destination directory existing. -2004-10-16 04:09 dggoodwin - - * win32/vc7/SetupCantera/SetupCantera.vdproj: initial import - 2004-10-16 03:12 dggoodwin * Cantera/python/winsetup.py: initial import @@ -522,34 +778,6 @@ * tools/src/: package4mac.in, postflight: Mac install script -2004-10-12 06:56 dggoodwin - - * win32/vc7/: cantera.sln, cantera_examples.sln, - cantera/cantera.vcproj, ck2cti/ck2cti.vcproj, clib/clib.vcproj, - converters/converters.vcproj, cti2ctml/cti2ctml.vcproj, - cvode/cvode.vcproj, cxxutils/cxxutils.vcproj, - f2c_blas/f2c_blas.vcproj, f2c_lapack/f2c_lapack.vcproj, - f2c_libs/f2c_libs.vcproj, f2c_math/f2c_math.vcproj, - f2c_recipes/f2c_recipes.vcproj, oneD/oneD.vcproj, - silane_equil/silane_equil.vcproj, tpx/tpx.vcproj, - transport/transport.vcproj, zeroD/zeroD.vcproj: added ctpython, - changed c libs to multithreaded DLL, changed properties for - release version - -2004-10-12 06:55 dggoodwin - - * win32/vc7/ctpython/: ctpython.vcproj, runpython.cmd: files to - build the Python interface within Visual Studio - -2004-10-11 07:36 dggoodwin - - * win32/vc7/: cantera.sln, cantera/cantera.vcproj, - cvode/cvode.vcproj, f2c_arithchk/f2c_arithchk.vcproj, - f2c_blas/f2c_blas.vcproj, f2c_lapack/f2c_lapack.vcproj, - f2c_libs/f2c_libs.vcproj, f2c_math/f2c_math.vcproj, - f2c_recipes/f2c_recipes.vcproj, tpx/tpx.vcproj, - transport/transport.vcproj: bug fixes - 2004-10-10 13:46 dggoodwin * config.h.in, Cantera/src/DenseMatrix.cpp, @@ -735,11 +963,6 @@ "default", if unspecified. Then, this default is treated in config/configure with special code. -2004-09-24 13:35 hkmoffa - - * win32/vc7/configure.vc++: Added the USE_DLL environmental - variable. - 2004-09-24 13:16 hkmoffa * Makefile.in, configure: Added USE_DLL variable and its controls. @@ -755,11 +978,6 @@ * Cantera/python/Makefile.in: took care of problem with clib.dll for MSVC6.0 -2004-09-24 10:24 hkmoffa - - * win32/README: Added another step, involving setting up paths and - environmental variables. - 2004-09-20 03:18 dggoodwin * Cantera/src/: EdgeKinetics.cpp, EdgeKinetics.h, ReactionData.h, @@ -770,10 +988,6 @@ * Makefile.in: Added dll install -2004-09-16 15:07 hkmoffa - - * win32/README: Added another step. - 2004-09-16 14:43 hkmoffa * test_problems/python/runtest: Fixed an error in the default @@ -783,19 +997,6 @@ * tools/src/ck2cti.cpp: Added an id string. -2004-09-16 10:54 hkmoffa - - * win32/vc7/cantera.sln: Added a few more dependencies to sln file. - -2004-09-16 10:54 hkmoffa - - * win32/vc7/ck2cti/ck2cti.vcproj: Fixed an error. - -2004-09-16 10:53 hkmoffa - - * win32/vc7/cvode/cvode.vcproj: Changed an absolute pathname into a - relative pathname. - 2004-09-16 10:52 hkmoffa * test_problems/: diamondSurf/Makefile.in, @@ -823,14 +1024,6 @@ * Cantera/src/converters/ck2ct.cpp: Took out a print statement that was causing a test to fail. -2004-09-02 13:57 hkmoffa - - * win32/vc7/configure.vc++: Took out HKM comments - -2004-09-02 13:48 hkmoffa - - * win32/README: Added a cd command. - 2004-08-28 09:13 dggoodwin * tools/bin/erase: script to remove a file from the repository @@ -857,17 +1050,6 @@ * bin/.cvsignore: added some windows tmp files -2004-08-27 13:29 hkmoffa - - * win32/README: Added detailed instructions for vc7 - -2004-08-27 13:26 hkmoffa - - * win32/vc7/: .cvsignore, cantera.sln, cantera_examples.sln, - csvdiff/.cvsignore, csvdiff/csvdiff.vcproj, - cxx_examples/.cvsignore, cxx_examples/cxx_examples.vcproj: Second - generation of vc7 port. - 2004-08-27 13:21 hkmoffa * test_problems/python/runtest: Currently, linux and MSVC are @@ -888,10 +1070,6 @@ * config/configure.in: Added a default 0 to BUILD_PARTICLES value -2004-08-27 08:42 hkmoffa - - * win32/vc7/configure.vc++: Initial commit - 2004-08-10 13:39 hkmoffa * test_problems/python/: .cvsignore, flame1_blessed_linux.csv, @@ -974,29 +1152,6 @@ * ext/f2c_lapack/dlamch.c: Added a stdio.h reference. -2004-08-09 17:18 hkmoffa - - * win32/vc7/: .cvsignore, cantera.sln, cantera/.cvsignore, - cantera/cantera.vcproj, ck2cti/.cvsignore, ck2cti/ck2cti.vcproj, - clib/.cvsignore, clib/clib.vcproj, converters/.cvsignore, - converters/converters.vcproj, cti2ctml/.cvsignore, - cti2ctml/cti2ctml.vcproj, cvode/.cvsignore, cvode/cvode.vcproj, - cxxutils/.cvsignore, cxxutils/cxxutils.vcproj, - diamondSurf/.cvsignore, diamondSurf/diamondSurf.vcproj, - f2c_arithchk/.cvsignore, f2c_arithchk/f2c_arithchk.vcproj, - f2c_blas/.cvsignore, f2c_blas/f2c_blas.vcproj, - f2c_lapack/.cvsignore, f2c_lapack/f2c_lapack.vcproj, - f2c_libs/.cvsignore, f2c_libs/f2c_libs.vcproj, - f2c_math/.cvsignore, f2c_math/f2c_math.vcproj, - f2c_recipes/.cvsignore, f2c_recipes/f2c_recipes.vcproj, - oneD/.cvsignore, oneD/oneD.vcproj, pycantera/.cvsignore, - pycantera/pycantera.vcproj, silane_equil/.cvsignore, - silane_equil/silane_equil.vcproj, surfkin/.cvsignore, - surfkin/surfkin.vcproj, tpx/.cvsignore, tpx/tpx.vcproj, - transport/.cvsignore, transport/transport.vcproj, - zeroD/.cvsignore, zeroD/zeroD.vcproj: First commit of vc7 project - files. - 2004-08-09 16:58 hkmoffa * test_problems/silane_equil/: .cvsignore, runtest: MSVS @@ -1065,18 +1220,6 @@ Cantera/src/misc.cpp, config/configure, config/configure.in, ext/math/fdump.f: improvements to the configuration process -2004-08-06 16:29 hkmoffa - - * win32/vc6/: cantera.dsw, all/all.dsp, blas/blas.dsp, - cantera/cantera.dsp, cantera_examples/cantera_examples.dsw, - ck2cti/ck2cti.dsp, ckreader/ckreader.dsp, clib/clib.dsp, - converters/converters.dsp, ct/ct.dsp, ctmath/ctmath.dsp, - ctsetup/ctsetup.dsp, cvode/cvode.dsp, cxxutils/cxxutils.dsp, - cxxutils/cxxutils.mak, lapack/lapack.dsp, oneD/oneD.dsp, - recipes/recipes.dsp, tpx/tpx.dsp, tpx/tpx.mak, - transport/transport.dsp, zeroD/zeroD.dsp: Duplicating existing - structure in the new module. However, it's one directory deeper. - 2004-08-06 16:09 hkmoffa * test_problems/surfkin/surfdemo.cpp: Added a return statement. @@ -1346,14 +1489,6 @@ * Cantera/src/: IdealGasThermo.cpp, ImplicitChem.cpp, Makefile.in, SolidCompound.cpp, importSurfChem.cpp, surfKinetics.cpp: cleanup -2004-08-03 02:18 dggoodwin - - * win32/README: Initial revision - -2004-08-03 02:18 dggoodwin - - * win32/README: initial import - 2004-08-03 02:09 dggoodwin * Cantera/src/: Constituents.cpp, DenseMatrix.h, EOS_TPX.h, @@ -1872,8 +2007,7 @@ * Cantera/matlab/cantera/: @Reactor/private/reactormethods.cpp, @Transport/private/newTransport.cpp, @Transport/private/trans_methods.cpp, - @Wall/private/wallmethods.cpp, @XML_Node/private/newxml.cpp, - @XML_Node/private/xmlmethods.cpp: removed unused files + @Wall/private/wallmethods.cpp: removed unused files 2004-05-23 17:05 dggoodwin @@ -2439,10 +2573,6 @@ * Cantera/python/Cantera/ctml_writer.py: added capability to have species names with embedded commas -2003-10-24 03:11 dggoodwin - - * tools/doc/html/banner4.jpg: initial import - 2003-10-21 17:33 dggoodwin * Cantera/src/: State.h, State.cpp: minor cleanup @@ -3495,8 +3625,6 @@ Cantera/matlab/cantera/@XML_Node/hndl.m, Cantera/matlab/cantera/@XML_Node/value.m, Cantera/matlab/cantera/@XML_Node/write.m, - Cantera/matlab/cantera/@XML_Node/private/newxml.cpp, - Cantera/matlab/cantera/@XML_Node/private/xmlmethods.cpp, Cantera/matlab/cantera/examples/equil.m, Cantera/matlab/cantera/examples/ignite.m, Cantera/matlab/cantera/examples/ignite2.m, @@ -3848,13 +3976,8 @@ include/README, include/config.h, include/core.h, include/ctml.h, include/equilibrium.h, include/ftn_defs.h, include/integrators.h, include/kinetics.h, include/numerics.h, include/onedim.h, - include/surface.h, include/transport.h, - include/fortran/ctfdevmod.f, include/fortran/ctkineticsmod.f, - include/fortran/ctmixturemod.f, include/fortran/ctmod.f, - include/fortran/ctreactormod.f, include/fortran/ctthermomod.f, - include/fortran/cttransportmod.f, include/fortran/ctutilsmod.f, - lib/README, test_problems/.cvsignore, test_problems/Makefile.in, - test_problems/cxx_ex/.cvsignore, + include/surface.h, include/transport.h, test_problems/.cvsignore, + test_problems/Makefile.in, test_problems/cxx_ex/.cvsignore, test_problems/cxx_ex/eq1_blessed.csv, test_problems/cxx_ex/eq1_blessed.dat, test_problems/cxx_ex/gri30.inp, test_problems/cxx_ex/gri30.xml, @@ -4092,8 +4215,6 @@ Cantera/matlab/cantera/@XML_Node/hndl.m, Cantera/matlab/cantera/@XML_Node/value.m, Cantera/matlab/cantera/@XML_Node/write.m, - Cantera/matlab/cantera/@XML_Node/private/newxml.cpp, - Cantera/matlab/cantera/@XML_Node/private/xmlmethods.cpp, Cantera/matlab/cantera/examples/equil.m, Cantera/matlab/cantera/examples/ignite.m, Cantera/matlab/cantera/examples/ignite2.m, @@ -4445,13 +4566,8 @@ include/README, include/config.h, include/core.h, include/ctml.h, include/equilibrium.h, include/ftn_defs.h, include/integrators.h, include/kinetics.h, include/numerics.h, include/onedim.h, - include/surface.h, include/transport.h, - include/fortran/ctfdevmod.f, include/fortran/ctkineticsmod.f, - include/fortran/ctmixturemod.f, include/fortran/ctmod.f, - include/fortran/ctreactormod.f, include/fortran/ctthermomod.f, - include/fortran/cttransportmod.f, include/fortran/ctutilsmod.f, - lib/README, test_problems/.cvsignore, test_problems/Makefile.in, - test_problems/cxx_ex/.cvsignore, + include/surface.h, include/transport.h, test_problems/.cvsignore, + test_problems/Makefile.in, test_problems/cxx_ex/.cvsignore, test_problems/cxx_ex/eq1_blessed.csv, test_problems/cxx_ex/eq1_blessed.dat, test_problems/cxx_ex/gri30.inp, test_problems/cxx_ex/gri30.xml, diff --git a/INSTALLING b/INSTALLING deleted file mode 100644 index 2dcf239f6..000000000 --- a/INSTALLING +++ /dev/null @@ -1,147 +0,0 @@ - -Cantera should build 'out of the box' on systems running linux, -cygwin, Mac OS X, Solaris, and MS-Windows. The Windows build procedure -differs from the procedure for unix-like systems; it is described -after the unix build procedure. - -The Python scripting language must be installed before building -Cantera, since a few Python scripts are run during the build -process. Linux and Mac OS X systems come with Python preinstalled; for -other systems, Python can be downloaded from www.python.org. - - -==================================================================== - Unix/Linux Build Instructions -==================================================================== - -To build Cantera with a default configuration and install it in -/usr/local, type: - -./configure -make -make install - -To do 'make install', you may need to be super-user, or may need to -preface 'make install' by 'sudo' ('sudo make install'). - -Cantera applications will be put in /usr/local/bin, libraries will be -installed in a version-specific subdirectory of -/usr/local/lib/cantera, unix man pages will be installed under -/usr/share/man, C++ header files will be installed in -/usr/local/include/cantera, and various demos and data files will be -installed in subdirectories of /usr/local/cantera. - - -To install Cantera in a different directory: - -./configure --prefix=/installation/dir -make -make install - -Here '/installation/dir' should be replaced with the absolute path to -the installation directory. For example, to install in your home directory: - -./configure --prefix=$HOME -make -make install - -In this case, subdirectories bin, lib, include, man, and cantera will -be created within your home directory if they don't exist already, and -cantera will be installed into these directories. - - -Configuring the Environment ---------------------------- - -The build process will create a shell script 'cantera.cfg' that -configures the environment for Cantera. This script may be found in -directory 'cantera' within the installation directory -(i.e. '/usr/local/cantera'). This should be run by typing - -source /usr/local/cantera/cantera.cfg - -to set environment variables before using Cantera. It is recommended -to add this line to your shell login script, so that Cantera will be -correctly configured each time you log in. - - -The Python Interface --------------------- - -If Python 2.x is installed, and the Numeric package is installed, then -the Cantera Python interface will be built and installed. - - - -The MATLAB Toolbox ------------------- - -If MATLAB is present, the MATLAB toolbox will be built and installed. -If this is not desired, set environment variable BUILD_MATLAB_TOOLBOX -to anything but "y" before running the 'configure' script, or edit the 'configure' script to set - - - -Customizing ------------ - -The configure script may be customized by editing it to set the values -of various variables before running it. Alternatively, these variables -may be set in the environment before running configure. - -Some of the variables that may be set are listed here. - -MAKE set to 'make' utility compatible with GNU make - -CXX C++ compiler (default: 'g++') - -F77 Fortran 77 compiler (default: 'g77') - -PYTHON_CMD Python interpreter to use with Cantera - (default: 'python') - -MATLAB_CMD Matlab command (default: 'matlab') - - - - - -==================================================================== - Windows Build Instructions -==================================================================== - -Requirements: - -1) cygwin (www.cygwin.com) -2) python (www.python.org) -3) MS Visual C++ 6.0 -4) Compaq Visual Fortran 6.0 - -The Cantera build procedure for Windows requires the cygwin linux-like -environment, so that the 'configure' script can be run and the 'make' -utility used. Cygwin can be downloaded from www.cygwin.com. Only a -minimal cygwin installation is needed. In particular, no compilers are -required. During the installation of cygwin, you will be asked if text -files should use unix or DOS line endings; select DOS. - -Cantera can be built under Windows using Microsoft Visual C++ 6.0 and -Compaq Visual Fortran 6.0. - -To perform a Windows installation, open a cygwin shell window, go to the -top-level directory of the Cantera source tree, and type - -./configure - -By default, Cantera will be installed in c:/cantera; to change this, -specify the prefix option as described for the unix build procedure -above. - -After running configure, start Visual Studio and open workspace -win32/cantera.dsw. Set the build configuration to 'Release' and build -project 'all'. When this finishes, return to the cygwin shell and type - -make win -make win-install - -After these commands finish, you should have a complete Cantera -installation including the Python interface and the Matlab toolbox. diff --git a/Makefile.in b/Makefile.in index 83c2a1f07..cc377687f 100755 --- a/Makefile.in +++ b/Makefile.in @@ -1,11 +1,3 @@ -# -# $RCSfile$ -# $Author$ -# $Date$ -# $Revision$ -# -######################################################################## - export_dir = $(HOME)/sfdist version = @ctversion@ ct = $(export_dir)/cantera-$(version) @@ -14,16 +6,18 @@ build_clib = @BUILD_CLIB@ build_python = @BUILD_PYTHON@ build_f90 = @BUILD_F90@ build_matlab = @BUILD_MATLAB@ -build_particles = @BUILD_PARTICLES@ os_is_win = @OS_IS_WIN@ incl_user_code = @INCL_USER_CODE@ do_ranlib = @DO_RANLIB@ compact_install = @COMPACT_INSTALL@ use_dll = @USE_CLIB_DLL@ +cvs_tag = @CVSTAG@ +branch = -r $(cvs_tag) + prefix=@prefix@ -all: kernel user cxxlib hdr-collect clib fortran python matlab particles \ +all: hdr-collect kernel user cxxlib clib fortran python matlab \ utils datafiles # use this target on a Windows machine to build the Python and @@ -35,10 +29,10 @@ win: hdr-collect python matlab install: hdr-install kernel-install clib-install data-install f90-modules-install \ python-install \ - matlab-install particles-install tools-install finish-install + matlab-install tools-install finish-install win-install: hdr-install win-kernel-install data-install python-install \ - matlab-install particles-install finish-install + matlab-install finish-install @echo @echo Cantera has been successfully installed in @ct_dir@. @echo @@ -51,9 +45,9 @@ kernel: @INSTALL@ -d @buildbin@ cd ext; @MAKE@ cd Cantera/src; @MAKE@ -ifeq ($(do_ranlib),1) - @RANLIB@ @buildlib@/*.a -endif +#ifeq ($(do_ranlib),1) +# @RANLIB@ @buildlib@/*.a +#endif # build the user library user: @@ -123,7 +117,6 @@ endif # collect scattered header files and build the include directory hdr-collect: @INSTALL@ -d build/include/cantera - rm -r -f build/include/cantera/* @INSTALL@ -d build/include/cantera/kernel @INSTALL@ -d build/include/cantera/kernel/oneD @INSTALL@ -d build/include/cantera/kernel/zeroD @@ -131,22 +124,6 @@ hdr-collect: @INSTALL@ -d build/include/cantera/kernel/transport @INSTALL@ Cantera/cxx/include/*.h build/include/cantera @INSTALL@ config.h build/include/cantera - @INSTALL@ Cantera/src/*.h build/include/cantera/kernel - @INSTALL@ Cantera/src/oneD/*.h build/include/cantera/kernel/oneD - @INSTALL@ Cantera/src/zeroD/*.h build/include/cantera/kernel/zeroD - @INSTALL@ Cantera/src/converters/*.h build/include/cantera/kernel/converters - @INSTALL@ Cantera/src/transport/*.h build/include/cantera/kernel/transport - -particles: -ifeq ($(build_particles),1) - cd Cantera/cads; @MAKE@ -endif - -particles-install: -ifeq ($(build_particles),1) - cd Cantera/cads; @MAKE@ install -endif - python: @@ -166,7 +143,18 @@ ifneq ($(build_python),0) cd Cantera/python; @MAKE@ install ifeq ($(build_python),2) @INSTALL@ -d @ct_demodir@/python - @INSTALL@ Cantera/python/examples/*.py @ct_demodir@/python + @INSTALL@ -d @ct_demodir@/python/equilibrium + @INSTALL@ Cantera/python/examples/equilibrium/*.py \ + @ct_demodir@/python/equilibrium + @INSTALL@ Cantera/python/examples/equilibrium/*.cti \ + @ct_demodir@/python/equilibrium + @INSTALL@ -d @ct_demodir@/python/flames + @INSTALL@ Cantera/python/examples/flames/*.py \ + @ct_demodir@/python/flames + @INSTALL@ -d @ct_demodir@/python/kinetics + @INSTALL@ Cantera/python/examples/kinetics/*.py \ + @ct_demodir@/python/kinetics +# @INSTALL@ Cantera/python/examples/*.py @ct_demodir@/python @INSTALL@ -d @ct_tutdir@/python @INSTALL@ Cantera/python/tutorial/*.py \ @ct_tutdir@/python @@ -187,26 +175,12 @@ endif matlab-install: ifeq ($(build_matlab),1) cd Cantera/matlab; @MAKE@ install - @INSTALL@ -d @ct_demodir@/matlab - @INSTALL@ Cantera/matlab/cantera/examples/*.m @ct_demodir@/matlab - @INSTALL@ -d @ct_tutdir@/matlab - @INSTALL@ Cantera/matlab/cantera/tutorial/*.m @ct_tutdir@/matlab - chown -R @username@ @ct_demodir@/matlab - chown -R @username@ @ct_tutdir@/matlab endif finish-install: @INSTALL@ -d @ct_docdir@ @INSTALL@ -d @ct_bindir@ - - @INSTALL@ -d @ct_demodir@/cxx - @INSTALL@ Cantera/cxx/demos/*.cpp @ct_demodir@/cxx - @INSTALL@ Cantera/cxx/demos/*.h @ct_demodir@/cxx - @INSTALL@ Cantera/cxx/demos/*.csv @ct_demodir@/cxx - @INSTALL@ Cantera/cxx/demos/*.dat @ct_demodir@/cxx - @INSTALL@ Cantera/cxx/demos/Makefile.install @ct_demodir@/cxx/Makefile - chown -R @username@ @ct_demodir@/cxx - + (cd Cantera/cxx/demos; make install) @INSTALL@ -d @ct_demodir@/f77 @INSTALL@ Cantera/fortran/f77demos/*.f @ct_demodir@/f77 @INSTALL@ tools/templates/f77/demo_ftnlib.cpp @ct_demodir@/f77 @@ -231,6 +205,7 @@ endif @INSTALL@ tools/src/finish_install.py tools/bin (PYTHONPATH=''; @PYTHON_CMD@ tools/bin/finish_install.py @prefix@ @PYTHON_CMD@) chmod +x @ct_bindir@/ctnew + chmod +x @ct_bindir@/mixmaster cp -f @homedir@/setup_cantera @ct_bindir@ else cd Cantera/fortran/f77demos; sed s'/isentropic/ctlib/g' isentropic.dsp > ctlib.dsp @@ -249,6 +224,9 @@ test: example_codes datafiles run-matlab-demo: cd Cantera/matlab; @MAKE@ run-demo +test-matlab: + cd Cantera/matlab; @MAKE@ test-demo + run-python-demo: cd Cantera/python; @MAKE@ run-demo @@ -266,7 +244,7 @@ uninstall: cd tools; @MAKE@ uninstall clean: - rm -f *.*~ @buildlib@/*.* + rm -f *.*~ @buildlib@/*.* build/include/cantera/config.h cd Cantera; @MAKE@ clean cd tools; @MAKE@ clean cd ext; @MAKE@ clean @@ -284,23 +262,23 @@ ifeq ($(build_particles),1) cd Cantera/cads; @MAKE@ depends endif -changes: +ChangeLog: CVS/Entries tools/bin/cvs2cl.pl --prune - cvs commit -m' ' ChangeLog -export: changes +export: ChangeLog @INSTALL@ -d $(export_dir) if (test -d $(export_dir)/cantera); then rm -r -f $(export_dir)/cantera; fi - cd $(export_dir); cvs export -D 1/01/2010 cantera + if (test -d $(export_dir)/cantera-$(version)); then rm -r -f $(export_dir)/cantera-$(version); fi + cd $(export_dir); cvs export $(branch) cantera cd $(export_dir)/cantera; rm -r -f win32 cd $(export_dir); mv cantera cantera-$(version) -export-win: changes +export-win: ChangeLog @INSTALL@ -d $(export_dir) if (test -d $(export_dir)/cantera); then rm -r -f $(export_dir)/cantera; fi - cd $(export_dir); cvs export -D 1/01/2010 cantera + cd $(export_dir); cvs export $(branch) cantera cd $(export_dir)/cantera; rm -r -f win32 - cd $(export_dir)/cantera; cvs export -D 1/01/2010 win32 + cd $(export_dir)/cantera; cvs export $(branch) win32 cd $(export_dir); mv cantera cantera-$(version) pack: export @@ -309,6 +287,18 @@ pack: export tar cvf cantera-$(version).tar cantera-$(version)/*; \ gzip cantera-$(version).tar) +cf: + @INSTALL@ -d $(export_dir) + if (test -d $(export_dir)/cantera); then rm -r -f $(export_dir)/cantera; fi + cd $(export_dir); cvs export $(branch) cantera + cd $(export_dir)/cantera; rm -r -f win32 + (cd $(export_dir); \ + rm -f cantera-cf.tar.gz; \ + tar cvf cantera-cf.tar cantera/*; \ + gzip cantera-cf.tar; scp cantera-cf.tar.gz dggoodwin@cf-shell.sourceforge.net:cantera.tar.gz) + sshcf './runall' & + + #info: # echo '#define CANTERA_ROOT "@prefix@/cantera"' > include/ctdir.h diff --git a/README b/README deleted file mode 100755 index 1ca358479..000000000 --- a/README +++ /dev/null @@ -1,125 +0,0 @@ - - C A N T E R A - - release 1.5 - - 9/12/2003 - - Copyright (c) 2001-2003 California Institute of Technology - - - -License information -=================== - -See the file "License.txt" for information on the terms & conditions -for usage, and a DISCLAIMER OF ALL WARRANTIES. - -All trademarks referenced herein are property of their respective -holders. - - - -Building Cantera from the source code -===================================== - - -1) Unix/linux/cygwin build procedure ------------------------------------- - -Run the 'configure' script to build the Makefiles. By default, 'make install' -will install under '/usr/local.' If you want to install Cantera somewhere else, -run 'configure' with the 'prefix' option: - -configure --prefix=$HOME/my_cantera_dir - -If necessary, edit 'configure' to set options appropriate for your -system. - -After running 'configure', type: - -make -make install - -The last one may need to be run as super-user. - -To test the installation, type - -make test - -After running 'make install', run script '/usr/local/cantera/setup_cantera' -to configure the environment before using Cantera. - -The build process requires a 'make' utility compatible with GNU -'make'. If this has a different name on your system, define -environment variable MAKE to the name (e..g. 'gmake') before running -'configure'. - -This procedure also builds the Python and MATLAB interfaces if -your system is configured to use them. The requirements are: - -- Python 2.x + NumPy for the Python interface - -- MATLAB 6.x for the MATLAB toolbox -If either is missing or an error occurs, the interface is not installed. - - -2) Windows Build Procedure --------------------------- - -Cantera can be built under Windows using Visual C++ 6.0 and Compaq Visual -Fortran 6.0. In the 'win32' directory, open workspace 'cantera.dsw'. Set -the active project to 'examples', and the active configuration to -'Win32 - Release'. Build the project, and execute 'examples.exe' from -the Build menu to verify that it works. - -If you plan to build the Python or MATLAB interfaces, you also need to -build project 'ct'. This creates a DLL file which by default is placed -in the Windows system directory. Edit the project settings if you want -to put it somewhere else. - - - -Configuring Matlab ---------------------- - -The Matlab toolbox uses one compiled MEX program written in C++. -Before you can build it, Matlab needs to be configured -for your compiler. In Matlab type: - -mex -setup - -and enter the number for the compiler you wish to use. - -The Matlab toolbox is built automatically by the Cantera build -process, but can also be built manually. To build the MEX file needed -for the Matlab toolbox, within Matlab go to to the 'cantera' directory -containing the toolbox and type 'buildux' on unix/linux/Mac OS X, or -'buildwin' on Windows. - - -Configuring Python ---------------------- - -Before you can build the Python interface from the source, you need to -have Python 2.0 or greater, and the 'Numeric' package must be -installed. Python is available at www.python.org, and Numeric is -available through SourceForge. - - -Customizing ------------ - -Before running configure, the following environment variables may be set: - -MAKE set to 'make' utility compatible with GNU make - -CXX C++ compiler - -F77 Fortran 77 compiler - -PYTHON_CMD Python interpreter to use with Cantera - (default: 'python') - -MATLAB_CMD Matlab command (default: 'matlab') - -Additional customization can be done by editing the configure script. - diff --git a/apps/MixMaster/KineticsFrame.py b/apps/MixMaster/KineticsFrame.py index a1c289d1f..42ce35d97 100644 --- a/apps/MixMaster/KineticsFrame.py +++ b/apps/MixMaster/KineticsFrame.py @@ -10,6 +10,20 @@ _CUTOFF = 1.e-15 _ATOL = 1.e-15 _RTOL = 1.e-7 +def showsvg(): + f = open('_rp_svg.html','w') + f.write('\n') + f.close() + webbrowser.open('file:///'+os.getcwd()+'/_rp_svg.html') + +def showpng(): + f = open('_rp_png.html','w') + f.write('\n') + f.close() + webbrowser.open('file:///'+os.getcwd()+'/_rp_png.html') + + class KineticsFrame(Frame): def __init__(self,master): Frame.__init__(self,master) @@ -171,10 +185,16 @@ class ReactionKineticsFrame(Frame): self.top = top self.g = self.top.mix.g nr = self.g.nReactions() - self.eqs=Text(self,width=40,height=nr) + self.eqs=Text(self,width=40,height=30) self.data = [] + self.start = DoubleVar() + if nr > 30: + self.end = self.start.get()+30 + else: + self.end = self.start.get()+nr + for i in range(4): - self.data.append(Text(self,width=15,height=nr)) + self.data.append(Text(self,width=15,height=30)) for n in range(nr): s = self.g.reactionEqn(n) @@ -187,16 +207,41 @@ class ReactionKineticsFrame(Frame): Label(self, text='Rev ROP').grid(column=2,row=0,sticky=W+E+N) Label(self, text='Net ROP').grid(column=3,row=0,sticky=W+E+N) Label(self, text='Kp').grid(column=4,row=0,sticky=W+E+N) -# Button(self, text='View Reaction Paths', command=self.viewRxnPaths).grid(column=0,row=2,sticky=W+E+N) + + self.scfr = Frame(self) + self.scfr.config(relief=GROOVE,bd=4) + +## self.sc = Scrollbar(self.scfr,command=self.show, +## variable = self.start, +## orient='horizontal',length=400) + self.sc = Scale(self.scfr,command=self.show, + variable=self.start, + orient='vertical',length=400) +# self.sc.config(cnf={'from':0,'to':nr},variable = self.start) + #self.sc.bind('',self.couple) + #self.scfr.bind('',self.decouple) + self.sc.pack(side=RIGHT,fill=Y) + self.scfr.grid(row=0,column=6,rowspan=10,sticky=N+E+W) self.grid(column=0,row=0) + self.hide() +## def decouple(self,event=None): +## d = DoubleVar() +## xx = self.start.get() +## d.set(xx) +## self.sc.config(variable = d) + +## def couple(self,event=None): +## self.sc.config(variable = self.start) + def hide(self): # self.vis.set(0) self.master.withdraw() - def show(self): + def show(self,e=None,b=None,c=None): v = self.vis.get() + print e,b,c #if v == 0: # self.hide() # return @@ -209,8 +254,13 @@ class ReactionKineticsFrame(Frame): self.data[0].delete(1.0,END) self.data[1].delete(1.0,END) self.data[2].delete(1.0,END) - self.data[3].delete(1.0,END) - for n in range(nr): + self.data[3].delete(1.0,END) + self.eqs.delete(1.0,END) + + n0 = int(self.start.get()) + nn = nr - n0 + if nn > 30: nn = 30 + for n in range(n0, nn+n0): s = '%12.5e \n' % (frop[n],) self.data[0].insert(END,s) s = '%12.5e \n' % (rrop[n],) @@ -218,8 +268,8 @@ class ReactionKineticsFrame(Frame): s = '%12.5e \n' % (frop[n] - rrop[n],) self.data[2].insert(END,s) s = '%12.5e \n' % (kp[n],) - self.data[3].insert(END,s) - + self.data[3].insert(END,s) + self.eqs.insert(END, self.g.reactionEqn(n)+'\n') class ReactionPathFrame(Frame): @@ -275,11 +325,12 @@ class ReactionPathFrame(Frame): self.b = rxnpath.PathBuilder(self.g) self.fmt = StringVar() - self.fmt.set('gif') + self.fmt.set('svg') i = 1 fmtframe = Frame(self) fmtframe.config(relief=GROOVE, bd=4) self.browser = IntVar() + self.browser.set(1) Checkbutton(fmtframe, text = 'Display in Web Browser', variable=self.browser, command=self.show).grid(column=0,columnspan=6,row=0) @@ -338,7 +389,11 @@ class ReactionPathFrame(Frame): if self.browser.get() == 1: fmt = self.fmt.get() os.system('dot -T'+fmt+' rxnpath.dot > rxnpath.'+fmt) - webbrowser.open('file:///'+os.getcwd()+'/rxnpath.'+fmt) + if fmt == 'svg': showsvg() + elif fmt == 'png': showpng() + else: + path = 'file:///'+os.getcwd()+'/rxnpath.'+fmt + webbrowser.open(path) try: self.cv.delete(self.image) except: @@ -346,14 +401,18 @@ class ReactionPathFrame(Frame): self.cv.configure(width=0, height=0) else: os.system(self.dot.get()) - self.rp = PhotoImage(file='rxnpath.gif') + self.rp = None try: self.cv.delete(self.image) except: pass - self.cv.configure(width=self.rp.width(), - height=self.rp.height()) - - self.image = self.cv.create_image(0,0,anchor=NW, - image=self.rp) + try: + self.rp = PhotoImage(file='rxnpath.gif') + self.cv.configure(width=self.rp.width(), + height=self.rp.height()) + + self.image = self.cv.create_image(0,0,anchor=NW, + image=self.rp) + except: + pass diff --git a/apps/MixMaster/Mix.py b/apps/MixMaster/Mix.py index ac502f22c..8d7b6c41f 100644 --- a/apps/MixMaster/Mix.py +++ b/apps/MixMaster/Mix.py @@ -1,5 +1,6 @@ from Cantera import GasConstant, OneAtm -from Cantera.num import zeros +from Cantera.num import zeros, ones +from utilities import handleError def spdict(phase, x): nm = phase.speciesNames() @@ -96,33 +97,41 @@ class Mix: def set(self, temperature = None, pressure = None, density = None, enthalpy = None, - entropy = None, equil = 0): + entropy = None, intEnergy = None, equil = 0): total_mass = self.totalMass() if temperature and pressure: self.g.setState_TP(temperature, pressure) if equil: - self.g.equilibrate('TP') + self.g.equilibrate('TP',solver=0) elif temperature and density: self.g.setState_TR(temperature, density) if equil: - self.g.equilibrate('TV') + self.g.equilibrate('TV',solver=0) elif pressure and enthalpy: self.g.setState_HP(enthalpy, pressure) if equil: - self.g.equilibrate('HP') + self.g.equilibrate('HP',solver=0) elif pressure and entropy: self.g.setState_SP(entropy, pressure) if equil: - self.g.equilibrate('SP') + self.g.equilibrate('SP',solver=0) elif density and entropy: self.g.setState_SV(entropy, 1.0/density) if equil: - self.g.equilibrate('SV') + self.g.equilibrate('SV',solver=0) + + elif density and intEnergy: + self.g.setState_UV(intEnergy, 1.0/density) + if equil: + self.g.equilibrate('UV',solver=0) + +# else: +# handleError('unsupported property pair', warning=1) total_moles = total_mass/self.g.meanMolecularWeight() diff --git a/apps/MixMaster/ThermoFrame.py b/apps/MixMaster/ThermoFrame.py index 11f9ff1a9..c2c52f5ab 100644 --- a/apps/MixMaster/ThermoFrame.py +++ b/apps/MixMaster/ThermoFrame.py @@ -21,6 +21,7 @@ class ThermoFrame(Frame): self.config(relief=GROOVE, bd=4) self.top = top self.mix = self.top.mix + self.warn = 0 self.internal = Frame(self) self.internal.pack(side=LEFT,anchor=N+W,padx=2,pady=2) self.controls=Frame(self.internal) @@ -69,9 +70,9 @@ class ThermoFrame(Frame): for i in range(len(props)): self.prop.append(ThermoProp(self.entries, self, i, props[i], 0.0, units[i], defaultunit[i])) - self.prop[-1].entry.bind("",self.setState) - self.last2 = self.prop[2] - self.last1 = self.prop[3] + #self.prop[-1].entry.bind("",self.setState) + self.last2 = self.prop[3] + self.last1 = self.prop[2] self.prop[0].checked.set(1) self.prop[0].check() self.prop[1].checked.set(1) @@ -95,6 +96,10 @@ class ThermoFrame(Frame): self.prop[_ENTROPY].set(self.mix.g.entropy_mass()) def setState(self,event=None): + if event: + self.warn = 0 + else: + self.warn = 1 self.top.mixfr.update() i = self.equil.get() optlist = ['frozen','equilibrium'] @@ -131,7 +136,8 @@ class ThermoFrame(Frame): self.mix.set(density = self.prop[_DENSITY].get(), intEnergy = self.prop[_INTENERGY].get()) else: - handleError("unsupported property pair") + if self.warn > 0: + handleError("unsupported property pair") self.top.update() diff --git a/apps/MixMaster/ThermoProp.py b/apps/MixMaster/ThermoProp.py index 8c81beab1..fd9f6b03f 100644 --- a/apps/MixMaster/ThermoProp.py +++ b/apps/MixMaster/ThermoProp.py @@ -1,6 +1,17 @@ from Tkinter import * from UnitChooser import UnitVar +_tv = ['Temperature','Internal Energy','Enthalpy'] +_pv = ['Pressure', 'Density'] + +def badpair(a,b): + if a.name in _tv: + if not b.name in _pv: + return 1 + else: + if not b.name in _tv: + return 1 + class ThermoProp: def __init__(self, master, thermoframe, row, name, value, units, defaultunit=0): self.value = DoubleVar() @@ -10,6 +21,7 @@ class ThermoProp: self.entry.v.config(state=DISABLED,bg='lightgray') self.checked=IntVar() self.checked.set(0) + self.name = name self.c=Checkbutton(master, text=name, variable=self.checked, @@ -20,11 +32,23 @@ class ThermoProp: self.c.grid(column=0,row=row, sticky=W+N) def check(self): - self._check() - self.thermoframe.last2.checked.set(0) - self.thermoframe.last2._check() - self.thermoframe.last2 = self.thermoframe.last1 - self.thermoframe.last1 = self + if self == self.thermoframe.last1: + self.checked.set(1) + return + elif self == self.thermoframe.last2: + self.checked.set(1) + self.thermoframe.last2 = self.thermoframe.last1 + self.thermoframe.last1 = self + return +# elif badpair(self, self.thermoframe.last1): +# self.checked.set(0) +# return + + self._check() + self.thermoframe.last2.checked.set(0) + self.thermoframe.last2._check() + self.thermoframe.last2 = self.thermoframe.last1 + self.thermoframe.last1 = self def _check(self): if self.isChecked(): diff --git a/config.h.in b/config.h.in index db13250b7..45ecbd162 100755 --- a/config.h.in +++ b/config.h.in @@ -96,4 +96,10 @@ typedef int ftnlen; // Fortran hidden string length type //--------------------- compile options ---------------------------- #undef USE_PCH +//--------------------- optional phase models ---------------------- +#undef WITH_METAL +#undef WITH_LATTICE_SOLID +#undef WITH_STOICH_SUBSTANCE +#undef WITH_PURE_FLUIDS + #endif diff --git a/config/configure b/config/configure index be03156ff..303a113a3 100755 --- a/config/configure +++ b/config/configure @@ -271,7 +271,7 @@ PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="Cantera.README" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CVF_LIBDIR USE_CLIB_DLL local_inst local_python_inst python_prefix python_win_prefix ctversion homedir ct_libdir ct_incdir ct_incroot ct_bindir ct_datadir ct_demodir ct_templdir ct_mandir ct_tutdir ct_docdir ct_dir COMPACT_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os username ctroot buildinc buildlib buildbin MAKE ARCHIVE DO_RANLIB RANLIB SOEXT SHARED PIC LCXX_FLAGS LCXX_END_LIBS USERDIR INCL_USER_CODE KERNEL BUILD_CK LIB_DIR build_lapack build_blas BLAS_LAPACK_LIBS BLAS_LAPACK_DIR build_with_f2c LOCAL_LIB_DIRS LOCAL_LIBS CANTERA_PARTICLES_DIR BUILD_PARTICLES CT_SHARED_LIB F77FLAGS PYTHON_CMD WIN_PYTHON_CMD BUILD_PYTHON MATLAB_CMD BUILD_MATLAB BUILD_CLIB export_name INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC F77 FFLAGS ac_ct_F77 FLIBS BUILD_F90 F90 F90FLAGS F90BUILDFLAGS precompile_headers CXX_DEPENDS OS_IS_DARWIN OS_IS_WIN OS_IS_CYGWIN SHARED_CTLIB mex_ext F77_EXT CXX_EXT OBJ_EXT EXE_EXT local_math_libs math_libs SO LDSHARED LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CVF_LIBDIR USE_CLIB_DLL local_inst local_python_inst python_prefix python_win_prefix ctversion homedir ct_libdir ct_incdir ct_incroot ct_bindir ct_datadir ct_demodir ct_templdir ct_mandir ct_tutdir ct_docdir ct_dir COMPACT_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os username ctroot buildinc buildlib buildbin MAKE ARCHIVE DO_RANLIB RANLIB SOEXT SHARED PIC LCXX_FLAGS LCXX_END_LIBS USERDIR INCL_USER_CODE phase_object_files phase_header_files KERNEL KERNEL_OBJ BUILD_CK LIB_DIR build_lapack build_blas BLAS_LAPACK_LIBS BLAS_LAPACK_DIR build_with_f2c LOCAL_LIB_DIRS LOCAL_LIBS CT_SHARED_LIB F77FLAGS PYTHON_CMD BUILD_PYTHON NUMARRAY_INC_DIR NUMARRAY_HOME CANTERA_PYTHON_HOME CVSTAG MATLAB_CMD BUILD_MATLAB BUILD_CLIB export_name INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT CC CFLAGS ac_ct_CC F77 FFLAGS ac_ct_F77 FLIBS F90 BUILD_F90 F90FLAGS F90BUILDFLAGS precompile_headers CXX_DEPENDS OS_IS_DARWIN OS_IS_WIN OS_IS_CYGWIN SHARED_CTLIB mex_ext F77_EXT CXX_EXT OBJ_EXT EXE_EXT local_math_libs math_libs SO LDSHARED EXTRA_LINK LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1267,11 +1267,12 @@ SHARED_CTLIB=0 OS_IS_DARWIN=0 OS_IS_WIN=0 OS_IS_CYGWIN=0 +EXTRA_LINK="" mex_ext=mexglx case $ac_sys_system in - Darwin*) OS_IS_DARWIN=1; mex_ext=mexmac;; + Darwin*) OS_IS_DARWIN=1; EXTRA_LINK="-framework Accelerate"; mex_ext=mexmac;; CYGWIN*) OS_IS_CYGWIN=1; mex_ext=dll;; esac @@ -1311,16 +1312,6 @@ if test "x${prefix}" = "xNONE"; then #${ac_default_prefix} fi local_inst=0 -# if test ! -d ${prefix}; then -# echo -# echo "********************************************************************" -# echo "Installation directory ${prefix} does not exist. Either create it and" -# echo "re-run configure, or specify another installation directory using the" -# echo "prefix option:" -# echo " ./configure --prefix=" -# echo "********************************************************************" -# exit 1 -#fi fi if test "x${OS_IS_WIN}" = "x1"; then @@ -1331,6 +1322,7 @@ echo "Cantera will be installed in ${prefix}" + # # Determination of Python site-package directory location # @@ -1402,7 +1394,7 @@ if test "x${OS_IS_DARWIN}" = "x1"; then COMPACT_INSTALL=1 fi -if test -n $COMPACT_INSTALL; then +if test $COMPACT_INSTALL -gt 0; then ct_libdir=${prefix}/lib/${ctversion} ct_datadir=${prefix}/data ct_demodir=${prefix}/demos @@ -1427,20 +1419,6 @@ fi -# -# Cantera directory structure -# -#if test -z "$CANTERA_ROOT"; then CANTERA_ROOT=$prefix/cantera; fi -#AC_SUBST(CANTERA_LIBDIR) -#AC_SUBST(CANTERA_INCDIR) -#if test -z "$CT_TOOLS_BIN"; then CT_TOOLS_BIN=$CANTERA_ROOT/tools/bin; fi -#AC_SUBST(CT_TOOLS_BIN) -#AC_SUBST(CANTERA_BINDIR) -#if test -z "$CANTERA_EXAMPLES_DIR"; then CANTERA_EXAMPLES_DIR=$CANTERA_ROOT/examples; fi -#AC_SUBST(CANTERA_EXAMPLES_DIR) -#AC_SUBST(CANTERA_DATADIR) - - # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 @@ -1523,7 +1501,6 @@ test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- - # the root of the source tree ctroot=`(cd ..;pwd)` builddir=$target @@ -1624,6 +1601,7 @@ if test -n "$USER_SRC_DIR"; then USERDIR=$USER_SRC_DIR; INCL_USER_CODE=1; fi # The Cantera Kernel ######################################################### KERNEL='base' +KERNEL_OBJ='$(BASE_OBJ)' BUILD_CK= NEED_CKREADER= @@ -1637,55 +1615,101 @@ NEED_TRANSPORT= NEED_ZEROD= NEED_ONED= -if test "$ENABLE_THERMO" = "y"; then KERNEL=$KERNEL' 'thermo; fi -if test "$ENABLE_KINETICS" = "y"; then KERNEL=$KERNEL' 'kinetics; fi - -if test "$ENABLE_CK" = "y" -then -BUILD_CK=1 -NEED_CKREADER=1 +if test "$ENABLE_THERMO" = "y"; then + KERNEL=$KERNEL' 'thermo; + KERNEL_OBJ=$KERNEL_OBJ' $(THERMO_OBJ)' fi -if test "$ENABLE_TRANSPORT" = "y" -then KERNEL=$KERNEL' 'trprops -NEED_LAPACK=1 -NEED_MATH=1 -NEED_TRANSPORT=1 +if test "$WITH_METAL" = "y"; then + cat >>confdefs.h <<\_ACEOF +#define WITH_METAL 1 +_ACEOF + + hdrs=$hdrs' MetalPhase.h' +fi +if test "$WITH_STOICH_SUBSTANCE" = "y"; then + cat >>confdefs.h <<\_ACEOF +#define WITH_STOICH_SUBSTANCE 1 +_ACEOF + + hdrs=$hdrs' StoichSubstance.h' + objs=$objs' StoichSubstance.o' +fi +if test "$WITH_PURE_FLUIDS" = "y"; then + cat >>confdefs.h <<\_ACEOF +#define WITH_PURE_FLUIDS 1 +_ACEOF + + hdrs=$hdrs' PureFluidPhase.h' + objs=$objs' PureFluidPhase.o' +fi +if test "$WITH_LATTICE_SOLID" = "y"; then + cat >>confdefs.h <<\_ACEOF +#define WITH_LATTICE_SOLID 1 +_ACEOF + + hdrs=$hdrs' LatticeSolidPhase.h' + objs=$objs' LatticeSolidPhase.o' +fi +phase_object_files=$objs +phase_header_files=$hdrs + + + +if test "$ENABLE_KINETICS" = "y"; then + KERNEL=$KERNEL' 'kinetics; + KERNEL_OBJ=$KERNEL_OBJ' $(KINETICS_OBJ) $(HETEROKIN_OBJ)' fi -if test "$ENABLE_EQUIL" = "y" -then KERNEL=$KERNEL' 'equil -NEED_LAPACK=1 -NEED_RECIPES=1 +if test "$ENABLE_CK" = "y" ; then + BUILD_CK=1 + NEED_CKREADER=1 + KERNEL=$KERNEL' 'ck fi -if test "$ENABLE_REACTORS" = "y" -then KERNEL=$KERNEL' 'reactor -NEED_CVODE=1 -NEED_ZEROD=1 +if test "$ENABLE_TRANSPORT" = "y" ; then + KERNEL=$KERNEL' 'trprops + NEED_LAPACK=1 + NEED_MATH=1 + NEED_TRANSPORT=1 fi -if test "$ENABLE_SOLVERS" = "y" -then KERNEL=$KERNEL' 'solvers -NEED_CVODE=1 -NEED_MATH=1 +if test "$ENABLE_EQUIL" = "y" ; then + KERNEL=$KERNEL' 'equil + KERNEL_OBJ=$KERNEL_OBJ' $(EQUIL_OBJ)' + NEED_LAPACK=1 + NEED_RECIPES=1 fi -if test "$ENABLE_FLOW1D" = "y" -then KERNEL=$KERNEL' 'flow1D -NEED_LAPACK=1 -NEED_MATH=1 -NEED_ONED=1 +if test "$ENABLE_REACTORS" = "y" ; then + KERNEL=$KERNEL' 'reactor + NEED_CVODE=1 + NEED_ZEROD=1 fi -if test "$ENABLE_RXNPATH" = "y" -then KERNEL=$KERNEL' 'rpath +if test "$ENABLE_SOLVERS" = "y" ; then + KERNEL=$KERNEL' 'solvers + KERNEL_OBJ=$KERNEL_OBJ' $(SOLVERS_OBJ)' + NEED_CVODE=1 + NEED_MATH=1 fi -if test "$ENABLE_TPX" = "y" -then KERNEL=$KERNEL' 'tpx -NEED_TPX=1 -cat >>confdefs.h <<\_ACEOF +if test "$ENABLE_FLOW1D" = "y" ; then + KERNEL=$KERNEL' 'flow1D + NEED_LAPACK=1 + NEED_MATH=1 + NEED_ONED=1 +fi + +if test "$ENABLE_RXNPATH" = "y" ; then + KERNEL=$KERNEL' 'rpath + KERNEL_OBJ=$KERNEL_OBJ' $(RPATH_OBJ)' +fi + +if test "$ENABLE_TPX" = "y" ; then + KERNEL=$KERNEL' 'tpx + NEED_TPX=1 + cat >>confdefs.h <<\_ACEOF #define INCL_PURE_FLUIDS 1 _ACEOF @@ -1695,6 +1719,7 @@ fi + ######################################################## # BLAS and LAPACK ######################################################## @@ -1702,13 +1727,16 @@ fi # if lapack and blas libraries have been specified, then skip building the # supplied libraries + build_lapack=0 build_blas=0 -if test -z "$BLAS_LAPACK_LIBS" -then BLAS_LAPACK_LIBS="-lctlapack -lctblas" -BLAS_LAPACK_DIR="$buildlib" -build_blas=1 -build_lapack=1 +if test -z "$BLAS_LAPACK_LIBS"; then + if test "x$OS_IS_DARWIN" = "x0"; then + BLAS_LAPACK_LIBS="-lctlapack -lctblas" + BLAS_LAPACK_DIR="$buildlib" + build_blas=1 + build_lapack=1 + fi fi @@ -1736,6 +1764,7 @@ if test -n $BUILD_WITH_F2C ; then fi fi fi + # # Determine if you need the f2c library at link time # -> Note, Linux systems already have the g2c library @@ -1796,6 +1825,15 @@ fi if test -n "$NEED_F2C" then LOCAL_LIBS=$LOCAL_LIBS' '-lctf2c +else + case $ac_sys_system in + Linux) LOCAL_LIBS=$LOCAL_LIBS' '-lg2c;; + Darwin*) LOCAL_LIBS=$LOCAL_LIBS' '-lg2c;; + esac +fi + +if test -n "$NEED_CKREADER" +then LOCAL_LIBS=$LOCAL_LIBS' '-lconverters fi LOCAL_LIB_DIRS= @@ -1806,30 +1844,6 @@ fi - -#-------------------------------------------------- -# Particle Library interface -#-------------------------------------------------- -BUILD_PARTICLES=0 - -if test "$ENABLE_PARTICLES" = "y" -then -BUILD_PARTICLES=1 -NEED_PARTICLES=1 -if test -z "$CANTERA_PARTICLES_DIR" -then - if test -z "$PARTICLES_DIR" - then - CANTERA_PARTICLES_DIR=$CANTERA_ROOT/Cantera/cads - else - CANTERA_PARTICLES_DIR=$CANTERA_ROOT/$PARTICLES_DIR - fi -fi - -CXXFLAGS="$CXXFLAGS -DHAVE_PARTICLES -I$CANTERA_PARTICLES_DIR/src" -fi - - #------------------------------------------------- # Language Interfaces #------------------------------------------------- @@ -1841,15 +1855,9 @@ fi # Before turning on this interface, we do a rudimentary check # to make sure that the F90 compiler can be found # -BUILD_F90=0 -if test "x$BUILD_F90_INTERFACE" = "xy"; then - BUILD_F90=1 -# AC_CHECK_PROG(foundF90, $F90, yes, no) -# if test x$foundF90 = "xno" ; then -# echo 'Did not find the Fortran 90 compiler, '$F90 -# echo " -> Turning off F90 interface even though it was requested" -# BUILD_F90=0 -# fi +BUILD_F90=1 +if test "x$BUILD_F90_INTERFACE" = "xn"; then + BUILD_F90=0 fi if test "x$F77FLAGS" = "x"; then @@ -1858,20 +1866,24 @@ fi BUILD_CLIB=1 -# + + + +#---------------------------------------------------------------- # Python Interface -# +#---------------------------------------------------------------- + BUILD_PYTHON=0 if test "x$PYTHON_PACKAGE" = "xfull"; then BUILD_PYTHON=2 +elif test "x$PYTHON_PACKAGE" = "xdefault"; then + BUILD_PYTHON=2 elif test "x$PYTHON_PACKAGE" = "xminimal"; then BUILD_PYTHON=1 fi -WIN_PYTHON_CMD=python -if test $BUILD_PYTHON -gt 0; then - if test "$PYTHON_CMD" = "default" -o \ - "$PYTHON_CMD"x = "x"; then +if test "$PYTHON_CMD" = "default" -o \ + "$PYTHON_CMD"x = "x"; then for ac_prog in python2 python do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -1917,94 +1929,27 @@ fi done test -n "$PYTHON_CMD" || PYTHON_CMD=""none"" - if test "$PYTHON_CMD" = "none" ; then - echo "ERROR: python requested, but no python executable found!" + if test "$PYTHON_CMD" = "none"; then + echo + echo "********************************************************************" + echo "Configuration error. Python is required to build Cantera, but it" + echo "cannot be found. Set environment variable PYTHON_CMD to the full path to" + echo "the Python interpreter on your system, and run configure again." + echo "********************************************************************" + exit 1 else - echo "Python command set to " $PYTHON_CMD + echo "Python command set by configure to " $PYTHON_CMD fi - if test "x$OS_IS_WIN" = "x1"; then - for ac_prog in python -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_WIN_PYTHON_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 else - case $WIN_PYTHON_CMD in - [\\/]* | ?:[\\/]*) - ac_cv_path_WIN_PYTHON_CMD="$WIN_PYTHON_CMD" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_WIN_PYTHON_CMD="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - ;; -esac -fi -WIN_PYTHON_CMD=$ac_cv_path_WIN_PYTHON_CMD - -if test -n "$WIN_PYTHON_CMD"; then - echo "$as_me:$LINENO: result: $WIN_PYTHON_CMD" >&5 -echo "${ECHO_T}$WIN_PYTHON_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$WIN_PYTHON_CMD" && break -done -test -n "$WIN_PYTHON_CMD" || WIN_PYTHON_CMD=""none"" - - WIN_PYTHON_CMD=`cygpath -a -m "$WIN_PYTHON_CMD"` - echo "Windows Python command: $WIN_PYTHON_CMD" - fi - else echo "Python command preset to $PYTHON_CMD" - if test "x$OS_IS_WIN" = "x1"; then - WIN_PYTHON_CMD=`cygpath -a -m "$PYTHON_CMD"` - echo "Windows Python Command set to $WIN_PYTHON_CMD" - fi - fi - - if test "$PYTHON_CMD" = "none"; then - echo - echo "********************************************************************" - echo "Configuration error. Python is required to build Cantera, but it" - echo "cannot be found. Set environment variable PYTHON_CMD to the full path to" - echo "the Python interpreter on your system, and run configure again." - echo "********************************************************************" - exit 1 - fi -else - PYTHON_CMD=none - WIN_PYTHON_CMD=none fi -if test "x$OS_IS_WIN" = "x1"; then -cat >>confdefs.h <<_ACEOF -#define PYTHON_EXE "$WIN_PYTHON_CMD" -_ACEOF -else cat >>confdefs.h <<_ACEOF #define PYTHON_EXE "$PYTHON_CMD" _ACEOF -fi if test "$USE_NUMERIC" = "y"; then cat >>confdefs.h <<\_ACEOF @@ -2013,6 +1958,24 @@ _ACEOF fi +NUMARRAY_INC_DIR="" +if test -n "$NUMARRAY_HOME"; then +NUMARRAY_INC_DIR="$NUMARRAY_HOME/include/python" +fi + + + + +#-------------------------- +# CVS Tag +#-------------------------- +CVSTAG=`${PYTHON_CMD} ../tools/src/findtag.py ..` +if test "x$CVSTAG" = "x"; then +CVSTAG="HEAD" +fi + + + # # Matlab Interface # @@ -3397,8 +3360,8 @@ echo "${ECHO_T}${has_sstream}" >&6 # Fortran #--------------------------------- -# if test -z $build_with_f2c; then -ac_ext=f +if test x"$build_with_f2c" = "x0"; then + ac_ext=f ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu @@ -3490,7 +3453,7 @@ fi # Provide some information about the compiler. -echo "$as_me:3493:" \ +echo "$as_me:3456:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 @@ -3615,9 +3578,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # if G77 is defined, then add a flag to turn off adding a second underscore # to procedures that have an underscore in the name -if test -n "$G77"; then - FFLAGS=$FFLAGS' -fno-second-underscore' -#fi + if test -n "$G77"; then + FFLAGS=$FFLAGS' -fno-second-underscore' + fi ac_ext=f @@ -3667,7 +3630,7 @@ _ACEOF # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_verb" -(eval echo $as_me:3670: \"$ac_link\") >&5 +(eval echo $as_me:3633: \"$ac_link\") >&5 ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'` echo "$ac_f77_v_output" >&5 FFLAGS=$ac_save_FFLAGS @@ -3747,7 +3710,7 @@ _ACEOF # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_cv_prog_f77_v" -(eval echo $as_me:3750: \"$ac_link\") >&5 +(eval echo $as_me:3713: \"$ac_link\") >&5 ac_f77_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'` echo "$ac_f77_v_output" >&5 FFLAGS=$ac_save_FFLAGS @@ -3915,16 +3878,80 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu + override_f77_libs=0; case $ac_sys_system in - Darwin*) FLIBS='-lstdc++ -lg2c'; override_f77_libs=1; SHARED_CTLIB=0;; + Darwin*) FLIBS='-lstdc++ -lg2c -lcc_dynamic'; override_f77_libs=1; SHARED_CTLIB=0;; esac -if test -n $override_f77_libs; then +if test $override_f77_libs -gt 0; then echo The Fortran 77 libraries on this platform are not correctly determined by echo the configuration process. They are being manually set to echo FLIBS = $FLIBS fi + +fi + +#-------------------------------------------- + + +if test -n ${BUILD_F90}; then + echo F90 = $F90 + if test "$F90" = "default" -o \ + "$F90"x = "x"; then + for ac_prog in f95 gfortran g95 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_F90+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $F90 in + [\\/]* | ?:[\\/]*) + ac_cv_path_F90="$F90" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_F90="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +F90=$ac_cv_path_F90 + +if test -n "$F90"; then + echo "$as_me:$LINENO: result: $F90" >&5 +echo "${ECHO_T}$F90" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F90" && break +done +test -n "$F90" || F90=""none"" + + if test "$F90" = "none" ; then + echo "ERROR: Fortran 90 requested, but no Fortran 90/95 compiler found!" + else + echo "Fortran compiler set to " $F90 + fi + else + echo "Fortran 90/95 compiler preset to $F90" + fi fi has_f90=no @@ -3951,6 +3978,24 @@ EOF f90type=unknown fi # + msg=`${F90} --version &> f90out` + isgfortran=`grep -c 'GNU Fortran 95' f90out` + if test "x${isgfortran}" != "x0"; then + f90type="gfortran" + f90opts="-fno-second-underscore -I. -I${ct_incdir}" + f90buildopts="-fno-second-underscore -I." + fi + + isg95=`grep -c 'G95' f90out` + if test "x${isg95}" != "x0"; then + f90type="g95" + f90opts="-fno-second-underscore -I. -I${ct_incdir}" + f90buildopts="-fno-second-underscore -I." + case $ac_sys_system in + Darwin*) FLIBS='-lg2c -lcc_dynamic';; + esac + fi + msg=`${F90} -V &> f90out` isnag=`grep -c NAGWare f90out` if test "x${isnag}" != "x0"; then @@ -4053,6 +4098,9 @@ fi # Set info about shared libraries. + + + # SO is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin echo "$as_me:$LINENO: checking SO" >&5 @@ -4739,7 +4787,10 @@ s,@LCXX_FLAGS@,$LCXX_FLAGS,;t t s,@LCXX_END_LIBS@,$LCXX_END_LIBS,;t t s,@USERDIR@,$USERDIR,;t t s,@INCL_USER_CODE@,$INCL_USER_CODE,;t t +s,@phase_object_files@,$phase_object_files,;t t +s,@phase_header_files@,$phase_header_files,;t t s,@KERNEL@,$KERNEL,;t t +s,@KERNEL_OBJ@,$KERNEL_OBJ,;t t s,@BUILD_CK@,$BUILD_CK,;t t s,@LIB_DIR@,$LIB_DIR,;t t s,@build_lapack@,$build_lapack,;t t @@ -4749,13 +4800,14 @@ s,@BLAS_LAPACK_DIR@,$BLAS_LAPACK_DIR,;t t s,@build_with_f2c@,$build_with_f2c,;t t s,@LOCAL_LIB_DIRS@,$LOCAL_LIB_DIRS,;t t s,@LOCAL_LIBS@,$LOCAL_LIBS,;t t -s,@CANTERA_PARTICLES_DIR@,$CANTERA_PARTICLES_DIR,;t t -s,@BUILD_PARTICLES@,$BUILD_PARTICLES,;t t s,@CT_SHARED_LIB@,$CT_SHARED_LIB,;t t s,@F77FLAGS@,$F77FLAGS,;t t s,@PYTHON_CMD@,$PYTHON_CMD,;t t -s,@WIN_PYTHON_CMD@,$WIN_PYTHON_CMD,;t t s,@BUILD_PYTHON@,$BUILD_PYTHON,;t t +s,@NUMARRAY_INC_DIR@,$NUMARRAY_INC_DIR,;t t +s,@NUMARRAY_HOME@,$NUMARRAY_HOME,;t t +s,@CANTERA_PYTHON_HOME@,$CANTERA_PYTHON_HOME,;t t +s,@CVSTAG@,$CVSTAG,;t t s,@MATLAB_CMD@,$MATLAB_CMD,;t t s,@BUILD_MATLAB@,$BUILD_MATLAB,;t t s,@BUILD_CLIB@,$BUILD_CLIB,;t t @@ -4777,8 +4829,8 @@ s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t s,@FLIBS@,$FLIBS,;t t -s,@BUILD_F90@,$BUILD_F90,;t t s,@F90@,$F90,;t t +s,@BUILD_F90@,$BUILD_F90,;t t s,@F90FLAGS@,$F90FLAGS,;t t s,@F90BUILDFLAGS@,$F90BUILDFLAGS,;t t s,@precompile_headers@,$precompile_headers,;t t @@ -4796,6 +4848,7 @@ s,@local_math_libs@,$local_math_libs,;t t s,@math_libs@,$math_libs,;t t s,@SO@,$SO,;t t s,@LDSHARED@,$LDSHARED,;t t +s,@EXTRA_LINK@,$EXTRA_LINK,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF diff --git a/config/configure.in b/config/configure.in index 793ed6727..f9801e6f1 100755 --- a/config/configure.in +++ b/config/configure.in @@ -23,11 +23,12 @@ SHARED_CTLIB=0 OS_IS_DARWIN=0 OS_IS_WIN=0 OS_IS_CYGWIN=0 +EXTRA_LINK="" mex_ext=mexglx case $ac_sys_system in - Darwin*) OS_IS_DARWIN=1; mex_ext=mexmac;; + Darwin*) OS_IS_DARWIN=1; EXTRA_LINK="-framework Accelerate"; mex_ext=mexmac;; CYGWIN*) OS_IS_CYGWIN=1; mex_ext=dll;; esac @@ -67,16 +68,6 @@ if test "x${prefix}" = "xNONE"; then #${ac_default_prefix} fi local_inst=0 -# if test ! -d ${prefix}; then -# echo -# echo "********************************************************************" -# echo "Installation directory ${prefix} does not exist. Either create it and" -# echo "re-run configure, or specify another installation directory using the" -# echo "prefix option:" -# echo " ./configure --prefix=" -# echo "********************************************************************" -# exit 1 -#fi fi if test "x${OS_IS_WIN}" = "x1"; then @@ -87,6 +78,7 @@ AC_SUBST(prefix) AC_SUBST(local_inst) + # # Determination of Python site-package directory location # @@ -158,7 +150,7 @@ if test "x${OS_IS_DARWIN}" = "x1"; then COMPACT_INSTALL=1 fi -if test -n $COMPACT_INSTALL; then +if test $COMPACT_INSTALL -gt 0; then ct_libdir=${prefix}/lib/${ctversion} ct_datadir=${prefix}/data ct_demodir=${prefix}/demos @@ -183,22 +175,7 @@ AC_SUBST(ct_docdir) AC_SUBST(ct_dir) AC_SUBST(COMPACT_INSTALL) -# -# Cantera directory structure -# -#if test -z "$CANTERA_ROOT"; then CANTERA_ROOT=$prefix/cantera; fi -#AC_SUBST(CANTERA_LIBDIR) -#AC_SUBST(CANTERA_INCDIR) -#if test -z "$CT_TOOLS_BIN"; then CT_TOOLS_BIN=$CANTERA_ROOT/tools/bin; fi -#AC_SUBST(CT_TOOLS_BIN) -#AC_SUBST(CANTERA_BINDIR) -#if test -z "$CANTERA_EXAMPLES_DIR"; then CANTERA_EXAMPLES_DIR=$CANTERA_ROOT/examples; fi -#AC_SUBST(CANTERA_EXAMPLES_DIR) -#AC_SUBST(CANTERA_DATADIR) - - AC_CANONICAL_SYSTEM() - # the root of the source tree ctroot=`(cd ..;pwd)` builddir=$target @@ -284,6 +261,7 @@ AC_SUBST(INCL_USER_CODE) # The Cantera Kernel ######################################################### KERNEL='base' +KERNEL_OBJ='$(BASE_OBJ)' BUILD_CK= NEED_CKREADER= @@ -297,58 +275,93 @@ NEED_TRANSPORT= NEED_ZEROD= NEED_ONED= -if test "$ENABLE_THERMO" = "y"; then KERNEL=$KERNEL' 'thermo; fi -if test "$ENABLE_KINETICS" = "y"; then KERNEL=$KERNEL' 'kinetics; fi - -if test "$ENABLE_CK" = "y" -then -BUILD_CK=1 -NEED_CKREADER=1 +if test "$ENABLE_THERMO" = "y"; then + KERNEL=$KERNEL' 'thermo; + KERNEL_OBJ=$KERNEL_OBJ' $(THERMO_OBJ)' fi -if test "$ENABLE_TRANSPORT" = "y" -then KERNEL=$KERNEL' 'trprops -NEED_LAPACK=1 -NEED_MATH=1 -NEED_TRANSPORT=1 +if test "$WITH_METAL" = "y"; then + AC_DEFINE(WITH_METAL) + hdrs=$hdrs' MetalPhase.h' +fi +if test "$WITH_STOICH_SUBSTANCE" = "y"; then + AC_DEFINE(WITH_STOICH_SUBSTANCE) + hdrs=$hdrs' StoichSubstance.h' + objs=$objs' StoichSubstance.o' +fi +if test "$WITH_PURE_FLUIDS" = "y"; then + AC_DEFINE(WITH_PURE_FLUIDS) + hdrs=$hdrs' PureFluidPhase.h' + objs=$objs' PureFluidPhase.o' +fi +if test "$WITH_LATTICE_SOLID" = "y"; then + AC_DEFINE(WITH_LATTICE_SOLID) + hdrs=$hdrs' LatticeSolidPhase.h' + objs=$objs' LatticeSolidPhase.o' +fi +phase_object_files=$objs +phase_header_files=$hdrs +AC_SUBST(phase_object_files) +AC_SUBST(phase_header_files) + +if test "$ENABLE_KINETICS" = "y"; then + KERNEL=$KERNEL' 'kinetics; + KERNEL_OBJ=$KERNEL_OBJ' $(KINETICS_OBJ) $(HETEROKIN_OBJ)' fi -if test "$ENABLE_EQUIL" = "y" -then KERNEL=$KERNEL' 'equil -NEED_LAPACK=1 -NEED_RECIPES=1 +if test "$ENABLE_CK" = "y" ; then + BUILD_CK=1 + NEED_CKREADER=1 + KERNEL=$KERNEL' 'ck fi -if test "$ENABLE_REACTORS" = "y" -then KERNEL=$KERNEL' 'reactor -NEED_CVODE=1 -NEED_ZEROD=1 +if test "$ENABLE_TRANSPORT" = "y" ; then + KERNEL=$KERNEL' 'trprops + NEED_LAPACK=1 + NEED_MATH=1 + NEED_TRANSPORT=1 fi -if test "$ENABLE_SOLVERS" = "y" -then KERNEL=$KERNEL' 'solvers -NEED_CVODE=1 -NEED_MATH=1 +if test "$ENABLE_EQUIL" = "y" ; then + KERNEL=$KERNEL' 'equil + KERNEL_OBJ=$KERNEL_OBJ' $(EQUIL_OBJ)' + NEED_LAPACK=1 + NEED_RECIPES=1 fi -if test "$ENABLE_FLOW1D" = "y" -then KERNEL=$KERNEL' 'flow1D -NEED_LAPACK=1 -NEED_MATH=1 -NEED_ONED=1 +if test "$ENABLE_REACTORS" = "y" ; then + KERNEL=$KERNEL' 'reactor + NEED_CVODE=1 + NEED_ZEROD=1 fi -if test "$ENABLE_RXNPATH" = "y" -then KERNEL=$KERNEL' 'rpath +if test "$ENABLE_SOLVERS" = "y" ; then + KERNEL=$KERNEL' 'solvers + KERNEL_OBJ=$KERNEL_OBJ' $(SOLVERS_OBJ)' + NEED_CVODE=1 + NEED_MATH=1 fi -if test "$ENABLE_TPX" = "y" -then KERNEL=$KERNEL' 'tpx -NEED_TPX=1 -AC_DEFINE(INCL_PURE_FLUIDS) +if test "$ENABLE_FLOW1D" = "y" ; then + KERNEL=$KERNEL' 'flow1D + NEED_LAPACK=1 + NEED_MATH=1 + NEED_ONED=1 +fi + +if test "$ENABLE_RXNPATH" = "y" ; then + KERNEL=$KERNEL' 'rpath + KERNEL_OBJ=$KERNEL_OBJ' $(RPATH_OBJ)' +fi + +if test "$ENABLE_TPX" = "y" ; then + KERNEL=$KERNEL' 'tpx + NEED_TPX=1 + AC_DEFINE(INCL_PURE_FLUIDS) fi AC_SUBST(KERNEL) +AC_SUBST(KERNEL_OBJ) AC_SUBST(BUILD_CK) AC_SUBST(LIB_DIR) @@ -359,13 +372,16 @@ AC_SUBST(LIB_DIR) # if lapack and blas libraries have been specified, then skip building the # supplied libraries + build_lapack=0 build_blas=0 -if test -z "$BLAS_LAPACK_LIBS" -then BLAS_LAPACK_LIBS="-lctlapack -lctblas" -BLAS_LAPACK_DIR="$buildlib" -build_blas=1 -build_lapack=1 +if test -z "$BLAS_LAPACK_LIBS"; then + if test "x$OS_IS_DARWIN" = "x0"; then + BLAS_LAPACK_LIBS="-lctlapack -lctblas" + BLAS_LAPACK_DIR="$buildlib" + build_blas=1 + build_lapack=1 + fi fi AC_SUBST(build_lapack) @@ -393,6 +409,7 @@ if test -n $BUILD_WITH_F2C ; then fi fi fi + # # Determine if you need the f2c library at link time # -> Note, Linux systems already have the g2c library @@ -453,6 +470,15 @@ fi if test -n "$NEED_F2C" then LOCAL_LIBS=$LOCAL_LIBS' '-lctf2c +else + case $ac_sys_system in + Linux) LOCAL_LIBS=$LOCAL_LIBS' '-lg2c;; + Darwin*) LOCAL_LIBS=$LOCAL_LIBS' '-lg2c;; + esac +fi + +if test -n "$NEED_CKREADER" +then LOCAL_LIBS=$LOCAL_LIBS' '-lconverters fi LOCAL_LIB_DIRS= @@ -463,30 +489,6 @@ fi AC_SUBST(LOCAL_LIB_DIRS) AC_SUBST(LOCAL_LIBS) - -#-------------------------------------------------- -# Particle Library interface -#-------------------------------------------------- -BUILD_PARTICLES=0 - -if test "$ENABLE_PARTICLES" = "y" -then -BUILD_PARTICLES=1 -NEED_PARTICLES=1 -if test -z "$CANTERA_PARTICLES_DIR" -then - if test -z "$PARTICLES_DIR" - then - CANTERA_PARTICLES_DIR=$CANTERA_ROOT/Cantera/cads - else - CANTERA_PARTICLES_DIR=$CANTERA_ROOT/$PARTICLES_DIR - fi -fi -AC_SUBST(CANTERA_PARTICLES_DIR) -CXXFLAGS="$CXXFLAGS -DHAVE_PARTICLES -I$CANTERA_PARTICLES_DIR/src" -fi - -AC_SUBST(BUILD_PARTICLES) #------------------------------------------------- # Language Interfaces #------------------------------------------------- @@ -498,15 +500,9 @@ AC_SUBST(CT_SHARED_LIB) # Before turning on this interface, we do a rudimentary check # to make sure that the F90 compiler can be found # -BUILD_F90=0 -if test "x$BUILD_F90_INTERFACE" = "xy"; then - BUILD_F90=1 -# AC_CHECK_PROG(foundF90, $F90, yes, no) -# if test x$foundF90 = "xno" ; then -# echo 'Did not find the Fortran 90 compiler, '$F90 -# echo " -> Turning off F90 interface even though it was requested" -# BUILD_F90=0 -# fi +BUILD_F90=1 +if test "x$BUILD_F90_INTERFACE" = "xn"; then + BUILD_F90=0 fi if test "x$F77FLAGS" = "x"; then @@ -515,64 +511,66 @@ fi AC_SUBST(F77FLAGS) BUILD_CLIB=1 -# + + + +#---------------------------------------------------------------- # Python Interface -# +#---------------------------------------------------------------- + BUILD_PYTHON=0 if test "x$PYTHON_PACKAGE" = "xfull"; then BUILD_PYTHON=2 +elif test "x$PYTHON_PACKAGE" = "xdefault"; then + BUILD_PYTHON=2 elif test "x$PYTHON_PACKAGE" = "xminimal"; then BUILD_PYTHON=1 fi -WIN_PYTHON_CMD=python -if test $BUILD_PYTHON -gt 0; then - if test "$PYTHON_CMD" = "default" -o \ - "$PYTHON_CMD"x = "x"; then +if test "$PYTHON_CMD" = "default" -o \ + "$PYTHON_CMD"x = "x"; then AC_PATH_PROGS(PYTHON_CMD, python2 python, "none") - if test "$PYTHON_CMD" = "none" ; then - echo "ERROR: python requested, but no python executable found!" + if test "$PYTHON_CMD" = "none"; then + echo + echo "********************************************************************" + echo "Configuration error. Python is required to build Cantera, but it" + echo "cannot be found. Set environment variable PYTHON_CMD to the full path to" + echo "the Python interpreter on your system, and run configure again." + echo "********************************************************************" + exit 1 else - echo "Python command set to " $PYTHON_CMD + echo "Python command set by configure to " $PYTHON_CMD fi - if test "x$OS_IS_WIN" = "x1"; then - AC_PATH_PROGS(WIN_PYTHON_CMD, python, "none") - WIN_PYTHON_CMD=`cygpath -a -m "$WIN_PYTHON_CMD"` - echo "Windows Python command: $WIN_PYTHON_CMD" - fi - else - echo "Python command preset to $PYTHON_CMD" - if test "x$OS_IS_WIN" = "x1"; then - WIN_PYTHON_CMD=`cygpath -a -m "$PYTHON_CMD"` - echo "Windows Python Command set to $WIN_PYTHON_CMD" - fi - fi - - if test "$PYTHON_CMD" = "none"; then - echo - echo "********************************************************************" - echo "Configuration error. Python is required to build Cantera, but it" - echo "cannot be found. Set environment variable PYTHON_CMD to the full path to" - echo "the Python interpreter on your system, and run configure again." - echo "********************************************************************" - exit 1 - fi else - PYTHON_CMD=none - WIN_PYTHON_CMD=none + echo "Python command preset to $PYTHON_CMD" fi + AC_SUBST(BUILD_PYTHON) -if test "x$OS_IS_WIN" = "x1"; then -AC_DEFINE_UNQUOTED(PYTHON_EXE,"$WIN_PYTHON_CMD") -else AC_DEFINE_UNQUOTED(PYTHON_EXE,"$PYTHON_CMD") -fi if test "$USE_NUMERIC" = "y"; then AC_DEFINE(HAS_NUMERIC) fi +NUMARRAY_INC_DIR="" +if test -n "$NUMARRAY_HOME"; then +NUMARRAY_INC_DIR="$NUMARRAY_HOME/include/python" +fi +AC_SUBST(NUMARRAY_INC_DIR) +AC_SUBST(NUMARRAY_HOME) +AC_SUBST(CANTERA_PYTHON_HOME) + +#-------------------------- +# CVS Tag +#-------------------------- +CVSTAG=`${PYTHON_CMD} ../tools/src/findtag.py ..` +if test "x$CVSTAG" = "x"; then +CVSTAG="HEAD" +fi +AC_SUBST(CVSTAG) + + # # Matlab Interface # @@ -647,27 +645,47 @@ AC_MSG_RESULT(${has_sstream}) # Fortran #--------------------------------- -# if test -z $build_with_f2c; then -AC_PROG_F77() +if test x"$build_with_f2c" = "x0"; then + AC_PROG_F77() # if G77 is defined, then add a flag to turn off adding a second underscore # to procedures that have an underscore in the name -if test -n "$G77"; then - FFLAGS=$FFLAGS' -fno-second-underscore' -#fi + if test -n "$G77"; then + FFLAGS=$FFLAGS' -fno-second-underscore' + fi dnl Checks for libraries. AC_F77_LIBRARY_LDFLAGS() + override_f77_libs=0; case $ac_sys_system in - Darwin*) FLIBS='-lstdc++ -lg2c'; override_f77_libs=1; SHARED_CTLIB=0;; + Darwin*) FLIBS='-lstdc++ -lg2c -lcc_dynamic'; override_f77_libs=1; SHARED_CTLIB=0;; esac -if test -n $override_f77_libs; then +if test $override_f77_libs -gt 0; then echo The Fortran 77 libraries on this platform are not correctly determined by echo the configuration process. They are being manually set to echo FLIBS = $FLIBS fi + +fi + +#-------------------------------------------- + + +if test -n ${BUILD_F90}; then + echo F90 = $F90 + if test "$F90" = "default" -o \ + "$F90"x = "x"; then + AC_PATH_PROGS(F90, f95 gfortran g95, "none") + if test "$F90" = "none" ; then + echo "ERROR: Fortran 90 requested, but no Fortran 90/95 compiler found!" + else + echo "Fortran compiler set to " $F90 + fi + else + echo "Fortran 90/95 compiler preset to $F90" + fi fi has_f90=no @@ -693,6 +711,24 @@ EOF f90type=unknown fi # + msg=`${F90} --version &> f90out` + isgfortran=`grep -c 'GNU Fortran 95' f90out` + if test "x${isgfortran}" != "x0"; then + f90type="gfortran" + f90opts="-fno-second-underscore -I. -I${ct_incdir}" + f90buildopts="-fno-second-underscore -I." + fi + + isg95=`grep -c 'G95' f90out` + if test "x${isg95}" != "x0"; then + f90type="g95" + f90opts="-fno-second-underscore -I. -I${ct_incdir}" + f90buildopts="-fno-second-underscore -I." + case $ac_sys_system in + Darwin*) FLIBS='-lg2c -lcc_dynamic';; + esac + fi + msg=`${F90} -V &> f90out` isnag=`grep -c NAGWare f90out` if test "x${isnag}" != "x0"; then @@ -781,6 +817,9 @@ fi # Set info about shared libraries. AC_SUBST(SO) AC_SUBST(LDSHARED) + +AC_SUBST(EXTRA_LINK) + # SO is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin AC_MSG_CHECKING(SO) diff --git a/configure b/configure index ddf198d26..4c14ca7f6 100755 --- a/configure +++ b/configure @@ -1,10 +1,5 @@ #!/bin/sh # -# $Source$ -# $Author$ -# $Revision$ -# $Date$ -# ####################################################################### # # Cantera Configuration File @@ -33,46 +28,13 @@ CANTERA_CONFIG_PREFIX=${CANTERA_CONFIG_PREFIX:=""} -#---------------------------------------------------------------------- -# MS-Windows Options -#---------------------------------------------------------------------- -# -# These options only need to be set if you are building Cantera on -# a Windows PC. -# -# Cantera will be installed by default in c:\cantera. Change this to -# install it somewhere else. Use forward slashes in the path name. -CANTERA_INSTALL_DIR=${CANTERA_INSTALL_DIR:="c:/cantera"} - -# On a PC running MS-Windows, Cantera can be built either using -# Microsoft Visual Studio, with the Visual C++ and (optionally) -# Visual Fortran compilers, or using the linux-like cygwin -# environment with the g++ and g77 compilers. Set this to "y" to use -# Visual Studio. -USE_VISUAL_STUDIO=${USE_VISUAL_STUDIO:="y"} - -# If you are using Visual Studio, set this to the location of the -# directory containing the Fortran libraries. This is only needed to -# build the Matlab interface. -FORTRAN_LIB_DIR="D:\Program Files\Microsoft Visual Studio\DF98\LIB" - -# -# If you are using Visual Studio, set this variable to indicates -# whether you want to use DLL's. Note you need this for MSVCv7.0 -# but this is turned off for MSVCv6.0 -# USE_DLL=yes - #---------------------------------------------------------------------- # Language Interfaces #---------------------------------------------------------------------- # # Cantera has several programming language interfaces. Select the ones # you want to build. The default is to try to build all language -# interfaces. The Python interface will be built by default, the -# MATLAB interface will too if MATLAB is found, the Fortran 90/95 -# interface will be built if a Fortran 90/95 compiler is found on your -# system. You can customize these defaults by setting parameters in -# this section. +# interfaces. # # #----------------- Python -------------------------------------------- @@ -85,17 +47,19 @@ FORTRAN_LIB_DIR="D:\Program Files\Microsoft Visual Studio\DF98\LIB" # Cantera. # # If you plan to work in Python, or you want to use the graphical -# MixMaster application, then you need the Cantera Python Package. If, -# on the other hand, you will only use Cantera from some other -# language (e.g. MATLAB or Fortran 90/95) and only need Python to -# process .cti files, then you only need a minimal subset of the +# MixMaster application, then you need the full Cantera Python +# Package. If, on the other hand, you will only use Cantera from some +# other language (e.g. MATLAB or Fortran 90/95) and only need Python +# to process .cti files, then you only need a minimal subset of the # package (actually, only one file). -# Set PYTHON_PACKAGE to one of these two strings: +# Set PYTHON_PACKAGE to one of these three strings: # full install everything needed to use Cantera from Python # minimal install only enough to process .cti files +# default try to do a full installation, but fall back to a minimal +# one in case of errors -PYTHON_PACKAGE=${PYTHON_PACKAGE:="full"} +PYTHON_PACKAGE=${PYTHON_PACKAGE:="default"} # Cantera needs to know where to find the Python interpreter. If @@ -107,9 +71,19 @@ PYTHON_CMD=${PYTHON_CMD:="default"} # The Cantera Python interface can be built with either the numarray # or Numeric packages. Set this to "y" to use Numeric, or anything -# else to use numarray. -USE_NUMERIC=${USE_NUMERIC:="n"} - +# else to use numarray. Using numarray is preferred. +USE_NUMERIC=${USE_NUMERIC:="default"} + +# If numarray was installed using the --home option, set this to the +# home directory for numarray. +# NUMARRAY_HOME=${NUMARRAY_HOME:="$HOME/python_modules"} + +# If you want to install the Cantera Python package somewhere other +# than the default 'site-packages' directory within the Python library +# directory, then set this to the desired directory. This is useful when +# you do not have write access to the Python library directory. +# CANTERA_PYTHON_HOME=${CANTERA_PYTHON_HOME:="$HOME/python_modules"} + # Set this to 'y' when site packages must be put in system directories # but Cantera tutorials must be put in user space. An alternative to # doing this is to put everything in user space by running this script @@ -121,6 +95,7 @@ SET_PYTHON_SITE_PACKAGE_TOPDIR=${SET_PYTHON_SITE_PACKAGE_TOPDIR:="n"} PYTHON_SITE_PACKAGE_TOPDIR=${PYTHON_SITE_PACKAGE_TOPDIR:="/usr/local"} + #----------- MATLAB -------------------------------------------------- # This variable controls whether the MATLAB toolbox will be built. It @@ -136,7 +111,6 @@ PYTHON_SITE_PACKAGE_TOPDIR=${PYTHON_SITE_PACKAGE_TOPDIR:="/usr/local"} # # Note that you may need to run 'mex -setup' within MATLAB to # configure it for your C++ compiler before running this script. - BUILD_MATLAB_TOOLBOX=${BUILD_MATLAB_TOOLBOX:="default"} @@ -153,18 +127,19 @@ BUILD_MATLAB_TOOLBOX=${BUILD_MATLAB_TOOLBOX:="default"} # "n" Do not build the Fortran 90/95 interface, even if a # Fortran 90/95 compiler is installed. -BUILD_F90_INTERFACE=${BUILD_F90_INTERFACE:="n"} +BUILD_F90_INTERFACE=${BUILD_F90_INTERFACE:="default"} - -# The Fortran 90/95 compiler. -F90=${F90:=f95} +# The Fortran 90/95 compiler. If set to "default", the script will +# look for a Fortran 90/95 compiler on your system by the name of +# "f95", "gfortran", or "g95". +F90=${F90:="default"} # Compiler option flags for the Fortran 90/95 compiler. If you are # using the Absoft or the NAG compiler, additional options specific to # these compilers will be added automatically, and you do not need to # specify them here. Otherwise, add any required compiler-specific # flags here. -F90FLAGS=${F90FLAGS:='-O2'} +F90FLAGS=${F90FLAGS:='-O3 -g'} #---------------------------------------------------------------------- @@ -201,10 +176,16 @@ USER_SRC_DIR="Cantera/user" # don't change this # thermodynamic properties ENABLE_THERMO='y' +# optional phase types. These +WITH_LATTICE_SOLID='y' +WITH_METAL='y' +WITH_STOICH_SUBSTANCE='y' +WITH_PURE_FLUIDS='y' + # if set to 'y', the ck2cti program that converts Chemkin input files # to Cantera format will be built. If you don't use Chemkin format # files, or if you run ck2cti on some other machine, you can set this to 'n'. -ENABLE_CK='y' +ENABLE_CK='y' # homogeneous and heterogeneous kinetics ENABLE_KINETICS='y' @@ -248,7 +229,8 @@ ENABLE_TPX='y' # (The settings shown here are appropriate if you are using the ATLAS # libraries.) # -#BLAS_LAPACK_LIBS='-llapack -lf77blas -lcblas -latlas' +#BLAS_LAPACK_LIBS='-llapack -lblas' +#'-llapack -lf77blas -lcblas -latlas' #BLAS_LAPACK_DIR='/usr/lib' # # @@ -279,11 +261,11 @@ CXX=${CXX:=g++} CC=${CC:=gcc} # C++ compiler flags -CXXFLAGS=${CXXFLAGS:="-O2 -g -Wall"} +CXXFLAGS=${CXXFLAGS:="-O3 -Wall"} # the C++ flags required for linking. Uncomment if additional flags # need to be passed to the linker. -#LCXX_FLAGS="-framework vecLib" +#LCXX_FLAGS="-framework Accelerate" # Ending libraries to tack onto the linking of all C++ programs LCXX_END_LIBS=${LCXX_END_LIBS:="-lm"} @@ -323,11 +305,11 @@ F77=${F77:=g77} # Fortran 77 compiler flags. Note that the Fortran compiler flags must be set # to produce object code compatible with the C/C++ compiler you are using. -FFLAGS=${FFLAGS:='-O2 -g'} +FFLAGS=${FFLAGS:='-O3 -g'} # the additional Fortran flags required for linking, if any. Leave commented # out if no additional flags are required. -#LFORT_FLAGS="-lF77 -lFI77" +LFORT_FLAGS="-lcc_dynamic" #------------------------------------------------------ @@ -361,8 +343,7 @@ CT_SHARED_LIB=${CT_SHARED_LIB:=clib} RPFONT=${RPFONT:="Helvetica"} -CANTERA_VERSION=${CANTERA_VERSION:="1.5.5r3"} - +CANTERA_VERSION=${CANTERA_VERSION:="1.6.0"} #----------------------------------------------------------------------- #------------------- don't change anything below!! --------------------- @@ -426,6 +407,13 @@ export USE_VISUAL_STUDIO export FORTRAN_LIB_DIR export CANTERA_INSTALL_DIR export USE_NUMERIC +export NUMARRAY_HOME +export CANTERA_PYTHON_HOME + +export WITH_LATTICE_SOLID +export WITH_METAL +export WITH_STOICH_SUBSTANCE +export WITH_PURE_FLUIDS cd config chmod +x ./configure @@ -447,4 +435,39 @@ fi # ./configure $CCPREFIX $1 $2 $3 $4 +#-------------- deprecated options ------------------------------------ +# +#---------------------------------------------------------------------- +# MS-Windows Options +#---------------------------------------------------------------------- +# +# These options only need to be set if you are building Cantera on +# a Windows PC. +# +# NOTE: These options are now deprecated. You should build Cantera +# using Visual Studio .NET on Windows PCs, and not use this script +# unless you are doing a unix-like build using cygwin. +# +# Cantera will be installed by default in c:\cantera. Change this to +# install it somewhere else. Use forward slashes in the path name. +#CANTERA_INSTALL_DIR=${CANTERA_INSTALL_DIR:="c:/cantera"} + +# On a PC running MS-Windows, Cantera can be built either using +# Microsoft Visual Studio, with the Visual C++ and (optionally) +# Visual Fortran compilers, or using the linux-like cygwin +# environment with the g++ and g77 compilers. Set this to "y" to use +# Visual Studio. +#USE_VISUAL_STUDIO=${USE_VISUAL_STUDIO:="y"} + +# If you are using Visual Studio, set this to the location of the +# directory containing the Fortran libraries. This is only needed to +# build the Matlab interface. +#FORTRAN_LIB_DIR="D:\Program Files\Microsoft Visual Studio\DF98\LIB" + +# +# If you are using Visual Studio, set this variable to indicates +# whether you want to use DLL's. Note you need this for MSVCv7.0 +# but this is turned off for MSVCv6.0 +# USE_DLL=yes + diff --git a/data/inputs/elements.xml b/data/inputs/elements.xml index 68f27f51f..8b47d8537 100644 --- a/data/inputs/elements.xml +++ b/data/inputs/elements.xml @@ -1,102 +1,102 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/inputs/nasa.cti b/data/inputs/nasa.cti index aac35d682..3161ebe5b 100644 --- a/data/inputs/nasa.cti +++ b/data/inputs/nasa.cti @@ -11456,12 +11456,9 @@ species(name = "Fe3O4(s)", species(name = "H2O(s)", atoms = " H:2 O:1 ", thermo = ( - NASA( [ 200.00, 1000.00], [ 5.296779700E+00, -6.757492470E-02, + NASA( [ 200.00, 273.15], [ 5.296779700E+00, -6.757492470E-02, 5.169421090E-04, -1.438533600E-06, 1.525647940E-09, - -3.622665570E+04, -1.792204280E+01] ), - NASA( [ 1000.00, 273.15], [ 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00] ) + -3.622665570E+04, -1.792204280E+01] ) ) # note = "L 8/89" ) @@ -11469,12 +11466,9 @@ species(name = "H2O(s)", species(name = "H2O(L)", atoms = " H:2 O:1 ", thermo = ( - NASA( [ 273.15, 1000.00], [ 7.255750050E+01, -6.624454020E-01, + NASA( [ 273.15, 600.00], [ 7.255750050E+01, -6.624454020E-01, 2.561987460E-03, -4.365919230E-06, 2.781789810E-09, - -4.188654990E+04, -2.882801370E+02] ), - NASA( [ 1000.00, 600.00], [ 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00] ) + -4.188654990E+04, -2.882801370E+02] ) ) # note = "L 8/89" ) @@ -11484,9 +11478,6 @@ species(name = "H2SO4(L)", thermo = ( NASA( [ 300.00, 1000.00], [ 9.942152500E+00, 2.178636900E-02, 3.497445800E-06, -3.354885700E-09, 1.169958600E-12, - -1.018597900E+05, -4.439869500E+01] ), - NASA( [ 1000.00, 1000.00], [ 9.942152500E+00, 2.178636900E-02, - 3.497445800E-06, -3.354885700E-09, 1.169958600E-12, -1.018597900E+05, -4.439869500E+01] ) ) # note = "J 9/77" diff --git a/data/inputs/nasa_condensed.cti b/data/inputs/nasa_condensed.cti new file mode 100644 index 000000000..6b6a80b97 --- /dev/null +++ b/data/inputs/nasa_condensed.cti @@ -0,0 +1,4946 @@ + +species(name = "AL(cr)", + atoms = " Al:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.010401910E+00, 1.207697430E-02, + -2.620835560E-05, 2.642824130E-08, -9.019165130E-12, + -6.544541960E+02, -5.004712540E+00] ), + NASA( [ 1000.00, 933.61], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "CODA89" + ) + +species(name = "AL(L)", + atoms = " Al:1 ", + thermo = ( + NASA( [ 933.61, 1000.00], [ 3.818625510E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.496518080E+01, -1.752297040E+01] ), + NASA( [ 1000.00, 6000.00], [ 3.818625510E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.496518080E+01, -1.752297040E+01] ) + ) + # note = "CODA89" + ) + +species(name = "ALBr3(s)", + atoms = " Al:1 Br:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.844795600E+00, 2.092633400E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.417051000E+04, -1.787690100E+01] ), + NASA( [ 1000.00, 370.60], [ 5.844795600E+00, 2.092633400E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.417051000E+04, -1.787690100E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALBr3(L)", + atoms = " Al:1 Br:3 ", + thermo = ( + NASA( [ 370.60, 1000.00], [ 1.502975000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.478372900E+04, -6.079910100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.502975000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.478372900E+04, -6.079910100E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALCL3(s)", + atoms = " Al:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.809337500E+00, 1.057098500E-02, + -3.285924800E-09, 0.000000000E+00, 0.000000000E+00, + -8.766678300E+04, -3.450172200E+01] ), + NASA( [ 1000.00, 465.70], [ 7.809337500E+00, 1.057098500E-02, + -3.285924800E-09, 0.000000000E+00, 0.000000000E+00, + -8.766678300E+04, -3.450172200E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALCL3(L)", + atoms = " Al:1 Cl:3 ", + thermo = ( + NASA( [ 465.70, 1000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.566207900E+04, -6.521841900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.566207900E+04, -6.521841900E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF3(a)", + atoms = " Al:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -3.083527200E+00, 7.035031700E-02, + -1.224940500E-04, 7.624136200E-08, 1.584368700E-12, + -1.829403200E+05, 9.357068300E+00] ), + NASA( [ 1000.00, 728.00], [ -3.083527200E+00, 7.035031700E-02, + -1.224940500E-04, 7.624136200E-08, 1.584368700E-12, + -1.829403200E+05, 9.357068300E+00] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF3(b)", + atoms = " Al:1 F:3 ", + thermo = ( + NASA( [ 728.00, 1000.00], [ 9.503450500E+00, 5.130250900E-03, + -3.711676400E-06, 1.205235700E-09, 0.000000000E+00, + -1.846955500E+05, -4.773614700E+01] ), + NASA( [ 1000.00, 2523.00], [ 1.041947000E+01, 2.337650100E-03, + -8.808307700E-07, 2.855788300E-10, -3.460726300E-14, + -1.849220500E+05, -5.237140200E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF3(L)", + atoms = " Al:1 F:3 ", + thermo = ( + NASA( [ 2523.00, 1000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.799868600E+05, -8.004910300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.799868600E+05, -8.004910300E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALI3(s)", + atoms = " Al:1 I:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.524160000E+00, 1.125779900E-02, + 1.644300500E-07, 0.000000000E+00, 0.000000000E+00, + -3.947666600E+04, -2.834459500E+01] ), + NASA( [ 1000.00, 464.14], [ 8.524160000E+00, 1.125779900E-02, + 1.644300500E-07, 0.000000000E+00, 0.000000000E+00, + -3.947666600E+04, -2.834459500E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALI3(L)", + atoms = " Al:1 I:3 ", + thermo = ( + NASA( [ 464.14, 1000.00], [ 1.459345600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.916333200E+04, -5.624832200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.459345600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.916333200E+04, -5.624832200E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALN(s)", + atoms = " Al:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.545003100E+00, 2.763224900E-02, + -4.353946400E-05, 3.309266600E-08, -9.801052400E-12, + -3.868861400E+04, 4.649282200E+00] ), + NASA( [ 1000.00, 3000.00], [ 4.084121200E+00, 3.188149600E-03, + -1.902976500E-06, 5.252341100E-10, -5.513306600E-14, + -3.978184300E+04, -2.219014500E+01] ) + ) + # note = "J12/79" + ) + +species(name = "AL2O3(a)", + atoms = " Al:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -4.913830900E+00, 7.939844300E-02, + -1.323791800E-04, 1.044675000E-07, -3.156633000E-11, + -2.026262200E+05, 1.547807300E+01] ), + NASA( [ 1000.00, 2327.00], [ 1.183366600E+01, 3.770887800E-03, + -1.786319100E-07, -5.600880700E-10, 1.407682500E-13, + -2.057113100E+05, -6.359983500E+01] ) + ) + # note = "J12/79" + ) + +species(name = "AL2O3(L)", + atoms = " Al:2 O:3 ", + thermo = ( + NASA( [ 2327.00, 1000.00], [ 2.314824100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.114052000E+05, -1.386020500E+02] ), + NASA( [ 1000.00, 6000.00], [ 2.314824100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.114052000E+05, -1.386020500E+02] ) + ) + # note = "J12/79" + ) + +species(name = "AL2SiO5(an)", + atoms = " Al:2 Si:1 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -9.286634200E+00, 1.347672000E-01, + -2.323700000E-04, 1.876091900E-07, -5.738148300E-11, + -3.132766400E+05, 3.271585900E+01] ), + NASA( [ 1000.00, 3000.00], [ 1.735174200E+01, 8.743813500E-03, + -3.708471800E-06, 1.068828300E-09, -1.176395000E-13, + -3.179415100E+05, -9.173874400E+01] ) + ) + # note = "J 9/67" + ) + +species(name = "AL6Si2O13(s)", + atoms = " Al:6 Si:2 O:13 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.103467100E+01, 2.667564300E-01, + -4.152476300E-04, 3.137697200E-07, -9.249759700E-11, + -8.256587000E+05, 3.225479100E+01] ), + NASA( [ 1000.00, 3000.00], [ 4.523836400E+01, 2.766142400E-02, + -1.467551200E-05, 3.888584800E-09, -3.666048200E-13, + -8.368641700E+05, -2.373956500E+02] ) + ) + # note = "J 9/67" + ) + +species(name = "B(b)", + atoms = " B:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.159316930E+00, 1.137771450E-02, + -1.069859880E-05, 2.761064430E-09, 7.317469960E-13, + -7.133392100E+01, 4.364398950E+00] ), + NASA( [ 1000.00, 2350.00], [ 1.834940940E+00, 1.791987020E-03, + -7.978794980E-07, 2.027645120E-10, -1.920283450E-14, + -7.832028990E+02, -1.064332980E+01] ) + ) + # note = "J 6/83" + ) + +species(name = "B(L)", + atoms = " B:1 ", + thermo = ( + NASA( [ 2350.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.818625510E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 3.360992750E+03, -2.073264730E+01] ) + ) + # note = "J 6/83" + ) + +species(name = "BN(s)", + atoms = " B:1 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -6.928277000E-01, 1.179844010E-02, + -3.393398350E-06, -7.141369930E-09, 4.771621370E-12, + -3.045390020E+04, 2.413611660E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.687399300E+00, 4.246743110E-03, + -1.928177050E-06, 3.601707480E-10, -2.367060550E-14, + -3.146301260E+04, -1.541877350E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "B2O3(L)", + atoms = " B:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.143327400E+01, -2.157803900E-01, + 6.405798600E-04, -7.057242000E-07, 2.650915000E-10, + -1.549013900E+05, -1.280388000E+02] ), + NASA( [ 1000.00, 5000.00], [ 1.560011400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.568445500E+05, -8.312644400E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "B3O3H3(cr)", + atoms = " B:3 H:3 O:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 8.159513730E+00, -7.066833500E-03, + 9.249246940E-05, -1.028339050E-07, 3.501505710E-11, + -1.545696300E+05, -2.752540350E+01] ), + NASA( [ 1000.00, 2000.00], [ -1.284705170E+01, 9.195813220E-02, + -8.106094360E-05, 3.273228400E-08, -5.016119480E-12, + -1.511097220E+05, 7.015361500E+01] ) + ) + # note = "J 3/65" + ) + +species(name = "Ba(cr)", + atoms = " Ba:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.773344430E+00, 2.037522360E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.174338100E+02, -8.909706260E+00] ), + NASA( [ 1000.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "SRD 93" + ) + +species(name = "Ba(L)", + atoms = " Ba:1 ", + thermo = ( + NASA( [ 1000.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.810866790E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.920623810E+02, -2.000275710E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "BaBr2(s)", + atoms = " Ba:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.498223200E+00, 2.513922400E-03, + 2.439065800E-07, -2.969544000E-10, 1.287498900E-13, + -9.378224100E+04, -3.131273200E+01] ), + NASA( [ 1000.00, 1130.00], [ 8.213592400E+00, 3.114371500E-03, + -2.401162900E-07, 0.000000000E+00, 0.000000000E+00, + -9.368498200E+04, -2.977180800E+01] ) + ) + # note = "J12/74" + ) + +species(name = "BaBr2(L)", + atoms = " Ba:1 Br:2 ", + thermo = ( + NASA( [ 1130.00, 1000.00], [ 1.261093100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.293641800E+04, -5.391667300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.261093100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.293641800E+04, -5.391667300E+01] ) + ) + # note = "J12/74" + ) + +species(name = "BaCL2(a)", + atoms = " Ba:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.720247200E+00, 6.922417800E-03, + -1.096092700E-05, 9.699162100E-09, -2.619844300E-12, + -1.057920200E+05, -3.076830500E+01] ), + NASA( [ 1000.00, 1198.00], [ 1.109640400E+01, -1.113500200E-03, + -8.180193700E-07, -2.365137600E-10, 1.832684000E-12, + -1.069377700E+05, -4.892674600E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaCL2(b)", + atoms = " Ba:1 Cl:2 ", + thermo = ( + NASA( [ 1198.00, 1000.00], [ 1.489559200E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.099413500E+05, -7.527270200E+01] ), + NASA( [ 1000.00, 1235.00], [ 1.489559200E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.099413500E+05, -7.527270200E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaCL2(L)", + atoms = " Ba:1 Cl:2 ", + thermo = ( + NASA( [ 1235.00, 1000.00], [ 1.308396700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.057805900E+05, -6.081864700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.308396700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.057805900E+05, -6.081864700E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaF2(a)", + atoms = " Ba:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.320329000E+00, 2.762614700E-02, + -5.943034800E-05, 6.063014700E-08, -2.211079300E-11, + -1.474524600E+05, -1.912191600E+01] ), + NASA( [ 1000.00, 1480.00], [ -2.843928800E+00, -2.199721300E-02, + 4.420106100E-05, 5.582469000E-09, -1.390691200E-11, + -1.378991900E+05, 4.447293200E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaF2(b,c)", + atoms = " Ba:1 F:2 ", + thermo = ( + NASA( [ 1480.00, 1000.00], [ 1.294809400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.503317500E+05, -6.538366300E+01] ), + NASA( [ 1000.00, 1641.00], [ 1.294809400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.503317500E+05, -6.538366300E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaF2(L)", + atoms = " Ba:1 F:2 ", + thermo = ( + NASA( [ 1641.00, 1000.00], [ 1.200655200E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.459771500E+05, -5.670128200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.200655200E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.459771500E+05, -5.670128200E+01] ) + ) + # note = "J12/72" + ) + +species(name = "BaO(s)", + atoms = " Ba:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.920006700E+00, 8.911564800E-03, + -1.253128200E-05, 9.186870300E-09, -2.612906900E-12, + -6.739436900E+04, -1.584246800E+01] ), + NASA( [ 1000.00, 2286.00], [ 5.597056600E+00, 1.724286400E-03, + -6.024951300E-07, 1.740001700E-10, -1.859479100E-14, + -6.771968700E+04, -2.384852100E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "BaO(L)", + atoms = " Ba:1 O:1 ", + thermo = ( + NASA( [ 2286.00, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.322373700E+04, -3.681860100E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.322373700E+04, -3.681860100E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "BaO2H2(s)", + atoms = " Ba:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.542916800E-01, 7.510873800E-02, + -1.491507200E-04, 1.346251400E-07, -4.271540900E-11, + -1.160355200E+05, -3.107507800E+00] ), + NASA( [ 1000.00, 681.15], [ -1.542916800E-01, 7.510873800E-02, + -1.491507200E-04, 1.346251400E-07, -4.271540900E-11, + -1.160355200E+05, -3.107507800E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BaO2H2(L)", + atoms = " Ba:1 O:2 H:2 ", + thermo = ( + NASA( [ 681.15, 1000.00], [ 1.695883300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.179749800E+05, -8.335161100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.695883300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.179749800E+05, -8.335161100E+01] ) + ) + # note = "J12/75" + ) + +species(name = "BaS(s)", + atoms = " Ba:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.365867600E+00, 1.241828400E-03, + 3.980459000E-06, -6.621542800E-09, 2.967889800E-12, + -5.743627000E+04, -2.163810200E+01] ), + NASA( [ 1000.00, 3000.00], [ 5.909663100E+00, 1.159356100E-03, + -1.927981000E-07, 6.660900700E-11, -8.328041100E-15, + -5.762453800E+04, -2.471073700E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Be(a)", + atoms = " Be:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ -1.347749020E+00, 1.923408340E-02, + -3.541634230E-05, 3.088951430E-08, -1.008147440E-11, + -1.964460050E+02, 4.408358220E+00] ), + NASA( [ 1000.00, 1543.00], [ 8.060364680E-01, 5.373259460E-03, + -4.862417570E-06, 2.398340170E-09, -4.371865520E-13, + -4.105251290E+02, -4.799617160E+00] ) + ) + # note = "SRD 93" + ) + +species(name = "Be(b)", + atoms = " Be:1 ", + thermo = ( + NASA( [ 1543.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1563.00], [ 3.608150090E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.522291920E+02, -2.002910240E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "Be(L)", + atoms = " Be:1 ", + thermo = ( + NASA( [ 1563.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.545608820E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.074755800E+02, -1.895341260E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "BeAL2O4(s)", + atoms = " Be:1 Al:2 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -8.054738000E+00, 1.135724000E-01, + -1.878272800E-04, 1.480685700E-07, -4.480727800E-11, + -2.779804400E+05, 2.713571900E+01] ), + NASA( [ 1000.00, 2146.00], [ 2.026555900E+01, -1.046664900E-02, + 2.304395400E-05, -1.549368300E-08, 3.602494000E-12, + -2.833630100E+05, -1.074722200E+02] ) + ) + # note = "J12/79" + ) + +species(name = "BeAL2O4(L)", + atoms = " Be:1 Al:2 O:4 ", + thermo = ( + NASA( [ 2146.00, 1000.00], [ 2.963629100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.805698200E+05, -1.711695400E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.963629100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.805698200E+05, -1.711695400E+02] ) + ) + # note = "J12/79" + ) + +species(name = "BeBr2(s)", + atoms = " Be:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.855105800E+00, 7.299176400E-03, + 1.267804500E-06, -9.178109700E-09, 4.830677000E-12, + -4.484048300E+04, -2.344488600E+01] ), + NASA( [ 1000.00, 1500.00], [ -2.271832900E+00, 3.718508400E-02, + -4.332163900E-05, 2.305800600E-08, -4.574964100E-12, + -4.297125100E+04, 1.670886900E+01] ) + ) + # note = "J 6/75" + ) + +species(name = "BeCL2(s)", + atoms = " Be:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.006574500E+00, 1.953955900E-02, + -4.891360500E-06, -2.960415800E-08, 2.353486100E-11, + -6.072210000E+04, -1.257977200E+01] ), + NASA( [ 1000.00, 688.00], [ 3.006574500E+00, 1.953955900E-02, + -4.891360500E-06, -2.960415800E-08, 2.353486100E-11, + -6.072210000E+04, -1.257977200E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "BeCL2(L)", + atoms = " Be:1 Cl:2 ", + thermo = ( + NASA( [ 688.00, 1000.00], [ 1.460371900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.449841700E+04, -7.644878400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.460371900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.449841700E+04, -7.644878400E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "BeF2(Lqz)", + atoms = " Be:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.059377000E+01, -6.639693000E-02, + -1.203239800E-04, 8.980055500E-07, -9.666926400E-10, + -1.269370800E+05, -9.178511300E+01] ), + NASA( [ 1000.00, 500.00], [ 2.059377000E+01, -6.639693000E-02, + -1.203239800E-04, 8.980055500E-07, -9.666926400E-10, + -1.269370800E+05, -9.178511300E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "BeF2(hqz)", + atoms = " Be:1 F:2 ", + thermo = ( + NASA( [ 500.00, 1000.00], [ 5.696557600E+00, 4.025835800E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.252888400E+05, -2.709138900E+01] ), + NASA( [ 1000.00, 825.00], [ 5.696557600E+00, 4.025835800E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.252888400E+05, -2.709138900E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "BeF2(L)", + atoms = " Be:1 F:2 ", + thermo = ( + NASA( [ 825.00, 1000.00], [ 7.742336100E+00, -6.968006500E-04, + 2.674340600E-06, 3.126254200E-09, -2.545627900E-12, + -1.254653000E+05, -3.744030400E+01] ), + NASA( [ 1000.00, 2000.00], [ 6.048963900E+00, 4.332849800E-03, + 1.875440300E-07, -3.601948200E-10, 9.133882200E-14, + -1.251136100E+05, -2.902624800E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "BeI2(s)", + atoms = " Be:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.677229500E+00, 2.692309200E-02, + -2.889520400E-05, 4.007660400E-09, 6.405170200E-12, + -2.444696800E+04, -7.553091900E+00] ), + NASA( [ 1000.00, 753.00], [ 2.677229500E+00, 2.692309200E-02, + -2.889520400E-05, 4.007660400E-09, 6.405170200E-12, + -2.444696800E+04, -7.553091900E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BeI2(L)", + atoms = " Be:1 I:2 ", + thermo = ( + NASA( [ 753.00, 1000.00], [ 1.358719600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.599331200E+04, -6.331357300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.358719600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.599331200E+04, -6.331357300E+01] ) + ) + # note = "J12/75" + ) + +species(name = "BeO(a)", + atoms = " Be:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -3.069952250E+00, 3.220994140E-02, + -4.851414360E-05, 3.512631330E-08, -9.826008580E-12, + -7.332023400E+04, 1.140949790E+01] ), + NASA( [ 1000.00, 2373.00], [ 3.223754880E+00, 4.892762440E-03, + -3.058325910E-06, 9.914014330E-10, -1.234425710E-13, + -7.451407610E+04, -1.852395820E+01] ) + ) + # note = "J12/74" + ) + +species(name = "BeO(b)", + atoms = " Be:1 O:1 ", + thermo = ( + NASA( [ 2373.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 2821.22], [ 1.239334710E+01, -1.032230750E-02, + 6.527335910E-06, -1.730938890E-09, 1.709864940E-13, + -7.817596100E+04, -7.054176310E+01] ) + ) + # note = "J12/74" + ) + +species(name = "BeO(L)", + atoms = " Be:1 O:1 ", + thermo = ( + NASA( [ 2821.22, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.561231640E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.420164130E+04, -5.806354420E+01] ) + ) + # note = "J12/74" + ) + +species(name = "BeO2H2(b)", + atoms = " Be:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -7.016832500E+00, 8.300565400E-02, + -1.415202900E-04, 1.142166500E-07, -3.510553500E-11, + -1.095071100E+05, 2.661606100E+01] ), + NASA( [ 1000.00, 1000.00], [ -7.016832500E+00, 8.300565400E-02, + -1.415202900E-04, 1.142166500E-07, -3.510553500E-11, + -1.095071100E+05, 2.661606100E+01] ) + ) + # note = "J12/75" + ) + +species(name = "BeS(s)", + atoms = " Be:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.873000500E+00, 3.807870400E-02, + -6.250670500E-05, 4.890427800E-08, -1.463858100E-11, + -2.855518200E+04, 1.184292200E+01] ), + NASA( [ 1000.00, 3000.00], [ 3.478703600E+00, 6.510623300E-03, + -4.131404500E-06, 1.244993000E-09, -1.382194700E-13, + -2.956653000E+04, -1.739132600E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Be2C(s)", + atoms = " Be:2 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.437417000E+00, 2.569453800E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.550732400E+04, -2.408612100E+01] ), + NASA( [ 1000.00, 2400.00], [ 4.437417000E+00, 2.569453800E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.550732400E+04, -2.408612100E+01] ) + ) + # note = "BAR 73" + ) + +species(name = "Be2C(L)", + atoms = " Be:2 C:1 ", + thermo = ( + NASA( [ 2400.00, 1000.00], [ 1.107089700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.496964100E+04, -6.577511600E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.107089700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.496964100E+04, -6.577511600E+01] ) + ) + # note = "BAR 73" + ) + +species(name = "Br2(cr)", + atoms = " Br:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 9.125459940E+00, -8.261608810E-02, + 6.998615170E-04, -2.408430640E-06, 3.211060160E-09, + -3.304088200E+03, -3.017279960E+01] ), + NASA( [ 1000.00, 265.90], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "L 1/93" + ) + +species(name = "Br2(L)", + atoms = " Br:2 ", + thermo = ( + NASA( [ 265.90, 1000.00], [ 1.042529370E+01, 1.111812270E-01, + -1.068569880E-03, 3.259765720E-06, -3.274903980E-09, + -3.506204030E+03, -4.907570830E+01] ), + NASA( [ 1000.00, 332.50], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "L 1/93" + ) + +species(name = "C(gr)", + atoms = " C:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -3.108720720E-01, 4.403536860E-03, + 1.903941180E-06, -6.385469660E-09, 2.989642480E-12, + -1.086507940E+02, 1.113829530E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.455718290E+00, 1.717022160E-03, + -6.975627860E-07, 1.352770320E-10, -9.675906520E-15, + -6.951388140E+02, -8.525830330E+00] ) + ) + # note = "X 4/83" + ) + +species(name = "C6H6(L)", + atoms = " C:6 H:6 ", + thermo = ( + NASA( [ 278.68, 1000.00], [ 6.366902290E+01, -6.005343980E-01, + 2.667928100E-03, -5.063088280E-06, 3.639555620E-09, + -1.670854720E+03, -2.438917970E+02] ), + NASA( [ 1000.00, 500.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "X10/86" + ) + +species(name = "C7H8(L)", + atoms = " C:7 H:8 ", + thermo = ( + NASA( [ 178.15, 1000.00], [ 2.936760220E+01, -1.947226860E-01, + 9.747730960E-04, -1.914726890E-06, 1.480970190E-09, + -4.163184420E+03, -1.120199660E+02] ), + NASA( [ 1000.00, 500.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "X10/86" + ) + +species(name = "C8H18(L),n-octa", + atoms = " C:8 H:18 ", + thermo = ( + NASA( [ 220.00, 1000.00], [ 7.141339300E+01, -5.020795000E-01, + 1.834199000E-03, -2.045016500E-06, 0.000000000E+00, + -4.124372500E+04, -2.772224000E+02] ), + NASA( [ 1000.00, 300.00], [ 7.141339300E+01, -5.020795000E-01, + 1.834199000E-03, -2.045016500E-06, 0.000000000E+00, + -4.124372500E+04, -2.772224000E+02] ) + ) + # note = "X10/76" + ) + +species(name = "Jet-A(L)", + atoms = " C:12 H:23 ", + thermo = ( + NASA( [ 220.00, 1000.00], [ 1.904961300E+01, -1.691853200E-02, + 6.302203500E-04, -1.333657700E-06, 9.433563800E-10, + -4.480396400E+04, -6.769020000E+01] ), + NASA( [ 1000.00, 550.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "L 6/88" + ) + +species(name = "Ca(a)", + atoms = " Ca:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.033256490E+00, -1.418000640E-03, + 7.244875740E-06, -6.687905940E-09, 2.499038890E-12, + -8.933105080E+02, -1.201142880E+01] ), + NASA( [ 1000.00, 716.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "SRD 93" + ) + +species(name = "Ca(b)", + atoms = " Ca:1 ", + thermo = ( + NASA( [ 716.00, 1000.00], [ 5.701117680E+00, -5.810564900E-03, + 4.022125180E-06, 0.000000000E+00, 0.000000000E+00, + -1.516763610E+03, -2.607581340E+01] ), + NASA( [ 1000.00, 1115.00], [ 5.701117680E+00, -5.810564900E-03, + 4.022125180E-06, 0.000000000E+00, 0.000000000E+00, + -1.516763610E+03, -2.607581340E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "Ca(L)", + atoms = " Ca:1 ", + thermo = ( + NASA( [ 1115.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.570323450E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.822433080E+02, -2.119886430E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "CaBr2(s)", + atoms = " Ca:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.269339400E+00, 2.369780500E-02, + -4.979990900E-05, 4.670722400E-08, -1.521609700E-11, + -8.444736700E+04, -1.965944500E+01] ), + NASA( [ 1000.00, 1015.00], [ 6.629970700E+00, 4.028391000E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.393967400E+04, -2.252384300E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "CaBr2(L)", + atoms = " Ca:1 Br:2 ", + thermo = ( + NASA( [ 1015.00, 1000.00], [ 1.358719600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.542873800E+04, -6.315165900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.358719600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.542873800E+04, -6.315165900E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "CaCO3(caL)", + atoms = " Ca:1 C:1 O:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ -1.769689530E+00, 6.188846850E-02, + -8.823801390E-05, 4.619090150E-08, -2.987297400E-12, + -1.466918120E+05, 6.324125320E+00] ), + NASA( [ 1000.00, 1200.00], [ 1.443881620E+01, -1.397778070E-03, + 2.043331030E-06, 0.000000000E+00, 0.000000000E+00, + -1.504007100E+05, -7.284454890E+01] ) + ) + # note = "BAR 89" + ) + +species(name = "CaCL2(s)", + atoms = " Ca:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.355467500E+00, 1.378431000E-02, + -2.442140300E-05, 1.955128000E-08, -4.953416900E-12, + -9.804178300E+04, -2.681414600E+01] ), + NASA( [ 1000.00, 1045.00], [ 8.733240800E+00, 2.395514100E-04, + 9.446737700E-07, 4.585186300E-10, -5.974952900E-14, + -9.830808000E+04, -3.723666700E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "CaCL2(L)", + atoms = " Ca:1 Cl:2 ", + thermo = ( + NASA( [ 1045.00, 1000.00], [ 1.233214100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.802395200E+04, -5.804746800E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.233214100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.802395200E+04, -5.804746800E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "CaF2(a)", + atoms = " Ca:1 F:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -3.915371760E-01, 5.746647420E-02, + -1.308342590E-04, 1.327382840E-07, -4.816416340E-11, + -1.489636140E+05, -1.917968730E+00] ), + NASA( [ 1000.00, 1424.00], [ 1.034399080E+00, 2.184024890E-02, + -2.047961130E-05, 1.033819960E-08, -1.918437680E-12, + -1.480104450E+05, -2.080489250E+00] ) + ) + # note = "J12/68" + ) + +species(name = "CaF2(b)", + atoms = " Ca:1 F:2 ", + thermo = ( + NASA( [ 1424.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1691.00], [ 1.428661050E+01, -1.102494370E-03, + 1.417754010E-06, -2.812320820E-10, 0.000000000E+00, + -1.554533200E+05, -7.918663600E+01] ) + ) + # note = "J12/68" + ) + +species(name = "CaF2(L)", + atoms = " Ca:1 F:2 ", + thermo = ( + NASA( [ 1691.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.201681400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.479082920E+05, -6.049279840E+01] ) + ) + # note = "J12/68" + ) + +species(name = "CaO(s)", + atoms = " Ca:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.693768800E+00, 1.814966300E-02, + -2.837260900E-05, 2.051353900E-08, -5.517576800E-12, + -7.748276900E+04, -9.371008100E+00] ), + NASA( [ 1000.00, 3200.00], [ 5.655751700E+00, 1.016543900E-03, + -2.557689900E-07, 5.451439500E-11, -4.257995000E-15, + -7.823838100E+04, -2.822337200E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "CaO(L)", + atoms = " Ca:1 O:1 ", + thermo = ( + NASA( [ 3200.00, 1000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.117929200E+04, -3.808394800E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.117929200E+04, -3.808394800E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "CaO2H2(s)", + atoms = " Ca:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -7.402276700E-01, 6.756646800E-02, + -1.319128100E-04, 1.198906800E-07, -4.061304500E-11, + -1.204354300E+05, -1.009707500E+00] ), + NASA( [ 1000.00, 1000.00], [ -7.402276700E-01, 6.756646800E-02, + -1.319128100E-04, 1.198906800E-07, -4.061304500E-11, + -1.204354300E+05, -1.009707500E+00] ) + ) + # note = "J12/75" + ) + +species(name = "CaS(s)", + atoms = " Ca:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.647555800E+00, 4.931551600E-03, + -5.530890300E-06, 3.066395900E-09, -6.078561000E-13, + -5.847704700E+04, -2.092271000E+01] ), + NASA( [ 1000.00, 3000.00], [ 5.653051900E+00, 1.362587400E-03, + -7.278117600E-07, 2.498976300E-10, -3.096812600E-14, + -5.871034100E+04, -2.590639500E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "CaSO4(s)", + atoms = " Ca:1 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.444190500E+00, 1.187621500E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.755324200E+05, -3.882013400E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.444190500E+00, 1.187621500E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.755324200E+05, -3.882013400E+01] ) + ) + # note = "BAR 73" + ) + +species(name = "Cr(cr)", + atoms = " Cr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.848260240E+00, -1.162760200E-01, + 8.123692510E-04, -2.308070860E-06, 2.353281420E-09, + -8.980139460E+02, -2.757331390E+01] ), + NASA( [ 1000.00, 311.50], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/73" + ) + +species(name = "Cr(L)", + atoms = " Cr:1 ", + thermo = ( + NASA( [ 2130.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.730284770E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 5.753592210E+02, -2.453183090E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "CrN(s)", + atoms = " Cr:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.715290400E+00, -2.377537200E-02, + 5.256101500E-05, -4.839074700E-08, 1.627075700E-11, + -1.632342200E+04, -4.573005000E+01] ), + NASA( [ 1000.00, 2500.00], [ 5.694453900E+00, 5.301169000E-04, + 2.270582900E-07, -8.148325400E-11, 1.080379600E-14, + -1.583600200E+04, -2.813170400E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Cr2N(s)", + atoms = " Cr:2 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.030338800E+00, 3.400644100E-02, + -6.152494600E-05, 5.314254800E-08, -1.676952100E-11, + -1.676831300E+04, -1.160069800E+01] ), + NASA( [ 1000.00, 2500.00], [ 8.098418500E+00, 1.853361100E-03, + 1.422730600E-06, -5.589639000E-10, 6.930711000E-14, + -1.768480100E+04, -3.914747200E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Cr2O3(s)", + atoms = " Cr:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.933277300E+01, -1.020738500E-01, + 2.360110300E-04, -2.257801900E-07, 7.779928900E-11, + -1.424040600E+05, -1.357428100E+02] ), + NASA( [ 1000.00, 2603.00], [ 1.401223500E+01, 1.382397800E-03, + -2.377922600E-07, 1.699508500E-10, -3.770585700E-14, + -1.409821700E+05, -7.110156900E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Cr2O3(L)", + atoms = " Cr:2 O:3 ", + thermo = ( + NASA( [ 2603.00, 1000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.336949800E+05, -9.996147000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.336949800E+05, -9.996147000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Cs(cr)", + atoms = " Cs:1 ", + thermo = ( + NASA( [ 100.00, 1000.00], [ 3.311571940E+00, -9.679747930E-03, + 1.199265760E-04, -5.206080840E-07, 8.334159270E-10, + -9.808444350E+02, -8.108668710E+00] ), + NASA( [ 1000.00, 301.59], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "CODA89" + ) + +species(name = "Cs(L)", + atoms = " Cs:1 ", + thermo = ( + NASA( [ 301.59, 1000.00], [ 3.203581300E+00, 6.535602060E-03, + -1.886093020E-05, 1.882624900E-08, -6.103717820E-12, + -8.613418550E+02, -8.431003880E+00] ), + NASA( [ 1000.00, 2000.00], [ 5.115129550E+00, -3.839702910E-03, + 2.015552570E-06, 3.642025990E-10, -5.439745010E-14, + -1.138417670E+03, -1.705676240E+01] ) + ) + # note = "CODA89" + ) + +species(name = "CsCL(a)", + atoms = " Cs:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.545340000E+00, 2.380583400E-03, + 8.357033000E-07, -9.957164000E-10, 3.805480300E-13, + -5.502653500E+04, -2.016426000E+01] ), + NASA( [ 1000.00, 743.00], [ 5.545340000E+00, 2.380583400E-03, + 8.357033000E-07, -9.957164000E-10, 3.805480300E-13, + -5.502653500E+04, -2.016426000E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "CsCL(b)", + atoms = " Cs:1 Cl:1 ", + thermo = ( + NASA( [ 743.00, 1000.00], [ 8.161073700E+00, -1.762356800E-03, + -2.250851600E-07, 3.930731700E-09, -2.345234100E-12, + -5.548043100E+04, -3.394139600E+01] ), + NASA( [ 1000.00, 918.00], [ 8.161073700E+00, -1.762356800E-03, + -2.250851600E-07, 3.930731700E-09, -2.345234100E-12, + -5.548043100E+04, -3.394139600E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "CsCL(L)", + atoms = " Cs:1 Cl:1 ", + thermo = ( + NASA( [ 918.00, 1000.00], [ 9.309745200E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.503116100E+04, -4.081013300E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.309745200E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.503116100E+04, -4.081013300E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "CsF(s)", + atoms = " Cs:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.648999300E+00, 1.871139800E-03, + 6.624238200E-07, -6.308487100E-10, 1.869233900E-13, + -6.848510200E+04, -2.214995900E+01] ), + NASA( [ 1000.00, 976.00], [ 5.648999300E+00, 1.871139800E-03, + 6.624238200E-07, -6.308487100E-10, 1.869233900E-13, + -6.848510200E+04, -2.214995900E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "CsF(L)", + atoms = " Cs:1 F:1 ", + thermo = ( + NASA( [ 976.00, 1000.00], [ 8.907161700E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.806681700E+04, -3.991277400E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.907161700E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.806681700E+04, -3.991277400E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "CsOH(a)", + atoms = " Cs:1 O:1 H:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 5.889460510E+00, 6.131899820E-03, + 8.607639520E-06, -1.206146890E-08, 0.000000000E+00, + -5.220103410E+04, -2.378401270E+01] ), + NASA( [ 1000.00, 410.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "CsOH(b)", + atoms = " Cs:1 O:1 H:1 ", + thermo = ( + NASA( [ 410.00, 1000.00], [ 4.921046240E+00, 1.006551160E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.186606810E+04, -1.874381130E+01] ), + NASA( [ 1000.00, 493.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "CsOH(c)", + atoms = " Cs:1 O:1 H:1 ", + thermo = ( + NASA( [ 493.00, 1000.00], [ 1.006445440E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.244886500E+04, -4.419314780E+01] ), + NASA( [ 1000.00, 588.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "CsOH(L)", + atoms = " Cs:1 O:1 H:1 ", + thermo = ( + NASA( [ 588.00, 1000.00], [ 9.812843000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.175247220E+04, -4.165596050E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.812843000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.175247220E+04, -4.165596050E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "Cs2SO4(II)", + atoms = " Cs:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.978930700E+00, 1.265088400E-01, + -2.955320600E-04, 3.320730800E-07, -1.310499100E-10, + -1.762335200E+05, 1.518574700E+01] ), + NASA( [ 1000.00, 940.00], [ -2.978930700E+00, 1.265088400E-01, + -2.955320600E-04, 3.320730800E-07, -1.310499100E-10, + -1.762335200E+05, 1.518574700E+01] ) + ) + # note = "J 6/79" + ) + +species(name = "Cs2SO4(I)", + atoms = " Cs:2 S:1 O:4 ", + thermo = ( + NASA( [ 940.00, 1000.00], [ 4.734983600E+00, 1.861960000E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.715413900E+05, 1.373704600E-01] ), + NASA( [ 1000.00, 1278.00], [ -2.723272200E-02, 3.135403600E-02, + -1.130053100E-05, 3.328310800E-09, 0.000000000E+00, + -1.702116300E+05, 2.483998800E+01] ) + ) + # note = "J 6/79" + ) + +species(name = "Cs2SO4(L)", + atoms = " Cs:2 S:1 O:4 ", + thermo = ( + NASA( [ 1278.00, 1000.00], [ 2.485919800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.777619800E+05, -1.166574400E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.485919800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.777619800E+05, -1.166574400E+02] ) + ) + # note = "J 6/79" + ) + +species(name = "Cu(cr)", + atoms = " Cu:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.766720740E+00, 7.346994320E-03, + -1.547129600E-05, 1.505395910E-08, -5.248613350E-12, + -7.438820870E+02, -7.704540440E+00] ), + NASA( [ 1000.00, 1358.00], [ 3.420089100E+00, -1.612013940E-03, + 3.051459170E-06, -2.111627880E-09, 6.998583970E-13, + -9.902956360E+02, -1.519322940E+01] ) + ) + # note = "CODA89" + ) + +species(name = "Cu(L)", + atoms = " Cu:1 ", + thermo = ( + NASA( [ 1358.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.944910760E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.106346690E+02, -1.835856760E+01] ) + ) + # note = "CODA89" + ) + +species(name = "CuF(s)", + atoms = " Cu:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.442128800E+00, 7.966907600E-03, + -7.280731100E-06, 2.763777300E-09, -2.731884200E-13, + -3.533616800E+04, -1.958517000E+01] ), + NASA( [ 1000.00, 2000.00], [ 5.321550600E+00, 4.854983200E-03, + -3.544004800E-06, 1.110902300E-09, -1.245371600E-13, + -3.552171500E+04, -2.390264300E+01] ) + ) + # note = "J12/77" + ) + +species(name = "CuF2(s)", + atoms = " Cu:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.387367600E+00, 1.439710900E-02, + -8.621349700E-06, -1.983044600E-09, 2.689674000E-12, + -6.668558500E+04, -1.958056100E+01] ), + NASA( [ 1000.00, 1109.00], [ 2.355767600E+00, 1.491350800E-02, + -6.399519300E-06, 0.000000000E+00, 0.000000000E+00, + -6.561062200E+04, -7.162675700E+00] ) + ) + # note = "J12/77" + ) + +species(name = "CuF2(L)", + atoms = " Cu:1 F:2 ", + thermo = ( + NASA( [ 1109.00, 1000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.348799800E+04, -5.673037000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.348799800E+04, -5.673037000E+01] ) + ) + # note = "J12/77" + ) + +species(name = "CuO(s)", + atoms = " Cu:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.840386600E-01, 2.415885200E-02, + -4.389414200E-05, 3.758618100E-08, -1.208827500E-11, + -1.978838200E+04, -5.472388000E+00] ), + NASA( [ 1000.00, 2000.00], [ 5.025812400E+00, 2.542407700E-03, + -1.376829400E-06, 5.349283100E-10, -7.966428100E-14, + -2.043328100E+04, -2.437669500E+01] ) + ) + # note = "J12/77" + ) + +species(name = "CuO2H2(s)", + atoms = " Cu:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.045118500E+01, 1.345820500E-03, + 8.660233900E-06, -6.809234900E-09, 7.443585900E-13, + -5.740686500E+04, -4.723880300E+01] ), + NASA( [ 1000.00, 1500.00], [ 8.673078700E+00, 1.038576200E-02, + -4.699484100E-06, -5.029251300E-10, 5.359316000E-13, + -5.723038200E+04, -3.936616100E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "CuSO4(s)", + atoms = " Cu:1 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.301916600E+00, 3.701232100E-02, + -2.899080400E-05, 4.531404500E-09, 2.638844500E-12, + -9.499362100E+04, -1.546587800E+01] ), + NASA( [ 1000.00, 2000.00], [ 1.131453600E+01, 1.405035200E-02, + -1.006356800E-05, 3.720422100E-09, -5.280591400E-13, + -9.699820800E+04, -5.625469000E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "Cu2O(s)", + atoms = " Cu:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.383246600E+00, 2.295417600E-02, + -3.954230400E-05, 3.402040100E-08, -1.104380900E-11, + -2.227315700E+04, -1.353071300E+01] ), + NASA( [ 1000.00, 1516.72], [ 1.475564100E+01, -1.587665700E-02, + 1.497119300E-05, -4.484026400E-09, 4.055600500E-13, + -2.506506800E+04, -7.054187700E+01] ) + ) + # note = "J12/77" + ) + +species(name = "Cu2O(L)", + atoms = " Cu:2 O:1 ", + thermo = ( + NASA( [ 1516.72, 1000.00], [ 1.201712000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.925238700E+04, -5.688686600E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.201712000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.925238700E+04, -5.688686600E+01] ) + ) + # note = "J12/77" + ) + +species(name = "Cu2O5S(s)", + atoms = " Cu:2 O:5 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.525717800E+00, 7.220595800E-02, + -9.785566500E-05, 6.543249900E-08, -1.674445300E-11, + -1.147864600E+05, -1.319611200E+01] ), + NASA( [ 1000.00, 1500.00], [ 1.601163400E+01, 1.942466800E-02, + -1.844825100E-05, 1.118720400E-08, -2.611198300E-12, + -1.176162000E+05, -7.872748900E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "Fe(a)", + atoms = " Fe:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.413374760E+00, -1.577807440E-03, + 2.147013390E-05, -3.801714380E-08, 2.204269840E-11, + -7.743809980E+02, -1.065602960E+01] ), + NASA( [ 1000.00, 1042.00], [ 4.690801730E+03, -9.906599910E+00, + 2.694274460E-03, 5.544453210E-06, -3.016598230E-09, + -1.415475860E+06, -2.492943870E+04] ) + ) + # note = "J 3/78" + ) + +species(name = "Fe(c)", + atoms = " Fe:1 ", + thermo = ( + NASA( [ 1184.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1665.00], [ 6.101099900E+01, -1.609450610E-01, + 1.683694930E-04, -7.745637020E-08, 1.330912900E-11, + -1.653354540E+04, -3.137106680E+02] ) + ) + # note = "J 3/78" + ) + +species(name = "Fe(d)", + atoms = " Fe:1 ", + thermo = ( + NASA( [ 1665.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1809.00], [ -4.359046980E+02, 7.684894480E-01, + -4.468988920E-04, 8.670709130E-08, 0.000000000E+00, + 1.879255340E+05, 2.450576190E+03] ) + ) + # note = "J 3/78" + ) + +species(name = "Fe(L)", + atoms = " Fe:1 ", + thermo = ( + NASA( [ 1809.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.535383320E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.274289410E+03, -2.947722710E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "FeC5O5(L)", + atoms = " Fe:1 C:5 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.811845000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.005248300E+05, -1.196654100E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.811845000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.005248300E+05, -1.196654100E+02] ) + ) + # note = "J 3/78" + ) + +species(name = "FeCL2(s)", + atoms = " Fe:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.112227100E+00, 1.108695300E-02, + -1.707274200E-05, 1.351581700E-08, -4.136503600E-12, + -4.360098500E+04, -2.899405500E+01] ), + NASA( [ 1000.00, 950.00], [ 7.112227100E+00, 1.108695300E-02, + -1.707274200E-05, 1.351581700E-08, -4.136503600E-12, + -4.360098500E+04, -2.899405500E+01] ) + ) + # note = "J12/70" + ) + +species(name = "FeCL2(L)", + atoms = " Fe:1 Cl:2 ", + thermo = ( + NASA( [ 950.00, 1000.00], [ 1.228886300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.110982100E+04, -5.319305700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.228886300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.110982100E+04, -5.319305700E+01] ) + ) + # note = "J12/70" + ) + +species(name = "FeCL3(s)", + atoms = " Fe:1 Cl:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -7.395568550E+00, 2.026084340E-01, + -8.445059230E-04, 1.592866020E-06, -1.079893210E-09, + -5.001446640E+04, 2.444509350E+01] ), + NASA( [ 1000.00, 577.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/65" + ) + +species(name = "FeCL3(L)", + atoms = " Fe:1 Cl:3 ", + thermo = ( + NASA( [ 577.00, 1000.00], [ 1.610312700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.841352780E+04, -6.757589900E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.610312700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.841352780E+04, -6.757589900E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "FeO(s)", + atoms = " Fe:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.319547500E+00, 2.209659100E-03, + 1.072177500E-06, -2.792972900E-09, 1.332073300E-12, + -3.440716500E+04, -2.368603400E+01] ), + NASA( [ 1000.00, 1650.00], [ 5.831648900E+00, 1.427515600E-03, + -9.320814300E-08, -6.599776300E-12, -2.251214300E-14, + -3.456690200E+04, -2.644699000E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "FeO(L)", + atoms = " Fe:1 O:1 ", + thermo = ( + NASA( [ 1650.00, 1000.00], [ 8.202248200E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.384861500E+04, -4.007912900E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.202248200E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.384861500E+04, -4.007912900E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "Fe(OH)2(s)", + atoms = " Fe:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.009121800E+01, 4.452314100E-03, + 4.066685500E-06, -4.009452500E-09, 2.394716400E-13, + -7.227768800E+04, -4.840003400E+01] ), + NASA( [ 1000.00, 1500.00], [ 7.403180800E+00, 1.198174200E-02, + -1.495761100E-06, -5.052635900E-09, 2.003711100E-12, + -7.159226600E+04, -3.467326700E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "Fe(OH)3(s)", + atoms = " Fe:1 O:3 H:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.411683600E+00, 3.268246200E-02, + -2.239381500E-05, 2.864679200E-09, 2.262232100E-12, + -1.027183400E+05, -2.133101400E+01] ), + NASA( [ 1000.00, 1500.00], [ 8.022392600E+00, 1.642013500E-02, + -1.236937800E-07, -6.819283800E-09, 2.327690700E-12, + -1.032133600E+05, -3.793402000E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "FeS(a)", + atoms = " Fe:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.897762700E+01, -1.095428200E-01, + 2.218601600E-04, 0.000000000E+00, 0.000000000E+00, + -1.499524200E+04, -7.812543500E+01] ), + NASA( [ 1000.00, 411.00], [ 1.897762700E+01, -1.095428200E-01, + 2.218601600E-04, 0.000000000E+00, 0.000000000E+00, + -1.499524200E+04, -7.812543500E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "FeS(b)", + atoms = " Fe:1 S:1 ", + thermo = ( + NASA( [ 411.00, 1000.00], [ 8.702850500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.468973800E+04, -4.208210200E+01] ), + NASA( [ 1000.00, 598.00], [ 8.702850500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.468973800E+04, -4.208210200E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "FeS(c)", + atoms = " Fe:1 S:1 ", + thermo = ( + NASA( [ 598.00, 1000.00], [ 9.372417600E+00, 9.416205900E-04, + -1.582986400E-05, 1.838088100E-08, -5.770706700E-12, + -1.458168500E+04, -4.514151600E+01] ), + NASA( [ 1000.00, 1463.00], [ -2.683048300E+00, 3.676510400E-02, + -5.218227400E-05, 3.160717000E-08, -6.412604100E-12, + -1.149868400E+04, 1.623912400E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "FeS(L)", + atoms = " Fe:1 S:1 ", + thermo = ( + NASA( [ 1463.00, 1000.00], [ 7.523280600E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.016423700E+04, -3.197093000E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.523280600E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.016423700E+04, -3.197093000E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "FeSO4(s)", + atoms = " Fe:1 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.505768400E+00, 3.702970100E-02, + -2.903353100E-05, 4.577858900E-09, 2.620208700E-12, + -1.141625000E+05, -1.522324100E+01] ), + NASA( [ 1000.00, 2000.00], [ 1.160892900E+01, 1.380469700E-02, + -9.812638000E-06, 3.608781100E-09, -5.097627900E-13, + -1.161918600E+05, -5.647781700E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "FeS2(s)", + atoms = " Fe:1 S:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.034566300E-01, 4.267468400E-02, + -8.403062600E-05, 7.630144100E-08, -2.543231600E-11, + -2.204592700E+04, -5.545639300E+00] ), + NASA( [ 1000.00, 1400.00], [ -8.851532000E+01, 3.274893100E-01, + -4.105743900E-04, 2.292814600E-07, -4.776441500E-11, + -4.651247600E+02, 4.417304500E+02] ) + ) + # note = "J 9/77" + ) + +species(name = "Fe2O3(s)", + atoms = " Fe:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -7.703784300E+00, 1.364747100E-01, + -3.290565500E-04, 3.815047800E-07, -1.631028500E-10, + -1.008007600E+05, 2.529208500E+01] ), + NASA( [ 1000.00, 2500.00], [ 4.049753000E+01, -4.613159600E-02, + 3.182640600E-05, -8.922633100E-09, 8.465541700E-13, + -1.131762700E+05, -2.163508800E+02] ) + ) + # note = "J 6/65" + ) + +species(name = "Fe2S3O12(s)", + atoms = " Fe:2 S:3 O:12 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.111695500E+01, 8.370677800E-02, + -4.136507500E-05, -2.527922200E-08, 2.104143500E-11, + -3.172978200E+05, -4.928875000E+01] ), + NASA( [ 1000.00, 2000.00], [ 3.911443800E+01, 1.179632700E-02, + -3.387101400E-08, -2.297039900E-09, 6.410198600E-13, + -3.247826200E+05, -1.940042900E+02] ) + ) + # note = "J 6/66" + ) + +species(name = "Fe3O4(s)", + atoms = " Fe:3 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.619814800E+01, -1.743797600E-01, + 5.247567300E-04, -5.423821900E-07, 1.799620200E-10, + -1.413873000E+05, -1.555668300E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.413372000E+01, 4.159222600E-05, + -2.633149200E-08, 6.603509400E-12, -5.692468000E-16, + -1.412105200E+05, -1.200641200E+02] ) + ) + # note = "J 6/65" + ) + +species(name = "H2O(s)", + atoms = " H:2 O:1 ", + thermo = ( + NASA( [ 200.00, 273.15], [ 5.296779700E+00, -6.757492470E-02, + 5.169421090E-04, -1.438533600E-06, 1.525647940E-09, + -3.622665570E+04, -1.792204280E+01] ) + ) + # note = "L 8/89" + ) + +species(name = "H2O(L)", + atoms = " H:2 O:1 ", + thermo = ( + NASA( [ 273.15, 600.00], [ 7.255750050E+01, -6.624454020E-01, + 2.561987460E-03, -4.365919230E-06, 2.781789810E-09, + -4.188654990E+04, -2.882801370E+02] ) + ) + # note = "L 8/89" + ) + +species(name = "H2SO4(L)", + atoms = " H:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.942152500E+00, 2.178636900E-02, + 3.497445800E-06, -3.354885700E-09, 1.169958600E-12, + -1.018597900E+05, -4.439869500E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Hg(cr)", + atoms = " Hg:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.431033850E+00, 4.246466580E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.178868060E+03, -7.112481140E+00] ), + NASA( [ 1000.00, 234.29], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J12/61" + ) + +species(name = "Hg(L)", + atoms = " Hg:1 ", + thermo = ( + NASA( [ 234.29, 1000.00], [ 3.796852480E+00, -2.090261090E-03, + 2.222671070E-06, -1.086056550E-10, -4.280872480E-13, + -1.058346310E+03, -1.196269360E+01] ), + NASA( [ 1000.00, 2000.00], [ 3.036534870E+00, 3.160066660E-04, + 6.439011720E-08, -2.923069910E-11, 4.868609180E-15, + -8.881705020E+02, -8.172430180E+00] ) + ) + # note = "J12/61" + ) + +species(name = "HgBr2(s)", + atoms = " Hg:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.282971400E+00, 1.630236400E-03, + 3.422987900E-06, 7.096199200E-10, -4.335386200E-12, + -2.295243800E+04, -2.734527600E+01] ), + NASA( [ 1000.00, 514.00], [ 8.282971400E+00, 1.630236400E-03, + 3.422987900E-06, 7.096199200E-10, -4.335386200E-12, + -2.295243800E+04, -2.734527600E+01] ) + ) + # note = "J 3/62" + ) + +species(name = "HgBr2(L)", + atoms = " Hg:1 Br:2 ", + thermo = ( + NASA( [ 514.00, 1000.00], [ 1.227879900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.250089800E+04, -4.685121200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.227879900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.250089800E+04, -4.685121200E+01] ) + ) + # note = "J 3/62" + ) + +species(name = "HgO(s)", + atoms = " Hg:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.417086600E+00, 7.116057000E-03, + -1.489699600E-06, -4.491354800E-09, 2.593792400E-12, + -1.223327000E+04, -1.303718500E+01] ), + NASA( [ 1000.00, 1000.00], [ 3.417086600E+00, 7.116057000E-03, + -1.489699600E-06, -4.491354800E-09, 2.593792400E-12, + -1.223327000E+04, -1.303718500E+01] ) + ) + # note = "J 6/62" + ) + +species(name = "I2(cr)", + atoms = " I:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.057577130E+01, 2.269056530E-01, + -1.124616450E-03, 2.416784520E-06, -1.849013770E-09, + -8.997216150E+02, 3.885989640E+01] ), + NASA( [ 1000.00, 386.75], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "I2(L)", + atoms = " I:2 ", + thermo = ( + NASA( [ 386.75, 1000.00], [ 9.568212680E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.204519480E+03, -3.637339270E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.568212680E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.204519480E+03, -3.637339270E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "K(cr)", + atoms = " K:1 ", + thermo = ( + NASA( [ 200.00, 336.86], [ -2.089511230E+00, 6.163201930E-02, + -2.407319030E-04, 3.272558230E-07, 0.000000000E+00, + -6.360980590E+02, 9.117369100E+00] ) + ) + # note = "CODA89" + ) + +species(name = "K(L)", + atoms = " K:1 ", + thermo = ( + NASA( [ 336.86, 1000.00], [ 4.229105630E+00, -7.068855430E-04, + -2.129658480E-06, 3.362272700E-09, -1.059026020E-12, + -9.451175140E+02, -1.523400540E+01] ), + NASA( [ 1000.00, 2200.00], [ 4.649549310E+00, -2.791741060E-03, + 1.808363370E-06, 3.412448680E-11, -4.487821840E-15, + -1.014677970E+03, -1.717673470E+01] ) + ) + # note = "CODA89" + ) + +species(name = "KCN(s)", + atoms = " K:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.179972800E+00, -1.401078200E-03, + 3.423772500E-06, -3.496173800E-09, 1.305278000E-12, + -1.604820100E+04, -3.094452500E+01] ), + NASA( [ 1000.00, 895.00], [ 8.179972800E+00, -1.401078200E-03, + 3.423772500E-06, -3.496173800E-09, 1.305278000E-12, + -1.604820100E+04, -3.094452500E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "KCN(L)", + atoms = " K:1 C:1 N:1 ", + thermo = ( + NASA( [ 895.00, 1000.00], [ 9.058130500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.522671700E+04, -3.545408300E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.058130500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.522671700E+04, -3.545408300E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "KCL(s)", + atoms = " K:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.393431100E+00, 2.653524200E-03, + 9.607565500E-07, -5.025184300E-09, 4.072122800E-12, + -5.424838900E+04, -2.159681400E+01] ), + NASA( [ 1000.00, 1044.00], [ 3.915716900E+00, -2.092727100E-03, + 4.731018200E-06, 7.015253700E-09, -5.514609800E-12, + -5.274706600E+04, -1.014480000E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "KCL(L)", + atoms = " K:1 Cl:1 ", + thermo = ( + NASA( [ 1044.00, 1000.00], [ 8.851806400E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.336947800E+04, -4.001005900E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.851806400E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.336947800E+04, -4.001005900E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "KF(s)", + atoms = " K:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.984397200E+00, 3.594319000E-03, + -1.769640100E-06, -4.810614100E-10, 1.028073000E-12, + -7.001814900E+04, -2.138450400E+01] ), + NASA( [ 1000.00, 1131.00], [ 9.462778200E+00, -6.405751200E-03, + 6.391326200E-08, 7.594958900E-09, -3.359810400E-12, + -7.124910700E+04, -4.483180400E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "KF(L)", + atoms = " K:1 F:1 ", + thermo = ( + NASA( [ 1131.00, 1000.00], [ 8.655546900E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.926802500E+04, -4.117993200E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.655546900E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.926802500E+04, -4.117993200E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "KHF2(a)", + atoms = " K:1 H:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -9.129849800E+00, 8.661888900E-02, + 4.390441200E-05, -6.686759900E-07, 8.045416300E-10, + -1.125825900E+05, 4.108280000E+01] ), + NASA( [ 1000.00, 469.85], [ -9.129849800E+00, 8.661888900E-02, + 4.390441200E-05, -6.686759900E-07, 8.045416300E-10, + -1.125825900E+05, 4.108280000E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "KHF2(b)", + atoms = " K:1 H:1 F:2 ", + thermo = ( + NASA( [ 469.85, 1000.00], [ 1.205737800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.145712600E+05, -5.417014000E+01] ), + NASA( [ 1000.00, 511.95], [ 1.205737800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.145712600E+05, -5.417014000E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "KHF2(L)", + atoms = " K:1 H:1 F:2 ", + thermo = ( + NASA( [ 511.95, 1000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.140430900E+05, -5.587991500E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.140430900E+05, -5.587991500E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "KOH(a)", + atoms = " K:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 516.00], [ 6.440097700E+00, 1.131016800E-03, + 1.507327200E-05, -1.490611900E-08, 1.055632500E-11, + -5.316189800E+04, -2.809885300E+01] ) + ) + # note = "J12/70" + ) + +species(name = "KOH(b)", + atoms = " K:1 O:1 H:1 ", + thermo = ( + NASA( [ 516.00, 679.00], [ 9.460714000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.329164800E+04, -4.336932600E+01] ) + ) + # note = "J12/70" + ) + +species(name = "KOH(L)", + atoms = " K:1 O:1 H:1 ", + thermo = ( + NASA( [ 679.00, 5000.00], [ 9.995646900E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.262073100E+04, -4.533439200E+01] ) + ) + # note = "J12/70" + ) + +species(name = "KO2(s)", + atoms = " K:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.877548700E+00, 3.015703100E-02, + -5.118225100E-05, 4.163387200E-08, -1.307295600E-11, + -3.634072700E+04, -1.441903200E+01] ), + NASA( [ 1000.00, 1500.00], [ -1.049454500E+01, 6.885898800E-02, + -8.140230700E-05, 4.294769200E-08, -8.496583200E-12, + -3.248998900E+04, 5.968591300E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "K2CO3(s)", + atoms = " K:2 C:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.439863200E+00, 1.883625600E-02, + -4.682748300E-07, -1.051961000E-08, 6.431841200E-12, + -1.416674400E+05, -3.489442400E+01] ), + NASA( [ 1000.00, 1174.00], [ 2.282434100E+01, -1.358099300E-02, + 8.740989000E-06, 1.149442500E-08, -6.758814900E-12, + -1.457784400E+05, -1.104866500E+02] ) + ) + # note = "J 3/66" + ) + +species(name = "K2CO3(L)", + atoms = " K:2 C:1 O:3 ", + thermo = ( + NASA( [ 1174.00, 1000.00], [ 2.516146900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.474013800E+05, -1.311073000E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.516146900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.474013800E+05, -1.311073000E+02] ) + ) + # note = "J 3/66" + ) + +species(name = "K2O(s)", + atoms = " K:2 O:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.430398720E-01, 6.206377050E-02, + -1.362310730E-04, 1.363769720E-07, -4.901638600E-11, + -4.561258620E+04, -4.759034700E+00] ), + NASA( [ 1000.00, 2000.00], [ 7.187026400E+00, 9.114923650E-03, + -4.180668800E-06, 1.798982670E-09, -2.839412510E-13, + -4.600094260E+04, -3.174498020E+01] ) + ) + # note = "J 6/63" + ) + +species(name = "K2O2(s)", + atoms = " K:2 O:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 8.826742080E+00, 1.326212640E-02, + -1.114395780E-05, 1.095885630E-08, -4.241016050E-12, + -6.277352540E+04, -4.025143210E+01] ), + NASA( [ 1000.00, 2000.00], [ 1.048162990E+01, 6.908618070E-03, + 4.865670380E-07, -2.549027230E-10, 4.083861860E-14, + -6.318143180E+04, -4.847729020E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "K2S(1)", + atoms = " K:2 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.136443100E+01, -1.881066300E-01, + 5.600572700E-04, -6.970355500E-07, 3.124909400E-10, + -4.999740600E+04, -1.281045500E+02] ), + NASA( [ 1000.00, 1050.00], [ -7.484933700E+01, 9.361979600E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.721793900E+03, 4.496739300E+02] ) + ) + # note = "J 3/78" + ) + +species(name = "K2S(2)", + atoms = " K:2 S:1 ", + thermo = ( + NASA( [ 1050.00, 1000.00], [ 1.564281600E+02, -1.266444400E-01, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.311441900E+05, -9.279427500E+02] ), + NASA( [ 1000.00, 1100.00], [ 1.564281600E+02, -1.266444400E-01, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.311441900E+05, -9.279427500E+02] ) + ) + # note = "J 3/78" + ) + +species(name = "K2S(3)", + atoms = " K:2 S:1 ", + thermo = ( + NASA( [ 1100.00, 1000.00], [ 1.711986700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.452495300E+04, -9.166651100E+01] ), + NASA( [ 1000.00, 1221.00], [ 1.711986700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -5.452495300E+04, -9.166651100E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "K2S(L)", + atoms = " K:2 S:1 ", + thermo = ( + NASA( [ 1221.00, 1000.00], [ 1.214292700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.652034900E+04, -5.471604300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.214292700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.652034900E+04, -5.471604300E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "K2SO4(a)", + atoms = " K:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.702652600E+00, 8.470971400E-02, + -1.763257300E-04, 1.928280300E-07, -7.647089000E-11, + -1.759808700E+05, -7.563195100E+00] ), + NASA( [ 1000.00, 857.00], [ 1.702652600E+00, 8.470971400E-02, + -1.763257300E-04, 1.928280300E-07, -7.647089000E-11, + -1.759808700E+05, -7.563195100E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "K2SO4(b)", + atoms = " K:2 S:1 O:4 ", + thermo = ( + NASA( [ 857.00, 1000.00], [ 1.380717700E+01, 9.673059000E-03, + 4.565855100E-08, 0.000000000E+00, 0.000000000E+00, + -1.758532600E+05, -5.844129600E+01] ), + NASA( [ 1000.00, 1342.00], [ -2.901986600E+02, 1.056963100E+00, + -1.347529900E-03, 7.676657600E-07, -1.633744000E-10, + -1.055421400E+05, 1.453009400E+03] ) + ) + # note = "J 6/78" + ) + +species(name = "K2SO4(L)", + atoms = " K:2 S:1 O:4 ", + thermo = ( + NASA( [ 1342.00, 1000.00], [ 2.423049900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.769551900E+05, -1.174022200E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.423049900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.769551900E+05, -1.174022200E+02] ) + ) + # note = "J 6/78" + ) + +species(name = "Li(cr)", + atoms = " Li:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 6.109099420E-01, 1.410412170E-02, + -1.749581700E-05, -3.337410230E-08, 7.766296650E-11, + -6.251212080E+02, -3.264499470E+00] ), + NASA( [ 1000.00, 453.69], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS82" + ) + +species(name = "Li(L)", + atoms = " Li:1 ", + thermo = ( + NASA( [ 453.69, 1000.00], [ 4.622666380E+00, -4.061642050E-03, + 5.916661700E-06, -4.249600850E-09, 1.235174730E-12, + -9.588112670E+02, -2.127785010E+01] ), + NASA( [ 1000.00, 3000.00], [ 3.893142230E+00, -8.427876960E-04, + 4.455463280E-07, -3.653374540E-11, 3.892792200E-15, + -8.220195560E+02, -1.781830770E+01] ) + ) + # note = "TPIS82" + ) + +species(name = "LiALO2(s)", + atoms = " Li:1 Al:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -5.284115600E+00, 7.845258700E-02, + -1.454157800E-04, 1.246295800E-07, -4.011370500E-11, + -1.438183100E+05, 1.857673300E+01] ), + NASA( [ 1000.00, 1973.00], [ 8.544089400E+00, 6.488679100E-03, + -4.086396900E-06, 1.547146600E-09, -2.249503800E-13, + -1.459815000E+05, -4.459061800E+01] ) + ) + # note = "J12/79" + ) + +species(name = "LiALO2(L)", + atoms = " Li:1 Al:1 O:2 ", + thermo = ( + NASA( [ 1973.00, 1000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.416583900E+05, -8.099376700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.509667900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.416583900E+05, -8.099376700E+01] ) + ) + # note = "J12/79" + ) + +species(name = "LiCL(s)", + atoms = " Li:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.109524500E+00, 8.198100300E-03, + -1.154187400E-05, 1.058538600E-08, -3.645702200E-12, + -5.060826600E+04, -1.829889400E+01] ), + NASA( [ 1000.00, 883.00], [ 4.109524500E+00, 8.198100300E-03, + -1.154187400E-05, 1.058538600E-08, -3.645702200E-12, + -5.060826600E+04, -1.829889400E+01] ) + ) + # note = "J 6/62" + ) + +species(name = "LiCL(L)", + atoms = " Li:1 Cl:1 ", + thermo = ( + NASA( [ 883.00, 1000.00], [ 1.038302800E+01, -4.717969900E-03, + -1.613831700E-06, 8.080717400E-09, -4.445949300E-12, + -5.053912000E+04, -4.992196000E+01] ), + NASA( [ 1000.00, 2000.00], [ 8.214947700E+00, 5.639136100E-04, + -1.735033100E-06, 7.659500800E-10, -1.237847700E-13, + -5.000732200E+04, -3.880896100E+01] ) + ) + # note = "J 6/62" + ) + +species(name = "LiF(s)", + atoms = " Li:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.769432500E+00, 1.750522400E-02, + -2.803875100E-05, 2.289338500E-08, -6.963365800E-12, + -7.529927800E+04, -9.947805700E+00] ), + NASA( [ 1000.00, 1121.30], [ 5.540573800E+00, -1.342108000E-04, + 1.782560600E-06, 8.899644400E-10, -9.129665400E-13, + -7.590036500E+04, -2.744727600E+01] ) + ) + # note = "J12/68" + ) + +species(name = "LiF(L)", + atoms = " Li:1 F:1 ", + thermo = ( + NASA( [ 1121.30, 1000.00], [ 7.719540100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.430434700E+04, -3.881548700E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.719540100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.430434700E+04, -3.881548700E+01] ) + ) + # note = "J12/68" + ) + +species(name = "LiH(s)", + atoms = " Li:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.861181200E-01, 1.212795700E-02, + -8.690033600E-06, 5.631155500E-09, -1.269348300E-12, + -1.148699100E+04, -3.065457500E+00] ), + NASA( [ 1000.00, 961.80], [ 3.861181200E-01, 1.212795700E-02, + -8.690033600E-06, 5.631155500E-09, -1.269348300E-12, + -1.148699100E+04, -3.065457500E+00] ) + ) + # note = "J 9/67" + ) + +species(name = "LiH(L)", + atoms = " Li:1 H:1 ", + thermo = ( + NASA( [ 961.80, 1000.00], [ 7.498119100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.158182600E+04, -4.004727800E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.498119100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.158182600E+04, -4.004727800E+01] ) + ) + # note = "J 9/67" + ) + +species(name = "LiOH(s)", + atoms = " Li:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.322779700E-01, 2.534053800E-02, + -2.789795000E-05, 8.692589300E-09, 4.149989400E-12, + -5.941268000E+04, -4.838269700E+00] ), + NASA( [ 1000.00, 744.30], [ 6.322779700E-01, 2.534053800E-02, + -2.789795000E-05, 8.692589300E-09, 4.149989400E-12, + -5.941268000E+04, -4.838269700E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "LiOH(L)", + atoms = " Li:1 O:1 H:1 ", + thermo = ( + NASA( [ 744.30, 1000.00], [ 1.047421800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.018567100E+04, -5.389714000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.047421800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.018567100E+04, -5.389714000E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "Li2O(s)", + atoms = " Li:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -3.172723900E-01, 3.614935600E-02, + -5.545592100E-05, 4.179643700E-08, -1.180404800E-11, + -7.310619600E+04, -2.288833000E+00] ), + NASA( [ 1000.00, 1843.00], [ 4.277477600E+00, 7.852167200E-03, + -5.222509000E-07, -1.786442600E-09, 5.396103500E-13, + -7.339627800E+04, -2.176549700E+01] ) + ) + # note = "J 3/64" + ) + +species(name = "Li2O(L)", + atoms = " Li:2 O:1 ", + thermo = ( + NASA( [ 1843.00, 1000.00], [ 1.207693100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.133792100E+04, -6.517497400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.207693100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.133792100E+04, -6.517497400E+01] ) + ) + # note = "J 3/64" + ) + +species(name = "Li2SO4(a)", + atoms = " Li:2 S:1 O:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -4.138735970E+00, 1.069405680E-01, + -2.093460520E-04, 2.128928220E-07, -8.016251060E-11, + -1.748067760E+05, 1.298357730E+01] ), + NASA( [ 1000.00, 848.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J12/78" + ) + +species(name = "Li2SO4(b)", + atoms = " Li:2 S:1 O:4 ", + thermo = ( + NASA( [ 848.00, 1000.00], [ 2.579548120E+01, -2.846250520E-04, + 1.533011290E-07, 0.000000000E+00, 0.000000000E+00, + -1.803084450E+05, -1.363121680E+02] ), + NASA( [ 1000.00, 1132.00], [ 2.610265130E+01, -8.293047280E-04, + 3.908107350E-07, 0.000000000E+00, 0.000000000E+00, + -1.804224450E+05, -1.380080990E+02] ) + ) + # note = "J12/78" + ) + +species(name = "Li2SO4(L)", + atoms = " Li:2 S:1 O:4 ", + thermo = ( + NASA( [ 1132.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.465791320E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.780977980E+05, -1.276261580E+02] ) + ) + # note = "J12/78" + ) + +species(name = "Li3N(s)", + atoms = " Li:3 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.922555800E+00, 2.859870200E-02, + -3.533694700E-05, 3.186198500E-08, -1.109350100E-11, + -2.167802900E+04, -1.633105700E+01] ), + NASA( [ 1000.00, 1300.00], [ 5.442250300E+00, 1.347773700E-02, + -1.942232200E-06, -2.496010900E-11, 0.000000000E+00, + -2.201577600E+04, -2.745727500E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "Mg(cr)", + atoms = " Mg:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.478849440E+00, 9.274305260E-03, + -1.950507880E-05, 1.982155270E-08, -7.049273740E-12, + -7.166492990E+02, -6.572226950E+00] ), + NASA( [ 1000.00, 923.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "SRD 93" + ) + +species(name = "Mg(L)", + atoms = " Mg:1 ", + thermo = ( + NASA( [ 923.00, 1000.00], [ 4.125318270E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.589343410E+02, -1.937868940E+01] ), + NASA( [ 1000.00, 6000.00], [ 4.125318270E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.589343410E+02, -1.937868940E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "MgAL2O4(s)", + atoms = " Mg:1 Al:2 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -6.391262500E+00, 1.171886000E-01, + -2.132517800E-04, 1.827740500E-07, -5.883199100E-11, + -2.782714100E+05, 2.013270100E+01] ), + NASA( [ 1000.00, 2408.00], [ 1.469767900E+01, 9.330479700E-03, + -3.552259800E-06, 1.155053000E-09, -1.433453100E-13, + -2.816641100E+05, -7.666868500E+01] ) + ) + # note = "J12/79" + ) + +species(name = "MgAL2O4(L)", + atoms = " Mg:1 Al:2 O:4 ", + thermo = ( + NASA( [ 2408.00, 1000.00], [ 2.641918800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.688353600E+05, -1.419858100E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.641918800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.688353600E+05, -1.419858100E+02] ) + ) + # note = "J12/79" + ) + +species(name = "MgBr2(s)", + atoms = " Mg:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.196642200E+00, 2.067025300E-02, + -3.725393900E-05, 3.193756400E-08, -9.950701600E-12, + -6.525261600E+04, -2.028891000E+01] ), + NASA( [ 1000.00, 984.00], [ 5.196642200E+00, 2.067025300E-02, + -3.725393900E-05, 3.193756400E-08, -9.950701600E-12, + -6.525261600E+04, -2.028891000E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "MgBr2(L)", + atoms = " Mg:1 Br:2 ", + thermo = ( + NASA( [ 984.00, 1000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.396298200E+04, -5.625546000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.396298200E+04, -5.625546000E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "MgCO3(s)", + atoms = " Mg:1 C:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.349192400E+00, 3.693411200E-02, + -4.449295200E-05, 3.181590600E-08, -9.754530000E-12, + -1.354168500E+05, -9.061873200E+00] ), + NASA( [ 1000.00, 1000.00], [ 1.349192400E+00, 3.693411200E-02, + -4.449295200E-05, 3.181590600E-08, -9.754530000E-12, + -1.354168500E+05, -9.061873200E+00] ) + ) + # note = "J12/66" + ) + +species(name = "MgCL2(s)", + atoms = " Mg:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.449129600E+00, 1.674522400E-02, + -2.595690700E-05, 1.911157300E-08, -5.105901400E-12, + -7.934389400E+04, -2.426108400E+01] ), + NASA( [ 1000.00, 987.00], [ 5.449129600E+00, 1.674522400E-02, + -2.595690700E-05, 1.911157300E-08, -5.105901400E-12, + -7.934389400E+04, -2.426108400E+01] ) + ) + # note = "J12/65" + ) + +species(name = "MgCL2(L)", + atoms = " Mg:1 Cl:2 ", + thermo = ( + NASA( [ 987.00, 1000.00], [ 1.107104800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.629461800E+04, -4.897258800E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.107104800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.629461800E+04, -4.897258800E+01] ) + ) + # note = "J12/65" + ) + +species(name = "MgF2(s)", + atoms = " Mg:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.603611000E+00, 3.179448600E-02, + -5.268579800E-05, 4.158770600E-08, -1.261949500E-11, + -1.367203400E+05, -9.732317100E+00] ), + NASA( [ 1000.00, 1536.00], [ -2.102242700E+00, 3.502422800E-02, + -3.974989300E-05, 2.046185900E-08, -3.953441000E-12, + -1.353930800E+05, 1.104455500E+01] ) + ) + # note = "J 6/75" + ) + +species(name = "MgF2(L)", + atoms = " Mg:1 F:2 ", + thermo = ( + NASA( [ 1536.00, 1000.00], [ 1.141676700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.340841000E+05, -5.742506900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.141676700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.340841000E+05, -5.742506900E+01] ) + ) + # note = "J 6/75" + ) + +species(name = "MgI2(s)", + atoms = " Mg:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.701715900E+00, 1.169702200E-02, + -1.683630800E-05, 1.314380900E-08, -4.009995700E-12, + -4.652776100E+04, -2.543204300E+01] ), + NASA( [ 1000.00, 907.00], [ 6.701715900E+00, 1.169702200E-02, + -1.683630800E-05, 1.314380900E-08, -4.009995700E-12, + -4.652776100E+04, -2.543204300E+01] ) + ) + # note = "J12/74" + ) + +species(name = "MgI2(L)", + atoms = " Mg:1 I:2 ", + thermo = ( + NASA( [ 907.00, 1000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.552566000E+04, -5.188352600E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.552566000E+04, -5.188352600E+01] ) + ) + # note = "J12/74" + ) + +species(name = "MgO(s)", + atoms = " Mg:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -4.540395300E-01, 2.787326900E-02, + -4.906224700E-05, 4.047415100E-08, -1.267034400E-11, + -7.305794800E+04, -6.355202000E-01] ), + NASA( [ 1000.00, 3105.00], [ 5.044868100E+00, 1.689820100E-03, + -7.561769500E-07, 2.028689300E-10, -2.059127100E-14, + -7.402928500E+04, -2.632889200E+01] ) + ) + # note = "J12/74" + ) + +species(name = "MgO(L)", + atoms = " Mg:1 O:1 ", + thermo = ( + NASA( [ 3105.00, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.987945100E+04, -4.434382500E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.987945100E+04, -4.434382500E+01] ) + ) + # note = "J12/74" + ) + +species(name = "MgO2H2(s)", + atoms = " Mg:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -4.166424800E+00, 7.684498700E-02, + -1.372076700E-04, 1.142685900E-07, -3.592583700E-11, + -1.123843400E+05, 1.359263700E+01] ), + NASA( [ 1000.00, 1000.00], [ -4.166424800E+00, 7.684498700E-02, + -1.372076700E-04, 1.142685900E-07, -3.592583700E-11, + -1.123843400E+05, 1.359263700E+01] ) + ) + # note = "J12/75" + ) + +species(name = "MgS(s)", + atoms = " Mg:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.097287700E+00, 6.929785800E-03, + -9.202928600E-06, 5.632933500E-09, -1.217033000E-12, + -4.304075900E+04, -1.899600100E+01] ), + NASA( [ 1000.00, 3000.00], [ 5.350122900E+00, 1.343365500E-03, + -6.290500000E-07, 1.981985800E-10, -2.259164800E-14, + -4.323854800E+04, -2.483783100E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "MgSO4(s)", + atoms = " Mg:1 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.153405900E+00, 4.875653200E-02, + -7.366503000E-05, 5.942778700E-08, -1.843370800E-11, + -1.568096200E+05, -1.302844400E+01] ), + NASA( [ 1000.00, 1400.00], [ -6.447692000E+01, 2.637531700E-01, + -3.249188400E-04, 1.825723400E-07, -3.869076700E-11, + -1.406610700E+05, 3.218838900E+02] ) + ) + # note = "L 7/76" + ) + +species(name = "MgSO4(L)", + atoms = " Mg:1 S:1 O:4 ", + thermo = ( + NASA( [ 1400.00, 1000.00], [ 1.912272000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.609287600E+05, -1.018046500E+02] ), + NASA( [ 1000.00, 5000.00], [ 1.912272000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.609287600E+05, -1.018046500E+02] ) + ) + # note = "L 7/76" + ) + +species(name = "MgSiO3(I)", + atoms = " Mg:1 Si:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.337777900E+00, 4.445322200E-02, + -6.597375300E-05, 4.741425700E-08, -1.233109800E-11, + -1.881722600E+05, -1.017893600E+01] ), + NASA( [ 1000.00, 903.00], [ 1.337777900E+00, 4.445322200E-02, + -6.597375300E-05, 4.741425700E-08, -1.233109800E-11, + -1.881722600E+05, -1.017893600E+01] ) + ) + # note = "J12/67" + ) + +species(name = "MgSiO3(II)", + atoms = " Mg:1 Si:1 O:3 ", + thermo = ( + NASA( [ 903.00, 1000.00], [ 1.447388600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.916217200E+05, -7.665946400E+01] ), + NASA( [ 1000.00, 1258.00], [ 1.447388600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.916217200E+05, -7.665946400E+01] ) + ) + # note = "J12/67" + ) + +species(name = "MgSiO3(III)", + atoms = " Mg:1 Si:1 O:3 ", + thermo = ( + NASA( [ 1258.00, 1000.00], [ 1.472550100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.917419900E+05, -7.829929800E+01] ), + NASA( [ 1000.00, 1850.00], [ 1.472550100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.917419900E+05, -7.829929800E+01] ) + ) + # note = "J12/67" + ) + +species(name = "MgSiO3(L)", + atoms = " Mg:1 Si:1 O:3 ", + thermo = ( + NASA( [ 1850.00, 1000.00], [ 1.761303100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.880257900E+05, -9.512573100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.761303100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.880257900E+05, -9.512573100E+01] ) + ) + # note = "J12/67" + ) + +species(name = "MgTiO3(s)", + atoms = " Mg:1 Ti:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.577774300E-01, 6.201839700E-02, + -1.048059600E-04, 8.494092500E-08, -2.636729500E-11, + -1.910773800E+05, -4.661653500E+00] ), + NASA( [ 1000.00, 1953.00], [ 1.028822400E+01, 1.034373000E-02, + -7.401217900E-06, 2.792882400E-09, -3.953244800E-13, + -1.928116800E+05, -5.295808800E+01] ) + ) + # note = "J 6/67" + ) + +species(name = "MgTiO3(L)", + atoms = " Mg:1 Ti:1 O:3 ", + thermo = ( + NASA( [ 1953.00, 1000.00], [ 1.962594900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.909181200E+05, -1.065620400E+02] ), + NASA( [ 1000.00, 5000.00], [ 1.962594900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.909181200E+05, -1.065620400E+02] ) + ) + # note = "J 6/67" + ) + +species(name = "MgTi2O5(s)", + atoms = " Mg:1 Ti:2 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.271631100E+00, 9.266379400E-02, + -1.636950200E-04, 1.390337300E-07, -4.451323200E-11, + -3.051161300E+05, -1.242210200E+01] ), + NASA( [ 1000.00, 1963.00], [ 1.677660800E+01, 1.223779100E-02, + -6.301316000E-06, 2.401948800E-09, -3.541293000E-13, + -3.075465500E+05, -8.329339000E+01] ) + ) + # note = "J 6/67" + ) + +species(name = "MgTi2O5(L)", + atoms = " Mg:1 Ti:2 O:5 ", + thermo = ( + NASA( [ 1963.00, 1000.00], [ 3.140151900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.041000100E+05, -1.685864900E+02] ), + NASA( [ 1000.00, 5000.00], [ 3.140151900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.041000100E+05, -1.685864900E+02] ) + ) + # note = "J 6/67" + ) + +species(name = "Mg2SiO4(s)", + atoms = " Mg:2 Si:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.342898200E+00, 6.686658800E-02, + -9.644562500E-05, 6.642396000E-08, -1.718399000E-11, + -2.644690100E+05, -1.239916200E+01] ), + NASA( [ 1000.00, 2171.00], [ 1.575267900E+01, 6.800465000E-03, + -1.620395100E-06, 7.736811200E-12, 6.333757300E-14, + -2.672995500E+05, -8.145799200E+01] ) + ) + # note = "J12/67" + ) + +species(name = "Mg2SiO4(L)", + atoms = " Mg:2 Si:1 O:4 ", + thermo = ( + NASA( [ 2171.00, 1000.00], [ 2.465824400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.669254900E+05, -1.346151000E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.465824400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.669254900E+05, -1.346151000E+02] ) + ) + # note = "J12/67" + ) + +species(name = "Mg2TiO4(s)", + atoms = " Mg:2 Ti:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -5.044115600E-02, 8.808642400E-02, + -1.568378900E-04, 1.340184700E-07, -4.312378700E-11, + -2.630786500E+05, -6.253750700E+00] ), + NASA( [ 1000.00, 2013.00], [ 1.477257700E+01, 1.082414700E-02, + -4.990756000E-06, 1.740794400E-09, -2.539819500E-13, + -2.653907800E+05, -7.393371000E+01] ) + ) + # note = "J 6/67" + ) + +species(name = "Mg2TiO4(L)", + atoms = " Mg:2 Ti:1 O:4 ", + thermo = ( + NASA( [ 2013.00, 1000.00], [ 2.747632900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.615355900E+05, -1.474583700E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.747632900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.615355900E+05, -1.474583700E+02] ) + ) + # note = "J 6/67" + ) + +species(name = "Mo(cr)", + atoms = " Mo:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.328841410E+00, 9.825536890E-03, + -2.109298250E-05, 2.095095280E-08, -7.607032440E-12, + -6.843647890E+02, -6.292865380E+00] ), + NASA( [ 1000.00, 2896.00], [ 5.384328230E+00, -6.016221800E-03, + 6.014825260E-06, -2.329623380E-09, 3.520078080E-13, + -1.626572200E+03, -2.624888910E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "Mo(L)", + atoms = " Mo:1 ", + thermo = ( + NASA( [ 2896.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.528949990E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.021406670E+03, -2.280747520E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "NH4CL(a)", + atoms = " N:1 H:4 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.674938300E+00, 1.927342500E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.008275100E+04, -2.095913300E+01] ), + NASA( [ 1000.00, 458.00], [ 4.674938300E+00, 1.927342500E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.008275100E+04, -2.095913300E+01] ) + ) + # note = "BAR 73" + ) + +species(name = "NH4CL(b)", + atoms = " N:1 H:4 Cl:1 ", + thermo = ( + NASA( [ 458.00, 1000.00], [ 4.166685000E+00, 1.343604900E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.876269300E+04, -1.413440200E+01] ), + NASA( [ 1000.00, 793.20], [ 4.166685000E+00, 1.343604900E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.876269300E+04, -1.413440200E+01] ) + ) + # note = "BAR 73" + ) + +species(name = "Na(cr)", + atoms = " Na:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.239542420E+00, 2.005621890E-02, + -7.364182520E-05, 1.027121490E-07, 0.000000000E+00, + -8.133209160E+02, -4.506513910E+00] ), + NASA( [ 1000.00, 371.01], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "CODA89" + ) + +species(name = "Na(L)", + atoms = " Na:1 ", + thermo = ( + NASA( [ 371.01, 1000.00], [ 4.323824190E+00, -1.411454510E-03, + -1.310688460E-07, 9.174576790E-10, -2.350650700E-13, + -9.365222630E+02, -1.727226380E+01] ), + NASA( [ 1000.00, 2300.00], [ 4.598585430E+00, -2.424594060E-03, + 1.324537940E-06, -4.123753170E-11, 6.401670810E-15, + -9.985355340E+02, -1.862571270E+01] ) + ) + # note = "CODA89" + ) + +species(name = "NaALO2(a)", + atoms = " Na:1 Al:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -8.050478000E-01, 5.843496800E-02, + -1.188441500E-04, 1.197004200E-07, -4.622479300E-11, + -1.378166500E+05, -5.333528200E-02] ), + NASA( [ 1000.00, 740.00], [ -8.050478000E-01, 5.843496800E-02, + -1.188441500E-04, 1.197004200E-07, -4.622479300E-11, + -1.378166500E+05, -5.333528200E-02] ) + ) + # note = "J 3/63" + ) + +species(name = "NaALO2(b)", + atoms = " Na:1 Al:1 O:2 ", + thermo = ( + NASA( [ 740.00, 1000.00], [ 1.054234300E+01, 8.848390700E-04, + 1.390676300E-06, -5.139139300E-10, 0.000000000E+00, + -1.395806000E+05, -5.237136200E+01] ), + NASA( [ 1000.00, 3000.00], [ 1.196621500E+01, -2.281727700E-03, + 3.771374100E-06, -1.293267000E-09, 1.413502200E-13, + -1.400481800E+05, -6.000645500E+01] ) + ) + # note = "J 3/63" + ) + +species(name = "NaBr(s)", + atoms = " Na:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.876646100E+00, 6.831892800E-03, + -1.064116300E-05, 9.161392800E-09, -2.881629700E-12, + -4.514864400E+04, -1.898254500E+01] ), + NASA( [ 1000.00, 1020.00], [ 6.624644800E+00, 1.238298300E-04, + 4.099027600E-07, 2.068365100E-10, -1.807648500E-14, + -4.556037200E+04, -2.760580000E+01] ) + ) + # note = "J 9/64" + ) + +species(name = "NaBr(L)", + atoms = " Na:1 Br:1 ", + thermo = ( + NASA( [ 1020.00, 1000.00], [ 7.498119100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.304977000E+04, -3.017045100E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.498119100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.304977000E+04, -3.017045100E+01] ) + ) + # note = "J 9/64" + ) + +species(name = "NaCN(s)", + atoms = " Na:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.996773200E+00, 1.915455000E-03, + -5.342159100E-06, 6.809164200E-09, -3.141491100E-12, + -1.334029400E+04, -3.170393300E+01] ), + NASA( [ 1000.00, 835.00], [ 7.996773200E+00, 1.915455000E-03, + -5.342159100E-06, 6.809164200E-09, -3.141491100E-12, + -1.334029400E+04, -3.170393300E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "NaCN(L)", + atoms = " Na:1 C:1 N:1 ", + thermo = ( + NASA( [ 835.00, 1000.00], [ 9.561360000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.338640700E+04, -4.028730900E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.561360000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.338640700E+04, -4.028730900E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "NaCL(s)", + atoms = " Na:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.024077800E+00, 5.194906600E-03, + -7.283373000E-06, 6.067197900E-09, -1.201342400E-12, + -5.112333500E+04, -2.122720100E+01] ), + NASA( [ 1000.00, 1073.80], [ 2.213492700E+00, 1.585990200E-03, + 5.048638300E-06, 2.602054900E-09, -3.648709600E-12, + -4.926320300E+04, -2.602566000E+00] ) + ) + # note = "J 9/64" + ) + +species(name = "NaCL(L)", + atoms = " Na:1 Cl:1 ", + thermo = ( + NASA( [ 1073.80, 1000.00], [ 1.235848800E+01, -6.307120100E-03, + 3.200472300E-06, -6.771736200E-10, 5.101561200E-14, + -5.142326500E+04, -6.058553000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.235848800E+01, -6.307120100E-03, + 3.200472300E-06, -6.771736200E-10, 5.101561200E-14, + -5.142326500E+04, -6.058553000E+01] ) + ) + # note = "J 9/64" + ) + +species(name = "NaF(s)", + atoms = " Na:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.697755200E+00, 1.052057200E-02, + -1.723565600E-05, 1.412591100E-08, -3.951452900E-12, + -7.064718300E+04, -1.739363300E+01] ), + NASA( [ 1000.00, 1269.00], [ 7.834202600E+00, -9.483918000E-04, + -5.484398600E-06, 8.684302200E-09, -2.928586000E-12, + -7.181040500E+04, -3.881571000E+01] ) + ) + # note = "J12/68" + ) + +species(name = "NaF(L)", + atoms = " Na:1 F:1 ", + thermo = ( + NASA( [ 1269.00, 1000.00], [ 1.096326100E+01, -3.206845900E-03, + 1.161166200E-06, -1.629929700E-10, 5.245614100E-15, + -7.067394300E+04, -5.637569500E+01] ), + NASA( [ 1000.00, 3500.00], [ 1.096326100E+01, -3.206845900E-03, + 1.161166200E-06, -1.629929700E-10, 5.245614100E-15, + -7.067394300E+04, -5.637569500E+01] ) + ) + # note = "J12/68" + ) + +species(name = "NaI(s)", + atoms = " Na:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.499598400E+00, 3.566805300E-03, + -3.996563000E-06, 3.184107300E-09, -9.530872200E-13, + -3.639035600E+04, -2.039925100E+01] ), + NASA( [ 1000.00, 933.00], [ 5.499598400E+00, 3.566805300E-03, + -3.996563000E-06, 3.184107300E-09, -9.530872200E-13, + -3.639035600E+04, -2.039925100E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "NaI(L)", + atoms = " Na:1 I:1 ", + thermo = ( + NASA( [ 933.00, 1000.00], [ 7.800056800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.475956800E+04, -3.081888100E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.800056800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.475956800E+04, -3.081888100E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "NaOH(a)", + atoms = " Na:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.587949400E+00, -3.540601300E-03, + -4.553339400E-05, 1.841848300E-07, -1.501897300E-10, + -5.351185100E+04, -3.940758500E+01] ), + NASA( [ 1000.00, 596.00], [ 8.587949400E+00, -3.540601300E-03, + -4.553339400E-05, 1.841848300E-07, -1.501897300E-10, + -5.351185100E+04, -3.940758500E+01] ) + ) + # note = "J12/70" + ) + +species(name = "NaOH(L)", + atoms = " Na:1 O:1 H:1 ", + thermo = ( + NASA( [ 596.00, 1000.00], [ 9.055677500E+00, 4.302504100E-03, + -2.425913200E-06, -3.547966400E-09, 2.688942000E-12, + -5.294244500E+04, -4.351514000E+01] ), + NASA( [ 1000.00, 2500.00], [ 9.497232100E+00, 2.271797200E-03, + -2.397793400E-06, 7.839847700E-10, -8.197647200E-14, + -5.290682400E+04, -4.529990000E+01] ) + ) + # note = "J12/70" + ) + +species(name = "NaO2(s)", + atoms = " Na:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.279888200E+00, 4.416072100E-03, + 1.241392100E-06, -1.292117100E-09, 4.825947900E-13, + -3.372656100E+04, -2.889980700E+01] ), + NASA( [ 1000.00, 2000.00], [ 6.675317700E+00, 6.423451300E-03, + -1.543777300E-06, 6.835777400E-10, -1.107392200E-13, + -3.357254600E+04, -2.584860800E+01] ) + ) + # note = "J 6/63" + ) + +species(name = "Na2CO3(I)", + atoms = " Na:2 C:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.783565900E+00, 3.882970100E-02, + -9.826245500E-05, 1.654308400E-07, -8.329451500E-11, + -1.391701000E+05, -3.046329300E+01] ), + NASA( [ 1000.00, 723.15], [ 6.783565900E+00, 3.882970100E-02, + -9.826245500E-05, 1.654308400E-07, -8.329451500E-11, + -1.391701000E+05, -3.046329300E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "Na2CO3(II)", + atoms = " Na:2 C:1 O:3 ", + thermo = ( + NASA( [ 723.15, 1000.00], [ 1.184834100E+01, -3.513898600E-03, + 2.061556900E-05, -7.396517500E-09, 0.000000000E+00, + -1.381418700E+05, -4.806436800E+01] ), + NASA( [ 1000.00, 1123.15], [ 8.281775500E+00, 1.127538900E-02, + 1.996329400E-06, 0.000000000E+00, 0.000000000E+00, + -1.376126600E+05, -3.137258000E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "Na2CO3(L)", + atoms = " Na:2 C:1 O:3 ", + thermo = ( + NASA( [ 1123.15, 1000.00], [ 2.279629500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.422921800E+05, -1.162212100E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.279629500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.422921800E+05, -1.162212100E+02] ) + ) + # note = "J 3/66" + ) + +species(name = "Na2O(c)", + atoms = " Na:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.265458300E+00, 1.111687200E-02, + -6.387538200E-07, -9.699320700E-09, 5.372007100E-12, + -5.231434500E+04, -2.418702400E+01] ), + NASA( [ 1000.00, 1243.20], [ 2.416895600E+01, -2.527974400E-02, + -4.739065800E-06, 3.183638700E-08, -1.457026500E-11, + -5.804823600E+04, -1.251806500E+02] ) + ) + # note = "J 6/68" + ) + +species(name = "Na2O(a)", + atoms = " Na:2 O:1 ", + thermo = ( + NASA( [ 1243.20, 1000.00], [ -1.490659000E+02, 2.279903800E-01, + 3.839126800E-05, -1.709991900E-07, 6.139592600E-11, + 1.161479500E+04, 8.468926800E+02] ), + NASA( [ 1000.00, 1405.20], [ -1.490659000E+02, 2.279903800E-01, + 3.839126800E-05, -1.709991900E-07, 6.139592600E-11, + 1.161479500E+04, 8.468926800E+02] ) + ) + # note = "J 6/68" + ) + +species(name = "Na2O(L)", + atoms = " Na:2 O:1 ", + thermo = ( + NASA( [ 1405.20, 1000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.859485700E+04, -6.066154900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.859485700E+04, -6.066154900E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "Na2O2(a)", + atoms = " Na:2 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.581527800E+00, 3.245591000E-02, + -5.115420100E-05, 4.266397900E-08, -1.399163700E-11, + -6.416105300E+04, -2.245545300E+01] ), + NASA( [ 1000.00, 785.00], [ 4.581527800E+00, 3.245591000E-02, + -5.115420100E-05, 4.266397900E-08, -1.399163700E-11, + -6.416105300E+04, -2.245545300E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "Na2O2(b)", + atoms = " Na:2 O:2 ", + thermo = ( + NASA( [ 785.00, 1000.00], [ 1.366268000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.563257100E+04, -6.684155100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.366268000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.563257100E+04, -6.684155100E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "Na2S(1)", + atoms = " Na:2 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.707559900E+00, -3.112618300E-04, + 5.512116100E-06, -6.043507200E-09, 2.301754900E-12, + -4.695037900E+04, -4.383761300E+01] ), + NASA( [ 1000.00, 1276.00], [ 4.467556000E+02, -1.058511100E+00, + 8.117009300E-04, -1.887787800E-07, 0.000000000E+00, + -1.774839400E+05, -2.346265900E+03] ) + ) + # note = "J 3/78" + ) + +species(name = "Na2S(2)", + atoms = " Na:2 S:1 ", + thermo = ( + NASA( [ 1276.00, 1000.00], [ -5.679354900E+05, 1.680412100E+03, + -1.862267900E+00, 9.162058800E-04, -1.688487900E-07, + 1.533280500E+08, 2.910868700E+06] ), + NASA( [ 1000.00, 1445.00], [ -5.679354900E+05, 1.680412100E+03, + -1.862267900E+00, 9.162058800E-04, -1.688487900E-07, + 1.533280500E+08, 2.910868700E+06] ) + ) + # note = "J 3/78" + ) + +species(name = "Na2S(L)", + atoms = " Na:2 S:1 ", + thermo = ( + NASA( [ 1445.00, 1000.00], [ 1.107104800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.279093000E+04, -4.861588900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.107104800E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.279093000E+04, -4.861588900E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "Na2SO4(V)", + atoms = " Na:2 S:1 O:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.833931860E+00, 3.082019920E-02, + 5.979863500E-05, -2.597790780E-07, 2.478539980E-10, + -1.701560750E+05, -2.528864270E+01] ), + NASA( [ 1000.00, 458.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "Na2SO4(IV)", + atoms = " Na:2 S:1 O:4 ", + thermo = ( + NASA( [ 458.00, 1000.00], [ 9.719677840E+00, 2.188204200E-02, + -6.197707470E-06, 0.000000000E+00, 0.000000000E+00, + -1.707128190E+05, -4.360633690E+01] ), + NASA( [ 1000.00, 514.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "Na2SO4(I)", + atoms = " Na:2 S:1 O:4 ", + thermo = ( + NASA( [ 514.00, 1000.00], [ 1.548543890E+01, 1.926137770E-02, + -3.322573320E-05, 3.562833020E-08, -1.305772140E-11, + -1.713229230E+05, -7.351270150E+01] ), + NASA( [ 1000.00, 1157.00], [ 1.611573890E+01, 8.209258910E-03, + -2.333055470E-07, 0.000000000E+00, 0.000000000E+00, + -1.711291010E+05, -7.469907480E+01] ) + ) + # note = "J 6/78" + ) + +species(name = "Na2SO4(L)", + atoms = " Na:2 S:1 O:4 ", + thermo = ( + NASA( [ 1157.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.369777290E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.716589120E+05, -1.163584820E+02] ) + ) + # note = "J 6/78" + ) + +species(name = "Na3ALF6(a)", + atoms = " Na:3 Al:1 F:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.259295800E+00, 1.556966600E-01, + -3.616184400E-04, 4.047908000E-07, -1.650555200E-10, + -4.040599300E+05, -1.779854500E+01] ), + NASA( [ 1000.00, 836.00], [ 2.259295800E+00, 1.556966600E-01, + -3.616184400E-04, 4.047908000E-07, -1.650555200E-10, + -4.040599300E+05, -1.779854500E+01] ) + ) + # note = "J12/79" + ) + +species(name = "Na3ALF6(b)", + atoms = " Na:3 Al:1 F:6 ", + thermo = ( + NASA( [ 836.00, 1000.00], [ 1.659365700E+01, 1.691169400E-02, + 1.031660000E-06, 0.000000000E+00, 0.000000000E+00, + -4.010868900E+05, -6.491079200E+01] ), + NASA( [ 1000.00, 1285.00], [ 9.554395700E+00, 3.520154200E-02, + -1.462099400E-05, 4.402066900E-09, 0.000000000E+00, + -3.990755200E+05, -2.821617700E+01] ) + ) + # note = "J12/79" + ) + +species(name = "Na3ALF6(L)", + atoms = " Na:3 Al:1 F:6 ", + thermo = ( + NASA( [ 1285.00, 1000.00], [ 4.756762300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.129653800E+05, -2.537588000E+02] ), + NASA( [ 1000.00, 5000.00], [ 4.756762300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.129653800E+05, -2.537588000E+02] ) + ) + # note = "J12/79" + ) + +species(name = "Na5AL3F14(s)", + atoms = " Na:5 Al:3 F:14 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.372817100E+01, 2.329830000E-01, + -4.167217200E-04, 3.537326800E-07, -1.127677400E-10, + -9.232558200E+05, -7.391375400E+01] ), + NASA( [ 1000.00, 1010.00], [ 6.080537600E+01, 1.014901500E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.319436500E+05, -2.949194800E+02] ) + ) + # note = "J12/79" + ) + +species(name = "Na5AL3F14(L)", + atoms = " Na:5 Al:3 F:14 ", + thermo = ( + NASA( [ 1010.00, 1000.00], [ 1.171301000E+02, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.561288400E+05, -6.470530900E+02] ), + NASA( [ 1000.00, 5000.00], [ 1.171301000E+02, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.561288400E+05, -6.470530900E+02] ) + ) + # note = "J12/79" + ) + +species(name = "Nb(cr)", + atoms = " Nb:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.912005570E+00, 6.923962750E-03, + -1.560812010E-05, 1.618040900E-08, -6.046020430E-12, + -7.690371960E+02, -8.009902610E+00] ), + NASA( [ 1000.00, 2750.00], [ 4.214999860E+00, -2.906864910E-03, + 3.123969900E-06, -1.279097490E-09, 2.092294060E-13, + -1.286821020E+03, -1.919761790E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Nb(L)", + atoms = " Nb:1 ", + thermo = ( + NASA( [ 2750.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.025733330E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.427040470E+03, -1.857905520E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO(s)", + atoms = " Nb:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.982126000E+00, 1.021754500E-02, + -1.517889500E-05, 1.130846700E-08, -3.138285800E-12, + -5.170336900E+04, -1.391859700E+01] ), + NASA( [ 1000.00, 2210.00], [ 5.123655300E+00, 8.937586000E-04, + 3.093084500E-07, -1.643370200E-10, 2.856983500E-14, + -5.211091000E+04, -2.409952000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO(L)", + atoms = " Nb:1 O:1 ", + thermo = ( + NASA( [ 2210.00, 1000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.458713800E+04, -3.581734000E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.458713800E+04, -3.581734000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO2(I)", + atoms = " Nb:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.548417920E+00, 5.455364280E-02, + -1.206746260E-04, 1.237777700E-07, -4.561548080E-11, + -9.673116300E+04, 3.472682150E+00] ), + NASA( [ 1000.00, 1090.00], [ 5.289027160E+00, 5.203860620E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.729724610E+04, -2.489085970E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO2(II)", + atoms = " Nb:1 O:2 ", + thermo = ( + NASA( [ 1090.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1200.00], [ 1.117141000E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.002059980E+05, -5.998194410E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO2(III)", + atoms = " Nb:1 O:2 ", + thermo = ( + NASA( [ 1200.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 2175.00], [ 9.988850820E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.878692740E+04, -5.159750880E+01] ) + ) + # note = "J12/73" + ) + +species(name = "NbO2(L)", + atoms = " Nb:1 O:2 ", + thermo = ( + NASA( [ 2175.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.132237500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.061657580E+04, -5.675534620E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Nb2O5(s)", + atoms = " Nb:2 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.505348800E+00, 3.440121400E-02, + -3.769874800E-05, 1.986372000E-08, -3.961026700E-12, + -2.322322900E+05, -4.068492000E+01] ), + NASA( [ 1000.00, 1785.00], [ 1.705489200E+01, 4.914055800E-03, + 4.729464400E-07, -1.837607100E-09, 5.062192200E-13, + -2.342302700E+05, -8.322479900E+01] ) + ) + # note = "J12/72" + ) + +species(name = "Nb2O5(L)", + atoms = " Nb:2 O:5 ", + thermo = ( + NASA( [ 1785.00, 1000.00], [ 2.913698700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.373602500E+05, -1.593339600E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.913698700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.373602500E+05, -1.593339600E+02] ) + ) + # note = "J12/72" + ) + +species(name = "Ni(cr)", + atoms = " Ni:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.920976140E+00, -2.341847190E-02, + 1.342301450E-04, -2.759716390E-07, 1.985308610E-10, + -8.623872060E+02, -1.568561860E+01] ), + NASA( [ 1000.00, 631.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J12/76" + ) + +species(name = "Ni(L)", + atoms = " Ni:1 ", + thermo = ( + NASA( [ 1728.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.679890940E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.222383460E+02, -2.335177970E+01] ) + ) + # note = "J12/76" + ) + +species(name = "NiS(b)", + atoms = " Ni:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.515051300E+00, 1.981087900E-02, + -4.475171300E-05, 5.355273600E-08, -2.473915100E-11, + -1.189727500E+04, -1.229880500E+01] ), + NASA( [ 1000.00, 652.00], [ 2.515051300E+00, 1.981087900E-02, + -4.475171300E-05, 5.355273600E-08, -2.473915100E-11, + -1.189727500E+04, -1.229880500E+01] ) + ) + # note = "J12/76" + ) + +species(name = "NiS(a)", + atoms = " Ni:1 S:1 ", + thermo = ( + NASA( [ 652.00, 1000.00], [ 1.597785500E+00, 1.627915900E-02, + -2.395926400E-05, 1.966524700E-08, -5.999359200E-12, + -1.060519200E+04, -4.998841400E+00] ), + NASA( [ 1000.00, 1249.00], [ -2.168827700E+00, 2.046726100E-02, + -1.523906800E-05, 4.524203900E-09, 0.000000000E+00, + -9.253973100E+03, 1.601897600E+01] ) + ) + # note = "J12/76" + ) + +species(name = "NiS(L)", + atoms = " Ni:1 S:1 ", + thermo = ( + NASA( [ 1249.00, 1000.00], [ 9.234260800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.105365200E+04, -4.576973600E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.234260800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.105365200E+04, -4.576973600E+01] ) + ) + # note = "J12/76" + ) + +species(name = "NiS2(s)", + atoms = " Ni:1 S:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.744934900E+00, 2.535171400E-03, + -9.976758700E-08, 1.078295000E-10, -4.191294100E-14, + -1.822253900E+04, -3.622438800E+01] ), + NASA( [ 1000.00, 1280.00], [ 5.274264000E+00, 9.087093100E-03, + -5.820109900E-06, 1.705008100E-09, 0.000000000E+00, + -1.752872500E+04, -2.339221900E+01] ) + ) + # note = "J 3/77" + ) + +species(name = "NiS2(L)", + atoms = " Ni:1 S:2 ", + thermo = ( + NASA( [ 1280.00, 1000.00], [ 1.094524100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.234492500E+04, -4.972062400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.094524100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.234492500E+04, -4.972062400E+01] ) + ) + # note = "J 3/77" + ) + +species(name = "Ni3S2(I)", + atoms = " Ni:3 S:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.923830000E+00, 4.044668000E-02, + -7.307395700E-05, 7.100707600E-08, -2.622185900E-11, + -2.936219600E+04, -3.273505200E+01] ), + NASA( [ 1000.00, 829.00], [ 6.923830000E+00, 4.044668000E-02, + -7.307395700E-05, 7.100707600E-08, -2.622185900E-11, + -2.936219600E+04, -3.273505200E+01] ) + ) + # note = "J12/76" + ) + +species(name = "Ni3S2(II)", + atoms = " Ni:3 S:2 ", + thermo = ( + NASA( [ 829.00, 1000.00], [ 2.268558500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.931347900E+04, -1.116897800E+02] ), + NASA( [ 1000.00, 1062.00], [ 2.268558500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.931347900E+04, -1.116897800E+02] ) + ) + # note = "J12/76" + ) + +species(name = "Ni3S2(L)", + atoms = " Ni:3 S:2 ", + thermo = ( + NASA( [ 1062.00, 1000.00], [ 2.306803900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.734440200E+04, -1.121181100E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.306803900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.734440200E+04, -1.121181100E+02] ) + ) + # note = "J12/76" + ) + +species(name = "Ni3S4(s)", + atoms = " Ni:3 S:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.467119300E+01, 1.727716400E-02, + -2.756928400E-09, 1.023385800E-11, -6.298395600E-15, + -4.135847900E+04, -6.631293900E+01] ), + NASA( [ 1000.00, 1100.00], [ 1.467381800E+01, 1.727571800E-02, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.136000100E+04, -6.632916200E+01] ) + ) + # note = "J 3/77" + ) + +species(name = "P(cr)", + atoms = " P:1 ", + thermo = ( + NASA( [ 195.40, 1000.00], [ 8.024696810E-01, 1.857793470E-02, + -8.340807480E-05, 2.111048760E-07, -2.096588940E-10, + -6.463625700E+02, -2.912810270E+00] ), + NASA( [ 1000.00, 317.30], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "P(L)", + atoms = " P:1 ", + thermo = ( + NASA( [ 317.30, 1000.00], [ 3.141496010E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.621485640E+02, -1.272274720E+01] ), + NASA( [ 1000.00, 6000.00], [ 3.141496010E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.621485640E+02, -1.272274720E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "P4O10(s)", + atoms = " P:4 O:10 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.955609900E-01, 1.133381700E-01, + -1.240998200E-04, 9.771560100E-08, -3.410783900E-11, + -3.662564430E+05, -3.809069700E+00] ), + NASA( [ 1000.00, 1500.00], [ -4.330062500E+01, 2.156737600E-01, + -1.768634400E-04, 6.764285200E-08, -9.910871000E-12, + -3.534613930E+05, 2.260547200E+02] ) + ) + # note = "J12/65" + ) + +species(name = "Pb(cr)", + atoms = " Pb:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.360142480E+00, -4.315255140E-03, + 2.104044110E-05, -3.358973570E-08, 1.918509880E-11, + -9.385930070E+02, -1.074086870E+01] ), + NASA( [ 1000.00, 600.65], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "Pb(L)", + atoms = " Pb:1 ", + thermo = ( + NASA( [ 600.65, 1000.00], [ 3.406799350E+00, 2.032219270E-03, + -4.174174700E-06, 3.083970220E-09, -8.165314380E-13, + -5.920277690E+02, -1.133779550E+01] ), + NASA( [ 1000.00, 3600.00], [ 4.181913550E+00, -9.841509790E-04, + 3.553398090E-07, -1.758083490E-11, -3.238844190E-15, + -7.560657690E+02, -1.510995450E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "PbBr2(s)", + atoms = " Pb:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.055755400E+01, -7.061739300E-03, + 1.018760200E-05, 1.305287600E-08, -1.637309400E-11, + -3.630480100E+04, -3.919903200E+01] ), + NASA( [ 1000.00, 644.00], [ 1.055755400E+01, -7.061739300E-03, + 1.018760200E-05, 1.305287600E-08, -1.637309400E-11, + -3.630480100E+04, -3.919903200E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbBr2(L)", + atoms = " Pb:1 Br:2 ", + thermo = ( + NASA( [ 644.00, 1000.00], [ 1.348654900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.657220100E+04, -5.704908700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.348654900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.657220100E+04, -5.704908700E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbCL2(s)", + atoms = " Pb:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.280269000E+00, 3.041434300E-03, + 1.560258000E-06, -2.228461000E-09, 1.111544000E-12, + -4.584121800E+04, -3.178124200E+01] ), + NASA( [ 1000.00, 774.00], [ 8.280269000E+00, 3.041434300E-03, + 1.560258000E-06, -2.228461000E-09, 1.111544000E-12, + -4.584121800E+04, -3.178124200E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "PbCL2(L)", + atoms = " Pb:1 Cl:2 ", + thermo = ( + NASA( [ 774.00, 1000.00], [ 1.341106500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.616707700E+04, -5.993265400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.341106500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.616707700E+04, -5.993265400E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "PbF2(a)", + atoms = " Pb:1 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.469664710E+01, -1.596588860E-01, + 5.676763180E-04, -8.510305240E-07, 4.668419850E-10, + -8.524133170E+04, -9.815737140E+01] ), + NASA( [ 1000.00, 583.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbF2(b)", + atoms = " Pb:1 F:2 ", + thermo = ( + NASA( [ 583.00, 1000.00], [ -9.635249570E+02, 4.505874530E+00, + -7.582241070E-03, 5.523155240E-06, -1.471839230E-09, + 7.852312550E+04, 4.495317360E+03] ), + NASA( [ 1000.00, 1103.00], [ 9.932846740E+02, -1.872559430E+00, + 8.906992730E-04, 0.000000000E+00, 0.000000000E+00, + -4.269620080E+05, -5.406788970E+03] ) + ) + # note = "J12/73" + ) + +species(name = "PbF2(L)", + atoms = " Pb:1 F:2 ", + thermo = ( + NASA( [ 1103.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.313406480E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.475521520E+04, -6.207132780E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbI2(s)", + atoms = " Pb:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.442443100E+00, 5.919577200E-03, + -1.388868600E-05, 1.322139300E-08, 1.616406800E-12, + -2.377904900E+04, -2.833790000E+01] ), + NASA( [ 1000.00, 683.00], [ 8.442443100E+00, 5.919577200E-03, + -1.388868600E-05, 1.322139300E-08, 1.616406800E-12, + -2.377904900E+04, -2.833790000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbI2(L)", + atoms = " Pb:1 I:2 ", + thermo = ( + NASA( [ 683.00, 1000.00], [ 1.305880500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.344093200E+04, -5.204480700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.305880500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.344093200E+04, -5.204480700E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbO(rd)", + atoms = " Pb:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.864601000E+00, 1.077237200E-02, + -3.661309600E-06, -1.228108700E-08, 1.006643500E-11, + -2.767017400E+04, -1.130451300E+01] ), + NASA( [ 1000.00, 762.00], [ 2.864601000E+00, 1.077237200E-02, + -3.661309600E-06, -1.228108700E-08, 1.006643500E-11, + -2.767017400E+04, -1.130451300E+01] ) + ) + # note = "J12/71" + ) + +species(name = "PbO(yw)", + atoms = " Pb:1 O:1 ", + thermo = ( + NASA( [ 762.00, 1000.00], [ 4.207325300E+00, 5.217648100E-03, + -3.861358700E-06, 1.384014600E-09, 0.000000000E+00, + -2.766560100E+04, -1.706447600E+01] ), + NASA( [ 1000.00, 1159.00], [ 5.112462600E+00, 2.039448900E-03, + -2.042822800E-07, 0.000000000E+00, 0.000000000E+00, + -2.785466100E+04, -2.150594400E+01] ) + ) + # note = "J12/71" + ) + +species(name = "PbO(L)", + atoms = " Pb:1 O:1 ", + thermo = ( + NASA( [ 1159.00, 1000.00], [ 7.817669800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.665653300E+04, -3.571693400E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.817669800E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.665653300E+04, -3.571693400E+01] ) + ) + # note = "J12/71" + ) + +species(name = "PbO2(s)", + atoms = " Pb:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.342978500E+00, 2.661291000E-02, + -4.121263300E-05, 3.072324000E-08, -8.928787500E-12, + -3.458529100E+04, -1.106993100E+01] ), + NASA( [ 1000.00, 1200.00], [ 6.869549000E+00, 4.688794000E-03, + -2.020634900E-06, 0.000000000E+00, 0.000000000E+00, + -3.531875000E+04, -3.200137200E+01] ) + ) + # note = "J12/71" + ) + +species(name = "PbS(s)", + atoms = " Pb:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.516097000E+00, 1.719668800E-03, + -1.265860400E-06, 1.250568500E-09, -4.627850800E-13, + -1.353818000E+04, -2.090926700E+01] ), + NASA( [ 1000.00, 1386.50], [ 4.869540800E+00, 2.550984800E-03, + -3.804287900E-07, -5.481463800E-10, 2.657381900E-13, + -1.329845200E+04, -1.729960600E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "PbS(L)", + atoms = " Pb:1 S:1 ", + thermo = ( + NASA( [ 1386.50, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.356606000E+04, -3.575779600E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.356606000E+04, -3.575779600E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "Pb3O4(s)", + atoms = " Pb:3 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.470935700E+00, 8.986700900E-02, + -1.523131100E-04, 1.198850000E-07, -3.494965200E-11, + -9.004772600E+04, -9.606223500E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.992720300E+01, 5.033623300E-03, + -8.343921700E-10, 2.076089900E-13, -1.777088000E-17, + -9.287678700E+04, -9.028840700E+01] ) + ) + # note = "J12/71" + ) + +species(name = "S(cr1)", + atoms = " S:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.713695120E-01, 1.533735010E-02, + -3.354411070E-05, 2.892495000E-08, 0.000000000E+00, + -5.532138500E+02, -1.596244980E+00] ), + NASA( [ 1000.00, 368.30], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "S(cr2)", + atoms = " S:1 ", + thermo = ( + NASA( [ 368.30, 1000.00], [ 2.080331460E+00, 2.441375540E-03, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.853066950E+02, -8.607154870E+00] ), + NASA( [ 1000.00, 388.36], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "S(L)", + atoms = " S:1 ", + thermo = ( + NASA( [ 388.36, 1000.00], [ -7.274056840E+01, 4.812225340E-01, + -1.078422330E-03, 1.032577280E-06, -3.588844900E-10, + 8.291348560E+03, 3.152697430E+02] ), + NASA( [ 1000.00, 6000.00], [ 3.500784100E+00, 3.816621000E-04, + -1.555699620E-07, 2.727836890E-11, -1.728125540E-15, + -5.908730350E+02, -1.521672700E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "SCL2(L)", + atoms = " S:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.094524100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.251754300E+03, -4.026979500E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.094524100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.251754300E+03, -4.026979500E+01] ) + ) + # note = "J 6/78" + ) + +species(name = "S2CL2(L)", + atoms = " S:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.494893500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.145191500E+04, -5.825022500E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.494893500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.145191500E+04, -5.825022500E+01] ) + ) + # note = "J 6/78" + ) + +species(name = "Si(cr)", + atoms = " Si:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.291769120E-01, 1.472031390E-02, + -2.765101600E-05, 2.418782510E-08, -7.934529120E-12, + -4.155164170E+02, -3.595700080E-01] ), + NASA( [ 1000.00, 1690.00], [ 1.755473820E+00, 3.172854970E-03, + -2.782364020E-06, 1.264580650E-09, -2.171284640E-13, + -6.286573630E+02, -8.553411770E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "Si(L)", + atoms = " Si:1 ", + thermo = ( + NASA( [ 1690.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.271389410E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 4.882867950E+03, -1.326654770E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "SiC(b)", + atoms = " Si:1 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.471590700E+00, 3.069378300E-02, + -4.926308500E-05, 3.862638900E-08, -1.176162100E-11, + -9.069126000E+03, 8.800921400E+00] ), + NASA( [ 1000.00, 4000.00], [ 3.797480900E+00, 3.187288600E-03, + -1.450233400E-06, 3.154974400E-10, -2.615899100E-14, + -1.029193700E+04, -2.106779100E+01] ) + ) + # note = "J 3/67" + ) + +species(name = "SiO2(Lqz)", + atoms = " Si:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -7.585113800E-01, 3.057739890E-02, + -4.008618550E-05, 2.161948490E-08, -6.172490420E-13, + -1.103714830E+05, 1.783845290E+00] ), + NASA( [ 1000.00, 847.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "J 6/67" + ) + +species(name = "SiO2(hqz)", + atoms = " Si:1 O:2 ", + thermo = ( + NASA( [ 847.00, 1000.00], [ 7.117876210E+00, 1.138195270E-03, + 3.697342340E-08, 0.000000000E+00, 0.000000000E+00, + -1.117941940E+05, -3.637080640E+01] ), + NASA( [ 1000.00, 1696.00], [ 7.235371060E+00, 7.618422270E-04, + 4.895022940E-07, -2.357545910E-10, 4.208391310E-14, + -1.118238340E+05, -3.696427960E+01] ) + ) + # note = "J 6/67" + ) + +species(name = "SiO2(L)", + atoms = " Si:1 O:2 ", + thermo = ( + NASA( [ 1696.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.031606570E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.146005630E+05, -5.762666030E+01] ) + ) + # note = "J 6/67" + ) + +species(name = "Si2N2O(s)", + atoms = " Si:2 N:2 O:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ -4.122685400E+00, 5.417281400E-02, + -4.239293000E-05, -1.072459500E-08, 1.736685800E-11, + -1.147460000E+05, 1.482215800E+01] ), + NASA( [ 1000.00, 2500.00], [ 1.184902300E+01, 2.424468100E-03, + 3.652923500E-07, -4.257882900E-10, 8.627593000E-14, + -1.182149400E+05, -6.425009200E+01] ) + ) + # note = "L 1/84" + ) + +species(name = "Si3N4(a)", + atoms = " Si:3 N:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.163568000E+00, 1.900711100E-02, + -1.146933300E-05, 7.066591500E-09, -2.745864000E-12, + -9.246665100E+04, -3.244243100E+01] ), + NASA( [ 1000.00, 3000.00], [ 2.798174500E+00, 2.797501800E-02, + -1.502057800E-05, 3.587228800E-09, -3.177696900E-13, + -9.101724100E+04, -8.926881900E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "Sr(a)", + atoms = " Sr:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.611218550E+00, 3.069238960E-03, + -4.439808540E-06, 4.035247890E-09, -1.480878350E-12, + -8.830026750E+02, -9.013310930E+00] ), + NASA( [ 1000.00, 820.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "SRD 93" + ) + +species(name = "Sr(b)", + atoms = " Sr:1 ", + thermo = ( + NASA( [ 820.00, 1000.00], [ 3.190326310E+00, 4.837326550E-04, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.560806290E+02, -1.157234660E+01] ), + NASA( [ 1000.00, 1041.00], [ 3.190326310E+00, 4.837326550E-04, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -8.560806290E+02, -1.157234660E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "Sr(L)", + atoms = " Sr:1 ", + thermo = ( + NASA( [ 1041.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.450051780E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -9.431755400E+02, -1.889699620E+01] ) + ) + # note = "SRD 93" + ) + +species(name = "SrCL2(a)", + atoms = " Sr:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.936963500E+00, 1.078760000E-02, + -1.390794000E-05, 5.898227600E-09, 3.013332600E-12, + -1.021271900E+05, -2.837088200E+01] ), + NASA( [ 1000.00, 1000.00], [ 6.936963500E+00, 1.078760000E-02, + -1.390794000E-05, 5.898227600E-09, 3.013332600E-12, + -1.021271900E+05, -2.837088200E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrCL2(b)", + atoms = " Sr:1 Cl:2 ", + thermo = ( + NASA( [ 1000.00, 1000.00], [ 1.479494700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.064275000E+05, -7.537622800E+01] ), + NASA( [ 1000.00, 1147.00], [ 1.479494700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.064275000E+05, -7.537622800E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrCL2(L)", + atoms = " Sr:1 Cl:2 ", + thermo = ( + NASA( [ 1147.00, 1000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.019367700E+05, -5.807635300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.258073700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.019367700E+05, -5.807635300E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrF2(s)", + atoms = " Sr:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.291621300E+00, 1.553765500E-02, + -1.921190800E-05, 7.496523200E-09, 9.400057300E-13, + -1.485305000E+05, -2.408915300E+01] ), + NASA( [ 1000.00, 1750.00], [ 8.874716800E+01, -1.637650800E-01, + 6.519689900E-05, 4.354839500E-08, -2.367347400E-11, + -1.745612200E+05, -4.693452300E+02] ) + ) + # note = "J12/72" + ) + +species(name = "SrF2(L)", + atoms = " Sr:1 F:2 ", + thermo = ( + NASA( [ 1750.00, 1000.00], [ 1.191295100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.464280800E+05, -5.802284200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.191295100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.464280800E+05, -5.802284200E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrO(s)", + atoms = " Sr:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.563137200E+00, 9.271784600E-03, + -1.164657900E-05, 7.085183200E-09, -1.525990600E-12, + -7.259140400E+04, -1.592879600E+01] ), + NASA( [ 1000.00, 2938.00], [ 5.647793500E+00, 1.315399900E-03, + -2.764041200E-07, 6.730833100E-11, -6.562635300E-15, + -7.303734400E+04, -2.609836000E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrO(L)", + atoms = " Sr:1 O:1 ", + thermo = ( + NASA( [ 2938.00, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.673476900E+04, -3.909294400E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.673476900E+04, -3.909294400E+01] ) + ) + # note = "J12/72" + ) + +species(name = "SrO2H2(s)", + atoms = " Sr:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.170695600E+00, 1.650370100E-02, + -1.302974500E-06, 1.397181900E-09, -5.394894200E-13, + -1.185005600E+05, -1.696281300E+01] ), + NASA( [ 1000.00, 783.15], [ 4.170695600E+00, 1.650370100E-02, + -1.302974500E-06, 1.397181900E-09, -5.394894200E-13, + -1.185005600E+05, -1.696281300E+01] ) + ) + # note = "J12/75" + ) + +species(name = "SrO2H2(L)", + atoms = " Sr:1 O:2 H:2 ", + thermo = ( + NASA( [ 783.15, 1000.00], [ 1.897175100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.226117400E+05, -9.966050100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.897175100E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.226117400E+05, -9.966050100E+01] ) + ) + # note = "J12/75" + ) + +species(name = "SrS(s)", + atoms = " Sr:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.744423200E+00, -2.036361000E-03, + 1.198334000E-05, -1.488964300E-08, 5.961644300E-12, + -5.806299800E+04, -2.430731800E+01] ), + NASA( [ 1000.00, 3000.00], [ 5.940546300E+00, 1.044732800E-03, + -3.079439200E-07, 9.719854500E-11, -1.112968500E-14, + -5.825472900E+04, -2.609996100E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Ta(cr)", + atoms = " Ta:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.329984990E+00, 4.450284020E-03, + -9.522428190E-06, 9.878291590E-09, -3.783084060E-12, + -8.260914670E+02, -9.270936460E+00] ), + NASA( [ 1000.00, 3258.00], [ 2.895949630E+00, 5.337591330E-04, + -3.591447210E-08, -7.207614610E-11, 3.133020080E-14, + -8.712558260E+02, -1.164402800E+01] ) + ) + # note = "J12/72" + ) + +species(name = "Ta(L)", + atoms = " Ta:1 ", + thermo = ( + NASA( [ 3258.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.032166660E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.442237580E+02, -2.597365770E+01] ) + ) + # note = "J12/72" + ) + +species(name = "TaC(s)", + atoms = " Ta:1 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.024971700E+00, 1.762862000E-02, + -2.551585900E-05, 1.731330800E-08, -4.305785800E-12, + -1.822659700E+04, -5.009312700E+00] ), + NASA( [ 1000.00, 4273.00], [ 5.002705600E+00, 1.284904100E-03, + -1.749593900E-07, 3.524558100E-11, -2.642926000E-15, + -1.902055300E+04, -2.412969100E+01] ) + ) + # note = "J12/73" + ) + +species(name = "TaC(L)", + atoms = " Ta:1 C:1 ", + thermo = ( + NASA( [ 4273.00, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.010333800E+04, -4.208554500E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.010333800E+04, -4.208554500E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Ta2O5(s)", + atoms = " Ta:2 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.011994200E+01, 2.553755900E-02, + -1.684735100E-05, 3.473407800E-11, 3.126801100E-12, + -2.500817400E+05, -4.731087700E+01] ), + NASA( [ 1000.00, 2058.00], [ 1.847368400E+01, 3.490243300E-03, + 9.115658400E-07, -1.150828700E-09, 2.470206000E-13, + -2.524591100E+05, -9.073349100E+01] ) + ) + # note = "J12/72" + ) + +species(name = "Ta2O5(L)", + atoms = " Ta:2 O:5 ", + thermo = ( + NASA( [ 2058.00, 1000.00], [ 2.918730900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.533624500E+05, -1.585777400E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.918730900E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.533624500E+05, -1.585777400E+02] ) + ) + # note = "J12/72" + ) + +species(name = "Ti(a)", + atoms = " Ti:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.328296400E+00, 1.047761170E-02, + -2.198165390E-05, 2.174689980E-08, -7.660604280E-12, + -7.068810440E+02, -6.197229120E+00] ), + NASA( [ 1000.00, 1156.00], [ 2.979871710E+01, -5.673690240E-02, + 3.084873500E-05, 0.000000000E+00, 0.000000000E+00, + -9.275570250E+03, -1.567307930E+02] ) + ) + # note = "CODA89" + ) + +species(name = "Ti(b)", + atoms = " Ti:1 ", + thermo = ( + NASA( [ 1156.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 1944.00], [ 4.550509380E+00, -5.784468340E-03, + 6.584287760E-06, -2.605234840E-09, 4.069302180E-13, + -1.866957240E+02, -1.979530400E+01] ) + ) + # note = "CODA89" + ) + +species(name = "Ti(L)", + atoms = " Ti:1 ", + thermo = ( + NASA( [ 1944.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.628714140E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.375095980E+03, -3.078726910E+01] ) + ) + # note = "CODA89" + ) + +species(name = "TiC(s)", + atoms = " Ti:1 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.363394200E+00, 2.825223700E-02, + -4.117521100E-05, 2.678885800E-08, -6.346986800E-12, + -2.267835200E+04, 3.862648300E+00] ), + NASA( [ 1000.00, 3290.00], [ 5.941393600E+00, -3.727996700E-04, + 7.120995300E-07, -1.351709000E-10, 9.980366000E-15, + -2.417344500E+04, -3.153022200E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "TiC(L)", + atoms = " Ti:1 C:1 ", + thermo = ( + NASA( [ 3290.00, 1000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.766020400E+04, -4.062966100E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.766020400E+04, -4.062966100E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "TiCL2(s)", + atoms = " Ti:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.756751800E+00, 1.363103300E-02, + -2.041622900E-05, 1.590988800E-08, -4.545110400E-12, + -6.416991800E+04, -2.558545600E+01] ), + NASA( [ 1000.00, 2000.00], [ 7.968414700E+00, 2.544792500E-03, + -2.864811900E-07, 1.318780600E-10, -2.227082600E-14, + -6.450844200E+04, -3.571308900E+01] ) + ) + # note = "J12/68" + ) + +species(name = "TiCL3(s)", + atoms = " Ti:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.093793600E+01, 2.662273600E-03, + -1.478592300E-07, -1.540676800E-09, 9.221877400E-13, + -9.018266800E+04, -4.628728700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.146265800E+01, 1.401780600E-03, + -3.068972400E-08, 1.233900700E-13, -1.056129800E-17, + -9.031696000E+04, -4.899307800E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "TiCL4(L)", + atoms = " Ti:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.706604200E+01, 1.577716800E-03, + -1.087037600E-06, 1.039030300E-09, -3.602253000E-13, + -1.018713400E+05, -6.730822800E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.714264300E+01, 1.093708700E-03, + -1.069031100E-09, 2.661675700E-13, -2.279448000E-17, + -1.018802700E+05, -6.764014200E+01] ) + ) + # note = "J12/67" + ) + +species(name = "TiN(s)", + atoms = " Ti:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.532011900E+00, 4.117485600E-02, + -7.705577600E-05, 6.528986900E-08, -2.060518700E-11, + -4.112466600E+04, 8.675079600E+00] ), + NASA( [ 1000.00, 3220.00], [ 5.601005100E+00, 3.564593900E-04, + 3.952180300E-07, -8.871800200E-11, 7.784451300E-15, + -4.244343000E+04, -2.877329300E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "TiN(L)", + atoms = " Ti:1 N:1 ", + thermo = ( + NASA( [ 3220.00, 1000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.626170900E+04, -3.958390600E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.626170900E+04, -3.958390600E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "TiO(a)", + atoms = " Ti:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.980956400E-01, 2.135438300E-02, + -3.584287300E-05, 3.040815700E-08, -9.712163500E-12, + -6.622433200E+04, -5.956700400E+00] ), + NASA( [ 1000.00, 1265.00], [ 2.651678500E+00, 7.996320300E-03, + -4.955282800E-06, 1.412884200E-09, 0.000000000E+00, + -6.628836100E+04, -1.291870300E+01] ) + ) + # note = "J12/73" + ) + +species(name = "TiO(b)", + atoms = " Ti:1 O:1 ", + thermo = ( + NASA( [ 1265.00, 1000.00], [ 1.797141900E+00, 1.012886300E-02, + -7.458557100E-06, 3.083581500E-09, -4.756174700E-13, + -6.548277300E+04, -7.934917500E+00] ), + NASA( [ 1000.00, 2023.00], [ 1.797141900E+00, 1.012886300E-02, + -7.458557100E-06, 3.083581500E-09, -4.756174700E-13, + -6.548277300E+04, -7.934917500E+00] ) + ) + # note = "J12/73" + ) + +species(name = "TiO(L)", + atoms = " Ti:1 O:1 ", + thermo = ( + NASA( [ 2023.00, 1000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.327213800E+04, -4.131210900E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.051671500E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -6.327213800E+04, -4.131210900E+01] ) + ) + # note = "J12/73" + ) + +species(name = "TiO2(ru)", + atoms = " Ti:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.611751700E-01, 3.796666000E-02, + -6.515475000E-05, 5.255213600E-08, -1.620005100E-11, + -1.147889700E+05, -1.887403500E+00] ), + NASA( [ 1000.00, 2130.00], [ 6.848915100E+00, 4.246346100E-03, + -3.008898400E-06, 1.060251900E-09, -1.437959700E-13, + -1.159924600E+05, -3.451410600E+01] ) + ) + # note = "J12/73" + ) + +species(name = "TiO2(L)", + atoms = " Ti:1 O:2 ", + thermo = ( + NASA( [ 2130.00, 1000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.149423000E+05, -6.591075900E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.207750700E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.149423000E+05, -6.591075900E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Ti2O3(a)", + atoms = " Ti:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.462354200E+01, -3.716171700E-02, + 9.002647000E-05, 0.000000000E+00, 0.000000000E+00, + -1.864169300E+05, -6.691489900E+01] ), + NASA( [ 1000.00, 470.00], [ 1.462354200E+01, -3.716171700E-02, + 9.002647000E-05, 0.000000000E+00, 0.000000000E+00, + -1.864169300E+05, -6.691489900E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "Ti2O3(b)", + atoms = " Ti:2 O:3 ", + thermo = ( + NASA( [ 470.00, 1000.00], [ 1.697748500E+00, 5.713743400E-02, + -8.332068100E-05, 5.729952800E-08, -1.521168500E-11, + -1.852503600E+05, -1.406655900E+01] ), + NASA( [ 1000.00, 2115.00], [ 1.487422200E+01, 4.546569500E-03, + -2.364636300E-06, 5.996039200E-10, -5.341426000E-14, + -1.879734200E+05, -7.786316500E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "Ti2O3(L)", + atoms = " Ti:2 O:3 ", + thermo = ( + NASA( [ 2115.00, 1000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.785869800E+05, -9.656725700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.785869800E+05, -9.656725700E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "Ti3O5(a)", + atoms = " Ti:3 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -3.733743400E+00, 1.061931900E-01, + -1.047238100E-04, 0.000000000E+00, 0.000000000E+00, + -2.984561700E+05, 9.824101600E+00] ), + NASA( [ 1000.00, 450.00], [ -3.733743400E+00, 1.061931900E-01, + -1.047238100E-04, 0.000000000E+00, 0.000000000E+00, + -2.984561700E+05, 9.824101600E+00] ) + ) + # note = "J12/73" + ) + +species(name = "Ti3O5(b)", + atoms = " Ti:3 O:5 ", + thermo = ( + NASA( [ 450.00, 1000.00], [ 1.869281700E+01, 8.505106200E-03, + -5.124620800E-06, 4.611987500E-09, -1.523855700E-12, + -3.001289500E+05, -8.988958600E+01] ), + NASA( [ 1000.00, 2050.00], [ 1.841515900E+01, 8.001310200E-03, + -1.990705600E-06, 8.781239700E-10, -1.424527500E-13, + -2.999868400E+05, -8.813547900E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Ti3O5(L)", + atoms = " Ti:3 O:5 ", + thermo = ( + NASA( [ 2050.00, 1000.00], [ 3.220668600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.936854100E+05, -1.691270300E+02] ), + NASA( [ 1000.00, 5000.00], [ 3.220668600E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.936854100E+05, -1.691270300E+02] ) + ) + # note = "J12/73" + ) + +species(name = "Ti4O7(s)", + atoms = " Ti:4 O:7 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -8.633356000E-01, 1.416046200E-01, + -2.324230500E-04, 1.819407300E-07, -5.480141300E-11, + -4.137948400E+05, -4.563758000E+00] ), + NASA( [ 1000.00, 1950.00], [ 2.411291500E+01, 2.292771400E-02, + -1.711916300E-05, 6.484920600E-09, -9.488381100E-13, + -4.181071600E+05, -1.210465000E+02] ) + ) + # note = "J12/73" + ) + +species(name = "Ti4O7(L)", + atoms = " Ti:4 O:7 ", + thermo = ( + NASA( [ 1950.00, 1000.00], [ 4.428419400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.108967300E+05, -2.351604300E+02] ), + NASA( [ 1000.00, 5000.00], [ 4.428419400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.108967300E+05, -2.351604300E+02] ) + ) + # note = "J12/73" + ) + +species(name = "V(cr)", + atoms = " V:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.642730230E-01, 1.403012700E-02, + -3.152284950E-05, 3.167286380E-08, -1.143274590E-11, + -6.599695860E+02, -4.483322680E+00] ), + NASA( [ 1000.00, 2190.00], [ 4.482155890E+00, -4.257280530E-03, + 5.383252110E-06, -2.420440160E-09, 4.239811920E-13, + -1.284201950E+03, -2.124016250E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "V(L)", + atoms = " V:1 ", + thermo = ( + NASA( [ 2190.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.557032220E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.899581630E+03, -3.070343080E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "VCL2(s)", + atoms = " V:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.739559900E+00, 1.048722300E-02, + -1.722678000E-05, 1.476883100E-08, -4.755070600E-12, + -5.669888600E+04, -2.920570400E+01] ), + NASA( [ 1000.00, 1300.00], [ 6.271121600E+00, 7.489004600E-03, + -5.253100000E-06, 1.506736900E-09, 0.000000000E+00, + -5.635805600E+04, -2.572653800E+01] ) + ) + # note = "L 2/76" + ) + +species(name = "VCL3(s)", + atoms = " V:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.977041300E+00, 2.354201100E-02, + -4.074527200E-05, 3.492848300E-08, -1.124490000E-11, + -7.267816900E+04, -2.949371200E+01] ), + NASA( [ 1000.00, 1000.00], [ 6.977041300E+00, 2.354201100E-02, + -4.074527200E-05, 3.492848300E-08, -1.124490000E-11, + -7.267816900E+04, -2.949371200E+01] ) + ) + # note = "L 2/76" + ) + +species(name = "VCL4(L)", + atoms = " V:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.746206300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.369584500E+04, -6.879479200E+01] ), + NASA( [ 1000.00, 2000.00], [ 1.746206300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.369584500E+04, -6.879479200E+01] ) + ) + # note = "L 2/76" + ) + +species(name = "VN(s)", + atoms = " V:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.127135700E-01, 2.010104300E-02, + -3.117800400E-05, 2.310368900E-08, -6.384514400E-12, + -2.702009400E+04, -4.945743600E+00] ), + NASA( [ 1000.00, 3500.00], [ 4.836874000E+00, 1.890014700E-03, + -3.161046300E-07, 4.605066000E-11, -1.910203700E-15, + -2.773815200E+04, -2.387335300E+01] ) + ) + # note = "J12/73" + ) + +species(name = "VO(s)", + atoms = " V:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.538040100E+00, 1.644707800E-02, + -2.855981000E-05, 2.483639200E-08, -7.988694800E-12, + -5.321191900E+04, -1.359975800E+01] ), + NASA( [ 1000.00, 2063.00], [ 5.339871500E+00, 1.759170300E-03, + 3.847761700E-07, -2.618247100E-10, 5.100939500E-14, + -5.365137900E+04, -2.638236400E+01] ) + ) + # note = "J12/73" + ) + +species(name = "VO(L)", + atoms = " V:1 O:1 ", + thermo = ( + NASA( [ 2063.00, 1000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.760047400E+04, -3.615421300E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.548442100E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.760047400E+04, -3.615421300E+01] ) + ) + # note = "J12/73" + ) + +species(name = "V2O3(s)", + atoms = " V:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.287703300E+00, 5.763276300E-02, + -9.673855600E-05, 7.406691600E-08, -2.065838900E-11, + -1.491118900E+05, -1.472344600E+01] ), + NASA( [ 1000.00, 2340.00], [ 1.396421100E+01, 1.687129800E-03, + 1.137120600E-06, -2.080600700E-10, 1.002832500E-14, + -1.510057500E+05, -6.878289400E+01] ) + ) + # note = "J12/73" + ) + +species(name = "V2O3(L)", + atoms = " V:2 O:3 ", + thermo = ( + NASA( [ 2340.00, 1000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.403406300E+05, -9.458092000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.887110500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.403406300E+05, -9.458092000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "V2O4(I)", + atoms = " V:2 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.891454200E+00, 9.914202200E-03, + 5.783710100E-05, 4.305391900E-08, -2.848269400E-10, + -1.746086400E+05, -3.215735800E+01] ), + NASA( [ 1000.00, 340.00], [ 6.891454200E+00, 9.914202200E-03, + 5.783710100E-05, 4.305391900E-08, -2.848269400E-10, + -1.746086400E+05, -3.215735800E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "V2O4(II)", + atoms = " V:2 O:4 ", + thermo = ( + NASA( [ 340.00, 1000.00], [ 4.900362400E+00, 5.002695200E-02, + -7.131633200E-05, 4.651556700E-08, -1.078326800E-11, + -1.737367600E+05, -2.450337500E+01] ), + NASA( [ 1000.00, 1818.00], [ 1.661025600E+01, 2.332941900E-03, + 9.890478600E-07, -7.503249600E-10, 1.613546100E-13, + -1.760738900E+05, -8.083199700E+01] ) + ) + # note = "J 6/73" + ) + +species(name = "V2O4(L)", + atoms = " V:2 O:4 ", + thermo = ( + NASA( [ 1818.00, 1000.00], [ 2.566470300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.746300900E+05, -1.365594000E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.566470300E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.746300900E+05, -1.365594000E+02] ) + ) + # note = "J 6/73" + ) + +species(name = "V2O5(s)", + atoms = " V:2 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.164036000E+00, 9.353588400E-02, + -1.567509700E-04, 1.222352400E-07, -3.573884500E-11, + -1.891453100E+05, 4.072275300E-01] ), + NASA( [ 1000.00, 943.00], [ -1.164036000E+00, 9.353588400E-02, + -1.567509700E-04, 1.222352400E-07, -3.573884500E-11, + -1.891453100E+05, 4.072275300E-01] ) + ) + # note = "J 6/73" + ) + +species(name = "V2O5(L)", + atoms = " V:2 O:5 ", + thermo = ( + NASA( [ 943.00, 1000.00], [ 2.294726400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.875144700E+05, -1.108927700E+02] ), + NASA( [ 1000.00, 5000.00], [ 2.294726400E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.875144700E+05, -1.108927700E+02] ) + ) + # note = "J 6/73" + ) + +species(name = "Zn(cr)", + atoms = " Zn:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.850689290E+00, 9.177914100E-03, + -2.610470090E-05, 3.385687670E-08, -1.394307090E-11, + -7.894031330E+02, -7.385263330E+00] ), + NASA( [ 1000.00, 692.73], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ) + ) + # note = "CODA89" + ) + +species(name = "Zn(L)", + atoms = " Zn:1 ", + thermo = ( + NASA( [ 692.73, 1000.00], [ 3.776530430E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.316952980E+02, -1.567084370E+01] ), + NASA( [ 1000.00, 6000.00], [ 3.776530430E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -4.316952980E+02, -1.567084370E+01] ) + ) + # note = "CODA89" + ) + +species(name = "ZnSO4(a)", + atoms = " Zn:1 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.165736400E+00, 2.397739400E-02, + -3.070074400E-06, -4.845016400E-09, 0.000000000E+00, + -1.204535900E+05, -2.310536900E+01] ), + NASA( [ 1000.00, 540.00], [ 5.165736400E+00, 2.397739400E-02, + -3.070074400E-06, -4.845016400E-09, 0.000000000E+00, + -1.204535900E+05, -2.310536900E+01] ) + ) + # note = "J 3/79" + ) + +species(name = "ZnSO4(b)", + atoms = " Zn:1 S:1 O:4 ", + thermo = ( + NASA( [ 1013.00, 1000.00], [ 1.746182500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.211380600E+05, -8.514325300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.746182500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.211380600E+05, -8.514325300E+01] ) + ) + # note = "J 3/79" + ) + +species(name = "Zr(a)", + atoms = " Zr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.182888400E+00, 5.428863930E-03, + -1.214639520E-05, 1.311327290E-08, -4.838183550E-12, + -8.084413550E+02, -8.947418360E+00] ), + NASA( [ 1000.00, 1135.00], [ 2.281195460E+00, 1.469716840E-03, + -1.046576160E-08, 0.000000000E+00, 0.000000000E+00, + -6.618031470E+02, -8.573771980E+00] ) + ) + # note = "J 6/79" + ) + +species(name = "Zr(b)", + atoms = " Zr:1 ", + thermo = ( + NASA( [ 1135.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 2125.00], [ 4.068762450E+00, -1.584897210E-03, + 1.029951290E-06, -1.557675570E-10, 2.302846110E-14, + -6.911722610E+02, -1.785934030E+01] ) + ) + # note = "J 6/79" + ) + +species(name = "Zr(L)", + atoms = " Zr:1 ", + thermo = ( + NASA( [ 2125.00, 1000.00], [ 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.032166660E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.100846260E+03, -2.547975870E+01] ) + ) + # note = "J 6/79" + ) + +species(name = "ZrN(s)", + atoms = " Zr:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.855629000E+00, 8.616697000E-03, + -5.348663800E-06, -2.880421900E-09, 3.108784900E-12, + -4.511202000E+04, -1.390106900E+01] ), + NASA( [ 1000.00, 3225.00], [ 5.540782000E+00, 6.183935300E-04, + 2.954211000E-07, -1.178431100E-10, 1.524143000E-14, + -4.575132400E+04, -2.742065400E+01] ) + ) + # note = "J 6/61" + ) + +species(name = "ZrN(L)", + atoms = " Zr:1 N:1 ", + thermo = ( + NASA( [ 3225.00, 1000.00], [ 7.045116400E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.810552700E+04, -3.443626400E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.045116400E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.810552700E+04, -3.443626400E+01] ) + ) + # note = "J 6/61" + ) + +species(name = "ZrO2(a)", + atoms = " Zr:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -7.953710600E-01, 4.393345800E-02, + -8.121444400E-05, 6.956764800E-08, -2.238094700E-11, + -1.331196700E+05, 5.322100900E-01] ), + NASA( [ 1000.00, 1478.00], [ -2.214439500E+01, 9.963976300E-02, + -1.200668800E-04, 6.468673600E-08, -1.300488100E-11, + -1.273279700E+05, 1.110089100E+02] ) + ) + # note = "J12/65" + ) + +species(name = "ZrO2(b)", + atoms = " Zr:1 O:2 ", + thermo = ( + NASA( [ 1478.00, 1000.00], [ 8.957362900E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.341435400E+05, -4.527401700E+01] ), + NASA( [ 1000.00, 2950.00], [ 8.957362900E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.341435400E+05, -4.527401700E+01] ) + ) + # note = "J12/65" + ) + +species(name = "ZrO2(L)", + atoms = " Zr:1 O:2 ", + thermo = ( + NASA( [ 2950.00, 1000.00], [ 1.056767500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.284274500E+05, -5.459226400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.056767500E+01, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -1.284274500E+05, -5.459226400E+01] ) + ) + # note = "J12/65" + ) + diff --git a/data/inputs/nasa_gas.cti b/data/inputs/nasa_gas.cti new file mode 100644 index 000000000..9cf17b1df --- /dev/null +++ b/data/inputs/nasa_gas.cti @@ -0,0 +1,9739 @@ +# +# This is the NASA thermodynamic database, which is available for download +# from http://www.galcit.caltech.edu/EDL/public/thermo.html. The original +# sources are +# +# S. Gordon and B.J. McBride, "Computer Program for Calculation of Complex +# Chemical Equilibrium Composition, Rocket Performance, Incident and +# Reflected Shocks and Chapman-Jouguet Detonations", NASA Report SP-273, 1971. +# +# B.J. McBride, S. Gordon, and M.A. Reno, "Coefficients for Calculating +# Thermodynamic and Transport Properties of Individual Species", NASA +# Report TM-4513, October 1993. +# +#----------------------------------------------------------------------------- + +species(name = "Electron", + atoms = " E:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, -1.172469020E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, -1.172469020E+01] ) + ) + # note = "gas L10/92" + ) + +species(name = "AL", + atoms = " Al:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.111124330E+00, -3.593823100E-03, + 8.147493130E-06, -8.088089660E-09, 2.931324630E-12, + 3.882833900E+04, 2.840457240E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.533857010E+00, -4.658594920E-05, + 2.827980480E-08, -8.543620130E-12, 1.022079830E-15, + 3.890456620E+04, 5.379841730E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "AL+", + atoms = " Al:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.090281410E+05, 3.791005860E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.512153370E+00, -2.610113000E-05, + 1.903604630E-08, -5.688814930E-12, 6.005299950E-16, + 1.090239950E+05, 3.725382610E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "AL-", + atoms = " Al:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.647318980E+00, -7.203715920E-04, + 1.025396120E-06, -3.511181970E-11, -2.389329740E-13, + 3.300492520E+04, 5.308766650E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.189634890E+00, 8.034462110E-04, + -3.793895350E-07, 6.900598530E-11, -4.398841160E-15, + 3.309602600E+04, 7.555571870E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "ALBO2", + atoms = " Al:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.308723400E+00, 1.889053900E-02, + -2.063334800E-05, 1.025132400E-08, -1.694128300E-12, + -6.648216700E+04, 1.447701850E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.172299500E+00, 2.978074100E-03, + -1.243110700E-06, 2.318877900E-10, -1.604120800E-14, + -6.768368200E+04, -9.981739760E+00] ) + ) + # note = "J 6/66" + ) + +species(name = "ALBr", + atoms = " Al:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.490061100E+00, 4.547679700E-03, + -8.193557800E-06, 6.866615200E-09, -2.176505800E-12, + 7.294530600E+02, 7.886647570E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.382242400E+00, 2.120070700E-04, + -7.076444700E-08, 1.065901800E-11, 1.483026600E-16, + 5.761684900E+02, 3.739108570E+00] ) + ) + # note = "J 9/79" + ) + +species(name = "ALBr3", + atoms = " Al:1 Br:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.253720600E+00, 1.608021700E-02, + -2.865975800E-05, 2.361607600E-08, -7.393131400E-12, + -5.173521100E+04, 2.683658070E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.615059000E+00, 4.446854600E-04, + -1.990298300E-07, 3.925181800E-11, -2.842797500E-15, + -5.234954400E+04, -1.311910900E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALC", + atoms = " Al:1 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.642248300E+00, 6.446516100E-03, + -9.589237600E-06, 6.904080500E-09, -1.943077900E-12, + 8.192987400E+04, 1.026736200E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.156447800E+00, 4.469249000E-04, + -1.746704000E-07, 3.430433600E-11, -2.477270600E-15, + 8.160660500E+04, 2.904725210E+00] ) + ) + # note = "J 6/63" + ) + +species(name = "ALCL", + atoms = " Al:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.122228600E+00, 5.928047400E-03, + -1.041583200E-05, 8.555106500E-09, -2.672238000E-12, + -7.307583900E+03, 8.253356140E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.339527100E+00, 2.483887400E-04, + -8.292185200E-08, 1.234231900E-11, -2.375581800E-17, + -7.528108100E+03, 2.537294240E+00] ) + ) + # note = "J 9/79" + ) + +species(name = "ALCL+", + atoms = " Al:1 Cl:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.869835200E+00, 6.653458600E-03, + -1.132770700E-05, 9.070297400E-09, -2.779464000E-12, + 1.025974100E+05, 1.001995260E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.628496500E+00, -3.475053500E-04, + 2.299735100E-07, -2.427979800E-11, -2.644054400E-16, + 1.022044700E+05, 1.430399890E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCLF", + atoms = " Al:1 Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.217596800E+00, 1.452454900E-02, + -2.392248800E-05, 1.862160900E-08, -5.590366700E-12, + -6.030550800E+04, 1.227181850E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.426262200E+00, 6.786116800E-04, + -3.118639200E-07, 6.214237900E-11, -4.251957300E-15, + -6.093876900E+04, -3.062270760E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCLF+", + atoms = " Al:1 Cl:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.734129200E+00, 1.388904300E-02, + -2.222253900E-05, 1.693768300E-08, -5.006134200E-12, + 3.164775500E+04, 6.669147470E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.883590500E+00, 7.050936600E-04, + -3.136608800E-07, 6.160731000E-11, -4.449053700E-15, + 3.100599000E+04, -8.482113530E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCLF2", + atoms = " Al:1 Cl:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.490524500E+00, 2.341062200E-02, + -3.673080200E-05, 2.757748500E-08, -8.057087400E-12, + -1.219785700E+05, 1.035983440E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.867454400E+00, 1.293331900E-03, + -5.746879600E-07, 1.127841900E-10, -8.139815400E-15, + -1.230925000E+05, -1.560078460E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCL2", + atoms = " Al:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.933674100E+00, 1.292891800E-02, + -2.276799200E-05, 1.860551500E-08, -5.790027900E-12, + -3.529661900E+04, 9.401866760E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.641413300E+00, 4.339190700E-04, + -2.034245600E-07, 4.090013500E-11, -2.720937500E-15, + -3.579468900E+04, -3.348439040E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCL2+", + atoms = " Al:1 Cl:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.356112800E+00, 1.264061200E-02, + -2.155406000E-05, 1.722275300E-08, -5.274447300E-12, + 5.616973600E+04, 4.493047380E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.095457700E+00, 4.652547000E-04, + -2.076647900E-07, 4.087990600E-11, -2.956891400E-15, + 5.564377500E+04, -8.518098620E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCL2-", + atoms = " Al:1 Cl:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.251094600E+00, 1.196856200E-02, + -2.153822900E-05, 1.786923000E-08, -5.622075300E-12, + -5.951306100E+04, 7.393261850E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.712561800E+00, 3.465683600E-04, + -1.588435400E-07, 2.995006300E-11, -1.654481500E-15, + -5.995425700E+04, -4.136329150E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCL2F", + atoms = " Al:1 Cl:2 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.255166400E+00, 2.201678900E-02, + -3.627698600E-05, 2.827484200E-08, -8.501109500E-12, + -9.708888700E+04, 8.024887650E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.147606700E+00, 9.766915900E-04, + -4.348867600E-07, 8.546407500E-11, -6.173947400E-15, + -9.806028700E+04, -1.537911970E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "ALCL3", + atoms = " Al:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.913266500E+00, 2.103186400E-02, + -3.654693100E-05, 2.958681200E-08, -9.145100500E-12, + -7.244105600E+04, 4.942996040E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.404108300E+00, 6.864187200E-04, + -3.066385000E-07, 6.039150900E-11, -4.369357400E-15, + -7.328581300E+04, -1.629638310E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF", + atoms = " Al:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.647292500E+00, 6.082268600E-03, + -8.596342900E-06, 5.897983700E-09, -1.588676500E-12, + -3.294926000E+04, 9.313912430E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.126139500E+00, 4.626805400E-04, + -1.747773300E-07, 3.001548400E-11, -1.532884100E-15, + -3.327593800E+04, 2.066407430E+00] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF+", + atoms = " Al:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.725305300E+00, 4.812031300E-03, + -5.441171900E-06, 2.743908400E-09, -3.587519200E-13, + 8.225046800E+04, 9.723361090E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.352218600E+00, 1.310386700E-03, + -1.431838300E-07, -4.544233000E-11, 7.342074900E-15, + 8.223250000E+04, 7.083708390E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF2", + atoms = " Al:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.740846500E+00, 1.446674500E-02, + -2.152061900E-05, 1.541198900E-08, -4.322979700E-12, + -8.483459400E+04, 1.267668180E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.157930000E+00, 9.813228700E-04, + -4.453502800E-07, 8.820596000E-11, -6.126225500E-15, + -8.556647900E+04, -3.951192330E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF2+", + atoms = " Al:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.123917600E+00, 1.452305600E-02, + -2.131544300E-05, 1.515613300E-08, -4.237409600E-12, + 9.654507200E+03, 7.474176450E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.592539400E+00, 1.031948900E-03, + -4.573944000E-07, 8.962059900E-11, -6.460982500E-15, + 8.899194300E+03, -9.459697650E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF2-", + atoms = " Al:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.671535000E+00, 1.560194400E-02, + -2.441932200E-05, 1.825316900E-08, -5.306477500E-12, + -1.105086000E+05, 1.233823370E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.266674500E+00, 8.371117200E-04, + -3.684002100E-07, 7.015047700E-11, -4.687629800E-15, + -1.112529000E+05, -5.021179660E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF2O", + atoms = " Al:1 F:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.087409000E+00, 2.383323900E-02, + -3.606298300E-05, 2.626891900E-08, -7.485676000E-12, + -1.350654000E+05, 1.189367180E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.820562200E+00, 1.254869400E-03, + -5.452446500E-07, 1.203686000E-10, -9.648359900E-15, + -1.363066800E+05, -1.604287220E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF2O-", + atoms = " Al:1 F:2 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.919759700E+00, 2.409401300E-02, + -3.608094400E-05, 2.606784800E-08, -7.380837900E-12, + -1.591815200E+05, 1.183108220E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.614278600E+00, 1.578459600E-03, + -7.002911500E-07, 1.372921200E-10, -9.901398500E-15, + -1.604033600E+05, -1.587925080E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "ALF3", + atoms = " Al:1 F:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.102854120E+00, 2.234557650E-02, + -3.145886900E-05, 2.115820730E-08, -5.538960730E-12, + -1.471267970E+05, 1.015970690E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.728972290E+00, 1.314285590E-03, + -5.175995810E-07, 8.867827890E-11, -5.528373630E-15, + -1.483903300E+05, -1.750366610E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALF4-", + atoms = " Al:1 F:4 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.587859300E+00, 3.993044100E-02, + -6.573691400E-05, 5.116305500E-08, -1.535869500E-11, + -2.415964900E+05, 1.130157700E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.147145100E+01, 1.752578600E-03, + -7.806422700E-07, 1.534447400E-10, -1.108637400E-14, + -2.433603600E+05, -3.119807500E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "ALH", + atoms = " Al:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.657685700E+00, -1.974469800E-03, + 6.866339800E-06, -6.204140400E-09, 1.866310300E-12, + 3.014645800E+04, 2.088511030E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.336689800E+00, 1.287786400E-03, + -4.986994100E-07, 9.229463300E-11, -6.345169400E-15, + 3.009176100E+04, 3.095488230E+00] ) + ) + # note = "J 6/63" + ) + +species(name = "ALI", + atoms = " Al:1 I:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.376193860E+00, 6.203580000E-03, + -1.334379880E-05, 1.289780400E-08, -4.592625080E-12, + 6.984689440E+03, 9.209802770E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.300678350E+00, 3.945267980E-04, + -1.947178770E-07, 4.317665940E-11, -2.509959420E-15, + 6.877338390E+03, 5.195549900E+00] ) + ) + # note = "J 9/79" + ) + +species(name = "ALI3", + atoms = " Al:1 I:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.976129800E+00, 1.321277800E-02, + -2.382907300E-05, 1.979639300E-08, -6.233627600E-12, + -2.574158500E+04, 2.147667160E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.709249600E+00, 3.366469200E-04, + -1.509485400E-07, 2.981315800E-11, -2.161799400E-15, + -2.623399600E+04, -1.066399430E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "ALN", + atoms = " Al:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.644865000E+00, 6.541687600E-03, + -9.862533900E-06, 7.188232300E-09, -2.044484500E-12, + 6.189738200E+04, 1.084786440E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.145046800E+00, 4.856096200E-04, + -2.012640900E-07, 4.125948800E-11, -2.885430800E-15, + 6.158324000E+04, 3.582342980E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALO", + atoms = " Al:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.811610300E+00, 3.958426100E-03, + -3.369530400E-06, 6.733049700E-10, 4.008945500E-13, + 7.065503700E+03, 9.208957530E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.313906400E+00, 1.045242100E-03, + 2.748553300E-07, -1.792860600E-10, 1.998781300E-14, + 7.094333600E+03, 7.209634230E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALO+", + atoms = " Al:1 O:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.941443400E+00, 5.259216800E-03, + -7.343907300E-06, 5.331678300E-09, -1.578333600E-12, + 1.183746900E+05, 9.735382520E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.190846700E+00, 6.935819800E-04, + -3.445999900E-07, 7.617232700E-11, -5.903240000E-15, + 1.180743900E+05, 3.529519820E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALO-", + atoms = " Al:1 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.722675400E+00, 4.947551800E-03, + -5.757175400E-06, 3.142440000E-09, -6.415283200E-13, + -3.339129600E+04, 8.836313720E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.038055500E+00, 5.583711000E-04, + -2.188866500E-07, 3.853302400E-11, -2.109555000E-15, + -3.371008900E+04, 2.244806520E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALOCL", + atoms = " Al:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.244440900E+00, 1.411700500E-02, + -1.932203800E-05, 1.196279800E-08, -2.706918000E-12, + -4.331234300E+04, 8.005372110E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.780520000E+00, 7.966282200E-04, + -3.423335500E-07, 6.502264800E-11, -4.551919700E-15, + -4.408083200E+04, -9.300140390E+00] ) + ) + # note = "J 9/64" + ) + +species(name = "ALOF", + atoms = " Al:1 O:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.039146100E+00, 1.894876200E-02, + -2.897877000E-05, 2.136094100E-08, -6.157987300E-12, + -7.118233300E+04, 1.238659820E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.452162200E+00, 1.192659500E-03, + -5.289313700E-07, 1.036781100E-10, -7.476536700E-15, + -7.211636300E+04, -9.018127810E+00] ) + ) + # note = "J12/75" + ) + +species(name = "ALOH", + atoms = " Al:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.613221100E+00, 2.771689400E-03, + 7.415783000E-06, -1.135460200E-08, 4.556955900E-12, + -2.258679700E+04, 1.007533030E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.686067400E+00, 3.363682200E-03, + -1.246624400E-06, 2.138220500E-10, -1.389831900E-14, + -2.304610500E+04, 3.690155590E+00] ) + ) + # note = "J12/67" + ) + +species(name = "ALOH+", + atoms = " Al:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.960343900E+00, 7.919114000E-03, + -2.285795900E-06, -4.010378900E-09, 2.570759600E-12, + 6.451018500E+04, 1.410617760E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.150198700E+00, 2.892521200E-03, + -1.056541400E-06, 1.794516700E-10, -1.158701400E-14, + 6.389288800E+04, 2.640138120E+00] ) + ) + # note = "J12/67" + ) + +species(name = "ALOH-", + atoms = " Al:1 O:1 H:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.913020400E+00, 5.953071500E-03, + -3.055805400E-06, -1.259870900E-09, 1.288609400E-12, + -2.878182700E+04, 1.062246690E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.301071800E+00, 2.166850300E-03, + -7.398864500E-07, 1.182105500E-10, -7.220884100E-15, + -2.913409500E+04, 3.527007550E+00] ) + ) + # note = "J12/67" + ) + +species(name = "ALO2", + atoms = " Al:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.254514800E+00, 1.427584400E-02, + -2.110324800E-05, 1.505625900E-08, -4.214261400E-12, + -1.181258200E+04, 8.302554930E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.606464100E+00, 1.080225200E-03, + -5.222934400E-07, 1.132422000E-10, -8.529096800E-15, + -1.253243200E+04, -8.017175870E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALO2-", + atoms = " Al:1 O:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.081203800E+00, 1.303965400E-02, + -1.711992200E-05, 1.097870000E-08, -2.794212000E-12, + -6.020620300E+04, 7.501566860E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.368748200E+00, 1.279203000E-03, + -5.650399100E-07, 1.104637900E-10, -7.951244200E-15, + -6.097200900E+04, -8.798795040E+00] ) + ) + # note = "J12/79" + ) + +species(name = "ALO2H", + atoms = " Al:1 O:2 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.480045600E+00, 1.614926400E-02, + -1.603352400E-05, 6.446616600E-09, -4.099476900E-13, + -5.668275900E+04, 1.230707100E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.426434600E+00, 3.223036200E-03, + -1.213934800E-06, 2.107450000E-10, -1.382800000E-14, + -5.762615400E+04, -7.457592560E+00] ) + ) + # note = "J12/68" + ) + +species(name = "ALS", + atoms = " Al:1 S:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.714551830E+00, 7.311807250E-03, + -1.265289250E-05, 1.017961650E-08, -2.876133870E-12, + 2.764349140E+04, 1.056695990E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.981711180E+00, 3.975264370E-03, + -1.494288580E-06, 2.263658700E-10, -1.210363840E-14, + 2.824057540E+04, 1.598822730E+01] ) + ) + # note = "J12/79" + ) + +species(name = "AL2", + atoms = " Al:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.809448100E+00, 1.593650200E-02, + -2.725025800E-05, 1.987112000E-08, -5.368404600E-12, + 5.753113400E+04, 1.407208080E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.815806200E+00, -1.325053700E-03, + 6.075188600E-07, -1.069241900E-10, 7.061140900E-15, + 5.678904700E+04, -4.954710630E+00] ) + ) + # note = "J 6/79" + ) + +species(name = "AL2Br6", + atoms = " Al:2 Br:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.418597900E+01, 3.445250600E-02, + -6.252243700E-05, 5.217323800E-08, -1.648270900E-11, + -1.180252500E+05, -2.292910600E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.127433100E+01, 8.393963500E-04, + -3.759477800E-07, 7.417011000E-11, -5.372855100E-15, + -1.192932500E+05, -5.610682000E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "AL2CL6", + atoms = " Al:2 Cl:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.050919800E+01, 4.907743600E-02, + -8.720872600E-05, 7.172343200E-08, -2.242432800E-11, + -1.605178400E+05, -1.408406710E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.079400300E+01, 1.391424700E-03, + -6.221367100E-07, 1.225937700E-10, -8.872758500E-15, + -1.624047200E+05, -6.247318810E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "AL2F6", + atoms = " Al:2 F:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.161811800E+00, 6.889889000E-02, + -1.096586000E-04, 8.329334200E-08, -2.456104900E-11, + -3.199424800E+05, 1.221256400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.882984600E+01, 3.620223000E-03, + -1.608555200E-06, 3.156625200E-10, -2.278028700E-14, + -3.231511000E+05, -6.324007900E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "AL2I6", + atoms = " Al:2 I:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.622549800E+01, 2.593843900E-02, + -4.764235200E-05, 4.008368500E-08, -1.273718400E-11, + -6.451949700E+04, -2.654041430E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.150319100E+01, 5.759419300E-04, + -2.583902800E-07, 5.104597700E-11, -3.701773800E-15, + -6.544913100E+04, -5.116606630E+01] ) + ) + # note = "J 9/79" + ) + +species(name = "AL2O", + atoms = " Al:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.073265600E+00, 1.130761300E-02, + -1.656516200E-05, 1.178428400E-08, -3.300550300E-12, + -1.905423000E+04, 4.408348310E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.772062700E+00, 8.255009200E-04, + -3.629100100E-07, 6.953130000E-11, -4.734521100E-15, + -1.964319700E+04, -8.772331290E+00] ) + ) + # note = "J12/79" + ) + +species(name = "AL2O+", + atoms = " Al:2 O:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.104573600E+00, 1.197835100E-02, + -1.852258900E-05, 1.375669100E-08, -3.986742300E-12, + 7.685270300E+04, 5.102572480E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.879785500E+00, 7.074987700E-04, + -3.141924400E-07, 6.164098300E-11, -4.447869800E-15, + 7.627075600E+04, -8.331814420E+00] ) + ) + # note = "J12/79" + ) + +species(name = "AL2O2", + atoms = " Al:2 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.759641100E+00, 2.999759900E-02, + -5.219049700E-05, 4.228268600E-08, -1.307536000E-11, + -4.922603200E+04, 1.110077200E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.159097600E+00, 9.685392700E-04, + -4.325851300E-07, 8.517884000E-11, -6.161537000E-15, + -5.042805900E+04, -1.915646800E+01] ) + ) + # note = "J12/79" + ) + +species(name = "AL2O2+", + atoms = " Al:2 O:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.342190400E+00, 2.811124900E-02, + -4.954717800E-05, 4.050975200E-08, -1.261031000E-11, + 6.636250600E+04, 9.290241670E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.275169300E+00, 8.358722300E-04, + -3.736160800E-07, 7.360516800E-11, -5.326279400E-15, + 6.526406800E+04, -1.867725860E+01] ) + ) + # note = "J12/79" + ) + +species(name = "Ar", + atoms = " Ar:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 4.379674910E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 4.379674910E+00] ) + ) + # note = "L 6/88" + ) + +species(name = "Ar+", + atoms = " Ar:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.593160970E+00, -1.328929440E-03, + 5.265039440E-06, -5.979566910E-09, 2.189678620E-12, + 1.828783680E+05, 5.449805750E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.869995470E+00, -1.425472420E-04, + 9.366887760E-09, 2.925808590E-12, -3.582479410E-16, + 1.827026170E+05, 3.532299800E+00] ) + ) + # note = "L10/92" + ) + +species(name = "B", + atoms = " B:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.510540990E+00, -6.238013280E-05, + 1.421780990E-07, -1.416977960E-10, 5.150187490E-14, + 6.660538940E+04, 4.163672090E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.498602730E+00, 1.402673220E-06, + 1.094582780E-09, -1.200064140E-12, 2.431219940E-16, + 6.660759140E+04, 4.218879790E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "B+", + atoms = " B:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.636319600E+05, 2.419077080E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.512071180E+00, -2.600084910E-05, + 1.904117550E-08, -5.718400710E-12, 6.068930370E-16, + 1.636278510E+05, 2.353926990E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "B-", + atoms = " B:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.501202710E+00, -5.734272080E-06, + 1.096704350E-08, -9.503035330E-12, 3.089357740E-15, + 6.264158060E+04, 4.610781380E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500075920E+00, -8.172942560E-08, + 3.299657830E-11, -5.746496520E-15, 3.623660560E-19, + 6.264176930E+04, 4.615985930E+00] ) + ) + # note = "J 6/83" + ) + +species(name = "BCL", + atoms = " B:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.836446300E+00, 4.436881200E-03, + -4.388752200E-06, 1.516107800E-09, 3.264619500E-14, + 1.600136100E+04, 8.345332090E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.102057100E+00, 4.865919300E-04, + -1.886432600E-07, 3.583334200E-11, -2.509906900E-15, + 1.568795800E+04, 1.955251190E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BCL+", + atoms = " B:1 Cl:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.812419700E+00, 4.600639200E-03, + -4.811996200E-06, 1.967221600E-09, -1.383780200E-13, + 1.474484900E+05, 9.156682450E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.106088800E+00, 4.727417000E-04, + -1.792858400E-07, 3.241613700E-11, -2.054575800E-15, + 1.471309700E+05, 2.642729450E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "BCLF", + atoms = " B:1 Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.312023400E+00, 7.419876300E-03, + -4.348594900E-06, -1.137405700E-09, 1.376389000E-12, + -3.901754800E+04, 1.094835630E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.707675700E+00, 1.410020300E-03, + -6.011413700E-07, 1.136704400E-10, -7.936806300E-15, + -3.969332700E+04, -1.535038380E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BCL2", + atoms = " B:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.297478600E+00, 1.208257600E-02, + -1.612375500E-05, 9.626585600E-09, -2.059919900E-12, + -1.095653700E+04, 1.104253330E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.445983800E+00, 5.792794800E-04, + -2.604970500E-07, 6.359635800E-11, -5.398221500E-15, + -1.166130400E+04, -4.460869770E+00] ) + ) + # note = "J 6/72" + ) + +species(name = "BCL2+", + atoms = " B:1 Cl:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.270493100E+00, 1.060379100E-02, + -1.422983800E-05, 8.537283100E-09, -1.834967100E-12, + 7.943601600E+04, 4.076450690E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.926662700E+00, 6.777763300E-04, + -3.210149600E-07, 6.834442200E-11, -5.007359200E-15, + 7.885782200E+04, -8.934626610E+00] ) + ) + # note = "J12/70" + ) + +species(name = "BCL2-", + atoms = " B:1 Cl:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.235879100E+00, 1.169021900E-02, + -1.477825900E-05, 8.218154600E-09, -1.565791300E-12, + -1.898181500E+04, 1.069001040E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.351821800E+00, 7.702884800E-04, + -4.469986300E-07, 1.383117800E-10, -1.322199500E-14, + -1.970543200E+04, -4.774720730E+00] ) + ) + # note = "J 6/72" + ) + +species(name = "BCL3", + atoms = " B:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.739526500E+00, 1.810581300E-02, + -2.134046100E-05, 1.082833500E-08, -1.732596700E-12, + -5.021460900E+04, 9.053127470E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.598538000E+00, 1.553192300E-03, + -6.700060200E-07, 1.278911200E-10, -9.000005900E-15, + -5.135707100E+04, -1.515842970E+01] ) + ) + # note = "J12/64" + ) + +species(name = "BF", + atoms = " B:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.461360900E+00, -9.568546800E-04, + 6.013574400E-06, -6.497805700E-09, 2.235534900E-12, + -1.496982000E+04, 4.460779630E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.577188800E+00, 1.019290800E-03, + -4.125156400E-07, 7.719643800E-11, -5.349874100E-15, + -1.512726400E+04, 3.266122430E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BF2", + atoms = " B:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.030930300E+00, 7.241102100E-03, + -2.825091900E-06, -2.892041300E-09, 2.004610200E-12, + -7.215110200E+04, 1.044570350E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.444745700E+00, 1.753321100E-03, + -7.844447400E-07, 1.571985900E-10, -1.131107100E-14, + -7.286036700E+04, -2.273319200E+00] ) + ) + # note = "J 6/72" + ) + +species(name = "BF2+", + atoms = " B:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.314647400E+00, 8.644365400E-03, + -6.752539600E-06, 1.338366500E-09, 4.511491000E-13, + 3.748364900E+04, 5.904689780E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.812763800E+00, 1.819342400E-03, + -7.710345700E-07, 1.448978200E-10, -9.980915600E-15, + 3.679480100E+04, -7.004311920E+00] ) + ) + # note = "J12/70" + ) + +species(name = "BF2-", + atoms = " B:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.142458100E+00, 6.410457900E-03, + -1.238646100E-06, -4.122010000E-09, 2.347236700E-12, + -9.767296400E+04, 9.225232320E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.310034800E+00, 2.002043900E-03, + -9.723551000E-07, 2.164144300E-10, -1.664088100E-14, + -9.833692800E+04, -2.327760780E+00] ) + ) + # note = "J 6/72" + ) + +species(name = "BF3", + atoms = " B:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.446824400E+00, 1.527631200E-02, + -1.078461700E-05, 6.890750200E-10, 1.489318700E-12, + -1.379013500E+05, 1.256782110E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.024198500E+00, 3.222155900E-03, + -1.370515400E-06, 2.591967100E-10, -1.812231000E-14, + -1.391807200E+05, -1.118430090E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "BH", + atoms = " B:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.686220600E+00, -1.305543500E-03, + 2.674210500E-06, -9.107373800E-10, -1.559113600E-13, + 5.217633000E+04, -5.524540120E-02] ), + NASA( [ 1000.00, 5000.00], [ 2.891907900E+00, 1.583294600E-03, + -5.826172900E-07, 1.024206800E-10, -6.766956900E-15, + 5.232871400E+04, 3.796243290E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BHF2", + atoms = " B:1 H:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.405360200E+00, 9.275584400E-03, + 1.338646100E-06, -8.680789500E-09, 4.121101500E-12, + -8.938840900E+04, 1.288804410E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.318452700E+00, 4.744446600E-03, + -1.933785800E-06, 3.550838200E-10, -2.429366700E-14, + -9.037501200E+04, -3.043140310E+00] ) + ) + # note = "J12/65" + ) + +species(name = "BH2", + atoms = " B:1 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.395828200E+00, 7.477626000E-03, + -7.201951400E-06, 4.582639800E-09, -1.251068000E-12, + 2.316265000E+04, 6.076470390E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.362528500E+00, 3.901285400E-03, + -1.509755100E-06, 2.667280500E-10, -1.771305300E-14, + 2.291902800E+04, 1.259282590E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BH3", + atoms = " B:1 H:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.948703300E+00, -5.217054300E-04, + 7.648116400E-06, -4.614869400E-09, 5.631861600E-13, + 1.161880900E+04, -4.551745790E-02] ), + NASA( [ 1000.00, 5000.00], [ 2.062172600E+00, 7.265589500E-03, + -2.751033700E-06, 4.780370900E-10, -3.133428500E-14, + 1.192375300E+04, 8.849450830E+00] ) + ) + # note = "J12/64" + ) + +species(name = "BN", + atoms = " B:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.537506500E+00, -1.355658600E-03, + 6.221418900E-06, -6.168326900E-09, 1.987246100E-12, + 5.632974300E+04, 5.563176750E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.598183200E+00, 8.717680500E-04, + -2.997264400E-07, 5.603694400E-11, -4.075042100E-15, + 5.617124100E+04, 4.600225250E+00] ) + ) + # note = "J 6/66" + ) + +species(name = "BO", + atoms = " B:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.729725000E+00, -2.087832400E-03, + 5.736284900E-06, -4.389482800E-09, 1.091663200E-12, + -1.061885900E+03, 3.625541040E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.156495600E+00, 1.381658900E-03, + -5.504963000E-07, 9.911667800E-11, -6.416454600E-15, + -1.030342200E+03, 6.037489540E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "BOCL", + atoms = " B:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.270532100E+00, 1.022775000E-02, + -1.207016300E-05, 7.202556200E-09, -1.691473800E-12, + -3.937820800E+04, 7.349302250E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.713556600E+00, 1.866468900E-03, + -7.748789800E-07, 1.439857200E-10, -9.931774500E-15, + -3.997735300E+04, -4.880403550E+00] ) + ) + # note = "J12/65" + ) + +species(name = "BOF", + atoms = " B:1 O:1 F:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.237037380E+00, 1.334954960E-02, + -1.815306140E-05, 1.360936760E-08, -4.243823970E-12, + -7.352837350E+04, 1.100694110E+01] ), + NASA( [ 1000.00, 6000.00], [ 5.392966030E+00, 2.074445000E-03, + -7.936005860E-07, 1.334765710E-10, -8.217793310E-15, + -7.431138520E+04, -4.765005350E+00] ) + ) + # note = "J12/65" + ) + +species(name = "BOF2", + atoms = " B:1 O:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.744597700E+00, 1.869327700E-02, + -1.524616400E-05, 2.655947000E-09, 1.379860600E-12, + -1.018675800E+05, 1.735313900E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.307723300E+00, 2.990362000E-03, + -1.305961700E-06, 2.530824200E-10, -1.768733300E-14, + -1.033457600E+05, -1.119241600E+01] ) + ) + # note = "J12/66" + ) + +species(name = "BO2", + atoms = " B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.121204800E+00, 8.468088300E-03, + -4.597227800E-06, -1.642002100E-09, 1.665823300E-12, + -3.548330700E+04, 7.547891630E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.819843400E+00, 1.862657400E-03, + -8.130279700E-07, 1.573582100E-10, -1.094423800E-14, + -3.625511700E+04, -6.560907970E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "BO2-", + atoms = " B:1 O:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.491633700E+00, 9.747064400E-03, + -8.764086400E-06, 3.580254400E-09, -4.061122100E-13, + -8.464121800E+04, 9.226895700E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.880516900E+00, 2.674365100E-03, + -1.093219400E-06, 2.008087300E-10, -1.371776900E-14, + -8.528432400E+04, -3.009276400E+00] ) + ) + # note = "J12/68" + ) + +species(name = "BS", + atoms = " B:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.174204600E+00, 9.854497200E-04, + 2.771131900E-06, -4.375180100E-09, 1.761617900E-12, + 2.823062400E+04, 7.533862400E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.706854200E+00, 9.868289500E-04, + -4.749526600E-07, 1.065460100E-10, -8.051964300E-15, + 2.801281600E+04, 4.424620900E+00] ) + ) + # note = "J 6/72" + ) + +species(name = "B2", + atoms = " B:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.790997440E+00, -5.875363590E-03, + 3.005141620E-05, -3.914391730E-08, 1.604194280E-11, + 9.872299980E+04, 3.434632030E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.238691550E+00, -5.236075070E-04, + 1.697049780E-07, -2.065490420E-11, 9.414359250E-16, + 9.798738280E+04, -6.007422170E+00] ) + ) + # note = "J 3/79" + ) + +species(name = "B2O", + atoms = " B:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.529473000E+00, 3.199382600E-03, + 3.032925700E-06, -5.749125500E-09, 2.284734900E-12, + 1.036320100E+04, 6.239631430E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.730053800E+00, 2.394148600E-03, + -1.000832400E-06, 1.869751000E-10, -1.295367200E-14, + 9.885335400E+03, -6.358512890E-01] ) + ) + # note = "J 6/66" + ) + +species(name = "B2O2", + atoms = " B:2 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.680707800E+00, 1.536113200E-02, + -1.860609700E-05, 1.217145100E-08, -3.241101800E-12, + -5.648664700E+04, 4.356127340E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.993857400E+00, 3.594039300E-03, + -1.475361100E-06, 2.722512400E-10, -1.869599600E-14, + -5.729617800E+04, -1.216777710E+01] ) + ) + # note = "J12/64" + ) + +species(name = "B2O3", + atoms = " B:2 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.660883700E+00, 2.026207600E-02, + -2.194733800E-05, 1.225300400E-08, -2.703840200E-12, + -1.023652400E+05, 8.106220680E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.399410600E+00, 4.743633800E-03, + -1.955230400E-06, 3.618774900E-10, -2.490723200E-14, + -1.035715800E+05, -1.581000090E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "B3O3CL3", + atoms = " B:3 O:3 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.044498300E+00, 5.426059700E-02, + -5.575076100E-05, 2.222312800E-08, -1.418129500E-12, + -1.994163200E+05, 9.056722550E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.928256400E+01, 6.317258100E-03, + -2.724292600E-06, 5.204791000E-10, -3.667779000E-14, + -2.032088300E+05, -6.788515210E+01] ) + ) + # note = "J 3/65" + ) + +species(name = "B3O3F3", + atoms = " B:3 O:3 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.079886100E+00, 4.563659200E-02, + -3.309882600E-05, 2.553883900E-09, 4.435876100E-12, + -2.871221300E+05, 1.147539170E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.685861600E+01, 8.868575400E-03, + -3.788105800E-06, 7.187040100E-10, -5.037691700E-14, + -2.909310400E+05, -5.985875230E+01] ) + ) + # note = "J 3/65" + ) + +species(name = "B3O3H3", + atoms = " B:3 O:3 H:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.769890780E+00, 2.534259000E-02, + 1.224867010E-05, -3.730576110E-08, 1.745568970E-11, + -1.484310260E+05, 1.152180190E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.212012120E+01, 1.228112090E-02, + -4.609224870E-06, 7.658245420E-10, -4.676237930E-14, + -1.516486290E+05, -3.989180070E+01] ) + ) + # note = "J 3/65" + ) + +species(name = "Ba", + atoms = " Ba:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.503877700E+00, -3.780391400E-05, + 1.291496600E-07, -1.840040900E-10, 9.293482900E-14, + 2.079254400E+04, 6.216742220E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.973054500E+00, -1.116121500E-02, + 7.117214700E-06, -1.533667300E-09, 1.087670000E-13, + 1.888996600E+04, -2.348768480E+01] ) + ) + # note = "J12/70" + ) + +species(name = "BaBr", + atoms = " Ba:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.171455300E+00, 1.596081300E-03, + -2.888654200E-06, 2.476714700E-09, -7.983070000E-13, + -1.459449500E+04, 8.386206770E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.368977400E+00, 3.907588700E-04, + -2.990174900E-07, 1.064130100E-10, -9.841604900E-15, + -1.461768500E+04, 7.525260870E+00] ) + ) + # note = "J12/74" + ) + +species(name = "BaBr2", + atoms = " Ba:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.340527500E+00, 3.056195200E-03, + -5.728586400E-06, 4.887596800E-09, -1.568808100E-12, + -5.306231600E+04, 4.319437150E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.950233800E+00, 5.806602300E-05, + -2.619542800E-08, 5.199282800E-12, -3.785277000E-16, + -5.316684200E+04, 1.490027550E+00] ) + ) + # note = "J12/74" + ) + +species(name = "BaCL", + atoms = " Ba:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.978114800E+00, 2.180321800E-03, + -3.434256500E-06, 2.518221200E-09, -6.905802700E-13, + -1.836693700E+04, 7.924261040E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.667523800E+00, -2.218725100E-04, + 8.127068000E-08, 3.021696200E-11, -5.318330100E-15, + -1.854214200E+04, 4.464442040E+00] ) + ) + # note = "J12/72" + ) + +species(name = "BaCL2", + atoms = " Ba:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.057123800E+00, 3.842614900E-03, + -6.268320500E-06, 4.619666500E-09, -1.274476800E-12, + -6.191453600E+04, 3.761791660E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.913863700E+00, 9.821396300E-05, + -4.326834800E-08, 8.396900600E-12, -5.989208500E-16, + -6.207605100E+04, -3.058630750E-01] ) + ) + # note = "J12/72" + ) + +species(name = "BaF", + atoms = " Ba:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.353750600E+00, 4.381958000E-03, + -6.640592900E-06, 4.614322900E-09, -1.197151800E-12, + -3.989295600E+04, 9.457589260E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.358712500E+00, 3.011073800E-04, + -2.286331500E-07, 8.986555400E-11, -8.765759500E-15, + -4.010137600E+04, 4.601485460E+00] ) + ) + # note = "J12/72" + ) + +species(name = "BaF+", + atoms = " Ba:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.161746400E+00, 4.887607900E-03, + -7.121988200E-06, 4.714497100E-09, -1.145898300E-12, + 1.696046400E+04, 9.546232910E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.494556500E+00, -4.113005600E-03, + 2.588280800E-06, -5.045869800E-10, 3.071956000E-14, + 1.596065100E+04, -7.884984490E+00] ) + ) + # note = "J12/72" + ) + +species(name = "BaF2", + atoms = " Ba:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.096823900E+00, 7.422625000E-03, + -1.168283300E-05, 8.329621800E-09, -2.221685600E-12, + -9.843159500E+04, 5.436920860E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.797715900E+00, 2.293219600E-04, + -1.005352100E-07, 1.942856600E-11, -1.380750700E-15, + -9.876311400E+04, -2.695283240E+00] ) + ) + # note = "J12/72" + ) + +species(name = "BaOH", + atoms = " Ba:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.668183100E+00, 1.688397600E-02, + -3.103177700E-05, 2.642104800E-08, -8.395358800E-12, + -2.855466800E+04, 1.134340920E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.517846800E+00, 1.478090300E-03, + -5.782330700E-07, 1.404022200E-10, -1.203576500E-14, + -2.895907400E+04, -1.497872880E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BaOH+", + atoms = " Ba:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.709049000E+00, 1.672652500E-02, + -3.076792700E-05, 2.621044800E-08, -8.330383900E-12, + 3.125507900E+04, 1.047079090E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.512601900E+00, 1.401384000E-03, + -4.235021600E-07, 6.057836300E-11, -3.351965300E-15, + 3.087134900E+04, -2.107673000E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "BaO2H2", + atoms = " Ba:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.790935600E+00, 3.207544900E-02, + -5.935080600E-05, 5.077638500E-08, -1.618113100E-11, + -7.748355800E+04, 8.948693230E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.082473500E+00, 2.736831100E-03, + -8.175367800E-07, 1.153488400E-10, -6.283375600E-15, + -7.818658600E+04, -1.468867160E+01] ) + ) + # note = "J12/75" + ) + +species(name = "BaS", + atoms = " Ba:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.481617100E+00, 4.565813500E-03, + -8.272641000E-06, 6.937259400E-09, -2.200024300E-12, + 3.363648800E+03, 9.044225060E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.440258700E+00, 7.426939800E-04, + -1.179568100E-06, 5.761863800E-10, -6.754632400E-14, + 3.115982000E+03, 4.285984360E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "Be", + atoms = " Be:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 3.822264600E+04, 2.146173160E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.294385660E+00, 4.116698410E-04, + -2.647308320E-07, 6.256813880E-11, -3.892810070E-15, + 3.829580550E+04, 3.267319420E+00] ) + ) + # note = "J 9/83" + ) + +species(name = "Be+", + atoms = " Be:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.458936930E+05, 2.839229270E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.501689760E+00, -5.103736470E-06, + 5.274810900E-09, -2.161550490E-12, 3.007130260E-16, + 1.458932770E+05, 2.830668470E+00] ) + ) + # note = "J 9/83" + ) + +species(name = "BeBO2", + atoms = " Be:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.006912000E+00, 1.804482400E-02, + -1.691758100E-05, 6.086537300E-09, -1.727628500E-13, + -5.923419700E+04, 1.580555710E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.910837600E+00, 3.266868400E-03, + -1.367812000E-06, 2.557621100E-10, -1.772774100E-14, + -6.050571500E+04, -9.161658050E+00] ) + ) + # note = "J 6/66" + ) + +species(name = "BeBr", + atoms = " Be:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.659145700E+00, 6.702727800E-03, + -1.040371100E-05, 7.765519400E-09, -2.253091800E-12, + 1.343309600E+04, 1.073565200E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.194388700E+00, 3.993902300E-04, + -1.483887300E-07, 2.676227200E-11, -1.562612700E-15, + 1.311546400E+04, 3.322948450E+00] ) + ) + # note = "J 6/75" + ) + +species(name = "BeBr2", + atoms = " Be:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.642228300E+00, 9.008445100E-03, + -1.269855600E-05, 8.755898500E-09, -2.392319400E-12, + -2.926543500E+04, 4.300119330E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.834487200E+00, 7.542928700E-04, + -3.336820600E-07, 6.530234900E-11, -4.704109600E-15, + -2.975711700E+04, -6.471791870E+00] ) + ) + # note = "J 6/75" + ) + +species(name = "BeCL", + atoms = " Be:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.832198700E+00, 4.456676400E-03, + -4.448216100E-06, 1.585258700E-09, 4.520689400E-15, + 6.290624800E+03, 8.891560510E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.105287800E+00, 4.746170100E-04, + -1.799652800E-07, 3.256390300E-11, -2.065284000E-15, + 5.975306000E+03, 2.464517410E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "BeCL+", + atoms = " Be:1 Cl:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.896598400E+00, 5.126749200E-03, + -6.442791100E-06, 3.563264000E-09, -6.592508800E-13, + 1.167146600E+05, 7.837270450E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.382750000E+00, -1.847119800E-03, + 1.112368300E-06, -1.695299400E-10, 6.100709100E-15, + 1.159971700E+05, -5.062241350E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "BeCLF", + atoms = " Be:1 Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.102438100E+00, 8.501749000E-03, + -8.909396300E-06, 4.007623200E-09, -5.162753900E-13, + -7.046873600E+04, 4.099162810E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.440279100E+00, 1.146369300E-03, + -4.854536000E-07, 9.128786500E-11, -6.344354900E-15, + -7.105977100E+04, -7.728699690E+00] ) + ) + # note = "J 6/65" + ) + +species(name = "BeCL2", + atoms = " Be:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.492712500E+00, 8.053554500E-03, + -8.831923900E-06, 4.089704900E-09, -5.349809200E-13, + -4.495288100E+04, 2.695821410E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.704319100E+00, 8.716646800E-04, + -3.725505300E-07, 7.056700600E-11, -4.933536000E-15, + -4.549455800E+04, -8.422012290E+00] ) + ) + # note = "J 6/65" + ) + +species(name = "BeF", + atoms = " Be:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.276186200E+00, 2.523375900E-04, + 4.093994400E-06, -5.312815000E-09, 1.995490000E-12, + -2.144592400E+04, 5.864996510E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.709529500E+00, 8.938360000E-04, + -3.611306800E-07, 6.760109200E-11, -4.642083300E-15, + -2.166005200E+04, 3.164192410E+00] ) + ) + # note = "J12/71" + ) + +species(name = "BeF2", + atoms = " Be:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.523427400E+00, 9.389028400E-03, + -9.563620800E-06, 4.292098900E-09, -5.775111300E-13, + -9.713046100E+04, 4.883975390E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.045763100E+00, 1.562937400E-03, + -6.610819700E-07, 1.244755100E-10, -8.671606300E-15, + -9.777912700E+04, -7.917882610E+00] ) + ) + # note = "J 6/70" + ) + +species(name = "BeH", + atoms = " Be:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.731230500E+00, -1.914354800E-03, + 4.891032500E-06, -3.292588300E-09, 6.663856200E-13, + 3.756556000E+04, 3.886085230E-01] ), + NASA( [ 1000.00, 5000.00], [ 3.057021800E+00, 1.497722300E-03, + -5.687296300E-07, 1.026081700E-10, -6.916697900E-15, + 3.763951300E+04, 3.400274780E+00] ) + ) + # note = "J 3/63" + ) + +species(name = "BeH+", + atoms = " Be:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.709571200E+00, -1.585203100E-03, + 3.622876900E-06, -1.893322100E-09, 1.717326400E-13, + 1.380286600E+05, -2.828964080E-01] ), + NASA( [ 1000.00, 5000.00], [ 2.901599200E+00, 1.675176100E-03, + -6.680550300E-07, 1.251095100E-10, -8.174146600E-15, + 1.381681200E+05, 3.555629160E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "BeI", + atoms = " Be:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.782612200E+00, 6.841034800E-03, + -1.138989600E-05, 8.992412800E-09, -2.727768600E-12, + 1.939618300E+04, 1.107893670E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.260049300E+00, 3.432081900E-04, + -1.275947700E-07, 2.418970900E-11, -1.457014200E-15, + 1.911035200E+04, 4.047667700E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BeI2", + atoms = " Be:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.937378600E+00, 8.740473700E-03, + -1.311472400E-05, 9.492849400E-09, -2.692633600E-12, + -9.461600500E+03, 4.829511370E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.001126200E+00, 5.687887200E-04, + -2.525375500E-07, 4.954105400E-11, -3.574720400E-15, + -9.903885900E+03, -5.210255230E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BeN", + atoms = " Be:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.168428600E+00, 1.028248300E-03, + 2.737601700E-06, -4.348109900E-09, 1.753445300E-12, + 5.031045100E+04, 6.662524960E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.785593700E+00, 8.238657500E-04, + -3.271160200E-07, 6.155188800E-11, -4.280904100E-15, + 5.006618000E+04, 3.105585260E+00] ) + ) + # note = "J 6/63" + ) + +species(name = "BeO", + atoms = " Be:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.789742480E+00, -3.248962260E-03, + 1.129885330E-05, -1.180563150E-08, 4.206757610E-12, + 1.534106960E+04, 2.739053060E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.667784730E+00, -4.078476140E-03, + 3.411126080E-06, -8.210523710E-10, 6.137732790E-14, + 1.458995800E+04, -8.085807000E+00] ) + ) + # note = "J12/74" + ) + +species(name = "BeOH", + atoms = " Be:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.913914800E+00, 1.350715900E-02, + -1.853168700E-05, 1.294247100E-08, -3.543896100E-12, + -1.481968300E+04, 1.099283050E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.611672000E+00, 2.397201300E-03, + -8.548916200E-07, 1.430906200E-10, -9.111239900E-15, + -1.536183800E+04, -1.988292070E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BeOH+", + atoms = " Be:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.928098200E+00, 1.353424000E-02, + -1.865402600E-05, 1.307392100E-08, -3.590057600E-12, + 9.036830500E+04, 1.022572700E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.622352700E+00, 2.390257100E-03, + -8.554947300E-07, 1.444167100E-10, -9.356029400E-15, + 8.982943600E+04, -2.726146610E+00] ) + ) + # note = "J12/75" + ) + +species(name = "BeO2H2", + atoms = " Be:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.418439300E-01, 3.991356800E-02, + -6.458828100E-05, 5.102347600E-08, -1.547920500E-11, + -8.274104500E+04, 1.731362600E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.855047800E+00, 4.647758000E-03, + -1.650283400E-06, 2.767062300E-10, -1.782629800E-14, + -8.410625900E+04, -1.842946600E+01] ) + ) + # note = "J12/75" + ) + +species(name = "BeS", + atoms = " Be:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.902253800E+00, 3.189741300E-03, + -1.365182500E-06, -1.509271000E-09, 1.227592900E-12, + 3.071076000E+04, 7.875850640E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.204073400E+00, -3.874202200E-03, + 4.257889100E-06, -1.256059900E-09, 1.134340300E-13, + 3.022608400E+04, -3.578011960E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "Be2O", + atoms = " Be:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.752789700E+00, 8.964869900E-03, + -5.585924700E-06, -3.476918800E-10, 1.101547200E-12, + -8.717470900E+03, 8.451918950E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.454973400E+00, 2.197038500E-03, + -9.291957800E-07, 1.749641000E-10, -1.218998200E-14, + -9.495898500E+03, -5.670422650E+00] ) + ) + # note = "J 9/63" + ) + +species(name = "Be2OF2", + atoms = " Be:2 O:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.860002600E+00, 1.943898200E-02, + -1.881876000E-05, 7.100950300E-09, -3.722525800E-13, + -1.470395900E+05, 3.241733410E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.031134300E+01, 2.925815100E-03, + -1.248198700E-06, 2.365216900E-10, -1.655916000E-14, + -1.484462300E+05, -2.448768300E+01] ) + ) + # note = "J 6/66" + ) + +species(name = "Be2O2", + atoms = " Be:2 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.710273900E+00, 1.824493900E-02, + -1.437725300E-05, 2.126881600E-09, 1.469199300E-12, + -5.051236600E+04, 1.521451020E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.178365200E+00, 3.079692600E-03, + -1.316227300E-06, 2.497061400E-10, -1.749633900E-14, + -5.198487600E+04, -1.292559480E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "Be3O3", + atoms = " Be:3 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.000269200E+00, 2.000517200E-02, + 5.751784700E-07, -1.709280500E-08, 8.486278500E-12, + -1.282686700E+05, 1.562095300E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.190732200E+00, 7.362370100E-03, + -3.129272900E-06, 5.916258900E-10, -4.136019400E-14, + -1.306184900E+05, -2.331688000E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "Be4O4", + atoms = " Be:4 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.381843800E+00, 5.238482800E-02, + -4.089301800E-05, 4.737970700E-09, 4.995416400E-12, + -1.927835600E+05, 3.041306610E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.454703000E+01, 8.190373000E-03, + -3.516278900E-06, 6.692345700E-10, -4.700596300E-14, + -1.970484500E+05, -5.149676590E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "Br", + atoms = " Br:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.485717110E+00, 1.506475250E-04, + -5.372673330E-07, 7.209210650E-10, -2.502055580E-13, + 1.270921680E+04, 6.860308040E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.088510530E+00, 7.121186110E-04, + -2.700030730E-07, 4.149862990E-11, -2.311882940E-15, + 1.285687670E+04, 9.073511440E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "Br2", + atoms = " Br:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.343310040E+00, 6.352307690E-03, + -1.364188150E-05, 1.317263000E-08, -4.683734760E-12, + 2.535154080E+03, 9.079403530E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.187281870E+00, -1.386511040E-03, + 9.347451530E-07, -2.070653910E-10, 1.418085170E-14, + 2.107056780E+03, 7.762233940E-02] ) + ) + # note = "TPIS89" + ) + +species(name = "C", + atoms = " C:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.554239550E+00, -3.215377240E-04, + 7.337922450E-07, -7.322348890E-10, 2.665214460E-13, + 8.544388320E+04, 4.531308480E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.605582980E+00, -1.959343350E-04, + 1.067372190E-07, -1.642393900E-11, 8.187057520E-16, + 8.541294430E+04, 4.192386810E+00] ) + ) + # note = "L11/88" + ) + +species(name = "C+", + atoms = " C:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.615239660E+00, -5.537838730E-04, + 1.063486360E-06, -9.237563450E-10, 3.007745680E-13, + 2.168620530E+05, 3.826529440E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.508535190E+00, -1.085992700E-05, + 5.370692100E-09, -1.182705960E-12, 9.712675640E-17, + 2.168794930E+05, 4.317396550E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "C-", + atoms = " C:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 6.993156540E+04, 3.963404030E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 6.993156540E+04, 3.963404030E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "CCL", + atoms = " C:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.195355700E+00, 2.807631800E-03, + -1.604384500E-06, -5.774406500E-10, 6.140973200E-13, + 5.932507700E+04, 8.035173210E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.098472700E+00, 5.007784500E-04, + -2.001283300E-07, 3.868099200E-11, -2.544111300E-15, + 5.907659900E+04, 3.350173610E+00] ) + ) + # note = "J12/69" + ) + +species(name = "CCLF3", + atoms = " C:1 Cl:1 F:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.901193600E+00, 2.056365800E-02, + -8.550863600E-06, -1.039564500E-08, 7.572182500E-12, + -8.682956300E+04, 1.211506670E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.016509600E+01, 2.846004200E-03, + -1.092602400E-06, 1.831437400E-10, -1.119405900E-14, + -8.884875000E+04, -2.570411130E+01] ) + ) + # note = "L12/77" + ) + +species(name = "CCL2", + atoms = " C:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.858850500E+00, 1.395793800E-02, + -2.003889800E-05, 1.350072600E-08, -3.166971500E-12, + 2.736392600E+04, 1.224331310E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.718499900E+00, 5.344974500E-03, + -2.343128400E-06, 4.180617700E-10, -2.676529500E-14, + 2.755479300E+04, 9.645979540E+00] ) + ) + # note = "J12/68" + ) + +species(name = "CCL2F2", + atoms = " C:1 Cl:2 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.813496600E+00, 2.003683500E-02, + -9.898669300E-06, -8.799535300E-09, 7.121855200E-12, + -6.125355100E+04, 8.990971100E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.070824800E+01, 2.323218600E-03, + -9.007322300E-07, 1.526170200E-10, -9.443495800E-15, + -6.310260200E+04, -2.662287650E+01] ) + ) + # note = "L12/77" + ) + +species(name = "CCL3", + atoms = " C:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.715335700E+00, 1.944379600E-02, + -2.462784100E-05, 1.378646400E-08, -2.663893400E-12, + 7.782002000E+03, 9.716042590E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.781547300E+00, 1.351613000E-03, + -5.824945300E-07, 1.109869700E-10, -7.793726400E-15, + 6.634415100E+03, -1.531613240E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "CCL3F", + atoms = " C:1 Cl:3 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.828768700E+00, 1.898174000E-02, + -1.036066200E-05, -7.847212700E-09, 6.845275200E-12, + -3.644618400E+04, 4.634137300E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.124653000E+01, 1.783769800E-03, + -6.926044300E-07, 1.174072400E-10, -7.264029200E-15, + -3.810830900E+04, -2.827598580E+01] ) + ) + # note = "L12/77" + ) + +species(name = "CCL4", + atoms = " C:1 Cl:4 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 5.796629900E+00, 1.797743900E-02, + -1.095654600E-05, -6.668180700E-09, 6.455489800E-12, + -1.394096500E+04, -5.569596350E-01] ), + NASA( [ 1000.00, 5000.00], [ 1.173909600E+01, 1.283755300E-03, + -4.965025900E-07, 8.352502000E-11, -5.110722400E-15, + -1.541909000E+04, -3.077781870E+01] ) + ) + # note = "L12/81" + ) + +species(name = "CF", + atoms = " C:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.465514300E+00, -6.877980500E-04, + 5.678476600E-06, -6.458298200E-09, 2.298824800E-12, + 2.965559800E+04, 5.881354890E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.686967900E+00, 9.114349100E-04, + -3.646385500E-07, 6.748285400E-11, -4.526959600E-15, + 2.947812500E+04, 4.174510090E+00] ) + ) + # note = "J 6/70" + ) + +species(name = "CF+", + atoms = " C:1 F:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.582850950E+00, -1.863909300E-03, + 8.534353410E-06, -9.323780620E-09, 3.339417130E-12, + 1.371982480E+05, 4.074390000E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.675960840E+00, 8.528230730E-04, + -3.067556610E-07, 4.974300570E-11, -2.839690380E-15, + 1.370188780E+05, 2.846088130E+00] ) + ) + # note = "J12/70" + ) + +species(name = "CF2", + atoms = " C:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.768882100E+00, 7.237296200E-03, + -1.602815200E-06, -4.551237900E-09, 2.664801100E-12, + -2.301578600E+04, 1.113769580E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.226714200E+00, 2.083768000E-03, + -9.903727800E-07, 2.126484800E-10, -1.583111400E-14, + -2.375584700E+04, -1.910904230E+00] ) + ) + # note = "J 6/70" + ) + +species(name = "CF2+", + atoms = " C:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.978352200E+00, 6.033660200E-03, + 6.585878500E-10, -5.212944900E-09, 2.666302100E-12, + 1.121267500E+05, 1.095155630E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.155423000E+00, 2.052831000E-03, + -9.117391100E-07, 1.827276100E-10, -1.321364000E-14, + 1.114312200E+05, -7.787668410E-01] ) + ) + # note = "J12/70" + ) + +species(name = "CF3", + atoms = " C:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.065016800E+00, 1.642415800E-02, + -1.083814600E-05, -8.531799700E-10, 2.387807000E-12, + -5.781197600E+04, 1.570469300E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.201262200E+00, 3.066393500E-03, + -1.314418100E-06, 2.499692500E-10, -1.755092800E-14, + -5.923863100E+04, -1.094571000E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "CF3+", + atoms = " C:1 F:3 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.260557600E+00, 1.542232300E-02, + -9.895667400E-06, -7.834504600E-10, 2.121189200E-12, + 4.936533800E+04, 1.357845510E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.022540600E+00, 3.244127100E-03, + -1.386487500E-06, 2.632363700E-10, -1.846440200E-14, + 4.802231800E+04, -1.120653390E+01] ) + ) + # note = "J12/71" + ) + +species(name = "CF4", + atoms = " C:1 F:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.051439920E+00, 2.782464680E-02, + -2.465252600E-05, 6.745483040E-09, 9.189093160E-13, + -1.135740670E+05, 1.819008990E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.472153590E+00, 3.595252160E-03, + -1.403785020E-06, 2.391881880E-10, -1.485589060E-14, + -1.158163370E+05, -2.497090910E+01] ) + ) + # note = "L 6/83" + ) + +species(name = "CH", + atoms = " C:1 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.489816650E+00, 3.238355410E-04, + -1.688990650E-06, 3.162173270E-09, -1.406090670E-12, + 7.079729340E+04, 2.084011080E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.520906270E+00, 1.765372350E-03, + -4.614757050E-07, 5.928854720E-11, -3.347319620E-15, + 7.113143630E+04, 7.405321630E+00] ) + ) + # note = "TPIS79" + ) + +species(name = "CH+", + atoms = " C:1 H:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.537965520E+00, -7.592601940E-05, + -6.095667080E-07, 2.008195220E-09, -1.008068210E-12, + 1.950572290E+05, 5.232378380E-01] ), + NASA( [ 1000.00, 6000.00], [ 4.537266930E+00, -2.051654030E-03, + 1.695871700E-06, -3.510977090E-10, 2.221291970E-14, + 1.946610790E+05, -5.027822240E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "CHCL", + atoms = " C:1 H:1 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.961361100E+00, 6.115191600E-03, + -4.520318000E-06, 1.309338900E-09, 7.157808600E-14, + 3.595998300E+04, 9.743495840E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.156603600E+00, 4.588832500E-04, + 4.474902300E-07, -1.360678700E-10, 1.024244500E-14, + 3.531057700E+04, -1.751161460E+00] ) + ) + # note = "TPIS79" + ) + +species(name = "CHCLF2", + atoms = " C:1 H:1 Cl:1 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.468112000E+00, 1.588394500E-02, + -2.820901500E-06, -1.047813200E-08, 6.070489600E-12, + -5.957087900E+04, 1.519342340E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.902982700E+00, 4.625190000E-03, + -1.648986700E-06, 2.591042900E-10, -1.483621200E-14, + -6.123426600E+04, -1.373429760E+01] ) + ) + # note = "L12/77" + ) + +species(name = "CHCL2F", + atoms = " C:1 H:1 Cl:2 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.110715900E+00, 1.629589100E-02, + -4.733118700E-06, -9.479816000E-09, 6.132375000E-12, + -3.586221100E+04, 1.296384990E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.508392300E+00, 4.034571300E-03, + -1.426822600E-06, 2.224730300E-10, -1.263017300E-14, + -3.742791000E+04, -1.541166210E+01] ) + ) + # note = "L12/77" + ) + +species(name = "CHCL3", + atoms = " C:1 H:1 Cl:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.681980100E+00, 1.661102100E-02, + -6.618080100E-06, -8.129156000E-09, 5.943313500E-12, + -1.414184400E+04, 9.983499580E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.993803000E+00, 3.565219200E-03, + -1.253764800E-06, 1.947913100E-10, -1.103202100E-14, + -1.560900000E+04, -1.763169980E+01] ) + ) + # note = "X 6/81" + ) + +species(name = "CHF3", + atoms = " C:1 H:1 F:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.785709400E+00, 1.596112900E-02, + -1.557501500E-06, -1.136691100E-08, 6.127529000E-12, + -8.459112500E+04, 1.645759080E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.387024900E+00, 5.126692400E-03, + -1.837177500E-06, 2.900464300E-10, -1.669208900E-14, + -8.636743800E+04, -1.361026120E+01] ) + ) + # note = "L 6/81" + ) + +species(name = "CH2", + atoms = " C:1 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.744848790E+00, 1.179608230E-03, + 1.945022640E-06, -2.529325060E-09, 1.124476310E-12, + 4.557995230E+04, 1.628501250E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.777231660E+00, 3.836634760E-03, + -1.348532200E-06, 2.116412550E-10, -1.234456620E-14, + 4.585903040E+04, 6.672864290E+00] ) + ) + # note = "L11/89" + ) + +species(name = "CH2CLF", + atoms = " C:1 H:2 Cl:1 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.097553300E+00, 1.255189600E-02, + 2.714703600E-07, -9.131984100E-09, 4.471357300E-12, + -3.297361700E+04, 1.616817230E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.957278300E+00, 6.087970000E-03, + -2.081375900E-06, 3.134621500E-10, -1.708487800E-14, + -3.428078100E+04, -4.879886260E+00] ) + ) + # note = "L12/77" + ) + +species(name = "CH2CL2", + atoms = " C:1 H:2 Cl:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.362612700E+00, 1.388553200E-02, + -2.087216700E-06, -8.665615800E-09, 4.949431500E-12, + -1.276123000E+04, 1.508490580E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.499128300E+00, 5.567234000E-03, + -1.888744900E-06, 2.823339300E-10, -1.525686900E-14, + -1.404881300E+04, -7.011561590E+00] ) + ) + # note = "L12/81" + ) + +species(name = "CH2F2", + atoms = " C:1 H:2 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.926407800E+00, 1.052909700E-02, + 3.465991500E-06, -9.685599900E-09, 3.816532200E-12, + -5.550539500E+04, 1.547693920E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.298311200E+00, 6.756801200E-03, + -2.340155300E-06, 3.572238100E-10, -1.978998600E-14, + -5.679921500E+04, -3.528511310E+00] ) + ) + # note = "L 6/81" + ) + +species(name = "CH3", + atoms = " C:1 H:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.673590400E+00, 2.010951750E-03, + 5.730218560E-06, -6.871174250E-09, 2.543857340E-12, + 1.644499880E+04, 1.604564330E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.968660330E+00, 5.807175460E-03, + -1.977785340E-06, 3.072787520E-10, -1.788538970E-14, + 1.653888690E+04, 4.779445030E+00] ) + ) + # note = "L11/89" + ) + +species(name = "CH3CL", + atoms = " C:1 H:3 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.067244500E+00, 9.209152300E-03, + 3.042605400E-06, -8.034206200E-09, 3.212744300E-12, + -1.089688300E+04, 1.358395170E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.295298600E+00, 7.284682200E-03, + -2.416119100E-06, 3.520583800E-10, -1.840618500E-14, + -1.179346500E+04, 8.592965290E-01] ) + ) + # note = "L12/81" + ) + +species(name = "CH3F", + atoms = " C:1 H:3 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.265102400E+00, 6.073385500E-03, + 6.982541000E-06, -8.138091100E-09, 2.103634100E-12, + -2.957766400E+04, 1.184395940E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.625652300E+00, 7.968369900E-03, + -2.684531900E-06, 3.984110800E-10, -2.134863900E-14, + -3.037248000E+04, 3.069903420E+00] ) + ) + # note = "L 6/81" + ) + +species(name = "CH2OH", + atoms = " C:1 H:3 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.863889180E+00, 5.596723040E-03, + 5.932717910E-06, -1.045320120E-08, 4.369672780E-12, + -2.505013670E+03, 5.473022430E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.676256390E+00, 6.564060140E-03, + -2.265254710E-06, 3.556024810E-10, -2.086261900E-14, + -2.892485740E+03, 4.877370050E-01] ) + ) + # note = "L12/92" + ) + +species(name = "CH3O", + atoms = " C:1 H:3 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.265248940E+00, 3.303001170E-03, + 1.704939640E-05, -2.271044760E-08, 8.807565200E-12, + 3.332814880E+02, 7.425680400E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.266765380E+00, 7.853801100E-03, + -2.837399430E-06, 4.590396590E-10, -2.744260840E-14, + -3.400732270E+02, 3.856374470E-01] ) + ) + # note = "L10/92" + ) + +species(name = "CH4", + atoms = " C:1 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.149876130E+00, -1.367097880E-02, + 4.918005990E-05, -4.847430260E-08, 1.666939560E-11, + -1.024664760E+04, -4.641303760E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.635526430E+00, 1.008427950E-02, + -3.369162540E-06, 5.349586670E-10, -3.155188330E-14, + -1.000564550E+04, 9.993133260E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "CH3OH", + atoms = " C:1 H:4 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.715395820E+00, -1.523091290E-02, + 6.524411550E-05, -7.108068890E-08, 2.613526980E-11, + -2.564276560E+04, -1.504098230E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.601344860E+00, 1.024309540E-02, + -3.599855170E-06, 5.725059860E-10, -3.391176400E-14, + -2.599719100E+04, 4.705122530E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "CN", + atoms = " C:1 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.612935020E+00, -9.555132750E-04, + 2.144297650E-06, -3.151632700E-10, -4.643035460E-13, + 5.190079580E+04, 3.980499470E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.748183330E+00, 3.917532710E-05, + 2.997029960E-07, -6.927045320E-11, 4.461376910E-15, + 5.172784190E+04, 2.774690440E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "CN+", + atoms = " C:1 N:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 6.928085050E+00, -2.814921780E-02, + 7.585113760E-05, -7.241743360E-08, 2.338915030E-11, + 2.151955070E+05, -1.017305000E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.290067130E+00, -2.463311390E-03, + 9.035993080E-07, -1.359705860E-10, 7.337098590E-15, + 2.135790810E+05, -1.913403860E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "CN-", + atoms = " C:1 N:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.819628460E+00, -2.482473160E-03, + 6.045678380E-06, -4.527331940E-09, 1.156791670E-12, + 6.802563360E+03, 2.389044030E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.090519280E+00, 1.331817590E-03, + -4.849022660E-07, 7.968652280E-11, -4.827709160E-15, + 6.881956650E+03, 5.631283430E+00] ) + ) + # note = "L10/92" + ) + +species(name = "CNN", + atoms = " C:1 N:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.782408490E+00, 1.255331100E-02, + -2.130820260E-05, 1.909416370E-08, -6.592441870E-12, + 7.495516510E+04, 9.106347360E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.866580840E+00, 2.384996120E-03, + -8.525778320E-07, 1.384238530E-10, -8.184231160E-15, + 7.455869200E+04, -6.775871460E-01] ) + ) + # note = "L12/89" + ) + +species(name = "CO", + atoms = " C:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.579533470E+00, -6.103536800E-04, + 1.016814330E-06, 9.070058840E-10, -9.044244990E-13, + -1.434408600E+04, 3.508409280E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.048485830E+00, 1.351728180E-03, + -4.857940750E-07, 7.885364860E-11, -4.698074890E-15, + -1.426611710E+04, 6.017097900E+00] ) + ) + # note = "TPIS79" + ) + +species(name = "CO+", + atoms = " C:1 O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.770571070E+00, -2.017708200E-03, + 4.610761940E-06, -2.991718660E-09, 6.060577600E-13, + 1.490042670E+05, 3.381257240E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.930594070E+00, 1.560313910E-03, + -6.162389690E-07, 1.099560190E-10, -6.661113070E-15, + 1.491446920E+05, 7.338379280E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "COCL", + atoms = " C:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.286379200E+00, 5.086898000E-03, + -5.072941100E-06, 2.964798300E-09, -7.709345300E-13, + -9.012521200E+03, 6.251186700E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.429123600E+00, 1.612153500E-03, + -6.600628000E-07, 1.212711400E-10, -8.285860100E-15, + -9.330500700E+03, 3.828740560E-01] ) + ) + # note = "J12/65" + ) + +species(name = "COCLF", + atoms = " C:1 O:1 Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.706666100E+00, 2.272256500E-02, + -3.011563900E-05, 2.048356600E-08, -5.657222800E-12, + -5.261990200E+04, 1.798762570E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.088108100E+00, 3.181647900E-03, + -1.376331600E-06, 2.654400500E-10, -1.892896900E-14, + -5.388378100E+04, -8.684993550E+00] ) + ) + # note = "J 6/61" + ) + +species(name = "COCL2", + atoms = " C:1 O:1 Cl:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.707879100E+00, 2.893694640E-02, + -4.932891160E-05, 4.169101390E-08, -1.370573910E-11, + -2.783509320E+04, 1.762021140E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.860183780E+00, 2.132715000E-03, + -8.220771580E-07, 1.389511330E-10, -8.584066530E-15, + -2.910564230E+04, -1.190119070E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "COF", + atoms = " C:1 O:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.201972700E+00, 5.583777000E-03, + -1.490548100E-06, -2.312606900E-09, 1.361435300E-12, + -2.181704300E+04, 1.006073920E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.890821400E+00, 2.217970300E-03, + -9.255072500E-07, 1.727012000E-10, -1.195534300E-14, + -2.235798400E+04, 9.927840610E-01] ) + ) + # note = "J12/65" + ) + +species(name = "COF2", + atoms = " C:1 O:1 F:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.129794890E+00, 1.410197230E-02, + -5.943813590E-06, -5.305447900E-09, 3.973674690E-12, + -7.817453390E+04, 1.511090920E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.816317300E+00, 3.164732820E-03, + -1.217762690E-06, 2.055822610E-10, -1.268931250E-14, + -7.954827160E+04, -9.528645740E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "COS", + atoms = " C:1 O:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.462532100E+00, 1.194799200E-02, + -1.379437000E-05, 8.070773600E-09, -1.832765300E-12, + -1.780398700E+04, 1.080586880E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.239200000E+00, 2.410058400E-03, + -9.606452200E-07, 1.777834700E-10, -1.223570400E-14, + -1.848045500E+04, -3.077738890E+00] ) + ) + # note = "J 3/61" + ) + +species(name = "CO2", + atoms = " C:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.356773520E+00, 8.984596770E-03, + -7.123562690E-06, 2.459190220E-09, -1.436995480E-13, + -4.837196970E+04, 9.901052220E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.636594930E+00, 2.741319910E-03, + -9.958285310E-07, 1.603730110E-10, -9.161034680E-15, + -4.902493410E+04, -1.935348550E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "CO2+", + atoms = " C:1 O:2 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.393056530E+00, 5.823004150E-03, + 4.380120750E-08, -4.682362710E-09, 2.315528250E-12, + 1.123561510E+05, 6.390385530E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.612925130E+00, 1.898299940E-03, + -7.345963830E-07, 1.239756650E-10, -7.576922880E-15, + 1.116211360E+05, -5.651356980E+00] ) + ) + # note = "L10/92" + ) + +species(name = "COOH", + atoms = " C:1 O:2 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.922079150E+00, 7.624538200E-03, + 3.298846830E-06, -1.071352490E-08, 5.115873090E-12, + -2.683835880E+04, 1.129259890E+01] ), + NASA( [ 1000.00, 6000.00], [ 5.392062470E+00, 4.112213050E-03, + -1.481948170E-06, 2.398752780E-10, -1.439029650E-14, + -2.767087860E+04, -2.235286310E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "CP", + atoms = " C:1 P:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.702914000E+00, -2.940263300E-03, + 1.252637830E-05, -1.459482870E-08, 5.619553200E-12, + 6.150293320E+04, 5.349714670E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.169860610E+00, -3.338931540E-04, + 6.305100950E-07, -1.652489160E-10, 1.252485420E-14, + 6.121210160E+04, 2.057622880E+00] ) + ) + # note = "L 9/93" + ) + +species(name = "CS", + atoms = " C:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.403934400E+00, -6.577330800E-04, + 6.171215700E-06, -7.368960400E-09, 2.734673800E-12, + 3.268939300E+04, 5.911067290E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.682601200E+00, 9.047320300E-04, + -3.643637400E-07, 6.385429400E-11, -3.693398200E-15, + 3.249749000E+04, 3.898416790E+00] ) + ) + # note = "J12/76" + ) + +species(name = "CS2", + atoms = " C:1 S:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.832601300E+00, 1.329079100E-02, + -1.814469400E-05, 1.283168100E-08, -3.680060900E-12, + 1.276678200E+04, 9.222194110E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.925261000E+00, 1.825299600E-03, + -7.558538000E-07, 1.460507300E-10, -1.043859500E-14, + 1.204807100E+04, -6.058932290E+00] ) + ) + # note = "J12/76" + ) + +species(name = "C2", + atoms = " C:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.962586410E+00, 5.768153100E-02, + -1.580377350E-04, 1.724606360E-07, -6.579052860E-11, + 9.898833170E+04, 2.331984180E+01] ), + NASA( [ 1000.00, 6000.00], [ 4.124873140E+00, 1.083466180E-04, + 1.572508900E-07, -4.240421020E-11, 3.250557140E-15, + 9.892280660E+04, 7.974210150E-01] ) + ) + # note = "TPIS91" + ) + +species(name = "C2+", + atoms = " C:2 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.744384660E+00, -2.750608040E-03, + 9.416979860E-06, -9.544720490E-09, 3.487434580E-12, + 2.400575730E+05, 3.701688640E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.474362350E+00, 3.908584150E-03, + -1.153627120E-06, 1.285227900E-10, -4.371609390E-15, + 2.408015850E+05, 1.565709560E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "C2-", + atoms = " C:2 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.820382300E+00, -2.881624080E-03, + 8.219230440E-06, -7.322548630E-09, 2.414059290E-12, + 5.675239680E+04, 2.431812380E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.941477660E+00, 3.345543280E-03, + -1.214013170E-06, 1.868363260E-10, -1.034476990E-14, + 5.726966690E+04, 1.200325300E+01] ) + ) + # note = "TPIS91" + ) + +species(name = "C2CL2", + atoms = " C:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.022948200E+00, 1.408266700E-02, + -1.809566900E-05, 1.161034800E-08, -2.881747800E-12, + 2.322748200E+04, 6.099952060E-01] ), + NASA( [ 1000.00, 5000.00], [ 8.172854700E+00, 2.365989200E-03, + -9.655250500E-07, 1.773614800E-10, -1.213520300E-14, + 2.251019000E+04, -1.490359050E+01] ) + ) + # note = "J12/68" + ) + +species(name = "C2CL4", + atoms = " C:2 Cl:4 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.143479200E+00, 3.742237200E-02, + -5.436979300E-05, 3.911286300E-08, -1.117638400E-11, + -3.949262900E+03, 8.344559340E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.293593700E+01, 3.430920000E-03, + -1.506719400E-06, 2.934699300E-10, -2.107089600E-14, + -5.893233700E+03, -3.468070290E+01] ) + ) + # note = "L10/87" + ) + +species(name = "C2CL6", + atoms = " C:2 Cl:6 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.638353100E+00, 6.336556100E-02, + -1.008003000E-04, 7.663692200E-08, -2.264655000E-11, + -2.015651300E+04, 6.474795590E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.903428600E+01, 3.395682100E-03, + -1.511528900E-06, 2.970031500E-10, -2.145382700E-14, + -2.310380300E+04, -6.285292840E+01] ) + ) + # note = "L10/87" + ) + +species(name = "C2F2", + atoms = " C:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.534583700E+00, 1.444584500E-02, + -1.218969200E-05, 3.604298500E-09, 1.911895100E-13, + 9.213356200E+02, 5.419465110E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.516458100E+00, 3.168646200E-03, + -1.331138500E-06, 2.496004900E-10, -1.734207200E-14, + -1.610765500E+02, -1.506806220E+01] ) + ) + # note = "J12/67" + ) + +species(name = "C2F4", + atoms = " C:2 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.616618300E+00, 2.648861800E-02, + -2.243326600E-05, 6.228644500E-09, 6.214924400E-13, + -8.127724200E+04, 8.523764070E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.108646800E+01, 5.278842900E-03, + -2.235440000E-06, 4.216684600E-10, -2.943391400E-14, + -8.329288400E+04, -2.986688100E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "C2H", + atoms = " C:2 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.889657330E+00, 1.340996110E-02, + -2.847695010E-05, 2.947910450E-08, -1.093315110E-11, + 6.683939320E+04, 6.222964380E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.361183950E+00, 4.389897240E-03, + -1.627722180E-06, 2.605566630E-10, -1.529393050E-14, + 6.704922140E+04, 5.571275420E+00] ) + ) + # note = "L 1/91" + ) + +species(name = "C2HCL", + atoms = " C:2 H:1 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.804715800E+00, 2.583787100E-02, + -4.314995400E-05, 3.588357900E-08, -1.144799200E-11, + 2.423020700E+04, 1.273775460E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.321045700E+00, 3.845973700E-03, + -1.486460600E-06, 2.656137900E-10, -1.795246600E-14, + 2.344047800E+04, -8.284650860E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "C2HF", + atoms = " C:2 H:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.690177000E+00, 1.768085300E-02, + -2.274985500E-05, 1.492056800E-08, -3.738192500E-12, + 1.368322300E+04, 8.146971870E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.094950100E+00, 3.943242800E-03, + -1.471143800E-06, 2.529464100E-10, -1.644666300E-14, + 1.297690700E+04, -8.315342930E+00] ) + ) + # note = "J12/67" + ) + +species(name = "CHCO,ketyl", + atoms = " C:2 H:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.765939710E+00, 1.417412020E-02, + -2.326009860E-05, 2.157280890E-08, -7.585093080E-12, + 1.808563240E+04, 1.054085910E+01] ), + NASA( [ 1000.00, 6000.00], [ 4.260381100E+00, 4.827405000E-03, + -1.666188440E-06, 2.614052040E-10, -1.532579630E-14, + 1.788047600E+04, 3.978743200E+00] ) + ) + # note = "L 6/89" + ) + +species(name = "C2H2,acetylene", + atoms = " C:2 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.086810940E-01, 2.336156290E-02, + -3.551718150E-05, 2.801524370E-08, -8.500729740E-12, + 2.642898070E+04, 1.393970510E+01] ), + NASA( [ 1000.00, 6000.00], [ 4.658785040E+00, 4.883965470E-03, + -1.608287750E-06, 2.469742260E-10, -1.386056800E-14, + 2.575940440E+04, -3.998347720E+00] ) + ) + # note = "L 1/91" + ) + +species(name = "C2H2,vinylidene", + atoms = " C:2 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.281549330E+00, 6.976427400E-03, + -2.385282830E-06, -1.210770450E-09, 9.820385790E-13, + 4.862179430E+04, 5.920391690E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.278071390E+00, 4.756228830E-03, + -1.630075130E-06, 2.546229810E-10, -1.488603260E-14, + 4.831667220E+04, 6.400226000E-01] ) + ) + # note = "L12/89" + ) + +species(name = "CH2CO,ketene", + atoms = " C:2 H:2 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.135836300E+00, 1.811887210E-02, + -1.739474740E-05, 9.343975680E-09, -2.014576150E-12, + -7.042918040E+03, 1.221564800E+01] ), + NASA( [ 1000.00, 6000.00], [ 5.757933070E+00, 6.349114130E-03, + -2.258148350E-06, 3.620267330E-10, -2.156512040E-14, + -7.978783840E+03, -6.107721500E+00] ) + ) + # note = "L 5/90" + ) + +species(name = "C2H3,vinyl", + atoms = " C:2 H:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.212466450E+00, 1.514791620E-03, + 2.592094120E-05, -3.576578470E-08, 1.471508730E-11, + 3.485984680E+04, 8.510540250E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.351050550E+00, 7.493300910E-03, + -2.643145860E-06, 4.212859060E-10, -2.498961190E-14, + 3.415461810E+04, 5.716765290E-01] ) + ) + # note = "L 2/92" + ) + +species(name = "CH3CN", + atoms = " C:2 H:3 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.824842210E+00, 4.101003590E-03, + 2.145456790E-05, -2.872345430E-08, 1.118041460E-11, + 6.288385220E+03, 5.540242110E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.085769740E+00, 9.707970400E-03, + -3.484849460E-06, 5.621067600E-10, -3.362346700E-14, + 5.458530740E+03, -3.265539030E+00] ) + ) + # note = "L12/92" + ) + +species(name = "CH3CO,acetyl", + atoms = " C:2 H:3 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.125278500E+00, 9.778220200E-03, + 4.521448300E-06, -9.009461600E-09, 3.193717900E-12, + -4.108507800E+03, 1.124202120E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.612278900E+00, 8.449886000E-03, + -2.854147200E-06, 4.238376300E-10, -2.268403700E-14, + -5.187863300E+03, -3.261781930E+00] ) + ) + # note = "BUR 84" + ) + +species(name = "C2H4", + atoms = " C:2 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.959201480E+00, -7.570522470E-03, + 5.709902920E-05, -6.915887530E-08, 2.698843730E-11, + 5.089775930E+03, 4.097330960E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.991827610E+00, 1.048339100E-02, + -3.717213850E-06, 5.946285140E-10, -3.536305260E-14, + 4.268658190E+03, -2.690521510E-01] ) + ) + # note = "L 1/91" + ) + +species(name = "C2H4O,ethylen", + atoms = " C:2 H:4 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.759049310E+00, -9.441192920E-03, + 8.030967700E-05, -1.008077560E-07, 4.003983570E-11, + -7.560814020E+03, 7.849770300E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.488884290E+00, 1.204602310E-02, + -4.333615450E-06, 7.002690000E-10, -4.194818700E-14, + -9.180475760E+03, -7.080638680E+00] ) + ) + # note = "o L 8/88" + ) + +species(name = "CH3CHO,ethanal", + atoms = " C:2 H:4 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.729476270E+00, -3.193431610E-03, + 4.753535050E-05, -5.745904740E-08, 2.193126190E-11, + -2.157287990E+04, 4.102954550E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.404178990E+00, 1.172296750E-02, + -4.226268300E-06, 6.837157330E-10, -4.098426760E-14, + -2.259315080E+04, -3.481175930E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "CH3COOH", + atoms = " C:2 H:4 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.789368440E+00, 1.000010160E-02, + 3.425579780E-05, -5.090179190E-08, 2.062175040E-11, + -5.347522920E+04, 1.410595040E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.670836780E+00, 1.351526950E-02, + -5.258746880E-06, 8.931850620E-10, -5.531808910E-14, + -5.575609710E+04, -1.546765900E+01] ) + ) + # note = "L 8/88" + ) + +species(name = "(HCOOH)2", + atoms = " C:2 H:4 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.769238500E+00, 2.722471600E-02, + 1.723805300E-06, -2.077672400E-08, 9.937994900E-12, + -1.010498800E+05, 1.050549660E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.220737100E+01, 1.368885100E-02, + -4.684036900E-06, 7.051166300E-10, -3.836928500E-14, + -1.039593800E+05, -3.570980540E+01] ) + ) + # note = "BUR 92" + ) + +species(name = "C2H5", + atoms = " C:2 H:5 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.306465680E+00, -4.186588920E-03, + 4.971428070E-05, -5.991266060E-08, 2.305090040E-11, + 1.284162650E+04, 4.707209240E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.288005350E+00, 1.243373740E-02, + -4.413838290E-06, 7.065269430E-10, -4.203418560E-14, + 1.205642000E+04, 8.452996230E-01] ) + ) + # note = "L12/92" + ) + +species(name = "C2H6", + atoms = " C:2 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.291424920E+00, -5.501542700E-03, + 5.994382880E-05, -7.084662850E-08, 2.686857710E-11, + -1.152220550E+04, 2.666823160E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.046666740E+00, 1.535387660E-02, + -5.470393210E-06, 8.778262280E-10, -5.231673050E-14, + -1.244735120E+04, -9.686836070E-01] ) + ) + # note = "L 8/88" + ) + +species(name = "CH3N2CH3", + atoms = " C:2 H:6 N:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 6.296136320E+00, -2.258154270E-03, + 6.212328030E-05, -7.462929970E-08, 2.803719470E-11, + 1.569288500E+04, -2.499259150E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.449548510E+00, 1.744061530E-02, + -6.273824530E-06, 1.013511780E-09, -6.069374940E-14, + 1.419799780E+04, -1.415676380E+01] ) + ) + # note = "L 8/88" + ) + +species(name = "CH3OCH3", + atoms = " C:2 H:6 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.305622790E+00, -2.142542720E-03, + 5.308732440E-05, -6.231471360E-08, 2.307310360E-11, + -2.398662950E+04, 7.132642090E-01] ), + NASA( [ 1000.00, 6000.00], [ 5.648441830E+00, 1.633818990E-02, + -5.868023670E-06, 9.468368690E-10, -5.665047380E-14, + -2.510746900E+04, -5.962649390E+00] ) + ) + # note = "L12/92" + ) + +species(name = "C2H5OH", + atoms = " C:2 H:6 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.858681780E+00, -3.740067400E-03, + 6.955502670E-05, -8.865411470E-08, 3.516844300E-11, + -2.999613090E+04, 4.801922940E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.562897700E+00, 1.520342640E-02, + -5.389222470E-06, 8.621502240E-10, -5.128246830E-14, + -3.152579840E+04, -9.475576440E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "CCN", + atoms = " C:2 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.676007240E+00, 7.888423480E-03, + -9.553266390E-06, 7.313440880E-09, -2.480352020E-12, + 9.541955350E+04, 5.816519500E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.535949400E+00, 1.933361810E-03, + -7.430079930E-07, 1.256541670E-10, -7.704200350E-15, + 9.490280650E+04, -3.703806370E+00] ) + ) + # note = "L12/92" + ) + +species(name = "CNC", + atoms = " C:2 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.989588710E+00, 5.219778320E-03, + -5.810837060E-07, -3.394165200E-09, 1.762730840E-12, + 8.096563570E+04, 3.887219260E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.932596960E+00, 1.579147540E-03, + -6.123335320E-07, 1.038696100E-10, -6.431618970E-15, + 8.033268330E+04, -6.602071570E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "C2N2", + atoms = " C:2 N:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.329253250E+00, 2.615378470E-02, + -4.900039940E-05, 4.619174780E-08, -1.643238550E-11, + 3.566844240E+04, 9.863362270E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.705447690E+00, 3.642603390E-03, + -1.309342500E-06, 2.164110610E-10, -1.311874100E-14, + 3.486080050E+04, -1.048036950E+01] ) + ) + # note = "TPIS79" + ) + +species(name = "C2O", + atoms = " C:2 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.863454220E+00, 1.197329690E-02, + -1.812325010E-05, 1.538136340E-08, -5.289065240E-12, + 3.375009450E+04, 8.894058810E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.515764440E+00, 1.877457040E-03, + -7.011597570E-07, 1.215052910E-10, -7.767788550E-15, + 3.309704580E+04, -4.276361380E+00] ) + ) + # note = "L12/89" + ) + +species(name = "C3", + atoms = " C:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.432839630E+00, -4.467543830E-03, + 1.493214820E-05, -1.479531380E-08, 5.014211120E-12, + 9.949572220E+04, -1.587207150E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.803577680E+00, 2.145112330E-03, + -1.072920740E-06, 2.607352590E-10, -2.016319600E-14, + 9.939654160E+04, 3.893693080E-01] ) + ) + # note = "TPIS79" + ) + +species(name = "C3H3,propargyl", + atoms = " C:3 H:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.828407660E+00, 2.378390360E-02, + -2.192281760E-05, 1.000674440E-08, -1.389846440E-12, + 4.018630580E+04, 1.384479570E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.641758210E+00, 8.085874280E-03, + -2.847878870E-06, 4.535259770E-10, -2.688798150E-14, + 3.897936990E+04, -1.040042550E+01] ) + ) + # note = "BUR 92" + ) + +species(name = "C3H4,allene", + atoms = " C:3 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.613074870E+00, 1.212233710E-02, + 1.854054000E-05, -3.452584750E-08, 1.533533890E-11, + 2.154156420E+04, 1.025033190E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.316948690E+00, 1.113362620E-02, + -3.962890180E-06, 6.356337750E-10, -3.787498850E-14, + 2.011746170E+04, -1.097188620E+01] ) + ) + # note = "L12/92" + ) + +species(name = "C3H4,propyne", + atoms = " C:3 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.680407600E+00, 1.579944290E-02, + 2.507757370E-06, -1.365845840E-08, 6.615766070E-12, + 2.069163920E+04, 9.892510470E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.025310920E+00, 1.133644270E-02, + -4.022290480E-06, 6.437513650E-10, -3.829900820E-14, + 1.951017920E+04, -8.589125920E+00] ) + ) + # note = "L12/92" + ) + +species(name = "C3H4,cyclo-", + atoms = " C:3 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.246665530E+00, 5.762380840E-03, + 4.420803050E-05, -6.629067860E-08, 2.818247300E-11, + 3.212843890E+04, 1.334518370E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.280787300E+00, 1.123938190E-02, + -4.019575260E-06, 6.469206480E-10, -3.864332480E-14, + 3.034150860E+04, -1.114199450E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "C3H5,allyl", + atoms = " C:3 H:5 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.787946930E+00, 9.484143350E-03, + 2.423433680E-05, -3.656040100E-08, 1.485923560E-11, + 1.862612180E+04, 7.828224990E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.547611320E+00, 1.331522460E-02, + -4.783331000E-06, 7.719498140E-10, -4.619308080E-14, + 1.727147070E+04, -9.274868410E+00] ) + ) + # note = "BUR 92" + ) + +species(name = "C3H6,propylene", + atoms = " C:3 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.834645240E+00, 3.290784050E-03, + 5.052281840E-05, -6.662514180E-08, 2.637075850E-11, + 7.538382950E+02, 7.534109950E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.038704990E+00, 1.629638950E-02, + -5.821306240E-06, 9.359364830E-10, -5.586029030E-14, + -7.765950920E+02, -8.438243220E+00] ) + ) + # note = "L 7/90" + ) + +species(name = "C3H6,cyclo-", + atoms = " C:3 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.832785550E+00, -5.210274620E-03, + 9.295828370E-05, -1.227531460E-07, 4.991911540E-11, + 5.195200570E+03, 1.083067000E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.216632930E+00, 1.653936140E-02, + -5.900759610E-06, 9.480954730E-10, -5.656617370E-14, + 2.959375550E+03, -1.360406070E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C3H6O", + atoms = " C:3 H:6 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.568510510E+00, 5.027172920E-03, + 6.423156070E-05, -8.902295480E-08, 3.624237660E-11, + -1.296792050E+04, 9.888382290E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.945557100E+00, 1.740616780E-02, + -6.254364630E-06, 1.009754570E-09, -6.044889530E-14, + -1.528676830E+04, -1.841841330E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C3H7,n-propyl", + atoms = " C:3 H:7 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.032399960E+00, 3.427283120E-03, + 6.143444200E-05, -8.376463380E-08, 3.408577760E-11, + 1.033938390E+04, 8.774280790E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.964684620E+00, 1.754519460E-02, + -6.233700550E-06, 9.985297350E-10, -5.943947930E-14, + 8.542443580E+03, -1.148314780E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C3H7,i-propyl", + atoms = " C:3 H:7 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.408728720E+00, -8.552218250E-03, + 8.421784910E-05, -1.009426830E-07, 3.869144790E-11, + 9.426009560E+03, 3.623225040E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.751258820E+00, 1.876057620E-02, + -6.701919760E-06, 1.077518710E-09, -6.430908850E-14, + 7.979772930E+03, -4.913593550E+00] ) + ) + # note = "L 9/85" + ) + +species(name = "C3H8", + atoms = " C:3 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.211026200E+00, 1.715998030E-03, + 7.061834720E-05, -9.195941160E-08, 3.644213720E-11, + -1.438121060E+04, 5.609304910E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.667893630E+00, 2.061202140E-02, + -7.365530270E-06, 1.184407610E-09, -7.069532100E-14, + -1.627485210E+04, -1.318595030E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C3H8O,1propanol", + atoms = " C:3 H:8 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.277994200E+00, 8.086605460E-04, + 8.215481790E-05, -1.084881850E-07, 4.348868970E-11, + -3.283487740E+04, 5.705268350E+00] ), + NASA( [ 1000.00, 6000.00], [ 8.710109290E+00, 2.080514730E-02, + -7.384808980E-06, 1.181889770E-09, -7.035977830E-14, + -3.512440240E+04, -1.889654530E+01] ) + ) + # note = "L 9/88" + ) + +species(name = "C3H8O,2propanol", + atoms = " C:3 H:8 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.308030270E+00, 1.024980100E-02, + 6.198578050E-05, -9.033110880E-08, 3.740653720E-11, + -3.492488430E+04, 7.558262540E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.642711130E+00, 2.002244130E-02, + -7.119483640E-06, 1.141363550E-09, -6.799216670E-14, + -3.748400950E+04, -2.563460740E+01] ) + ) + # note = "L 9/88" + ) + +species(name = "C3O2", + atoms = " C:3 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.196682110E+00, 3.145531380E-02, + -5.074586230E-05, 4.357943980E-08, -1.473517870E-11, + -1.294609800E+04, 1.329852640E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.461759200E+00, 4.815528250E-03, + -1.809307590E-06, 3.007870800E-10, -1.837221620E-14, + -1.432716540E+04, -1.706056880E+01] ) + ) + # note = "L 7/88" + ) + +species(name = "C4", + atoms = " C:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.322734820E+00, 2.025964530E-02, + -3.734660710E-05, 3.568782550E-08, -1.277273820E-11, + 1.227236380E+05, 6.809948290E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.630914940E+00, 4.831163970E-03, + -1.504056420E-06, 2.028723570E-10, -1.003456870E-14, + 1.225008790E+05, -2.989547310E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "C4H2", + atoms = " C:4 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -4.071323930E-01, 5.207751430E-02, + -9.211383400E-05, 8.086574030E-08, -2.704220800E-11, + 5.259573670E+04, 2.032402230E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.667048950E+00, 6.715051910E-03, + -2.353550600E-06, 3.736353660E-10, -2.210540430E-14, + 5.100169780E+04, -2.180020500E+01] ) + ) + # note = "L 2/93" + ) + +species(name = "C4H4,1,3-cyclo-", + atoms = " C:4 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.278953180E+00, 1.342033500E-02, + 4.119920630E-05, -6.989567270E-08, 3.072521200E-11, + 4.508640970E+04, 1.767877880E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.042077510E+00, 1.252021740E-02, + -4.523370470E-06, 7.331204430E-10, -4.401108640E-14, + 4.251084940E+04, -2.112844830E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "C4H6,butadiene", + atoms = " C:4 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.685304240E+00, 1.961200120E-02, + 4.465235710E-05, -8.315231140E-08, 3.806512260E-11, + 1.160757090E+04, 1.675459670E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.600101390E+01, 3.918251150E-03, + 1.143557330E-06, -2.079257480E-10, 7.577135510E-15, + 6.517082210E+03, -6.282041450E+01] ) + ) + # note = "X10/92" + ) + +species(name = "C4H6,2-butyne", + atoms = " C:4 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.424816990E+00, 2.653800040E-03, + 5.304432810E-05, -6.713920950E-08, 2.581900810E-11, + 1.546412160E+04, 5.409674090E-01] ), + NASA( [ 1000.00, 6000.00], [ 6.932320900E+00, 1.864258730E-02, + -6.823591040E-06, 1.119104850E-09, -6.767831130E-14, + 1.403095580E+04, -1.220842830E+01] ) + ) + # note = "X10/88" + ) + +species(name = "C4H6,cyclo-", + atoms = " C:4 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.916334330E+00, -3.205848100E-03, + 1.002635710E-04, -1.342481670E-07, 5.466701000E-11, + 1.747322360E+04, 1.248171830E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.848582530E+00, 1.808128920E-02, + -6.531866440E-06, 1.058421230E-09, -6.352539390E-14, + 1.461534610E+04, -2.089802570E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "C4H8,1-butene", + atoms = " C:4 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.426740730E+00, 6.639462490E-03, + 6.806528150E-05, -9.287535620E-08, 3.734739490E-11, + -2.115327960E+03, 7.546948600E+00] ), + NASA( [ 1000.00, 6000.00], [ 8.021479910E+00, 2.260107070E-02, + -8.312840330E-06, 1.378030720E-09, -8.421754590E-14, + -4.308521530E+03, -1.711706970E+01] ) + ) + # note = "X 4/88" + ) + +species(name = "C4H8,cis2-buten", + atoms = " C:4 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.444178170E+00, -5.204516940E-03, + 9.629065770E-05, -1.200688140E-07, 4.681948250E-11, + -2.917414720E+03, 3.460507330E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.083350250E+00, 2.349824300E-02, + -8.644830790E-06, 1.431601070E-09, -8.737626420E-14, + -4.923202660E+03, -1.287093170E+01] ) + ) + # note = "X 4/88" + ) + +species(name = "C4H8,tr2-butene", + atoms = " C:4 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.572789670E+00, 3.765410170E-03, + 6.522267080E-05, -8.309095220E-08, 3.203113420E-11, + -3.579033010E+03, 5.377967080E-01] ), + NASA( [ 1000.00, 6000.00], [ 7.625146700E+00, 2.304510420E-02, + -8.494248640E-06, 1.411525540E-09, -8.647517570E-14, + -5.401028150E+03, -1.619870800E+01] ) + ) + # note = "X 4/88" + ) + +species(name = "C4H8,isobutene", + atoms = " C:4 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.680497270E+00, 1.694144450E-02, + 3.519635550E-05, -5.431668560E-08, 2.202016360E-11, + -4.120993080E+03, 8.114571490E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.835553300E+00, 2.274596790E-02, + -8.365175490E-06, 1.390762500E-09, -8.533299690E-14, + -6.163563220E+03, -1.765407190E+01] ) + ) + # note = "X 4/88" + ) + +species(name = "C4H8,cyclo-", + atoms = " C:4 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.811447200E+00, -9.680499980E-03, + 1.279176940E-04, -1.630571250E-07, 6.483147900E-11, + 1.871079300E+03, 8.609981960E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.763310540E+00, 2.306533500E-02, + -8.259837580E-06, 1.334123890E-09, -7.993633020E-14, + -1.176720080E+03, -2.191482110E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "(CH3COOH)2", + atoms = " C:4 H:8 O:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.754817430E+00, 1.389188970E-02, + 8.329556090E-05, -1.200218550E-07, 4.906796450E-11, + -1.151856690E+05, -1.224468140E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.582452080E+01, 2.618351170E-02, + -9.460983580E-06, 1.533376160E-09, -9.204765450E-14, + -1.190391410E+05, -5.110976170E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C4H9,n-butyl", + atoms = " C:4 H:9 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.824305400E+00, 5.503090800E-03, + 7.493003300E-05, -1.020859430E-07, 4.134847140E-11, + 5.540780490E+03, 2.176095090E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.189756150E+00, 2.363222670E-02, + -8.642709850E-06, 1.427705150E-09, -8.702037160E-14, + 3.377029090E+03, -2.156005600E+01] ) + ) + # note = "X10/84" + ) + +species(name = "C4H9,i-butyl", + atoms = " C:4 H:9 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.548852350E+00, 1.787476380E-02, + 5.007828250E-05, -7.944750710E-08, 3.358023540E-11, + 4.740115880E+03, 1.118493820E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.430406070E+00, 2.342713490E-02, + -8.535991820E-06, 1.397483550E-09, -8.440574560E-14, + 2.142148620E+03, -2.422079940E+01] ) + ) + # note = "X10/84" + ) + +species(name = "C4H9,s-butyl", + atoms = " C:4 H:9 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.039306070E+00, 4.093871000E-04, + 9.155741120E-05, -1.194117130E-07, 4.750439870E-11, + 6.423272360E+03, 8.243604440E+00] ), + NASA( [ 1000.00, 6000.00], [ 8.426119390E+00, 2.393792650E-02, + -8.560357830E-06, 1.377351600E-09, -8.224960050E-14, + 3.964842530E+03, -1.698768750E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C4H9,t-butyl", + atoms = " C:4 H:9 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 6.873271330E+00, -1.851463060E-02, + 1.305601160E-04, -1.508327550E-07, 5.653582820E-11, + 4.109589380E+03, 2.300166040E-01] ), + NASA( [ 1000.00, 6000.00], [ 6.630746560E+00, 2.593537450E-02, + -9.371631110E-06, 1.518458900E-09, -9.111908630E-14, + 2.008613230E+03, -9.205814400E+00] ) + ) + # note = "L 1/93" + ) + +species(name = "C4H10,isobutane", + atoms = " C:4 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.454792760E+00, 8.260579850E-03, + 8.298866640E-05, -1.146476420E-07, 4.645701010E-11, + -1.845939310E+04, 4.927431750E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.769912450E+00, 2.549972100E-02, + -9.141429320E-06, 1.473282710E-09, -8.808001880E-14, + -2.140526470E+04, -3.003291010E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C4H10,n-butane", + atoms = " C:4 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 6.147468060E+00, 1.559473890E-04, + 9.679135170E-05, -1.254839100E-07, 4.978165550E-11, + -1.759944020E+04, -1.094098790E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.445358340E+00, 2.578580730E-02, + -9.236191220E-06, 1.486327550E-09, -8.878971580E-14, + -2.013821650E+04, -2.634700760E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C4N2", + atoms = " C:4 N:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.281168450E+00, 4.612735130E-02, + -8.532932430E-05, 7.934077790E-08, -2.803563990E-11, + 6.204010130E+04, 1.128981740E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.048548000E+01, 5.695448890E-03, + -2.127455470E-06, 3.523231960E-10, -2.146317290E-14, + 6.046206300E+04, -2.722665020E+01] ) + ) + # note = "J 3/61" + ) + +species(name = "C5", + atoms = " C:5 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.358730230E+00, 3.243508750E-02, + -5.930584700E-05, 5.601148640E-08, -2.030751760E-11, + 1.243762420E+05, 6.049158480E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.574568880E+00, 3.860167980E-03, + -1.475580140E-06, 2.480488330E-10, -1.526602530E-14, + 1.230535170E+05, -2.371379800E+01] ) + ) + # note = "L 7/88" + ) + +species(name = "C5H6,1,3cyclo-", + atoms = " C:5 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.610440320E-01, 1.480458700E-02, + 7.210720840E-05, -1.133783980E-07, 4.868904820E-11, + 1.480175480E+04, 2.135362590E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.975827450E+00, 1.890552330E-02, + -6.841103000E-06, 1.109921170E-09, -6.667914270E-14, + 1.108167270E+04, -3.220968920E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "C5H8,cyclo-", + atoms = " C:5 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.689805140E+00, 2.096355330E-03, + 1.130344590E-04, -1.540775810E-07, 6.276235640E-11, + 2.458270670E+03, 1.530750400E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.642824230E+00, 2.425628340E-02, + -8.720895030E-06, 1.411908680E-09, -8.472678480E-14, + -1.292550320E+03, -3.012256060E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C5H10,1-pentene", + atoms = " C:5 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.883564560E+00, 5.104012670E-03, + 9.782821560E-05, -1.323892270E-07, 5.322315070E-11, + -5.168230680E+03, 3.419870310E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.173970550E+01, 2.574670710E-02, + -9.259887010E-06, 1.514978850E-09, -9.178839390E-14, + -8.462748390E+03, -3.543756190E+01] ) + ) + # note = "X 4/87" + ) + +species(name = "C5H10,cyclo-", + atoms = " C:5 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.703279550E+00, -1.155653540E-02, + 1.641114390E-04, -2.093681340E-07, 8.310545070E-11, + -1.109517860E+04, 1.197777610E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.132957900E+00, 3.011304300E-02, + -1.091691370E-05, 1.772987670E-09, -1.065752480E-13, + -1.515973720E+04, -2.926188280E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C5H11,pentyl", + atoms = " C:5 H:11 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.174014320E+00, 3.809215880E-03, + 1.043790650E-04, -1.396340500E-07, 5.603951170E-11, + 2.528709020E+03, -1.188686300E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.129851350E+01, 2.973142150E-02, + -1.097727140E-05, 1.827088950E-09, -1.119960260E-13, + -2.397641670E+02, -3.103959100E+01] ) + ) + # note = "X10/84" + ) + +species(name = "C5H11,t-pentyl", + atoms = " C:5 H:11 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 6.446225330E+00, -9.541777630E-03, + 1.378913620E-04, -1.692416310E-07, 6.530971270E-11, + 1.508375060E+03, 5.430917420E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.231210010E+00, 3.116883830E-02, + -1.124785860E-05, 1.820906580E-09, -1.092053950E-13, + -1.600694980E+03, -2.061419740E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C5H12,n-pentane", + atoms = " C:5 H:12 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.898367900E+00, 4.120303700E-02, + 1.231217500E-05, -3.658950100E-08, 1.504250900E-11, + -2.009150000E+04, 1.867908200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.354699800E+01, 2.842178600E-02, + -9.417464800E-06, 1.389358900E-09, -7.421260900E-14, + -2.457768000E+04, -4.702117500E+01] ) + ) + # note = "X10/85" + ) + +species(name = "C5H12,i-pentane", + atoms = " C:5 H:12 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.083288200E+00, 4.457107600E-02, + 8.238993400E-06, -3.525804700E-08, 1.578576200E-11, + -2.080753500E+04, 2.179515500E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.232778700E+01, 3.061308700E-02, + -9.841578500E-06, 1.391977600E-09, -7.033734500E-14, + -2.503749200E+04, -4.113349400E+01] ) + ) + # note = "X10/85" + ) + +species(name = "CH3C(CH3)2CH3", + atoms = " C:5 H:12 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 7.263899400E-01, 4.812547600E-02, + 1.591745800E-06, -2.669245800E-08, 1.207828200E-11, + -2.240798000E+04, 1.832721400E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.011041600E+01, 3.534956600E-02, + -1.103996700E-05, 1.477772100E-09, -6.846704200E-14, + -2.580671100E+04, -3.375698400E+01] ) + ) + # note = "X10/85" + ) + +species(name = "C6H2", + atoms = " C:6 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -5.944050260E-01, 7.466133290E-02, + -1.358479800E-04, 1.221981000E-07, -4.176967510E-11, + 7.841922040E+04, 2.211787800E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.252380600E+01, 8.785962820E-03, + -3.136631730E-06, 5.043459080E-10, -3.011097000E-14, + 7.607710370E+04, -3.885012450E+01] ) + ) + # note = "L 2/93" + ) + +species(name = "C6H5,phenyl", + atoms = " C:6 H:5 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.097250320E-01, 1.932994840E-02, + 5.940790070E-05, -9.850841470E-08, 4.254247550E-11, + 3.913456770E+04, 2.302992940E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.077022000E+01, 1.838485970E-02, + -6.699859510E-06, 1.092256200E-09, -6.584144390E-14, + 3.520403280E+04, -3.501468370E+01] ) + ) + # note = "L 1/91" + ) + +species(name = "C6D5", + atoms = " C:6 D:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.254978200E+00, 4.732876600E-02, + -8.075988300E-06, -2.990197200E-08, 1.714906000E-11, + 3.531406300E+04, 2.978014600E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.472949200E+01, 1.521053500E-02, + -5.524163500E-06, 8.798457500E-10, -5.097921700E-14, + 3.028262900E+04, -5.575496400E+01] ) + ) + # note = "L12/84" + ) + +species(name = "C6H5O,phenoxy", + atoms = " C:6 H:5 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.762964460E-02, 3.305749150E-02, + 3.603562560E-05, -7.931654260E-08, 3.643286230E-11, + 4.065393830E+03, 2.575989200E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.315151340E+01, 1.901655070E-02, + -6.946955920E-06, 1.134421720E-09, -6.846342030E-14, + -4.729682660E+02, -4.671072250E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C6H6", + atoms = " C:6 H:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.034696640E-01, 1.851423630E-02, + 7.378644090E-05, -1.181061270E-07, 5.071825270E-11, + 8.552662930E+03, 2.164817960E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.107717080E+01, 2.070678950E-02, + -7.516251000E-06, 1.222094160E-09, -7.353125130E-14, + 4.309883950E+03, -4.001169500E+01] ) + ) + # note = "L 1/91" + ) + +species(name = "C6D6", + atoms = " C:6 D:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.070121800E+00, 5.293819700E-02, + -9.607482800E-06, -3.280237200E-08, 1.901252800E-11, + 5.406898400E+03, 3.069387300E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.561986400E+01, 1.712393400E-02, + -6.201275900E-06, 9.849305800E-10, -5.689155700E-14, + -1.443305200E+02, -6.388818900E+01] ) + ) + # note = "L12/84" + ) + +species(name = "C6H5OH,phenol", + atoms = " C:6 H:6 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -2.910492290E-01, 4.085678420E-02, + 2.428235450E-05, -7.144767570E-08, 3.460030440E-11, + -1.341292310E+04, 2.687488860E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.415536740E+01, 1.993494980E-02, + -7.182171320E-06, 1.162286800E-09, -6.971458400E-14, + -1.812873420E+04, -5.179914120E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C6H10,cyclo-", + atoms = " C:6 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.366278040E+00, 1.068141580E-02, + 1.182222430E-04, -1.656799130E-07, 6.761337860E-11, + -2.482503580E+03, 1.676920330E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.177338890E+01, 3.094827430E-02, + -1.123472620E-05, 1.826320450E-09, -1.098556830E-13, + -7.202632330E+03, -4.265579330E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C6H12,1-hexene", + atoms = " C:6 H:12 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.315398300E+00, 3.709037580E-03, + 1.272557230E-04, -1.715622330E-07, 6.898245210E-11, + -8.209162390E+03, -5.957824360E-01] ), + NASA( [ 1000.00, 6000.00], [ 1.512688200E+01, 2.949751920E-02, + -1.054111890E-05, 1.721313940E-09, -1.042188530E-13, + -1.248615900E+04, -5.193517580E+01] ) + ) + # note = "X 4/87" + ) + +species(name = "C6H12,cyclo-", + atoms = " C:6 H:12 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.043487640E+00, -6.195274240E-03, + 1.766210860E-04, -2.229678090E-07, 8.636673900E-11, + -1.692028720E+04, 8.525667660E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.321475620E+01, 3.582424100E-02, + -1.321105950E-05, 2.172022540E-09, -1.317305400E-13, + -2.280919540E+04, -5.535264640E+01] ) + ) + # note = "L 6/90" + ) + +species(name = "C6H13,n-hexyl", + atoms = " C:6 H:13 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.763449540E+00, 2.162438500E-03, + 1.316740840E-04, -1.738274520E-07, 6.925150090E-11, + -5.426281150E+02, -5.917269780E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.403019770E+01, 3.471140290E-02, + -1.268361030E-05, 2.093659020E-09, -1.276279850E-13, + -4.069078900E+03, -4.396438240E+01] ) + ) + # note = "X10/83" + ) + +species(name = "C7H7,benzyl", + atoms = " C:7 H:7 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.811457110E-01, 3.851269430E-02, + 3.286183410E-05, -7.697286030E-08, 3.542302670E-11, + 2.330702100E+04, 2.354870000E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.404356270E+01, 2.349462090E-02, + -8.537869990E-06, 1.389145230E-09, -8.361836590E-14, + 1.856436970E+04, -5.166323940E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C7H8", + atoms = " C:7 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.611914000E+00, 2.111889020E-02, + 8.532214530E-05, -1.325668760E-07, 5.594061090E-11, + 4.096519760E+03, 2.029736140E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.293947500E+01, 2.669215580E-02, + -9.684201080E-06, 1.573921400E-09, -9.466704820E-14, + -6.770357690E+02, -4.672553020E+01] ) + ) + # note = "L 1/93" + ) + +species(name = "C7H8O,cresol", + atoms = " C:7 H:8 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 7.980260290E-01, 4.672849340E-02, + 2.736173620E-05, -7.758232780E-08, 3.689483500E-11, + -1.833240870E+04, 2.423031790E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.651794990E+01, 2.547216040E-02, + -9.187812490E-06, 1.487726750E-09, -8.926171800E-14, + -2.361167750E+04, -6.193862240E+01] ) + ) + # note = "mx L 1/93" + ) + +species(name = "C7H14,1-heptene", + atoms = " C:7 H:14 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.705756230E+00, 2.797880480E-03, + 1.552122600E-04, -2.090201140E-07, 8.405272240E-11, + -1.126613850E+04, -4.453418730E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.849724840E+01, 3.325759900E-02, + -1.181503300E-05, 1.925132780E-09, -1.164418860E-13, + -1.651420440E+04, -6.830951380E+01] ) + ) + # note = "X 4/87" + ) + +species(name = "C7H15,n-heptyl", + atoms = " C:7 H:15 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.028041360E+01, 7.015535660E-04, + 1.595513470E-04, -2.095931790E-07, 8.334453180E-11, + -3.603073110E+03, -1.030209400E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.641171070E+01, 4.036029010E-02, + -1.478231880E-05, 2.444145600E-09, -1.491603740E-13, + -7.763109200E+03, -5.495318280E+01] ) + ) + # note = "X10/83" + ) + +species(name = "C7H16,n-heptane", + atoms = " C:7 H:16 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.115324840E+01, -9.494154330E-03, + 1.955711810E-04, -2.497525200E-07, 9.848732130E-11, + -2.677117350E+04, -1.590961100E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.853547040E+01, 3.914204680E-02, + -1.380302680E-05, 2.224038740E-09, -1.334525800E-13, + -3.195007830E+04, -7.019028400E+01] ) + ) + # note = "X10/85" + ) + +species(name = "C8H8,styrene", + atoms = " C:8 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.181757690E+00, 3.348760250E-02, + 6.923662530E-05, -1.244904190E-07, 5.493847350E-11, + 1.560390620E+04, 2.266249800E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.588133340E+01, 2.683740550E-02, + -9.902445610E-06, 1.637591410E-09, -9.984489720E-14, + 1.008478040E+04, -6.094193190E+01] ) + ) + # note = "X 4/89" + ) + +species(name = "C8H10,ethylbenz", + atoms = " C:8 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.515349630E+00, 1.781456810E-02, + 1.189340120E-04, -1.756397640E-07, 7.320610990E-11, + 1.020385950E+03, 1.415396290E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.557607590E+01, 3.230645790E-02, + -1.190027230E-05, 1.967925420E-09, -1.199111640E-13, + -4.411575160E+03, -5.910438770E+01] ) + ) + # note = "X10/86" + ) + +species(name = "C8H16,1-octene", + atoms = " C:8 H:16 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.014878600E+01, 1.251075380E-03, + 1.852527360E-04, -2.490941620E-07, 1.002503950E-10, + -1.432674530E+04, -8.507744180E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.201340860E+01, 3.679721740E-02, + -1.298304820E-05, 2.108546370E-09, -1.272941580E-13, + -2.061098350E+04, -8.553371700E+01] ) + ) + # note = "X 4/87" + ) + +species(name = "C8H17,n-octyl", + atoms = " C:8 H:17 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.180825180E+01, -8.503481360E-04, + 1.876977000E-04, -2.456907020E-07, 9.758130270E-11, + -6.664504420E+03, -1.472984870E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.879680430E+01, 4.600485230E-02, + -1.687901260E-05, 2.794224770E-09, -1.706638860E-13, + -1.145925780E+04, -6.596222060E+01] ) + ) + # note = "X10/83" + ) + +species(name = "C8H18,isooctane", + atoms = " C:8 H:18 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 8.157373380E-01, 7.326439590E-02, + 1.783006880E-05, -6.935896200E-08, 3.216293820E-11, + -3.047728620E+04, 2.415099940E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.598992730E+01, 5.531847900E-02, + -1.952670720E-05, 3.117791720E-09, -1.853125770E-13, + -3.587579730E+04, -6.011614140E+01] ) + ) + # note = "X 4/85" + ) + +species(name = "C8H18,n-octane", + atoms = " C:8 H:18 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.252449080E+01, -1.010183650E-02, + 2.219915950E-04, -2.848624200E-07, 1.124096240E-10, + -2.984330340E+04, -1.971085540E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.217554070E+01, 4.244261610E-02, + -1.491611030E-05, 2.403766730E-09, -1.443590370E-13, + -3.610309440E+04, -8.808544570E+01] ) + ) + # note = "X 4/85" + ) + +species(name = "C9H19,n-nonyl", + atoms = " C:9 H:19 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.875648500E+00, 7.579278900E-02, + 1.346243100E-05, -6.408839700E-08, 2.869417200E-11, + -8.683453100E+03, 2.426224100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.919526700E+01, 5.543924900E-02, + -2.143660100E-05, 3.788514400E-09, -2.500298700E-13, + -1.437371100E+04, -6.605628600E+01] ) + ) + # note = "X10/83" + ) + +species(name = "C10H8,naphthale", + atoms = " C:10 H:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.049193260E+00, 4.629706110E-02, + 7.075922030E-05, -1.384081860E-07, 6.204757480E-11, + 1.598463880E+04, 3.021215710E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.861298990E+01, 3.044941410E-02, + -1.112247990E-05, 1.816154060E-09, -1.096012240E-13, + 8.915529440E+03, -8.002304790E+01] ) + ) + # note = "L 8/93" + ) + +species(name = "C10H21,n-decyl", + atoms = " C:10 H:21 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.089700700E+00, 8.411794900E-02, + 1.590183800E-05, -7.238793400E-08, 3.226692500E-11, + -1.161494100E+04, 2.528119290E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.132212800E+01, 6.157352400E-02, + -2.384948300E-05, 4.220911600E-09, -2.788930700E-13, + -1.796780900E+04, -7.564378010E+01] ) + ) + # note = "X10/83" + ) + +species(name = "C12H9,o-bipheny", + atoms = " C:12 H:9 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.076491560E-01, 5.427978410E-02, + 7.125147010E-05, -1.444044900E-07, 6.485005750E-11, + 4.853498370E+04, 2.819825150E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.256934210E+01, 3.456193860E-02, + -1.270207880E-05, 2.081118270E-09, -1.258494800E-13, + 4.059050910E+04, -9.577923900E+01] ) + ) + # note = "L12/84" + ) + +species(name = "O-C12D9", + atoms = " C:12 D:9 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -7.329939600E-01, 8.983689500E-02, + -1.373127500E-05, -5.942702000E-08, 3.370243000E-11, + 4.294309400E+04, 3.004195600E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.012319900E+01, 2.832825500E-02, + -1.036654000E-05, 1.659333800E-09, -9.652711600E-14, + 3.320778900E+04, -1.351913070E+02] ) + ) + # note = "L12/84" + ) + +species(name = "C12H10,bipheny", + atoms = " C:12 H:10 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.945661860E-01, 5.352643680E-02, + 8.549967010E-05, -1.639036060E-07, 7.299772170E-11, + 1.900204310E+04, 2.721512710E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.289648920E+01, 3.684525700E-02, + -1.350162700E-05, 2.208028080E-09, -1.333582230E-13, + 1.073944990E+04, -1.005101480E+02] ) + ) + # note = "L12/84" + ) + +species(name = "C12D10", + atoms = " C:12 D:10 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.579348600E+00, 9.505957400E-02, + -1.453207100E-05, -6.264559700E-08, 3.553007900E-11, + 1.313742200E+04, 3.152984100E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.090506000E+01, 3.034998800E-02, + -1.109504800E-05, 1.775581000E-09, -1.033232700E-13, + 2.883445300E+03, -1.424389370E+02] ) + ) + # note = "L12/84" + ) + +species(name = "Jet-A(g)", + atoms = " C:12 H:23 ", + thermo = ( + NASA( [ 273.15, 1000.00], [ 2.086921700E+00, 1.331496500E-01, + -8.115745200E-05, 2.940928600E-08, -6.519521300E-12, + -3.591281400E+04, 2.735529720E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.488020100E+01, 7.825004800E-02, + -3.155097300E-05, 5.787890000E-09, -3.982796800E-13, + -4.311068400E+04, -9.365524680E+01] ) + ) + # note = "L 6/88" + ) + +species(name = "Ca", + atoms = " Ca:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.063892790E+04, 4.384548330E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.927076230E+00, 1.349091670E-03, + -1.075158620E-06, 3.254578650E-10, -2.646715380E-14, + 2.081962100E+04, 7.428783980E+00] ) + ) + # note = "L 3/93" + ) + +species(name = "Ca+", + atoms = " Ca:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 9.232421060E+04, 5.077675030E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.642214380E+00, -1.605173590E-04, + -2.708439660E-08, 5.135224960E-11, -5.964870480E-15, + 9.225963790E+04, 4.253726280E+00] ) + ) + # note = "J 9/83" + ) + +species(name = "CaBr", + atoms = " Ca:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.851187700E+00, 3.027148100E-03, + -5.509780700E-06, 4.676457100E-09, -1.495996000E-12, + -7.183723900E+03, 7.778032890E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.321736300E+00, 4.090367400E-04, + -2.454153100E-07, 6.902687400E-11, -5.368419600E-15, + -7.246273200E+03, 5.676680590E+00] ) + ) + # note = "J12/74" + ) + +species(name = "CaBr2", + atoms = " Ca:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.605715700E+00, 3.605889200E-03, + -5.831465000E-06, 4.263480100E-09, -1.166727800E-12, + -4.838296300E+04, -6.310522810E-01] ), + NASA( [ 1000.00, 5000.00], [ 7.415163900E+00, 9.654901300E-05, + -4.246381600E-08, 8.228686500E-12, -5.861705700E-16, + -4.853682400E+04, -4.480801620E+00] ) + ) + # note = "J 6/74" + ) + +species(name = "CaCL", + atoms = " Ca:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.673051500E+00, 3.314416400E-03, + -5.168243500E-06, 3.711126700E-09, -9.968703100E-13, + -1.378414400E+04, 7.336796410E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.306711600E+00, 4.008496300E-04, + -2.331366100E-07, 6.392179700E-11, -4.866238300E-15, + -1.389265600E+04, 4.373374210E+00] ) + ) + # note = "J 6/70" + ) + +species(name = "CaCL2", + atoms = " Ca:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.161336300E+00, 5.306042900E-03, + -8.464946300E-06, 6.112889700E-09, -1.652236200E-12, + -5.872293500E+04, -1.448297350E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.365001400E+00, 1.532710800E-04, + -6.727528500E-08, 1.301413100E-11, -9.256796800E-16, + -5.895473100E+04, -7.188520850E+00] ) + ) + # note = "J 6/70" + ) + +species(name = "CaF", + atoms = " Ca:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.050899000E+00, 5.154943900E-03, + -7.350829600E-06, 4.787645800E-09, -1.152315500E-12, + -3.379234500E+04, 8.988008870E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.198862100E+00, 4.924409300E-04, + -2.610212300E-07, 6.479163500E-11, -4.730395100E-15, + -3.402112900E+04, 3.463147570E+00] ) + ) + # note = "J12/68" + ) + +species(name = "CaF2", + atoms = " Ca:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.230815200E+00, 1.025580500E-02, + -1.544434500E-05, 1.054679100E-08, -2.684391600E-12, + -9.595526100E+04, 6.367806530E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.654343100E+00, 3.905269200E-04, + -1.708107000E-07, 3.295284000E-11, -2.338774100E-15, + -9.644527900E+04, -5.310721170E+00] ) + ) + # note = "J12/68" + ) + +species(name = "CaI", + atoms = " Ca:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.023910100E+00, 2.255997800E-03, + -4.093983300E-06, 3.484005100E-09, -1.116299600E-12, + -1.877051100E+03, 7.990310650E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.319847100E+00, 4.346669100E-04, + -2.744192000E-07, 8.008044100E-11, -6.545160800E-15, + -1.906480400E+03, 6.714802350E+00] ) + ) + # note = "J 6/74" + ) + +species(name = "CaI2", + atoms = " Ca:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.564172700E+00, 4.268465000E-03, + -7.924758300E-06, 6.720560000E-09, -2.148546100E-12, + -3.313828200E+04, 1.022092280E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.423866500E+00, 8.855535800E-05, + -3.984689300E-08, 7.891835700E-12, -5.735265800E-16, + -3.328775200E+04, -2.978445420E+00] ) + ) + # note = "J 6/74" + ) + +species(name = "CaO", + atoms = " Ca:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.671860200E+00, 6.432402500E-03, + -9.572703000E-06, 6.762042400E-09, -1.817304900E-12, + 4.273453100E+03, 9.654226790E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.174586500E+00, -1.064323400E-02, + 7.696896800E-06, -1.907044300E-09, 1.550923100E-13, + 2.324804100E+03, -2.442758250E+01] ) + ) + # note = "J12/74" + ) + +species(name = "CaOH", + atoms = " Ca:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.100485200E+00, 1.869515900E-02, + -3.350664400E-05, 2.802563800E-08, -8.799268900E-12, + -2.453091500E+04, 1.203876350E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.275475900E+00, 1.802562000E-03, + -6.843564800E-07, 1.306019600E-10, -8.913158000E-15, + -2.498468100E+04, -2.311085410E+00] ) + ) + # note = "J12/75" + ) + +species(name = "CaOH+", + atoms = " Ca:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.156646000E+00, 1.851867600E-02, + -3.326822200E-05, 2.787222000E-08, -8.760801000E-12, + 4.316839500E+04, 1.109276610E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.405108700E+00, 1.524500300E-03, + -4.783080800E-07, 7.134721600E-11, -4.129834900E-15, + 4.268593300E+04, -3.669811290E+00] ) + ) + # note = "J12/75" + ) + +species(name = "CaO2H2", + atoms = " Ca:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.322216600E+00, 3.751568200E-02, + -6.799651300E-05, 5.729026300E-08, -1.808147500E-11, + -7.532286300E+04, 1.248796110E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.858203600E+00, 2.994190900E-03, + -9.321929900E-07, 1.378838600E-10, -7.911198500E-15, + -7.627949600E+04, -1.713930390E+01] ) + ) + # note = "J12/75" + ) + +species(name = "CaS", + atoms = " Ca:1 S:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.225860080E+00, 5.306404180E-03, + -8.765276390E-06, 6.426010540E-09, -1.615290350E-12, + 1.373348660E+04, 8.348920800E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.357077520E+00, -4.183925130E-03, + 4.682913750E-06, -1.407250750E-09, 1.288926680E-13, + 1.347418250E+04, -1.431732100E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "Ca2", + atoms = " Ca:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.945901100E+00, 4.306213370E-03, + -3.233842270E-05, 4.516408110E-08, -1.935010710E-11, + 3.961754920E+04, 2.545113150E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.167001990E+00, -6.168144440E-04, + 2.035409600E-07, -2.771281800E-11, 1.650030460E-15, + 4.043823800E+04, 1.371135090E+01] ) + ) + # note = "J 9/83" + ) + +species(name = "CL", + atoms = " Cl:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.260624800E+00, 1.541543990E-03, + -6.802836220E-07, -1.599729750E-09, 1.154166360E-12, + 1.385529860E+04, 6.570207990E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.946583580E+00, -3.859854080E-04, + 1.361393880E-07, -2.170329230E-11, 1.287510250E-15, + 1.369703270E+04, 3.113301360E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "CL+", + atoms = " Cl:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.714353960E+00, 6.624892480E-03, + -1.355230860E-05, 1.149997600E-08, -3.587605660E-12, + 1.651238090E+05, 8.917395520E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.122860720E+00, -6.366240370E-04, + 2.483379200E-07, -3.725078490E-11, 1.984336860E-15, + 1.649122340E+05, 2.497313490E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "CL-", + atoms = " Cl:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.888341320E+04, 4.200629270E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -2.888341320E+04, 4.200629270E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "CLCN", + atoms = " Cl:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.339085400E+00, 1.039746800E-02, + -1.370465000E-05, 9.506196200E-09, -2.592526000E-12, + 1.523753900E+04, 6.831032550E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.492002100E+00, 2.098724800E-03, + -7.741591400E-07, 1.382388200E-10, -9.233486400E-15, + 1.474916100E+04, -3.730462450E+00] ) + ) + # note = "J 6/66" + ) + +species(name = "CLF", + atoms = " Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.644556900E+00, 6.248125600E-03, + -9.035435100E-06, 6.340057500E-09, -1.743537200E-12, + -7.046910600E+03, 9.630428000E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.848623300E+00, 3.173327900E-03, + -2.052338700E-06, 5.216273300E-10, -3.747226200E-14, + -6.927882400E+03, 9.316996600E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "CLF3", + atoms = " Cl:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.894911900E+00, 2.471855000E-02, + -3.513932300E-05, 2.255959100E-08, -5.326197800E-12, + -2.079864000E+04, 1.138169210E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.953596700E+00, 1.172216300E-03, + -5.089618800E-07, 9.756348900E-11, -6.885873100E-15, + -2.207596800E+04, -1.808155490E+01] ) + ) + # note = "J 9/65" + ) + +species(name = "CLO", + atoms = " Cl:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.817936400E+00, 4.453133300E-03, + -4.412489300E-06, 1.592094200E-09, -1.448624200E-14, + 1.117139700E+04, 1.005798230E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.091261900E+00, 5.000312600E-04, + -1.877820600E-07, 3.509767100E-11, -2.420503800E-15, + 1.085322300E+04, 3.618892440E+00] ) + ) + # note = "J 6/61" + ) + +species(name = "CLO2", + atoms = " Cl:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.293386140E+00, 6.193113370E-03, + 1.056853720E-06, -8.161912540E-09, 4.346946000E-12, + 1.137607760E+04, 1.030170240E+01] ), + NASA( [ 1000.00, 6000.00], [ 5.766476810E+00, 1.411325060E-03, + -5.437140310E-07, 1.007342950E-10, -6.435437620E-15, + 1.063241820E+04, -2.865600820E+00] ) + ) + # note = "L 7/93" + ) + +species(name = "CL2", + atoms = " Cl:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.736381140E+00, 7.835257000E-03, + -1.451049630E-05, 1.257308340E-08, -4.132471450E-12, + -1.058801140E+03, 9.445558790E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.747275080E+00, -4.885817100E-04, + 2.684448710E-07, -2.434760830E-11, -1.036831480E-15, + -1.511018620E+03, -3.445513050E-01] ) + ) + # note = "TPIS89" + ) + +species(name = "CL2O", + atoms = " Cl:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.254523800E+00, 1.279944900E-02, + -1.788246000E-05, 1.126438300E-08, -2.596425200E-12, + 9.165742300E+03, 1.057121060E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.434006200E+00, 6.272880900E-04, + -2.693325200E-07, 5.107639400E-11, -3.569154500E-15, + 8.486053000E+03, -4.936724070E+00] ) + ) + # note = "J12/65" + ) + +species(name = "Cr", + atoms = " Cr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.502593710E+00, -2.765601700E-05, + 1.039740950E-07, -1.619964060E-10, 8.893919850E-14, + 4.706002370E+04, 6.711072100E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.084977520E+00, -1.447036830E-03, + 1.084921940E-06, -2.356436350E-10, 1.863558160E-14, + 4.689282020E+04, 3.659139140E+00] ) + ) + # note = "J 6/79" + ) + +species(name = "CrN", + atoms = " Cr:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.930463600E+00, 3.037704200E-03, + -1.271396400E-06, -1.178124900E-09, 8.555134900E-13, + 5.974420300E+04, 1.019188120E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.864960200E+00, 8.516045600E-04, + -4.407075800E-07, 1.066760100E-10, -8.373142200E-15, + 5.947743700E+04, 5.295067570E+00] ) + ) + # note = "J12/73" + ) + +species(name = "CrO", + atoms = " Cr:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.841499600E+00, 4.095335800E-03, + -3.577646300E-06, 8.171043900E-10, 2.407200900E-13, + 2.164606700E+04, 1.151799220E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.013981800E+00, 6.270024500E-04, + -2.795679400E-07, 6.000310000E-11, -4.405791600E-15, + 2.134669300E+04, 5.551715100E+00] ) + ) + # note = "J12/73" + ) + +species(name = "CrO2", + atoms = " Cr:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.301264500E+00, 8.162585700E-03, + -5.890768000E-06, 1.617085600E-11, 1.081626700E-12, + -1.035356900E+04, 1.139911380E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.849999800E+00, 1.272510100E-03, + -5.492054800E-07, 1.049749100E-10, -7.399548600E-15, + -1.104218300E+04, -1.744976320E+00] ) + ) + # note = "J12/73" + ) + +species(name = "CrO3", + atoms = " Cr:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.907285800E+00, 2.304960800E-02, + -2.650129400E-05, 1.286241300E-08, -1.838199100E-12, + -3.660868000E+04, 1.534514150E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.162894600E+00, 2.045083900E-03, + -8.859413100E-07, 1.697628200E-10, -1.198776500E-14, + -3.809255700E+04, -1.589589450E+01] ) + ) + # note = "J12/73" + ) + +species(name = "Cs", + atoms = " Cs:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500045540E+00, -4.668333560E-07, + 1.680050610E-09, -2.482180290E-12, 1.277121900E-15, + 8.455404360E+03, 6.875735390E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.820233150E+00, -3.348403270E-04, + -9.829157090E-08, 1.275643690E-10, -1.461192710E-14, + 8.306393540E+03, 5.008940420E+00] ) + ) + # note = "L 3/93" + ) + +species(name = "Cs+", + atoms = " Cs:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 5.438739890E+04, 6.182757560E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 5.438739890E+04, 6.182757560E+00] ) + ) + # note = "J12/83" + ) + +species(name = "CsCL", + atoms = " Cs:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.182303000E+00, 1.375955300E-03, + -2.058693300E-06, 1.483647400E-09, -3.976454600E-13, + -3.017792700E+04, 6.638487880E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.479845500E+00, 1.094916400E-04, + -3.998991400E-09, 2.064199500E-13, 2.218464000E-17, + -3.023580900E+04, 5.217317080E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "CsF", + atoms = " Cs:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.744987900E+00, 3.010051600E-03, + -4.588381600E-06, 3.217969400E-09, -8.378601700E-13, + -4.409069600E+04, 7.194873150E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.437330900E+00, 1.271500000E-04, + -2.054765000E-08, 2.981335700E-12, -1.477424500E-16, + -4.422799500E+04, 3.873555850E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "CsO", + atoms = " Cs:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.985741900E+00, 2.127925100E-03, + -3.217025500E-06, 2.276429500E-09, -5.972197600E-13, + 6.289894000E+03, 7.516022590E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.466028200E+00, 1.156323200E-04, + -5.998918700E-09, 1.317669900E-13, 5.763974500E-17, + 6.195030900E+03, 5.214548690E+00] ) + ) + # note = "J12/68" + ) + +species(name = "CsOH", + atoms = " Cs:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.548600300E+00, 7.961233300E-03, + -1.332649700E-05, 1.031423400E-08, -2.897377700E-12, + -3.281089000E+04, 2.861879690E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.700564900E+00, 1.182038400E-03, + -3.193909400E-07, 3.864291700E-11, -1.663563600E-15, + -3.291920500E+04, -2.118700210E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "CsOH+", + atoms = " Cs:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.848715800E+00, 6.890834600E-03, + -1.183932800E-05, 9.433537200E-09, -2.722268500E-12, + 5.167816700E+04, 3.084848510E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.729256300E+00, 1.157132400E-03, + -3.104443100E-07, 3.709629100E-11, -1.550946300E-15, + 5.162648300E+04, -5.764822180E-01] ) + ) + # note = "J12/71" + ) + +species(name = "Cs2", + atoms = " Cs:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.745882250E+00, -2.638628190E-03, + 1.141393050E-05, -1.604305000E-08, 6.561122940E-12, + 1.154448560E+04, 7.606792720E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.866451780E+00, -3.990143260E-03, + 1.319480840E-06, -1.634131860E-10, 6.881259080E-15, + 1.080542930E+04, -4.297494650E+00] ) + ) + # note = "J12/83" + ) + +species(name = "Cs2CL2", + atoms = " Cs:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.295264200E+00, 2.850560000E-03, + -4.557601900E-06, 3.255773100E-09, -8.606736200E-13, + -8.222286200E+04, -7.518353320E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.942437500E+00, 6.265930300E-05, + -2.633109700E-08, 4.891214200E-12, -3.355415200E-16, + -8.234585500E+04, -1.059806040E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "Cs2F2", + atoms = " Cs:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.442556100E+00, 6.492100100E-03, + -1.083275700E-05, 8.179105400E-09, -2.317397800E-12, + -1.097816500E+05, -7.248244850E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.879372500E+00, 1.267482900E-04, + -5.090525300E-08, 8.971176200E-12, -5.809096000E-16, + -1.100505700E+05, -1.405482170E+01] ) + ) + # note = "J 6/68" + ) + +species(name = "Cs2O", + atoms = " Cs:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.755363900E+00, 4.911607300E-03, + -7.707251800E-06, 5.415695700E-09, -1.408089800E-12, + -1.294682900E+04, 4.300154610E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.897946700E+00, 1.016509800E-04, + -3.806206200E-08, 6.146639300E-12, -3.575821600E-16, + -1.316998900E+04, -1.165916890E+00] ) + ) + # note = "J12/68" + ) + +species(name = "Cs2O2H2", + atoms = " Cs:2 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.522819100E+00, 7.907837200E-03, + 3.543029900E-06, -1.045632800E-08, 4.801403200E-12, + -8.533841200E+04, -1.906633110E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.580936200E+00, 5.326050900E-03, + -1.878054500E-06, 3.092592500E-10, -1.942953300E-14, + -8.602583900E+04, -1.321459430E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "Cs2SO4", + atoms = " Cs:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.296538500E+00, 4.485430000E-02, + -6.098792300E-05, 4.051638800E-08, -1.067349500E-11, + -1.378255900E+05, 1.340963710E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.541904500E+01, 4.052765000E-03, + -1.791034100E-06, 3.502465300E-10, -2.521573600E-14, + -1.403677500E+05, -4.149218490E+01] ) + ) + # note = "J 6/79" + ) + +species(name = "Cu", + atoms = " Cu:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500065970E+00, -6.773064120E-07, + 2.441168180E-09, -3.613147580E-12, 1.863032240E-15, + 3.985833580E+04, 5.768846040E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.135225950E+00, -1.133375470E-03, + 5.720230410E-07, -7.663261770E-11, 2.838814660E-15, + 3.961772400E+04, 2.253319440E+00] ) + ) + # note = "J 9/84" + ) + +species(name = "Cu+", + atoms = " Cu:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.302637880E+05, 1.249412090E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.499817540E+00, 3.579221460E-07, + -2.217698480E-10, 4.869379180E-14, -2.390196100E-18, + 1.302638540E+05, 1.249511860E+01] ) + ) + # note = "J 9/84" + ) + +species(name = "CuCL", + atoms = " Cu:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.349160000E+00, 5.102830200E-03, + -9.127800200E-06, 7.601415500E-09, -2.398448900E-12, + 9.796756200E+03, 8.269473040E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.390298800E+00, 1.834948400E-04, + -5.711070300E-08, 1.129332100E-11, -8.197552000E-16, + 9.609726600E+03, 3.392165140E+00] ) + ) + # note = "J 3/66" + ) + +species(name = "CuF", + atoms = " Cu:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.765450500E+00, 6.851180500E-03, + -1.133881900E-05, 8.909657800E-09, -2.692769200E-12, + -2.554856500E+03, 9.872774110E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.122739900E+00, 6.316346300E-04, + -3.347282000E-07, 8.083736700E-11, -5.783481700E-15, + -2.800595300E+03, 3.485645710E+00] ) + ) + # note = "J12/77" + ) + +species(name = "CuF2", + atoms = " Cu:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.110769600E+00, 1.432580700E-02, + -2.281174300E-05, 1.727889300E-08, -5.072697700E-12, + -3.350045300E+04, 1.099956980E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.818423600E+00, -1.649790800E-04, + 2.029177400E-07, -2.545311300E-11, 1.206573200E-16, + -3.432274400E+04, -7.128629210E+00] ) + ) + # note = "J12/77" + ) + +species(name = "CuO", + atoms = " Cu:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.709352000E+00, 3.196505900E-03, + -5.297010900E-06, 4.216423800E-09, -1.289185500E-12, + 3.562747000E+04, 6.331400790E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.272362500E+00, 4.471327600E-04, + -2.395697900E-07, 6.040531600E-11, -4.245601600E-15, + 3.553534900E+04, 3.727018890E+00] ) + ) + # note = "J12/77" + ) + +species(name = "Cu2", + atoms = " Cu:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.924435800E+00, 2.727494900E-03, + -4.919495600E-06, 4.182196500E-09, -1.339353300E-12, + 5.711918700E+04, 6.083808290E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.423973400E+00, 2.024895200E-04, + -6.448979300E-08, 1.406541200E-11, -7.602049400E-16, + 5.703813100E+04, 3.785355790E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "Cu3CL3", + atoms = " Cu:3 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.144290000E+01, 2.069080600E-02, + -3.826400300E-05, 3.234105300E-08, -1.030988400E-11, + -3.515161000E+04, -1.826878650E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.562612700E+01, 4.337383300E-04, + -1.946700600E-07, 3.846693800E-11, -2.789970000E-15, + -3.588185300E+04, -3.775233450E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "D", + atoms = " D:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.592125960E+04, 5.917158270E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.592125960E+04, 5.917158270E-01] ) + ) + # note = "J 3/82" + ) + +species(name = "D+", + atoms = " D:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.845119640E+05, -1.018389040E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.845119640E+05, -1.018389040E-01] ) + ) + # note = "J 3/82" + ) + +species(name = "D-", + atoms = " D:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.642376670E+04, -1.010239120E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.642376670E+04, -1.010239120E-01] ) + ) + # note = "J 3/82" + ) + +species(name = "DCL", + atoms = " D:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.826921300E+00, -2.501332600E-03, + 6.046612400E-06, -4.483751900E-09, 1.136764100E-12, + -1.230192100E+04, 1.891777840E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.957203400E+00, 1.591816000E-03, + -6.332027200E-07, 1.175565800E-10, -8.159991100E-15, + -1.217351500E+04, 5.898796740E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "DF", + atoms = " D:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.498138600E+00, 2.217679300E-04, + -1.332024000E-06, 2.561949300E-09, -1.151224100E-12, + -3.418323200E+04, 1.655078610E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.726462000E+00, 1.509129300E-03, + -5.170493800E-07, 8.548537100E-11, -5.419602400E-15, + -3.393694000E+04, 5.829819810E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "DOCL", + atoms = " D:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.479041800E+00, 1.084589600E-02, + -1.522830500E-05, 1.143731400E-08, -3.420492500E-12, + -1.051809200E+04, 1.212671070E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.435076100E+00, 2.532238700E-03, + -1.031233100E-06, 1.900545400E-10, -1.268238400E-14, + -1.091940200E+04, 2.727159690E+00] ) + ) + # note = "J 3/79" + ) + +species(name = "D2", + atoms = " D:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.495469740E+00, 2.583481590E-04, + -1.317625020E-06, 2.429120180E-09, -1.059824980E-12, + -1.046315800E+03, -2.519053850E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.730689290E+00, 1.480047810E-03, + -4.793148480E-07, 7.894962740E-11, -4.883808230E-15, + -7.952675040E+02, 1.642662430E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "D2+", + atoms = " D:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.807514000E+00, -3.110626000E-03, + 1.016298200E-05, -9.836327100E-09, 3.265985300E-12, + 1.791709600E+05, -2.286628250E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.589180000E+00, 8.921465100E-04, + -2.426448400E-07, 5.758440900E-11, -6.738056000E-15, + 1.790375200E+05, -2.058178850E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "D2-", + atoms = " D:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.214480000E+00, 7.835816500E-04, + 3.589268500E-06, -5.239419000E-09, 2.087136500E-12, + 2.729300900E+04, 3.681558370E-01] ), + NASA( [ 1000.00, 5000.00], [ 3.753104200E+00, 9.801899100E-04, + -3.638796000E-07, 7.070048200E-11, -5.067427200E-15, + 2.706470800E+04, -2.819551720E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "D2O", + atoms = " D:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.854113100E+00, 1.471228800E-04, + 3.006900600E-06, -1.774762800E-09, 2.301886200E-13, + -3.115165100E+04, 1.733419840E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.726459500E+00, 3.984517300E-03, + -1.493262600E-06, 2.634977200E-10, -1.764955700E-14, + -3.090263800E+04, 7.318201340E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "D2S", + atoms = " D:2 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.807082400E+00, 3.759631100E-04, + 5.753079900E-06, -5.348574000E-09, 1.405408300E-12, + -4.066121900E+03, 3.879287490E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.666290100E+00, 3.499226400E-03, + -1.420728400E-06, 2.668563900E-10, -1.868473900E-14, + -4.214730800E+03, 3.799699690E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "F", + atoms = " F:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.419514290E+00, 2.941327930E-03, + -8.927992460E-06, 9.920609350E-09, -3.798600440E-12, + 8.757323510E+03, 4.747710420E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.667495410E+00, -1.666935480E-04, + 6.424484570E-08, -1.085887580E-11, 6.708457550E-16, + 8.788953500E+03, 4.007291980E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "F+", + atoms = " F:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.084210840E+00, -9.000621390E-04, + -1.645991740E-07, 1.101213360E-09, -5.562709200E-13, + 2.116191010E+05, 2.145976530E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.688348610E+00, -1.761829610E-04, + 6.069406390E-08, -8.915300670E-12, 5.475521670E-16, + 2.117440950E+05, 4.274808380E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "F-", + atoms = " F:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.142415220E+04, 3.264882850E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -3.142415220E+04, 3.264882850E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "FCN", + atoms = " F:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.251694100E+00, 8.307314400E-03, + -8.366635800E-06, 4.412564400E-09, -9.088242300E-13, + 3.055119800E+03, 6.442147740E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.089855700E+00, 2.417068400E-03, + -9.768276600E-07, 1.781344200E-10, -1.211856700E-14, + 2.578078100E+03, -2.872780960E+00] ) + ) + # note = "J 6/69" + ) + +species(name = "FO", + atoms = " F:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.968002400E+00, 2.648339300E-03, + -3.736800500E-07, -1.900622500E-09, 1.061428300E-12, + 1.208784400E+04, 8.393497470E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.919277400E+00, 7.044234500E-04, + -2.664820400E-07, 4.961759900E-11, -3.368857100E-15, + 1.179819300E+04, 3.328758370E+00] ) + ) + # note = "J12/66" + ) + +species(name = "FO2", + atoms = " F:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.780507300E+00, 6.817459500E-03, + -5.813360500E-06, 1.756250400E-09, 6.775743000E-14, + 1.276946800E+02, 7.835682970E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.704093500E+00, 1.386288900E-03, + -5.835537400E-07, 1.093721400E-10, -7.586918100E-15, + -3.967867800E+02, -2.067917330E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "F2", + atoms = " F:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.208324150E+00, 1.259191790E-03, + 3.897479790E-06, -7.221849840E-09, 3.318378620E-12, + -1.034257940E+03, 5.619035890E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.861662190E+00, 7.883676790E-04, + -1.819829400E-07, -9.174365600E-12, 2.651934720E-15, + -1.232386550E+03, 2.041198550E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "F2O", + atoms = " F:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.610921900E+00, 1.223128000E-02, + -1.344141500E-05, 5.890941200E-09, -5.748717500E-13, + 1.734719600E+03, 1.178788180E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.005187100E+00, 1.102840200E-03, + -4.754793700E-07, 9.068314500E-11, -6.375709800E-15, + 9.190606500E+02, -5.222105810E+00] ) + ) + # note = "J12/69" + ) + +species(name = "FS2F,fluorodisu", + atoms = " F:2 S:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.226646820E+00, 3.281252040E-02, + -5.927970210E-05, 5.023312800E-08, -1.625990190E-11, + -4.215380190E+04, 1.512394280E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.114914040E+00, 9.255497880E-04, + -3.669728590E-07, 6.314898990E-11, -3.948777640E-15, + -4.344485610E+04, -1.736857740E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "Fe", + atoms = " Fe:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.707444280E+00, 1.063392240E-02, + -2.761181710E-05, 2.809178540E-08, -1.012198240E-11, + 4.918437250E+04, 9.808110990E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.261979700E+00, -1.055825330E-03, + 5.929069980E-07, -1.071894550E-10, 7.480644020E-15, + 4.909698730E+04, 3.524438940E+00] ) + ) + # note = "J 3/78" + ) + +species(name = "Fe+", + atoms = " Fe:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.764181060E+00, 2.869482380E-03, + -7.612356510E-06, 8.181833340E-09, -3.117921990E-12, + 1.411590390E+05, 5.539979810E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.336023990E+00, -2.725492620E-04, + 8.054403440E-09, 1.512290890E-11, -1.433765950E-15, + 1.410364550E+05, 2.864769680E+00] ) + ) + # note = "J 6/84" + ) + +species(name = "Fe-", + atoms = " Fe:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.521745100E+00, 9.796731930E-03, + -2.110786700E-05, 1.848209030E-08, -5.895371340E-12, + 4.657102150E+04, 1.086833850E+01] ), + NASA( [ 1000.00, 6000.00], [ 3.363105860E+00, -8.293750420E-04, + 3.124262410E-07, -5.200683550E-11, 3.178752410E-15, + 4.635643070E+04, 2.768024210E+00] ) + ) + # note = "J 6/84" + ) + +species(name = "FeC5O5", + atoms = " Fe:1 C:5 O:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.606546000E+00, 7.504212900E-02, + -1.220127500E-04, 1.005537800E-07, -3.226097300E-11, + -9.195143800E+04, -2.576006210E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.116402100E+01, 1.033310300E-02, + -4.331093600E-06, 8.204749700E-10, -5.777387400E-14, + -9.488893400E+04, -7.207365200E+01] ) + ) + # note = "J 3/78" + ) + +species(name = "FeCL", + atoms = " Fe:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.788582600E+00, 4.367801100E-03, + -6.692232800E-06, 4.170745400E-09, -8.468677300E-13, + 2.892009700E+04, 8.353367560E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.694066900E+00, 1.160407800E-04, + -2.084017500E-08, -1.762655600E-12, 5.231381400E-16, + 2.879034400E+04, 4.193555060E+00] ) + ) + # note = "J 6/65" + ) + +species(name = "FeCL2", + atoms = " Fe:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.455750500E+00, 7.963292700E-03, + -1.259396400E-05, 8.997673400E-09, -2.324236300E-12, + -1.884429700E+04, 3.022842190E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.949260100E+00, 5.337164100E-04, + 7.022120700E-08, -6.147549000E-11, 6.793314300E-15, + -1.904583200E+04, -3.759514410E+00] ) + ) + # note = "J12/70" + ) + +species(name = "FeCL3", + atoms = " Fe:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.561487300E+00, 9.733824900E-03, + -1.554330500E-05, 1.118636800E-08, -3.002299800E-12, + -3.301362400E+04, -3.985832030E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.777110600E+00, 2.442136200E-04, + -1.031399400E-07, 1.920742600E-11, -1.317929900E-15, + -3.343957000E+04, -1.454914630E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "FeO", + atoms = " Fe:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.824525600E+00, 4.304920700E-03, + -4.108478100E-06, 1.320118900E-09, 7.131621700E-14, + 2.919403500E+04, 1.189117600E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.204981700E+00, 2.683845200E-04, + -8.942673600E-08, 3.185591100E-11, -3.392254300E-15, + 2.882917000E+04, 4.830431590E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "Fe(OH)2", + atoms = " Fe:1 O:2 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ -1.676677340E+00, 6.169314640E-02, + -1.207389950E-04, 1.098140260E-07, -3.728568310E-11, + -4.112897080E+04, 2.967717100E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.962620120E+00, 4.201373420E-03, + -1.610174430E-06, 2.683470760E-10, -1.634973050E-14, + -4.279943580E+04, -1.869123670E+01] ) + ) + # note = "J12/66" + ) + +species(name = "Fe2CL4", + atoms = " Fe:2 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.273824200E+01, 1.323555800E-02, + -2.164187300E-05, 1.599366700E-08, -4.350709700E-12, + -5.610657900E+04, -1.982474910E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.535750000E+01, 6.420786100E-04, + 2.081773000E-08, -5.158055900E-11, 6.067349500E-15, + -5.651003700E+04, -3.189658710E+01] ) + ) + # note = "J12/70" + ) + +species(name = "Fe2CL6", + atoms = " Fe:2 Cl:6 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.422118080E+01, 4.354859680E-02, + -9.603901880E-05, 9.374630810E-08, -3.360516260E-11, + -8.419962650E+04, -2.592446940E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.156450310E+01, 4.623490150E-04, + -1.849520780E-07, 3.201430430E-11, -2.010027370E-15, + -8.524323750E+04, -5.865381850E+01] ) + ) + # note = "J 6/65" + ) + +species(name = "H", + atoms = " H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.547365990E+04, -4.466828530E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.500002860E+00, -5.653342140E-09, + 3.632517230E-12, -9.199497200E-16, 7.952607460E-20, + 2.547365890E+04, -4.466984940E-01] ) + ) + # note = "L 5/93" + ) + +species(name = "H+", + atoms = " H:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.840214280E+05, -1.140644530E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.840214280E+05, -1.140644530E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "H-", + atoms = " H:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.597616700E+04, -1.139015980E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.597616700E+04, -1.139015980E+00] ) + ) + # note = "L/7/88" + ) + +species(name = "HALO", + atoms = " H:1 Al:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.292211590E+00, -2.682003990E-03, + 2.868412920E-05, -3.797088660E-08, 1.540203500E-11, + 2.977710500E+03, 6.961609700E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.090753390E+00, 2.425141170E-03, + -9.399329460E-07, 1.593910040E-10, -9.867473170E-15, + 2.050094590E+03, -4.614507910E+00] ) + ) + # note = "J 3/64" + ) + +species(name = "HBO", + atoms = " H:1 B:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.214310600E+00, 9.371851300E-03, + -1.071107400E-05, 7.676977400E-09, -2.358637100E-12, + -2.484924600E+04, 9.372016770E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.748518100E+00, 3.661085900E-03, + -1.463540900E-06, 2.651990300E-10, -1.783427500E-14, + -2.522579800E+04, 1.746477570E+00] ) + ) + # note = "J12/75" + ) + +species(name = "HBO+", + atoms = " H:1 B:1 O:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.254428300E+00, 8.030187200E-03, + -5.974907200E-06, 2.428195000E-09, -4.305112400E-13, + 1.418506900E+05, 1.081220760E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.947508000E+00, 3.431543600E-03, + -1.278708400E-06, 2.218060400E-10, -1.475719200E-14, + 1.413599800E+05, 1.998895970E+00] ) + ) + # note = "J12/75" + ) + +species(name = "HBO-", + atoms = " H:1 B:1 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.970795500E+00, -2.210010700E-03, + 1.453541300E-05, -1.563892500E-08, 5.397896600E-12, + -3.058949900E+04, 4.824969670E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.086926500E+00, 2.978475600E-03, + -1.238710700E-06, 2.469333500E-10, -1.845504800E-14, + -3.093002600E+04, 2.780142470E+00] ) + ) + # note = "J12/75" + ) + +species(name = "HBO2", + atoms = " H:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.870786600E+00, 7.886264400E-03, + -4.073684200E-07, -4.705902200E-09, 2.354889300E-12, + -6.862411100E+04, 1.018051860E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.738951900E+00, 4.771877100E-03, + -1.806349400E-06, 3.149288900E-10, -2.073831200E-14, + -6.924883800E+04, 9.863917670E-03] ) + ) + # note = "J12/64" + ) + +species(name = "HBS", + atoms = " H:1 B:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.559590300E+00, 1.396683800E-02, + -1.798859500E-05, 1.231514100E-08, -3.409095700E-12, + 5.089093600E+03, 1.350189860E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.441226500E+00, 2.997982500E-03, + -1.193823000E-06, 2.119583200E-10, -1.346609700E-14, + 4.440297500E+03, -6.467831740E-01] ) + ) + # note = "J12/75" + ) + +species(name = "HBS+", + atoms = " H:1 B:1 S:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.251156100E+00, 1.207716800E-02, + -1.532215600E-05, 1.049409000E-08, -2.932529200E-12, + 1.347547600E+05, 1.127076990E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.709754200E+00, 2.818703600E-03, + -1.163308800E-06, 2.176883900E-10, -1.510868600E-14, + 1.341913900E+05, -8.374721460E-01] ) + ) + # note = "J12/75" + ) + +species(name = "HBr", + atoms = " H:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.605669000E+00, -5.952943100E-04, + 6.502956800E-07, 9.378121900E-10, -7.114185200E-13, + -5.438945500E+03, 3.496341130E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.793580400E+00, 1.565592500E-03, + -5.617106400E-07, 9.578314200E-11, -6.181399000E-15, + -5.233838400E+03, 7.655534030E+00] ) + ) + # note = "J 9/65" + ) + +species(name = "HCN", + atoms = " H:1 C:1 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.259011230E+00, 1.005105910E-02, + -1.335149110E-05, 1.009208820E-08, -3.008820480E-12, + 1.521584950E+04, 8.916345900E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.802317330E+00, 3.146300090E-03, + -1.063156980E-06, 1.661853950E-10, -9.798917890E-15, + 1.491048290E+04, 1.575035840E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "HCO", + atoms = " H:1 C:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.221185840E+00, -3.243925320E-03, + 1.377994460E-05, -1.331440930E-08, 4.337688650E-12, + 3.839564960E+03, 3.394372430E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.648962090E+00, 3.080908190E-03, + -1.124298760E-06, 1.863080850E-10, -1.139518280E-14, + 3.712090480E+03, 5.061474060E+00] ) + ) + # note = "L12/89" + ) + +species(name = "HCO+", + atoms = " H:1 C:1 O:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.473973600E+00, 8.671559000E-03, + -1.003150000E-05, 6.717052700E-09, -1.787267400E-12, + 9.914660800E+04, 8.175711870E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.741188000E+00, 3.344151700E-03, + -1.239712100E-06, 2.118938800E-10, -1.370415000E-14, + 9.888407800E+04, 2.078613570E+00] ) + ) + # note = "J12/70" + ) + +species(name = "HCCN", + atoms = " H:1 C:2 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.871843070E+00, 2.606113140E-02, + -4.627239650E-05, 4.186097310E-08, -1.453527050E-11, + 7.203403600E+04, 1.221732280E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.563141690E+00, 3.480409670E-03, + -1.246030800E-06, 2.007644860E-10, -1.200445470E-14, + 7.113470860E+04, -9.865561410E+00] ) + ) + # note = "TPIS91" + ) + +species(name = "HCL", + atoms = " H:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.524817100E+00, 2.998486200E-05, + -8.622189100E-07, 2.097972100E-09, -9.865819100E-13, + -1.215050900E+04, 2.408923590E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.766588400E+00, 1.438188300E-03, + -4.699300000E-07, 7.349940800E-11, -4.373110600E-15, + -1.191746800E+04, 6.471506290E+00] ) + ) + # note = "J 9/64" + ) + +species(name = "HD", + atoms = " H:1 D:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.432547700E+00, 6.510702800E-04, + -1.933266600E-06, 2.410173600E-09, -8.673239700E-13, + -1.000927200E+03, -2.389022470E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.846454400E+00, 1.063196100E-03, + -2.443380500E-07, 2.905083400E-11, -1.162153100E-15, + -7.618246500E+02, 9.801439970E-01] ) + ) + # note = "J 6/77" + ) + +species(name = "HD+", + atoms = " H:1 D:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.882713600E+00, -3.077938100E-03, + 8.191447300E-06, -6.811949900E-09, 1.985989800E-12, + 1.789456300E+05, -2.803359780E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.290976400E+00, 1.155152900E-03, + -3.444946300E-07, 7.672268200E-11, -8.094813300E-15, + 1.789427900E+05, -4.786072120E-01] ) + ) + # note = "J 9/77" + ) + +species(name = "HD-", + atoms = " H:1 D:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.642887700E+00, -2.129128900E-03, + 8.928412300E-06, -9.348120400E-09, 3.256497100E-12, + 2.726927100E+04, -2.255626610E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.493994900E+00, 1.244866700E-03, + -4.728871400E-07, 9.105963700E-11, -6.486292600E-15, + 2.715773400E+04, -2.231104610E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "HDO", + atoms = " H:1 D:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.075442200E+00, -1.382028500E-03, + 5.702553400E-06, -4.416364600E-09, 1.226306200E-12, + -3.070760800E+04, 9.710681270E-01] ), + NASA( [ 1000.00, 5000.00], [ 2.667268800E+00, 3.557520900E-03, + -1.202600300E-06, 1.960720900E-10, -1.235262000E-14, + -3.037286900E+04, 7.983599260E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "HF", + atoms = " H:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.437998600E+00, 5.357159800E-04, + -1.522965500E-06, 1.756449100E-09, -5.786994000E-13, + -3.381897200E+04, 1.206181770E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.991911000E+00, 7.148947500E-04, + -6.863097300E-08, -1.161713000E-11, 1.941237500E-15, + -3.362136400E+04, 3.825495270E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "HI", + atoms = " H:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.696372200E+00, -1.422475500E-03, + 3.013118800E-06, -1.266640300E-09, -3.509876500E-14, + 2.107358100E+03, 4.088121110E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.910400800E+00, 1.568818800E-03, + -5.922763200E-07, 1.053709400E-10, -7.037511600E-15, + 2.250865900E+03, 7.864470510E+00] ) + ) + # note = "J 9/61" + ) + +species(name = "HNC", + atoms = " H:1 N:1 C:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.301867350E+00, 1.541575290E-02, + -3.132621560E-05, 3.088165510E-08, -1.119123530E-11, + 2.222771830E+04, 8.147511350E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.222481030E+00, 2.594582780E-03, + -8.584809690E-07, 1.307450020E-10, -7.503397650E-15, + 2.201275930E+04, -7.794473580E-02] ) + ) + # note = "L11/92" + ) + +species(name = "HNCO", + atoms = " H:1 N:1 C:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.243224540E+00, 1.449863800E-02, + -1.526090540E-05, 8.363644530E-09, -1.721919670E-12, + -1.342575120E+04, 1.215654690E+01] ), + NASA( [ 1000.00, 6000.00], [ 5.294046640E+00, 4.030396500E-03, + -1.412903480E-06, 2.244282340E-10, -1.328593800E-14, + -1.416537590E+04, -3.087631300E+00] ) + ) + # note = "J12/70" + ) + +species(name = "HNO", + atoms = " H:1 N:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.535258820E+00, -5.685469100E-03, + 1.851999760E-05, -1.718836740E-08, 5.558330900E-12, + 1.103988050E+04, 1.743147340E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.165547620E+00, 3.000051320E-03, + -3.943502820E-07, -3.857874910E-11, 7.080919310E-15, + 1.119441690E+04, 7.647646950E+00] ) + ) + # note = "L12/89" + ) + +species(name = "HNO2", + atoms = " H:1 N:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.214159250E+00, 8.127779200E-03, + 1.659995160E-06, -9.528155630E-09, 4.871318160E-12, + -1.075323600E+04, 9.822000210E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.791826580E+00, 3.651626630E-03, + -1.292934510E-06, 2.068929320E-10, -1.231548550E-14, + -1.156555260E+04, -4.055385250E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "HNO3", + atoms = " H:1 N:1 O:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.744929460E+00, 1.880408880E-02, + -8.159635970E-06, -5.785845320E-09, 4.437680830E-12, + -1.738052960E+04, 1.695455240E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.003792340E+00, 4.498375330E-03, + -1.736487580E-06, 2.936855550E-10, -1.814786730E-14, + -1.925630220E+04, -1.609855460E+01] ) + ) + # note = "L 4/90" + ) + +species(name = "HOCL", + atoms = " H:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.932053700E+00, 6.937774400E-03, + -6.719184500E-06, 3.156886600E-09, -4.696588000E-13, + -1.008679900E+04, 9.952565760E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.225010500E+00, 2.318267500E-03, + -8.384238000E-07, 1.417639800E-10, -8.746999400E-15, + -1.036865700E+04, 3.590075560E+00] ) + ) + # note = "J 3/79" + ) + +species(name = "HOF", + atoms = " H:1 O:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.231092900E+00, 3.738985700E-03, + 6.300976200E-07, -3.621500200E-09, 1.786713300E-12, + -1.295477900E+04, 7.750903620E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.046433600E+00, 2.448628300E-03, + -8.628355300E-07, 1.420990400E-10, -8.935691500E-15, + -1.320906700E+04, 3.349932920E+00] ) + ) + # note = "J12/72" + ) + +species(name = "HO2", + atoms = " H:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.301798010E+00, -4.749120510E-03, + 2.115828910E-05, -2.427638940E-08, 9.292251240E-12, + 2.948080400E+02, 3.716662450E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.172287280E+00, 1.881176470E-03, + -3.462774080E-07, 1.946578530E-11, 1.762542940E-16, + 6.181029640E+01, 2.957677460E+00] ) + ) + # note = "L 5/89" + ) + +species(name = "HSO3F", + atoms = " H:1 S:1 O:3 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.119244500E+00, 3.154571000E-02, + -3.131788800E-05, 1.246150700E-08, -8.251463000E-13, + -9.236159600E+04, 1.555969560E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.036419000E+01, 5.386116400E-03, + -2.123157200E-06, 3.820834300E-10, -2.580709000E-14, + -9.439833400E+04, -2.600550340E+01] ) + ) + # note = "J 6/72" + ) + +species(name = "H2", + atoms = " H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.344331120E+00, 7.980520750E-03, + -1.947815100E-05, 2.015720940E-08, -7.376117610E-12, + -9.179351730E+02, 6.830102380E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.932865790E+00, 8.266079670E-04, + -1.464023350E-07, 1.541003590E-11, -6.888044320E-16, + -8.130655970E+02, -1.024328870E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "H2+", + atoms = " H:2 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.772560720E+00, -1.957465890E-03, + 4.548120470E-06, -2.821521410E-09, 5.339692090E-13, + 1.786941040E+05, -3.966090860E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.442047650E+00, 5.990832390E-04, + 6.691336850E-08, -3.435743730E-11, 1.976265990E-15, + 1.786496860E+05, -2.794989490E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "H2-", + atoms = " H:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.838014200E+00, -3.179476800E-03, + 1.004301100E-05, -9.551811600E-09, 3.128133000E-12, + 2.723485600E+04, -3.998623600E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.292107600E+00, 1.435862600E-03, + -5.470559300E-07, 1.043388300E-10, -7.382799800E-15, + 2.721618100E+04, -1.982777700E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "HCHO,formaldehy", + atoms = " H:2 C:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.793723150E+00, -9.908333690E-03, + 3.732200080E-05, -3.792852610E-08, 1.317726520E-11, + -1.430895670E+04, 6.028129000E-01] ), + NASA( [ 1000.00, 6000.00], [ 3.169526540E+00, 6.193205830E-03, + -2.250563770E-06, 3.659756800E-10, -2.201494700E-14, + -1.447844440E+04, 6.042094490E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "HCOOH", + atoms = " H:2 C:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.232624530E+00, 2.811295820E-03, + 2.440349750E-05, -3.175010660E-08, 1.206316600E-11, + -4.677856060E+04, 9.862056470E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.695794040E+00, 7.722373610E-03, + -3.180378080E-06, 5.579494660E-10, -3.526182260E-14, + -4.815997230E+04, -6.016800800E+00] ) + ) + # note = "L 8/88" + ) + +species(name = "H2F2", + atoms = " H:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.676331200E+00, 1.229799100E-02, + -1.245596500E-05, 6.360252300E-09, -1.127082300E-12, + -7.012371500E+04, 1.031092980E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.916038900E+00, 3.985765400E-03, + -1.355870700E-06, 2.193092100E-10, -1.371600500E-14, + -7.059477700E+04, -6.296058940E-01] ) + ) + # note = "J 6/77" + ) + +species(name = "H2O", + atoms = " H:2 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.198640560E+00, -2.036434100E-03, + 6.520402110E-06, -5.487970620E-09, 1.771978170E-12, + -3.029372670E+04, -8.490322080E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.677037870E+00, 2.973183290E-03, + -7.737696900E-07, 9.443366890E-11, -4.269009590E-15, + -2.988589380E+04, 6.882555710E+00] ) + ) + # note = "L 8/89" + ) + +species(name = "H2O+", + atoms = " H:2 O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.024658530E+00, -1.088509690E-03, + 5.135754000E-06, -4.400265920E-09, 1.407262740E-12, + 1.168697570E+05, 6.999713630E-01] ), + NASA( [ 1000.00, 6000.00], [ 3.315704600E+00, 2.106487280E-03, + -3.763414490E-07, 3.475259000E-11, -1.703356510E-15, + 1.169916170E+05, 4.032204410E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "H2O2", + atoms = " H:2 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.276112690E+00, -5.428224170E-04, + 1.673357010E-05, -2.157708130E-08, 8.624543630E-12, + -1.775429890E+04, 3.435050740E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.573335370E+00, 4.049840700E-03, + -1.294794790E-06, 1.972817100E-10, -1.134028460E-14, + -1.805481210E+04, 7.042784880E-01] ) + ) + # note = "L 2/93" + ) + +species(name = "H2S", + atoms = " H:2 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.932347600E+00, -5.026090500E-04, + 4.592847300E-06, -3.180721400E-09, 6.649756100E-13, + -3.650535900E+03, 2.315790500E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.745219900E+00, 4.043460700E-03, + -1.538451000E-06, 2.752024900E-10, -1.859209500E-14, + -3.419944400E+03, 8.054674500E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "H2SO4", + atoms = " H:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.072568000E+00, 4.376922600E-02, + -5.533324300E-05, 3.551825300E-08, -9.067735800E-12, + -9.025975800E+04, 1.893958200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.088953200E+01, 7.500417800E-03, + -2.921047800E-06, 5.259551300E-10, -3.578941500E-14, + -9.247136400E+04, -2.940478200E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "H3B3O6", + atoms = " H:3 B:3 O:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.270511600E+00, 8.702489400E-02, + -9.158771400E-05, 3.944539200E-08, -3.666603500E-12, + -2.756952300E+05, 3.252965260E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.015357900E+01, 1.301628600E-02, + -5.066961900E-06, 9.030825300E-10, -6.053241000E-14, + -2.810409200E+05, -7.967633240E+01] ) + ) + # note = "J12/64" + ) + +species(name = "H3F3", + atoms = " H:3 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.071786400E+00, 3.727938200E-02, + -5.815029200E-05, 4.590619800E-08, -1.398749800E-11, + -1.075785900E+05, 1.398177900E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.530737300E+00, 6.716593900E-03, + -2.545670000E-06, 4.478092900E-10, -2.989427500E-14, + -1.087179400E+05, -1.621120100E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "H3O+", + atoms = " H:3 O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.792952700E+00, -9.108540000E-04, + 1.163635490E-05, -1.213648870E-08, 4.261596630E-12, + 7.075124010E+04, 1.471568560E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.496477160E+00, 5.728449200E-03, + -1.839532810E-06, 2.735774390E-10, -1.540939850E-14, + 7.097291130E+04, 7.458507790E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "H4F4", + atoms = " H:4 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.382175500E+00, 4.991245100E-02, + -7.789997000E-05, 6.150362100E-08, -1.873981200E-11, + -1.450350700E+05, 1.080547420E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.203738500E+01, 8.959586200E-03, + -3.396056900E-06, 5.974365300E-10, -3.988469300E-14, + -1.465619300E+05, -2.965460380E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "H5F5", + atoms = " H:5 F:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.684175000E+00, 6.260530800E-02, + -9.779898900E-05, 7.725732200E-08, -2.355046100E-11, + -1.826315900E+05, 7.481674970E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.554413500E+01, 1.120237700E-02, + -4.246316300E-06, 7.470318300E-10, -4.987236000E-14, + -1.845468600E+05, -4.328139020E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "H6F6", + atoms = " H:6 F:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.996331700E+00, 7.522577300E-02, + -1.175171600E-04, 9.282176000E-08, -2.829045700E-11, + -2.216784700E+05, 3.964352970E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.905092400E+01, 1.344509300E-02, + -5.096529300E-06, 8.966158100E-10, -5.985907200E-14, + -2.239811000E+05, -5.705914700E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "H7F7", + atoms = " H:7 F:7 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.300979100E+00, 8.789976600E-02, + -1.373690800E-04, 1.085261800E-07, -3.308271500E-11, + -2.579517700E+05, 3.624760780E-01] ), + NASA( [ 1000.00, 5000.00], [ 2.255753600E+01, 1.568815200E-02, + -5.946957600E-06, 1.046253200E-09, -6.985035100E-14, + -2.606424800E+05, -7.095210600E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "He", + atoms = " He:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 9.287247240E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 9.287247240E-01] ) + ) + # note = "L10/90" + ) + +species(name = "He+", + atoms = " He:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.853150860E+05, 1.621666840E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 2.853150860E+05, 1.621666840E+00] ) + ) + # note = "L10/92" + ) + +species(name = "Hg", + atoms = " Hg:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 6.636900080E+03, 6.800201540E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.509536110E+00, -1.988272790E-05, + 1.389108490E-08, -3.935429200E-12, 3.909592190E-16, + 6.633580640E+03, 6.748479660E+00] ) + ) + # note = "J 9/84" + ) + +species(name = "HgBr2", + atoms = " Hg:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.718892100E+00, 2.578274300E-03, + -2.918023700E-06, 9.581844200E-10, 1.387230700E-13, + -1.237143400E+04, -4.136708230E-01] ), + NASA( [ 1000.00, 5000.00], [ 7.422699000E+00, 7.868766300E-05, + -2.991030700E-08, 4.849822800E-12, -2.793093300E-16, + -1.252202000E+04, -3.867339710E+00] ) + ) + # note = "J 3/62" + ) + +species(name = "I", + atoms = " I:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500416830E+00, -4.480468310E-06, + 1.699625360E-08, -2.677080300E-11, 1.489274520E-14, + 1.209479900E+04, 7.498165810E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.616677120E+00, -2.660103200E-04, + 1.860601500E-07, -3.819274720E-11, 2.520360530E-15, + 1.205827900E+04, 6.878966530E+00] ) + ) + # note = "J 6/82" + ) + +species(name = "I2", + atoms = " I:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.872346340E+00, 3.642654140E-03, + -7.953491910E-06, 7.821497730E-09, -2.806080710E-12, + 6.247064240E+03, 8.494102670E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.565881020E+00, -3.422293610E-04, + 4.844109770E-07, -1.426321570E-10, 1.149510990E-14, + 6.160854320E+03, 5.419582860E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "K", + atoms = " K:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500007120E+00, -7.251131660E-08, + 2.590684810E-10, -3.794609110E-13, 1.932106410E-16, + 9.958803070E+03, 5.040545170E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.260267210E+00, 5.623411790E-04, + -4.485518380E-07, 1.362434980E-10, -1.029262680E-14, + 1.003488120E+04, 6.315682010E+00] ) + ) + # note = "L 4/93" + ) + +species(name = "K+", + atoms = " K:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 6.107510510E+04, 4.347404490E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 6.107510510E+04, 4.347404490E+00] ) + ) + # note = "J12/83" + ) + +species(name = "KBO2", + atoms = " K:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.396780100E+00, 1.216920200E-02, + -1.180421800E-05, 5.131655100E-09, -6.593272000E-13, + -8.282701200E+04, 7.573243100E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.550250800E+00, 2.566182300E-03, + -1.067156600E-06, 1.985188500E-10, -1.370416800E-14, + -8.365383400E+04, -8.492700000E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "KCN", + atoms = " K:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.081071100E+00, 5.526595600E-03, + -9.115712100E-06, 8.448881700E-09, -3.005154800E-12, + 7.866216100E+03, 1.863468680E-01] ), + NASA( [ 1000.00, 5000.00], [ 5.800712000E+00, 1.720078600E-03, + -7.079107400E-07, 1.319924700E-10, -9.190832300E-15, + 7.727262800E+03, -3.158834190E+00] ) + ) + # note = "J 3/66" + ) + +species(name = "KCL", + atoms = " K:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.990856900E+00, 2.108916900E-03, + -3.183653000E-06, 2.252530800E-09, -5.909417900E-13, + -2.708018400E+04, 5.512004450E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.463673300E+00, 1.222920700E-04, + -9.171921000E-09, 9.264824200E-13, -1.040791700E-17, + -2.717313300E+04, 3.248089950E+00] ) + ) + # note = "J 3/66" + ) + +species(name = "KF", + atoms = " K:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.515606600E+00, 3.786842200E-03, + -5.586499500E-06, 3.775143800E-09, -9.392421800E-13, + -4.047607900E+04, 6.313385450E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.404070000E+00, 1.783372500E-04, + -3.609379700E-08, 5.883958700E-12, -3.469404600E-16, + -4.065588900E+04, 2.031095850E+00] ) + ) + # note = "J 6/69" + ) + +species(name = "KF2-", + atoms = " K:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.250757300E+00, 8.638371800E-03, + -1.340367300E-05, 9.414083200E-09, -2.468260200E-12, + -8.538397100E+04, -4.772247130E-01] ), + NASA( [ 1000.00, 5000.00], [ 7.258163800E+00, 2.670355700E-04, + -1.138463000E-07, 2.140768500E-11, -1.482707000E-15, + -8.578083900E+04, -1.010327830E+01] ) + ) + # note = "J12/68" + ) + +species(name = "KH", + atoms = " K:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.815775600E+00, 3.987106000E-03, + -3.341054800E-06, 8.860294200E-10, 1.140284700E-13, + 1.380583800E+04, 6.725178990E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.960338600E+00, 7.219032300E-04, + -2.691871500E-07, 5.261730000E-11, -3.787268300E-15, + 1.350183700E+04, 8.553450830E-01] ) + ) + # note = "J 3/63" + ) + +species(name = "KO", + atoms = " K:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.741077800E+00, 3.124201700E-03, + -4.802003900E-06, 3.466060500E-09, -9.359979100E-13, + 7.336871400E+03, 6.566923890E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.424477800E+00, 1.993615500E-04, + -3.712883700E-08, 7.130830000E-12, -5.036968700E-16, + 7.205233100E+03, 3.307668490E+00] ) + ) + # note = "J12/67" + ) + +species(name = "KO-", + atoms = " K:1 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.708366000E+00, 3.237648000E-03, + -4.969050000E-06, 3.572884600E-09, -9.608026800E-13, + -1.781860700E+04, 5.316625880E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.420108400E+00, 2.012426600E-04, + -3.933099600E-08, 7.559851100E-12, -5.344227500E-16, + -1.795610900E+04, 1.920004080E+00] ) + ) + # note = "J12/67" + ) + +species(name = "KOH", + atoms = " K:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.073344100E+00, 9.721794500E-03, + -1.598880400E-05, 1.214835300E-08, -3.370934200E-12, + -2.950655800E+04, 2.935401360E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.640094900E+00, 1.251022600E-03, + -3.498454700E-07, 4.456699300E-11, -2.087027900E-15, + -2.969873200E+04, -4.043654640E+00] ) + ) + # note = "J12/70" + ) + +species(name = "KOH+", + atoms = " K:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.432516700E+00, 8.463162500E-03, + -1.424785500E-05, 1.110662500E-08, -3.156361200E-12, + 5.829263200E+04, 2.873345730E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.680614000E+00, 1.212095100E-03, + -3.344711700E-07, 4.172793200E-11, -1.879391300E-15, + 5.816760200E+04, -2.554151370E+00] ) + ) + # note = "J12/71" + ) + +species(name = "K2", + atoms = " K:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.506651270E+00, -4.356762210E-04, + 3.266187410E-06, -4.178351020E-09, 1.196183670E-12, + 1.352879530E+04, 4.373189170E+00] ), + NASA( [ 1000.00, 6000.00], [ 6.948663710E+00, -3.604683190E-03, + 1.175531930E-06, -1.742203670E-10, 9.703028740E-15, + 1.260443490E+04, -9.319390510E+00] ) + ) + # note = "J12/83" + ) + +species(name = "K2C2N2", + atoms = " K:2 C:2 N:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.113305800E+01, 1.151636200E-02, + -1.947653300E-05, 1.816985900E-08, -6.464725200E-12, + -4.698069300E+03, -2.126795910E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.262575400E+01, 3.412399600E-03, + -1.403488800E-06, 2.615639600E-10, -1.820686500E-14, + -4.975361400E+03, -2.815389110E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "K2CL2", + atoms = " K:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 8.706797400E+00, 6.015404700E-03, + -1.130393900E-05, 9.662081400E-09, -3.105565700E-12, + -7.706769600E+04, -8.537547250E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.904106900E+00, 1.117970700E-04, + -5.039119700E-08, 9.993461400E-12, -7.270300900E-16, + -7.727233000E+04, -1.409028200E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "K2F2", + atoms = " K:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.832950400E+00, 8.924083100E-03, + -1.471985200E-05, 1.098246900E-08, -3.072172000E-12, + -1.063875200E+05, -8.242382810E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.814809600E+00, 2.045308100E-04, + -8.707166500E-08, 1.633722700E-11, -1.128725600E-15, + -1.067598700E+05, -1.764180300E+01] ) + ) + # note = "J 6/69" + ) + +species(name = "K2O2H2", + atoms = " K:2 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.919059600E+00, 1.030070300E-02, + -2.517329600E-07, -7.745001400E-09, 4.079604100E-12, + -8.126054800E+04, -2.972856440E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.509772200E+00, 5.416706600E-03, + -1.922353200E-06, 3.186606600E-10, -2.015250800E-14, + -8.204835200E+04, -1.681250590E+01] ) + ) + # note = "J12/70" + ) + +species(name = "K2SO4", + atoms = " K:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.475852000E+00, 4.877323700E-02, + -6.842008000E-05, 4.688631600E-08, -1.272108200E-11, + -1.342808500E+05, 1.234482860E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.537410800E+01, 4.105613900E-03, + -1.814893500E-06, 3.549724300E-10, -2.555875400E-14, + -1.369532900E+05, -4.614381540E+01] ) + ) + # note = "J 6/78" + ) + +species(name = "Kr", + atoms = " Kr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 5.490956510E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 5.490956510E+00] ) + ) + # note = "L10/90" + ) + +species(name = "Kr+", + atoms = " Kr:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.481535460E+00, 1.498646760E-04, + -4.155765900E-07, 4.402375470E-10, -1.193747460E-13, + 1.624605920E+05, 6.952579980E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.189687250E+00, 4.637756890E-04, + -1.295074820E-07, 1.311586880E-11, -3.849779870E-16, + 1.625831100E+05, 8.624276880E+00] ) + ) + # note = "L10/92" + ) + +species(name = "Li", + atoms = " Li:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.841390200E+04, 2.447622970E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.504131070E+00, 3.456047040E-05, + -6.447900180E-08, 2.757529660E-11, -1.787839350E-15, + 1.840744740E+04, 2.408020740E+00] ) + ) + # note = "J12/83" + ) + +species(name = "Li+", + atoms = " Li:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 8.172719400E+04, 1.754357540E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 8.172719400E+04, 1.754357540E+00] ) + ) + # note = "J12/83" + ) + +species(name = "LiALF4", + atoms = " Li:1 Al:1 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.540342100E+00, 5.198588100E-02, + -8.618803100E-05, 6.749681600E-08, -2.036750900E-11, + -2.253576700E+05, 1.257193200E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.403774200E+01, 2.248264200E-03, + -1.001000200E-06, 1.967024900E-10, -1.420888600E-14, + -2.276275700E+05, -4.236014800E+01] ) + ) + # note = "J12/79" + ) + +species(name = "LiBO2", + atoms = " Li:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.743547400E+00, 1.447525700E-02, + -1.520968800E-05, 7.413654100E-09, -1.224219100E-12, + -7.943775600E+04, 8.012025640E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.426609600E+00, 2.704375700E-03, + -1.128474100E-06, 2.106239800E-10, -1.458490900E-14, + -8.037028500E+04, -1.060079180E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "LiCL", + atoms = " Li:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.990690600E+00, 5.033864200E-03, + -6.567197900E-06, 3.805016000E-09, -7.611745500E-13, + -2.460318200E+04, 7.328184480E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.271214300E+00, 3.140029100E-04, + -1.012313000E-07, 1.845185300E-11, -1.239873100E-15, + -2.488444200E+04, 1.041721580E+00] ) + ) + # note = "J 6/62" + ) + +species(name = "LiF", + atoms = " Li:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.852886900E+00, 3.953278100E-03, + -3.172498500E-06, 4.324439700E-10, 3.705566700E-13, + -4.198726500E+04, 6.791028870E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.043024800E+00, 5.704105400E-04, + -2.145414400E-07, 4.060901300E-11, -2.835792000E-15, + -4.229931800E+04, 6.976954670E-01] ) + ) + # note = "J12/68" + ) + +species(name = "LiFO", + atoms = " Li:1 F:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.500179000E+00, 1.266171700E-02, + -1.415758900E-05, 6.450637400E-09, -7.426143100E-13, + -1.226553400E+04, 1.214401820E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.992610900E+00, 1.113920000E-03, + -4.788849300E-07, 9.106833200E-11, -6.384912300E-15, + -1.310098900E+04, -5.336603290E+00] ) + ) + # note = "J 9/65" + ) + +species(name = "LiF2-", + atoms = " Li:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.471813600E+00, 1.063671300E-02, + -1.177764600E-05, 5.676548700E-09, -8.465984000E-13, + -8.696311100E+04, 5.140927950E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.344859000E+00, 1.257127200E-03, + -5.352283000E-07, 1.011302500E-10, -7.058174400E-15, + -8.766789000E+04, -9.298402850E+00] ) + ) + # note = "J12/68" + ) + +species(name = "LiH", + atoms = " Li:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.420948600E+00, -6.806736600E-04, + 5.652738100E-06, -6.218034800E-09, 2.153175500E-12, + 1.588494500E+04, 1.065741940E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.588429700E+00, 1.072769100E-03, + -4.019458800E-07, 7.382855700E-11, -4.926964400E-15, + 1.571762500E+04, -3.750389650E-01] ) + ) + # note = "J 9/67" + ) + +species(name = "LiN", + atoms = " Li:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.889430000E+00, 5.221253400E-03, + -6.596902100E-06, 3.728899700E-09, -7.235514300E-13, + 3.921632300E+04, 7.288871450E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.225807700E+00, 3.966718700E-04, + -1.249399300E-07, 2.317475900E-11, -1.585191700E-15, + 3.891695200E+04, 7.008514810E-01] ) + ) + # note = "J12/66" + ) + +species(name = "LiO", + atoms = " Li:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.838900700E+00, 5.153862600E-03, + -6.308238200E-06, 3.411438500E-09, -6.163134300E-13, + 9.088431400E+03, 7.913117890E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.187620500E+00, 4.118657400E-04, + -1.452029600E-07, 2.725307000E-11, -1.886477500E-15, + 8.779525900E+03, 1.231425990E+00] ) + ) + # note = "J 3/64" + ) + +species(name = "LiO-", + atoms = " Li:1 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.851586600E+00, 5.016988000E-03, + -5.954747500E-06, 3.039945100E-09, -4.787296900E-13, + -9.077807600E+03, 6.459470670E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.181021700E+00, 4.178500000E-04, + -1.502484500E-07, 2.839773200E-11, -1.978918100E-15, + -9.384970200E+03, -1.423923370E-01] ) + ) + # note = "J12/67" + ) + +species(name = "LiOH", + atoms = " Li:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.346230000E+00, 1.178725300E-02, + -1.825265700E-05, 1.308561400E-08, -3.432874200E-12, + -2.956463600E+04, 3.461233300E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.509695700E+00, 1.368546400E-03, + -3.944146900E-07, 5.233219500E-11, -2.595867600E-15, + -2.989923100E+04, -6.507016000E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "LiOH+", + atoms = " Li:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.637973900E+00, 1.089715400E-02, + -1.722967000E-05, 1.266792700E-08, -3.416525900E-12, + 9.216119300E+04, 3.637760920E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.532926900E+00, 1.377793100E-03, + -4.065930900E-07, 5.559091000E-11, -2.860462400E-15, + 9.188857900E+04, -4.993592680E+00] ) + ) + # note = "J12/71" + ) + +species(name = "LiON", + atoms = " Li:1 O:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.670116400E+00, 7.256817700E-03, + -5.868114600E-06, 1.162831200E-09, 4.270412200E-13, + 2.027170300E+04, 6.682495110E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.812349600E+00, 1.287062600E-03, + -5.466771000E-07, 1.031498700E-10, -7.193044700E-15, + 1.969230200E+04, -4.344705590E+00] ) + ) + # note = "J 9/66" + ) + +species(name = "Li2", + atoms = " Li:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.215904900E+00, 7.093897480E-03, + -1.507233700E-05, 1.486848820E-08, -5.437402560E-12, + 2.479887720E+04, 3.804890040E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.583939350E+00, -7.876994020E-04, + -3.848781200E-07, 2.911330390E-10, -3.394384750E-14, + 2.403946860E+04, -8.506791270E+00] ) + ) + # note = "J12/83" + ) + +species(name = "Li2CL2", + atoms = " Li:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.280135100E+00, 1.838410000E-02, + -2.876944800E-05, 2.031335900E-08, -5.343324700E-12, + -7.416000300E+04, 2.792794220E-01] ), + NASA( [ 1000.00, 5000.00], [ 9.524561400E+00, 5.245883400E-04, + -2.233794900E-07, 4.195111400E-11, -2.902130600E-15, + -7.499026300E+04, -2.003167160E+01] ) + ) + # note = "J 6/62" + ) + +species(name = "Li2F2", + atoms = " Li:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.400750800E+00, 2.706623700E-02, + -3.925618000E-05, 2.572259900E-08, -6.223722500E-12, + -1.150109100E+05, 1.089177880E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.956663600E+00, 1.171926900E-03, + -5.099050400E-07, 9.791753400E-11, -6.921560200E-15, + -1.163722800E+05, -2.088633120E+01] ) + ) + # note = "J12/68" + ) + +species(name = "Li2O", + atoms = " Li:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.972170800E+00, 9.246092100E-03, + -9.359614900E-06, 3.463916000E-09, -7.565888000E-14, + -2.159698800E+04, 2.552304090E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.619874800E+00, 9.687944800E-04, + -4.149050600E-07, 7.863733700E-11, -5.496929200E-15, + -2.225532500E+04, -1.082155900E+01] ) + ) + # note = "J 3/64" + ) + +species(name = "Li2O2", + atoms = " Li:2 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.537523200E+00, 1.734422300E-02, + -2.719797100E-05, 1.930562900E-08, -5.120795700E-12, + -3.140204400E+04, -2.768312910E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.527526000E+00, 5.302101300E-04, + -2.300586200E-07, 4.403083100E-11, -3.101870200E-15, + -3.218248400E+04, -2.185911200E+01] ) + ) + # note = "J 3/64" + ) + +species(name = "Li2O2H2", + atoms = " Li:2 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.864663700E+00, 2.523730900E-02, + -2.263279100E-05, 7.463271300E-09, 2.292549800E-13, + -8.733881100E+04, 9.543129600E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.993612900E+00, 6.003963300E-03, + -2.181018100E-06, 3.688872600E-10, -2.373801400E-14, + -8.884415000E+04, -2.135864950E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "Li2SO4", + atoms = " Li:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.114572500E-01, 5.945117900E-02, + -8.636349000E-05, 6.117108700E-08, -1.709892300E-11, + -1.275084200E+05, 2.038032790E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.492959500E+01, 4.609747400E-03, + -2.037955600E-06, 3.986257900E-10, -2.870303000E-14, + -1.306352800E+05, -4.916649110E+01] ) + ) + # note = "J12/78" + ) + +species(name = "Li3CL3", + atoms = " Li:3 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.574595900E+00, 3.974923900E-02, + -5.650821300E-05, 3.629414500E-08, -8.578470000E-12, + -1.235335100E+05, 4.680596580E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.431944000E+01, 1.885400700E-03, + -8.197833000E-07, 1.573549400E-10, -1.111947200E-14, + -1.255885100E+05, -4.271102260E+01] ) + ) + # note = "J 6/62" + ) + +species(name = "Li3F3", + atoms = " Li:3 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.641397500E+00, 3.987869600E-02, + -5.724899100E-05, 3.719354400E-08, -8.923012500E-12, + -1.851985200E+05, 2.162359670E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.436442200E+01, 1.828549800E-03, + -7.922115900E-07, 1.515452900E-10, -1.067567300E-14, + -1.872373600E+05, -4.506091300E+01] ) + ) + # note = "J12/68" + ) + +species(name = "Mg", + atoms = " Mg:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.694658760E+04, 3.634330140E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.316644840E+00, 3.658663390E-04, + -2.332278030E-07, 5.371175700E-11, -2.995130650E-15, + 1.701192330E+04, 4.634495160E+00] ) + ) + # note = "J 9/83" + ) + +species(name = "Mg+", + atoms = " Mg:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.064223350E+05, 4.327443550E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.504165740E+00, -9.193409660E-06, + 6.961714780E-09, -2.174949380E-12, 2.409033460E-16, + 1.064209410E+05, 4.305044940E+00] ) + ) + # note = "J 9/83" + ) + +species(name = "MgBr", + atoms = " Mg:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.510728500E+00, 4.452851000E-03, + -8.012407500E-06, 6.706690000E-09, -2.123271800E-12, + -5.436825700E+03, 8.431489990E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.409985400E+00, 1.602173600E-04, + -4.150122300E-08, 5.937034200E-12, -4.823157300E-17, + -5.596190900E+03, 4.229603090E+00] ) + ) + # note = "J 6/75" + ) + +species(name = "MgBr2", + atoms = " Mg:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.713910200E+00, 7.732161700E-03, + -1.386579300E-05, 1.147790000E-08, -3.605788400E-12, + -3.837948300E+04, 1.868602290E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.321510000E+00, 2.064372500E-04, + -9.248920800E-08, 1.825583800E-11, -1.323117000E-15, + -3.867130400E+04, -5.678465910E+00] ) + ) + # note = "J 6/74" + ) + +species(name = "MgCL", + atoms = " Mg:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.380053400E+00, 4.281338900E-03, + -6.445733300E-06, 4.447229100E-09, -1.142172700E-12, + -6.382656000E+03, 7.788988160E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.377583300E+00, 1.883417800E-04, + -5.448859200E-08, 9.948103100E-12, -6.694961100E-16, + -6.583082600E+03, 2.989388660E+00] ) + ) + # note = "J 3/66" + ) + +species(name = "MgCL+", + atoms = " Mg:1 Cl:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.601223000E+00, 3.479185900E-03, + -5.135314300E-06, 3.444633700E-09, -8.384820600E-13, + 7.731468800E+04, 6.133859330E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.351234400E+00, -3.796719000E-03, + 2.471294500E-06, -5.082365300E-10, 3.367262500E-14, + 7.648087900E+04, -8.290362270E+00] ) + ) + # note = "J 6/68" + ) + +species(name = "MgCLF", + atoms = " Mg:1 Cl:1 F:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.157042930E+00, 1.645347900E-02, + -3.011268690E-05, 2.579746060E-08, -8.424875470E-12, + -6.989100400E+04, 1.022554020E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.570822520E+00, 4.488762080E-04, + -1.779948190E-07, 3.063182050E-11, -1.915545440E-15, + -7.052359770E+04, -5.835554140E+00] ) + ) + # note = "J 3/66" + ) + +species(name = "MgCL2", + atoms = " Mg:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.409552900E+00, 7.720628100E-03, + -1.162009400E-05, 7.941788900E-09, -2.025250200E-12, + -4.907053700E+04, 6.471580840E-01] ), + NASA( [ 1000.00, 5000.00], [ 7.240191300E+00, 2.885623900E-04, + -1.240118700E-07, 2.352710100E-11, -1.644320500E-15, + -4.944232600E+04, -8.180901460E+00] ) + ) + # note = "J12/69" + ) + +species(name = "MgF", + atoms = " Mg:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.657075200E+00, 6.682613500E-03, + -1.033115600E-05, 7.687176600E-09, -2.224505700E-12, + -2.949489000E+04, 9.855080410E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.192211900E+00, 4.036264400E-04, + -1.509763100E-07, 2.816922100E-11, -1.827589200E-15, + -2.981371000E+04, 2.436962110E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "MgF+", + atoms = " Mg:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.438765400E+00, 2.225265400E-03, + -5.462120200E-06, 1.408427600E-08, -8.072690600E-12, + 6.051566600E+04, 5.778354560E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.368105700E+00, 4.117596600E-03, + -2.939479700E-06, 7.271184300E-10, -5.984480200E-14, + 5.953600000E+04, -1.345777940E+00] ) + ) + # note = "J12/75" + ) + +species(name = "MgF2", + atoms = " Mg:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.347905800E+00, 1.311529700E-02, + -2.054160700E-05, 1.539578400E-08, -4.490904100E-12, + -8.883887400E+04, 8.651902110E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.364207300E+00, 7.262782700E-04, + -3.228004600E-07, 6.336366600E-11, -4.573843700E-15, + -8.946442900E+04, -5.915130790E+00] ) + ) + # note = "J 6/75" + ) + +species(name = "MgF2+", + atoms = " Mg:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.521288400E+00, 1.526955600E-02, + -2.518008900E-05, 1.963549900E-08, -5.905491900E-12, + 6.965838800E+04, 7.390209450E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.891067300E+00, 7.178128300E-04, + -3.294117200E-07, 6.588112800E-11, -4.587322800E-15, + 6.899314500E+04, -8.713013950E+00] ) + ) + # note = "J12/75" + ) + +species(name = "MgH", + atoms = " Mg:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.510239700E+00, -1.236835200E-03, + 6.424699800E-06, -6.605484600E-09, 2.200362500E-12, + 1.929389300E+04, 3.373654160E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.463859100E+00, 1.240405500E-03, + -5.027821000E-07, 9.811883400E-11, -6.618306800E-15, + 1.917631000E+04, 2.997751860E+00] ) + ) + # note = "J12/66" + ) + +species(name = "MgI", + atoms = " Mg:1 I:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.395966060E+00, 6.114948660E-03, + -1.315441460E-05, 1.272593110E-08, -4.534142970E-12, + 1.769336280E+03, 9.695865080E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.412455990E+00, 1.789109140E-04, + -5.229866790E-08, 9.687134860E-12, -4.671137860E-16, + 1.625819070E+03, 5.164510180E+00] ) + ) + # note = "J12/74" + ) + +species(name = "MgI2", + atoms = " Mg:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.108142600E+00, 6.146211800E-03, + -1.116652700E-05, 9.326652500E-09, -2.948716600E-12, + -2.128632300E+04, 1.971266870E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.371116200E+00, 1.494195400E-04, + -6.706773800E-08, 1.325755900E-11, -9.620050200E-16, + -2.151192300E+04, -3.938456630E+00] ) + ) + # note = "J12/74" + ) + +species(name = "MgN", + atoms = " Mg:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.889454900E+00, 5.175717500E-03, + -6.584901600E-06, 3.721893300E-09, -7.230596400E-13, + 3.368105800E+04, 9.297589460E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.221441700E+00, 3.648924000E-04, + -1.299573000E-07, 2.441894000E-11, -1.691775900E-15, + 3.338293100E+04, 2.732051960E+00] ) + ) + # note = "J 3/64" + ) + +species(name = "MgO", + atoms = " Mg:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.335349700E+00, -1.333913400E-02, + 3.566752600E-05, -2.605747100E-08, 4.984119600E-12, + 5.731557300E+03, -2.132776810E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.949442800E+00, -1.264075500E-03, + -2.400973000E-07, 1.627327700E-10, -1.761190900E-14, + 3.494438400E+03, -2.180117300E+01] ) + ) + # note = "J12/74" + ) + +species(name = "MgOH", + atoms = " Mg:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.762435700E+00, 1.916700500E-02, + -3.321931800E-05, 2.715897800E-08, -8.388927500E-12, + -2.094918200E+04, 1.273445250E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.267142400E+00, 1.678272000E-03, + -5.430917300E-07, 8.256334900E-11, -4.713351300E-15, + -2.150933600E+04, -3.395165560E+00] ) + ) + # note = "J12/75" + ) + +species(name = "MgOH+", + atoms = " Mg:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.783142100E+00, 1.922852700E-02, + -3.350314300E-05, 2.749136400E-08, -8.515100700E-12, + 6.915058400E+04, 1.193052360E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.282447900E+00, 1.664043700E-03, + -5.401665100E-07, 8.346782400E-11, -5.003616800E-15, + 6.859581600E+04, -4.150388630E+00] ) + ) + # note = "J12/75" + ) + +species(name = "MgO2H2", + atoms = " Mg:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.549475000E+00, 3.827048000E-02, + -6.650932800E-05, 5.453629400E-08, -1.689133800E-11, + -7.051675400E+04, 1.441703610E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.517838400E+00, 3.379138000E-03, + -1.102203300E-06, 1.711117900E-10, -1.030228600E-14, + -7.162673100E+04, -1.762946490E+01] ) + ) + # note = "J12/75" + ) + +species(name = "MgS", + atoms = " Mg:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.808921500E+00, -3.249359500E-02, + 9.251725700E-05, -9.096520300E-08, 2.972563100E-11, + 1.593229000E+04, -1.104790530E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.035856500E+01, -5.530708500E-03, + 2.095119900E-06, -3.522483800E-10, 2.228273600E-14, + 1.332934600E+04, -3.319052230E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Mg2", + atoms = " Mg:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.665489170E+00, -1.812079830E-02, + 4.057062330E-05, -4.007200910E-08, 1.450404630E-11, + 3.342807530E+04, 5.330957110E-01] ), + NASA( [ 1000.00, 6000.00], [ 1.554993080E+00, 3.137719320E-03, + -3.154974010E-06, 1.118151990E-09, -1.085390010E-13, + 3.410948850E+04, 1.945477040E+01] ) + ) + # note = "J 9/83" + ) + +species(name = "Mg2F4", + atoms = " Mg:2 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.229905300E+00, 4.929084900E-02, + -8.644967200E-05, 7.045937100E-08, -2.188711000E-11, + -2.094929900E+05, 5.003236150E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.467201600E+01, 1.529931800E-03, + -6.834711700E-07, 1.346046900E-10, -9.738339800E-15, + -2.114376600E+05, -4.427824400E+01] ) + ) + # note = "J12/75" + ) + +species(name = "MoO3", + atoms = " Mo:1 O:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.654312100E+00, 1.449099200E-02, + -7.668139000E-06, -6.098464000E-09, 5.182580900E-12, + -4.548309400E+04, 8.505218890E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.559907900E+00, 1.513690700E-03, + -6.137326000E-07, 1.075889000E-10, -6.227755500E-15, + -4.676527000E+04, -1.670282500E+01] ) + ) + # note = "TPIS82" + ) + +species(name = "Mo2O6", + atoms = " Mo:2 O:6 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 7.754672100E+00, 3.262506400E-02, + -1.665990600E-05, -1.503960000E-08, 1.236035800E-11, + -1.418333800E+05, -6.450927310E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.392333200E+01, 1.290874900E-02, + -7.392938600E-06, 1.745410900E-09, -1.441066800E-13, + -1.429283100E+05, -3.644861400E+01] ) + ) + # note = "TPIS82" + ) + +species(name = "Mo3O9", + atoms = " Mo:3 O:9 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.357742400E+01, 4.538931000E-02, + -2.130595400E-05, -2.286776600E-08, 1.775232700E-11, + -2.345968800E+05, -2.857713900E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.226229900E+01, 1.858496700E-02, + -1.058935700E-05, 2.492675200E-09, -2.054253600E-13, + -2.362003800E+05, -7.108818600E+01] ) + ) + # note = "TPIS82" + ) + +species(name = "Mo4O12", + atoms = " Mo:4 O:12 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.872747800E+01, 6.115949900E-02, + -2.914191300E-05, -3.065805000E-08, 2.401182000E-11, + -3.237659400E+05, -5.008838400E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.043174700E+01, 2.473264600E-02, + -1.411854900E-05, 3.327129200E-09, -2.743901600E-13, + -3.259036300E+05, -1.072803370E+02] ) + ) + # note = "TPIS82" + ) + +species(name = "Mo5O15", + atoms = " Mo:5 O:15 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.388705400E+01, 7.614100000E-02, + -3.517472900E-05, -3.986486500E-08, 3.063112300E-11, + -4.105210600E+05, -7.160417700E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.862254300E+01, 3.074274200E-02, + -1.753604700E-05, 4.130623000E-09, -3.405577100E-13, + -4.132415600E+05, -1.437367570E+02] ) + ) + # note = "TPIS82" + ) + +species(name = "N", + atoms = " N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 5.610463780E+04, 4.193909320E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.415942930E+00, 1.748906000E-04, + -1.190236670E-07, 3.022623870E-11, -2.036097900E-15, + 5.613377480E+04, 4.649609860E+00] ) + ) + # note = "L 6/88" + ) + +species(name = "N+", + atoms = " N:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.802694450E+00, -1.447589110E-03, + 2.771183800E-06, -2.401873520E-09, 7.808399310E-13, + 2.255752440E+05, 3.578778350E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.511129670E+00, 3.464417510E-06, + -1.594269380E-08, 7.248656630E-12, -6.445014260E-16, + 2.256243400E+05, 4.927676610E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "N-", + atoms = " N:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.627234030E+00, -5.934450180E-04, + 1.120289160E-06, -9.625856030E-10, 3.111195570E-13, + 5.618808710E+04, 4.401111760E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.508970990E+00, -9.584127510E-06, + 3.852100620E-09, -6.689359980E-13, 4.209911720E-17, + 5.620830170E+04, 4.949532020E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "NCO", + atoms = " N:1 C:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.754523920E+00, 9.230080370E-03, + -9.280066290E-06, 5.625213810E-09, -1.612001440E-12, + 2.018429540E+04, 9.853687730E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.152557170E+00, 2.309455940E-03, + -8.836995190E-07, 1.485253460E-10, -9.088579050E-15, + 1.949637500E+04, -2.564063500E+00] ) + ) + # note = "L12/89" + ) + +species(name = "ND", + atoms = " N:1 D:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.720648800E+00, -1.534184800E-03, + 3.187742600E-06, -1.509140100E-09, 9.712611400E-14, + 4.407275600E+04, 1.649556720E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.829703400E+00, 1.658417500E-03, + -6.328733300E-07, 1.147768500E-10, -7.831858400E-15, + 4.425595100E+04, 6.006628820E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "ND2", + atoms = " N:1 D:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.026978000E+00, -1.408512800E-03, + 7.776581500E-06, -6.496757500E-09, 1.755417000E-12, + 2.109802800E+04, 1.754842950E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.351539100E+00, 3.376316200E-03, + -1.321345700E-06, 2.680067900E-10, -2.081017400E-14, + 2.107774900E+04, 4.373879750E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "ND3", + atoms = " N:1 D:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.942783900E+00, 5.103529100E-03, + 2.739282100E-06, -4.684766200E-09, 1.627667400E-12, + -8.165156300E+03, 6.155220380E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.196156600E+00, 6.731175800E-03, + -2.642340000E-06, 4.763086800E-10, -3.280482800E-14, + -8.396652700E+03, 4.162907180E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "NF", + atoms = " N:1 F:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.599279990E+00, -2.181907880E-03, + 1.141068530E-05, -1.400684940E-08, 5.533326380E-12, + 2.697025250E+04, 5.355736030E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.060422920E+00, 3.506548500E-04, + -6.957218150E-08, 1.459254540E-11, -1.563724010E-15, + 2.667119820E+04, 2.087748050E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NF2", + atoms = " N:1 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.182338100E+00, 1.307000800E-02, + -1.514788700E-05, 8.233646000E-09, -1.685886400E-12, + 3.026324700E+03, 1.429673600E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.671099800E+00, 1.524906400E-03, + -6.643205000E-07, 1.298820900E-10, -9.348916200E-15, + 2.172891800E+03, -3.217337260E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "NF3", + atoms = " N:1 F:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.474128700E-01, 3.075047900E-02, + -4.258608600E-05, 2.884320900E-08, -7.703465500E-12, + -1.698750400E+04, 2.187349380E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.841996400E+00, 2.692759200E-03, + -1.080130600E-06, 2.122125600E-10, -1.528812400E-14, + -1.866843200E+04, -1.497089220E+01] ) + ) + # note = "L12/86" + ) + +species(name = "NH", + atoms = " N:1 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.492950370E+00, 3.117957220E-04, + -1.489066280E-06, 2.481674030E-09, -1.035709160E-12, + 4.189429400E+04, 1.848349740E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.783726450E+00, 1.329858860E-03, + -4.247855650E-07, 7.834944250E-11, -5.504512980E-15, + 4.213451630E+04, 5.740848570E+00] ) + ) + # note = "L11/89" + ) + +species(name = "NH+", + atoms = " N:1 H:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.616111360E+00, -3.134356770E-03, + 2.917051300E-06, 2.573848480E-10, -7.314313470E-13, + 1.990850430E+05, -2.927584600E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.959189800E+00, 1.349917190E-03, + -4.614877820E-07, 8.269776660E-11, -5.557589130E-15, + 1.995245050E+05, 5.599780210E+00] ) + ) + # note = "L 2/89" + ) + +species(name = "NHF", + atoms = " N:1 H:1 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.507904900E+00, 1.468857000E-03, + 5.138931900E-06, -7.076429300E-09, 2.731565200E-12, + 1.232662100E+04, 7.162800560E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.705515600E+00, 3.059283800E-03, + -1.194818900E-06, 2.153204100E-10, -1.447128500E-14, + 1.217131700E+04, 5.630128460E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "NHF2", + atoms = " N:1 H:1 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.206748100E+00, 1.187740100E-02, + -5.501269300E-06, -2.191121900E-09, 1.974618100E-12, + -1.352214100E+04, 1.455103120E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.287561500E+00, 4.633233000E-03, + -1.877374900E-06, 3.469930300E-10, -2.403675000E-14, + -1.442363300E+04, -1.644628150E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "NH2", + atoms = " N:1 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.205568570E+00, -2.135613630E-03, + 7.268513010E-06, -5.930698760E-09, 1.806909780E-12, + 2.153522310E+04, -1.466627700E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.847689920E+00, 3.142800350E-03, + -8.986414580E-07, 1.303182840E-10, -7.488129260E-15, + 2.182390490E+04, 6.471654330E+00] ) + ) + # note = "L12/89" + ) + +species(name = "NH2F", + atoms = " N:1 H:2 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.646342700E+00, -1.122991400E-03, + 1.715608600E-05, -1.903336800E-08, 6.738459500E-12, + -1.017500200E+04, 6.557271070E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.031688600E+00, 6.422393700E-03, + -2.483275400E-06, 4.437033100E-10, -2.998110000E-14, + -1.030216700E+04, 8.277199870E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "NH3", + atoms = " N:1 H:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.301778080E+00, -4.771273300E-03, + 2.193416190E-05, -2.298564890E-08, 8.289922680E-12, + -6.748063940E+03, -6.906443930E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.717096920E+00, 5.568563380E-03, + -1.768863960E-06, 2.674172600E-10, -1.527314190E-14, + -6.584519890E+03, 6.092898370E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NH2OH", + atoms = " N:1 H:3 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.210160760E+00, 6.196717800E-03, + 1.105949130E-05, -1.966682070E-08, 8.825163110E-12, + -7.309128390E+03, 7.932936400E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.881123620E+00, 8.157087190E-03, + -2.826157420E-06, 4.379313300E-10, -2.527249210E-14, + -7.587827270E+03, 3.791569010E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NH4+", + atoms = " N:1 H:4 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 5.022092780E+00, -1.170989600E-02, + 3.976001120E-05, -3.694198710E-08, 1.202644830E-11, + 7.630297540E+04, -4.205222860E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.315703110E+00, 9.649266530E-03, + -3.290495950E-06, 5.120453960E-10, -2.984990600E-14, + 7.672770440E+04, 1.209309810E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "NO", + atoms = " N:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.218598960E+00, -4.639881240E-03, + 1.104430490E-05, -9.340555070E-09, 2.805548740E-12, + 9.845099640E+03, 2.280610010E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.260712340E+00, 1.191011350E-03, + -4.291226460E-07, 6.944814630E-11, -4.032956810E-15, + 9.921431320E+03, 6.369005180E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NO+", + atoms = " N:1 O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.693012310E+00, -1.342291580E-03, + 2.673433950E-06, -1.026093080E-09, -6.956104920E-14, + 1.181030550E+05, 3.091266980E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.945877020E+00, 1.403252600E-03, + -4.955031960E-07, 7.959489730E-11, -4.720766680E-15, + 1.182443400E+05, 6.706446410E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NOCL", + atoms = " N:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.842936300E+00, 7.307572000E-03, + -9.140072600E-06, 6.661175800E-09, -2.050290500E-12, + 4.936487200E+03, 7.740794030E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.869567600E+00, 9.321847600E-04, + -2.523554200E-07, 8.094449300E-11, -9.020372700E-15, + 4.371781000E+03, -2.644057570E+00] ) + ) + # note = "L12/86" + ) + +species(name = "NOF", + atoms = " N:1 O:1 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.016789000E+00, 9.407459000E-03, + -1.141036800E-05, 7.751570000E-09, -2.223288800E-12, + -9.048759300E+03, 1.030434230E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.987816200E+00, 2.438225000E-03, + -1.110404500E-06, 2.454136700E-10, -1.888881300E-14, + -9.532831500E+03, 4.591733490E-01] ) + ) + # note = "TPIS78" + ) + +species(name = "NOF3", + atoms = " N:1 O:1 F:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.578588300E-01, 4.188482500E-02, + -6.273100500E-05, 4.619048300E-08, -1.341202600E-11, + -2.393042300E+04, 2.242342370E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.816029800E+00, 3.546221500E-03, + -1.552126900E-06, 3.016350300E-10, -2.162290900E-14, + -2.601812000E+04, -2.459501130E+01] ) + ) + # note = "TPIS78" + ) + +species(name = "NO2", + atoms = " N:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.944039070E+00, -1.585474440E-03, + 1.665789840E-05, -2.047544780E-08, 7.835032650E-12, + 2.896598650E+03, 6.311962250E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.884744290E+00, 2.172416390E-03, + -8.280790200E-07, 1.574772930E-10, -1.051105490E-14, + 2.316484620E+03, -1.173570750E-01] ) + ) + # note = "L 7/88" + ) + +species(name = "NO2-", + atoms = " N:1 O:2 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.097836480E+00, 3.704863120E-03, + 5.929389750E-06, -1.094973070E-08, 4.627217210E-12, + -2.517983390E+04, 9.482371430E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.053292800E+00, 2.075556720E-03, + -8.700030770E-07, 1.610742500E-10, -1.034480620E-14, + -2.590436160E+04, -1.540650630E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "NO2CL", + atoms = " N:1 O:2 Cl:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.559803900E+00, 1.796931900E-02, + -2.026525500E-05, 1.169918300E-08, -2.786337200E-12, + 9.879068000E+01, 1.358995820E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.120260100E+00, 3.186955700E-03, + -1.377989700E-06, 2.665316300E-10, -1.904379600E-14, + -1.061534700E+03, -9.454765600E+00] ) + ) + # note = "L12/86" + ) + +species(name = "NO2F", + atoms = " N:1 O:2 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.446680800E+00, 2.088405800E-02, + -2.388552800E-05, 1.394389400E-08, -3.340250100E-12, + -1.428429700E+04, 1.766067000E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.710382000E+00, 3.624016600E-03, + -1.566602300E-06, 3.026664100E-10, -2.160886600E-14, + -1.561104100E+04, -8.881696010E+00] ) + ) + # note = "L12/86" + ) + +species(name = "NO3", + atoms = " N:1 O:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.173593100E+00, 1.049026970E-02, + 1.104726500E-05, -2.815618540E-08, 1.365839580E-11, + 7.392198770E+03, 1.460220980E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.483477340E+00, 2.577720410E-03, + -1.009458310E-06, 1.723140720E-10, -1.071540150E-14, + 5.709194280E+03, -1.416181550E+01] ) + ) + # note = "J12/64" + ) + +species(name = "NO3-", + atoms = " N:1 O:3 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.212585210E+00, 1.715451930E-02, + -1.052704570E-05, -1.160740970E-09, 2.331149980E-12, + -3.840777130E+04, 1.799338650E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.884047390E+00, 3.160629820E-03, + -1.230487820E-06, 2.092579890E-10, -1.297954710E-14, + -4.005481520E+04, -1.170870970E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "NO3F", + atoms = " N:1 O:3 F:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.036357100E+00, 2.878409800E-02, + -3.484034100E-05, 2.176017300E-08, -5.649643600E-12, + 1.850681700E+02, 1.644354280E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.289479000E+00, 4.601813700E-03, + -2.218706700E-06, 4.512975800E-10, -3.324065400E-14, + -1.646851600E+03, -2.008892420E+01] ) + ) + # note = "L12/86" + ) + +species(name = "N2", + atoms = " N:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.531005280E+00, -1.236609870E-04, + -5.029994370E-07, 2.435306120E-09, -1.408812350E-12, + -1.046976280E+03, 2.967474680E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.952576260E+00, 1.396900570E-03, + -4.926316910E-07, 7.860103670E-11, -4.607553210E-15, + -9.239486450E+02, 5.871892520E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "N2+", + atoms = " N:2 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.775407110E+00, -2.064591570E-03, + 4.757523010E-06, -3.156642280E-09, 6.705099730E-13, + 1.804811150E+05, 2.693221860E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.586613630E+00, 2.530719490E-04, + 1.847782140E-07, -4.552572230E-11, 3.268180290E-15, + 1.803909940E+05, 3.095841500E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "N2-", + atoms = " N:2 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.882684800E+00, -3.192444600E-03, + 8.522783800E-06, -7.340374600E-09, 2.205681500E-12, + 1.679693500E+04, 3.111805200E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.115675300E+00, 1.458868800E-03, + -6.017314800E-07, 1.134842300E-10, -7.965851800E-15, + 1.685905800E+04, 6.389856000E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "NCN", + atoms = " N:2 C:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.241340330E+00, 8.500913460E-03, + -7.616081400E-06, 3.649865850E-09, -8.425518720E-13, + 5.894773700E+04, 6.709564500E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.738155140E+00, 1.772446060E-03, + -6.857511310E-07, 1.157119800E-10, -7.075679070E-15, + 5.822148900E+04, -6.305336650E+00] ) + ) + # note = "L12/89" + ) + +species(name = "cis-N2D2", + atoms = " N:2 D:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.873358990E+00, -2.623287910E-03, + 2.630758190E-05, -3.130087440E-08, 1.181099990E-11, + 2.369483440E+04, 4.749491600E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.514553080E+00, 5.189013180E-03, + -1.936842880E-06, 3.205759670E-10, -1.952086240E-14, + 2.302303960E+04, -9.526622540E-01] ) + ) + # note = "J 6/77" + ) + +species(name = "N2F2", + atoms = " N:2 F:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.805892600E+00, 1.925196700E-02, + -2.369774400E-05, 1.461686100E-08, -3.645160300E-12, + 5.994441900E+03, 1.148415070E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.667192300E+00, 2.594662700E-03, + -1.134602300E-06, 2.203526800E-10, -1.578865800E-14, + 4.813999900E+03, -1.282929130E+01] ) + ) + # note = "L12/86" + ) + +species(name = "N2F4", + atoms = " N:2 F:4 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 9.878129400E-01, 5.002952400E-02, + -7.367670800E-05, 5.252345500E-08, -1.471296100E-11, + -4.610108600E+03, 2.048571920E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.291506600E+01, 3.508136200E-03, + -1.554689000E-06, 3.045621800E-10, -2.195235400E-14, + -7.200818900E+03, -3.771089980E+01] ) + ) + # note = "L12/86" + ) + +species(name = "N2H2", + atoms = " N:2 H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.910660160E+00, -1.077918660E-02, + 3.865164410E-05, -3.865016280E-08, 1.348521000E-11, + 2.422427270E+04, 9.102797030E-02] ), + NASA( [ 1000.00, 6000.00], [ 1.311150860E+00, 9.001872720E-03, + -3.149118660E-06, 4.814496900E-10, -2.718979830E-14, + 2.478641670E+04, 1.640910850E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "NH2NO2", + atoms = " N:2 H:2 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.173101050E+00, 1.431622990E-02, + 1.090316190E-05, -2.767146770E-08, 1.298686870E-11, + -4.459061210E+03, 1.538311660E+01] ), + NASA( [ 1000.00, 6000.00], [ 7.388909980E+00, 7.651880260E-03, + -2.750870390E-06, 4.446228860E-10, -2.664881220E-14, + -6.217670340E+03, -1.327370000E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "N2H4", + atoms = " N:2 H:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.834721490E+00, -6.491295550E-04, + 3.768484630E-05, -5.007091820E-08, 2.033620640E-11, + 1.008939250E+04, 5.752720300E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.939573570E+00, 8.750171870E-03, + -2.993990580E-06, 4.672784180E-10, -2.730685990E-14, + 9.282655480E+03, -2.694397720E+00] ) + ) + # note = "L 5/90" + ) + +species(name = "N2O", + atoms = " N:2 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.257168600E+00, 1.130463380E-02, + -1.367103500E-05, 9.681620980E-09, -2.930555830E-12, + 8.741771460E+03, 1.075791540E+01] ), + NASA( [ 1000.00, 6000.00], [ 4.823188730E+00, 2.626852790E-03, + -9.584260580E-07, 1.599912960E-10, -9.774169390E-15, + 8.073356620E+03, -2.202366000E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "N2O+", + atoms = " N:2 O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.286889780E+00, 7.402345630E-03, + -4.866885520E-06, 7.331410380E-10, 2.981616830E-13, + 1.590545470E+05, 7.401465040E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.528597300E+00, 1.959569700E-03, + -7.537582280E-07, 1.270459110E-10, -7.802076250E-15, + 1.583759020E+05, -4.418967000E+00] ) + ) + # note = "J12/70" + ) + +species(name = "N2O3", + atoms = " N:2 O:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 5.810839640E+00, 1.433309620E-02, + -1.962085970E-05, 1.730607350E-08, -6.465539540E-12, + 8.191844530E+03, 1.204613210E+00] ), + NASA( [ 1000.00, 6000.00], [ 9.085838450E+00, 3.377563300E-03, + -1.315838900E-06, 2.307623290E-10, -1.471512670E-14, + 7.271601460E+03, -1.553619040E+01] ) + ) + # note = "L 4/90" + ) + +species(name = "N2O4", + atoms = " N:2 O:4 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.020023080E+00, 2.959043210E-02, + -3.013424580E-05, 1.423604070E-08, -2.441000490E-12, + -6.400401620E+02, 1.180596060E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.157528990E+01, 4.016160860E-03, + -1.571783230E-06, 2.682743090E-10, -1.669220190E-14, + -2.921912260E+03, -3.194884390E+01] ) + ) + # note = "TPIS89" + ) + +species(name = "N2O5", + atoms = " N:2 O:5 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.687674440E+00, 3.921207980E-02, + -5.537700290E-05, 4.200978330E-08, -1.312607100E-11, + -8.302911840E+02, 1.219678660E+01] ), + NASA( [ 1000.00, 6000.00], [ 1.311080820E+01, 4.874357910E-03, + -1.875483890E-06, 3.163741210E-10, -1.959268450E-14, + -3.116347000E+03, -3.468776920E+01] ) + ) + # note = "L 4/90" + ) + +species(name = "N3", + atoms = " N:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.860630380E+00, 4.248835490E-03, + 5.145721360E-06, -1.014784060E-08, 4.418783980E-12, + 5.136920930E+04, 9.115961310E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.641106960E+00, 2.769607000E-03, + -1.049175820E-06, 1.753407200E-10, -1.074827040E-14, + 5.069842380E+04, -9.401354560E-01] ) + ) + # note = "TPIS89" + ) + +species(name = "N3H", + atoms = " N:3 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.885108810E+00, 9.443434510E-03, + -3.879193360E-06, -1.894040110E-09, 1.601841320E-12, + 3.411720380E+04, 9.716878180E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.147002910E+00, 4.305612650E-03, + -1.527045750E-06, 2.462957740E-10, -1.471441640E-14, + 3.342839860E+04, -2.255291030E+00] ) + ) + # note = "L 7/88" + ) + +species(name = "Na", + atoms = " Na:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000050E+00, -4.984923230E-10, + 1.760340860E-12, -2.544616020E-15, 1.276038720E-18, + 1.215977520E+04, 4.244027730E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.398588790E+00, 2.154669970E-04, + -1.490775680E-07, 3.668217950E-11, -1.660360370E-15, + 1.219430690E+04, 4.791811200E+00] ) + ) + # note = "L 4/93" + ) + +species(name = "Na+", + atoms = " Na:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 7.254132500E+04, 3.550845040E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 7.254132500E+04, 3.550845040E+00] ) + ) + # note = "J12/83" + ) + +species(name = "NaALF4", + atoms = " Na:1 Al:1 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.305214500E+00, 4.496803400E-02, + -7.432378700E-05, 5.808086100E-08, -1.749955600E-11, + -2.241498800E+05, 6.371845990E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.427155300E+01, 1.980019100E-03, + -8.815148400E-07, 1.732214800E-10, -1.251291500E-14, + -2.261234700E+05, -4.127551800E+01] ) + ) + # note = "J12/79" + ) + +species(name = "NaBO2", + atoms = " Na:1 B:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.065474900E+00, 1.345492600E-02, + -1.386669300E-05, 6.639504200E-09, -1.072867100E-12, + -7.970015700E+04, 7.934816290E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.496525000E+00, 2.630986200E-03, + -1.097913600E-06, 2.049399800E-10, -1.419314600E-14, + -8.057859100E+04, -9.446301810E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "NaBr", + atoms = " Na:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.901089000E+00, 2.502540100E-03, + -3.885108800E-06, 2.831849700E-09, -7.722052800E-13, + -1.855616100E+04, 6.188793230E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.443313500E+00, 1.578365700E-04, + -2.798961900E-08, 5.384903800E-12, -3.809405400E-16, + -1.865948900E+04, 3.608582130E+00] ) + ) + # note = "J 9/64" + ) + +species(name = "NaCN", + atoms = " Na:1 C:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.977255800E+00, 5.322593700E-03, + -7.555244100E-06, 6.183979400E-09, -2.007142700E-12, + 9.673149000E+03, -3.882072810E-01] ), + NASA( [ 1000.00, 5000.00], [ 5.798977500E+00, 1.682794600E-03, + -6.743792400E-07, 1.223450200E-10, -8.296609100E-15, + 9.493344400E+03, -4.344260410E+00] ) + ) + # note = "J3/66 " + ) + +species(name = "NaCL", + atoms = " Na:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.703228600E+00, 3.199760800E-03, + -4.892450200E-06, 3.463921800E-09, -9.135752100E-13, + -2.302827600E+04, 5.773479490E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.428293100E+00, 1.562724100E-04, + -2.810838300E-08, 4.716357100E-12, -2.883255700E-16, + -2.317090000E+04, 2.300974590E+00] ) + ) + # note = "J12/64" + ) + +species(name = "NaF", + atoms = " Na:1 F:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.748718330E+00, 8.032432890E-03, + -1.515635230E-05, 1.335922460E-08, -4.451652440E-12, + -3.600020740E+04, 8.681078120E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.333767960E+00, 2.568077770E-04, + -6.942326210E-08, 1.196796170E-11, -7.493083930E-16, + -3.627978720E+04, 1.300463540E+00] ) + ) + # note = "J12/68" + ) + +species(name = "NaF2-", + atoms = " Na:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.582688900E+00, 1.060521100E-02, + -1.572050100E-05, 1.056729700E-08, -2.641592000E-12, + -8.223449700E+04, 1.489207610E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.122319300E+00, 4.188405500E-04, + -1.797229900E-07, 3.404122900E-11, -2.375193500E-15, + -8.275573000E+04, -1.078667450E+01] ) + ) + # note = "J12/68" + ) + +species(name = "NaH", + atoms = " Na:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.120395000E+00, 1.399621700E-03, + 2.214123400E-06, -3.995079500E-09, 1.672617800E-12, + 1.394006500E+04, 4.394561140E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.813057900E+00, 8.564380000E-04, + -3.122681600E-07, 5.850247100E-11, -4.051392400E-15, + 1.368306200E+04, 4.841680870E-01] ) + ) + # note = "J 3/63" + ) + +species(name = "NaI", + atoms = " Na:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.040627500E+00, 1.968711100E-03, + -3.054542400E-06, 2.255632300E-09, -6.228683200E-13, + -1.198804100E+04, 6.459801050E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.458457000E+00, 1.424127800E-04, + -1.692627500E-08, 3.896008700E-12, -2.796631100E-16, + -1.206684300E+04, 4.475958750E+00] ) + ) + # note = "L 6/72" + ) + +species(name = "NaO", + atoms = " Na:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.442100700E+00, 4.161724100E-03, + -6.311836800E-06, 4.447919900E-09, -1.172048600E-12, + 8.901147700E+03, 6.950325330E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.392415800E+00, 2.132057400E-04, + -4.522059800E-08, 7.975182100E-12, -5.173598900E-16, + 8.711899500E+03, 2.388089630E+00] ) + ) + # note = "J12/67" + ) + +species(name = "NaO-", + atoms = " Na:1 O:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.418685500E+00, 4.211738200E-03, + -6.310464600E-06, 4.387351500E-09, -1.137263900E-12, + -1.575223400E+04, 5.668556390E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.386800800E+00, 2.234467200E-04, + -4.821247200E-08, 8.572086200E-12, -5.609433400E-16, + -1.594626800E+04, 1.013634790E+00] ) + ) + # note = "J12/67" + ) + +species(name = "NaOH", + atoms = " Na:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.005038800E+00, 9.992204300E-03, + -1.643421300E-05, 1.247658500E-08, -3.463761000E-12, + -2.530047100E+04, 2.306436040E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.646937700E+00, 1.222738500E-03, + -3.327103600E-07, 4.066629800E-11, -1.779068800E-15, + -2.550822200E+04, -5.036874660E+00] ) + ) + # note = "J12/70" + ) + +species(name = "NaOH+", + atoms = " Na:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.350520400E+00, 8.746501500E-03, + -1.464267300E-05, 1.135150100E-08, -3.211002600E-12, + 7.994639900E+04, 2.344840720E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.668854700E+00, 1.225393000E-03, + -3.402956300E-07, 4.285326800E-11, -1.959376000E-15, + 7.980651400E+04, -3.424682680E+00] ) + ) + # note = "J12/71" + ) + +species(name = "Na2", + atoms = " Na:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.115682610E+00, 2.529040400E-03, + -5.621686450E-06, 6.461716650E-09, -2.751283100E-12, + 1.578246160E+04, 3.686724330E+00] ), + NASA( [ 1000.00, 6000.00], [ 5.962019000E+00, -1.060495060E-03, + -4.392797690E-07, 3.051748100E-10, -3.394888160E-14, + 1.499909270E+04, -6.696136470E+00] ) + ) + # note = "J12/83" + ) + +species(name = "Na2C2N2", + atoms = " Na:2 C:2 N:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.036802900E+01, 1.334854700E-02, + -1.991033400E-05, 1.615647500E-08, -5.126455000E-12, + -4.593752700E+03, -2.054944290E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.257278600E+01, 3.394731800E-03, + -1.361693400E-06, 2.472095900E-10, -1.677325400E-14, + -5.049102100E+03, -3.107419790E+01] ) + ) + # note = "J 3/66" + ) + +species(name = "Na2CL2", + atoms = " Na:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.958395300E+00, 8.396236000E-03, + -1.381711600E-05, 1.027766600E-08, -2.864499400E-12, + -7.072593900E+04, -8.175324710E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.826200100E+00, 1.918476300E-04, + -8.160874300E-08, 1.529818100E-11, -1.055899400E-15, + -7.107714900E+04, -1.703610090E+01] ) + ) + # note = "J12/64" + ) + +species(name = "Na2F2", + atoms = " Na:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.821219100E+00, 1.983639600E-02, + -3.061761400E-05, 2.133704000E-08, -5.534431400E-12, + -1.038900500E+05, 2.366254590E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.433553000E+00, 6.361158800E-04, + -2.762472000E-07, 5.291719000E-11, -3.731035300E-15, + -1.048011400E+05, -1.975299210E+01] ) + ) + # note = "J12/68" + ) + +species(name = "Na2O", + atoms = " Na:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.778717700E+00, 9.948771600E-03, + -1.481445600E-05, 1.000323900E-08, -2.513787400E-12, + -6.736020600E+03, 1.799476190E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.147058200E+00, 3.983309900E-04, + -1.740891100E-07, 3.356516200E-11, -2.381080100E-15, + -7.219126100E+03, -9.634810610E+00] ) + ) + # note = "L10/74" + ) + +species(name = "Na2O2H2", + atoms = " Na:2 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.971293000E+00, 1.404927500E-02, + -6.244514200E-06, -3.393574600E-09, 2.893376900E-12, + -7.541293800E+04, -9.373864530E-01] ), + NASA( [ 1000.00, 5000.00], [ 9.416074300E+00, 5.519652200E-03, + -1.965961100E-06, 3.268034400E-10, -2.071248500E-14, + -7.636636900E+04, -1.885434970E+01] ) + ) + # note = "J12/70" + ) + +species(name = "Na2SO4", + atoms = " Na:2 S:1 O:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.072749800E+00, 5.458204700E-02, + -7.854353300E-05, 5.510422100E-08, -1.526667600E-11, + -1.267695500E+05, 1.666882630E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.520612800E+01, 4.298426400E-03, + -1.900840900E-06, 3.718753000E-10, -2.678045700E-14, + -1.296735700E+05, -4.765692170E+01] ) + ) + # note = "J 6/78" + ) + +species(name = "Nb", + atoms = " Nb:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.475507400E+00, 2.053856400E-03, + -6.967026300E-06, 6.802055900E-09, -2.251771800E-12, + 8.708774900E+04, 2.242436970E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.220590500E+00, -1.818743900E-03, + 8.237394300E-07, -1.183289900E-10, 5.363705300E-15, + 8.696071300E+04, -1.184686430E+00] ) + ) + # note = "J12/73" + ) + +species(name = "NbO", + atoms = " Nb:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.921448500E+00, 3.132408200E-03, + -1.490036900E-06, -9.934526000E-10, 7.998402000E-13, + 2.290788600E+04, 1.123629370E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.881172900E+00, 8.197812200E-04, + -4.253539000E-07, 1.026493600E-10, -8.041980100E-15, + 2.263713200E+04, 6.223641510E+00] ) + ) + # note = "J12/73" + ) + +species(name = "NbO2", + atoms = " Nb:1 O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.576726810E+00, 6.358956280E-03, + -5.964422090E-07, -6.342289560E-09, 3.708328210E-12, + -2.538731850E+04, 1.062570080E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.051479480E+00, 9.751537070E-04, + -3.826971080E-07, 6.541504200E-11, -4.071590790E-15, + -2.610086450E+04, -2.400156630E+00] ) + ) + # note = "J12/73" + ) + +species(name = "Ne", + atoms = " Ne:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 3.355322720E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + -7.453750000E+02, 3.355322720E+00] ) + ) + # note = "L10/90" + ) + +species(name = "Ne+", + atoms = " Ne:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 1.941069170E+00, 4.400165520E-03, + -8.570474170E-06, 6.996916890E-09, -2.115736250E-12, + 2.502942750E+05, 6.991786940E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.903995570E+00, -3.637946350E-04, + 1.318733590E-07, -2.142092100E-11, 1.287784990E-15, + 2.501437260E+05, 2.563103320E+00] ) + ) + # note = "L10/92" + ) + +species(name = "Ni", + atoms = " Ni:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.776665400E+00, -7.522063800E-04, + 4.325611300E-06, -5.473128700E-09, 2.110756500E-12, + 5.090908300E+04, 6.168232530E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.206149000E+00, -2.096992300E-04, + -2.283644800E-08, 1.508521100E-11, -1.000444500E-15, + 5.070812600E+04, 3.531716230E+00] ) + ) + # note = "J12/76" + ) + +species(name = "NiCL", + atoms = " Ni:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.489775700E+00, 3.183793000E-03, + -1.914891200E-06, -3.573631700E-10, 4.607476800E-13, + 2.072593500E+04, 9.549744360E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.583651400E+00, -1.432957800E-03, + 8.520772300E-07, -1.488639300E-10, 8.155162400E-15, + 2.005650500E+04, -1.637321440E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "NiCL2", + atoms = " Ni:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.560617700E+00, 1.361371300E-02, + -2.366013300E-05, 1.961626400E-08, -6.241729100E-12, + -1.068357100E+04, 6.236194160E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.387453000E+00, 8.463759500E-04, + -4.314954200E-07, 9.359084600E-11, -7.191513900E-15, + -1.123585700E+04, -7.188951040E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "NiO", + atoms = " Ni:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.991968200E+00, 3.330920800E-03, + -1.535247100E-06, -1.564083300E-09, 1.212850100E-12, + 3.674209400E+04, 9.821407360E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.104611400E+00, 4.865916000E-04, + -1.878678400E-07, 3.553185500E-11, -2.471516600E-15, + 3.644564500E+04, 4.076796560E+00] ) + ) + # note = "L 2/84" + ) + +species(name = "NiS", + atoms = " Ni:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.116810700E+00, 4.017352800E-03, + -1.558391100E-06, -1.506353600E-09, 9.368388100E-13, + 4.189685700E+04, 1.146773510E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.916047200E+00, 3.137745100E-04, + -2.970181300E-07, 8.017972400E-11, -6.725741800E-15, + 4.132103200E+04, 1.818987970E+00] ) + ) + # note = "J12/76" + ) + +species(name = "O", + atoms = " O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.168267100E+00, -3.279318840E-03, + 6.643063960E-06, -6.128066240E-09, 2.112659710E-12, + 2.912225920E+04, 2.051933460E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.543636970E+00, -2.731624860E-05, + -4.190295200E-09, 4.954818450E-12, -4.795536940E-16, + 2.922601200E+04, 4.922294570E+00] ) + ) + # note = "L 1/90" + ) + +species(name = "O+", + atoms = " O:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.879352910E+05, 4.393376890E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.487733170E+00, 2.176600160E-05, + -1.089558060E-08, 1.259092120E-12, 1.373167200E-16, + 1.879399650E+05, 4.461340910E+00] ) + ) + # note = "L 1/90" + ) + +species(name = "O-", + atoms = " O:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.908059210E+00, -1.698049070E-03, + 2.980699560E-06, -2.438351270E-09, 7.612293130E-13, + 1.141383410E+04, 2.803390840E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.544748680E+00, -4.666954190E-05, + 1.849123100E-08, -3.181591310E-12, 1.989628940E-16, + 1.148227130E+04, 4.521310050E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "OD", + atoms = " O:1 D:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.034675100E+00, -2.456131300E-03, + 3.961020100E-06, -1.853499600E-09, 1.929534100E-13, + 3.277050700E+03, 3.941861410E-01] ), + NASA( [ 1000.00, 5000.00], [ 2.782910700E+00, 1.573956700E-03, + -5.702078700E-07, 9.886440900E-11, -6.506201400E-15, + 3.575981300E+03, 6.675671330E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "OH", + atoms = " O:1 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.992015430E+00, -2.401317520E-03, + 4.617938410E-06, -3.881133330E-09, 1.364114700E-12, + 3.615080560E+03, -1.039254580E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.838646070E+00, 1.107255860E-03, + -2.939149780E-07, 4.205242470E-11, -2.421690920E-15, + 3.943958520E+03, 5.844526620E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "OH+", + atoms = " O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.505025720E+00, 2.413137490E-04, + -1.422009490E-06, 2.647802320E-09, -1.170387110E-12, + 1.541271240E+05, 1.979076400E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.683589970E+00, 1.570064320E-03, + -5.399728050E-07, 9.376438590E-11, -5.700680550E-15, + 1.543957440E+05, 6.443759010E+00] ) + ) + # note = "TPIS78" + ) + +species(name = "OH-", + atoms = " O:1 H:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.432799560E+00, 6.196563100E-04, + -1.899309920E-06, 2.373659460E-09, -8.551037550E-13, + -1.826130860E+04, 1.060536570E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.834057010E+00, 1.070580230E-03, + -2.624593980E-07, 3.083764350E-11, -1.313838620E-15, + -1.801869740E+04, 4.494647490E+00] ) + ) + # note = "L 3/93" + ) + +species(name = "O2", + atoms = " O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.782456360E+00, -2.996734150E-03, + 9.847302000E-06, -9.681295080E-09, 3.243728360E-12, + -1.063943560E+03, 3.657675730E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.660960830E+00, 6.563655230E-04, + -1.411494850E-07, 2.057976580E-11, -1.299132480E-15, + -1.215977250E+03, 3.415361840E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "O2+", + atoms = " O:2 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.610171670E+00, -6.359519520E-03, + 1.424256240E-05, -1.209979230E-08, 3.709568780E-12, + 1.397422290E+05, -2.013268740E-01] ), + NASA( [ 1000.00, 6000.00], [ 3.316759220E+00, 1.115222440E-03, + -3.834925560E-07, 5.727846870E-11, -2.776483810E-15, + 1.398768230E+05, 5.447264760E+00] ) + ) + # note = "TPIS89" + ) + +species(name = "O2-", + atoms = " O:2 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.664425220E+00, -9.287411380E-04, + 6.454770820E-06, -7.747033800E-09, 2.933326620E-12, + -6.870769830E+03, 4.351406740E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.956662940E+00, 5.981418230E-04, + -2.121339050E-07, 3.632675810E-11, -2.249892280E-15, + -7.062872290E+03, 2.278710100E+00] ) + ) + # note = "L 4/89" + ) + +species(name = "O3", + atoms = " O:3 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.407382210E+00, 2.053790630E-03, + 1.384860520E-05, -2.233115420E-08, 9.760732260E-12, + 1.586449790E+04, 8.282475800E+00] ), + NASA( [ 1000.00, 6000.00], [ 1.233029140E+01, -1.193247830E-02, + 7.987412780E-06, -1.771945520E-09, 1.260758240E-13, + 1.267558310E+04, -4.088233740E+01] ) + ) + # note = "L 5/90" + ) + +species(name = "P", + atoms = " P:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500042780E+00, -4.389686370E-07, + 1.581317410E-09, -2.339004570E-12, 1.205109400E-15, + 3.730737540E+04, 5.384147290E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.807215550E+00, -5.308419880E-04, + 2.445430460E-07, -2.057082520E-11, -2.945466190E-16, + 3.718927480E+04, 3.677647330E+00] ) + ) + # note = "J12/82" + ) + +species(name = "P+", + atoms = " P:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.379041700E+00, -6.466672300E-03, + 8.934096200E-06, -5.485802100E-09, 1.209885700E-12, + 1.596478070E+05, -3.293740210E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.902154700E+00, -5.887889900E-04, + 3.129811900E-07, -5.972753900E-11, 3.930492500E-15, + 1.599441270E+05, 3.833706490E+00] ) + ) + # note = "L12/66" + ) + +species(name = "PCL3", + atoms = " P:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.259053700E+00, 1.788056600E-02, + -2.731758500E-05, 1.889824000E-08, -4.873849600E-12, + -3.686443040E+04, 3.252329700E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.456611600E+00, 6.027840100E-04, + -2.584687800E-07, 4.890428000E-11, -3.408328500E-15, + -3.770455740E+04, -1.692964980E+01] ) + ) + # note = "J 6/70" + ) + +species(name = "PF", + atoms = " P:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.676086300E+00, 5.572216200E-03, + -7.283779600E-06, 4.581943900E-09, -1.118810600E-12, + -7.289161350E+03, 1.043418310E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.284440300E+00, 4.651319200E-05, + 1.292315500E-07, -3.545968600E-11, 2.930864200E-15, + -7.675664950E+03, 2.401963810E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "PF+", + atoms = " P:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.940212200E+00, -5.378458200E-04, + 3.935610600E-06, -4.672619400E-09, 1.744583800E-12, + 1.072525970E+05, 4.518503280E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.081618400E+00, 4.950691000E-04, + -2.031980800E-07, 3.923484700E-11, -2.783033700E-15, + 1.071458470E+05, 3.444416680E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "PF-", + atoms = " P:1 F:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.595137600E+00, 3.031290900E-03, + -4.406291400E-06, 3.158347500E-09, -8.920626700E-13, + -2.090409440E+04, 5.869906520E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.303769100E+00, 2.639263000E-04, + -9.877430300E-08, 1.871182100E-11, -1.211025200E-15, + -2.105814440E+04, 2.412291520E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "PF2", + atoms = " P:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.442852600E+00, 1.518633100E-02, + -2.219692400E-05, 1.564893200E-08, -4.329837200E-12, + -5.996098040E+04, 1.403711700E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.092658800E+00, 1.031332400E-03, + -4.537102000E-07, 8.704558300E-11, -5.971405200E-15, + -6.075532540E+04, -3.785130070E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "PF2+", + atoms = " P:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.470213600E+00, 1.492267600E-02, + -2.157313900E-05, 1.505438600E-08, -4.126710900E-12, + 5.556554060E+04, 1.326367400E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.072615400E+00, 1.058824900E-03, + -4.675816600E-07, 8.961229800E-11, -6.045421700E-15, + 5.477693960E+04, -4.351671580E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "PF3", + atoms = " P:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.362187800E+00, 2.282004500E-02, + -2.765664200E-05, 1.449096200E-08, -2.460236000E-12, + -1.167769030E+05, 1.368643200E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.434773300E+00, 1.739392000E-03, + -7.511980800E-07, 1.434424700E-10, -1.009397900E-14, + -1.181807830E+05, -1.646360200E+01] ) + ) + # note = "J12/69" + ) + +species(name = "PF5", + atoms = " P:1 F:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.052324900E+00, 4.445400400E-02, + -5.390142900E-05, 2.841668600E-08, -4.914326800E-12, + -1.936323130E+05, 1.908901000E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.284618400E+01, 3.510448500E-03, + -1.519860400E-06, 2.910190400E-10, -2.053470800E-14, + -1.963622630E+05, -3.947554200E+01] ) + ) + # note = "J12/69" + ) + +species(name = "PH", + atoms = " P:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.680343300E+00, -1.275601800E-03, + 2.593244200E-06, -8.435410700E-10, -1.720860900E-13, + 2.733396560E+04, 2.918641250E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.074544200E+00, 1.169894700E-03, + -3.038165400E-07, 4.443631400E-11, -2.700097500E-15, + 2.742683160E+04, 5.768048550E+00] ) + ) + # note = "J 6/67" + ) + +species(name = "PH3", + atoms = " P:1 H:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.158193500E+00, 2.494149200E-03, + 9.025525300E-06, -1.022790400E-08, 3.283425000E-12, + -4.612372520E+02, 6.237224860E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.344879400E+00, 6.577094100E-03, + -2.633675500E-06, 4.774466000E-10, -3.235439000E-14, + -8.161767520E+02, 3.954796260E+00] ) + ) + # note = "J 6/62" + ) + +species(name = "PO", + atoms = " P:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.961308000E+00, -2.123539900E-03, + 7.520121900E-06, -7.595091200E-09, 2.563759100E-12, + -4.698968950E+03, 4.583692210E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.842792200E+00, 7.236445600E-04, + -2.893419900E-07, 5.301355400E-11, -3.549537300E-15, + -4.799454950E+03, 4.552377410E+00] ) + ) + # note = "J 6/71" + ) + +species(name = "PO2", + atoms = " P:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.334527300E+00, 1.250210000E-02, + -1.433619500E-05, 7.676216600E-09, -1.540169400E-12, + -3.896886540E+04, 1.405443500E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.691327800E+00, 1.480686600E-03, + -6.542569200E-07, 1.279323100E-10, -9.209927700E-15, + -3.979472540E+04, -2.819722010E+00] ) + ) + # note = "J 9/62" + ) + +species(name = "P2", + atoms = " P:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.839110700E+00, 4.826619300E-03, + -5.494748800E-06, 2.580050700E-09, -3.223645300E-13, + 1.625970730E+04, 8.842410190E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.161173300E+00, 3.962080000E-04, + -1.558033900E-07, 2.909347400E-11, -2.004245800E-15, + 1.594686930E+04, 2.241092490E+00] ) + ) + # note = "J 6/61" + ) + +species(name = "P4", + atoms = " P:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.535330000E+00, 2.412529200E-02, + -3.646275900E-05, 2.491690600E-08, -6.329856300E-12, + 5.235533590E+03, 7.755895670E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.226278900E+00, 8.689412800E-04, + -3.775833800E-07, 7.237966600E-11, -5.106610900E-15, + 4.090549590E+03, -1.964170490E+01] ) + ) + # note = "J 6/61" + ) + +species(name = "P4O10", + atoms = " P:4 O:10 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -4.414288300E+00, 1.375908100E-01, + -1.926859800E-04, 1.327206800E-07, -3.631137800E-11, + -3.526295230E+05, 4.017822600E+01] ), + NASA( [ 1000.00, 5000.00], [ 2.893965900E+01, 1.245209600E-02, + -5.485432000E-06, 1.070474300E-09, -7.695685700E-14, + -3.601486330E+05, -1.238594470E+02] ) + ) + # note = "J12/65" + ) + +species(name = "Pb", + atoms = " Pb:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.502290050E+00, -2.440536430E-05, + 9.170825780E-08, -1.428177710E-10, 7.837621960E-14, + 2.273149190E+04, 6.840093220E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.163423790E+00, -3.496377230E-03, + 2.282631700E-06, -4.767492420E-10, 3.222238000E-14, + 2.216874990E+04, -2.135253050E+00] ) + ) + # note = "J 3/83" + ) + +species(name = "PbBr", + atoms = " Pb:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.190684000E+00, 1.341117800E-03, + -2.097899400E-06, 1.551090800E-09, -4.261791200E-13, + 7.236946900E+03, 8.574778190E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.726876600E+00, -4.391839000E-04, + 3.321558200E-07, -6.530724000E-11, 4.272611200E-15, + 7.098895900E+03, 5.867351590E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbBr2", + atoms = " Pb:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.390209100E+00, 2.528905000E-03, + -4.190374300E-06, 3.136752300E-09, -8.797674500E-13, + -1.454179200E+04, 3.817529290E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.947290600E+00, 6.019900100E-05, + -2.655668500E-08, 5.159601200E-12, -3.683705000E-16, + -1.464544100E+04, 1.180157990E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbBr4", + atoms = " Pb:1 Br:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.137936600E+01, 6.662587200E-03, + -1.094064800E-05, 8.109473900E-09, -2.249557500E-12, + -5.849543100E+04, -1.514016800E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.285697300E+01, 1.632394000E-04, + -7.197039000E-08, 1.397574900E-11, -9.973618700E-16, + -5.877209500E+04, -2.214575000E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbCL", + atoms = " Pb:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.897291200E+00, 2.486746400E-03, + -3.915714400E-06, 2.849428300E-09, -7.726658000E-13, + 5.686257900E+02, 8.428473640E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.701653500E+00, -4.225517100E-04, + 3.268477900E-07, -6.516214700E-11, 4.297860200E-15, + 3.779799100E+02, 4.437441740E+00] ) + ) + # note = "J 6/73" + ) + +species(name = "PbCL+", + atoms = " Pb:1 Cl:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.960480800E+00, 2.251138400E-03, + -3.555930200E-06, 2.613096500E-09, -7.190128400E-13, + 8.842137000E+04, 7.587742850E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.459169700E+00, 9.740730700E-05, + -4.882113400E-09, -2.547224600E-12, 6.247087700E-16, + 8.832584700E+04, 5.213100650E+00] ) + ) + # note = "J 6/73" + ) + +species(name = "PbCL2", + atoms = " Pb:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.639940700E+00, 5.462213400E-03, + -8.805687200E-06, 6.419723000E-09, -1.751859100E-12, + -2.279233600E+04, 4.727904850E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.840167800E+00, 2.060130800E-04, + -1.002343400E-07, 1.926277200E-11, -8.794141900E-16, + -2.301636200E+04, -9.637551090E-01] ) + ) + # note = "J 6/73" + ) + +species(name = "PbCL2+", + atoms = " Pb:1 Cl:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.565387600E+00, 5.746841700E-03, + -9.244504100E-06, 6.725688800E-09, -1.831385800E-12, + 9.633498500E+04, 5.249054000E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.841883700E+00, 1.979247300E-04, + -9.656282200E-08, 2.010644000E-11, -1.324657900E-15, + 9.609401800E+04, -8.160434800E-01] ) + ) + # note = "J 6/73" + ) + +species(name = "PbCL4", + atoms = " Pb:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.628297900E+00, 1.345643800E-02, + -2.157173100E-05, 1.563821500E-08, -4.241492200E-12, + -6.974648700E+04, -1.213484820E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.266967300E+01, 3.751225600E-04, + -1.646537000E-07, 3.184885500E-11, -2.265094700E-15, + -7.032915100E+04, -2.662383220E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbF", + atoms = " Pb:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.245448200E+00, 4.693616600E-03, + -6.978002800E-06, 4.745930400E-09, -1.198392800E-12, + -1.077707300E+04, 1.044373200E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.605219600E+00, -3.262221700E-04, + 2.829825300E-07, -5.712059400E-11, 3.739781300E-15, + -1.108691700E+04, 3.740594230E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbF2", + atoms = " Pb:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.129569400E+00, 1.056162600E-02, + -1.580814400E-05, 1.072574800E-08, -2.709389000E-12, + -5.391612100E+04, 9.140424850E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.635459300E+00, 4.117310900E-04, + -1.800460900E-07, 3.472898400E-11, -2.464526900E-15, + -5.442505900E+04, -2.946861950E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbF4", + atoms = " Pb:1 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.274538700E+00, 2.457628200E-02, + -3.656753700E-05, 2.466326600E-08, -6.187600800E-12, + -1.390091700E+05, -1.529585490E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.212777400E+01, 9.842104600E-04, + -4.300615900E-07, 8.290242100E-11, -5.880020200E-15, + -1.402034500E+05, -2.979094400E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbI", + atoms = " Pb:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.307339500E+00, 8.566823200E-04, + -1.316455400E-06, 9.718723900E-10, -2.652674400E-13, + 1.164574400E+04, 8.941329360E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.718611200E+00, -4.188223600E-04, + 3.097084700E-07, -5.920335300E-11, 3.877397000E-15, + 1.153411000E+04, 6.839194060E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbI2", + atoms = " Pb:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.716922500E+00, 1.184987900E-03, + -1.979155500E-06, 1.492737800E-09, -4.218964600E-13, + -2.422950500E+03, 4.696755990E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.976110800E+00, 2.747457100E-05, + -1.220421600E-08, 2.386248900E-12, -1.713376800E-16, + -2.470789800E+03, 3.471736490E+00] ) + ) + # note = "J12/73" + ) + +species(name = "PbI4", + atoms = " Pb:1 I:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.215026600E+01, 3.538708100E-03, + -5.878243400E-06, 4.407215900E-09, -1.237405000E-12, + -3.073356500E+04, -1.397813230E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.292766100E+01, 8.299828600E-05, + -3.678166700E-08, 7.176429400E-12, -5.143095700E-16, + -3.087762900E+04, -1.765575930E+01] ) + ) + # note = "J12/73" + ) + +species(name = "PbO", + atoms = " Pb:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.653986700E+00, 6.664411500E-03, + -1.031236300E-05, 7.666325900E-09, -2.217386400E-12, + 7.443751300E+03, 1.215671300E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.113624200E+00, 5.377885700E-04, + -2.376339400E-07, 4.242568800E-11, -1.229404400E-15, + 7.151926000E+03, 5.150413190E+00] ) + ) + # note = "J12/71" + ) + +species(name = "PbS", + atoms = " Pb:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.477453200E+00, 3.970029500E-03, + -6.109668900E-06, 4.300868200E-09, -1.131154900E-12, + 1.468475100E+04, 9.477809410E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.091152200E+00, 8.388535900E-04, + -5.715720700E-07, 1.616047600E-10, -1.251189700E-14, + 1.460169500E+04, 6.700748010E+00] ) + ) + # note = "J 6/73" + ) + +species(name = "Pb2", + atoms = " Pb:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.050122200E+00, 2.023000100E-03, + -2.970134600E-06, 2.178595700E-09, -5.975532700E-13, + 3.873164000E+04, 1.027199200E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.459834000E+00, 2.400638100E-04, + -1.925986300E-08, 3.645693700E-12, -2.538093400E-16, + 3.865404900E+04, 8.324960490E+00] ) + ) + # note = "J 9/63" + ) + +species(name = "S", + atoms = " S:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.317256160E+00, 4.780183420E-03, + -1.420826740E-05, 1.565695380E-08, -5.965882990E-12, + 3.250689760E+04, 6.062424340E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.879364980E+00, -5.110503880E-04, + 2.538067190E-07, -4.454554580E-11, 2.667173620E-15, + 3.250137910E+04, 3.981406470E+00] ) + ) + # note = "J 9/82" + ) + +species(name = "S+", + atoms = " S:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.534781450E+05, 5.436270190E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.465243590E+00, 1.142572120E-04, + -1.195726990E-07, 4.387713590E-11, -3.805236390E-15, + 1.534854220E+05, 5.608213710E+00] ) + ) + # note = "J 9/82" + ) + +species(name = "S-", + atoms = " S:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.513530700E+00, 1.935168570E-03, + -5.384383570E-06, 5.403133560E-09, -1.890536840E-12, + 7.643030060E+03, 5.132820020E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.729480600E+00, -2.248949280E-04, + 8.586488540E-08, -1.442561690E-11, 8.874911960E-16, + 7.659800690E+03, 4.399027260E+00] ) + ) + # note = "J 9/82" + ) + +species(name = "SCL", + atoms = " S:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.705588000E+00, 5.271862300E-03, + -1.137182000E-05, 1.049782700E-08, -3.531840800E-12, + 1.756115900E+04, 6.279451230E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.594726000E+00, -5.977178600E-05, + 4.522649500E-08, -9.371843500E-12, 8.073572700E-16, + 1.745242600E+04, 2.379851530E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "SCL2", + atoms = " S:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.596637100E+00, 1.432719300E-02, + -2.519919700E-05, 2.057288200E-08, -6.397690800E-12, + -3.637583700E+03, 1.006055570E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.627146200E+00, 4.274701900E-04, + -1.881688100E-07, 3.576115500E-11, -2.384940000E-15, + -4.200021900E+03, -4.232370250E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "SCL2+", + atoms = " S:1 Cl:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.595872700E+00, 1.429166500E-02, + -2.508499800E-05, 2.044689300E-08, -6.350466900E-12, + 1.069028300E+05, 1.075583370E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.580257000E+00, 5.217640000E-04, + -2.507697900E-07, 5.098812400E-11, -3.273029200E-15, + 1.063548600E+05, -3.294938320E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "SD", + atoms = " S:1 D:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.728559700E+00, -5.093988100E-03, + 9.913460500E-06, -7.329081300E-09, 1.946160800E-12, + 1.539957900E+04, -1.568479520E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.347198800E+00, 1.212964600E-03, + -4.773013800E-07, 8.832366900E-11, -6.074059100E-15, + 1.562714700E+04, 4.877641980E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "SF", + atoms = " S:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.420817500E+00, 4.551119800E-03, + -7.937256400E-06, 6.500471100E-09, -2.028966500E-12, + 3.960950300E+02, 6.547005830E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.369088500E+00, 1.920442400E-04, + -6.663036500E-08, 1.244859000E-11, -7.653749400E-16, + 2.201852600E+02, 2.075968630E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SF+", + atoms = " S:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.666664800E+00, 5.697549100E-03, + -7.605742200E-06, 4.911945500E-09, -1.241451400E-12, + 1.183103300E+05, 1.051501930E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.280724800E+00, 1.036743300E-04, + 5.544166500E-08, -1.143329500E-11, 5.584690600E-16, + 1.179219200E+05, 2.459394670E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SF-", + atoms = " S:1 F:1 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.759793600E+00, 6.865822000E-03, + -1.131451900E-05, 8.874637000E-09, -2.678427000E-12, + -2.348630600E+04, 8.993506810E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.127067200E+00, 6.256934000E-04, + -3.124698600E-07, 7.172247600E-11, -4.706140400E-15, + -2.373488100E+04, 2.553694110E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SF2", + atoms = " S:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.410305600E+00, 1.559012100E-02, + -2.317801800E-05, 1.658349700E-08, -4.646576100E-12, + -3.691637300E+04, 1.350668030E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.119419600E+00, 1.005142400E-03, + -4.465331300E-07, 8.762401000E-11, -6.323651200E-15, + -3.771424100E+04, -4.557174110E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SF2+", + atoms = " S:1 F:2 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.427149000E+00, 1.551754600E-02, + -2.306025900E-05, 1.649961200E-08, -4.624641800E-12, + 8.323955700E+04, 1.412788660E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.120900000E+00, 9.998481700E-04, + -4.399293200E-07, 8.436813700E-11, -5.779537800E-15, + 8.244458500E+04, -3.863075420E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SF2-", + atoms = " S:1 F:2 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.290050300E+00, 1.553861200E-02, + -2.723660400E-05, 2.218279900E-08, -6.886215600E-12, + -4.939192500E+04, 9.817477630E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.584712300E+00, 4.788609000E-04, + -2.140544000E-07, 4.217570300E-11, -3.052391000E-15, + -5.000570500E+04, -5.733347870E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SF3", + atoms = " S:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.877772800E+00, 3.123403500E-02, + -5.157137900E-05, 4.024732200E-08, -1.211059400E-11, + -6.206793900E+04, 1.636943610E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.807689700E+00, 1.367167600E-03, + -6.080833300E-07, 1.188302200E-10, -8.447091500E-15, + -6.344049400E+04, -1.676488690E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "SF3+", + atoms = " S:1 F:3 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.001850800E+00, 2.975515500E-02, + -4.335679400E-05, 3.055496400E-08, -8.463347900E-12, + 4.604418400E+04, 1.944450080E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.138501600E+00, 2.128891400E-03, + -9.483682200E-07, 1.860743600E-10, -1.327172900E-14, + 4.448673000E+04, -1.542124220E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SF3-", + atoms = " S:1 F:3 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.878876100E+00, 3.122617400E-02, + -5.155174900E-05, 4.022678800E-08, -1.210293200E-11, + -9.494705500E+04, 1.564598430E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.809582600E+00, 1.364367800E-03, + -6.075732100E-07, 1.194053200E-10, -8.625933200E-15, + -9.632026500E+04, -1.749437070E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SF4", + atoms = " S:1 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.281964500E+00, 4.356989900E-02, + -7.012516800E-05, 5.367724400E-08, -1.591435600E-11, + -9.358670100E+04, 1.841987030E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.112438300E+01, 2.145799400E-03, + -9.545244400E-07, 1.874611100E-10, -1.353595300E-14, + -9.558166900E+04, -2.887564770E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "SF4+", + atoms = " S:1 F:4 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.961581300E+00, 4.213209400E-02, + -6.915556500E-05, 5.372066600E-08, -1.610589500E-11, + 4.809474000E+04, 1.637990080E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.135194100E+01, 1.887566200E-03, + -8.390406200E-07, 1.641493800E-10, -1.173519500E-14, + 4.622476700E+04, -2.857150820E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SF4-", + atoms = " S:1 F:4 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.079376200E+00, 3.783950300E-02, + -6.690465700E-05, 5.482243400E-08, -1.709284400E-11, + -1.091464200E+05, 5.641787750E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.200332600E+01, 1.200771300E-03, + -5.739827400E-07, 1.229938500E-10, -9.295273400E-15, + -1.106030800E+05, -3.165926510E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SF5", + atoms = " S:1 F:5 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.714766200E+00, 6.871600800E-02, + -1.140793300E-04, 8.933637900E-08, -2.694042900E-11, + -1.109617800E+05, 3.027246780E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.361056300E+01, 2.652313000E-03, + -1.169146300E-06, 2.424513200E-10, -1.831471800E-14, + -1.140029300E+05, -4.301510120E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SF5+", + atoms = " S:1 F:5 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -1.716486100E+00, 6.894004600E-02, + -1.147105100E-04, 8.997786500E-08, -2.716632600E-11, + 1.906114900E+04, 2.944451330E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.368421600E+01, 2.517702300E-03, + -1.085439300E-06, 2.253374500E-10, -1.722391700E-14, + 1.600490800E+04, -4.419972370E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SF5-", + atoms = " S:1 F:5 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.847764900E+00, 5.837636900E-02, + -1.013131400E-04, 8.195697700E-08, -2.531950500E-11, + -1.549932600E+05, 1.385388440E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.432191000E+01, 1.931303300E-03, + -8.621993600E-07, 1.697239500E-10, -1.227486000E-14, + -1.573431500E+05, -4.515925360E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SF6", + atoms = " S:1 F:6 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -3.838808800E+00, 8.322172100E-02, + -1.318168900E-04, 9.963615400E-08, -2.924876700E-11, + -1.483647700E+05, 3.716114260E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.516295000E+01, 4.384231800E-03, + -1.948633700E-06, 3.824719600E-10, -2.760505000E-14, + -1.522680100E+05, -5.441571940E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "SF6-", + atoms = " S:1 F:6 E:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -3.260927200E+00, 8.269536900E-02, + -1.329981200E-04, 1.017376800E-07, -3.014638300E-11, + -1.631086000E+05, 3.542334420E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.542864600E+01, 4.084531700E-03, + -1.816490300E-06, 3.566732800E-10, -2.575000000E-14, + -1.668988400E+05, -5.439612180E+01] ) + ) + # note = "J 6/77" + ) + +species(name = "SH", + atoms = " S:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.442032200E+00, -2.435919700E-03, + 1.906457600E-06, 9.916663000E-10, -9.574076200E-13, + 1.552325800E+04, -1.144490350E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.001453700E+00, 1.339495700E-03, + -4.678966300E-07, 7.880401500E-11, -5.028045300E-15, + 1.590532000E+04, 6.284627150E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "SN", + atoms = " S:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.942297100E+00, -2.003551500E-03, + 7.353464400E-06, -7.516856000E-09, 2.559109800E-12, + 3.056394900E+04, 4.580308050E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.849397600E+00, 7.275678800E-04, + -2.937020300E-07, 5.501362800E-11, -3.812355100E-15, + 3.045996200E+04, 4.431273550E+00] ) + ) + # note = "J 6/61" + ) + +species(name = "SO", + atoms = " S:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.149023300E+00, 1.183934700E-03, + 2.574068600E-06, -4.444341900E-09, 1.873515900E-12, + -4.040757100E+02, 8.319879150E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.014287300E+00, 2.702281700E-04, + 8.289666700E-08, -3.432374100E-11, 3.112144400E-15, + -7.105195600E+02, 3.499735050E+00] ) + ) + # note = "J 6/77" + ) + +species(name = "SOF2", + atoms = " S:1 O:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.474906600E+00, 2.095242600E-02, + -2.416427700E-05, 1.212037700E-08, -1.933873100E-12, + -6.689760200E+04, 1.419734040E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.087421200E+00, 2.109571600E-03, + -9.086691200E-07, 1.734483400E-10, -1.221415800E-14, + -6.823815900E+04, -1.385559160E+01] ) + ) + # note = "J 6/72" + ) + +species(name = "SO2", + atoms = " S:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.266533800E+00, 5.323790200E-03, + 6.843755200E-07, -5.281004700E-09, 2.559045400E-12, + -3.690814800E+04, 9.664651080E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.245136400E+00, 1.970420400E-03, + -8.037576900E-07, 1.514996900E-10, -1.055800400E-14, + -3.755822700E+04, -1.074048920E+00] ) + ) + # note = "J 6/61" + ) + +species(name = "SO2CLF", + atoms = " S:1 O:2 Cl:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.981752800E+00, 2.644916700E-02, + -2.920018200E-05, 1.395761100E-08, -2.030448700E-12, + -6.876149700E+04, 1.273168120E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.011828600E+01, 3.148899400E-03, + -1.347151400E-06, 2.558031000E-10, -1.793825600E-14, + -7.050929100E+04, -2.312785080E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "SO2CL2", + atoms = " S:1 O:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.385167700E+00, 2.321215700E-02, + -2.653211200E-05, 1.349992300E-08, -2.281928100E-12, + -4.480297400E+04, 6.578678800E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.055093700E+01, 2.673430100E-03, + -1.142823000E-06, 2.168620000E-10, -1.519915100E-14, + -4.629505600E+04, -2.430785700E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "SO2F2", + atoms = " S:1 O:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.732468000E+00, 2.850176000E-02, + -2.945379800E-05, 1.240130000E-08, -1.171553300E-12, + -9.278139300E+04, 1.694841000E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.607888500E+00, 3.711102600E-03, + -1.589911400E-06, 3.023246400E-10, -2.122857700E-14, + -9.475476800E+04, -2.284894200E+01] ) + ) + # note = "J 6/71" + ) + +species(name = "SO3", + atoms = " S:1 O:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.578038500E+00, 1.455633500E-02, + -9.176417300E-06, -7.920302200E-10, 1.970947300E-12, + -4.893175300E+04, 1.226513840E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.075737600E+00, 3.176338700E-03, + -1.353576000E-06, 2.563091200E-10, -1.793604400E-14, + -5.021137600E+04, -1.118751760E+01] ) + ) + # note = "J 9/65" + ) + +species(name = "S2", + atoms = " S:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.858575400E+00, 5.175835500E-03, + -6.549343400E-06, 3.399864300E-09, -4.015676600E-13, + 1.441240200E+04, 9.891278490E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.988606900E+00, 5.577505100E-04, + -5.018927800E-08, -1.547031900E-11, 2.666177100E-15, + 1.419801500E+04, 4.491191590E+00] ) + ) + # note = "J 9/77" + ) + +species(name = "S2CL", + atoms = " S:2 Cl:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.974269320E+00, 1.907829040E-02, + -3.762654130E-05, 3.403749790E-08, -1.156846640E-11, + 7.989229800E+03, 1.384243540E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.623204180E+00, 4.182846340E-04, + -1.756591200E-07, 3.097183840E-11, -1.751559220E-15, + 7.374959000E+03, -2.985118920E+00] ) + ) + # note = "J 6/78" + ) + +species(name = "S2CL2", + atoms = " S:2 Cl:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.479057080E+00, 3.253700280E-02, + -6.639046200E-05, 6.211248450E-08, -2.171123250E-11, + -4.022255670E+03, 1.227918240E+01] ), + NASA( [ 1000.00, 6000.00], [ 9.468410200E+00, 1.121863520E-03, + -6.927842800E-07, 1.386544630E-10, -9.293978390E-15, + -5.050195240E+03, -1.529504410E+01] ) + ) + # note = "L 4/93" + ) + +species(name = "S2F2,thiothiony", + atoms = " S:2 F:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.493723930E+00, 3.425756350E-02, + -5.946568310E-05, 4.876903440E-08, -1.537616840E-11, + -4.981034900E+04, 1.873751380E+01] ), + NASA( [ 1000.00, 6000.00], [ 8.940186710E+00, 1.104501870E-03, + -4.362276570E-07, 7.462984780E-11, -4.620439510E-15, + -5.125747460E+04, -1.667391370E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "S2O", + atoms = " S:2 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.841425700E+00, 1.218841000E-02, + -1.600024100E-05, 1.030928900E-08, -2.644912000E-12, + -8.060301500E+03, 1.291807360E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.903752400E+00, 1.236997500E-03, + -5.457079000E-07, 1.065984200E-10, -7.668824300E-15, + -8.775209000E+03, -2.269998360E+00] ) + ) + # note = "J 9/65" + ) + +species(name = "S8", + atoms = " S:8 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.197004960E+00, 9.155035970E-02, + -1.912636110E-04, 1.801771960E-07, -6.303936950E-11, + 8.120716910E+03, 7.580439170E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.072495210E+01, 1.346861110E-03, + -5.372259460E-07, 9.281228530E-11, -5.819513400E-15, + 5.533443240E+03, -6.748052870E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Si", + atoms = " Si:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.764761500E+00, -7.120709850E-03, + 1.573183010E-05, -1.538249690E-08, 5.531949330E-12, + 5.320507820E+04, 3.021687720E-01] ), + NASA( [ 1000.00, 6000.00], [ 2.580611570E+00, -2.060446540E-04, + 1.930516770E-07, -4.564851070E-11, 3.364117160E-15, + 5.338299330E+04, 5.606574230E+00] ) + ) + # note = "J 3/83" + ) + +species(name = "Si+", + atoms = " Si:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.244190730E+00, -7.511608630E-03, + 1.333683330E-05, -1.094061490E-08, 3.413572230E-12, + 1.484087920E+05, -2.789173340E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.647945790E+00, -1.601090080E-04, + 6.540241550E-08, -1.162246550E-11, 7.559612720E-16, + 1.487034130E+05, 4.731718480E+00] ) + ) + # note = "J 3/83" + ) + +species(name = "SiBr", + atoms = " Si:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.971978800E+00, 4.774527900E-03, + -1.113068400E-05, 1.068120200E-08, -3.672638300E-12, + 2.698630400E+04, 6.111957190E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.668169200E+00, -1.016941300E-04, + 7.083899200E-08, -1.433485600E-11, 1.407673900E-15, + 2.693345900E+04, 3.224972590E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiBr2", + atoms = " Si:1 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.671972900E+00, 1.029289700E-02, + -1.871401900E-05, 1.563790000E-08, -4.945652100E-12, + -8.003916300E+03, 7.726655190E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.722477000E+00, 3.805792900E-04, + -2.013858900E-07, 4.435117200E-11, -2.923965100E-15, + -8.359298000E+03, -1.819557110E+00] ) + ) + # note = "J12/77" + ) + +species(name = "SiBr3", + atoms = " Si:1 Br:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.772960200E+00, 1.837178700E-02, + -3.301933200E-05, 2.736786400E-08, -8.603878700E-12, + -2.655455400E+04, 5.186270290E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.585496800E+00, 4.792384600E-04, + -2.146059500E-07, 4.233826900E-11, -3.067079400E-15, + -2.724450600E+04, -1.270130800E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SiBr4", + atoms = " Si:1 Br:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.610893700E+00, 2.323938400E-02, + -4.154574600E-05, 3.430524100E-08, -1.075507600E-11, + -5.296820900E+04, -3.099039310E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.245608700E+01, 6.284438400E-04, + -2.812895100E-07, 5.547441400E-11, -4.017595900E-15, + -5.385052100E+04, -2.586090900E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiC", + atoms = " Si:1 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ -2.192469600E+00, 4.134270000E-02, + -7.827411300E-05, 6.069412000E-08, -1.672920700E-11, + 8.595314300E+04, 2.876924300E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.579903300E+00, -1.340934400E-03, + 7.548304700E-07, -1.654377800E-10, 1.266334500E-14, + 8.504612000E+04, -5.650196310E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "SiC2", + atoms = " Si:1 C:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.880633300E+00, 6.794776700E-03, + -5.027796200E-06, 1.057323200E-09, 2.551314200E-13, + 7.255824900E+04, 4.550567190E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.701152300E+00, 2.122069000E-03, + -1.145776900E-06, 3.103876800E-10, -2.776389700E-14, + 7.202339100E+04, -4.973732110E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "SiC4H12", + atoms = " Si:1 C:4 H:12 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 4.946186260E+00, 4.114297430E-02, + -2.932337420E-07, -2.290036940E-08, 1.095667730E-11, + -3.773104920E+04, 3.186310990E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.156370180E+01, 3.281120640E-02, + -1.263708910E-05, 2.268685110E-09, -1.542694770E-13, + -4.013813660E+04, -3.363411950E+01] ) + ) + # note = "J12/60" + ) + +species(name = "SiCL", + atoms = " Si:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.739653300E+00, 3.116471600E-03, + -5.247438300E-06, 4.201254300E-09, -1.288722200E-12, + 2.263826100E+04, 6.567349510E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.398289400E+00, 1.674078700E-04, + -5.360624700E-08, 9.573154900E-12, -4.453089200E-16, + 2.251314500E+04, 3.444958210E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiCL2", + atoms = " Si:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.710996100E+00, 1.396635200E-02, + -2.471105400E-05, 2.025921900E-08, -6.319370300E-12, + -2.182594900E+04, 9.461581800E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.630788900E+00, 4.385327900E-04, + -1.981135100E-07, 3.700587300E-11, -2.071439400E-15, + -2.236071900E+04, -4.274870200E+00] ) + ) + # note = "J12/77" + ) + +species(name = "SiCL3", + atoms = " Si:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.262702700E+00, 2.405086900E-02, + -4.218488200E-05, 3.437393000E-08, -1.067446200E-11, + -4.898120500E+04, 8.405238550E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.359463100E+00, 7.383483800E-04, + -3.299404900E-07, 6.498997300E-11, -4.702324100E-15, + -4.993006800E+04, -1.564801100E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SiCL4", + atoms = " Si:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.104001000E+00, 2.493311400E-02, + -3.670326300E-05, 2.444874800E-08, -6.037015500E-12, + -8.235927300E+04, -9.764004980E-01] ), + NASA( [ 1000.00, 5000.00], [ 1.208965500E+01, 1.019073500E-03, + -4.416786500E-07, 8.448157300E-11, -5.949158000E-15, + -8.359025000E+04, -2.992693360E+01] ) + ) + # note = "J12/70" + ) + +species(name = "SiF", + atoms = " Si:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.245353500E+00, 2.970233100E-03, + -2.485799000E-06, 5.630483600E-10, 1.441603400E-13, + -3.494427200E+03, 7.884434690E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.122783500E+00, 4.680489100E-04, + -1.867767500E-07, 3.524209300E-11, -2.301504600E-15, + -3.725861900E+03, 3.388586690E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiF2", + atoms = " Si:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.514824000E+00, 1.450415700E-02, + -2.059477900E-05, 1.413017600E-08, -3.813232600E-12, + -7.194243300E+04, 1.300463480E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.056210400E+00, 1.072195200E-03, + -4.712975800E-07, 9.017476400E-11, -6.137090500E-15, + -7.272708300E+04, -4.359947570E+00] ) + ) + # note = "J12/77" + ) + +species(name = "SiF3", + atoms = " Si:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.348022000E+00, 2.466503300E-02, + -3.510935000E-05, 2.423269000E-08, -6.590941600E-12, + -1.320687200E+05, 1.459018300E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.348819100E+00, 1.877236900E-03, + -8.317712500E-07, 1.629071800E-10, -1.173853300E-14, + -1.333998700E+05, -1.483438900E+01] ) + ) + # note = "J12/77" + ) + +species(name = "SiF4", + atoms = " Si:1 F:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.189306800E+00, 3.370200700E-02, + -4.672317900E-05, 3.158463800E-08, -8.450611400E-12, + -1.960328900E+05, 1.330047100E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.047847300E+01, 2.858675600E-03, + -1.264631400E-06, 2.474686300E-10, -1.782429600E-14, + -1.979055000E+05, -2.750747800E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "SiH", + atoms = " Si:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.336295400E+00, -5.051242200E-03, + 1.142309600E-05, -9.389065200E-09, 2.771814900E-12, + 4.415071400E+04, 1.882146790E-01] ), + NASA( [ 1000.00, 5000.00], [ 3.045319400E+00, 1.558752600E-03, + -6.207267700E-07, 1.151827000E-10, -7.628977300E-15, + 4.433112600E+04, 6.044655450E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiH+", + atoms = " Si:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.729258800E+00, -1.788161100E-03, + 4.246925700E-06, -2.558013000E-09, 4.063374000E-13, + 1.369707100E+05, 1.583873140E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.982859500E+00, 1.545522200E-03, + -5.903855500E-07, 1.051740000E-10, -6.822023400E-15, + 1.370795400E+05, 5.040350140E+00] ) + ) + # note = "J12/71" + ) + +species(name = "SiHBr3", + atoms = " Si:1 H:1 Br:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.337011000E+00, 2.887299000E-02, + -4.695412000E-05, 3.752303800E-08, -1.163491900E-11, + -3.866383400E+04, 1.032167120E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.027483100E+01, 2.866610400E-03, + -1.211258100E-06, 2.300491600E-10, -1.623350400E-14, + -3.984657600E+04, -1.803406580E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiHCL3", + atoms = " Si:1 H:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.674204200E+00, 3.438038500E-02, + -5.495385600E-05, 4.310333200E-08, -1.315701200E-11, + -6.160172300E+04, 1.433350950E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.933563500E+00, 3.248122000E-03, + -1.378717100E-06, 2.626607300E-10, -1.857488600E-14, + -6.307084900E+04, -2.047205850E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiHF3", + atoms = " Si:1 H:1 F:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 9.065481600E-01, 3.326526700E-02, + -4.392882500E-05, 2.932836700E-08, -7.864918800E-12, + -1.458419600E+05, 1.997326570E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.754882800E+00, 4.552775600E-03, + -1.947753100E-06, 3.730079400E-10, -2.647397300E-14, + -1.476565800E+05, -1.882697730E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "SiHI3", + atoms = " Si:1 H:1 I:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.521122500E+00, 2.484105400E-02, + -4.083398400E-05, 3.306839300E-08, -1.037377400E-11, + -1.140718900E+04, 7.784669510E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.053360400E+01, 2.588800000E-03, + -1.092190300E-06, 2.072068700E-10, -1.460985400E-14, + -1.239734500E+04, -1.609503420E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiH2", + atoms = " Si:1 H:2 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 5.310785300E+00, -1.446994500E-02, + 5.142714600E-05, -5.473347400E-08, 1.928828600E-11, + 2.821339400E+04, -2.822418620E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.859385500E+00, 1.638256500E-03, + -8.439625200E-07, 1.832333000E-10, -1.411436500E-14, + 2.716569900E+04, -1.006463100E+01] ) + ) + # note = "TPIS79" + ) + +species(name = "SiH2Br2", + atoms = " Si:1 H:2 Br:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.000742700E+00, 3.028263100E-02, + -4.468733600E-05, 3.441143100E-08, -1.054872000E-11, + -2.450750700E+04, 1.856673660E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.169260100E+00, 5.028560100E-03, + -2.109756400E-06, 3.987215500E-10, -2.803583800E-14, + -2.584247500E+04, -1.137119140E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiH2CL2", + atoms = " Si:1 H:2 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.026493800E+00, 3.301358900E-02, + -4.796106200E-05, 3.622567600E-08, -1.092044700E-11, + -3.996338700E+04, 2.062885730E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.912140400E+00, 5.312789100E-03, + -2.233672900E-06, 4.227481200E-10, -2.975568400E-14, + -4.146850300E+04, -1.288676270E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiH2F2", + atoms = " Si:1 H:2 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.937599800E-01, 3.007988000E-02, + -3.587413600E-05, 2.266855800E-08, -5.918592500E-12, + -9.623032700E+04, 2.286075360E+01] ), + NASA( [ 1000.00, 5000.00], [ 7.098185700E+00, 6.214649000E-03, + -2.627235200E-06, 4.990908500E-10, -3.522164100E-14, + -9.791874500E+04, -1.167256940E+01] ) + ) + # note = "J 6/76" + ) + +species(name = "SiH2I2", + atoms = " Si:1 H:2 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.656281300E+00, 2.862617600E-02, + -4.300370000E-05, 3.370803100E-08, -1.047554700E-11, + -6.325261200E+03, 1.727092510E+01] ), + NASA( [ 1000.00, 5000.00], [ 8.357309900E+00, 4.816358600E-03, + -2.016144500E-06, 3.804369900E-10, -2.672058400E-14, + -7.541766700E+03, -1.029735490E+01] ) + ) + # note = "J12/76" + ) + +species(name = "SiH3", + atoms = " Si:1 H:3 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.050680700E+00, 3.310328300E-03, + 1.109399700E-05, -1.448349000E-08, 5.188035400E-12, + 2.405142400E+04, 7.294820680E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.127037600E+00, 6.183886600E-03, + -2.612209600E-06, 4.957969500E-10, -3.496052000E-14, + 2.340680100E+04, 1.518084230E-01] ) + ) + # note = "TPIS79" + ) + +species(name = "SiH3Br", + atoms = " Si:1 H:3 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.006033500E+00, 2.530787600E-02, + -3.039643300E-05, 2.108215000E-08, -6.205539800E-12, + -1.060536000E+04, 1.946754460E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.135036300E+00, 7.111291400E-03, + -2.973507500E-06, 5.606185700E-10, -3.935084700E-14, + -1.187990000E+04, -6.178265690E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiH3CL", + atoms = " Si:1 H:3 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.830798500E-01, 2.616172800E-02, + -3.085407300E-05, 2.087839500E-08, -6.015367800E-12, + -1.816197900E+04, 2.023653790E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.991971800E+00, 7.271893800E-03, + -3.044159000E-06, 5.743962000E-10, -4.034092900E-14, + -1.951493000E+04, -6.867643670E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiH3F", + atoms = " Si:1 H:3 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.736972600E-01, 2.337103600E-02, + -2.192597300E-05, 1.143866800E-08, -2.621759800E-12, + -4.626867600E+04, 2.045412980E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.573611900E+00, 7.741007500E-03, + -3.250275800E-06, 6.145479200E-10, -4.322377400E-14, + -4.768848600E+04, -6.210022920E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SiH3I", + atoms = " Si:1 H:3 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.365932000E+00, 2.459257500E-02, + -2.999179500E-05, 2.121514300E-08, -6.348297100E-12, + -1.525835500E+03, 1.864039790E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.268666300E+00, 6.965230500E-03, + -2.910274000E-06, 5.484146700E-10, -3.848008800E-14, + -2.737352700E+03, -5.828451560E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiH4", + atoms = " Si:1 H:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 1.592263900E+00, 1.284109300E-02, + -1.945627800E-06, -4.310637200E-09, 1.987488000E-12, + 3.105594200E+03, 1.183360250E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.209203800E+00, 9.082262800E-03, + -3.790539600E-06, 7.136988800E-10, -5.004628600E-14, + 2.134462700E+03, -2.727687040E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SiI", + atoms = " Si:1 I:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.804471200E+00, 1.220530600E-02, + -2.587699700E-05, 2.317096600E-08, -7.579847200E-12, + 3.652948800E+04, 1.187530770E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.974953200E+00, -4.080192100E-04, + 1.919967400E-07, -3.888655300E-11, 3.855242200E-15, + 3.626172700E+04, 2.301669200E+00] ) + ) + # note = "J12/76" + ) + +species(name = "SiI2", + atoms = " Si:1 I:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.321551050E+00, 1.442733800E-02, + -3.105176470E-05, 2.983192860E-08, -1.057854730E-11, + 9.412182020E+03, 1.081785670E+01] ), + NASA( [ 1000.00, 6000.00], [ 6.743118550E+00, 3.619831560E-04, + -1.952786440E-07, 4.358232010E-11, -2.899867920E-15, + 9.069753640E+03, 1.290972130E-02] ) + ) + # note = "J12/77" + ) + +species(name = "SiN", + atoms = " Si:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.105195500E+00, 1.485244900E-03, + 1.856106000E-06, -3.773488300E-09, 1.683533100E-12, + 4.378570900E+04, 7.888560520E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.985862100E+00, -8.792705600E-06, + 5.426953900E-07, -1.795101700E-10, 1.633706900E-14, + 4.352480900E+04, 3.174680020E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "SiO", + atoms = " Si:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.252827600E+00, 4.182312600E-04, + 3.780620200E-06, -5.102448300E-09, 1.947131700E-12, + -1.309034000E+04, 6.661743290E+00] ), + NASA( [ 1000.00, 5000.00], [ 3.747883500E+00, 8.199194300E-04, + -3.252539600E-07, 5.732496200E-11, -3.510894400E-15, + -1.331743000E+04, 3.661003390E+00] ) + ) + # note = "J 9/67" + ) + +species(name = "SiO2", + atoms = " Si:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.262805800E+00, 8.501658400E-03, + -5.738814400E-06, 1.289657300E-11, 9.754497600E-13, + -3.803597100E+04, 6.668075290E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.862039500E+00, 1.771978400E-03, + -7.519419400E-07, 1.418058400E-10, -9.885641700E-15, + -3.876781600E+04, -6.847187110E+00] ) + ) + # note = "J 9/67" + ) + +species(name = "SiS", + atoms = " Si:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.843069300E+00, 5.115028100E-03, + -6.331607300E-06, 3.438732600E-09, -6.262338500E-13, + 1.171893100E+04, 9.446191920E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.173577200E+00, 3.928259500E-04, + -1.500517200E-07, 2.324255700E-11, -6.056886700E-16, + 1.141775300E+04, 2.868882320E+00] ) + ) + # note = "J12/71" + ) + +species(name = "Si2", + atoms = " Si:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.815539300E+00, -1.909654200E-04, + 5.923341600E-06, -5.764960300E-09, 1.477500400E-12, + 6.978465500E+04, 5.740718590E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.047413900E+00, 5.399003400E-04, + -4.307837600E-07, 1.135520600E-10, -9.626287100E-15, + 6.913318500E+04, -1.910294810E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "Si2C", + atoms = " Si:2 C:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.043893800E+00, 7.345695700E-03, + -6.641254900E-06, 2.488504700E-09, -1.819655500E-13, + 6.293541700E+04, 4.184412090E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.251098800E+00, 1.322417600E-03, + -7.280521400E-07, 2.326942400E-10, -2.328514800E-14, + 6.230099900E+04, -7.283478510E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "Si2N", + atoms = " Si:2 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.668673500E+00, 1.130184000E-02, + -1.363711900E-05, 7.168805000E-09, -1.237831000E-12, + 4.631808300E+04, 7.122709640E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.670991200E+00, 9.191788200E-04, + -3.951713000E-07, 7.439714500E-11, -5.028469100E-15, + 4.562015400E+04, -7.798277660E+00] ) + ) + # note = "J 3/67" + ) + +species(name = "Si3", + atoms = " Si:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.597912900E+00, 1.071527400E-02, + -1.610042200E-05, 1.096920700E-08, -2.783287500E-12, + 7.476632400E+04, 3.455330090E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.421336000E+00, -1.170994800E-04, + 8.982077500E-08, 7.193596400E-12, -2.567083700E-15, + 7.414669900E+04, -1.035211100E+01] ) + ) + # note = "J 3/67" + ) + +species(name = "Sr", + atoms = " Sr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.897917880E+04, 5.557820920E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.052399820E+00, 1.195164490E-03, + -1.074533950E-06, 3.575309760E-10, -3.056132800E-14, + 1.910410430E+04, 7.880299280E+00] ) + ) + # note = "L 4/93" + ) + +species(name = "SrBr", + atoms = " Sr:1 Br:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.097007100E+00, 1.932106000E-03, + -3.506889200E-06, 2.996619400E-09, -9.633169600E-13, + -1.200064400E+04, 7.934384990E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.343615800E+00, 3.989594300E-04, + -2.597612600E-07, 7.932074700E-11, -6.608383000E-15, + -1.202507300E+04, 6.873710790E+00] ) + ) + # note = "J12/74" + ) + +species(name = "SrCL", + atoms = " Sr:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.903618500E+00, 2.463442800E-03, + -3.877696500E-06, 2.830337500E-09, -7.730412000E-13, + -1.613974000E+04, 7.516646830E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.334441800E+00, 3.895211200E-04, + -2.446131200E-07, 7.328436500E-11, -5.973332500E-15, + -1.620878100E+04, 5.525255930E+00] ) + ) + # note = "J12/72" + ) + +species(name = "SrCL2", + atoms = " Sr:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.890714100E+00, 4.494278900E-03, + -7.298940400E-06, 5.358813500E-09, -1.473063100E-12, + -5.881640400E+04, 3.425250710E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.896436200E+00, 1.178871800E-04, + -5.185408000E-08, 1.004883100E-11, -7.158434800E-16, + -5.900690400E+04, -1.354348390E+00] ) + ) + # note = "J12/72" + ) + +species(name = "SrF", + atoms = " Sr:1 F:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.271394700E+00, 4.621335400E-03, + -6.900775000E-06, 4.723358200E-09, -1.204680700E-12, + -3.655563000E+04, 9.107020690E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.245716400E+00, 4.663358700E-04, + -2.692589600E-07, 7.356008000E-11, -5.721376000E-15, + -3.674029900E+04, 4.466078690E+00] ) + ) + # note = "J12/72" + ) + +species(name = "SrF+", + atoms = " Sr:1 F:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.109379100E+00, 5.027003500E-03, + -7.268933800E-06, 4.794850100E-09, -1.168384700E-12, + 2.260720200E+04, 9.074110380E+00] ), + NASA( [ 1000.00, 5000.00], [ 5.613551800E+00, -2.181091700E-03, + 1.221524800E-06, -1.633297100E-10, 3.258450900E-15, + 2.188214000E+04, -3.901420320E+00] ) + ) + # note = "J12/72" + ) + +species(name = "SrF2", + atoms = " Sr:1 F:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.813551600E+00, 8.382160200E-03, + -1.299953100E-05, 9.135439200E-09, -2.398987700E-12, + -9.385054300E+04, 5.664080210E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.754789100E+00, 2.776196400E-04, + -1.215887800E-07, 2.347878000E-11, -1.667519200E-15, + -9.423363200E+04, -3.641953890E+00] ) + ) + # note = "J12/72" + ) + +species(name = "SrI2", + atoms = " Sr:1 I:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.045040700E+00, 1.884169900E-03, + -3.117514900E-06, 2.329939100E-09, -6.523213300E-13, + -3.522301300E+04, 2.578217830E-01] ), + NASA( [ 1000.00, 5000.00], [ 7.460367800E+00, 4.540347600E-05, + -2.009327400E-08, 3.915550600E-12, -2.803098000E-16, + -3.530033300E+04, -1.708769270E+00] ) + ) + # note = "J 6/74" + ) + +species(name = "SrO", + atoms = " Sr:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.732999700E+00, 6.739941800E-03, + -1.080048500E-05, 8.176793700E-09, -2.361987100E-12, + -2.644357400E+03, 1.050129000E+01] ), + NASA( [ 1000.00, 5000.00], [ 9.640302400E+00, -1.128515000E-02, + 7.884232200E-06, -1.903587700E-09, 1.514654700E-13, + -4.749948700E+03, -2.579817000E+01] ) + ) + # note = "J 6/74" + ) + +species(name = "SrOH", + atoms = " Sr:1 O:1 H:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.527649400E+00, 1.736485400E-02, + -3.173572300E-05, 2.690964600E-08, -8.527009900E-12, + -2.601267800E+04, 1.126032660E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.357084000E+00, 1.735073500E-03, + -6.833964700E-07, 1.410706800E-10, -1.041503900E-14, + -2.638917300E+04, -1.387387540E+00] ) + ) + # note = "J12/75" + ) + +species(name = "SrOH+", + atoms = " Sr:1 O:1 H:1 E:-1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.610180700E+00, 1.706767700E-02, + -3.127555600E-05, 2.657085400E-08, -8.430139500E-12, + 3.727522900E+04, 1.020408670E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.495198100E+00, 1.421406600E-03, + -4.324501900E-07, 6.234242900E-11, -3.479748400E-15, + 3.687410700E+04, -2.770683580E+00] ) + ) + # note = "J 6/76" + ) + +species(name = "SrO2H2", + atoms = " Sr:1 O:2 H:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.365885000E+00, 3.370994000E-02, + -6.202817100E-05, 5.284326900E-08, -1.679604600E-11, + -7.370936800E+04, 9.785596880E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.023267400E+00, 2.804910200E-03, + -8.479100700E-07, 1.213249300E-10, -6.715418300E-15, + -7.448503500E+04, -1.560266800E+01] ) + ) + # note = "J12/75" + ) + +species(name = "SrS", + atoms = " Sr:1 S:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.486331800E+00, 4.384131100E-03, + -7.506755300E-06, 5.819281800E-09, -1.635320400E-12, + 1.183485400E+04, 8.352630690E+00] ), + NASA( [ 1000.00, 5000.00], [ 8.983470000E+00, -1.099569100E-02, + 8.658841700E-06, -2.295548200E-09, 1.965968300E-13, + 1.030141900E+04, -2.007626680E+01] ) + ) + # note = "J 9/77" + ) + +species(name = "Ta", + atoms = " Ta:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.838163100E+00, -2.787856300E-03, + 6.897333400E-06, -4.557175100E-09, 9.412526800E-13, + 9.327879300E+04, 6.668936790E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.510909400E+00, 2.702950100E-03, + -1.070559400E-06, 2.023885300E-10, -1.397017300E-14, + 9.351776200E+04, 1.298270600E+01] ) + ) + # note = "J12/72" + ) + +species(name = "TaO", + atoms = " Ta:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.934010800E+00, 3.059203800E-03, + -1.939636400E-06, 1.628883000E-10, 3.015253500E-13, + 2.215447200E+04, 1.145464600E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.499660300E+00, 1.511253500E-03, + -6.538457800E-07, 1.778431400E-10, -1.691940500E-14, + 2.199415100E+04, 8.526958990E+00] ) + ) + # note = "J12/73" + ) + +species(name = "TaO2", + atoms = " Ta:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.180382600E+00, 9.470280500E-03, + -8.734686800E-06, 2.452268900E-09, 3.365342100E-13, + -2.545176200E+04, 1.313035300E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.970166900E+00, 1.179212800E-03, + -5.651741300E-07, 1.311378700E-10, -1.056443700E-14, + -2.616948100E+04, -1.073998010E+00] ) + ) + # note = "J12/73" + ) + +species(name = "Ti", + atoms = " Ti:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.144481190E+00, -6.804690090E-03, + 1.188677650E-05, -9.752234620E-09, 3.090644230E-12, + 5.594383520E+04, -3.481878220E-01] ), + NASA( [ 1000.00, 6000.00], [ 3.037743140E+00, -1.111171440E-03, + 7.585710900E-07, -1.270737730E-10, 6.908192790E-15, + 5.612367280E+04, 4.730018880E+00] ) + ) + # note = "J 6/79" + ) + +species(name = "Ti+", + atoms = " Ti:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.795111280E+00, 2.522311760E-03, + -5.631214010E-06, 4.163711690E-09, -1.014433220E-12, + 1.359959990E+05, 5.619515800E+00] ), + NASA( [ 1000.00, 6000.00], [ 3.673716390E+00, -1.485595250E-03, + 7.822667350E-07, -1.438532270E-10, 8.952843940E-15, + 1.358557350E+05, 1.531501800E+00] ) + ) + # note = "J 3/84" + ) + +species(name = "Ti-", + atoms = " Ti:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 3.589586330E+00, -4.914444200E-03, + 9.064832200E-06, -7.662284030E-09, 2.447241570E-12, + 5.438697870E+04, 2.769156480E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.585260860E+00, -9.084194790E-05, + 3.643232750E-08, -6.316400980E-12, 3.970350410E-16, + 5.456434670E+04, 7.457110660E+00] ) + ) + # note = "J 3/84" + ) + +species(name = "TiCL", + atoms = " Ti:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.854308900E+00, 7.959334500E-03, + -9.821116200E-06, 5.241998100E-09, -9.798617700E-13, + 1.744121600E+04, 1.173022460E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.296976000E+00, -1.640169200E-04, + 1.571976100E-07, -3.856708900E-11, 3.073966300E-15, + 1.685767400E+04, -4.944726710E-01] ) + ) + # note = "J12/68" + ) + +species(name = "TiCL2", + atoms = " Ti:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.972347500E+00, 1.127733500E-02, + -2.058191600E-05, 1.718665000E-08, -5.404959000E-12, + -3.036628500E+04, 2.559096380E+00] ), + NASA( [ 1000.00, 5000.00], [ 7.762485200E+00, -9.387242500E-04, + 8.012151800E-07, -1.904803000E-10, 1.496154500E-14, + -3.091580500E+04, -1.075260110E+01] ) + ) + # note = "J12/68" + ) + +species(name = "TiCL3", + atoms = " Ti:1 Cl:3 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.880155700E+00, 3.355893300E-02, + -5.995746000E-05, 4.886366400E-08, -1.509099200E-11, + -6.677602300E+04, 1.395820880E+01] ), + NASA( [ 1000.00, 5000.00], [ 1.000810300E+01, 4.193637400E-04, + -2.150487300E-07, 4.533701800E-11, -3.454683800E-15, + -6.806125000E+04, -1.951065320E+01] ) + ) + # note = "J12/68" + ) + +species(name = "TiCL4", + atoms = " Ti:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 6.949675700E+00, 2.604965900E-02, + -4.652030200E-05, 3.838483400E-08, -1.202791500E-11, + -9.467783100E+04, -2.925750940E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.238603000E+01, 7.093131600E-04, + -3.174607800E-07, 6.260395800E-11, -4.533703800E-15, + -9.566907800E+04, -2.847159560E+01] ) + ) + # note = "J12/67" + ) + +species(name = "TiO", + atoms = " Ti:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.119888100E+00, 3.120248700E-03, + -1.329707300E-06, -1.333836200E-09, 9.631582800E-13, + 5.486871900E+03, 9.442612030E+00] ), + NASA( [ 1000.00, 5000.00], [ 4.136017600E+00, 7.392645800E-04, + -4.544446400E-07, 1.304365800E-10, -1.152255700E-14, + 5.198348300E+03, 4.122370430E+00] ) + ) + # note = "J12/73" + ) + +species(name = "TiOCL", + atoms = " Ti:1 O:1 Cl:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.409385600E+00, 1.517055400E-02, + -2.442848300E-05, 1.873452100E-08, -5.568068400E-12, + -3.088784600E+04, 8.694426170E+00] ), + NASA( [ 1000.00, 5000.00], [ 6.831992400E+00, 7.635938700E-04, + -3.395308900E-07, 6.666706900E-11, -4.813294600E-15, + -3.158231100E+04, -7.753816130E+00] ) + ) + # note = "J 9/63" + ) + +species(name = "TiOCL2", + atoms = " Ti:1 O:1 Cl:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 5.440814000E+00, 1.770504900E-02, + -2.952524100E-05, 2.324732800E-08, -7.047977700E-12, + -6.780685400E+04, 3.450773250E+00] ), + NASA( [ 1000.00, 5000.00], [ 9.336865500E+00, 7.596998700E-04, + -3.382737800E-07, 6.648386300E-11, -4.803379300E-15, + -6.857264500E+04, -1.514417720E+01] ) + ) + # note = "J 9/63" + ) + +species(name = "TiO2", + atoms = " Ti:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.014271700E+00, 1.094210100E-02, + -1.287858800E-05, 7.118952900E-09, -1.492751000E-12, + -3.802050100E+04, 1.136439750E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.845506100E+00, 1.393821300E-03, + -6.640306200E-07, 1.385738000E-10, -9.884218400E-15, + -3.870059300E+04, -2.795999030E+00] ) + ) + # note = "J12/73" + ) + +species(name = "V", + atoms = " V:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 4.517369300E+00, -7.929066000E-03, + 1.338083900E-05, -8.828290100E-09, 1.894530700E-12, + 6.090141700E+04, -1.969717910E+00] ), + NASA( [ 1000.00, 5000.00], [ 2.917785200E+00, 4.623689000E-04, + -4.973203000E-07, 1.677523300E-10, -1.520255200E-14, + 6.106427300E+04, 5.106214690E+00] ) + ) + # note = "J 6/73" + ) + +species(name = "VCL4", + atoms = " V:1 Cl:4 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 7.116646200E+00, 2.542321700E-02, + -4.549901700E-05, 3.758388600E-08, -1.178034400E-11, + -6.612389300E+04, -2.330954750E+00] ), + NASA( [ 1000.00, 5000.00], [ 1.271864700E+01, 1.660017600E-05, + 1.416149800E-07, -3.476183300E-11, 2.288976300E-15, + -6.718799200E+04, -2.884801030E+01] ) + ) + # note = "L 2/76" + ) + +species(name = "VN", + atoms = " V:1 N:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.723359000E+00, 4.164298900E-03, + -2.191281200E-06, -1.235187200E-09, 1.079183300E-12, + 6.192789300E+04, 1.141735790E+01] ), + NASA( [ 1000.00, 5000.00], [ 4.185228000E+00, 6.151472000E-04, + -3.577633500E-07, 1.074886200E-10, -9.727550500E-15, + 6.151154000E+04, 3.776186610E+00] ) + ) + # note = "J12/73" + ) + +species(name = "VO", + atoms = " V:1 O:1 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 2.943844100E+00, 2.905923400E-03, + -9.951657500E-07, -1.408659200E-09, 9.243850800E-13, + 1.435274600E+04, 1.018643100E+01] ), + NASA( [ 1000.00, 5000.00], [ 3.911470200E+00, 7.754779200E-04, + -4.226378600E-07, 1.160883800E-10, -1.007072400E-14, + 1.406520400E+04, 5.071854090E+00] ) + ) + # note = "J12/73" + ) + +species(name = "VO2", + atoms = " V:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.193785900E+00, 9.297945700E-03, + -8.342246900E-06, 2.104917000E-09, 4.458264500E-13, + -2.927549100E+04, 1.128721900E+01] ), + NASA( [ 1000.00, 5000.00], [ 5.947014700E+00, 1.168677900E-03, + -5.053637900E-07, 9.672361100E-11, -6.824588300E-15, + -2.998380200E+04, -2.738025110E+00] ) + ) + # note = "J12/73" + ) + +species(name = "Xe", + atoms = " Xe:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, -8.991413300E-14, + 2.521968600E-16, -2.921866620E-19, 1.189492180E-22, + -7.453750000E+02, 6.164419930E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500053220E+00, -1.051365440E-07, + 6.753268970E-11, -1.709449090E-14, 1.476810490E-18, + -7.453941860E+02, 6.164128980E+00] ) + ) + # note = "L12/91" + ) + +species(name = "Xe+", + atoms = " Xe:1 E:-1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500074770E+00, -6.256141860E-07, + 1.864309630E-09, -2.355994570E-12, 1.072193680E-15, + 1.407610950E+05, 7.550404380E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.583505790E+00, -1.534887500E-04, + 8.095946390E-08, -1.142892340E-11, 4.820814060E-16, + 1.407301170E+05, 7.090570690E+00] ) + ) + # note = "L10/92" + ) + +species(name = "Zn", + atoms = " Zn:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, -4.893831870E-12, + 1.380121010E-14, -1.586796780E-17, 6.384987760E-21, + 1.493805070E+04, 5.118861010E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.512336740E+00, -2.928594300E-05, + 2.431302410E-08, -8.390587540E-12, 1.026768920E-15, + 1.493414490E+04, 5.053311450E+00] ) + ) + # note = "L 7/93" + ) + +species(name = "Zn+", + atoms = " Zn:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.239489760E+05, 5.812008190E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.480695770E+00, 3.360210200E-05, + -1.602871690E-08, 1.437950310E-12, 2.928986900E-16, + 1.239564040E+05, 5.919216830E+00] ) + ) + # note = "L 7/93" + ) + +species(name = "Zn-", + atoms = " Zn:1 E:1 ", + thermo = ( + NASA( [ 298.15, 1000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.246887330E+04, 5.812020780E+00] ), + NASA( [ 1000.00, 6000.00], [ 2.500000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, + 1.246887330E+04, 5.812020780E+00] ) + ) + # note = "J12/78" + ) + +species(name = "Zr", + atoms = " Zr:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 1.236559290E+00, 1.282808200E-02, + -2.721384320E-05, 2.332373410E-08, -7.094434910E-12, + 7.262456030E+04, 1.195814470E+01] ), + NASA( [ 1000.00, 6000.00], [ 2.542942060E+00, 6.228897070E-04, + -1.074326360E-07, 2.387445160E-11, -2.176322960E-15, + 7.279181660E+04, 7.579514510E+00] ) + ) + # note = "L 7/93" + ) + +species(name = "ZrN", + atoms = " Zr:1 N:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.071887170E+00, 2.643004740E-03, + 3.184994280E-07, -3.633505810E-09, 2.026795640E-12, + 8.476849470E+04, 9.805889870E+00] ), + NASA( [ 1000.00, 6000.00], [ 4.143789220E+00, 4.043072130E-04, + -1.446331070E-07, 2.476063740E-11, -1.542802020E-15, + 8.446142000E+04, 4.159379060E+00] ) + ) + # note = "J 6/63" + ) + +species(name = "ZrO", + atoms = " Zr:1 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.122915760E+00, -1.318861530E-02, + 6.929224200E-05, -9.587193130E-08, 4.103060850E-11, + 9.007492120E+03, 5.569459300E+00] ), + NASA( [ 1000.00, 6000.00], [ 7.296960290E+00, -2.901193280E-03, + 1.159575740E-06, -1.802990210E-10, 1.017588760E-14, + 7.681803770E+03, -1.421925510E+01] ) + ) + # note = "L 7/93" + ) + +species(name = "ZrO2", + atoms = " Zr:1 O:2 ", + thermo = ( + NASA( [ 300.00, 1000.00], [ 3.210377900E+00, 1.162897600E-02, + -1.557536000E-05, 1.004424300E-08, -2.543889000E-12, + -3.577561200E+04, 1.177386770E+01] ), + NASA( [ 1000.00, 5000.00], [ 6.141854500E+00, 9.770369500E-04, + -4.333718200E-07, 8.495458900E-11, -6.126664800E-15, + -3.644617800E+04, -2.709789120E+00] ) + ) + # note = "J12/65" + ) + diff --git a/examples/cxx/Makefile.in b/examples/cxx/Makefile.in index 43f97effa..70f603553 100755 --- a/examples/cxx/Makefile.in +++ b/examples/cxx/Makefile.in @@ -19,7 +19,7 @@ OBJS = examples.o kinetics_example1.o kinetics_example2.o \ # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = +LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# diff --git a/examples/cxx/equil_example1.cpp b/examples/cxx/equil_example1.cpp index ebacffa35..310ef983a 100755 --- a/examples/cxx/equil_example1.cpp +++ b/examples/cxx/equil_example1.cpp @@ -88,7 +88,8 @@ int equil_example1(int job) { if (temp > gas.maxTemp()) break; gas.setState_TPX(temp, pres, "SIH4:0.01, H2:1.0"); try { - equilibrate(gas,TP); + // This uses the MultiPhaseEquil solver. + equilibrate(gas,TP,1); output(0,i) = temp; output(1,i) = gas.pressure(); gas.getMoleFractions(&output(2,i)); diff --git a/examples/cxx/examples.cpp b/examples/cxx/examples.cpp index c06489471..3357d9d89 100755 --- a/examples/cxx/examples.cpp +++ b/examples/cxx/examples.cpp @@ -8,7 +8,7 @@ #pragma warning(disable:4503) #endif -#define NUM_EXAMPLES 6 +#define NUM_EXAMPLES 5 int kinetics_example1(int job); int kinetics_example2(int job); @@ -20,7 +20,7 @@ int rxnpath_example1(int job); typedef int (*exfun)(int n); int run_example(int n, exfun f, int job = 2) { - cout << "\n\n\n\n>>>>> example " << n+1 << "\n\nDescription: "; + cout << "\n\n\n\n>>>>> example " << n+1 << "\n\nDescription: " << endl; int i = f(job); showErrors(cout); return i; diff --git a/examples/cxx/kinetics_example1.cpp b/examples/cxx/kinetics_example1.cpp index c481cd93d..8509c04dc 100755 --- a/examples/cxx/kinetics_example1.cpp +++ b/examples/cxx/kinetics_example1.cpp @@ -16,6 +16,7 @@ #pragma warning(disable:4503) #endif +#include "Cantera.h" #include "zerodim.h" #include "IdealGasMix.h" #include diff --git a/ext/Makefile.in b/ext/Makefile.in index 3ab83ecc3..f3a0e397a 100755 --- a/ext/Makefile.in +++ b/ext/Makefile.in @@ -15,8 +15,10 @@ LIBS = blas/libctblas.a lapack/libctlapack.a math/libctmath.a \ recipes/librecipes.a cvode/libcvode.a tpx/libtpx.a all: + (if test -d "f2c_libs" ; then \ + cd f2c_libs ; @MAKE@ ; \ + fi) ifeq ($(BUILD_WITH_F2C),1) - cd f2c_libs; @MAKE@ ifeq ($(BUILD_LAPACK),1) cd f2c_lapack; @MAKE@ else diff --git a/ext/blas/Makefile.in b/ext/blas/Makefile.in index 7fed9c677..d54221fe7 100755 --- a/ext/blas/Makefile.in +++ b/ext/blas/Makefile.in @@ -1,7 +1,9 @@ +#/bin/sh # $License$ # -#/bin/sh - +# $Id$ +# +do_ranlib = @DO_RANLIB@ BLASLIB = @buildlib@/libctblas.a SUFFIXES= @@ -58,6 +60,9 @@ xerbla.o $(BLASLIB): $(OBJS) @ARCHIVE@ $(BLASLIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(ZEROD_LIB) +endif %.o : %.f @F77@ -c $< $(F_FLAGS) diff --git a/ext/cvode/Makefile.in b/ext/cvode/Makefile.in index 934037046..6d7fe0c90 100755 --- a/ext/cvode/Makefile.in +++ b/ext/cvode/Makefile.in @@ -19,6 +19,8 @@ # # Modify the COMPILER and OPTS variables as needed. # +do_ranlib = @DO_RANLIB@ + all: @buildlib@/libcvode.a COMPILER = @CC@ @@ -33,6 +35,9 @@ OBJS = source/cvode.o source/cvdense.o source/dense.o source/cvband.o \ @buildlib@/libcvode.a: $(OBJS) $(RM) @buildlib@/libcvode.a (ar rcv @buildlib@/libcvode.a $(OBJS)) +ifeq ($(do_ranlib),1) + @RANLIB@ @buildlib@/libcvode.a +endif source/cvode.o: source/cvode.c include/cvode.h include/llnltyps.h \ include/nvector.h include/llnlmath.h diff --git a/ext/f2c_blas/Makefile.in b/ext/f2c_blas/Makefile.in index 29caa4fe8..377886734 100755 --- a/ext/f2c_blas/Makefile.in +++ b/ext/f2c_blas/Makefile.in @@ -11,6 +11,8 @@ .SUFFIXES : .SUFFIXES : .c .d .o +do_ranlib = @DO_RANLIB@ + # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ @@ -94,6 +96,9 @@ DEPENDS=$(OBJS:.o=.d) # rule to make library $(BLASLIB): $(OBJS) @ARCHIVE@ $(BLASLIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(BLASLIB) +endif # ------------------------------------------------ diff --git a/ext/f2c_lapack/Makefile.in b/ext/f2c_lapack/Makefile.in index d043bc0e4..dbe7694c4 100755 --- a/ext/f2c_lapack/Makefile.in +++ b/ext/f2c_lapack/Makefile.in @@ -9,6 +9,8 @@ .SUFFIXES : .SUFFIXES : .c .o .d +do_ranlib = @DO_RANLIB@ + # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ @@ -105,7 +107,9 @@ DEPENDS=$(OBJS:.o=.d) $(LAPACKLIB): $(OBJS) @ARCHIVE@ $(LAPACKLIB) $(OBJS) > /dev/null - +ifeq ($(do_ranlib),1) + @RANLIB@ $(LAPACKLIB) +endif # ------------------------------------------------ # Utility Targets @@ -115,7 +119,7 @@ clean: # depends target depends: - $(RM) *.d .dependsd + $(RM) *.d .depends @MAKE@ .depends .depends: $(DEPENDS) diff --git a/ext/f2c_libs/Makefile.in b/ext/f2c_libs/Makefile.in index bedf0aa29..e3c3f6d9d 100755 --- a/ext/f2c_libs/Makefile.in +++ b/ext/f2c_libs/Makefile.in @@ -23,6 +23,7 @@ # the C compiler CC = @CC@ SHELL = /bin/sh +do_ranlib = @DO_RANLIB@ CFLAGS = @CXXFLAGS@ $(CXX_OPT) @@ -89,7 +90,9 @@ all: f2c.h signal1.h sysdep1.h $(F2C_LIB) $(F2C_H) $(F2C_LIB): $(OFILES) ar r $(F2C_LIB) $? - -ranlib $(F2C_LIB) +ifeq ($(do_ranlib),1) + @RANLIB@ $(F2C_LIB) +endif $(F2C_H): f2c.h @INSTALL@ -d $(BUILDINCDIR) diff --git a/ext/f2c_libs/arith.h b/ext/f2c_libs/arith.h index 508eb414f..76539f82b 100644 --- a/ext/f2c_libs/arith.h +++ b/ext/f2c_libs/arith.h @@ -1,4 +1,2 @@ -#define IEEE_MC68k -#define Arith_Kind_ASL 2 -#define Double_Align -#define NANCHECK +#define IEEE_8087 +#define Arith_Kind_ASL 1 diff --git a/ext/f2c_math/.cvsignore b/ext/f2c_math/.cvsignore index f3c7a7c5d..67a3528c2 100644 --- a/ext/f2c_math/.cvsignore +++ b/ext/f2c_math/.cvsignore @@ -1 +1,3 @@ Makefile +.depends +*.d diff --git a/ext/f2c_math/Makefile.in b/ext/f2c_math/Makefile.in index 56570ae2a..12f053ed5 100644 --- a/ext/f2c_math/Makefile.in +++ b/ext/f2c_math/Makefile.in @@ -9,6 +9,7 @@ .SUFFIXES : .SUFFIXES : .c .cpp .d .o +do_ranlib = @DO_RANLIB@ # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ @@ -79,6 +80,9 @@ DEPENDS=$(OBJS:.o=.d) # How to make the static library $(LIB): $(OBJS) @ARCHIVE@ $(LIB) $(OBJS) +ifeq ($(do_ranlib),1) + @RANLIB@ $(LIB) +endif # ------------------------------------------------ # Utility Targets diff --git a/ext/f2c_math/fdump.c b/ext/f2c_math/fdump.c index e9fae8c3a..6c23186b8 100644 --- a/ext/f2c_math/fdump.c +++ b/ext/f2c_math/fdump.c @@ -47,74 +47,75 @@ extern "C" { /* ***FIRST EXECUTABLE STATEMENT FDUMP */ return 0; } /* fdump_ */ + + +/* integer isamax_(integer *n, real *sx, integer *incx) */ +/* { */ +/* /\* System generated locals *\/ */ +/* integer ret_val, i__1; */ +/* real r__1; */ -integer isamax_(integer *n, real *sx, integer *incx) -{ - /* System generated locals */ - integer ret_val, i__1; - real r__1; - - /* Local variables */ - static integer i__, ix; - static real smax; +/* /\* Local variables *\/ */ +/* static integer i__, ix; */ +/* static real smax; */ -/* finds the index of element having max. absolute value. */ -/* jack dongarra, linpack, 3/11/78. */ -/* modified 3/93 to return if incx .le. 0. */ +/* /\* finds the index of element having max. absolute value. *\/ */ +/* /\* jack dongarra, linpack, 3/11/78. *\/ */ +/* /\* modified 3/93 to return if incx .le. 0. *\/ */ - /* Parameter adjustments */ - --sx; +/* /\* Parameter adjustments *\/ */ +/* --sx; */ - /* Function Body */ - ret_val = 0; - if (*n < 1 || *incx <= 0) { - return ret_val; - } - ret_val = 1; - if (*n == 1) { - return ret_val; - } - if (*incx == 1) { - goto L20; - } +/* /\* Function Body *\/ */ +/* ret_val = 0; */ +/* if (*n < 1 || *incx <= 0) { */ +/* return ret_val; */ +/* } */ +/* ret_val = 1; */ +/* if (*n == 1) { */ +/* return ret_val; */ +/* } */ +/* if (*incx == 1) { */ +/* goto L20; */ +/* } */ -/* code for increment not equal to 1 */ +/* /\* code for increment not equal to 1 *\/ */ - ix = 1; - smax = dabs(sx[1]); - ix += *incx; - i__1 = *n; - for (i__ = 2; i__ <= i__1; ++i__) { - if ((r__1 = sx[ix], dabs(r__1)) <= smax) { - goto L5; - } - ret_val = i__; - smax = (r__1 = sx[ix], dabs(r__1)); -L5: - ix += *incx; -/* L10: */ - } - return ret_val; +/* ix = 1; */ +/* smax = dabs(sx[1]); */ +/* ix += *incx; */ +/* i__1 = *n; */ +/* for (i__ = 2; i__ <= i__1; ++i__) { */ +/* if ((r__1 = sx[ix], dabs(r__1)) <= smax) { */ +/* goto L5; */ +/* } */ +/* ret_val = i__; */ +/* smax = (r__1 = sx[ix], dabs(r__1)); */ +/* L5: */ +/* ix += *incx; */ +/* /\* L10: *\/ */ +/* } */ +/* return ret_val; */ -/* code for increment equal to 1 */ - -L20: - smax = dabs(sx[1]); - i__1 = *n; - for (i__ = 2; i__ <= i__1; ++i__) { - if ((r__1 = sx[i__], dabs(r__1)) <= smax) { - goto L30; - } - ret_val = i__; - smax = (r__1 = sx[i__], dabs(r__1)); -L30: - ; - } - return ret_val; -} /* isamax_ */ +/* /\* code for increment equal to 1 *\/ */ +/* L20: */ +/* smax = dabs(sx[1]); */ +/* i__1 = *n; */ +/* for (i__ = 2; i__ <= i__1; ++i__) { */ +/* if ((r__1 = sx[i__], dabs(r__1)) <= smax) { */ +/* goto L30; */ +/* } */ +/* ret_val = i__; */ +/* smax = (r__1 = sx[i__], dabs(r__1)); */ +/* L30: */ +/* ; */ +/* } */ +/* return ret_val; */ +/* } /\* isamax_ *\/ */ + #ifdef _cpluscplus } #endif diff --git a/ext/f2c_recipes/Makefile.in b/ext/f2c_recipes/Makefile.in index 2ec83d9c2..947efa912 100644 --- a/ext/f2c_recipes/Makefile.in +++ b/ext/f2c_recipes/Makefile.in @@ -9,6 +9,8 @@ .SUFFIXES : .SUFFIXES : .c .d .o +do_ranlib = @DO_RANLIB@ + # the directory where the Cantera libraries are located CANTERA_LIBDIR=@buildlib@ @@ -54,6 +56,9 @@ DEPENDS=$(OBJS:.o=.d) # rule to make library $(LIB): $(OBJS) @ARCHIVE@ $(LIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(LIB) +endif # ------------------------------------------------ # Utility Targets diff --git a/ext/lapack/Makefile.in b/ext/lapack/Makefile.in index 7610eaca0..3687e5523 100755 --- a/ext/lapack/Makefile.in +++ b/ext/lapack/Makefile.in @@ -3,10 +3,12 @@ # #/bin/sh +.SUFFIXES : +.SUFFIXES : .f .o + LAPACKLIB = @buildlib@/libctlapack.a -SUFFIXES= -SUFFIXES= .f .o +do_ranlib = @DO_RANLIB@ F_FLAGS = @FFLAGS@ @F77FLAGS@ @@ -69,6 +71,9 @@ all: $(LAPACKLIB) $(LAPACKLIB): $(OBJS) @ARCHIVE@ $(LAPACKLIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(LAPACKLIB) +endif %.o : %.f @F77@ -c $< $(F77_INCLUDES) $(F_FLAGS) diff --git a/ext/math/Makefile.in b/ext/math/Makefile.in index 69a7635ad..c8aec3925 100755 --- a/ext/math/Makefile.in +++ b/ext/math/Makefile.in @@ -4,12 +4,16 @@ # $Revision$ # $Date$ # + +.SUFFIXES : +.SUFFIXES : .f .d .o .cpp + +do_ranlib = @DO_RANLIB@ + LIB = @buildlib@/libctmath.a all: $(LIB) -.SUFFIXES : -.SUFFIXES : .f .d .o .cpp F_FLAGS = @FFLAGS@ @F77FLAGS@ @@ -40,7 +44,9 @@ all = $(LIB) $(LIB): $(OBJS) @ARCHIVE@ $(LIB) $(OBJS) > /dev/null - +ifeq ($(do_ranlib),1) + @RANLIB@ $(LIB) +endif %.o : %.cpp @CXX@ -c $< @DEFS@ @CXXFLAGS@ $(INCLUDES) diff --git a/ext/recipes/Makefile.in b/ext/recipes/Makefile.in index 9f7a44908..90a3b3e51 100755 --- a/ext/recipes/Makefile.in +++ b/ext/recipes/Makefile.in @@ -1,11 +1,14 @@ # $License$ # +# $Id$ +# #/bin/sh +.SUFFIXES : +.SUFFIXES : .f .d .o LIB = @buildlib@/librecipes.a -SUFFIXES= -SUFFIXES= .f .d .o +do_ranlib = @DO_RANLIB@ F_FLAGS = @FFLAGS@ @F77FLAGS@ @@ -17,6 +20,9 @@ all: $(LIB) $(LIB): $(OBJS) @ARCHIVE@ $(LIB) $(OBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(LIB) +endif %.o : %.f @F77@ -c $< $(F_FLAGS) diff --git a/ext/tpx/.depends b/ext/tpx/.depends deleted file mode 100755 index beaa3571b..000000000 --- a/ext/tpx/.depends +++ /dev/null @@ -1,11 +0,0 @@ -HFC134a.o: HFC134a.cpp HFC134a.h sub.h -Hydrogen.o: Hydrogen.cpp Hydrogen.h Sub.h -Methane.o: Methane.cpp Methane.h Sub.h -Nitrogen.o: Nitrogen.cpp Nitrogen.h Sub.h -Oxygen.o: Oxygen.cpp Oxygen.h Sub.h -RedlichKwong.o: RedlichKwong.cpp RedlichKwong.h Sub.h -Sub.o: Sub.cpp Sub.h -Water.o: Water.cpp Water.h Sub.h -lk.o: lk.cpp lk.h Sub.h -utils.o: utils.cpp subs.h HFC134a.h sub.h Hydrogen.h Methane.h Nitrogen.h \ - Oxygen.h Water.h RedlichKwong.h utils.h diff --git a/ext/tpx/Makefile.in b/ext/tpx/Makefile.in index 54bc0bd82..13bb044cd 100755 --- a/ext/tpx/Makefile.in +++ b/ext/tpx/Makefile.in @@ -1,10 +1,9 @@ #/bin/sh -SUFFIXES= -SUFFIXES= .cpp .d .o - -OBJDIR = . +.SUFFIXES : +.SUFFIXES : .cpp .d .o +do_ranlib = @DO_RANLIB@ CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) COBJS = Methane.o Nitrogen.o Oxygen.o Water.o Hydrogen.o RedlichKwong.o \ @@ -31,6 +30,9 @@ all: $(TPLIB) $(TPLIB): $(COBJS) $(FOBJS) @ARCHIVE@ $(TPLIB) $(COBJS) $(FOBJS) > /dev/null +ifeq ($(do_ranlib),1) + @RANLIB@ $(TPLIB) +endif clean: $(RM) $(COBJS) $(FOBJS) *~ *.d .depends diff --git a/test_problems/ck2cti_test/gri30a_blessed.cti b/test_problems/ck2cti_test/gri30a_blessed.cti index bc7be49c2..c55679385 100644 --- a/test_problems/ck2cti_test/gri30a_blessed.cti +++ b/test_problems/ck2cti_test/gri30a_blessed.cti @@ -988,1107 +988,1107 @@ species(name = "CH3CHO", #------------------------------------------------------------------------------- # Reaction 1 -three_body_reaction( "2 O + M <=> O2 + M", [1.20000E+17, -1, 0], +three_body_reaction( "2 O + M <=> O2 + M", [1.20000E+17, -1, 0], efficiencies = " AR:0.83 C2H6:3 CH4:2 CO:1.75 CO2:3.6 H2:2.4 H2O:15.4 ") # Reaction 2 -three_body_reaction( "O + H + M <=> OH + M", [5.00000E+17, -1, 0], +three_body_reaction( "O + H + M <=> OH + M", [5.00000E+17, -1, 0], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 3 -reaction( "O + H2 <=> H + OH", [3.87000E+04, 2.7, 6260]) +reaction( "O + H2 <=> H + OH", [3.87000E+04, 2.7, 6260]) # Reaction 4 -reaction( "O + HO2 <=> OH + O2", [2.00000E+13, 0, 0]) +reaction( "O + HO2 <=> OH + O2", [2.00000E+13, 0, 0]) # Reaction 5 -reaction( "O + H2O2 <=> OH + HO2", [9.63000E+06, 2, 4000]) +reaction( "O + H2O2 <=> OH + HO2", [9.63000E+06, 2, 4000]) # Reaction 6 -reaction( "O + CH <=> H + CO", [5.70000E+13, 0, 0]) +reaction( "O + CH <=> H + CO", [5.70000E+13, 0, 0]) # Reaction 7 -reaction( "O + CH2 <=> H + HCO", [8.00000E+13, 0, 0]) +reaction( "O + CH2 <=> H + HCO", [8.00000E+13, 0, 0]) # Reaction 8 -reaction( "O + CH2(S) <=> H2 + CO", [1.50000E+13, 0, 0]) +reaction( "O + CH2(S) <=> H2 + CO", [1.50000E+13, 0, 0]) # Reaction 9 -reaction( "O + CH2(S) <=> H + HCO", [1.50000E+13, 0, 0]) +reaction( "O + CH2(S) <=> H + HCO", [1.50000E+13, 0, 0]) # Reaction 10 -reaction( "O + CH3 <=> H + CH2O", [5.06000E+13, 0, 0]) +reaction( "O + CH3 <=> H + CH2O", [5.06000E+13, 0, 0]) # Reaction 11 -reaction( "O + CH4 <=> OH + CH3", [1.02000E+09, 1.5, 8600]) +reaction( "O + CH4 <=> OH + CH3", [1.02000E+09, 1.5, 8600]) # Reaction 12 -falloff_reaction( "O + CO (+ M) <=> CO2 (+ M)", +falloff_reaction( "O + CO (+ M) <=> CO2 (+ M)", kf = [1.80000E+10, 0, 2385], kf0 = [6.02000E+14, 0, 3000], efficiencies = " AR:0.5 C2H6:3 CH4:2 CO:1.5 CO2:3.5 H2:2 H2O:6 O2:6 ") # Reaction 13 -reaction( "O + HCO <=> OH + CO", [3.00000E+13, 0, 0]) +reaction( "O + HCO <=> OH + CO", [3.00000E+13, 0, 0]) # Reaction 14 -reaction( "O + HCO <=> H + CO2", [3.00000E+13, 0, 0]) +reaction( "O + HCO <=> H + CO2", [3.00000E+13, 0, 0]) # Reaction 15 -reaction( "O + CH2O <=> OH + HCO", [3.90000E+13, 0, 3540]) +reaction( "O + CH2O <=> OH + HCO", [3.90000E+13, 0, 3540]) # Reaction 16 -reaction( "O + CH2OH <=> OH + CH2O", [1.00000E+13, 0, 0]) +reaction( "O + CH2OH <=> OH + CH2O", [1.00000E+13, 0, 0]) # Reaction 17 -reaction( "O + CH3O <=> OH + CH2O", [1.00000E+13, 0, 0]) +reaction( "O + CH3O <=> OH + CH2O", [1.00000E+13, 0, 0]) # Reaction 18 -reaction( "O + CH3OH <=> OH + CH2OH", [3.88000E+05, 2.5, 3100]) +reaction( "O + CH3OH <=> OH + CH2OH", [3.88000E+05, 2.5, 3100]) # Reaction 19 -reaction( "O + CH3OH <=> OH + CH3O", [1.30000E+05, 2.5, 5000]) +reaction( "O + CH3OH <=> OH + CH3O", [1.30000E+05, 2.5, 5000]) # Reaction 20 -reaction( "O + C2H <=> CH + CO", [5.00000E+13, 0, 0]) +reaction( "O + C2H <=> CH + CO", [5.00000E+13, 0, 0]) # Reaction 21 -reaction( "O + C2H2 <=> H + HCCO", [1.35000E+07, 2, 1900]) +reaction( "O + C2H2 <=> H + HCCO", [1.35000E+07, 2, 1900]) # Reaction 22 -reaction( "O + C2H2 <=> OH + C2H", [4.60000E+19, -1.41, 28950]) +reaction( "O + C2H2 <=> OH + C2H", [4.60000E+19, -1.41, 28950]) # Reaction 23 -reaction( "O + C2H2 <=> CO + CH2", [6.94000E+06, 2, 1900]) +reaction( "O + C2H2 <=> CO + CH2", [6.94000E+06, 2, 1900]) # Reaction 24 -reaction( "O + C2H3 <=> H + CH2CO", [3.00000E+13, 0, 0]) +reaction( "O + C2H3 <=> H + CH2CO", [3.00000E+13, 0, 0]) # Reaction 25 -reaction( "O + C2H4 <=> CH3 + HCO", [1.25000E+07, 1.83, 220]) +reaction( "O + C2H4 <=> CH3 + HCO", [1.25000E+07, 1.83, 220]) # Reaction 26 -reaction( "O + C2H5 <=> CH3 + CH2O", [2.24000E+13, 0, 0]) +reaction( "O + C2H5 <=> CH3 + CH2O", [2.24000E+13, 0, 0]) # Reaction 27 -reaction( "O + C2H6 <=> OH + C2H5", [8.98000E+07, 1.92, 5690]) +reaction( "O + C2H6 <=> OH + C2H5", [8.98000E+07, 1.92, 5690]) # Reaction 28 -reaction( "O + HCCO <=> H + 2 CO", [1.00000E+14, 0, 0]) +reaction( "O + HCCO <=> H + 2 CO", [1.00000E+14, 0, 0]) # Reaction 29 -reaction( "O + CH2CO <=> OH + HCCO", [1.00000E+13, 0, 8000]) +reaction( "O + CH2CO <=> OH + HCCO", [1.00000E+13, 0, 8000]) # Reaction 30 -reaction( "O + CH2CO <=> CH2 + CO2", [1.75000E+12, 0, 1350]) +reaction( "O + CH2CO <=> CH2 + CO2", [1.75000E+12, 0, 1350]) # Reaction 31 -reaction( "O2 + CO <=> O + CO2", [2.50000E+12, 0, 47800]) +reaction( "O2 + CO <=> O + CO2", [2.50000E+12, 0, 47800]) # Reaction 32 -reaction( "O2 + CH2O <=> HO2 + HCO", [1.00000E+14, 0, 40000]) +reaction( "O2 + CH2O <=> HO2 + HCO", [1.00000E+14, 0, 40000]) # Reaction 33 -three_body_reaction( "H + O2 + M <=> HO2 + M", [2.80000E+18, -0.86, 0], +three_body_reaction( "H + O2 + M <=> HO2 + M", [2.80000E+18, -0.86, 0], efficiencies = " AR:0 C2H6:1.5 CO:0.75 CO2:1.5 H2O:0 N2:0 O2:0 ") # Reaction 34 -reaction( "H + 2 O2 <=> HO2 + O2", [2.08000E+19, -1.24, 0]) +reaction( "H + 2 O2 <=> HO2 + O2", [2.08000E+19, -1.24, 0]) # Reaction 35 -reaction( "H + O2 + H2O <=> HO2 + H2O", [1.12600E+19, -0.76, 0]) +reaction( "H + O2 + H2O <=> HO2 + H2O", [1.12600E+19, -0.76, 0]) # Reaction 36 -reaction( "H + O2 + N2 <=> HO2 + N2", [2.60000E+19, -1.24, 0]) +reaction( "H + O2 + N2 <=> HO2 + N2", [2.60000E+19, -1.24, 0]) # Reaction 37 -reaction( "H + O2 + AR <=> HO2 + AR", [7.00000E+17, -0.8, 0]) +reaction( "H + O2 + AR <=> HO2 + AR", [7.00000E+17, -0.8, 0]) # Reaction 38 -reaction( "H + O2 <=> O + OH", [2.65000E+16, -0.6707, 17041]) +reaction( "H + O2 <=> O + OH", [2.65000E+16, -0.6707, 17041]) # Reaction 39 -three_body_reaction( "2 H + M <=> H2 + M", [1.00000E+18, -1, 0], +three_body_reaction( "2 H + M <=> H2 + M", [1.00000E+18, -1, 0], efficiencies = " AR:0.63 C2H6:3 CH4:2 CO2:0 H2:0 H2O:0 ") # Reaction 40 -reaction( "2 H + H2 <=> 2 H2", [9.00000E+16, -0.6, 0]) +reaction( "2 H + H2 <=> 2 H2", [9.00000E+16, -0.6, 0]) # Reaction 41 -reaction( "2 H + H2O <=> H2 + H2O", [6.00000E+19, -1.25, 0]) +reaction( "2 H + H2O <=> H2 + H2O", [6.00000E+19, -1.25, 0]) # Reaction 42 -reaction( "2 H + CO2 <=> H2 + CO2", [5.50000E+20, -2, 0]) +reaction( "2 H + CO2 <=> H2 + CO2", [5.50000E+20, -2, 0]) # Reaction 43 -three_body_reaction( "H + OH + M <=> H2O + M", [2.20000E+22, -2, 0], +three_body_reaction( "H + OH + M <=> H2O + M", [2.20000E+22, -2, 0], efficiencies = " AR:0.38 C2H6:3 CH4:2 H2:0.73 H2O:3.65 ") # Reaction 44 -reaction( "H + HO2 <=> O + H2O", [3.97000E+12, 0, 671]) +reaction( "H + HO2 <=> O + H2O", [3.97000E+12, 0, 671]) # Reaction 45 -reaction( "H + HO2 <=> O2 + H2", [4.48000E+13, 0, 1068]) +reaction( "H + HO2 <=> O2 + H2", [4.48000E+13, 0, 1068]) # Reaction 46 -reaction( "H + HO2 <=> 2 OH", [8.40000E+13, 0, 635]) +reaction( "H + HO2 <=> 2 OH", [8.40000E+13, 0, 635]) # Reaction 47 -reaction( "H + H2O2 <=> HO2 + H2", [1.21000E+07, 2, 5200]) +reaction( "H + H2O2 <=> HO2 + H2", [1.21000E+07, 2, 5200]) # Reaction 48 -reaction( "H + H2O2 <=> OH + H2O", [1.00000E+13, 0, 3600]) +reaction( "H + H2O2 <=> OH + H2O", [1.00000E+13, 0, 3600]) # Reaction 49 -reaction( "H + CH <=> C + H2", [1.65000E+14, 0, 0]) +reaction( "H + CH <=> C + H2", [1.65000E+14, 0, 0]) # Reaction 50 -falloff_reaction( "H + CH2 (+ M) <=> CH3 (+ M)", +falloff_reaction( "H + CH2 (+ M) <=> CH3 (+ M)", kf = [6.00000E+14, 0, 0], kf0 = [1.04000E+26, -2.76, 1600], falloff = Troe(A = 0.562, T3 = 91, T1 = 5836, T2 = 8552), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 51 -reaction( "H + CH2(S) <=> CH + H2", [3.00000E+13, 0, 0]) +reaction( "H + CH2(S) <=> CH + H2", [3.00000E+13, 0, 0]) # Reaction 52 -falloff_reaction( "H + CH3 (+ M) <=> CH4 (+ M)", +falloff_reaction( "H + CH3 (+ M) <=> CH4 (+ M)", kf = [1.39000E+16, -0.534, 536], kf0 = [2.62000E+33, -4.76, 2440], falloff = Troe(A = 0.783, T3 = 74, T1 = 2941, T2 = 6964), efficiencies = " AR:0.7 C2H6:3 CH4:3 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 53 -reaction( "H + CH4 <=> CH3 + H2", [6.60000E+08, 1.62, 10840]) +reaction( "H + CH4 <=> CH3 + H2", [6.60000E+08, 1.62, 10840]) # Reaction 54 -falloff_reaction( "H + HCO (+ M) <=> CH2O (+ M)", +falloff_reaction( "H + HCO (+ M) <=> CH2O (+ M)", kf = [1.09000E+12, 0.48, -260], kf0 = [2.47000E+24, -2.57, 425], falloff = Troe(A = 0.7824, T3 = 271, T1 = 2755, T2 = 6570), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 55 -reaction( "H + HCO <=> H2 + CO", [7.34000E+13, 0, 0]) +reaction( "H + HCO <=> H2 + CO", [7.34000E+13, 0, 0]) # Reaction 56 -falloff_reaction( "H + CH2O (+ M) <=> CH2OH (+ M)", +falloff_reaction( "H + CH2O (+ M) <=> CH2OH (+ M)", kf = [5.40000E+11, 0.454, 3600], kf0 = [1.27000E+32, -4.82, 6530], falloff = Troe(A = 0.7187, T3 = 103, T1 = 1291, T2 = 4160), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 57 -falloff_reaction( "H + CH2O (+ M) <=> CH3O (+ M)", +falloff_reaction( "H + CH2O (+ M) <=> CH3O (+ M)", kf = [5.40000E+11, 0.454, 2600], kf0 = [2.20000E+30, -4.8, 5560], falloff = Troe(A = 0.758, T3 = 94, T1 = 1555, T2 = 4200), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 58 -reaction( "H + CH2O <=> HCO + H2", [5.74000E+07, 1.9, 2742]) +reaction( "H + CH2O <=> HCO + H2", [5.74000E+07, 1.9, 2742]) # Reaction 59 -falloff_reaction( "H + CH2OH (+ M) <=> CH3OH (+ M)", +falloff_reaction( "H + CH2OH (+ M) <=> CH3OH (+ M)", kf = [1.05500E+12, 0.5, 86], kf0 = [4.36000E+31, -4.65, 5080], falloff = Troe(A = 0.6, T3 = 100, T1 = 90000, T2 = 10000), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 60 -reaction( "H + CH2OH <=> H2 + CH2O", [2.00000E+13, 0, 0]) +reaction( "H + CH2OH <=> H2 + CH2O", [2.00000E+13, 0, 0]) # Reaction 61 -reaction( "H + CH2OH <=> OH + CH3", [1.65000E+11, 0.65, -284]) +reaction( "H + CH2OH <=> OH + CH3", [1.65000E+11, 0.65, -284]) # Reaction 62 -reaction( "H + CH2OH <=> CH2(S) + H2O", [3.28000E+13, -0.09, 610]) +reaction( "H + CH2OH <=> CH2(S) + H2O", [3.28000E+13, -0.09, 610]) # Reaction 63 -falloff_reaction( "H + CH3O (+ M) <=> CH3OH (+ M)", +falloff_reaction( "H + CH3O (+ M) <=> CH3OH (+ M)", kf = [2.43000E+12, 0.515, 50], kf0 = [4.66000E+41, -7.44, 14080], falloff = Troe(A = 0.7, T3 = 100, T1 = 90000, T2 = 10000), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 64 -reaction( "H + CH3O <=> H + CH2OH", [4.15000E+07, 1.63, 1924]) +reaction( "H + CH3O <=> H + CH2OH", [4.15000E+07, 1.63, 1924]) # Reaction 65 -reaction( "H + CH3O <=> H2 + CH2O", [2.00000E+13, 0, 0]) +reaction( "H + CH3O <=> H2 + CH2O", [2.00000E+13, 0, 0]) # Reaction 66 -reaction( "H + CH3O <=> OH + CH3", [1.50000E+12, 0.5, -110]) +reaction( "H + CH3O <=> OH + CH3", [1.50000E+12, 0.5, -110]) # Reaction 67 -reaction( "H + CH3O <=> CH2(S) + H2O", [2.62000E+14, -0.23, 1070]) +reaction( "H + CH3O <=> CH2(S) + H2O", [2.62000E+14, -0.23, 1070]) # Reaction 68 -reaction( "H + CH3OH <=> CH2OH + H2", [1.70000E+07, 2.1, 4870]) +reaction( "H + CH3OH <=> CH2OH + H2", [1.70000E+07, 2.1, 4870]) # Reaction 69 -reaction( "H + CH3OH <=> CH3O + H2", [4.20000E+06, 2.1, 4870]) +reaction( "H + CH3OH <=> CH3O + H2", [4.20000E+06, 2.1, 4870]) # Reaction 70 -falloff_reaction( "H + C2H (+ M) <=> C2H2 (+ M)", +falloff_reaction( "H + C2H (+ M) <=> C2H2 (+ M)", kf = [1.00000E+17, -1, 0], kf0 = [3.75000E+33, -4.8, 1900], falloff = Troe(A = 0.6464, T3 = 132, T1 = 1315, T2 = 5566), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 71 -falloff_reaction( "H + C2H2 (+ M) <=> C2H3 (+ M)", +falloff_reaction( "H + C2H2 (+ M) <=> C2H3 (+ M)", kf = [5.60000E+12, 0, 2400], kf0 = [3.80000E+40, -7.27, 7220], falloff = Troe(A = 0.7507, T3 = 98.5, T1 = 1302, T2 = 4167), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 72 -falloff_reaction( "H + C2H3 (+ M) <=> C2H4 (+ M)", +falloff_reaction( "H + C2H3 (+ M) <=> C2H4 (+ M)", kf = [6.08000E+12, 0.27, 280], kf0 = [1.40000E+30, -3.86, 3320], falloff = Troe(A = 0.782, T3 = 207.5, T1 = 2663, T2 = 6095), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 73 -reaction( "H + C2H3 <=> H2 + C2H2", [3.00000E+13, 0, 0]) +reaction( "H + C2H3 <=> H2 + C2H2", [3.00000E+13, 0, 0]) # Reaction 74 -falloff_reaction( "H + C2H4 (+ M) <=> C2H5 (+ M)", +falloff_reaction( "H + C2H4 (+ M) <=> C2H5 (+ M)", kf = [5.40000E+11, 0.454, 1820], kf0 = [6.00000E+41, -7.62, 6970], falloff = Troe(A = 0.9753, T3 = 210, T1 = 984, T2 = 4374), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 75 -reaction( "H + C2H4 <=> C2H3 + H2", [1.32500E+06, 2.53, 12240]) +reaction( "H + C2H4 <=> C2H3 + H2", [1.32500E+06, 2.53, 12240]) # Reaction 76 -falloff_reaction( "H + C2H5 (+ M) <=> C2H6 (+ M)", +falloff_reaction( "H + C2H5 (+ M) <=> C2H6 (+ M)", kf = [5.21000E+17, -0.99, 1580], kf0 = [1.99000E+41, -7.08, 6685], falloff = Troe(A = 0.8422, T3 = 125, T1 = 2219, T2 = 6882), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 77 -reaction( "H + C2H5 <=> H2 + C2H4", [2.00000E+12, 0, 0]) +reaction( "H + C2H5 <=> H2 + C2H4", [2.00000E+12, 0, 0]) # Reaction 78 -reaction( "H + C2H6 <=> C2H5 + H2", [1.15000E+08, 1.9, 7530]) +reaction( "H + C2H6 <=> C2H5 + H2", [1.15000E+08, 1.9, 7530]) # Reaction 79 -reaction( "H + HCCO <=> CH2(S) + CO", [1.00000E+14, 0, 0]) +reaction( "H + HCCO <=> CH2(S) + CO", [1.00000E+14, 0, 0]) # Reaction 80 -reaction( "H + CH2CO <=> HCCO + H2", [5.00000E+13, 0, 8000]) +reaction( "H + CH2CO <=> HCCO + H2", [5.00000E+13, 0, 8000]) # Reaction 81 -reaction( "H + CH2CO <=> CH3 + CO", [1.13000E+13, 0, 3428]) +reaction( "H + CH2CO <=> CH3 + CO", [1.13000E+13, 0, 3428]) # Reaction 82 -reaction( "H + HCCOH <=> H + CH2CO", [1.00000E+13, 0, 0]) +reaction( "H + HCCOH <=> H + CH2CO", [1.00000E+13, 0, 0]) # Reaction 83 -falloff_reaction( "H2 + CO (+ M) <=> CH2O (+ M)", +falloff_reaction( "H2 + CO (+ M) <=> CH2O (+ M)", kf = [4.30000E+07, 1.5, 79600], kf0 = [5.07000E+27, -3.42, 84350], falloff = Troe(A = 0.932, T3 = 197, T1 = 1540, T2 = 10300), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 84 -reaction( "OH + H2 <=> H + H2O", [2.16000E+08, 1.51, 3430]) +reaction( "OH + H2 <=> H + H2O", [2.16000E+08, 1.51, 3430]) # Reaction 85 -falloff_reaction( "2 OH (+ M) <=> H2O2 (+ M)", +falloff_reaction( "2 OH (+ M) <=> H2O2 (+ M)", kf = [7.40000E+13, -0.37, 0], kf0 = [2.30000E+18, -0.9, -1700], falloff = Troe(A = 0.7346, T3 = 94, T1 = 1756, T2 = 5182), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 86 -reaction( "2 OH <=> O + H2O", [3.57000E+04, 2.4, -2110]) +reaction( "2 OH <=> O + H2O", [3.57000E+04, 2.4, -2110]) # Reaction 87 -reaction( "OH + HO2 <=> O2 + H2O", [1.45000E+13, 0, -500], - options = 'duplicate') +reaction( "OH + HO2 <=> O2 + H2O", [1.45000E+13, 0, -500], + options = ["duplicate"]) # Reaction 88 -reaction( "OH + H2O2 <=> HO2 + H2O", [2.00000E+12, 0, 427], - options = 'duplicate') +reaction( "OH + H2O2 <=> HO2 + H2O", [2.00000E+12, 0, 427], + options = ["duplicate"]) # Reaction 89 -reaction( "OH + H2O2 <=> HO2 + H2O", [1.70000E+18, 0, 29410], - options = 'duplicate') +reaction( "OH + H2O2 <=> HO2 + H2O", [1.70000E+18, 0, 29410], + options = ["duplicate"]) # Reaction 90 -reaction( "OH + C <=> H + CO", [5.00000E+13, 0, 0]) +reaction( "OH + C <=> H + CO", [5.00000E+13, 0, 0]) # Reaction 91 -reaction( "OH + CH <=> H + HCO", [3.00000E+13, 0, 0]) +reaction( "OH + CH <=> H + HCO", [3.00000E+13, 0, 0]) # Reaction 92 -reaction( "OH + CH2 <=> H + CH2O", [2.00000E+13, 0, 0]) +reaction( "OH + CH2 <=> H + CH2O", [2.00000E+13, 0, 0]) # Reaction 93 -reaction( "OH + CH2 <=> CH + H2O", [1.13000E+07, 2, 3000]) +reaction( "OH + CH2 <=> CH + H2O", [1.13000E+07, 2, 3000]) # Reaction 94 -reaction( "OH + CH2(S) <=> H + CH2O", [3.00000E+13, 0, 0]) +reaction( "OH + CH2(S) <=> H + CH2O", [3.00000E+13, 0, 0]) # Reaction 95 -falloff_reaction( "OH + CH3 (+ M) <=> CH3OH (+ M)", +falloff_reaction( "OH + CH3 (+ M) <=> CH3OH (+ M)", kf = [2.79000E+18, -1.43, 1330], kf0 = [4.00000E+36, -5.92, 3140], falloff = Troe(A = 0.412, T3 = 195, T1 = 5900, T2 = 6394), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 96 -reaction( "OH + CH3 <=> CH2 + H2O", [5.60000E+07, 1.6, 5420]) +reaction( "OH + CH3 <=> CH2 + H2O", [5.60000E+07, 1.6, 5420]) # Reaction 97 -reaction( "OH + CH3 <=> CH2(S) + H2O", [6.44000E+17, -1.34, 1417]) +reaction( "OH + CH3 <=> CH2(S) + H2O", [6.44000E+17, -1.34, 1417]) # Reaction 98 -reaction( "OH + CH4 <=> CH3 + H2O", [1.00000E+08, 1.6, 3120]) +reaction( "OH + CH4 <=> CH3 + H2O", [1.00000E+08, 1.6, 3120]) # Reaction 99 -reaction( "OH + CO <=> H + CO2", [4.76000E+07, 1.228, 70]) +reaction( "OH + CO <=> H + CO2", [4.76000E+07, 1.228, 70]) # Reaction 100 -reaction( "OH + HCO <=> H2O + CO", [5.00000E+13, 0, 0]) +reaction( "OH + HCO <=> H2O + CO", [5.00000E+13, 0, 0]) # Reaction 101 -reaction( "OH + CH2O <=> HCO + H2O", [3.43000E+09, 1.18, -447]) +reaction( "OH + CH2O <=> HCO + H2O", [3.43000E+09, 1.18, -447]) # Reaction 102 -reaction( "OH + CH2OH <=> H2O + CH2O", [5.00000E+12, 0, 0]) +reaction( "OH + CH2OH <=> H2O + CH2O", [5.00000E+12, 0, 0]) # Reaction 103 -reaction( "OH + CH3O <=> H2O + CH2O", [5.00000E+12, 0, 0]) +reaction( "OH + CH3O <=> H2O + CH2O", [5.00000E+12, 0, 0]) # Reaction 104 -reaction( "OH + CH3OH <=> CH2OH + H2O", [1.44000E+06, 2, -840]) +reaction( "OH + CH3OH <=> CH2OH + H2O", [1.44000E+06, 2, -840]) # Reaction 105 -reaction( "OH + CH3OH <=> CH3O + H2O", [6.30000E+06, 2, 1500]) +reaction( "OH + CH3OH <=> CH3O + H2O", [6.30000E+06, 2, 1500]) # Reaction 106 -reaction( "OH + C2H <=> H + HCCO", [2.00000E+13, 0, 0]) +reaction( "OH + C2H <=> H + HCCO", [2.00000E+13, 0, 0]) # Reaction 107 -reaction( "OH + C2H2 <=> H + CH2CO", [2.18000E-04, 4.5, -1000]) +reaction( "OH + C2H2 <=> H + CH2CO", [2.18000E-04, 4.5, -1000]) # Reaction 108 -reaction( "OH + C2H2 <=> H + HCCOH", [5.04000E+05, 2.3, 13500]) +reaction( "OH + C2H2 <=> H + HCCOH", [5.04000E+05, 2.3, 13500]) # Reaction 109 -reaction( "OH + C2H2 <=> C2H + H2O", [3.37000E+07, 2, 14000]) +reaction( "OH + C2H2 <=> C2H + H2O", [3.37000E+07, 2, 14000]) # Reaction 110 -reaction( "OH + C2H2 <=> CH3 + CO", [4.83000E-04, 4, -2000]) +reaction( "OH + C2H2 <=> CH3 + CO", [4.83000E-04, 4, -2000]) # Reaction 111 -reaction( "OH + C2H3 <=> H2O + C2H2", [5.00000E+12, 0, 0]) +reaction( "OH + C2H3 <=> H2O + C2H2", [5.00000E+12, 0, 0]) # Reaction 112 -reaction( "OH + C2H4 <=> C2H3 + H2O", [3.60000E+06, 2, 2500]) +reaction( "OH + C2H4 <=> C2H3 + H2O", [3.60000E+06, 2, 2500]) # Reaction 113 -reaction( "OH + C2H6 <=> C2H5 + H2O", [3.54000E+06, 2.12, 870]) +reaction( "OH + C2H6 <=> C2H5 + H2O", [3.54000E+06, 2.12, 870]) # Reaction 114 -reaction( "OH + CH2CO <=> HCCO + H2O", [7.50000E+12, 0, 2000]) +reaction( "OH + CH2CO <=> HCCO + H2O", [7.50000E+12, 0, 2000]) # Reaction 115 -reaction( "2 HO2 <=> O2 + H2O2", [1.30000E+11, 0, -1630], - options = 'duplicate') +reaction( "2 HO2 <=> O2 + H2O2", [1.30000E+11, 0, -1630], + options = ["duplicate"]) # Reaction 116 -reaction( "2 HO2 <=> O2 + H2O2", [4.20000E+14, 0, 12000], - options = 'duplicate') +reaction( "2 HO2 <=> O2 + H2O2", [4.20000E+14, 0, 12000], + options = ["duplicate"]) # Reaction 117 -reaction( "HO2 + CH2 <=> OH + CH2O", [2.00000E+13, 0, 0]) +reaction( "HO2 + CH2 <=> OH + CH2O", [2.00000E+13, 0, 0]) # Reaction 118 -reaction( "HO2 + CH3 <=> O2 + CH4", [1.00000E+12, 0, 0]) +reaction( "HO2 + CH3 <=> O2 + CH4", [1.00000E+12, 0, 0]) # Reaction 119 -reaction( "HO2 + CH3 <=> OH + CH3O", [3.78000E+13, 0, 0]) +reaction( "HO2 + CH3 <=> OH + CH3O", [3.78000E+13, 0, 0]) # Reaction 120 -reaction( "HO2 + CO <=> OH + CO2", [1.50000E+14, 0, 23600]) +reaction( "HO2 + CO <=> OH + CO2", [1.50000E+14, 0, 23600]) # Reaction 121 -reaction( "HO2 + CH2O <=> HCO + H2O2", [5.60000E+06, 2, 12000]) +reaction( "HO2 + CH2O <=> HCO + H2O2", [5.60000E+06, 2, 12000]) # Reaction 122 -reaction( "C + O2 <=> O + CO", [5.80000E+13, 0, 576]) +reaction( "C + O2 <=> O + CO", [5.80000E+13, 0, 576]) # Reaction 123 -reaction( "C + CH2 <=> H + C2H", [5.00000E+13, 0, 0]) +reaction( "C + CH2 <=> H + C2H", [5.00000E+13, 0, 0]) # Reaction 124 -reaction( "C + CH3 <=> H + C2H2", [5.00000E+13, 0, 0]) +reaction( "C + CH3 <=> H + C2H2", [5.00000E+13, 0, 0]) # Reaction 125 -reaction( "CH + O2 <=> O + HCO", [6.71000E+13, 0, 0]) +reaction( "CH + O2 <=> O + HCO", [6.71000E+13, 0, 0]) # Reaction 126 -reaction( "CH + H2 <=> H + CH2", [1.08000E+14, 0, 3110]) +reaction( "CH + H2 <=> H + CH2", [1.08000E+14, 0, 3110]) # Reaction 127 -reaction( "CH + H2O <=> H + CH2O", [5.71000E+12, 0, -755]) +reaction( "CH + H2O <=> H + CH2O", [5.71000E+12, 0, -755]) # Reaction 128 -reaction( "CH + CH2 <=> H + C2H2", [4.00000E+13, 0, 0]) +reaction( "CH + CH2 <=> H + C2H2", [4.00000E+13, 0, 0]) # Reaction 129 -reaction( "CH + CH3 <=> H + C2H3", [3.00000E+13, 0, 0]) +reaction( "CH + CH3 <=> H + C2H3", [3.00000E+13, 0, 0]) # Reaction 130 -reaction( "CH + CH4 <=> H + C2H4", [6.00000E+13, 0, 0]) +reaction( "CH + CH4 <=> H + C2H4", [6.00000E+13, 0, 0]) # Reaction 131 -falloff_reaction( "CH + CO (+ M) <=> HCCO (+ M)", +falloff_reaction( "CH + CO (+ M) <=> HCCO (+ M)", kf = [5.00000E+13, 0, 0], kf0 = [2.69000E+28, -3.74, 1936], falloff = Troe(A = 0.5757, T3 = 237, T1 = 1652, T2 = 5069), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 132 -reaction( "CH + CO2 <=> HCO + CO", [1.90000E+14, 0, 15792]) +reaction( "CH + CO2 <=> HCO + CO", [1.90000E+14, 0, 15792]) # Reaction 133 -reaction( "CH + CH2O <=> H + CH2CO", [9.46000E+13, 0, -515]) +reaction( "CH + CH2O <=> H + CH2CO", [9.46000E+13, 0, -515]) # Reaction 134 -reaction( "CH + HCCO <=> CO + C2H2", [5.00000E+13, 0, 0]) +reaction( "CH + HCCO <=> CO + C2H2", [5.00000E+13, 0, 0]) # Reaction 135 -reaction( "CH2 + O2 => OH + H + CO", [5.00000E+12, 0, 1500]) +reaction( "CH2 + O2 => OH + H + CO", [5.00000E+12, 0, 1500]) # Reaction 136 -reaction( "CH2 + H2 <=> H + CH3", [5.00000E+05, 2, 7230]) +reaction( "CH2 + H2 <=> H + CH3", [5.00000E+05, 2, 7230]) # Reaction 137 -reaction( "2 CH2 <=> H2 + C2H2", [1.60000E+15, 0, 11944]) +reaction( "2 CH2 <=> H2 + C2H2", [1.60000E+15, 0, 11944]) # Reaction 138 -reaction( "CH2 + CH3 <=> H + C2H4", [4.00000E+13, 0, 0]) +reaction( "CH2 + CH3 <=> H + C2H4", [4.00000E+13, 0, 0]) # Reaction 139 -reaction( "CH2 + CH4 <=> 2 CH3", [2.46000E+06, 2, 8270]) +reaction( "CH2 + CH4 <=> 2 CH3", [2.46000E+06, 2, 8270]) # Reaction 140 -falloff_reaction( "CH2 + CO (+ M) <=> CH2CO (+ M)", +falloff_reaction( "CH2 + CO (+ M) <=> CH2CO (+ M)", kf = [8.10000E+11, 0.5, 4510], kf0 = [2.69000E+33, -5.11, 7095], falloff = Troe(A = 0.5907, T3 = 275, T1 = 1226, T2 = 5185), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 141 -reaction( "CH2 + HCCO <=> C2H3 + CO", [3.00000E+13, 0, 0]) +reaction( "CH2 + HCCO <=> C2H3 + CO", [3.00000E+13, 0, 0]) # Reaction 142 -reaction( "CH2(S) + N2 <=> CH2 + N2", [1.50000E+13, 0, 600]) +reaction( "CH2(S) + N2 <=> CH2 + N2", [1.50000E+13, 0, 600]) # Reaction 143 -reaction( "CH2(S) + AR <=> CH2 + AR", [9.00000E+12, 0, 600]) +reaction( "CH2(S) + AR <=> CH2 + AR", [9.00000E+12, 0, 600]) # Reaction 144 -reaction( "CH2(S) + O2 <=> H + OH + CO", [2.80000E+13, 0, 0]) +reaction( "CH2(S) + O2 <=> H + OH + CO", [2.80000E+13, 0, 0]) # Reaction 145 -reaction( "CH2(S) + O2 <=> CO + H2O", [1.20000E+13, 0, 0]) +reaction( "CH2(S) + O2 <=> CO + H2O", [1.20000E+13, 0, 0]) # Reaction 146 -reaction( "CH2(S) + H2 <=> CH3 + H", [7.00000E+13, 0, 0]) +reaction( "CH2(S) + H2 <=> CH3 + H", [7.00000E+13, 0, 0]) # Reaction 147 -falloff_reaction( "CH2(S) + H2O (+ M) <=> CH3OH (+ M)", +falloff_reaction( "CH2(S) + H2O (+ M) <=> CH3OH (+ M)", kf = [4.82000E+17, -1.16, 1145], kf0 = [1.88000E+38, -6.36, 5040], falloff = Troe(A = 0.6027, T3 = 208, T1 = 3922, T2 = 10180), efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 148 -reaction( "CH2(S) + H2O <=> CH2 + H2O", [3.00000E+13, 0, 0]) +reaction( "CH2(S) + H2O <=> CH2 + H2O", [3.00000E+13, 0, 0]) # Reaction 149 -reaction( "CH2(S) + CH3 <=> H + C2H4", [1.20000E+13, 0, -570]) +reaction( "CH2(S) + CH3 <=> H + C2H4", [1.20000E+13, 0, -570]) # Reaction 150 -reaction( "CH2(S) + CH4 <=> 2 CH3", [1.60000E+13, 0, -570]) +reaction( "CH2(S) + CH4 <=> 2 CH3", [1.60000E+13, 0, -570]) # Reaction 151 -reaction( "CH2(S) + CO <=> CH2 + CO", [9.00000E+12, 0, 0]) +reaction( "CH2(S) + CO <=> CH2 + CO", [9.00000E+12, 0, 0]) # Reaction 152 -reaction( "CH2(S) + CO2 <=> CH2 + CO2", [7.00000E+12, 0, 0]) +reaction( "CH2(S) + CO2 <=> CH2 + CO2", [7.00000E+12, 0, 0]) # Reaction 153 -reaction( "CH2(S) + CO2 <=> CO + CH2O", [1.40000E+13, 0, 0]) +reaction( "CH2(S) + CO2 <=> CO + CH2O", [1.40000E+13, 0, 0]) # Reaction 154 -reaction( "CH2(S) + C2H6 <=> CH3 + C2H5", [4.00000E+13, 0, -550]) +reaction( "CH2(S) + C2H6 <=> CH3 + C2H5", [4.00000E+13, 0, -550]) # Reaction 155 -reaction( "CH3 + O2 <=> O + CH3O", [3.56000E+13, 0, 30480]) +reaction( "CH3 + O2 <=> O + CH3O", [3.56000E+13, 0, 30480]) # Reaction 156 -reaction( "CH3 + O2 <=> OH + CH2O", [2.31000E+12, 0, 20315]) +reaction( "CH3 + O2 <=> OH + CH2O", [2.31000E+12, 0, 20315]) # Reaction 157 -reaction( "CH3 + H2O2 <=> HO2 + CH4", [2.45000E+04, 2.47, 5180]) +reaction( "CH3 + H2O2 <=> HO2 + CH4", [2.45000E+04, 2.47, 5180]) # Reaction 158 -falloff_reaction( "2 CH3 (+ M) <=> C2H6 (+ M)", +falloff_reaction( "2 CH3 (+ M) <=> C2H6 (+ M)", kf = [6.77000E+16, -1.18, 654], kf0 = [3.40000E+41, -7.03, 2762], falloff = Troe(A = 0.619, T3 = 73.2, T1 = 1180, T2 = 9999), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 159 -reaction( "2 CH3 <=> H + C2H5", [6.84000E+12, 0.1, 10600]) +reaction( "2 CH3 <=> H + C2H5", [6.84000E+12, 0.1, 10600]) # Reaction 160 -reaction( "CH3 + HCO <=> CH4 + CO", [2.64800E+13, 0, 0]) +reaction( "CH3 + HCO <=> CH4 + CO", [2.64800E+13, 0, 0]) # Reaction 161 -reaction( "CH3 + CH2O <=> HCO + CH4", [3.32000E+03, 2.81, 5860]) +reaction( "CH3 + CH2O <=> HCO + CH4", [3.32000E+03, 2.81, 5860]) # Reaction 162 -reaction( "CH3 + CH3OH <=> CH2OH + CH4", [3.00000E+07, 1.5, 9940]) +reaction( "CH3 + CH3OH <=> CH2OH + CH4", [3.00000E+07, 1.5, 9940]) # Reaction 163 -reaction( "CH3 + CH3OH <=> CH3O + CH4", [1.00000E+07, 1.5, 9940]) +reaction( "CH3 + CH3OH <=> CH3O + CH4", [1.00000E+07, 1.5, 9940]) # Reaction 164 -reaction( "CH3 + C2H4 <=> C2H3 + CH4", [2.27000E+05, 2, 9200]) +reaction( "CH3 + C2H4 <=> C2H3 + CH4", [2.27000E+05, 2, 9200]) # Reaction 165 -reaction( "CH3 + C2H6 <=> C2H5 + CH4", [6.14000E+06, 1.74, 10450]) +reaction( "CH3 + C2H6 <=> C2H5 + CH4", [6.14000E+06, 1.74, 10450]) # Reaction 166 -reaction( "HCO + H2O <=> H + CO + H2O", [1.50000E+18, -1, 17000]) +reaction( "HCO + H2O <=> H + CO + H2O", [1.50000E+18, -1, 17000]) # Reaction 167 -three_body_reaction( "HCO + M <=> H + CO + M", [1.87000E+17, -1, 17000], +three_body_reaction( "HCO + M <=> H + CO + M", [1.87000E+17, -1, 17000], efficiencies = " C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:0 ") # Reaction 168 -reaction( "HCO + O2 <=> HO2 + CO", [1.34500E+13, 0, 400]) +reaction( "HCO + O2 <=> HO2 + CO", [1.34500E+13, 0, 400]) # Reaction 169 -reaction( "CH2OH + O2 <=> HO2 + CH2O", [1.80000E+13, 0, 900]) +reaction( "CH2OH + O2 <=> HO2 + CH2O", [1.80000E+13, 0, 900]) # Reaction 170 -reaction( "CH3O + O2 <=> HO2 + CH2O", [4.28000E-13, 7.6, -3530]) +reaction( "CH3O + O2 <=> HO2 + CH2O", [4.28000E-13, 7.6, -3530]) # Reaction 171 -reaction( "C2H + O2 <=> HCO + CO", [1.00000E+13, 0, -755]) +reaction( "C2H + O2 <=> HCO + CO", [1.00000E+13, 0, -755]) # Reaction 172 -reaction( "C2H + H2 <=> H + C2H2", [5.68000E+10, 0.9, 1993]) +reaction( "C2H + H2 <=> H + C2H2", [5.68000E+10, 0.9, 1993]) # Reaction 173 -reaction( "C2H3 + O2 <=> HCO + CH2O", [4.58000E+16, -1.39, 1015]) +reaction( "C2H3 + O2 <=> HCO + CH2O", [4.58000E+16, -1.39, 1015]) # Reaction 174 -falloff_reaction( "C2H4 (+ M) <=> H2 + C2H2 (+ M)", +falloff_reaction( "C2H4 (+ M) <=> H2 + C2H2 (+ M)", kf = [8.00000E+12, 0.44, 86770], kf0 = [1.58000E+51, -9.3, 97800], falloff = Troe(A = 0.7345, T3 = 180, T1 = 1035, T2 = 5417), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 175 -reaction( "C2H5 + O2 <=> HO2 + C2H4", [8.40000E+11, 0, 3875]) +reaction( "C2H5 + O2 <=> HO2 + C2H4", [8.40000E+11, 0, 3875]) # Reaction 176 -reaction( "HCCO + O2 <=> OH + 2 CO", [3.20000E+12, 0, 854]) +reaction( "HCCO + O2 <=> OH + 2 CO", [3.20000E+12, 0, 854]) # Reaction 177 -reaction( "2 HCCO <=> 2 CO + C2H2", [1.00000E+13, 0, 0]) +reaction( "2 HCCO <=> 2 CO + C2H2", [1.00000E+13, 0, 0]) # Reaction 178 -reaction( "N + NO <=> N2 + O", [2.70000E+13, 0, 355]) +reaction( "N + NO <=> N2 + O", [2.70000E+13, 0, 355]) # Reaction 179 -reaction( "N + O2 <=> NO + O", [9.00000E+09, 1, 6500]) +reaction( "N + O2 <=> NO + O", [9.00000E+09, 1, 6500]) # Reaction 180 -reaction( "N + OH <=> NO + H", [3.36000E+13, 0, 385]) +reaction( "N + OH <=> NO + H", [3.36000E+13, 0, 385]) # Reaction 181 -reaction( "N2O + O <=> N2 + O2", [1.40000E+12, 0, 10810]) +reaction( "N2O + O <=> N2 + O2", [1.40000E+12, 0, 10810]) # Reaction 182 -reaction( "N2O + O <=> 2 NO", [2.90000E+13, 0, 23150]) +reaction( "N2O + O <=> 2 NO", [2.90000E+13, 0, 23150]) # Reaction 183 -reaction( "N2O + H <=> N2 + OH", [3.87000E+14, 0, 18880]) +reaction( "N2O + H <=> N2 + OH", [3.87000E+14, 0, 18880]) # Reaction 184 -reaction( "N2O + OH <=> N2 + HO2", [2.00000E+12, 0, 21060]) +reaction( "N2O + OH <=> N2 + HO2", [2.00000E+12, 0, 21060]) # Reaction 185 -falloff_reaction( "N2O (+ M) <=> N2 + O (+ M)", +falloff_reaction( "N2O (+ M) <=> N2 + O (+ M)", kf = [7.91000E+10, 0, 56020], kf0 = [6.37000E+14, 0, 56640], efficiencies = " AR:0.625 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 186 -reaction( "HO2 + NO <=> NO2 + OH", [2.11000E+12, 0, -480]) +reaction( "HO2 + NO <=> NO2 + OH", [2.11000E+12, 0, -480]) # Reaction 187 -three_body_reaction( "NO + O + M <=> NO2 + M", [1.06000E+20, -1.41, 0], +three_body_reaction( "NO + O + M <=> NO2 + M", [1.06000E+20, -1.41, 0], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 188 -reaction( "NO2 + O <=> NO + O2", [3.90000E+12, 0, -240]) +reaction( "NO2 + O <=> NO + O2", [3.90000E+12, 0, -240]) # Reaction 189 -reaction( "NO2 + H <=> NO + OH", [1.32000E+14, 0, 360]) +reaction( "NO2 + H <=> NO + OH", [1.32000E+14, 0, 360]) # Reaction 190 -reaction( "NH + O <=> NO + H", [4.00000E+13, 0, 0]) +reaction( "NH + O <=> NO + H", [4.00000E+13, 0, 0]) # Reaction 191 -reaction( "NH + H <=> N + H2", [3.20000E+13, 0, 330]) +reaction( "NH + H <=> N + H2", [3.20000E+13, 0, 330]) # Reaction 192 -reaction( "NH + OH <=> HNO + H", [2.00000E+13, 0, 0]) +reaction( "NH + OH <=> HNO + H", [2.00000E+13, 0, 0]) # Reaction 193 -reaction( "NH + OH <=> N + H2O", [2.00000E+09, 1.2, 0]) +reaction( "NH + OH <=> N + H2O", [2.00000E+09, 1.2, 0]) # Reaction 194 -reaction( "NH + O2 <=> HNO + O", [4.61000E+05, 2, 6500]) +reaction( "NH + O2 <=> HNO + O", [4.61000E+05, 2, 6500]) # Reaction 195 -reaction( "NH + O2 <=> NO + OH", [1.28000E+06, 1.5, 100]) +reaction( "NH + O2 <=> NO + OH", [1.28000E+06, 1.5, 100]) # Reaction 196 -reaction( "NH + N <=> N2 + H", [1.50000E+13, 0, 0]) +reaction( "NH + N <=> N2 + H", [1.50000E+13, 0, 0]) # Reaction 197 -reaction( "NH + H2O <=> HNO + H2", [2.00000E+13, 0, 13850]) +reaction( "NH + H2O <=> HNO + H2", [2.00000E+13, 0, 13850]) # Reaction 198 -reaction( "NH + NO <=> N2 + OH", [2.16000E+13, -0.23, 0]) +reaction( "NH + NO <=> N2 + OH", [2.16000E+13, -0.23, 0]) # Reaction 199 -reaction( "NH + NO <=> N2O + H", [3.65000E+14, -0.45, 0]) +reaction( "NH + NO <=> N2O + H", [3.65000E+14, -0.45, 0]) # Reaction 200 -reaction( "NH2 + O <=> OH + NH", [3.00000E+12, 0, 0]) +reaction( "NH2 + O <=> OH + NH", [3.00000E+12, 0, 0]) # Reaction 201 -reaction( "NH2 + O <=> H + HNO", [3.90000E+13, 0, 0]) +reaction( "NH2 + O <=> H + HNO", [3.90000E+13, 0, 0]) # Reaction 202 -reaction( "NH2 + H <=> NH + H2", [4.00000E+13, 0, 3650]) +reaction( "NH2 + H <=> NH + H2", [4.00000E+13, 0, 3650]) # Reaction 203 -reaction( "NH2 + OH <=> NH + H2O", [9.00000E+07, 1.5, -460]) +reaction( "NH2 + OH <=> NH + H2O", [9.00000E+07, 1.5, -460]) # Reaction 204 -reaction( "NNH <=> N2 + H", [3.30000E+08, 0, 0]) +reaction( "NNH <=> N2 + H", [3.30000E+08, 0, 0]) # Reaction 205 -three_body_reaction( "NNH + M <=> N2 + H + M", [1.30000E+14, -0.11, 4980], +three_body_reaction( "NNH + M <=> N2 + H + M", [1.30000E+14, -0.11, 4980], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 206 -reaction( "NNH + O2 <=> HO2 + N2", [5.00000E+12, 0, 0]) +reaction( "NNH + O2 <=> HO2 + N2", [5.00000E+12, 0, 0]) # Reaction 207 -reaction( "NNH + O <=> OH + N2", [2.50000E+13, 0, 0]) +reaction( "NNH + O <=> OH + N2", [2.50000E+13, 0, 0]) # Reaction 208 -reaction( "NNH + O <=> NH + NO", [7.00000E+13, 0, 0]) +reaction( "NNH + O <=> NH + NO", [7.00000E+13, 0, 0]) # Reaction 209 -reaction( "NNH + H <=> H2 + N2", [5.00000E+13, 0, 0]) +reaction( "NNH + H <=> H2 + N2", [5.00000E+13, 0, 0]) # Reaction 210 -reaction( "NNH + OH <=> H2O + N2", [2.00000E+13, 0, 0]) +reaction( "NNH + OH <=> H2O + N2", [2.00000E+13, 0, 0]) # Reaction 211 -reaction( "NNH + CH3 <=> CH4 + N2", [2.50000E+13, 0, 0]) +reaction( "NNH + CH3 <=> CH4 + N2", [2.50000E+13, 0, 0]) # Reaction 212 -three_body_reaction( "H + NO + M <=> HNO + M", [4.48000E+19, -1.32, 740], +three_body_reaction( "H + NO + M <=> HNO + M", [4.48000E+19, -1.32, 740], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 213 -reaction( "HNO + O <=> NO + OH", [2.50000E+13, 0, 0]) +reaction( "HNO + O <=> NO + OH", [2.50000E+13, 0, 0]) # Reaction 214 -reaction( "HNO + H <=> H2 + NO", [9.00000E+11, 0.72, 660]) +reaction( "HNO + H <=> H2 + NO", [9.00000E+11, 0.72, 660]) # Reaction 215 -reaction( "HNO + OH <=> NO + H2O", [1.30000E+07, 1.9, -950]) +reaction( "HNO + OH <=> NO + H2O", [1.30000E+07, 1.9, -950]) # Reaction 216 -reaction( "HNO + O2 <=> HO2 + NO", [1.00000E+13, 0, 13000]) +reaction( "HNO + O2 <=> HO2 + NO", [1.00000E+13, 0, 13000]) # Reaction 217 -reaction( "CN + O <=> CO + N", [7.70000E+13, 0, 0]) +reaction( "CN + O <=> CO + N", [7.70000E+13, 0, 0]) # Reaction 218 -reaction( "CN + OH <=> NCO + H", [4.00000E+13, 0, 0]) +reaction( "CN + OH <=> NCO + H", [4.00000E+13, 0, 0]) # Reaction 219 -reaction( "CN + H2O <=> HCN + OH", [8.00000E+12, 0, 7460]) +reaction( "CN + H2O <=> HCN + OH", [8.00000E+12, 0, 7460]) # Reaction 220 -reaction( "CN + O2 <=> NCO + O", [6.14000E+12, 0, -440]) +reaction( "CN + O2 <=> NCO + O", [6.14000E+12, 0, -440]) # Reaction 221 -reaction( "CN + H2 <=> HCN + H", [2.95000E+05, 2.45, 2240]) +reaction( "CN + H2 <=> HCN + H", [2.95000E+05, 2.45, 2240]) # Reaction 222 -reaction( "NCO + O <=> NO + CO", [2.35000E+13, 0, 0]) +reaction( "NCO + O <=> NO + CO", [2.35000E+13, 0, 0]) # Reaction 223 -reaction( "NCO + H <=> NH + CO", [5.40000E+13, 0, 0]) +reaction( "NCO + H <=> NH + CO", [5.40000E+13, 0, 0]) # Reaction 224 -reaction( "NCO + OH <=> NO + H + CO", [2.50000E+12, 0, 0]) +reaction( "NCO + OH <=> NO + H + CO", [2.50000E+12, 0, 0]) # Reaction 225 -reaction( "NCO + N <=> N2 + CO", [2.00000E+13, 0, 0]) +reaction( "NCO + N <=> N2 + CO", [2.00000E+13, 0, 0]) # Reaction 226 -reaction( "NCO + O2 <=> NO + CO2", [2.00000E+12, 0, 20000]) +reaction( "NCO + O2 <=> NO + CO2", [2.00000E+12, 0, 20000]) # Reaction 227 -three_body_reaction( "NCO + M <=> N + CO + M", [3.10000E+14, 0, 54050], +three_body_reaction( "NCO + M <=> N + CO + M", [3.10000E+14, 0, 54050], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 228 -reaction( "NCO + NO <=> N2O + CO", [1.90000E+17, -1.52, 740]) +reaction( "NCO + NO <=> N2O + CO", [1.90000E+17, -1.52, 740]) # Reaction 229 -reaction( "NCO + NO <=> N2 + CO2", [3.80000E+18, -2, 800]) +reaction( "NCO + NO <=> N2 + CO2", [3.80000E+18, -2, 800]) # Reaction 230 -three_body_reaction( "HCN + M <=> H + CN + M", [1.04000E+29, -3.3, 126600], +three_body_reaction( "HCN + M <=> H + CN + M", [1.04000E+29, -3.3, 126600], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 231 -reaction( "HCN + O <=> NCO + H", [2.03000E+04, 2.64, 4980]) +reaction( "HCN + O <=> NCO + H", [2.03000E+04, 2.64, 4980]) # Reaction 232 -reaction( "HCN + O <=> NH + CO", [5.07000E+03, 2.64, 4980]) +reaction( "HCN + O <=> NH + CO", [5.07000E+03, 2.64, 4980]) # Reaction 233 -reaction( "HCN + O <=> CN + OH", [3.91000E+09, 1.58, 26600]) +reaction( "HCN + O <=> CN + OH", [3.91000E+09, 1.58, 26600]) # Reaction 234 -reaction( "HCN + OH <=> HOCN + H", [1.10000E+06, 2.03, 13370]) +reaction( "HCN + OH <=> HOCN + H", [1.10000E+06, 2.03, 13370]) # Reaction 235 -reaction( "HCN + OH <=> HNCO + H", [4.40000E+03, 2.26, 6400]) +reaction( "HCN + OH <=> HNCO + H", [4.40000E+03, 2.26, 6400]) # Reaction 236 -reaction( "HCN + OH <=> NH2 + CO", [1.60000E+02, 2.56, 9000]) +reaction( "HCN + OH <=> NH2 + CO", [1.60000E+02, 2.56, 9000]) # Reaction 237 -falloff_reaction( "H + HCN (+ M) <=> H2CN (+ M)", +falloff_reaction( "H + HCN (+ M) <=> H2CN (+ M)", kf = [3.30000E+13, 0, 0], kf0 = [1.40000E+26, -3.4, 1900], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 238 -reaction( "H2CN + N <=> N2 + CH2", [6.00000E+13, 0, 400]) +reaction( "H2CN + N <=> N2 + CH2", [6.00000E+13, 0, 400]) # Reaction 239 -reaction( "C + N2 <=> CN + N", [6.30000E+13, 0, 46020]) +reaction( "C + N2 <=> CN + N", [6.30000E+13, 0, 46020]) # Reaction 240 -reaction( "CH + N2 <=> HCN + N", [3.12000E+09, 0.88, 20130]) +reaction( "CH + N2 <=> HCN + N", [3.12000E+09, 0.88, 20130]) # Reaction 241 -falloff_reaction( "CH + N2 (+ M) <=> HCNN (+ M)", +falloff_reaction( "CH + N2 (+ M) <=> HCNN (+ M)", kf = [3.10000E+12, 0.15, 0], kf0 = [1.30000E+25, -3.16, 740], falloff = Troe(A = 0.667, T3 = 235, T1 = 2117, T2 = 4536), efficiencies = " AR:1 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 242 -reaction( "CH2 + N2 <=> HCN + NH", [1.00000E+13, 0, 74000]) +reaction( "CH2 + N2 <=> HCN + NH", [1.00000E+13, 0, 74000]) # Reaction 243 -reaction( "CH2(S) + N2 <=> NH + HCN", [1.00000E+11, 0, 65000]) +reaction( "CH2(S) + N2 <=> NH + HCN", [1.00000E+11, 0, 65000]) # Reaction 244 -reaction( "C + NO <=> CN + O", [1.90000E+13, 0, 0]) +reaction( "C + NO <=> CN + O", [1.90000E+13, 0, 0]) # Reaction 245 -reaction( "C + NO <=> CO + N", [2.90000E+13, 0, 0]) +reaction( "C + NO <=> CO + N", [2.90000E+13, 0, 0]) # Reaction 246 -reaction( "CH + NO <=> HCN + O", [4.10000E+13, 0, 0]) +reaction( "CH + NO <=> HCN + O", [4.10000E+13, 0, 0]) # Reaction 247 -reaction( "CH + NO <=> H + NCO", [1.62000E+13, 0, 0]) +reaction( "CH + NO <=> H + NCO", [1.62000E+13, 0, 0]) # Reaction 248 -reaction( "CH + NO <=> N + HCO", [2.46000E+13, 0, 0]) +reaction( "CH + NO <=> N + HCO", [2.46000E+13, 0, 0]) # Reaction 249 -reaction( "CH2 + NO <=> H + HNCO", [3.10000E+17, -1.38, 1270]) +reaction( "CH2 + NO <=> H + HNCO", [3.10000E+17, -1.38, 1270]) # Reaction 250 -reaction( "CH2 + NO <=> OH + HCN", [2.90000E+14, -0.69, 760]) +reaction( "CH2 + NO <=> OH + HCN", [2.90000E+14, -0.69, 760]) # Reaction 251 -reaction( "CH2 + NO <=> H + HCNO", [3.80000E+13, -0.36, 580]) +reaction( "CH2 + NO <=> H + HCNO", [3.80000E+13, -0.36, 580]) # Reaction 252 -reaction( "CH2(S) + NO <=> H + HNCO", [3.10000E+17, -1.38, 1270]) +reaction( "CH2(S) + NO <=> H + HNCO", [3.10000E+17, -1.38, 1270]) # Reaction 253 -reaction( "CH2(S) + NO <=> OH + HCN", [2.90000E+14, -0.69, 760]) +reaction( "CH2(S) + NO <=> OH + HCN", [2.90000E+14, -0.69, 760]) # Reaction 254 -reaction( "CH2(S) + NO <=> H + HCNO", [3.80000E+13, -0.36, 580]) +reaction( "CH2(S) + NO <=> H + HCNO", [3.80000E+13, -0.36, 580]) # Reaction 255 -reaction( "CH3 + NO <=> HCN + H2O", [9.60000E+13, 0, 28800]) +reaction( "CH3 + NO <=> HCN + H2O", [9.60000E+13, 0, 28800]) # Reaction 256 -reaction( "CH3 + NO <=> H2CN + OH", [1.00000E+12, 0, 21750]) +reaction( "CH3 + NO <=> H2CN + OH", [1.00000E+12, 0, 21750]) # Reaction 257 -reaction( "HCNN + O <=> CO + H + N2", [2.20000E+13, 0, 0]) +reaction( "HCNN + O <=> CO + H + N2", [2.20000E+13, 0, 0]) # Reaction 258 -reaction( "HCNN + O <=> HCN + NO", [2.00000E+12, 0, 0]) +reaction( "HCNN + O <=> HCN + NO", [2.00000E+12, 0, 0]) # Reaction 259 -reaction( "HCNN + O2 <=> O + HCO + N2", [1.20000E+13, 0, 0]) +reaction( "HCNN + O2 <=> O + HCO + N2", [1.20000E+13, 0, 0]) # Reaction 260 -reaction( "HCNN + OH <=> H + HCO + N2", [1.20000E+13, 0, 0]) +reaction( "HCNN + OH <=> H + HCO + N2", [1.20000E+13, 0, 0]) # Reaction 261 -reaction( "HCNN + H <=> CH2 + N2", [1.00000E+14, 0, 0]) +reaction( "HCNN + H <=> CH2 + N2", [1.00000E+14, 0, 0]) # Reaction 262 -reaction( "HNCO + O <=> NH + CO2", [9.80000E+07, 1.41, 8500]) +reaction( "HNCO + O <=> NH + CO2", [9.80000E+07, 1.41, 8500]) # Reaction 263 -reaction( "HNCO + O <=> HNO + CO", [1.50000E+08, 1.57, 44000]) +reaction( "HNCO + O <=> HNO + CO", [1.50000E+08, 1.57, 44000]) # Reaction 264 -reaction( "HNCO + O <=> NCO + OH", [2.20000E+06, 2.11, 11400]) +reaction( "HNCO + O <=> NCO + OH", [2.20000E+06, 2.11, 11400]) # Reaction 265 -reaction( "HNCO + H <=> NH2 + CO", [2.25000E+07, 1.7, 3800]) +reaction( "HNCO + H <=> NH2 + CO", [2.25000E+07, 1.7, 3800]) # Reaction 266 -reaction( "HNCO + H <=> H2 + NCO", [1.05000E+05, 2.5, 13300]) +reaction( "HNCO + H <=> H2 + NCO", [1.05000E+05, 2.5, 13300]) # Reaction 267 -reaction( "HNCO + OH <=> NCO + H2O", [3.30000E+07, 1.5, 3600]) +reaction( "HNCO + OH <=> NCO + H2O", [3.30000E+07, 1.5, 3600]) # Reaction 268 -reaction( "HNCO + OH <=> NH2 + CO2", [3.30000E+06, 1.5, 3600]) +reaction( "HNCO + OH <=> NH2 + CO2", [3.30000E+06, 1.5, 3600]) # Reaction 269 -three_body_reaction( "HNCO + M <=> NH + CO + M", [1.18000E+16, 0, 84720], +three_body_reaction( "HNCO + M <=> NH + CO + M", [1.18000E+16, 0, 84720], efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 270 -reaction( "HCNO + H <=> H + HNCO", [2.10000E+15, -0.69, 2850]) +reaction( "HCNO + H <=> H + HNCO", [2.10000E+15, -0.69, 2850]) # Reaction 271 -reaction( "HCNO + H <=> OH + HCN", [2.70000E+11, 0.18, 2120]) +reaction( "HCNO + H <=> OH + HCN", [2.70000E+11, 0.18, 2120]) # Reaction 272 -reaction( "HCNO + H <=> NH2 + CO", [1.70000E+14, -0.75, 2890]) +reaction( "HCNO + H <=> NH2 + CO", [1.70000E+14, -0.75, 2890]) # Reaction 273 -reaction( "HOCN + H <=> H + HNCO", [2.00000E+07, 2, 2000]) +reaction( "HOCN + H <=> H + HNCO", [2.00000E+07, 2, 2000]) # Reaction 274 -reaction( "HCCO + NO <=> HCNO + CO", [9.00000E+12, 0, 0]) +reaction( "HCCO + NO <=> HCNO + CO", [9.00000E+12, 0, 0]) # Reaction 275 -reaction( "CH3 + N <=> H2CN + H", [6.10000E+14, -0.31, 290]) +reaction( "CH3 + N <=> H2CN + H", [6.10000E+14, -0.31, 290]) # Reaction 276 -reaction( "CH3 + N <=> HCN + H2", [3.70000E+12, 0.15, -90]) +reaction( "CH3 + N <=> HCN + H2", [3.70000E+12, 0.15, -90]) # Reaction 277 -reaction( "NH3 + H <=> NH2 + H2", [5.40000E+05, 2.4, 9915]) +reaction( "NH3 + H <=> NH2 + H2", [5.40000E+05, 2.4, 9915]) # Reaction 278 -reaction( "NH3 + OH <=> NH2 + H2O", [5.00000E+07, 1.6, 955]) +reaction( "NH3 + OH <=> NH2 + H2O", [5.00000E+07, 1.6, 955]) # Reaction 279 -reaction( "NH3 + O <=> NH2 + OH", [9.40000E+06, 1.94, 6460]) +reaction( "NH3 + O <=> NH2 + OH", [9.40000E+06, 1.94, 6460]) # Reaction 280 -reaction( "NH + CO2 <=> HNO + CO", [1.00000E+13, 0, 14350]) +reaction( "NH + CO2 <=> HNO + CO", [1.00000E+13, 0, 14350]) # Reaction 281 -reaction( "CN + NO2 <=> NCO + NO", [6.16000E+15, -0.752, 345]) +reaction( "CN + NO2 <=> NCO + NO", [6.16000E+15, -0.752, 345]) # Reaction 282 -reaction( "NCO + NO2 <=> N2O + CO2", [3.25000E+12, 0, -705]) +reaction( "NCO + NO2 <=> N2O + CO2", [3.25000E+12, 0, -705]) # Reaction 283 -reaction( "N + CO2 <=> NO + CO", [3.00000E+12, 0, 11300]) +reaction( "N + CO2 <=> NO + CO", [3.00000E+12, 0, 11300]) # Reaction 284 -reaction( "O + CH3 => H + H2 + CO", [3.37000E+13, 0, 0]) +reaction( "O + CH3 => H + H2 + CO", [3.37000E+13, 0, 0]) # Reaction 285 -reaction( "O + C2H4 <=> H + CH2CHO", [6.70000E+06, 1.83, 220]) +reaction( "O + C2H4 <=> H + CH2CHO", [6.70000E+06, 1.83, 220]) # Reaction 286 -reaction( "O + C2H5 <=> H + CH3CHO", [1.09600E+14, 0, 0]) +reaction( "O + C2H5 <=> H + CH3CHO", [1.09600E+14, 0, 0]) # Reaction 287 -reaction( "OH + HO2 <=> O2 + H2O", [5.00000E+15, 0, 17330], - options = 'duplicate') +reaction( "OH + HO2 <=> O2 + H2O", [5.00000E+15, 0, 17330], + options = ["duplicate"]) # Reaction 288 -reaction( "OH + CH3 => H2 + CH2O", [8.00000E+09, 0.5, -1755]) +reaction( "OH + CH3 => H2 + CH2O", [8.00000E+09, 0.5, -1755]) # Reaction 289 -falloff_reaction( "CH + H2 (+ M) <=> CH3 (+ M)", +falloff_reaction( "CH + H2 (+ M) <=> CH3 (+ M)", kf = [1.97000E+12, 0.43, -370], kf0 = [4.82000E+25, -2.8, 590], falloff = Troe(A = 0.578, T3 = 122, T1 = 2535, T2 = 9365), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 290 -reaction( "CH2 + O2 => 2 H + CO2", [5.80000E+12, 0, 1500]) +reaction( "CH2 + O2 => 2 H + CO2", [5.80000E+12, 0, 1500]) # Reaction 291 -reaction( "CH2 + O2 <=> O + CH2O", [2.40000E+12, 0, 1500]) +reaction( "CH2 + O2 <=> O + CH2O", [2.40000E+12, 0, 1500]) # Reaction 292 -reaction( "CH2 + CH2 => 2 H + C2H2", [2.00000E+14, 0, 10989]) +reaction( "CH2 + CH2 => 2 H + C2H2", [2.00000E+14, 0, 10989]) # Reaction 293 -reaction( "CH2(S) + H2O => H2 + CH2O", [6.82000E+10, 0.25, -935]) +reaction( "CH2(S) + H2O => H2 + CH2O", [6.82000E+10, 0.25, -935]) # Reaction 294 -reaction( "C2H3 + O2 <=> O + CH2CHO", [3.03000E+11, 0.29, 11]) +reaction( "C2H3 + O2 <=> O + CH2CHO", [3.03000E+11, 0.29, 11]) # Reaction 295 -reaction( "C2H3 + O2 <=> HO2 + C2H2", [1.33700E+06, 1.61, -384]) +reaction( "C2H3 + O2 <=> HO2 + C2H2", [1.33700E+06, 1.61, -384]) # Reaction 296 -reaction( "O + CH3CHO <=> OH + CH2CHO", [5.84000E+12, 0, 1808]) +reaction( "O + CH3CHO <=> OH + CH2CHO", [5.84000E+12, 0, 1808]) # Reaction 297 -reaction( "O + CH3CHO => OH + CH3 + CO", [5.84000E+12, 0, 1808]) +reaction( "O + CH3CHO => OH + CH3 + CO", [5.84000E+12, 0, 1808]) # Reaction 298 -reaction( "O2 + CH3CHO => HO2 + CH3 + CO", [3.01000E+13, 0, 39150]) +reaction( "O2 + CH3CHO => HO2 + CH3 + CO", [3.01000E+13, 0, 39150]) # Reaction 299 -reaction( "H + CH3CHO <=> CH2CHO + H2", [2.05000E+09, 1.16, 2405]) +reaction( "H + CH3CHO <=> CH2CHO + H2", [2.05000E+09, 1.16, 2405]) # Reaction 300 -reaction( "H + CH3CHO => CH3 + H2 + CO", [2.05000E+09, 1.16, 2405]) +reaction( "H + CH3CHO => CH3 + H2 + CO", [2.05000E+09, 1.16, 2405]) # Reaction 301 -reaction( "OH + CH3CHO => CH3 + H2O + CO", [2.34300E+10, 0.73, -1113]) +reaction( "OH + CH3CHO => CH3 + H2O + CO", [2.34300E+10, 0.73, -1113]) # Reaction 302 -reaction( "HO2 + CH3CHO => CH3 + H2O2 + CO", [3.01000E+12, 0, 11923]) +reaction( "HO2 + CH3CHO => CH3 + H2O2 + CO", [3.01000E+12, 0, 11923]) # Reaction 303 -reaction( "CH3 + CH3CHO => CH3 + CH4 + CO", [2.72000E+06, 1.77, 5920]) +reaction( "CH3 + CH3CHO => CH3 + CH4 + CO", [2.72000E+06, 1.77, 5920]) # Reaction 304 -falloff_reaction( "H + CH2CO (+ M) <=> CH2CHO (+ M)", +falloff_reaction( "H + CH2CO (+ M) <=> CH2CHO (+ M)", kf = [4.86500E+11, 0.422, -1755], kf0 = [1.01200E+42, -7.63, 3854], falloff = Troe(A = 0.465, T3 = 201, T1 = 1773, T2 = 5333), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 305 -reaction( "O + CH2CHO => H + CH2 + CO2", [1.50000E+14, 0, 0]) +reaction( "O + CH2CHO => H + CH2 + CO2", [1.50000E+14, 0, 0]) # Reaction 306 -reaction( "O2 + CH2CHO => OH + CO + CH2O", [1.81000E+10, 0, 0]) +reaction( "O2 + CH2CHO => OH + CO + CH2O", [1.81000E+10, 0, 0]) # Reaction 307 -reaction( "O2 + CH2CHO => OH + 2 HCO", [2.35000E+10, 0, 0]) +reaction( "O2 + CH2CHO => OH + 2 HCO", [2.35000E+10, 0, 0]) # Reaction 308 -reaction( "H + CH2CHO <=> CH3 + HCO", [2.20000E+13, 0, 0]) +reaction( "H + CH2CHO <=> CH3 + HCO", [2.20000E+13, 0, 0]) # Reaction 309 -reaction( "H + CH2CHO <=> CH2CO + H2", [1.10000E+13, 0, 0]) +reaction( "H + CH2CHO <=> CH2CO + H2", [1.10000E+13, 0, 0]) # Reaction 310 -reaction( "OH + CH2CHO <=> H2O + CH2CO", [1.20000E+13, 0, 0]) +reaction( "OH + CH2CHO <=> H2O + CH2CO", [1.20000E+13, 0, 0]) # Reaction 311 -reaction( "OH + CH2CHO <=> HCO + CH2OH", [3.01000E+13, 0, 0]) +reaction( "OH + CH2CHO <=> HCO + CH2OH", [3.01000E+13, 0, 0]) # Reaction 312 -falloff_reaction( "CH3 + C2H5 (+ M) <=> C3H8 (+ M)", +falloff_reaction( "CH3 + C2H5 (+ M) <=> C3H8 (+ M)", kf = [9.43000E+12, 0, 0], kf0 = [2.71000E+74, -16.82, 13065], falloff = Troe(A = 0.1527, T3 = 291, T1 = 2742, T2 = 7748), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 313 -reaction( "O + C3H8 <=> OH + C3H7", [1.93000E+05, 2.68, 3716]) +reaction( "O + C3H8 <=> OH + C3H7", [1.93000E+05, 2.68, 3716]) # Reaction 314 -reaction( "H + C3H8 <=> C3H7 + H2", [1.32000E+06, 2.54, 6756]) +reaction( "H + C3H8 <=> C3H7 + H2", [1.32000E+06, 2.54, 6756]) # Reaction 315 -reaction( "OH + C3H8 <=> C3H7 + H2O", [3.16000E+07, 1.8, 934]) +reaction( "OH + C3H8 <=> C3H7 + H2O", [3.16000E+07, 1.8, 934]) # Reaction 316 -reaction( "C3H7 + H2O2 <=> HO2 + C3H8", [3.78000E+02, 2.72, 1500]) +reaction( "C3H7 + H2O2 <=> HO2 + C3H8", [3.78000E+02, 2.72, 1500]) # Reaction 317 -reaction( "CH3 + C3H8 <=> C3H7 + CH4", [9.03000E-01, 3.65, 7154]) +reaction( "CH3 + C3H8 <=> C3H7 + CH4", [9.03000E-01, 3.65, 7154]) # Reaction 318 -falloff_reaction( "CH3 + C2H4 (+ M) <=> C3H7 (+ M)", +falloff_reaction( "CH3 + C2H4 (+ M) <=> C3H7 (+ M)", kf = [2.55000E+06, 1.6, 5700], kf0 = [3.00000E+63, -14.6, 18170], falloff = Troe(A = 0.1894, T3 = 277, T1 = 8748, T2 = 7891), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 319 -reaction( "O + C3H7 <=> C2H5 + CH2O", [9.64000E+13, 0, 0]) +reaction( "O + C3H7 <=> C2H5 + CH2O", [9.64000E+13, 0, 0]) # Reaction 320 -falloff_reaction( "H + C3H7 (+ M) <=> C3H8 (+ M)", +falloff_reaction( "H + C3H7 (+ M) <=> C3H8 (+ M)", kf = [3.61300E+13, 0, 0], kf0 = [4.42000E+61, -13.545, 11357], falloff = Troe(A = 0.315, T3 = 369, T1 = 3285, T2 = 6667), efficiencies = " AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 ") # Reaction 321 -reaction( "H + C3H7 <=> CH3 + C2H5", [4.06000E+06, 2.19, 890]) +reaction( "H + C3H7 <=> CH3 + C2H5", [4.06000E+06, 2.19, 890]) # Reaction 322 -reaction( "OH + C3H7 <=> C2H5 + CH2OH", [2.41000E+13, 0, 0]) +reaction( "OH + C3H7 <=> C2H5 + CH2OH", [2.41000E+13, 0, 0]) # Reaction 323 -reaction( "HO2 + C3H7 <=> O2 + C3H8", [2.55000E+10, 0.255, -943]) +reaction( "HO2 + C3H7 <=> O2 + C3H8", [2.55000E+10, 0.255, -943]) # Reaction 324 -reaction( "HO2 + C3H7 => OH + C2H5 + CH2O", [2.41000E+13, 0, 0]) +reaction( "HO2 + C3H7 => OH + C2H5 + CH2O", [2.41000E+13, 0, 0]) # Reaction 325 -reaction( "CH3 + C3H7 <=> 2 C2H5", [1.92700E+13, -0.32, 0]) +reaction( "CH3 + C3H7 <=> 2 C2H5", [1.92700E+13, -0.32, 0]) diff --git a/test_problems/ck2cti_test/runtest.in b/test_problems/ck2cti_test/runtest.in index 123ff575b..3734e05d0 100755 --- a/test_problems/ck2cti_test/runtest.in +++ b/test_problems/ck2cti_test/runtest.in @@ -3,7 +3,7 @@ # BINDIR=@buildbin@ CK2CTI=$BINDIR/ck2cti -$CK2CTI -i ./gri30.inp -id gri30 -tr ./gri30_tran.dat > gri30.cti +$CK2CTI -i ./gri30.inp -id gri30 -tr ./gri30_tran.dat # # strip out variably dated stuff # diff --git a/test_problems/diamondSurf/Makefile.in b/test_problems/diamondSurf/Makefile.in index 48f15b6a9..6f94b4ed9 100644 --- a/test_problems/diamondSurf/Makefile.in +++ b/test_problems/diamondSurf/Makefile.in @@ -19,7 +19,7 @@ OBJS = runDiamond.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = +LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# diff --git a/test_problems/diamondSurf/diamond_blessed.xml b/test_problems/diamondSurf/diamond_blessed.xml index 176662f96..812d61a8a 100644 --- a/test_problems/diamondSurf/diamond_blessed.xml +++ b/test_problems/diamondSurf/diamond_blessed.xml @@ -176,8 +176,8 @@ 7.300000 - H:1 c6HH:1 - H2:1 c6H*:1 + H:1 c6HH:1.0 + H2:1 c6H*:1.0 @@ -190,8 +190,8 @@ 0.000000 - c6H*:1 H:1 - c6HH:1 + c6H*:1.0 H:1 + c6HH:1.0 @@ -204,8 +204,8 @@ 0.000000 - c6H*:1 CH3:1 - c6HM:1 + c6H*:1.0 CH3:1 + c6HM:1.0 @@ -218,8 +218,8 @@ 7.300000 - H:1 c6HM:1 - H2:1 c6*M:1 + H:1 c6HM:1.0 + H2:1 c6*M:1.0 @@ -232,8 +232,8 @@ 0.000000 - H:1 c6*M:1 - c6HM:1 + H:1 c6*M:1.0 + c6HM:1.0 @@ -246,8 +246,8 @@ 7.700000 - H:1 c6HM:1 - H2:1 c6HM*:1 + H:1 c6HM:1.0 + H2:1 c6HM*:1.0 @@ -260,8 +260,8 @@ 0.000000 - c6HM*:1 H:1 - c6HM:1 + c6HM*:1.0 H:1 + c6HM:1.0 @@ -274,8 +274,8 @@ 0.000000 - c6HM*:1 - c6*M:1 + c6HM*:1.0 + c6*M:1.0 @@ -288,8 +288,8 @@ 0.000000 - c6HM*:1 H:1 - c6H*:1 CH3:1 + c6HM*:1.0 H:1 + c6H*:1.0 CH3:1 @@ -302,8 +302,8 @@ 7.300000 - c6HM*:1 H:1 - H2:1 c6B:1 + c6HM*:1.0 H:1 + H2:1 c6B:1.0 @@ -316,8 +316,8 @@ 7.700000 - H:1 c6*M:1 - H2:1 c6B:1 + H:1 c6*M:1.0 + H2:1 c6B:1.0 @@ -330,8 +330,8 @@ 7.300000 - H:1 c6HH:1 - H2:1 c6*H:1 + H:1 c6HH:1.0 + H2:1 c6*H:1.0 @@ -344,8 +344,8 @@ 0.000000 - c6*H:1 H:1 - c6HH:1 + c6*H:1.0 H:1 + c6HH:1.0 @@ -358,8 +358,8 @@ 7.300000 - c6H*:1 H:1 - H2:1 c6**:1 + c6H*:1.0 H:1 + H2:1 c6**:1.0 @@ -372,8 +372,8 @@ 0.000000 - H:1 c6**:1 - c6H*:1 + H:1 c6**:1.0 + c6H*:1.0 @@ -386,8 +386,8 @@ 5.000000 - c6*H:1 H:1 - H2:1 c6**:1 + c6*H:1.0 H:1 + H2:1 c6**:1.0 @@ -400,8 +400,8 @@ 0.000000 - H:1 c6**:1 - c6*H:1 + H:1 c6**:1.0 + c6*H:1.0 @@ -414,8 +414,8 @@ 0.000000 - CH3:1 c6**:1 - c6*M:1 + CH3:1 c6**:1.0 + c6*M:1.0 @@ -428,8 +428,8 @@ 0.000000 - c6H*:1 - c6*H:1 + c6H*:1.0 + c6*H:1.0 @@ -442,8 +442,8 @@ 0.000000 - c6B:1 - C(d):1 c6HH:1 + c6B:1.0 + C(d):1 c6HH:1.0 diff --git a/test_problems/diamondSurf/runDiamond.cpp b/test_problems/diamondSurf/runDiamond.cpp index 888d6cfe5..ca3eec9a5 100644 --- a/test_problems/diamondSurf/runDiamond.cpp +++ b/test_problems/diamondSurf/runDiamond.cpp @@ -30,7 +30,7 @@ static void printUsage() } - +#include "Cantera.h" #include "kernel/ct_defs.h" #include "kernel/ctml.h" #include "kernel/GasKinetics.h" diff --git a/test_problems/python/flame1_blessed.csv b/test_problems/python/flame1_blessed.csv index 6fae28595..3ab93ebae 100644 --- a/test_problems/python/flame1_blessed.csv +++ b/test_problems/python/flame1_blessed.csv @@ -1,106 +1,106 @@ z (m), u (m/s), V (1/s), T (K), rho (kg/m3), H2, H, O, O2, OH, H2O, HO2, H2O2, AR, -0.0, 1.1275652543829568, 0.0, 373.0, 0.053211384765064665, 0.16776402246182265, 0.002989921888244304, 2.5031612727446131e-05, 0.10186359075601105, 0.00046130498053968932, 0.0033537128150440835, 1.727912352455336e-05, 9.7053066743358057e-06, 0.72351543105541183, -1.953125e-05, 1.132467030204181, 0.0, 374.65074486229958, 0.052981379989674497, 0.16762393534589329, 0.0030060384380578482, 2.5543059795350318e-05, 0.10182133085118145, 0.00047092348261512022, 0.0034470746509844287, 1.7846388555777168e-05, 1.0026397113114877e-05, 0.72357728138580368, -3.9062500000000001e-05, 1.1373542554068523, 0.0, 376.29697215585122, 0.052754022998973776, 0.16748321476309205, 0.0030228414451344736, 2.6035854867020184e-05, 0.10177941458386765, 0.00047987475923369201, 0.0035410822252054295, 1.8181501957641553e-05, 1.0334536578198374e-05, 0.72363902033006378, -7.8125000000000002e-05, 1.1470833318604783, 0.0, 379.57519229379164, 0.05230716132773084, 0.16720050670086284, 0.0030584089388565839, 2.696179335655628e-05, 0.10169667153387002, 0.00049571319265781933, 0.0037305137746638196, 1.8379977909342206e-05, 1.0909703481025033e-05, 0.72376193438434178, -0.0001171875, 1.1567497278230929, 0.0, 382.83389021801747, 0.051870594395874617, 0.16691535590882722, 0.0030966073028681432, 2.7811788243659511e-05, 0.10161489578167687, 0.0005089801594941036, 0.0039221084901861188, 1.828642277628605e-05, 1.1430737804664654e-05, 0.72388452340812293, -0.00015625, 1.1663538414661063, 0.0, 386.07319911875402, 0.051443979975210996, 0.16662781366338386, 0.003137340735455667, 2.8589049912427849e-05, 0.10153391482499489, 0.00051988100660460362, 0.0041156716011097015, 1.806030401487144e-05, 1.189691568611344e-05, 0.72400683189883785, -0.00019531250000000001, 1.1758972154011564, 0.0, 389.29361992507745, 0.051026941230416199, 0.16633793055180235, 0.003180510350808343, 2.9298261917658789e-05, 0.10145359441411989, 0.00052865073830690083, 0.0043110348746794582, 1.7779063641995439e-05, 1.2308400384095847e-05, 0.72412889334433939, -0.00023437499999999999, 1.1853818841438044, 0.0, 392.49581266506038, 0.05061909755127602, 0.16604575449616768, 0.0032260202345698891, 2.994475551088622e-05, 0.10137382548612968, 0.0005355225271551112, 0.0045080510417168217, 1.7479950870668543e-05, 1.2666066494020153e-05, 0.72425073544138541, -0.00031250000000000001, 1.2041844255033771, 0.0, 398.84800561445047, 0.049829511174479764, 0.16545704903645592, 0.0033233772414194046, 3.1062171419304046e-05, 0.1012163061144775, 0.00054420498601155112, 0.0049050283654353353, 1.6883777277884723e-05, 1.322242031889246e-05, 0.72449286588718442, -0.00039062500000000002, 1.2227827160725302, 0.0, 405.13723327767337, 0.049072314929011492, 0.16485977769822938, 0.0034290145654258123, 3.1998505958598051e-05, 0.10106008782751083, 0.00054778255304984412, 0.0053069668564886766, 1.632566002699148e-05, 1.3592051749896643e-05, 0.72473445428156003, -0.00046874999999999998, 1.2411932410167659, 0.0, 411.36887146392792, 0.048345046149307062, 0.16425420269881516, 0.0035423884430853996, 3.2792946894063721e-05, 0.10090475978591375, 0.00054741907209730561, 0.0057131860264462465, 1.5808880047196472e-05, 1.3794366351127078e-05, 0.72497564778034973, -0.00054687500000000005, 1.2594308752535814, 0.0, 417.54778336600219, 0.047645512257039634, 0.16364053984812543, 0.0036630382785743871, 3.3480323528060561e-05, 0.10075001220222901, 0.00054402970925568523, 0.0061231419789689826, 1.5328968401659721e-05, 1.3849765381414213e-05, 0.72521657892553537, -0.00062500000000000001, 1.2775089504769395, 0.0, 423.67833849598827, 0.046971757962891186, 0.1630189638555814, 0.0037905734108174887, 3.4091176157653171e-05, 0.10059561000605229, 0.00053833368055875908, 0.0065364020209298978, 1.488037677653179e-05, 1.3778318110261266e-05, 0.72545736715501574, -0.00078125000000000004, 1.3132333521848611, 0.0, 435.80770932738147, 0.045694756109357387, 0.16176153571148297, 0.0040632638592921506, 3.5156550209003968e-05, 0.10028950182609443, 0.00052186672075734536, 0.0073658341735341809, 1.4064495483066844e-05, 1.3316688641458325e-05, 0.72593545997450526, -0.000859375, 1.3309065052626408, 0.0, 441.8174383642143, 0.045088302831439518, 0.16111726763502784, 0.0042095524957931315, 3.5682860089851419e-05, 0.10013544018968863, 0.00051220132245742339, 0.0077867352089415936, 1.3687764230391132e-05, 1.2978477805514648e-05, 0.72617645404596554, -0.00093749999999999997, 1.3484619129324222, 0.0, 447.79259814046958, 0.044501594799945005, 0.16046546654206398, 0.004361660519138986, 3.6221009369263887e-05, 0.099981221174192753, 0.00050187235334914367, 0.0082099709674984221, 1.3330532885469295e-05, 1.2580355487040574e-05, 0.72641767654601486, -0.001015625, 1.3659073996684845, 0.0, 453.73578098050945, 0.043933470585419708, 0.15980616205519932, 0.0045194111011333847, 3.6788022155668475e-05, 0.099826769227065862, 0.00049110431983717033, 0.0086354482683401561, 1.2990513775070318e-05, 1.2134858763579209e-05, 0.72665919163372972, -0.0010937500000000001, 1.3832500407135633, 0.0, 459.64933490127197, 0.043382872615298586, 0.15913936337578055, 0.0046826530391502917, 3.73998739261542e-05, 0.099672017046078948, 0.00048007557295210113, 0.009063118201046284, 1.2666104788516238e-05, 1.1653004894434709e-05, 0.72690105378138259, -0.0011718750000000002, 1.4004962572982196, 0.0, 465.53539404130225, 0.042848834593032153, 0.15846506142289443, 0.0048512570701345009, 3.8071936616235892e-05, 0.099516901519134365, 0.00046892783203584989, 0.009492971609376042, 1.2356047376028119e-05, 1.1144419711774137e-05, 0.72714330814272077, -0.00125, 1.4176518978468995, 0.0, 471.39590447223026, 0.0423304708121452, 0.15778323077305173, 0.0050251127983545647, 3.8819368141618124e-05, 0.099361360505874879, 0.00045777351494933726, 0.0099250354177799274, 1.2059297441155301e-05, 1.0617471510161349e-05, 0.72738599085289668, -0.0013281249999999999, 1.4347223074357169, 0.0, 477.23264646472961, 0.041826967008301255, 0.15709383134727467, 0.0052041261011630743, 3.9657454320519997e-05, 0.099205330273491515, 0.00044670148036736305, 0.010359369619919288, 1.177496327752052e-05, 1.0079401370310751e-05, 0.72762912935881574, -0.0014062499999999999, 1.4517123885741003, 0.0, 483.0472537601409, 0.041337572486916906, 0.15639680997769023, 0.0053882169243583298, 4.0601909602156006e-05, 0.099048743450931939, 0.0004357815756742343, 0.010796064794537668, 1.15022685954137e-05, 9.536445045788933e-06, 0.72787274265356416, -0.001484375, 1.4686266531606913, 0.0, 488.84123024230206, 0.04086159332911872, 0.15569210176500267, 0.0055773173941649316, 4.1669142040160528e-05, 0.098891527364494886, 0.00042506826925344595, 0.01123524004173984, 1.1240527450962819e-05, 8.9939441817681721e-06, 0.72811684155167122, -0.0015625000000000001, 1.4854692681884447, 0.0, 494.61596434027615, 0.040398386502994606, 0.15497963136269288, 0.0057713701956674367, 4.2876487124327001e-05, 0.09873360267929393, 0.00041460357303227993, 0.01167704126351166, 1.0989126160058252e-05, 8.4564462565960581e-06, 0.72836142886626076, -0.0016406250000000002, 1.5022440945172657, 0.0, 500.37274145335317, 0.039947354747673976, 0.15425931408194524, 0.0059703271698679349, 4.424241422016182e-05, 0.098574882257071367, 0.00040441940929467123, 0.012121639724031696, 1.0747509870816988e-05, 7.9277935806976669e-06, 0.72860649964011759, -0.00171875, 1.5189547211962837, 0.0, 506.11275465614125, 0.039507942107827605, 0.15353105695597044, 0.0061741480990239262, 4.5786708650110338e-05, 0.098415270195264665, 0.00039453953858250364, 0.012569230845812993, 1.051517243951446e-05, 7.4112022015508926e-06, 0.72885204128205439, -0.0017968749999999999, 1.5356044943285831, 0.0, 511.83711391135125, 0.039079630028038825, 0.15279475964940409, 0.0063827996466266036, 4.7530631761592056e-05, 0.098254660987351902, 0.0003849811371786402, 0.013020033199926638, 1.0291648706904824e-05, 6.9093317960474599e-06, 0.72909803376724758, -0.0018749999999999999, 1.5521965428459528, 0.0, 517.54685398983554, 0.0386619339192949, 0.15205031535027191, 0.0065962544336024709, 4.9497060838808306e-05, 0.098092938793298667, 0.00037575609208264824, 0.013474287663800707, 1.0076508538112965e-05, 6.4243476989000899e-06, 0.72934444974986778, -0.001953125, 1.5687337999813287, 0.0, 523.24294127236635, 0.03825440013561842, 0.15129761152934176, 0.0068144902258203697, 5.1710610256732339e-05, 0.097929976778327113, 0.00036687206513271413, 0.01393225671725087, 9.8693521460615612e-06, 5.9579761777982361e-06, 0.72959125474554654, -0.0020312500000000001, 1.5852190226486123, 0.0, 528.92627958584603, 0.037856603297247278, 0.15053653069800749, 0.0070374892219245378, 5.4197735010019648e-05, 0.097765636522345156, 0.00035833336615556042, 0.014394223860192736, 9.6698062761006381e-06, 5.5115539779793913e-06, 0.72983840723611038, -0.0021093750000000001, 1.6016548074390726, 0.0, 534.59771520896982, 0.037468143917583921, 0.14976695105483578, 0.0072652374222929731, 5.6986817487689615e-05, 0.097599767470081658, 0.00035014166541836098, 0.014860493130393383, 9.4775205985596574e-06, 5.0860730418021989e-06, 0.73008585884584987, -0.0021875000000000002, 1.618043605270592, 0.0, 540.25804117358712, 0.037088646286694241, 0.14898874714057003, 0.0074977240726757351, 6.0108238285569459e-05, 0.097432206431731117, 0.00034229656959249504, 0.015331388711432864, 9.2921622757718912e-06, 4.6822211895471904e-06, 0.73033355445224668, -0.0022656250000000003, 1.6343877335585872, 0.0, 545.90800100627939, 0.036717756578845247, 0.14820179040286632, 0.0077349411663349158, 6.3594431830167722e-05, 0.097262777114483376, 0.00033479608465952949, 0.015807254615701431, 9.1134000474317172e-06, 4.3004194307813683e-06, 0.73058143236464612, -0.0023437500000000003, 1.6506893880799776, 0.0, 551.54829218954922, 0.036355141137516665, 0.1474059497700515, 0.0079768829950638519, 6.747992814344499e-05, 0.097091289706105033, 0.0003276370115044282, 0.016288454438672269, 8.9408383519020383e-06, 3.9408564744142331e-06, 0.73082942445563315, -0.0025000000000000001, 1.6831785459322957, 0.0, 562.80216283335903, 0.035653383514511382, 0.14579552383369113, 0.0084723516073871193, 7.6508022049970079e-05, 0.096743362997858656, 0.000314396189225375, 0.017262908398421099, 8.6136818887273732e-06, 3.2915568075277058e-06, 0.73132304371267043, -0.0026562499999999998, 1.7155248515032844, 0.0, 574.02593011068632, 0.034981100311546651, 0.14414880002985636, 0.0089864186867899976, 8.7517532801834007e-05, 0.096385489147066059, 0.00030246895891878625, 0.018261773629335783, 8.3083688622086495e-06, 2.725168524210311e-06, 0.73181649847784491, -0.0028124999999999999, 1.747742911919467, 0.0, 585.22405033790574, 0.034336205695208434, 0.14246474183650254, 0.0095190691871101622, 0.00010083324953048968, 0.096015852063925544, 0.00029185170918635659, 0.019288263621873147, 8.0233254702688349e-06, 2.2373021471838866e-06, 0.73230912770425438, -0.00296875, 1.7798460922688339, 0.0, 596.40046299216704, 0.033716821788143683, 0.14074232400680708, 0.010070292421688375, 0.00011680514909311023, 0.09563243509844295, 0.00028254064056112109, 0.020345828181828049, 7.7569130746587028e-06, 1.8221659071078006e-06, 0.73280019542259756, -0.0031250000000000002, 1.811846571378934, 0.0, 607.55860131618044, 0.033121253780632742, 0.13898055075046348, 0.010640072659724088, 0.00013580594024694212, 0.095233020834091117, 0.00027453595408355978, 0.021438134212556359, 7.5075006588351535e-06, 1.4731092658633161e-06, 0.73328889903890981, -0.0034375, 1.875601114002033, 0.0, 629.83042715625572, 0.031995258326648943, 0.13536982280906726, 0.011824018291544112, 0.00018357073855395796, 0.094387207339888021, 0.00026255509500516626, 0.023716596916287403, 7.0536863179808346e-06, 9.5588782299968894e-07, 0.73424821923551309, -0.0037499999999999999, 1.9390737245377838, 0.0, 652.06460214723597, 0.030947774195919538, 0.1315980979153655, 0.013079544826831477, 0.00024704529101789651, 0.093457724436966177, 0.00025601902047579892, 0.02616308634057473, 6.652809615067184e-06, 6.074763025893089e-07, 0.73519122188285069, -0.0040625000000000001, 2.0023284168095352, 0.0, 674.27530165425162, 0.029969939160313312, 0.12766097421805978, 0.014405382541981397, 0.00032896866593523042, 0.092425685931524254, 0.00025543177382769531, 0.028805432794821409, 6.2971022770411945e-06, 3.8195781566041335e-07, 0.73611144501375747, -0.0043750000000000004, 2.0654098850048723, 0.0, 696.46888470439364, 0.029054418834378176, 0.12355653679118893, 0.015799360537281707, 0.00043180543362737365, 0.091271758455128568, 0.00026139209783707074, 0.031670490181302351, 5.9796534896855172e-06, 2.4153741434968614e-07, 0.73700243531272991, -0.0046875000000000007, 2.1283400808186821, 0.0, 718.64292973066279, 0.028195159995345158, 0.11928615396665082, 0.017258105247946687, 0.00055758455707613779, 0.089977218387799721, 0.0002745880793234664, 0.034782385511106739, 5.6944038433944409e-06, 1.5744366362442791e-07, 0.73785811240258936, -0.0050000000000000001, 2.1911146500193937, 0.0, 740.7853207418882, 0.027387192759740643, 0.11485525613682668, 0.018776757299557724, 0.000707763914860885, 0.088525172760543475, 0.00029575663157695831, 0.038160621079188585, 5.4359561233800005e-06, 1.0917888753627411e-07, 0.73867312704243471, -0.0053124999999999995, 2.2536996867741599, 0.0, 762.87352373697047, 0.026626465222753855, 0.11027403373822581, 0.020348729842540547, 0.0008831285860245652, 0.086901865711060094, 0.0003256247345576996, 0.041818152105070332, 5.1994553940743463e-06, 8.2968192402701579e-08, 0.7394431828589344, -0.0056249999999999998, 2.3160293523584756, 0.0, 784.87422082809655, 0.025909698274851053, 0.10555797524709802, 0.02196553912534795, 0.0010837249972594132, 0.085097969597712486, 0.00036484062728907622, 0.045759607944559945, 4.9805327997554679e-06, 7.0023459608327855e-08, 0.74016529190447367, -0.0059375000000000001, 2.378004960328874, 0.0, 806.74346037017449, 0.025234252360710738, 0.10072816401947245, 0.023616739843261941, 0.0013088297023330993, 0.08310974267311351, 0.00041390060494015573, 0.049979848583142389, 4.7753003063293322e-06, 6.4985671963716032e-08, 0.74083793428775813, -0.0062500000000000003, 2.439495913339448, 0.0, 828.42744187061078, 0.024598001860366907, 0.095811256122831451, 0.025289992012601483, 0.0015569510453854471, 0.080939926514959223, 0.00047307757568805026, 0.054463044654517727, 4.5803809908579733e-06, 6.4701199528805844e-08, 0.74146110699182621, -0.0065625000000000006, 2.5003428659880673, 0.0, 849.86398862682017, 0.023999215694083018, 0.090839087890616205, 0.026971276738338344, 0.0018258632716881009, 0.078598264556992106, 0.00054235908328427299, 0.059182438460423654, 4.3929571861720921e-06, 6.7350164738790108e-08, 0.74203624969130633, -0.006875, 2.5603630424094126, 0.0, 870.98467871355297, 0.023436445407574846, 0.085847888923370891, 0.028645261476772068, 0.002112673941703521, 0.076101548194669674, 0.00062140356279439906, 0.064100881005995244, 4.2108176774896613e-06, 7.187387103859198e-08, 0.74256606020314564, -0.0071874999999999994, 2.6193575627203445, 0.0, 891.71751833448548, 0.022908423265223105, 0.080877125027800131, 0.030295799007118419, 0.0024139254163685142, 0.073473143601468491, 0.00070952312478735394, 0.069172156900823817, 4.0323866842796294e-06, 7.7625205995048114e-08, 0.74305421690974305, -0.0074999999999999997, 2.6771201658969677, 0.0, 911.98996511755354, 0.022413973709513715, 0.075968036566964187, 0.031906524953437647, 0.0027257288476810271, 0.070742011493420506, 0.00080569856153233938, 0.074343011605033121, 3.8567214011283703e-06, 8.4170246620994315e-08, 0.74350504708028342, -0.0078125, 2.7334467018618884, 0.0, 931.73205651836508, 0.021951941071854785, 0.071161984552058827, 0.033461505926448087, 0.0030439251681878359, 0.06794129760585603, 0.00090862779891022613, 0.079555706779772986, 3.6834713565502176e-06, 9.1184779907670446e-08, 0.7439231775126296, -0.0081250000000000003, 2.7881444777261257, 0.0, 950.87937971944189, 0.021521135647639085, 0.066498741756426782, 0.034945880808300009, 0.0033642630323881869, 0.065106627342498433, 0.0010168035327709161, 0.084750860991642585, 3.5128001522179621e-06, 9.8406292575303112e-08, 0.74431321132952832, -0.0084375000000000006, 2.8410407188636375, 0.0, 969.37563807427898, 0.021120298698889799, 0.062014879376607615, 0.036346439270569082, 0.0036825802728316067, 0.062274275229579359, 0.0011286107299843461, 0.089870304162642647, 3.3452770610146999e-06, 1.0561581917860409e-07, 0.74467946006490504, -0.0087500000000000008, 2.8919893873638389, 0.0, 987.17462092142091, 0.020748085568111935, 0.057742384700573988, 0.037652088633618949, 0.0039949740964830222, 0.059479388353769487, 0.0012424313331435737, 0.094859684423143714, 3.1817507357354976e-06, 1.1263392075559386e-07, 0.7450257540746108, -0.0090625000000000011, 2.9408759463441378, 0.0, 1004.2414582393277, 0.020403064625014532, 0.053707615955554865, 0.038854176217860997, 0.0042979466413363377, 0.056754424433477946, 0.0013567428626886943, 0.099670616500520781, 3.0232193273288898e-06, 1.1932162392142544e-07, 0.74535533484760919, -0.0093750000000000014, 2.987620456920316, 0.0, 1020.5533355377346, 0.020083724740161377, 0.049930654975044272, 0.039946651406153291, 0.0045885159776328337, 0.054127923939790518, 0.0014701997779066308, 0.10426223316271874, 2.8707092015866132e-06, 1.2558134192047024e-07, 0.74567082447021027, -0.0096875000000000017, 3.0321787389899737, 0.0, 1036.0996285953004, 0.019788490022411107, 0.046425070754507393, 0.040926071297912051, 0.0048642866219185147, 0.051623683877468338, 0.001581689634819825, 0.1086020862718505, 2.7251737961437161e-06, 1.3135555561535729e-07, 0.74597425501217152, -0.01, 3.0745388479387321, 0.0, 1050.8804846185856, 0.019515758442973322, 0.043198059544990369, 0.041791469718466367, 0.0051234767625157789, 0.049260347908125723, 0.0016903586026477515, 0.11266642397975235, 2.5874243987577779e-06, 1.3662290414947041e-07, 0.74626713943619871, -0.010312499999999999, 3.1147177411053724, 0.0, 1064.905533625709, 0.019263929556022723, 0.040250900139840631, 0.042544118280886556, 0.0053649084210620418, 0.047051376418203256, 0.001795611524696594, 0.11643992573865028, 2.4580847338063722e-06, 1.4139207518247568e-07, 0.74655055999985165, -0.010624999999999999, 3.1527567160228966, 0.0, 1078.1923057889603, 0.019031431524079011, 0.037579639391626223, 0.043187211059650517, 0.0055879661338629925, 0.045005332300138298, 0.0018970920171817683, 0.11991500961940363, 2.3375714701248267e-06, 1.4569463855078838e-07, 0.74682526621202794, -0.010937499999999999, 3.1887166043943371, 0.0, 1090.7644931970267, 0.018816745405592243, 0.035175926699697421, 0.043725512667043519, 0.0057925314627103857, 0.043126404994112084, 0.0019946519704962177, 0.12309084865942592, 2.2260966811823339e-06, 1.4957802327639976e-07, 0.74709174787180987, -0.01125, 3.2226722014030571, 0.0, 1102.6501606680888, 0.018618426489540239, 0.033027909632194791, 0.044164989288368726, 0.0059788997275211373, 0.041415088455162515, 0.0020883246340645395, 0.125972203878355, 2.1236842507032804e-06, 1.5309925774131116e-07, 0.74735030760082488, -0.011875, 3.2848632348165654, 0.0, 1124.4637899127545, 0.018265837735960889, 0.029470855215527347, 0.04476605566260685, 0.0062975155527222959, 0.038500875948240094, 0.0022638534126192037, 0.13085867958803768, 1.9460368792184203e-06, 1.5920256086033387e-07, 0.74784005938080644, -0.012500000000000001, 3.3407245966586148, 0.0, 1144.1098461585934, 0.017960335555410538, 0.02671813923749904, 0.045065406656640175, 0.0065555816073399314, 0.036139867826033359, 0.0024264947747157221, 0.13479416262823399, 1.7987095724585051e-06, 1.644282223393879e-07, 0.74829838413174288, -0.013125000000000001, 3.3910676512246041, 0.0, 1161.8697779219488, 0.017693643059360515, 0.02463334871343055, 0.045121727493516874, 0.0067613790776857655, 0.034259200976112944, 0.0025779241267316088, 0.13791647333581042, 1.6777716267808698e-06, 1.6900932434146062e-07, 0.74872809949576069, -0.01375, 3.4366457312343068, 0.0, 1178.0027349326997, 0.017458938270410951, 0.023085508430703734, 0.04498973985382157, 0.0069239433752789599, 0.03278048906443215, 0.0027197016965631962, 0.14036689392018656, 1.5789831363096821e-06, 1.7309946585492833e-07, 0.74913197157641165, -0.014999999999999999, 3.5155841277306279, 0.0, 1206.0888500509634, 0.017066854329097637, 0.021253764040628634, 0.044310376688133979, 0.0071445904101290029, 0.030810975224969915, 0.0029769734053270709, 0.14363796334148091, 1.4351055167826584e-06, 1.8006188276726233e-07, 0.74986374172193082, -0.016250000000000001, 3.5838335717992038, 0.0, 1230.4912404295551, 0.016741794326891615, 0.020361641489392179, 0.043354415143487694, 0.0072785242324023931, 0.029566893288608547, 0.0032095982801985793, 0.14570570301824071, 1.3330479849832248e-06, 1.8539053344269761e-07, 0.75052170610915159, -0.017500000000000002, 3.6441185668022964, 0.0, 1252.140213768015, 0.016464801184570908, 0.019988844865459921, 0.042286345837756284, 0.0073567176937357707, 0.028756111189934316, 0.0034217939982515875, 0.14706535949888694, 1.2572166497146662e-06, 1.890793949548875e-07, 0.75112338061993045, -0.018750000000000003, 3.6982579258906418, 0.0, 1271.6564652126503, 0.016223745970001664, 0.019883538056302968, 0.041199578002462309, 0.0073995037628455333, 0.028195763226273551, 0.0036165696132068725, 0.14802281348484175, 1.1979317524044095e-06, 1.9120146483602584e-07, 0.75168084472084984, -0.02, 3.7474390722414799, 0.0, 1289.4455369470002, 0.016010807197228655, 0.019903358567093122, 0.040142584234166834, 0.0074193603636702622, 0.027777721107395226, 0.0037961526760071124, 0.14875716815526421, 1.149434091071284e-06, 1.9192003407793627e-07, 0.75220231354227807, -0.022499999999999999, 3.8332937485106022, 0.0, 1320.6355377312573, 0.015652183094040036, 0.020081508596491059, 0.038196618817996575, 0.0074153115040299297, 0.027176223711072971, 0.0041135917879962939, 0.14986648217300699, 1.0737352506525522e-06, 1.9001514040431196e-07, 0.75314899965901516, -0.025000000000000001, 3.9085222341989092, 0.0, 1348.0750049582723, 0.015350899927824811, 0.02025927471007238, 0.036466795927893966, 0.0073807593639791365, 0.026689750104123406, 0.0043945933325694169, 0.15080427555365153, 1.013281997710168e-06, 1.8494638439106289e-07, 0.75400335277932817, -0.0275, 3.9754468321850829, 0.0, 1372.5710754988579, 0.015092459326530959, 0.020398739275765222, 0.034927647754803684, 0.0073282314731260663, 0.026266815305145793, 0.0046456895888585077, 0.15164930196474743, 9.630800965276606e-07, 1.7795407320317476e-07, 0.75478243360338371, -0.029999999999999999, 4.0356615761909183, 0.0, 1394.6799058969091, 0.014867257069083728, 0.020498368736240769, 0.033548819125824594, 0.0072646078770960644, 0.025887493202815609, 0.0048715862415517931, 0.15242973267477847, 9.2036968452181226e-07, 1.6995149272563237e-07, 0.75549830182051547, -0.032500000000000001, 4.0903254354197687, 0.0, 1414.8072826762545, 0.014668557963669561, 0.020564347753972582, 0.032304238594843035, 0.0071939927268390852, 0.025542214171662688, 0.0050758920285157837, 0.15315815537471042, 8.8340899429858557e-07, 1.6156175243402665e-07, 0.75616011437870967, -0.035000000000000003, 4.1403057984829932, 0.0, 1433.2578987585189, 0.014491475562524177, 0.020603148236692178, 0.031173100453275406, 0.0071190284431513718, 0.025225183814190047, 0.0052614495598027906, 0.15384197768701657, 8.5100421915395029e-07, 1.5318903127994758e-07, 0.75677510761262123, -0.037500000000000006, 4.1862499066701853, 0.0, 1450.2600063710186, 0.014332424383915158, 0.02061999466173137, 0.030139046472613108, 0.0070414810617781326, 0.024932384836889664, 0.0054304692910521158, 0.15448647711142602, 8.2230462484950469e-07, 1.45085177094258e-07, 0.75734917917470745, -0.040000000000000001, 4.228605930744969, 0.0, 1465.9728230317462, 0.014188856910448968, 0.020618773098133172, 0.029189208380463516, 0.0069625232499714758, 0.024661062364907317, 0.0055845095012003847, 0.15509570664394637, 7.9670807005731288e-07, 1.3740536007016698e-07, 0.75788728264794758, -0.044999999999999998, 4.3032300225397222, 0.0, 1493.7639367473948, 0.013942792414254652, 0.020572532708410956, 0.027517291091717251, 0.0068052878230540122, 0.024180530608211653, 0.0058503850775130104, 0.15620932925225678, 7.5349532143987759e-07, 1.2372323346600952e-07, 0.7588637662202814, -0.050000000000000003, 4.3691804527517677, 0.0, 1518.4110367726441, 0.013732325825624777, 0.020489837812447717, 0.026057632581965161, 0.0066499457474235562, 0.023752648827710766, 0.0060785127443500351, 0.15722855647472164, 7.1714195294510741e-07, 1.1183570632252315e-07, 0.75974203683372188, -0.055, 4.4281424125839726, 0.0, 1540.5147976965964, 0.013549469843659415, 0.020381910817287338, 0.024768272960275239, 0.0064985928050687218, 0.023367371857212632, 0.0062758155429456005, 0.15816844098426802, 6.8597336095020273e-07, 1.0161088264278522e-07, 0.76053880744869884, -0.059999999999999998, 4.4813550345861097, 0.0, 1560.5181898075643, 0.013388575214071581, 0.020256510132406327, 0.023618456942611592, 0.0063523536962091752, 0.023017292878045811, 0.0064475927681882607, 0.15904037470127458, 6.5884091324183597e-07, 9.2834901528719192e-08, 0.76126666720544944, -0.065000000000000002, 4.5297341158307463, 0.0, 1578.7495812614168, 0.013245576365742471, 0.020119088524989191, 0.022585253597623374, 0.0062117989529679027, 0.022696912664363855, 0.0065979027394191588, 0.1598530138917249, 6.3493745787684552e-07, 8.5290676968698505e-08, 0.76193530940077669, -0.070000000000000007, 4.5738987541990133, 0.0, 1595.4325812573222, 0.013117676029426706, 0.019973357669405258, 0.02165154342120898, 0.0060771847851857387, 0.022402443309537529, 0.0067296206478750595, 0.16061270767800298, 6.1370912526861798e-07, 7.8792634245511962e-08, 0.76255244998702487, -0.080000000000000002, 4.6501111023913984, 0.0, 1624.343963681227, 0.012902679673995046, 0.019667396693614489, 0.020049659434779724, 0.0058290393172911086, 0.021890398757353005, 0.006942229781826589, 0.16197361637259117, 5.7831658898824834e-07, 6.847054565086804e-08, 0.76364701285540915, -0.089999999999999997, 4.7165011889886479, 0.0, 1649.6178065898473, 0.012721054995674509, 0.019352187115432636, 0.018681967632912154, 0.0056002002097848176, 0.02143973622790226, 0.0071114306185628834, 0.16320117189244562, 5.4869482188497546e-07, 6.0422651785354393e-08, 0.76461269718548597, -0.10000000000000001, 4.7750649331109898, 0.0, 1671.9808507092371, 0.012565033677638168, 0.019035430193437466, 0.017498197052693624, 0.0053892028983959801, 0.021038273031807445, 0.0072467862375731676, 0.1643178614160683, 5.2344231866509749e-07, 5.403029647447699e-08, 0.76547367169740888, -0.1125, 4.8388787736152548, 0.0, 1696.4333773010708, 0.012399325172423961, 0.01864498940007454, 0.016229637249714778, 0.0051494244191554357, 0.020596561715384553, 0.0073774472775802969, 0.16557514489119493, 4.9681733818704113e-07, 4.777371643174079e-08, 0.7664262504558409, -0.125, 4.8951526138861015, 0.0, 1718.0599148755446, 0.012256781102471677, 0.018263023466467399, 0.015134461395487284, 0.0049307927351993778, 0.020203054388470584, 0.0074770417297948776, 0.16671723409021685, 4.7409913314711165e-07, 4.2833782304199464e-08, 0.76727387526144819, -0.13750000000000001, 4.9453154324951365, 0.0, 1737.3860040274024, 0.012132451370210687, 0.01789250736206208, 0.014178273012406947, 0.0047308296290523308, 0.019848900511455707, 0.007552461024970143, 0.16776210465931607, 4.5444993434806026e-07, 3.8853506408351917e-08, 0.76803443049729603, -0.14999999999999999, 4.9903595117933044, 0.0, 1754.7768734763565, 0.012022938558744235, 0.017535621128158554, 0.013336880112161083, 0.0045476297104009439, 0.019527870206546949, 0.0076086993666950225, 0.16872225732296145, 4.3729755872808772e-07, 3.5595006150353315e-08, 0.76872056926051113, -0.17499999999999999, 5.0656110410440194, 0.0, 1783.9511346732938, 0.011844329018281384, 0.01687526725440942, 0.011955496140960965, 0.0042317479263835481, 0.01898569629125486, 0.0076743965574337892, 0.17038543882352597, 4.0969230545671017e-07, 3.0745892447660904e-08, 0.7698915165678335, -0.20000000000000001, 5.1295822769513189, 0.0, 1808.8350979243053, 0.011696614316297128, 0.016258625350036932, 0.010819007772832257, 0.003957090381899492, 0.018518427763135593, 0.0077015722496114195, 0.17184960931181995, 3.8737891654092446e-07, 2.7163443181546665e-08, 0.77089525262830472, -0.22500000000000001, 5.1848640415681082, 0.0, 1830.3987851547465, 0.011571900309066617, 0.015683836498357844, 0.0098668029363284376, 0.0037160787628086481, 0.018109601492261235, 0.0077019270142141506, 0.17315346204169069, 3.690546766540825e-07, 2.4425060646866976e-08, 0.77176789777460164, -0.25, 5.2332261012422947, 0.0, 1849.3046226491363, 0.011464957764068891, 0.015149373071847659, 0.0090585905966343409, 0.0035032133978758133, 0.017747751977261052, 0.0076834556259819005, 0.17432374319751892, 3.5385005144398162e-07, 2.2276913428796831e-08, 0.77253349600591548, -0.30000000000000004, 5.3106150036434077, 0.0, 1879.6778954344486, 0.011297880627932411, 0.014218784782227465, 0.0078050783725005339, 0.003157143934701252, 0.017161084536541617, 0.007611697046451758, 0.17626691773646996, 3.3134612881042677e-07, 1.9264651739178729e-08, 0.77377894298032679, -0.35000000000000003, 5.3741530570169349, 0.0, 1904.6951711807433, 0.011164303664579725, 0.013391920341950147, 0.0068235772196098762, 0.0028712584846094279, 0.016671902737480405, 0.0075121500946193171, 0.17792162069548909, 3.1493306607332333e-07, 1.715360949342166e-08, 0.77480723833956622, -0.40000000000000002, 5.4274569296711235, 0.0, 1925.7295481859999, 0.011054654660728599, 0.012655479369528317, 0.0060371748494339088, 0.0026316189852550326, 0.016255980843718529, 0.0073981959661249264, 0.1793512069582886, 3.0292941972706469e-07, 1.5615605860465823e-08, 0.77567002448262501, -0.44500000000000001, 5.4690631812585817, 0.0, 1942.1174518511593, 0.010970553622942239, 0.012071306449499778, 0.0054607955632455978, 0.0024489119241479698, 0.015926586776933337, 0.0072931775698410811, 0.18047952786118404, 2.9495893511989825e-07, 1.4565592828623785e-08, 0.77631938433062031, -0.48999999999999999, 5.5043211455177818, 0.0, 1955.7234181664164, 0.010900280256338784, 0.011654135420524554, 0.0050546029314865234, 0.00231424734188554, 0.015640005143639724, 0.0072157852486976256, 0.18136886654287615, 2.8959656881713082e-07, 1.3816683769936126e-08, 0.77675205395763736, -0.5, 5.5043211618366188, 0.0, 1955.7234181664164, 0.010900280251153027, 0.011654135919474595, 0.0050546029289347911, 0.0023142473407172306, 0.015640005135744126, 0.0072157852450548555, 0.18136886645131506, 2.8959656867093278e-07, 1.3816683762961002e-08, 0.77675205356550703, +0.0, 1.1276041016465015, 0.0, 373.0, 0.053209554652870639, 0.16784715186411828, 0.0029541195024972077, 2.474828698511758e-05, 0.10187394441224402, 0.00045483335892858133, 0.0033279690598952134, 1.7264842102355027e-05, 9.5111903869364044e-06, 0.72349045748284235, +1.953125e-05, 1.1324840340109816, 0.0, 374.64343664779096, 0.052980585685873799, 0.16770776180539407, 0.0029700439428922642, 2.5253957195908748e-05, 0.10183212297914673, 0.00046431716050988734, 0.0034206173287698659, 1.7831649707113463e-05, 9.825865009704007e-06, 0.72355222531137442, +3.9062500000000001e-05, 1.1373496678281103, 0.0, 376.28243814838783, 0.052754235190986973, 0.16756773774820979, 0.0029866503337316217, 2.574134193611222e-05, 0.10179063854477284, 0.0004731471046520547, 0.0035139043178258915, 1.8167874113399709e-05, 1.0127980435987566e-05, 0.7236138847543222, +7.8125000000000002e-05, 1.1470363188368433, 0.0, 379.54645520405865, 0.052309301317832881, 0.16728641502236077, 0.0030218128781486133, 2.665761111099098e-05, 0.10170873855678832, 0.00048878292426007862, 0.0037018802588857872, 1.8370520547281151e-05, 1.0692315482587971e-05, 0.7237366499124156, +0.0001171875, 1.1566612582515852, 0.0, 382.79126711659416, 0.051874554922454928, 0.16700264571760146, 0.0030595910771570945, 2.7499390692268429e-05, 0.10162778559371345, 0.00050189485197462552, 0.0038919977484796245, 1.8280942513888128e-05, 1.1204084122281113e-05, 0.72385910059374525, +0.00015625, 1.1662248271302977, 0.0, 386.01698851876512, 0.051449661366541846, 0.16671647997693287, 0.0030998911592224278, 2.8269814449949902e-05, 0.10154760961632779, 0.00051268280875067795, 0.0040840653070820954, 1.8057962598140185e-05, 1.1662539264819798e-05, 0.72398128081537128, +0.00019531250000000001, 1.1757285117074101, 0.0, 389.22410209871862, 0.051034250899538419, 0.16642796729452997, 0.0031426161322904637, 2.897346831740424e-05, 0.10146807829527536, 0.00052137653791112248, 0.0042779177200279366, 1.7779062463011485e-05, 1.2067796891158779e-05, 0.72410322369229352, +0.00023437499999999999, 1.1851742972540951, 0.0, 392.41325194602172, 0.050627949255425325, 0.16613715457858461, 0.0031876717867484593, 2.9615578054631668e-05, 0.10138908414001548, 0.00052820445959104664, 0.0044734105235019637, 1.74816929998401e-05, 1.2420666384627534e-05, 0.72422495657411934, +0.00031250000000000001, 1.2039013409794697, 0.0, 398.74010640376133, 0.049841209701683695, 0.16555113210215608, 0.0032841014430430035, 3.0727456159723173e-05, 0.10123306698621051, 0.0005368828844380119, 0.0048673298745927907, 1.6887789331817487e-05, 1.2971501961933922e-05, 0.724466899962106, +0.00039062500000000002, 1.2224268950076558, 0.0, 405.00490270800401, 0.049086577112818615, 0.16495650559401834, 0.003388789423405366, 3.1661615699008054e-05, 0.10107830782901481, 0.00054053906260174067, 0.0052661913109733503, 1.6331213146568859e-05, 1.3340146260564542e-05, 0.72470833380488009, +0.00046874999999999998, 1.2407672754895518, 0.0, 411.2129623006964, 0.048361618954923642, 0.16435353168310091, 0.0035011998867600647, 3.2456511710410897e-05, 0.10092440134754732, 0.00054031638087549954, 0.0056693302161307394, 1.5815605329162958e-05, 1.3545270061921099e-05, 0.72494940309848388, +0.00054687500000000005, 1.2589372362128908, 0.0, 417.36910954280438, 0.047664167670588439, 0.16374242151161941, 0.0036208785737792131, 3.3146332260879242e-05, 0.10077104155206677, 0.00053711408516937187, 0.0060762163116228679, 1.5336644624111618e-05, 1.3606567238690441e-05, 0.72519023842161878, +0.00062500000000000001, 1.2769500187014824, 0.0, 423.47768515111085, 0.046992289210201182, 0.16312334595396644, 0.0037474399129310111, 3.3761066766166486e-05, 0.10061799594510015, 0.0005316388871900653, 0.0064864284786566384, 1.4888847910071835e-05, 1.3543457978820221e-05, 0.7254309574495007, +0.00078125000000000004, 1.312550658858548, 0.0, 435.56535867190939, 0.045718491612340956, 0.16187069374199239, 0.0040182065207781462, 3.4837039124366086e-05, 0.10031448820759306, 0.00051568078538744141, 0.0073099185287931129, 1.4074209846263621e-05, 1.3103894420919991e-05, 0.72590899707206424, +0.000859375, 1.3301651705470379, 0.0, 441.55530620787221, 0.045113399050459198, 0.16122875400729894, 0.0041635346847342268, 3.5369028359161597e-05, 0.1001616983243997, 0.00050628587944385637, 0.0077278891643943757, 1.3697946973126482e-05, 1.2778126346084703e-05, 0.72614999283805048, +0.00093749999999999997, 1.3476640925372159, 0.0, 447.51139832399548, 0.044527906389420016, 0.16057922049571521, 0.0043146916313802483, 3.5912804861326578e-05, 0.10000872429683796, 0.00049623214277417138, 0.0081482460357369859, 1.3341099092514012e-05, 1.2393020073454397e-05, 0.72639123847352827, +0.001015625, 1.365055208066654, 0.0, 453.43621441219341, 0.043960863755148002, 0.15992212206256939, 0.0044715021471923161, 3.648513181310971e-05, 0.099855491130249399, 0.00048574006952709873, 0.0085709000099641244, 1.3001389523061343e-05, 1.1960814051049895e-05, 0.72663279724511043, +0.0010937500000000001, 1.3823455526541795, 0.0, 459.33209004945564, 0.043411224071007608, 0.15925746756964226, 0.0046338162615959166, 3.7101749770612969e-05, 0.099701932068216162, 0.00047498482319883155, 0.0089958051543293036, 1.2677223855923523e-05, 1.1492280908455115e-05, 0.72687472286848243, +0.0011718750000000002, 1.3995415083325471, 0.0, 465.20114711294468, 0.042878030623140322, 0.15858524796870771, 0.0048015056238945465, 3.7777814065521449e-05, 0.099547984581739732, 0.00046410560908386947, 0.0094229543374463026, 1.2367350420016939e-05, 1.0996848809590583e-05, 0.72711705986583275, +0.00125, 1.4166488842904359, 0.0, 471.04531940612594, 0.042360406488721053, 0.15790543819152109, 0.004974460483561669, 3.8528277989266163e-05, 0.099393587183281687, 0.0004532128860019035, 0.0098523756648211339, 1.2070731467841329e-05, 1.0482728824313461e-05, 0.72735984385253116, +0.0013281249999999999, 1.4336729860031348, 0.0, 476.86637482444178, 0.041857545479460613, 0.15721799878864853, 0.0051525871404471298, 3.936822953328228e-05, 0.09923867688189851, 0.00044239401330808362, 0.010284129568482269, 1.1786481121696452e-05, 9.957039389642301e-06, 0.7276031018571707, +0.0014062499999999999, 1.450618675894775, 0.0, 482.66593458591541, 0.041368704343553539, 0.15652287745340221, 0.0053358057781489011, 4.031318793552129e-05, 0.099083187147858548, 0.00043171772080257222, 0.010718306416641734, 1.1513828408270771e-05, 9.4259230205449131e-06, 0.72784685254378167, +0.001484375, 1.467490425277663, 0.0, 488.44548990333766, 0.040893196033253906, 0.15582001033820805, 0.0055240486086000689, 4.1379365341360861e-05, 0.098927046251824385, 0.00042123767626756596, 0.011155024536724487, 1.1252092212532698e-05, 8.8946530126891138e-06, 0.72809110647780884, +0.0015625000000000001, 1.4842923601523987, 0.0, 494.20641641563964, 0.040430383867867958, 0.15510932330315536, 0.005717258278646783, 4.2583898085565254e-05, 0.098770175905632723, 0.00041099535361109081, 0.011594428575960738, 1.1000663223994582e-05, 8.3677294720373877e-06, 0.72833586629221192, +0.0016406250000000002, 1.5010283001087652, 0.0, 499.94998666009292, 0.03997967646215006, 0.15439073298677411, 0.0059153864913540875, 4.3945051257025127e-05, 0.098612490116008505, 0.00040102235355237603, 0.01203668813525878, 1.0758990543397888e-05, 7.8489649379931918e-06, 0.72858112691031363, +0.00171875, 1.5177017928351451, 0.0, 505.67738083589666, 0.039540523299163452, 0.15366414784140203, 0.0061183928123129108, 4.5482399508906442e-05, 0.098453894217698651, 0.00039134229216697484, 0.012481996632718482, 1.0526571592547246e-05, 7.341560379396882e-06, 0.72882687567222015, +0.0017968749999999999, 1.5343161431651464, 0.0, 511.38969608137012, 0.039112410858494338, 0.15292946901491139, 0.0063262436276433536, 4.7216986398708309e-05, 0.098294284026216733, 0.00038197234467104323, 0.012930570355226668, 1.0302944423288445e-05, 6.8481725791151521e-06, 0.72907309252792973, +0.0018749999999999999, 1.5508744390646221, 0.0, 517.08795446036197, 0.038694859212808311, 0.15218659121978481, 0.0065389112357349521, 4.9171464063251789e-05, 0.098133545100069372, 0.00037292451152294543, 0.013382647672018961, 1.00876817884242e-05, 6.3709739970428786e-06, 0.72931975014102024, +0.001953125, 1.5673795732903226, 0.0, 522.77310982951303, 0.038287419031648361, 0.15143540347053633, 0.0067563730480190197, 5.1370214578965637e-05, 0.097971552070482165, 0.00036420665784359698, 0.013838488381112408, 9.8803864939457702e-06, 5.9117061710278421e-06, 0.72956681406476254, +0.0020312500000000001, 1.5838342629717839, 0.0, 528.44605373708191, 0.037889668929223956, 0.15067578982397942, 0.0069786108881691724, 5.3839454095735702e-05, 0.097808168041716881, 0.00035582336552195137, 0.014298373172515812, 9.6806876090850156e-06, 5.471727634909708e-06, 0.72981424283875707, +0.0021093750000000001, 1.6002410657737289, 0.0, 534.10762048705431, 0.037501213113979602, 0.14990763000871118, 0.0072056103706652436, 5.660732057076787e-05, 0.097643244031637766, 0.00034777662784835235, 0.014762603186877074, 9.4882368774196259e-06, 5.0520572228244793e-06, 0.73006198815958934, +0.0021875000000000002, 1.6166023947210921, 0.0, 539.75859149401947, 0.037121679292842817, 0.14913080006685628, 0.0074373603526043542, 5.9703945851154026e-05, 0.097476618462934636, 0.00034006641052914489, 0.015231499660233514, 9.3027032871632881e-06, 4.6534135158021523e-06, 0.73030999498418792, +0.0022656250000000003, 1.6329205305062553, 0.0, 545.39969907297802, 0.036750716798025364, 0.14834517290572119, 0.0076738524426560543, 6.3161512833837571e-05, 0.097308116684901136, 0.00033269110219629773, 0.015705403639997666, 9.1237571366525196e-06, 4.2762510749636874e-06, 0.73055820170348229, +0.0023437500000000003, 1.6491976334983289, 0.0, 551.03162994286481, 0.036387994889832041, 0.14755061886184004, 0.0079150805578634843, 6.701429898571667e-05, 0.09713755054744766, 0.00032564789978771545, 0.016184675768923257, 8.9510042159764021e-06, 3.9207940086542873e-06, 0.73080654026692737, +0.0025000000000000001, 1.6816418795921093, 0.0, 562.27021600563921, 0.035685933598431266, 0.14594262632404936, 0.0084091623399260539, 7.5964427879111164e-05, 0.096791442656854174, 0.00031261111943067538, 0.017155388764405206, 8.6234521525565851e-06, 3.2781843856880324e-06, 0.73130090273091719, +0.0026562499999999998, 1.7139484845085358, 0.0, 573.48049331615641, 0.035013244950940874, 0.14429818321049648, 0.008921882773629812, 8.6877381704720893e-05, 0.096435382618515753, 0.0003008560744928552, 0.018150612367205245, 8.3177295232093574e-06, 2.7168677349398434e-06, 0.73179517097669711, +0.0028124999999999999, 1.7461318231461727, 0.0, 584.66684903883424, 0.034367859066500986, 0.14261626131563013, 0.0094532246823865948, 0.00010007630563648726, 0.096067566782955555, 0.00029038181892171113, 0.019173539943195692, 8.0322705988287265e-06, 2.2327311146375653e-06, 0.73228868414956039, +0.00296875, 1.7782050531504696, 0.0, 595.83316173095318, 0.033747911607638105, 0.14089584228921012, 0.010003175689509617, 0.00011590977419933273, 0.095685990225883727, 0.00028118706682512927, 0.020227603251155184, 7.7654425375468748e-06, 1.8202410111286556e-06, 0.73278070601966816, +0.0031250000000000002, 1.8101801713360972, 0.0, 606.98281205712328, 0.033151719229066554, 0.13913593568386967, 0.010571718877313698, 0.00013474940387349146, 0.095288446228891766, 0.00027327431733564019, 0.021316453728731477, 7.5156182470975243e-06, 1.4729798068698022e-06, 0.7332704331619303, +0.0034375, 1.8738971678248242, 0.0, 629.24231653317872, 0.032024329051965762, 0.13552854467843067, 0.011753309013985485, 0.00018212526715747103, 0.094446459076516151, 0.00026140975345521358, 0.023588154989599559, 7.0610070448331716e-06, 9.5740693322487389e-07, 0.73423197880687752, +0.0037499999999999999, 1.9373480816840127, 0.0, 651.46985271860933, 0.030975319577388728, 0.1317596771436301, 0.013006613909012428, 0.00024512295157611821, 0.093520995699404294, 0.00025491601837099656, 0.026027950070891554, 6.6593867686616102e-06, 6.0933639361654016e-07, 0.73517745548395219, +0.0040625000000000001, 2.0005962602496536, 0.0, 673.67941971100265, 0.029995869317768386, 0.12782491047804445, 0.014330375614740966, 0.00032649048099263008, 0.092493181975760397, 0.00025430694199576165, 0.028663673114472727, 6.3030025866951001e-06, 3.8356278583542009e-07, 0.73610037482862034, +0.0043750000000000004, 2.06368600967149, 0.0, 695.87728076799965, 0.029078672717538015, 0.12372228106397304, 0.015722444506425161, 0.00042870944859962386, 0.091343655303207871, 0.00026019040964641161, 0.031522245799492518, 5.9849507304275476e-06, 2.4270056168487314e-07, 0.73699424581736328, +0.0046875000000000007, 2.1266391196347065, 0.0, 718.06097842427153, 0.028217697053569517, 0.1194530826055364, 0.017179477209248381, 0.00055383281451881912, 0.090053617877414172, 0.00027326372102184974, 0.034627928364575795, 5.6991750496361556e-06, 1.5817910292441079e-07, 0.73785294005353186, +0.0050000000000000001, 2.1894512350021147, 0.0, 740.21839661209538, 0.027407987343137152, 0.11502264952060441, 0.018696651810122339, 0.00070334760791002386, 0.088606057687845519, 0.00029427381180622625, 0.038000417495075801, 5.4402782335152624e-06, 1.0957550607536433e-07, 0.73867105221289608, +0.0053124999999999995, 2.2520885334307743, 0.0, 762.32701020881302, 0.026645503068293854, 0.11044106228503524, 0.020267423412228289, 0.00087807096571563593, 0.086987059464815344, 0.00032395902531736438, 0.041652913202599069, 5.2034019014417108e-06, 8.3124516756815722e-08, 0.73944422511787078, +0.0056249999999999998, 2.3144852579029802, 0.0, 784.35349053625191, 0.025926974561860716, 0.10572369543099658, 0.02188335085267613, 0.0010780819062705704, 0.085187104920721096, 0.00036298053227169688, 0.045590322737327618, 4.9841703525603831e-06, 7.0021139094089588e-08, 0.74016940942824483, +0.0059375000000000001, 2.3765427111355679, 0.0, 806.25382687711442, 0.025249770899462069, 0.10089152647650551, 0.023534027382375457, 0.0013026878315417229, 0.083202243894240913, 0.00041184900566915589, 0.049807794099780936, 4.7786854366238556e-06, 6.4883806169955028e-08, 0.74084502774064331, +0.0062500000000000003, 2.4381301042913881, 0.0, 827.97408523644333, 0.024611775027368363, 0.095971126896469389, 0.025207142526475643, 0.0015504241447986996, 0.081035008677075512, 0.00047085269032268618, 0.054289769288656663, 4.5835573102916224e-06, 6.4539683631271523e-08, 0.74147102767920758, +0.0065625000000000006, 2.4990876436787017, 0.0, 849.4518601313008, 0.024011264766210679, 0.090994282455272246, 0.026888693113102276, 0.001819086623172206, 0.078694951304804764, 0.00053999459809244744, 0.059009717582407653, 4.3959534468517999e-06, 6.7155412465596403e-08, 0.74204881121428912, +0.006875, 2.5592317933434785, 0.0, 870.61839274824376, 0.023446800990831275, 0.085997216964346659, 0.02856334475014485, 0.0021057974625109496, 0.076198708182083727, 0.00061894768041491691, 0.063930647277109204, 4.2136470478606548e-06, 7.1663892786381012e-08, 0.74258105237244909, +0.0071874999999999994, 2.61836257587689, 0.0, 891.40124150872884, 0.022917125569253374, 0.081019442368513481, 0.030214928574888944, 0.0024071058393289805, 0.073569542812524397, 0.00070703642264602275, 0.069006411170864881, 4.0350474411465866e-06, 7.7413120194987558e-08, 0.74307142035067175, +0.0074999999999999997, 2.6762723032780729, 0.0, 911.72731346434728, 0.022421072489497124, 0.07610229937609872, 0.031827038534791102, 0.0027191215142903947, 0.070836376649373659, 0.00080325075090853732, 0.074183723085122291, 3.8591990224625167e-06, 8.3966299950073643e-08, 0.74352424692409291, +0.0078125, 2.7327551111570569, 0.0, 931.52601106667794, 0.021957495138339705, 0.071287300380501212, 0.0333836813978068, 0.003037676044856886, 0.068032384222849643, 0.00090629367960117424, 0.079404712766964966, 3.6857417692642424e-06, 9.0997294608577223e-08, 0.7439441747683555, +0.0081250000000000003, 2.7876163760660391, 0.0, 950.73222864078207, 0.021525211925535193, 0.066614412162640177, 0.034869921811469674, 0.0033585015779368029, 0.065193285368588205, 0.0010146585981431668, 0.084609776410478371, 3.5148337019452104e-06, 9.8241982530105831e-08, 0.74433583099505929, +0.0084375000000000006, 2.840681268140945, 0.0, 969.28895044440378, 0.021122970887174908, 0.062120429946723461, 0.036272466004140982, 0.0036774137194921716, 0.062355505689194825, 0.001126726948086887, 0.089740449581952875, 3.3470426731223886e-06, 1.0547981996104244e-07, 0.74470355558791579, +0.0087500000000000008, 2.8918016698022448, 0.0, 987.1492534215414, 0.020749432504844609, 0.057837579917968389, 0.037580134538671199, 0.0039904835552950265, 0.059554385937282531, 0.0012408735917967377, 0.094742038356298519, 3.1832197461545244e-06, 1.1252975957215382e-07, 0.74505120835318184, +0.0090625000000000011, 2.9408610374707069, 0.0, 1004.2775925007649, 0.020403168491486857, 0.053792458331982401, 0.038784190516515077, 0.004294185232124559, 0.056822603145001364, 0.0013555664333101912, 0.099565794332307653, 3.0243685666772032e-06, 1.1925125097047066e-07, 0.745382058388941, +0.0093750000000000014, 2.9877775916572129, 0.0, 1020.6505439900345, 0.020082669183595157, 0.050005369728101476, 0.039878506773194794, 0.0045855089560458773, 0.054188925285203686, 0.0014694489661659284, 0.10417049163506971, 2.871523063564524e-06, 1.2554526568013261e-07, 0.74569875158788923, +0.0096875000000000017, 3.0325055472580553, 0.0, 1036.2569606098632, 0.01978635835735763, 0.046490078781639993, 0.040859575466903102, 0.0048620332599131092, 0.051677369200236196, 0.0015813975764699011, 0.10852334972898575, 2.725645236907257e-06, 1.3135307292491757e-07, 0.74600333898754212, +0.01, 3.0750316151597774, 0.0, 1051.0965579752299, 0.019512632162190739, 0.043253942290158748, 0.041726379586749837, 0.0051219535812732303, 0.049306778004092194, 0.0016905479869517334, 0.11260032687741971, 2.5875549959138684e-06, 1.3665238915174061e-07, 0.74629734746596943, +0.010312499999999999, 3.1153716833133465, 0.0, 1065.1786283013257, 0.019259887111599837, 0.040298360220267768, 0.042480155060148433, 0.0053640733164979724, 0.047090782335645794, 0.0017962959569586599, 0.11638586525673833, 2.4578839652265139e-06, 1.4145128245626476e-07, 0.74658186851849528, +0.010624999999999999, 3.1535662483770439, 0.0, 1078.5204538841003, 0.019026547404432884, 0.037619460545512538, 0.043124075179099504, 0.0055877629278109206, 0.045038081334744635, 0.0018982777153927106, 0.11987220246987619, 2.3370554566201164e-06, 1.4578098232259463e-07, 0.7468576569911245, +0.010937499999999999, 3.1896755895326252, 0.0, 1091.1455603357217, 0.018811089504320342, 0.035208936006294579, 0.043662897444814538, 0.0057928944622315055, 0.043152965480011289, 0.0019963395491174878, 0.12305838712221713, 2.225286640765503e-06, 1.4968880811005849e-07, 0.74712520495986456, +0.01125, 3.2237741639082227, 0.0, 1103.0819156836942, 0.01861206374630052, 0.033054944082480643, 0.044102592669132239, 0.0059797579558909216, 0.041435996186249671, 0.0020905108620826924, 0.12594910724048591, 2.1226048558490601e-06, 1.5323184683727579e-07, 0.74738481516697519, +0.011875, 3.286231540579132, 0.0, 1124.9901737131993, 0.01825823386731746, 0.029488496923693222, 0.044703229496882345, 0.006299137955260917, 0.03851229132092792, 0.002267013486089479, 0.13085114027417727, 1.9445008042705941e-06, 1.5937097246204386e-07, 0.74787658667119217, +0.012500000000000001, 3.3423353649905101, 0.0, 1144.7227004217282, 0.017951681593187555, 0.026729192496182087, 0.045001210007528637, 0.0065577040130969317, 0.036143897392585, 0.0024305958736831673, 0.13479859597365876, 1.7968178916964983e-06, 1.6462375977487133e-07, 0.74833684280161394, +0.013125000000000001, 3.3928989821715083, 0.0, 1162.5616435622831, 0.017684094536822542, 0.024640100899388791, 0.045055446138807589, 0.0067637748731723306, 0.034257711956753319, 0.0025829282234630158, 0.13792979597788915, 1.6756133229744438e-06, 1.6922412548618469e-07, 0.7487683970930773, +0.01375, 3.4386781745719048, 0.0, 1178.7669881891757, 0.017448620828458366, 0.023089688893026716, 0.044920889076618606, 0.0069264346232290304, 0.032775001105775872, 0.0027255678715408273, 0.14038665315997914, 1.5766297646802689e-06, 1.7332613384028027e-07, 0.74917401531393135, +0.014999999999999999, 3.5179685889493957, 0.0, 1206.9806637090121, 0.017055288268084442, 0.021256448084430505, 0.044235603591145124, 0.0071468853841591502, 0.030800970317396793, 0.0029844195746304581, 0.14366509406407205, 1.4325162910651239e-06, 1.802905679146915e-07, 0.74990896617730685, +0.016250000000000001, 3.5865247992359937, 0.0, 1231.4950021932286, 0.016729233542915327, 0.020364766207517374, 0.043273655203846899, 0.0072803503883551073, 0.029554502540846406, 0.0032184646927473177, 0.1457369210063853, 1.3303260604053657e-06, 1.8559315962732285e-07, 0.75056982404108141, +0.017500000000000002, 3.6470820262155392, 0.0, 1253.2439229203328, 0.016451424408270757, 0.019992892189120277, 0.042200035898044747, 0.0073579391181533603, 0.028742274048415211, 0.0034319282845350911, 0.14709932456067379, 1.2544111494264134e-06, 1.8923088509345623e-07, 0.75117416225902289, +0.018750000000000003, 3.7014660071278449, 0.0, 1272.8504548976716, 0.016209686569089405, 0.019888353184590628, 0.041108322441435266, 0.0074000573976860783, 0.028180816772693046, 0.0036278338752515631, 0.14805913114861005, 1.1950659998502663e-06, 1.9128199377239908e-07, 0.75173409883173969, +0.02, 3.7508685256964966, 0.0, 1290.7216147578113, 0.015996170186534427, 0.019908596401088326, 0.040046983576751398, 0.0074192190734622288, 0.027761752393811973, 0.0038084248058972803, 0.14879581086914179, 1.1465207777767149e-06, 1.9191597593082698e-07, 0.75225787444309322, +0.022499999999999999, 3.8371050021381521, 0.0, 1322.0540720334852, 0.015636638189393811, 0.02008657177077431, 0.038093984894039673, 0.0074137806545487945, 0.027158234582034969, 0.0041275521143207981, 0.1499099256969498, 1.0707500663679569e-06, 1.8982446441794713e-07, 0.75320868971280097, +0.025000000000000001, 3.912661116112333, 0.0, 1349.6166366934942, 0.015334663311327736, 0.020263416374541526, 0.036358554689946927, 0.0073778562682993579, 0.026669815330516804, 0.0044099430950580755, 0.15085251548253523, 1.010249376023862e-06, 1.8456800466189955e-07, 0.75406670394172148, +0.0275, 3.9798704009972483, 0.0, 1374.2203605620023, 0.015075686120274538, 0.020401566588866066, 0.03481483102810938, 0.0073239963248016961, 0.026245075126357979, 0.0046621834521942815, 0.15170215676865376, 9.6001776944823427e-07, 1.7740579405844778e-07, 0.75484905328745333, +0.029999999999999999, 4.0403350608399267, 0.0, 1396.4242646467071, 0.014850061860494737, 0.020499675295287352, 0.033432208869253945, 0.0072590930477118582, 0.025864106460391407, 0.0048890192404713057, 0.15248695320659378, 9.1729016703340497e-07, 1.6925990437847038e-07, 0.75556785733021892, +0.032500000000000001, 4.0952201581954837, 0.0, 1416.6362821047435, 0.014651027552270608, 0.020564021541649855, 0.032184452260682589, 0.0071872569342259617, 0.025517331685527177, 0.0050940910914744775, 0.15321948451160264, 8.8032092059837259e-07, 1.6075551632144591e-07, 0.75623232089840042, +0.035000000000000003, 4.1453976722824653, 0.0, 1435.162730429709, 0.014473677268518307, 0.020601128678218016, 0.031050639856583406, 0.0071111331890406967, 0.025198940364492786, 0.0052802672887433009, 0.15390717157616313, 8.479135215231305e-07, 1.5229515348385606e-07, 0.75684971883808372, +0.037500000000000006, 4.1915182696173119, 0.0, 1452.2330799809615, 0.014314411689960827, 0.020616252387804946, 0.030014327690044997, 0.0070324884660464193, 0.024904899463961357, 0.005449778812431875, 0.15455530962119038, 8.1921542309241581e-07, 1.4412731082493467e-07, 0.75742598021578622, +0.040000000000000001, 4.2340325085993937, 0.0, 1468.0074033886685, 0.014170673548279373, 0.020613299689259543, 0.029062581524946011, 0.0069524950488170836, 0.024632442218332697, 0.0056041996482002485, 0.15516796715688802, 7.9362329096434013e-07, 1.3640330378335494e-07, 0.75796608468696147, +0.044999999999999998, 4.308922149810801, 0.0, 1495.9026587754586, 0.013924375752947414, 0.020563650303074915, 0.027387757905717559, 0.0067933929942610698, 0.024149960254089164, 0.005870550035149389, 0.15628777303612737, 7.5042571130312952e-07, 1.2267776519557414e-07, 0.75894604236810392, +0.050000000000000003, 4.3750946957997545, 0.0, 1520.6376549863603, 0.013713764412196554, 0.02047762213847687, 0.025926021454648302, 0.0066363811982715487, 0.023720395433754239, 0.0060988866630249964, 0.1573125901705725, 7.1409146286933471e-07, 1.1078523629941096e-07, 0.7598272780645523, +0.055, 4.4342441540264517, 0.0, 1542.8162661020654, 0.013530827022237721, 0.020366470582909035, 0.024635217176806432, 0.0064835358185467949, 0.023333651706724915, 0.0062961935595983809, 0.15825755293947125, 6.8294421060507113e-07, 1.0057839515141468e-07, 0.7606265946933376, +0.059999999999999998, 4.4876161350455943, 0.0, 1562.8838276525203, 0.013369897476454669, 0.020237972651226128, 0.0234844493502619, 0.0063359625874054859, 0.022982284949040033, 0.0064678161007079848, 0.15913411702257702, 6.5583444145950037e-07, 9.1833327794971861e-08, 0.76135664967101224, +0.065000000000000002, 4.5361312351276046, 0.0, 1581.1704701167287, 0.013226898624580917, 0.020097590959217038, 0.022450683842089082, 0.0061942151077879846, 0.022660767841735575, 0.0066178477031185153, 0.15995098907307131, 6.3195454370374261e-07, 8.4326643293690225e-08, 0.76202718919179335, +0.070000000000000007, 4.5804118606100825, 0.0, 1597.9010282873041, 0.013099025341850996, 0.019949042927759543, 0.021516723941697919, 0.0060585356638399182, 0.022365293012090632, 0.0067491899728745093, 0.16071455474560958, 6.1075040201512347e-07, 7.7868840066599576e-08, 0.76264597111688592, +0.080000000000000002, 4.6567998358566838, 0.0, 1626.8858251310858, 0.012884149064968899, 0.019637939478574892, 0.019915090847430345, 0.0058086281278157664, 0.021851635801433521, 0.0069608410593445628, 0.16208208695045875, 5.75408085206538e-07, 6.7625759130622273e-08, 0.763743134701098, +0.089999999999999997, 4.7233213558713931, 0.0, 1652.2158068867707, 0.012702688633738283, 0.019318049809641143, 0.0185482714420287, 0.0055783560226871191, 0.021399667867529511, 0.0071289078164266375, 0.16331533572073695, 5.4583750682679619e-07, 5.9651525697687057e-08, 0.76471080583191742, +0.10000000000000001, 4.7819825557908961, 0.0, 1674.6215789337416, 0.012546859113537954, 0.018997042508862822, 0.017365799888070754, 0.0053661942316273114, 0.020997142693526094, 0.0072630244008488236, 0.16443693853688762, 5.2063721407628224e-07, 5.3325095241755621e-08, 0.76557328377786726, +0.1125, 4.8458791300117312, 0.0, 1699.1119841930322, 0.012381415167290299, 0.018601867726717885, 0.016099271288989948, 0.0051252771608411235, 0.020554399735994117, 0.007392067562004557, 0.16569938185959343, 4.9407893314986743e-07, 4.7139485253176171e-08, 0.76652719344744036, +0.125, 4.9022059103832456, 0.0, 1720.7643995039944, 0.012239148124131871, 0.018215686436613029, 0.015006404177513422, 0.0049057686948717786, 0.020160091293611144, 0.0074900126312389551, 0.16684581988590011, 4.7142899909014194e-07, 4.2259965297723916e-08, 0.76737570319128712, +0.13750000000000001, 4.9523988330066295, 0.0, 1740.1070644496413, 0.012115100473614372, 0.017841416247611576, 0.014052692592341445, 0.0047051381119641361, 0.019805320095987997, 0.0075637889279592365, 0.16789436118076348, 4.5184963990209843e-07, 3.8331206086398473e-08, 0.7681367926625261, +0.14999999999999999, 4.9974551158891831, 0.0, 1757.5071309574012, 0.012005870003235034, 0.017481193230393949, 0.013213868765743248, 0.0045214406821568352, 0.019483822091604645, 0.0076184172876931685, 0.16885760431585248, 4.3476849454912152e-07, 3.5116812069745099e-08, 0.76882318374124903, +0.17499999999999999, 5.0726839471872722, 0.0, 1786.6802834644861, 0.0118278165066984, 0.016815414250940706, 0.011837683873091226, 0.0042049938650972809, 0.018941149694064959, 0.0076811222526644461, 0.17052525813463035, 4.0730631808530474e-07, 3.033710294354735e-08, 0.76999394028609003, +0.20000000000000001, 5.1366012103908512, 0.0, 1811.5497742278328, 0.011680633649725606, 0.016194385518007743, 0.01070632669849206, 0.0039301087458027484, 0.018473687472163422, 0.0077055121455158358, 0.17199260514790446, 3.8513872778372254e-07, 2.680851803443058e-08, 0.77099696232486792, +0.22500000000000001, 5.1918081753759822, 0.0, 1833.0898730408276, 0.0115564249620534, 0.015616056315486959, 0.0097590865806747706, 0.0036891055703275641, 0.018064891232133055, 0.0077033037993823536, 0.1732986306847823, 3.6696188163234429e-07, 2.411298882446103e-08, 0.77186853474234263, +0.25, 5.24008156236009, 0.0, 1851.9658593497061, 0.01144996077266462, 0.015078755032961062, 0.0089556184765046103, 0.0034764152287605544, 0.017703238014170553, 0.007682494068578862, 0.17447029262145877, 3.5190493354039132e-07, 2.199967237579783e-08, 0.77263281265295969, +0.30000000000000004, 5.3172654066441947, 0.0, 1882.2663214781251, 0.011283752545760931, 0.014144408364302148, 0.0077107200155470904, 0.0031310344466558239, 0.017117379247485506, 0.0076068550565466129, 0.17641413281186522, 3.2968238203492151e-07, 1.9039018060407778e-08, 0.77387512133619751, +0.35000000000000003, 5.3805867704431956, 0.0, 1907.2043459409633, 0.011150956662292441, 0.013315246196576995, 0.0067369556288703874, 0.0028460506550261745, 0.016629263805748189, 0.0075040798011803298, 0.17806805193927386, 3.1354208149843079e-07, 1.6966436052681047e-08, 0.77490002146480641, +0.40000000000000002, 5.4336706243415733, 0.0, 1928.1568085393046, 0.011042015592632522, 0.012577578987280095, 0.0059574772558481127, 0.0026074145921982984, 0.016214572432837256, 0.0073874552925520193, 0.17949584882031078, 3.017989912319765e-07, 1.5458480628337867e-08, 0.77575933536150166, +0.44500000000000001, 5.4750796856589501, 0.0, 1944.4707446391285, 0.010958500783682575, 0.011992913790447663, 0.00538660735535159, 0.0024256237121131441, 0.01588637061036352, 0.0072804294352295691, 0.1806220341244906, 2.940512683959363e-07, 1.4430617195061688e-08, 0.77640571249011847, +0.48999999999999999, 5.5101539236909751, 0.0, 1958.0086605356591, 0.010888744386076841, 0.011575424873451038, 0.0049845173178664388, 0.0022917071792238242, 0.015600920829567998, 0.0072014702268357799, 0.18150939665689092, 2.888837316016419e-07, 1.3699003717341028e-08, 0.77683626033342867, +0.5, 5.5101539398133585, 0.0, 1958.0086605356591, 0.010888744380988396, 0.011575425363593017, 0.004984517315394706, 0.0022917071780874077, 0.015600920821831782, 0.0072014702232646999, 0.1815093965668837, 2.8888373145838973e-07, 1.3699003710547939e-08, 0.77683625994820948, diff --git a/test_problems/python/flame1_blessed_linux.csv b/test_problems/python/flame1_blessed_linux.csv index a3066e054..cbd665cef 100644 --- a/test_problems/python/flame1_blessed_linux.csv +++ b/test_problems/python/flame1_blessed_linux.csv @@ -1,105 +1,105 @@ z (m), u (m/s), V (1/s), T (K), rho (kg/m3), H2, H, O, O2, OH, H2O, HO2, H2O2, AR, -0.0, 1.1275652132501246, 0.0, 373.0, 0.053211385052787892, 0.16776401464285751, 0.0029899234967858683, 2.5031623463702036e-05, 0.10186359030690059, 0.00046130517066524058, 0.0033537154023423523, 1.7279124068355008e-05, 9.705310874081944e-06, 0.72351543492204218, -1.953125e-05, 1.1324670083863726, 0.0, 374.65074586138309, 0.052981380136331989, 0.16762392745848392, 0.0030060400545214869, 2.5543070738692325e-05, 0.1018213303724098, 0.00047092367647356509, 0.0034470773074634911, 1.7846389106052973e-05, 1.0026401445202074e-05, 0.72357728526935772, -3.9062500000000001e-05, 1.1373542525394316, 0.0, 376.29697413000957, 0.052754023010294047, 0.16748320680900736, 0.0030228430697457507, 2.6035865995604817e-05, 0.10177941407608432, 0.00047987495613236581, 0.0035410849502350863, 1.8181502536899736e-05, 1.0334541024265886e-05, 0.7236390242292382, -7.8125000000000002e-05, 1.147083365842674, 0.0, 379.57519614918868, 0.0523071610844833, 0.16720049862122163, 0.0030584105800497453, 2.6961804789673988e-05, 0.10169667097076285, 0.00049571339374182436, 0.003730516633144569, 1.8379978474619466e-05, 1.0909708097135607e-05, 0.72376193830971791, -0.0001171875, 1.1567497972899092, 0.0, 382.83389586696495, 0.05187059391832375, 0.16691534770859462, 0.0030966089611408109, 2.7811799914452959e-05, 0.10161489516529557, 0.00050898036283568817, 0.0039221114794258053, 1.8286423263572074e-05, 1.1430742526164252e-05, 0.72388452735700326, -0.00015625, 1.1663539451273903, 0.0, 386.07320647763595, 0.051443979281996469, 0.16662780534914751, 0.0031373424111606181, 2.858906176326681e-05, 0.10153391415747892, 0.00051988121060082739, 0.0041156747183446162, 1.8060304388434356e-05, 1.1896920454090286e-05, 0.7240068358666617, -0.00019531250000000001, 1.175897351961916, 0.0, 389.29362891424984, 0.051026940339166424, 0.16633792212378321, 0.0031805120440153755, 2.9298273898582922e-05, 0.101453593696537, 0.00052865094161152538, 0.004311038117021459, 1.7779063886779422e-05, 1.2308405145620874e-05, 0.72412889733410046, -0.00023437499999999999, 1.185382052427522, 0.0, 392.49582320861845, 0.050619096477939343, 0.16604574596063637, 0.003226021945333995, 2.9944767580182286e-05, 0.10137382472030171, 0.00053552272865994063, 0.0045080544062908881, 1.747995098402433e-05, 1.2666071202445119e-05, 0.72425073944901042, -0.00031250000000000001, 1.2041846538335617, 0.0, 398.8480190537104, 0.049829509780326152, 0.16545704030467526, 0.0033233789856771893, 3.1062183548938813e-05, 0.10121630525843012, 0.0005442051811351779, 0.0049050319602719069, 1.6883777146826097e-05, 1.3222424795557152e-05, 0.72449286992431894, -0.00039062500000000002, 1.2227830003122455, 0.0, 405.13724935241856, 0.049072313264921993, 0.16485976878578693, 0.0034290163419644091, 3.199851805808287e-05, 0.10106008688619028, 0.00054778273940170633, 0.0053069706701162917, 1.6325659687107167e-05, 1.3592055882695454e-05, 0.7247344583429125, -0.00046874999999999998, 1.2411935773568858, 0.0, 411.36888993532102, 0.048345044259229898, 0.16425419362206295, 0.0035423902501064766, 3.2792958907443162e-05, 0.10090475876397242, 0.00054741924811264008, 0.0057131900474820608, 1.5808879534635608e-05, 1.3794370065301859e-05, 0.72497565185975621, -0.00054687500000000005, 1.259431260157043, 0.0, 417.5478040139202, 0.047645510179134376, 0.16364053062280146, 0.0036630401138014776, 3.3480335426091421e-05, 0.10075001110394084, 0.00054402987396730978, 0.0061231461962014131, 1.5328967748059253e-05, 1.3849768633002993e-05, 0.72521658301748038, -0.00062500000000000001, 1.277509380646624, 0.0, 423.67836111687018, 0.046971755730383889, 0.16301895449684808, 0.0037905752716041858, 3.4091187931946788e-05, 0.10059560883537717, 0.00053833383343666647, 0.0065364064233892081, 1.4880376008244555e-05, 1.3778320879891395e-05, 0.72545737125452459, -0.00078125000000000004, 1.3132338640892149, 0.0, 435.80773534383769, 0.045694753648888961, 0.16176152617120249, 0.0040632657592998391, 3.5156561753449537e-05, 0.10028950053012342, 0.0005218668498221629, 0.0073658389026744131, 1.4064494554586934e-05, 1.3316690462258126e-05, 0.72593546404010745, -0.000859375, 1.3309070538956531, 0.0, 441.81746583177511, 0.045088300292038523, 0.1611172580090415, 0.0042095544121654501, 3.5682871569776029e-05, 0.10013543883298583, 0.00051220143975814992, 0.007786740092561791, 1.3687763247401817e-05, 1.2978479177976439e-05, 0.72617645809949194, -0.00093749999999999997, 1.3484624957159264, 0.0, 447.79262690622835, 0.044501592201176353, 0.16046545684251495, 0.0043616624484194202, 3.6221020825702102e-05, 0.099981219759756393, 0.00050187245925809292, 0.0082099759959960422, 1.3330531863761298e-05, 1.2580356442077756e-05, 0.72641768058492362, -0.001015625, 1.3659080142109119, 0.0, 453.73581090141465, 0.04393346794424053, 0.15980615229761483, 0.0045194130399012341, 3.6788033638472007e-05, 0.099826767758281282, 0.00049110441482919998, 0.0086354534325941892, 1.2990512727711287e-05, 1.2134859336868179e-05, 0.72665919565107617, -0.0010937500000000001, 1.3832506846980981, 0.0, 459.64936584336277, 0.043382869946811238, 0.1591393535707426, 0.0046826549838060302, 3.7399885492005226e-05, 0.099672015525494248, 0.00048007565756163307, 0.0090631234922511957, 1.2666103726533521e-05, 1.1653005124280015e-05, 0.72690105777580161, -0.0011718750000000002, 1.4004969285891284, 0.0, 465.53542587896925, 0.042848831910219119, 0.15846505158557664, 0.0048512590172163162, 3.8071948329325016e-05, 0.099516899949875587, 0.00046892790685140994, 0.0094929770192556991, 1.2356046308898375e-05, 1.1144419637680633e-05, 0.72714331210694838, -0.00125, 1.4176525943489215, 0.0, 471.39593708763505, 0.042330468126658471, 0.15778322091262173, 0.0050251147442221689, 3.8819380071649075e-05, 0.09936135889007415, 0.00045777358057774541, 0.0099250409383390102, 1.2059296376873467e-05, 1.0617471171484409e-05, 0.72738599478654509, -0.0013281249999999999, 1.4347230272320941, 0.0, 477.23267974722802, 0.041826964330035556, 0.15709382147844045, 0.0052041280423956501, 3.9657466543930276e-05, 0.099205328614011323, 0.0004467015374390764, 0.010359375243721445, 1.1774962222945569e-05, 1.0079400805498164e-05, 0.72762913325441969, -0.0014062499999999999, 1.4517131297617019, 0.0, 483.04728760582174, 0.041337569824824456, 0.15639680010840615, 0.005388218857346202, 4.0601922199877883e-05, 0.099048741749527103, 0.00043578162481169706, 0.010796070514376364, 1.1502267556236597e-05, 9.5364442915530089e-06, 0.72787274651148481, -0.001484375, 1.4686274140120699, 0.0, 488.84126455352884, 0.040861590690678053, 0.15569209190935795, 0.0055773193155811722, 4.166915509911468e-05, 0.098891525623754584, 0.00042506831108301445, 0.01123524585097848, 1.1240526432020786e-05, 8.9939432727545105e-06, 0.72811684536444088, -0.0015625000000000001, 1.4854700469701347, 0.0, 494.61599902530617, 0.040398383895026264, 0.15497962152763975, 0.0057713721019836883, 4.2876500734844337e-05, 0.098733600900640678, 0.00041460360815605025, 0.011677047155685284, 1.0989125165258118e-05, 8.456445224902637e-06, 0.72836143263476949, -0.0016406250000000002, 1.502244889667506, 0.0, 500.37277642596388, 0.039947352175753729, 0.15425930428086709, 0.0059703290578860509, 4.4242428477559824e-05, 0.098574880442824489, 0.00040441943830618366, 0.012121645693237837, 1.0747508903438677e-05, 7.9277924558080076e-06, 0.72860650335704147, -0.00171875, 1.5189555311336085, 0.0, 506.11278983530593, 0.039507939577081028, 0.15353104719503977, 0.0061741499653340378, 4.5786723651721572e-05, 0.098415268346567872, 0.00039453956204181105, 0.012569236886261034, 1.0515171502098246e-05, 7.4112010100854956e-06, 0.72885204494859157, -0.0017968749999999999, 1.5356053176364308, 0.0, 511.8371492209331, 0.039079627542541247, 0.15279474994116984, 0.0063828014881785024, 4.7530647608280147e-05, 0.098254659106258635, 0.00038498115562975762, 0.013020039306361447, 1.0291647801532023e-05, 6.9093305618552732e-06, 0.72909803737643009, -0.0018749999999999999, 1.5521973780805725, 0.0, 517.54688935830438, 0.038661931482816922, 0.15205030570034514, 0.0065962562471315782, 4.9497077631619995e-05, 0.098092936880732409, 0.00037575610603200369, 0.013474293831020055, 1.0076507666283751e-05, 6.4243464429681766e-06, 0.72934445330299802, -0.001953125, 1.5687346458542843, 0.0, 523.24297663254595, 0.038254397751049475, 0.15129760194936601, 0.0068144920084352665, 5.1710628098229587e-05, 0.097929974836093781, 0.00036687207506674153, 0.0139322629405461, 9.8693513089467887e-06, 5.9579749184315686e-06, 0.72959125823616655, -0.0020312500000000001, 1.5852198778422422, 0.0, 528.92631487466031, 0.037856600967270546, 0.15053652119323815, 0.0070374909705274435, 5.4197754000597564e-05, 0.097765634551214939, 0.00035833337252262994, 0.014394230134855454, 9.6698054744161391e-06, 5.5115527308177613e-06, 0.72983841066543553, -0.0021093750000000001, 1.6016556707777501, 0.0, 534.5977503672359, 0.037468141644153692, 0.1497669416359286, 0.0072652391341533678, 5.6986837726623415e-05, 0.097599765471635389, 0.00035014166864530643, 0.014860499452148285, 9.4775198327883372e-06, 5.0860718200422561e-06, 0.73008586220810967, -0.0021875000000000002, 1.6180444755530574, 0.0, 540.25807614578446, 0.037088644071617959, 0.14898873781262817, 0.0074977257448800294, 6.0108259867100563e-05, 0.097432204406657771, 0.00034229657007021631, 0.015331395075962633, 9.2921615460498443e-06, 4.6822200040298562e-06, 0.73033355774838404, -0.0022656250000000003, 1.634388609708521, 0.0, 545.90803574038182, 0.036717754423342262, 0.14820178117548369, 0.007734942796311239, 6.3594454844146208e-05, 0.097262775064169874, 0.00033479608275751649, 0.015807261019042798, 9.1133993537349759e-06, 4.3004182902251189e-06, 0.73058143558974664, -0.0023437500000000003, 1.6506902690042105, 0.0, 551.54832663680759, 0.036355139042688042, 0.14740594064835913, 0.007976884580097229, 6.747995267135479e-05, 0.097091287631236603, 0.00032763700756026007, 0.016288460876793566, 8.9408376939972875e-06, 3.940855385544926e-06, 0.73082942761020242, -0.0025000000000000001, 1.6831794336800874, 0.0, 562.80219657184819, 0.035653381542238197, 0.1457955149577855, 0.008472353097778702, 7.6508049834419557e-05, 0.096743360879356685, 0.00031439618215355395, 0.017262914897572229, 8.6136813014610655e-06, 3.291555834986541e-06, 0.73132304669838255, -0.0026562499999999998, 1.715525742100513, 0.0, 574.02596298344531, 0.034981098463625959, 0.14414879140318901, 0.0089864200724860416, 8.7517564066426972e-05, 0.096385486985111415, 0.00030246894972189934, 0.018261780175845316, 8.3083683427059279e-06, 2.7251676762979038e-06, 0.73181650131356102, -0.0028124999999999999, 1.7477438020230596, 0.0, 585.22408221091484, 0.034336203971078449, 0.14246473347649624, 0.0095190704596257881, 0.00010083328439239577, 0.096015849860683927, 0.00029185169870523606, 0.019288270202939287, 8.0233250149737451e-06, 2.2373014237473405e-06, 0.73230913039071843, -0.00296875, 1.7798469788795304, 0.0, 596.40049375007106, 0.033716820185954274, 0.14074231593242797, 0.010070293573392064, 0.00011680518753119271, 0.095632432856680313, 0.00028254062948261844, 0.020345834784627769, 7.7569126795568337e-06, 1.8221653019020038e-06, 0.73280019795787654, -0.0031250000000000002, 1.8118474517945531, 0.0, 607.5586308599477, 0.033121252297569723, 0.13898054298178647, 0.010640073683843815, 0.00013580598207379706, 0.095233018557405333, 0.00027453594296333438, 0.021438140823922758, 7.5075003197880766e-06, 1.473108768618035e-06, 0.73328890141891601, -0.0034375, 1.8756019754060429, 0.0, 629.83045402348364, 0.031995257070206687, 0.13536981571078296, 0.011824019058325048, 0.00018357078644135814, 0.09438720500627279, 0.00026255508508661048, 0.023716603526240339, 7.0536860802919666e-06, 9.5588749911843352e-07, 0.7342482212532716, -0.0037499999999999999, 1.9390745585848148, 0.0, 652.06462608844708, 0.030947773149674871, 0.13159809154123422, 0.013079545321121332, 0.00024704534261610079, 0.093457722064455268, 0.00025601901256816793, 0.026163092905900472, 6.6528094629477637e-06, 6.0747610439751408e-07, 0.7351912235265371, -0.0040625000000000001, 2.0023292163463586, 0.0, 674.2753224963235, 0.029969938306648569, 0.1276609686086341, 0.014405382753693225, 0.00032896871752171729, 0.092425683544435797, 0.00025543176799274289, 0.028805439266521932, 6.2971021956416968e-06, 3.8195770155390707e-07, 0.73611144628130321, -0.0043750000000000004, 2.0654106438795168, 0.0, 696.46890234044315, 0.029054418155411665, 0.12355653197303884, 0.015799360461303764, 0.00043180548025737679, 0.091271756084667088, 0.00026139209351730088, 0.031670496504238359, 5.9796534656541447e-06, 2.4153735267684413e-07, 0.73700243621215911, -0.0046875000000000007, 2.1283407937044916, 0.0, 718.64294411339893, 0.028195159473543851, 0.11928614994957364, 0.01725810488374149, 0.00055758459289481145, 0.089977216071353644, 0.00027458807543578835, 0.034782391624880719, 5.6944038650453061e-06, 1.5744363259690809e-07, 0.73785811295462211, -0.0050000000000000001, 2.1911153123308162, 0.0, 740.78533187957407, 0.027387192378205805, 0.11485525291290466, 0.018776756650841109, 0.00070776393354371806, 0.088525170540198331, 0.00029575662660853187, 0.038160626920447423, 5.4359561807178613e-06, 1.0917887331218539e-07, 0.73867312728040224, -0.0053124999999999995, 2.2537002927250405, 0.0, 762.87353172093788, 0.026626464968132833, 0.11027403118928505, 0.020348728898115065, 0.00088312858076996256, 0.086901863613114583, 0.00032562472651008267, 0.041818157592259896, 5.1994554763997832e-06, 8.2968186756383513e-08, 0.73944318297628209, -0.0056249999999999998, 2.3160299021383461, 0.0, 784.8742257979568, 0.025909698127158372, 0.10555797342605359, 0.021965537913640382, 0.0010837249625883405, 0.085097967678815375, 0.00036484061427950276, 0.045759613030902042, 4.9805329013052366e-06, 7.0023457917365753e-08, 0.74016529181736157, -0.0059375000000000001, 2.378005449230709, 0.0, 806.7434625149898, 0.025234252308449938, 0.10072816278088688, 0.023616738354970763, 0.0013088296325660912, 0.083109740954568745, 0.00041390058470831381, 0.04997985319271836, 4.7753004194039388e-06, 6.4985671732927334e-08, 0.74083793421348976, -0.0062500000000000003, 2.4394963432229817, 0.0, 828.42744142379729, 0.024598001885684683, 0.095811255485247701, 0.025289990284155486, 0.0015569509373675816, 0.080939925041905392, 0.00047307754650309129, 0.054463048761253685, 4.5803811123416155e-06, 6.4701199481490782e-08, 0.74146110686125521, -0.0065625000000000006, 2.5003432337743372, 0.0, 849.86398586045482, 0.023999215786896597, 0.090839087701081581, 0.026971274762576523, 0.0018258631221953559, 0.078598263336185581, 0.00054235904327842573, 0.059182442009094872, 4.3929573106882037e-06, 6.7350164224690978e-08, 0.74203624971811266, -0.006875, 2.5603633515019992, 0.0, 870.98467393375165, 0.023436445552521942, 0.085847889169172673, 0.028645259293195825, 0.0021126737506932227, 0.076101547248485835, 0.00062140351101346589, 0.064100883998878908, 4.2108178034342762e-06, 7.1873869783413057e-08, 0.74256606033688688, -0.0071874999999999994, 2.6193578121698522, 0.0, 891.71751186880306, 0.022908423453459205, 0.080877125568684996, 0.030295796611660569, 0.0024139251835279345, 0.073473142916981107, 0.00070952306033244519, 0.069172159311362599, 4.0323868078404352e-06, 7.7625203896626307e-08, 0.74305421733543875, -0.0074999999999999997, 2.6771203605537437, 0.0, 911.98995730899185, 0.022413973928362849, 0.075968037373463859, 0.031906522385461197, 0.0027257285758781748, 0.07074201106721556, 0.00080569848462647142, 0.074343013462852367, 3.8567215213520865e-06, 8.417024372295072e-08, 0.74350504775873727, -0.0078125, 2.7334468431022496, 0.0, 931.73204770839743, 0.021951941313774811, 0.07116198551319193, 0.033461503187593125, 0.0030439248596549058, 0.067941297407309101, 0.00090862770987908278, 0.07955570808700245, 3.6834714707017291e-06, 9.1184776303214753e-08, 0.74392317857912238, -0.0081250000000000003, 2.7881445716621953, 0.0, 950.87937024038183, 0.021521135902637347, 0.066498742844317463, 0.034945877938823124, 0.003364262692049019, 0.065106627348108986, 0.0010168034330065242, 0.084750861799867003, 3.5128002597079983e-06, 9.8406288426768882e-08, 0.74431321273727979, -0.0084375000000000006, 2.8410407690756334, 0.0, 969.37562823057385, 0.021120298960758913, 0.062014880520787012, 0.036346436284294611, 0.0036825799047355886, 0.062274275399476969, 0.0011286106208828032, 0.089870304502081735, 3.3452771602028145e-06, 1.056158146474178e-07, 0.74467946187476641, -0.0087500000000000008, 2.8919894009562372, 0.0, 987.17461098032391, 0.020748085829260979, 0.057742385890760708, 0.037652085579336483, 0.0039949737067772641, 0.059479388656029315, 0.0012424312169032105, 0.09485968436831288, 3.1817508267345193e-06, 1.1263391602608115e-07, 0.74502575619713718, -0.0090625000000000011, 2.9408759287531998, 0.0, 1004.2414484118422, 0.020403064880411995, 0.053707617166716556, 0.038854173133447543, 0.0042979462355084257, 0.056754424831035814, 0.0013567427413790334, 0.099670616119878722, 3.0232194100739693e-06, 1.1932161915274258e-07, 0.74535533723100467, -0.0093750000000000014, 2.9876204161622604, 0.0, 1020.5533259660394, 0.020083724983986872, 0.049930656226733705, 0.039946648365211973, 0.0045885155631513472, 0.054127924407100361, 0.0014701996541373651, 0.10426223257427573, 2.8707092777433718e-06, 1.255813372784423e-07, 0.7456708269187744, -0.0096875000000000017, 3.0321786822377041, 0.0, 1036.0996193295514, 0.019788490250279352, 0.046425072071102358, 0.040926068383244113, 0.0048642862068034257, 0.051623684395255123, 0.0015816895111763587, 0.10860208561825727, 2.7251738681931538e-06, 1.3135555126077573e-07, 0.74597425728474187, -0.01, 3.0745387841841345, 0.0, 1050.8804755948556, 0.01951575864985838, 0.043198060988294894, 0.041791467057145856, 0.0051234763581439564, 0.049260348475376983, 0.0016903584825776533, 0.11266642347927409, 2.5874244711681211e-06, 1.3662290027828558e-07, 0.74626714111181514, -0.010312499999999999, 3.1147176450438732, 0.0, 1064.9055248740217, 0.019263929759799962, 0.040250901412034822, 0.042544115591396099, 0.0053649080098060985, 0.047051376939986601, 0.0017956114023957791, 0.11643992507879987, 2.4580847971389376e-06, 1.4139207154466942e-07, 0.74655056208871196, -0.010624999999999999, 3.1527566257191286, 0.0, 1078.1922972712091, 0.019031431702337922, 0.03757964080184914, 0.043187208753121833, 0.0055879657461985754, 0.045005332846769323, 0.0018970919023963276, 0.11991500936905057, 2.3375715367936558e-06, 1.4569463553925985e-07, 0.74682526731444188, -0.010937499999999999, 3.1887164850555152, 0.0, 1090.7644848444716, 0.018816745581010569, 0.03517592794115551, 0.043725510376493588, 0.0057925310738967508, 0.043126405476171283, 0.00199465185468547, 0.12309084839303508, 2.2260967411236288e-06, 1.495780205556123e-07, 0.74709174920980059, -0.01125, 3.2226720721398272, 0.0, 1102.6501524909536, 0.018618426652324205, 0.03302791082606267, 0.04416498719596073, 0.0059788993515092472, 0.041415088899825127, 0.0020883245218058203, 0.12597220385642685, 2.1236843087980295e-06, 1.5309925544525442e-07, 0.74735030856484519, -0.011875, 3.2848630648912049, 0.0, 1124.4637820769699, 0.018265837889503693, 0.029470856115889458, 0.044766053677172485, 0.0062975151836250944, 0.038500876255468948, 0.0022638533007879728, 0.13085867975517484, 1.9460369271776955e-06, 1.5920255907976688e-07, 0.74784006047239493, -0.012500000000000001, 3.3407243974228633, 0.0, 1144.1098387150068, 0.017960335698828347, 0.026718139883518673, 0.04506540478679967, 0.0065555812467412745, 0.036139867999945702, 0.0024264946639837833, 0.13479416300279473, 1.7987096112272757e-06, 1.6442822096759665e-07, 0.7482983852783841, -0.013125000000000001, 3.391067429237602, 0.0, 1161.8697708510651, 0.017693643193665273, 0.024633349141436073, 0.045121725726605173, 0.0067613787253783374, 0.034259201029158602, 0.0025779240170066271, 0.13791647389808329, 1.6777716575360046e-06, 1.6900932330193372e-07, 0.74872810068135109, -0.01375, 3.4366454917987226, 0.0, 1178.0027281827647, 0.017458938396589734, 0.02308550868204793, 0.04498973818381069, 0.0069239430311590563, 0.032780489015806449, 0.0027197015877330828, 0.1403668946536033, 1.5789831605957119e-06, 1.7309946510327378e-07, 0.74913197276321375, -0.014999999999999999, 3.5155838616119621, 0.0, 1206.0888437350372, 0.01706685444381164, 0.021253764039845968, 0.044310375159006397, 0.0071445900782007412, 0.030810975032500781, 0.0029769732964493828, 0.14363796431689801, 1.4351055321586573e-06, 1.8006188248718837e-07, 0.74986374290968405, -0.016250000000000001, 3.5838332846769476, 0.0, 1230.4912343814678, 0.016741794433751886, 0.020361641334278553, 0.043354413709549809, 0.0072785239084914577, 0.029566893008983321, 0.0032095981698326828, 0.14570570414046463, 1.333047994950282e-06, 1.8539053356554926e-07, 0.75052170728987111, -0.017500000000000002, 3.6441182618826451, 0.0, 1252.1402078724714, 0.016464801285971286, 0.019988844619916259, 0.042286344468410758, 0.0073567173748666261, 0.028756110861910211, 0.0034217938854258995, 0.14706536070259846, 1.2572166565286348e-06, 1.8907939544124545e-07, 0.75112338179081972, -0.018750000000000003, 3.6982576052563965, 0.0, 1271.6564593956932, 0.016223746067462318, 0.019883537758918733, 0.041199576679076914, 0.0073995034472082374, 0.028195762873807276, 0.0036165694973369087, 0.14802281473018525, 1.1979317574123349e-06, 1.9120146565131379e-07, 0.75168084588024364, -0.02, 3.7474387374838476, 0.0, 1289.4455311605536, 0.01601080729173129, 0.019903358239791395, 0.040142582946284609, 0.0074193600502941732, 0.027777720744265256, 0.0037961525567881114, 0.14875716942065309, 1.1494340950501353e-06, 1.9192003518787755e-07, 0.75220231468779319, -0.022499999999999999, 3.8332933892813768, 0.0, 1320.6355318979174, 0.01565218318493623, 0.020081508241431418, 0.038196617577941766, 0.0074153111928105583, 0.027176223346840386, 0.0041135916612253911, 0.14986648344290501, 1.073735253760526e-06, 1.9001514199558075e-07, 0.75314900078644975, -0.025000000000000001, 3.9085218539248547, 0.0, 1348.0749990446161, 0.015350900016169965, 0.02025927434030745, 0.03646679472600918, 0.0073807590544801545, 0.026689749745140656, 0.0043945931984658839, 0.15080427681655076, 1.0132820003959335e-06, 1.849463863429689e-07, 0.75400335389065909, -0.0275, 3.975446433555808, 0.0, 1372.5710694895852, 0.015092459412959608, 0.020398738895629386, 0.034927646586278137, 0.0073282311654160048, 0.026266814952704495, 0.0046456894478377865, 0.15164930321779002, 9.6308009896257984e-07, 1.7795407540980731e-07, 0.75478243470016981, -0.029999999999999999, 4.0356611613386528, 0.0, 1394.6798997847256, 0.014867257154017202, 0.0204983683474485, 0.03354881798759371, 0.0072646075713518905, 0.025887492856781304, 0.0048715860940634521, 0.15242973391757814, 9.2036968678411709e-07, 1.6995149509929485e-07, 0.75549830290400111, -0.032500000000000001, 4.0903250060542469, 0.0, 1414.8072764582182, 0.014668558047402479, 0.020564347357485278, 0.032304237484582471, 0.0071939924232340413, 0.025542213831576736, 0.005075891874996399, 0.15315815660746582, 8.8340899643107212e-07, 1.6156175490536076e-07, 0.75616011544990802, -0.035000000000000003, 4.1403053559963148, 0.0, 1433.257892434616, 0.014491475645265949, 0.020603147833257625, 0.031173099369083461, 0.0071190281418345418, 0.025225183479567072, 0.0052614494006681892, 0.15384197890999698, 8.5100422118270717e-07, 1.5318903379590159e-07, 0.75677510867233722, -0.037500000000000006, 4.1862494522219649, 0.0, 1450.2599999432039, 0.014332424465815513, 0.020619994252047809, 0.030139045412928868, 0.0070414807628812548, 0.024932384507290278, 0.0054304691267025107, 0.1544864783249161, 8.2230462679197241e-07, 1.4508517961556605e-07, 0.75734918022342679, -0.040000000000000001, 4.228605465350042, 0.0, 1465.9728165017079, 0.014188856991627702, 0.020618772682914736, 0.029189207344110912, 0.006962522953621186, 0.024661062039978605, 0.0055845093320158945, 0.15509570784851243, 7.9670807193009372e-07, 1.3740536256986057e-07, 0.75788728368541192, -0.044999999999999998, 4.3032295380984724, 0.0, 1493.7639299935931, 0.013942792494581149, 0.020572532283192925, 0.027517290097384777, 0.0068052875316307673, 0.024180530291701897, 0.0058503848993090987, 0.15620933044017898, 7.534953232412544e-07, 1.2372323588724817e-07, 0.75886376723804239, -0.050000000000000003, 4.3691799515109171, 0.0, 1518.4110298054457, 0.013732325905317132, 0.020489837378804509, 0.026057631625526836, 0.0066499454609994495, 0.02375264851867127, 0.0060785125581076229, 0.15722855764699653, 7.1714195469248757e-07, 1.1183570862970762e-07, 0.75974203783323035, -0.055, 4.4281418962856138, 0.0, 1540.5147905266706, 0.013549469922866542, 0.020381910376528253, 0.024768272038255008, 0.0064985925236307638, 0.023367371554889448, 0.0062758153495052725, 0.15816844214172743, 6.8597336265339329e-07, 1.0161088482286201e-07, 0.76053880843121635, -0.059999999999999998, 4.4813545046149779, 0.0, 1560.5181824459544, 0.013388575292893685, 0.020256509685625475, 0.02361845605204143, 0.0063523534196902876, 0.023017292581815636, 0.0064475925682820822, 0.15904037584461023, 6.5884091490528247e-07, 9.28349035804315e-08, 0.76126666817211641, -0.065000000000000002, 4.5297335733123818, 0.0, 1578.7495737200957, 0.013245576444239671, 0.020119088073142694, 0.022585252735961726, 0.0062117986812761858, 0.022696912373690967, 0.0065979025337068991, 0.15985301502148241, 6.3493745950072838e-07, 8.5290678896489443e-08, 0.76193531035260065, -0.070000000000000007, 4.5738982000936099, 0.0, 1595.4325735489747, 0.013117676107628476, 0.019973357213419918, 0.021651542586372891, 0.0060771845182397838, 0.022402443023959762, 0.0067296204369812224, 0.16061270879473313, 6.1370912685141583e-07, 7.8792636056844619e-08, 0.76255245092453039, -0.080000000000000002, 4.6501105280537089, 0.0, 1624.3439556475071, 0.012902679751933382, 0.019667396231305156, 0.020049658647575238, 0.005829039059243514, 0.021890398480822887, 0.0069422295619114968, 0.16197361746510178, 5.7831659051483327e-07, 6.8470547268595209e-08, 0.76364701376690214, -0.089999999999999997, 4.7165005966166573, 0.0, 1649.6177982613724, 0.012721055073415793, 0.019352186648717854, 0.018681966887595023, 0.0056001999601430008, 0.021439735959331224, 0.0071114303910914537, 0.16320117296236525, 5.486948233455725e-07, 6.0422653238222772e-08, 0.76461269807327958, -0.10000000000000001, 4.7750643244380404, 0.0, 1671.9808421138371, 0.012565033755209251, 0.019035429723939838, 0.017498196344766462, 0.0053892026567038433, 0.021038272770297919, 0.007246786003776675, 0.16431786246472987, 5.2344232004820542e-07, 5.4030297787741945e-08, 0.76547367256316756, -0.1125, 4.8388781467308668, 0.0, 1696.4333684008905, 0.012399325249846299, 0.018644988929211362, 0.01622963658363177, 0.0051494241867981209, 0.02059656146159327, 0.0073774470373172479, 0.16557514591484757, 4.9681733946445925e-07, 4.777371760267187e-08, 0.76642625129554365, -0.125, 4.8951519705193887, 0.0, 1718.0599057028467, 0.012256781179704548, 0.018263022997006259, 0.015134460768152015, 0.0049307925118482988, 0.020203054141223604, 0.0074770414845256334, 0.16671723508975475, 4.7409913429912717e-07, 4.2833783358031687e-08, 0.76727387607457165, -0.13750000000000001, 4.9453147741043324, 0.0, 1737.3859946171458, 0.012132451447090816, 0.017892506899045112, 0.014178272424210502, 0.0047308294149902251, 0.019848900269131407, 0.0075524607764591674, 0.1677621056341829, 4.5444993534859056e-07, 3.8853507365613153e-08, 0.7680344312785381, -0.14999999999999999, 4.9903588397214662, 0.0, 1754.7768638815614, 0.012022938634786788, 0.017535620683339574, 0.013336879570909989, 0.0045476295074038291, 0.019527869965940876, 0.0076086991180025054, 0.16872225826933102, 4.3729755953243498e-07, 3.5595007029058472e-08, 0.76872056999250571, -0.17499999999999999, 5.0656103470585085, 0.0, 1783.9511250423882, 0.011844329088734102, 0.01687526693673267, 0.011955495768465614, 0.0042317477619131126, 0.018985696030388615, 0.0076743963295194534, 0.17038543967787348, 4.0969230563363137e-07, 3.0745893227894127e-08, 0.76989151705690817, -0.20000000000000001, 5.1295815714787523, 0.0, 1808.8350894363991, 0.011696614364009743, 0.016258625582043957, 0.010819007939940782, 0.0039570903391867914, 0.018518427381549522, 0.0077015721369105353, 0.17184960988761067, 3.8737891546031153e-07, 2.7163444011155231e-08, 0.77089525219039834, -0.22500000000000001, 5.1848633588463571, 0.0, 1830.3987824164174, 0.011571900263535856, 0.015683839112527166, 0.0098668052046916154, 0.0037160792011854318, 0.018109600564120507, 0.0077019274314518845, 0.17315346152161196, 3.6905467293509223e-07, 2.4425062089216053e-08, 0.77176789348467634, -0.25, 5.233225582049104, 0.0, 1849.3046459473735, 0.011464957324143401, 0.015149386001602061, 0.0090586014185836099, 0.0035032158338765013, 0.017747748623548484, 0.0076834584109893231, 0.17432373815321561, 3.5385004201628278e-07, 2.2276917742964516e-08, 0.77253347543122464, -0.30000000000000004, 5.3106167712210359, 0.0, 1879.6782904802046, 0.011297875275039233, 0.01421892277398472, 0.0078051842959936139, 0.003157169517294969, 0.017161050637809983, 0.0076117302527485926, 0.17626685956192539, 3.3134611275504775e-07, 1.9264686908173053e-08, 0.77377873234944317, -0.35000000000000003, 5.3741692157808982, 0.0, 1904.6972735346578, 0.011164268488552259, 0.013393038203411346, 0.0068243919867169824, 0.0028714661072613791, 0.016671661420999191, 0.0075124285558403675, 0.17792106739040731, 3.1493428505205431e-07, 1.715396215156218e-08, 0.77480561424711614, -0.40000000000000002, 5.427509344612611, 0.0, 1925.7198250250901, 0.011054546287743433, 0.012664058871682256, 0.006043323892692614, 0.0026332810094407198, 0.016254746364945425, 0.0074003327074721468, 0.17934550820595638, 3.0295236845390845e-07, 1.5619544932579854e-08, 0.77565843037589721, -0.48999999999999999, 5.5008347456263413, 0.0, 1954.3067184602439, 0.010907187340204032, 0.011718521214907416, 0.0051095154186047986, 0.002332020563624259, 0.01566688661638297, 0.0072299465838158421, 0.18126151004393667, 2.9015768778717146e-07, 1.3898260297177567e-08, 0.77668129550277998, -0.5, 5.5008347617186928, 0.0, 1954.3067184602439, 0.010907187335098012, 0.011718521705845177, 0.0051095154160666007, 0.0023320205624658063, 0.0156668866086003, 0.0072299465802242993, 0.18126150995389334, 2.9015768764303292e-07, 1.3898260290273478e-08, 0.77668129511695638, +0.0, 1.1276040590950778, 0.0, 373.0, 0.053209554951987745, 0.16784714373698281, 0.0029541211739351069, 2.4748298102968469e-05, 0.10187394395101516, 0.00045483355584503447, 0.0033279717473215244, 1.7264842680031168e-05, 9.511194705331296e-06, 0.7234904614994121, +1.953125e-05, 1.1324840114867984, 0.0, 374.64343769014243, 0.052980585837863275, 0.16770775360641832, 0.0029700456225649429, 2.5253968528287434e-05, 0.10183212248714035, 0.00046431736129514068, 0.0034206200880927563, 1.7831650291917834e-05, 9.8258694642479422e-06, 0.72355222934620411, +3.9062500000000001e-05, 1.1373496649538377, 0.0, 376.28244020821097, 0.052754235201791552, 0.16756772947920456, 0.0029866520218792564, 2.574135346062007e-05, 0.10179063802265646, 0.00047314730859388627, 0.0035139071483962594, 1.8167874726591416e-05, 1.0127985007978328e-05, 0.72361388880607447, +7.8125000000000002e-05, 1.1470363541740305, 0.0, 379.54645922737137, 0.052309301062983662, 0.16728640662134009, 0.0030218145835648634, 2.6657622952035689e-05, 0.10170873797723021, 0.00048878313256327949, 0.0037018832281879889, 1.8370521141619146e-05, 1.0692320230433379e-05, 0.72373665399278952, +0.0001171875, 1.1566613303860021, 0.0, 382.79127301243591, 0.051874554422996717, 0.16700263718960923, 0.0030595928003850879, 2.7499402781144743e-05, 0.10162778495881282, 0.00050189506265029579, 0.0038920008537392707, 1.8280943023812811e-05, 1.1204088979981586e-05, 0.72385910470001835, +0.00015625, 1.1662249347253628, 0.0, 386.01699620037203, 0.051449660641838875, 0.1667164713287326, 0.0030998929006551719, 2.8269826727401967e-05, 0.10154760892828323, 0.00051268302014364456, 0.004084068545451759, 1.8057962987580031e-05, 1.1662544172150303e-05, 0.72398128494284653, +0.00019531250000000001, 1.1757286534237155, 0.0, 389.22411148341877, 0.051034249967896204, 0.16642795852653594, 0.0031426178920337532, 2.897348073206514e-05, 0.10146807755521331, 0.00052137674863105216, 0.0042779210885344763, 1.7779062717022412e-05, 1.2067801793932121e-05, 0.72410322784380843, +0.00023437499999999999, 1.185174471872257, 0.0, 392.41326295499908, 0.05062794813342724, 0.16613714569724258, 0.0031876735648855179, 2.9615590563567494e-05, 0.10138908334981045, 0.00052820466849223824, 0.0044734140191836904, 1.7481693116065906e-05, 1.2420671235004023e-05, 0.72422496074547082, +0.00031250000000000001, 1.2039015778788857, 0.0, 398.74012043997573, 0.049841208244073794, 0.16555112301350919, 0.0032841032563736953, 3.072746873724162e-05, 0.10123306610218054, 0.0005368830868225931, 0.0048673336099854265, 1.6887789192229202e-05, 1.2971506578464859e-05, 0.72446690416662063, +0.00039062500000000002, 1.2224271899035353, 0.0, 405.0049195011004, 0.049086575372540193, 0.1649564963143402, 0.0033887912707742016, 3.1661628251817784e-05, 0.10107830685628887, 0.00054053925599179106, 0.0052661952742617734, 1.6331212788364775e-05, 1.3340150527558232e-05, 0.72470833803677537, +0.00046874999999999998, 1.2407676244337169, 0.0, 411.21298160245976, 0.048361616977752916, 0.16435352222915281, 0.0035012017663901313, 3.2456524180716325e-05, 0.10092440029090974, 0.00054031656364397003, 0.0056693343955870525, 1.5815604790017522e-05, 1.3545273901747528e-05, 0.72494940735144386, +0.00054687500000000005, 1.2589376355425363, 0.0, 417.36913112441658, 0.047664165496280352, 0.16374241189980385, 0.0036208804833963602, 3.3146344618442287e-05, 0.10077104041595085, 0.00053711425630629107, 0.006076220695698519, 1.5336643937017742e-05, 1.360657060520785e-05, 0.72519024268968346, +0.00062500000000000001, 1.2769504649999863, 0.0, 423.47770880092668, 0.046992286873405328, 0.16312333619983241, 0.0037474418498636918, 3.3761079002250587e-05, 0.10061799473357838, 0.00053163904613639189, 0.0064864330560470695, 1.4888847102535609e-05, 1.3543460851098777e-05, 0.72543096172758625, +0.00078125000000000004, 1.3125511899770654, 0.0, 435.5653858858048, 0.045718489035385598, 0.16187068379082825, 0.004018208500179539, 3.4837051135128574e-05, 0.10031448686528234, 0.00051568091976088976, 0.0073099234476296437, 1.4074208870129301e-05, 1.3103896316999715e-05, 0.72590900131999703, +0.000859375, 1.3301657397958833, 0.0, 441.55533494735317, 0.045113396389985613, 0.16122874396311349, 0.0041635366820949281, 3.5369040309648522e-05, 0.10016169691870817, 0.00050628600166631227, 0.0077278942448456454, 1.3697945939442908e-05, 1.2778127779827508e-05, 0.72614999707554262, +0.00093749999999999997, 1.3476646972471613, 0.0, 447.51142843000679, 0.044527903665873843, 0.16057921037100203, 0.0043146936431615879, 3.5912816794084027e-05, 0.10000872283085153, 0.00049623225322047789, 0.0081482512678976073, 1.334109801780318e-05, 1.2393021075956638e-05, 0.72639124269797883, +0.001015625, 1.3650558457631909, 0.0, 453.43624573591217, 0.043960860986256477, 0.15992211187343391, 0.0044715041698879512, 3.6485143779899133e-05, 0.099855489607470413, 0.00048574016867908401, 0.0085709053844236164, 1.3001388421013387e-05, 1.1960814658438794e-05, 0.7266328014492458, +0.0010937500000000001, 1.3823462209396495, 0.0, 459.33212245149764, 0.043411221272569737, 0.15925745732699698, 0.0046338182915077516, 3.7101761830363513e-05, 0.099701930491270796, 0.00047498491160075416, 0.0089958106619982808, 1.2677222738096334e-05, 1.1492281159691692e-05, 0.7268747270508974, +0.0011718750000000002, 1.3995422049975716, 0.0, 465.20118046259989, 0.042878027808745701, 0.15858523768827848, 0.0048015076574615435, 3.777782628505332e-05, 0.099547982953859429, 0.0004641056873369014, 0.0094229599697800634, 1.2367349296349693e-05, 1.0996848744996739e-05, 0.72711706401895726, +0.00125, 1.4166496071674324, 0.0, 471.04535358075043, 0.042360403670572741, 0.15790542788279252, 0.0049744625170338071, 3.8528290441250451e-05, 0.099393585506666396, 0.00045321295472716184, 0.0098523814135617165, 1.2070730346727009e-05, 1.0482728484174885e-05, 0.72735984797594633, +0.0013281249999999999, 1.4336737331094447, 0.0, 476.86640970886361, 0.041857542667931444, 0.15721798846685311, 0.0051525891702953585, 3.9368242297514748e-05, 0.099238675159504922, 0.00044239407315201763, 0.010284135425946483, 1.1786480010342564e-05, 9.9570388134168543e-06, 0.72760310594312683, +0.0014062499999999999, 1.450619445262189, 0.0, 482.66597007195355, 0.041368701548030351, 0.15652286712679858, 0.0053358078006469165, 4.0313201096643832e-05, 0.099083185381499253, 0.00043171777240444013, 0.010718312375383296, 1.1513827312661005e-05, 9.4259222459995496e-06, 0.72784685659261217, +0.001484375, 1.4674912151194612, 0.0, 488.44552588932669, 0.040893193261589966, 0.15582000002138668, 0.0055240506203072118, 4.1379378990410396e-05, 0.098927044444171386, 0.00042123772027145118, 0.01115503058988174, 1.1252091137759633e-05, 8.8946520755449696e-06, 0.72809111048177788, +0.0015625000000000001, 1.4842931686762766, 0.0, 494.20645280603446, 0.040430381127225162, 0.15510931300335423, 0.0057172602759141189, 4.2583912317351577e-05, 0.098770174058155594, 0.00041099539063700109, 0.011594434716851808, 1.100066217417753e-05, 8.3677284054633024e-06, 0.72833587025219027, +0.0016406250000000002, 1.5010291256994357, 0.0, 499.95002336507861, 0.039979673758395645, 0.15439072271785709, 0.0059153884708671505, 4.3945066171763998e-05, 0.098612488231098305, 0.00040102238421213407, 0.012036694357779966, 1.0758989521996822e-05, 7.84896377252297e-06, 0.72858113081871911, +0.00171875, 1.517702633857632, 0.0, 505.67741777105289, 0.039540520637688994, 0.15366413760981495, 0.0061183947705395333, 4.5482415209199524e-05, 0.098453892296535686, 0.0003913423170386753, 0.012482002930882837, 1.0526570602248013e-05, 7.3415591426630459e-06, 0.72882687953023428, +0.0017968749999999999, 1.5343169981544367, 0.0, 511.3897331673553, 0.039112408243599198, 0.15292945883366182, 0.0063262455614165177, 4.7217002991109305e-05, 0.098294282070914771, 0.00038197236431672409, 0.01293057672359957, 1.0302943466295903e-05, 6.8481712959304103e-06, 0.72907309632833717, +0.0018749999999999999, 1.5508753065282288, 0.0, 517.08799162261596, 0.038694856648468078, 0.1521865810947412, 0.0065389131416680648, 4.9171481654856171e-05, 0.098133543111578611, 0.00037292452646651628, 0.013382654105224304, 1.0087680866335073e-05, 6.3709726892980616e-06, 0.72931975388511083, +0.001953125, 1.5673804518957712, 0.0, 522.77314699799479, 0.038287416520921942, 0.15143539341378517, 0.0067563749231050046, 5.1370233278786294e-05, 0.097971550050658426, 0.00036420666858871245, 0.013838494874281614, 9.8803856080071597e-06, 5.9117048578668211e-06, 0.72956681774583643, +0.0020312500000000001, 1.583835151356904, 0.0, 528.44609084601063, 0.037889666474949651, 0.15067577984102387, 0.0069786127291895372, 5.3839474010948979e-05, 0.097808165991347354, 0.00035582337253348172, 0.014298379720785737, 9.6806867600715376e-06, 5.4717263327390793e-06, 0.72981424645801618, +0.0021093750000000001, 1.6002419627228135, 0.0, 534.10765747468508, 0.037501210718237206, 0.14990762011062764, 0.0072056121747766082, 5.6607341807786118e-05, 0.097643241952343737, 0.00034777663156922406, 0.014762609785830764, 9.4882360658581265e-06, 5.052055945534621e-06, 0.73006199171103281, +0.0021875000000000002, 1.6166032989921335, 0.0, 539.75862830241624, 0.037121676957554521, 0.14913079025898332, 0.0074373621167744203, 5.9703968511624199e-05, 0.097476616355413423, 0.00034006641136553005, 0.015231506305415291, 9.3027025132182541e-06, 4.6534122748511695e-06, 0.73030999846874833, +0.0022656250000000003, 1.6329214409864676, 0.0, 545.39973564782531, 0.036750714524499899, 0.14834516319806154, 0.0076738541642036931, 6.3161537015306898e-05, 0.097308114550571825, 0.00033269110053249859, 0.015705410327319386, 9.1237564003162652e-06, 4.2762498796124921e-06, 0.73055820511601588, +0.0023437500000000003, 1.6491985490570542, 0.0, 551.03166623325126, 0.036387992679252662, 0.14755060925975172, 0.007915082233958478, 6.7014324777538324e-05, 0.097137548386996064, 0.00032564789597528169, 0.016184682494227668, 8.9510035170234894e-06, 3.920792866095774e-06, 0.73080654360793007, +0.0025000000000000001, 1.6816428024835082, 0.0, 562.27025158601475, 0.03568593151512308, 0.14594261696856353, 0.0084091639200560842, 7.5964457143418124e-05, 0.096791440449705113, 0.00031261111231868877, 0.017155395556797501, 8.6234515274124395e-06, 3.2781833628255541e-06, 0.73130090590052543, +0.0026562499999999998, 1.7139494106371245, 0.0, 573.48052802243706, 0.035013242996850026, 0.14429817410626058, 0.0089218842473562827, 8.6877414697666061e-05, 0.096435380364871731, 0.00030085606513104445, 0.018150619212666631, 8.3177289689348644e-06, 2.7168668410842312e-06, 0.73179517399320615, +0.0028124999999999999, 1.7461327490514638, 0.0, 584.66688273064574, 0.03436785724115668, 0.14261625248085483, 0.0094532260408243286, 0.00010007634250716106, 0.096067564484924817, 0.00029038180819253599, 0.019173546828581592, 8.0322701117554592e-06, 2.2327303502079682e-06, 0.73228868701365268, +0.00296875, 1.7782059757343562, 0.0, 595.83319428726043, 0.033747909909197626, 0.14089583374416273, 0.010003176924681853, 0.00011590981495699091, 0.095685987886247867, 0.00028118705545313901, 0.020227610163344602, 7.765442113530938e-06, 1.8202403700895291e-06, 0.73278070872866918, +0.0031250000000000002, 1.8101810877965978, 0.0, 606.98284337382279, 0.033151717654699972, 0.13913592744936881, 0.010571719982081814, 0.00013474944835770305, 0.095288443851181723, 0.00027327430590950655, 0.021316460654226245, 7.5156178818417479e-06, 1.4729792788723361e-06, 0.73327043571171358, +0.0034375, 1.8738980651717621, 0.0, 629.24234510934514, 0.032024327713883131, 0.13552853712653981, 0.011753309855150303, 0.00018212531844689599, 0.094446456635485745, 0.00026140974329315222, 0.023588161922619647, 7.0610067858835597e-06, 9.5740658770006193e-07, 0.73423198098509079, +0.0037499999999999999, 1.9373489512888322, 0.0, 651.46987829090119, 0.030975318458687996, 0.13175967033138475, 0.013006614470397637, 0.00024512300737436889, 0.093520993212954498, 0.00025491601036709742, 0.026027956967267851, 6.6593865995483068e-06, 6.0933618108201682e-07, 0.73517745727747319, +0.0040625000000000001, 2.0005970947145517, 0.0, 673.67944209513769, 0.029995868400258415, 0.1278249044490484, 0.014330375885391555, 0.00032649053757222006, 0.092493179468271097, 0.00025430693627132695, 0.028663679923982891, 6.3030024919004861e-06, 3.8356266273923016e-07, 0.7361003762343078, +0.0043750000000000004, 2.0636868026305017, 0.0, 695.87729984818043, 0.029078671982721242, 0.12372227584757597, 0.015722444480517964, 0.00042870950094304859, 0.091343652806234701, 0.00026019040568001442, 0.031522252465381623, 5.9849506959720261e-06, 2.4270049466873734e-07, 0.73699424684247605, +0.0046875000000000007, 2.1266398655712853, 0.0, 718.06099414622349, 0.028217696483287657, 0.11945307821397859, 0.017179476885690576, 0.00055383285662903884, 0.090053615429050757, 0.00027326371774354845, 0.034627934824367393, 5.6991750632645609e-06, 1.5817906888542838e-07, 0.73785294071840801, +0.0050000000000000001, 2.1894519291605605, 0.0, 740.2184089788467, 0.027407986919875286, 0.11502264594800947, 0.018696651192231149, 0.0007033476332572162, 0.088606055331265671, 0.00029427380769341135, 0.038000423682872514, 5.4402782847276384e-06, 1.0957549025143238e-07, 0.73867105255089549, +0.0053124999999999995, 2.2520891698687331, 0.0, 762.32701930820429, 0.026645502778110987, 0.11044105941443991, 0.02026742248859098, 0.00087807096724440946, 0.086987057227710815, 0.00032395901833985808, 0.041652919033908005, 5.2034019791011684e-06, 8.3124510325771301e-08, 0.73944422532327658, +0.0056249999999999998, 2.3144858366772532, 0.0, 784.35349650604269, 0.025926974384184627, 0.10572369331667406, 0.021883349651578371, 0.0010780818782125084, 0.085187102861524505, 0.00036298052049303116, 0.045590328162061614, 4.9841704505387145e-06, 7.0021137069943795e-08, 0.74016940941786824, +0.0059375000000000001, 2.3765432274142935, 0.0, 806.2538299061772, 0.025249770822256483, 0.10089152497317418, 0.023534025894597688, 0.0013026877679190466, 0.083202242036160792, 0.00041184898675835545, 0.049807799038637308, 4.7786855469267053e-06, 6.4883805846540101e-08, 0.7408450277334, +0.0062500000000000003, 2.4381305598395095, 0.0, 827.97408555960158, 0.024611775032240331, 0.095971126023059086, 0.025207140788645145, 0.0015504240421638424, 0.0810350070673585, 0.00047085266246369269, 0.054289773712215626, 4.583557429583311e-06, 6.4539683613061267e-08, 0.74147102760698091, +0.0065625000000000006, 2.4990880353237808, 0.0, 849.45185802366632, 0.024011264842592049, 0.090994282057817844, 0.026888691118384031, 0.0018190864780351008, 0.078694949952132942, 0.00053999455932492928, 0.059009721432353827, 4.3959535695874245e-06, 6.7155412036116949e-08, 0.74204881129296973, +0.006875, 2.5592321244385086, 0.0, 870.61838852049152, 0.02344680112287003, 0.08599721702948597, 0.028563342538543712, 0.0021057972746042755, 0.076198707110715067, 0.00061894762969101136, 0.063930650553133891, 4.213647172333505e-06, 7.1663891633954981e-08, 0.74258105255276208, +0.0071874999999999994, 2.6183628454235404, 0.0, 891.40123549436089, 0.022917125747670148, 0.081019442754105039, 0.030214926142878025, 0.0024071056081636137, 0.07356954201098756, 0.00070703635897879404, 0.069006413844348385, 4.035047563469342e-06, 7.741311819583788e-08, 0.743071420819857, +0.0074999999999999997, 2.6762725161277245, 0.0, 911.72730601349656, 0.022421072701181693, 0.076102300051200569, 0.031827035922474392, 0.0027191212426187967, 0.070836376115460148, 0.00080325067444626862, 0.074183725184440899, 3.8591991416502574e-06, 8.3966297135339021e-08, 0.74352424764392011, +0.0078125, 2.7327552686913714, 0.0, 931.52600252882473, 0.021957495375369309, 0.071287301231790876, 0.033383678607535307, 0.0030376757348484296, 0.068032383926613302, 0.00090629359061143787, 0.079404714293609915, 3.6857418825587989e-06, 9.0997291064694789e-08, 0.74394417587581707, +0.0081250000000000003, 2.7876164844504632, 0.0, 950.73221935681806, 0.021525212177548155, 0.06661441316032006, 0.034869918884392039, 0.00335850123451368, 0.065193285286884964, 0.0010146584979820799, 0.08460977741625475, 3.5148338087558795e-06, 9.8241978416753736e-08, 0.74433583244386525, +0.0084375000000000006, 2.8406813310141192, 0.0, 969.28894072752132, 0.021122971147646184, 0.062120431017950485, 0.036272462954910906, 0.0036774133467448451, 0.062355505782046426, 0.0011267268381345591, 0.089740450097826788, 3.3470427718045023e-06, 1.0547981543987851e-07, 0.74470355743979877, +0.0087500000000000008, 2.8918016943635467, 0.0, 987.14924354758307, 0.020749432765888386, 0.057837581050473354, 0.03758013141703772, 0.0039904831594588571, 0.05955438617239385, 0.0012408734742571665, 0.094742038458227693, 3.1832198368247342e-06, 1.1252975482994125e-07, 0.74505121051855971, +0.0090625000000000011, 2.9408610292528379, 0.0, 1004.2775826887798, 0.020403168747824531, 0.053792459498613596, 0.038784187361240924, 0.0042941848188014593, 0.056822603484637496, 0.0013555663102736864, 0.0995657940905397, 3.0243686492683598e-06, 1.1925124617010982e-07, 0.74538206081599767, +0.0093750000000000014, 2.9877775587957949, 0.0, 1020.6505343894993, 0.020082669429187627, 0.050005370946633022, 0.039878503658834663, 0.0045855085328469509, 0.054188925703018344, 0.0014694488402769855, 0.10417049116985955, 2.8715231397426185e-06, 1.2554526099200631e-07, 0.74569875408012987, +0.0096875000000000017, 3.0325054970392817, 0.0, 1036.2569512770788, 0.019786358587644208, 0.046490080074738462, 0.040859572477136473, 0.0048620328350126247, 0.051677369676042063, 0.0015813974503554537, 0.10852334918541912, 2.7256453091507669e-06, 1.3135306851459976e-07, 0.74600334130291823, +0.01, 3.0750315566902531, 0.0, 1051.0965488510499, 0.019512632372002934, 0.043253943718202889, 0.041726376849532343, 0.0051219531662185219, 0.049306778535967044, 0.0016905478641085201, 0.11260032647645925, 2.5875550686893684e-06, 1.3665238522001511e-07, 0.74629734918205759, +0.010312499999999999, 3.1153715912035342, 0.0, 1065.1786194212898, 0.019259887318811585, 0.040298361481498526, 0.042480152292814564, 0.0053640728936523814, 0.047090782827076648, 0.0017962958315736043, 0.11638586468535231, 2.457884029003318e-06, 1.4145127875443712e-07, 0.7465818706527243, +0.010624999999999999, 3.1535661610000658, 0.0, 1078.5204452147402, 0.019026547586430239, 0.037619461949735082, 0.043124072794654383, 0.0055877625279113687, 0.045038081855554031, 0.0018982775972989912, 0.11987220230106868, 2.3370555238391824e-06, 1.4578097924835231e-07, 0.74685765813727434, +0.010937499999999999, 3.1896754720519875, 0.0, 1091.1455518118175, 0.018811089683773308, 0.035208937244138122, 0.043662895075834769, 0.0057928940605539922, 0.043152965939575086, 0.0019963394297690573, 0.12305838693045748, 2.2252867013058907e-06, 1.4968880532853842e-07, 0.74712520634416479, +0.01125, 3.2237740356061924, 0.0, 1103.0819073190694, 0.018612063913318558, 0.033054945274737721, 0.044102590498471171, 0.0059797575665315001, 0.041435996611101554, 0.0020905107461031656, 0.12594910728840333, 2.1226049145806704e-06, 1.5323184448447619e-07, 0.74738481617789254, +0.011875, 3.2862313700687826, 0.0, 1124.9901656653881, 0.018258234025349696, 0.02948849782353263, 0.044703227434621857, 0.0062991375721213015, 0.038512291611443532, 0.0022670133702359326, 0.13085114050546362, 1.9445008528800142e-06, 1.5937097063573767e-07, 0.7478765878107575, +0.012500000000000001, 3.3423351639342251, 0.0, 1144.7226927489264, 0.017951681741222577, 0.026729193141134224, 0.045001208062884393, 0.0065577036380058381, 0.036143897551265326, 0.00243059575868637, 0.13479859640968939, 1.7968179310857706e-06, 1.6462375836919615e-07, 0.74833684399664502, +0.013125000000000001, 3.3928987573663356, 0.0, 1162.5616362494932, 0.017684094675801634, 0.024640101324886358, 0.045055444299392206, 0.0067637745060931832, 0.034257711995026099, 0.0025829281092658802, 0.13792979660085916, 1.6756133542993464e-06, 1.6922412442449957e-07, 0.74876839832699849, +0.01375, 3.4386779315016489, 0.0, 1178.7669811872656, 0.017448620959333284, 0.02308968914004389, 0.044920887336432958, 0.0069264342641680247, 0.032775001042273037, 0.0027255677580488844, 0.14038665395439545, 1.5766297894796655e-06, 1.7332613307763285e-07, 0.74917401654871518, +0.014999999999999999, 3.5179683179499204, 0.0, 1206.9806571245908, 0.017055288387508954, 0.021256448075453259, 0.044235601995996694, 0.0071468850371314615, 0.030800970109076179, 0.0029844194607239142, 0.14366509510247277, 1.4325163068534116e-06, 1.8029056764442772e-07, 0.74990896741227109, +0.016250000000000001, 3.5865245062770752, 0.0, 1231.4949958625289, 0.016729233654487804, 0.020364766041160998, 0.043273653707260606, 0.0072803500492840505, 0.029554502244486695, 0.0032184645769906309, 0.14573692219337694, 1.3303260707145571e-06, 1.855931597798877e-07, 0.7505698252682097, +0.017500000000000002, 3.6470817146835852, 0.0, 1253.2439167292396, 0.016451424514385568, 0.019992891930179352, 0.042200034468731024, 0.0073579387841038336, 0.028742273703105333, 0.0034319281659618488, 0.14709932583032467, 1.2544111565401741e-06, 1.8923088562898694e-07, 0.75117416347555177, +0.018750000000000003, 3.7014656792253406, 0.0, 1272.8504487730461, 0.01620968667126876, 0.019888352872352116, 0.041108321060242883, 0.0074000570668673769, 0.028180816402699909, 0.0036278337532862355, 0.14805913246050664, 1.1950660051348909e-06, 1.9128199465566127e-07, 0.75173410003604513, +0.02, 3.7508681831008071, 0.0, 1290.7216086522471, 0.015996170285761724, 0.01990859605794253, 0.040046982232860961, 0.0074192187449166041, 0.027761752013130275, 0.0038084246802478849, 0.14879581220131574, 1.1465207820208022e-06, 1.9191597712650636e-07, 0.75225787563282687, +0.022499999999999999, 3.8371046341243318, 0.0, 1322.0540658594352, 0.015636638285038626, 0.020086571398711808, 0.038093983600720201, 0.0074137803281873046, 0.027158234200551131, 0.0041275519804833171, 0.14990992703345288, 1.0707500697365384e-06, 1.8982446612593523e-07, 0.75320869088335762, +0.025000000000000001, 3.9126607262657056, 0.0, 1349.616630419906, 0.015334663404438753, 0.020263415987025982, 0.036358553437039996, 0.0073778559437211134, 0.026669814954673701, 0.0044099429533100577, 0.15085251681162526, 1.0102493789694765e-06, 1.8456800675498718e-07, 0.754066705095218, +0.0275, 3.9798699921230725, 0.0, 1374.2203541754855, 0.015075686211481445, 0.020401566190411589, 0.034814829810490978, 0.0073239960021041668, 0.026245074757437047, 0.0046621833030056469, 0.15170215808742676, 9.6001777214241949e-07, 1.7740579642394732e-07, 0.75484905442555528, +0.029999999999999999, 4.0403346351583664, 0.0, 1396.4242581415149, 0.014850061950215591, 0.020499674887704853, 0.033432207683636563, 0.0072590927270936431, 0.025864106098222605, 0.0048890190843398351, 0.15248695451467259, 9.1729016955381249e-07, 1.6925990692261306e-07, 0.75556785845425345, +0.032500000000000001, 4.0952197174851506, 0.0, 1416.6362754792174, 0.014651027640797747, 0.020564021125965941, 0.032184451104570438, 0.0071872566158756755, 0.02551733132961511, 0.0050940909288789069, 0.15321948580920627, 8.8032092298727264e-07, 1.607555189698746e-07, 0.75623232200944579, +0.035000000000000003, 4.1453972179908938, 0.0, 1435.1627236849351, 0.014473677356059408, 0.020601128255232581, 0.031050638727935811, 0.0071111328731177682, 0.025198940014320964, 0.0052802671201368501, 0.15390717286357883, 8.4791352380630347e-07, 1.5229515617968466e-07, 0.75684971993699734, +0.037500000000000006, 4.1915178029498845, 0.0, 1452.2330731198601, 0.014314411776664182, 0.020616251958259505, 0.030014326587186786, 0.0070324881526902293, 0.024904899119063205, 0.005449778638248119, 0.15455531089871896, 8.1921542528702016e-07, 1.4412731352606559e-07, 0.75742598130309435, +0.040000000000000001, 4.2340320306099066, 0.0, 1468.0073964137496, 0.014170673634264046, 0.020613299253906599, 0.029062580446605719, 0.0069524947381597582, 0.024632441878333328, 0.0056041994688496048, 0.15516796842510949, 7.9362329308690136e-07, 1.3640330646085549e-07, 0.75796608576243596, +0.044999999999999998, 4.3089216521252887, 0.0, 1495.9026515550695, 0.013924375838092497, 0.020563649857257674, 0.027387756871488044, 0.0067933926888303318, 0.02414995992290726, 0.0058705498461862609, 0.156287774286997, 7.5042571335052239e-07, 1.2267776778757432e-07, 0.75894604342285221, +0.050000000000000003, 4.3750941807509536, 0.0, 1520.6376475329173, 0.013713764496718416, 0.020477621683859901, 0.025926020460155179, 0.0066363808981400917, 0.023720395110390018, 0.0060988864655069711, 0.15731259140512416, 7.1409146485880874e-07, 1.1078523876801482e-07, 0.75982727910012005, +0.055, 4.4342436234230016, 0.0, 1542.8162584279219, 0.013530827106284097, 0.020366470120872126, 0.024635216218374494, 0.0064835355236974286, 0.023333651390384583, 0.0062961933544288173, 0.15825755415856893, 6.8294421254629001e-07, 1.0057839748291103e-07, 0.76062659571106361, +0.059999999999999998, 4.4876155903252943, 0.0, 1562.8838197701537, 0.013369897560124772, 0.020237972182920554, 0.023484448424759743, 0.0063359622977639529, 0.022982284639068404, 0.0064678158886718592, 0.15913411822694032, 6.5583444335683776e-07, 9.1833329988287697e-08, 0.7613566506721019, +0.065000000000000002, 4.5361306774595738, 0.0, 1581.1704620393866, 0.013226898707933773, 0.020097590485646712, 0.022450682946838767, 0.0061942148232535929, 0.022660767537570483, 0.0066178474849212417, 0.15995099026327, 6.3195454555719586e-07, 8.4326645353837433e-08, 0.76202719017730824, +0.070000000000000007, 4.5804112909917736, 0.0, 1597.9010200288392, 0.013099025424914876, 0.019949042449894573, 0.021516723074501292, 0.0060585353843220511, 0.022365292713248101, 0.0067491897491822259, 0.16071455592221295, 6.1075040382303663e-07, 7.7868842001791372e-08, 0.76264597208739282, +0.080000000000000002, 4.6567992453810216, 0.0, 1626.8858165215554, 0.012884149147786701, 0.019637938994170902, 0.019915090030006535, 0.005808627857698311, 0.021851635512037126, 0.0069608408261047135, 0.16208208810177713, 5.7540808694991932e-07, 6.7625760857965644e-08, 0.76374313564435747, +0.089999999999999997, 4.7233207468190592, 0.0, 1652.2157979595409, 0.012702688716374378, 0.019318049320703589, 0.018548270668343542, 0.0055783557614419469, 0.0213996675864414, 0.0071289075751994153, 0.16331533684846364, 5.4583750849516618e-07, 5.9651527248329641e-08, 0.76471080675037073, +0.10000000000000001, 4.7819819299602777, 0.0, 1674.6215697189309, 0.01254685919601751, 0.018997042017078636, 0.017365799153394573, 0.005366193978764036, 0.020997142419810329, 0.0072630241529421493, 0.16443693964241266, 5.2063721565741387e-07, 5.3325096642967881e-08, 0.76557328467328545, +0.1125, 4.8458784854496306, 0.0, 1699.1119746502209, 0.012381415249638079, 0.01860186723355195, 0.01609927059790639, 0.0051252769178043436, 0.02055439947034193, 0.0073920673072736184, 0.16569938293900904, 4.9407893461250867e-07, 4.7139486502108286e-08, 0.7665271943156915, +0.125, 4.9022052488803238, 0.0, 1720.7643896677384, 0.012239148206306425, 0.018215685944872755, 0.015006403526670655, 0.0049057684612858034, 0.020160091034817147, 0.0074900123712141661, 0.16684582094017772, 4.7142900041361922e-07, 4.2259966421439018e-08, 0.76737570403199484, +0.13750000000000001, 4.9523981560706662, 0.0, 1740.1070543568392, 0.012115100555452854, 0.017841415762333755, 0.014052691981875228, 0.0047051378880616805, 0.019805319842407774, 0.0075637886644572766, 0.16789436220944229, 4.5184964105958319e-07, 3.8331207106795658e-08, 0.76813679347057373, +0.14999999999999999, 4.9974544249041069, 0.0, 1757.5071206628213, 0.012005870084255474, 0.017481192763256079, 0.013213868203124455, 0.0045214404696485976, 0.01948382184002696, 0.0076184170238093587, 0.16885760531524452, 4.3476849549580546e-07, 3.511681300585219e-08, 0.76882318449958142, +0.17499999999999999, 5.0726832336636356, 0.0, 1786.6802731039468, 0.011827816582201663, 0.016815413910082302, 0.011837683479286123, 0.0042049936914347139, 0.018941149422854797, 0.0076811220091797978, 0.17052525904122715, 4.073063183808745e-07, 3.0337103771966219e-08, 0.76999394080251293, +0.20000000000000001, 5.1366004848099927, 0.0, 1811.5497649859233, 0.01168063370269346, 0.016194385722455525, 0.010706326838152301, 0.0039301086930888952, 0.018473687081320123, 0.0077055120165830365, 0.17199260577816028, 3.8513872682055491e-07, 2.6808518902589303e-08, 0.77099696192299427, +0.22500000000000001, 5.1918074719038056, 0.0, 1833.0898695373933, 0.011556424922486134, 0.015616058883615461, 0.0097590887919536459, 0.003689105993662047, 0.01806489029763177, 0.0077033041984323229, 0.17329863023306225, 3.6696187812312787e-07, 2.4112990286989757e-08, 0.77186853052677407, +0.25, 5.2400810213185327, 0.0, 1851.9658819336969, 0.011449960341297298, 0.015078767842705346, 0.0089556291198200511, 0.0034764176281323477, 0.017703234663337966, 0.0076824968287712162, 0.17447028770649733, 3.5190492478600887e-07, 2.1999676653430092e-08, 0.77263279230613435, +0.30000000000000004, 5.3172671457605416, 0.0, 1882.2667170988411, 0.011283747226391538, 0.014144545432365789, 0.0077108244519090586, 0.0031310597524165785, 0.017117345415255142, 0.0076068881764684328, 0.17641407549097471, 3.2968237170906975e-07, 1.9039052666198784e-08, 0.77387491255918583, +0.35000000000000003, 5.3806028794863625, 0.0, 1907.2064638134216, 0.011150921633234797, 0.013316358026194708, 0.0067377599318177829, 0.0028462563502671657, 0.016629022661358784, 0.0075043580450192071, 0.1780675046956838, 3.1354332232786546e-07, 1.6966783052330648e-08, 0.77489840977955304, +0.40000000000000002, 5.4337231703375526, 0.0, 1928.1472992670092, 0.011041907160946902, 0.012586123827716096, 0.0059635541270449547, 0.0026090634813670664, 0.016213335351612838, 0.0073895949366229166, 0.17949019263664279, 3.0182169511891749e-07, 1.5462351145294684e-08, 0.77574781835494711, +0.48999999999999999, 5.5066746920904013, 0.0, 1956.5947608458366, 0.010895622625269417, 0.011639912749524204, 0.0050389959682391903, 0.0023094200193199545, 0.015627771063243333, 0.0072158307850007661, 0.18140203897289484, 2.89425216273043e-07, 1.3778938235710132e-08, 0.77676572723762327, +0.5, 5.5066747079805243, 0.0, 1956.5947608458366, 0.010895622620261331, 0.011639913231591971, 0.0050389959657814445, 0.002309420018193546, 0.015627771055620965, 0.0072158307814812802, 0.18140203888441686, 2.8942521613187729e-07, 1.3778938228989523e-08, 0.77676572685875966, diff --git a/test_problems/python/frac.cti b/test_problems/python/frac.cti new file mode 100644 index 000000000..321a820fa --- /dev/null +++ b/test_problems/python/frac.cti @@ -0,0 +1,106 @@ +# +# Input file to test use of non-integral stoichiometric +# coefficients. Used with script frac.py. +# + +units(length = "cm", time = "s", quantity = "mol", act_energy = "cal/mol") + + +ideal_gas(name = "gas", + elements = " O H ", + species = """ H2 H O O2 OH H2O """, + reactions = "all", + initial_state = state(temperature = 300.0, + pressure = OneAtm) ) + + + +#------------------------------------------------------------------------------- +# Species data +#------------------------------------------------------------------------------- + +species(name = "H2", + atoms = " H:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.344331120E+00, 7.980520750E-03, + -1.947815100E-05, 2.015720940E-08, -7.376117610E-12, + -9.179351730E+02, 6.830102380E-01] ), + NASA( [ 1000.00, 3500.00], [ 3.337279200E+00, -4.940247310E-05, + 4.994567780E-07, -1.795663940E-10, 2.002553760E-14, + -9.501589220E+02, -3.205023310E+00] ) + ) +) + +species(name = "H", + atoms = " H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 2.500000000E+00, 7.053328190E-13, + -1.995919640E-15, 2.300816320E-18, -9.277323320E-22, + 2.547365990E+04, -4.466828530E-01] ), + NASA( [ 1000.00, 3500.00], [ 2.500000010E+00, -2.308429730E-11, + 1.615619480E-14, -4.735152350E-18, 4.981973570E-22, + 2.547365990E+04, -4.466829140E-01] ) + ) + ) + +species(name = "O", + atoms = " O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.168267100E+00, -3.279318840E-03, + 6.643063960E-06, -6.128066240E-09, 2.112659710E-12, + 2.912225920E+04, 2.051933460E+00] ), + NASA( [ 1000.00, 3500.00], [ 2.569420780E+00, -8.597411370E-05, + 4.194845890E-08, -1.001777990E-11, 1.228336910E-15, + 2.921757910E+04, 4.784338640E+00] ) + ) + ) + +species(name = "O2", + atoms = " O:2 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.782456360E+00, -2.996734160E-03, + 9.847302010E-06, -9.681295090E-09, 3.243728370E-12, + -1.063943560E+03, 3.657675730E+00] ), + NASA( [ 1000.00, 3500.00], [ 3.282537840E+00, 1.483087540E-03, + -7.579666690E-07, 2.094705550E-10, -2.167177940E-14, + -1.088457720E+03, 5.453231290E+00] ) + ) + ) + +species(name = "OH", + atoms = " O:1 H:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 3.992015430E+00, -2.401317520E-03, + 4.617938410E-06, -3.881133330E-09, 1.364114700E-12, + 3.615080560E+03, -1.039254580E-01] ), + NASA( [ 1000.00, 3500.00], [ 3.092887670E+00, 5.484297160E-04, + 1.265052280E-07, -8.794615560E-11, 1.174123760E-14, + 3.858657000E+03, 4.476696100E+00] ) + ) + ) + +species(name = "H2O", + atoms = " H:2 O:1 ", + thermo = ( + NASA( [ 200.00, 1000.00], [ 4.198640560E+00, -2.036434100E-03, + 6.520402110E-06, -5.487970620E-09, 1.771978170E-12, + -3.029372670E+04, -8.490322080E-01] ), + NASA( [ 1000.00, 3500.00], [ 3.033992490E+00, 2.176918040E-03, + -1.640725180E-07, -9.704198700E-11, 1.682009920E-14, + -3.000429710E+04, 4.966770100E+00] ) + ) + ) + + +# An irreversible reaction with fractional product coefficients. +reaction( "H2O => 1.4 H + 0.6 OH + 0.2 O2", [1.0e13, 0.0, 0.0]) + +# A reversible reaction with fractional product coefficients. This is +# not allowed, and uncommenting this reaction will result in an error. +#reaction( "H2O <=> 1.3 H + 0.7 OH + 0.15 O2", [1.0e13, 0.0, 0.0]) + +# A reaction with fractional reactant stoichiometric +# coefficients. This is not allowed, and uncommenting this line will +# result in an error. +#reaction( "1.4 H + 0.6 OH + 0.2 O2 => H2O", [1.0e13, 0.0, 0.0]) + diff --git a/test_problems/python/frac.py b/test_problems/python/frac.py new file mode 100644 index 000000000..0038ff7f1 --- /dev/null +++ b/test_problems/python/frac.py @@ -0,0 +1,27 @@ +# This script is used to test handling of non-integral product +# stoichiometric coefficients. See file frac.cti for more information. + +from Cantera import * +gas = importPhase('frac.cti') +gas.set(T = 2000, P = OneAtm, X = 'H2O:1.0, OH:0.1') +fwd_rop = gas.fwdRatesOfProgress() + +cdot = gas.creationRates() + +nsp = gas.nSpecies() +nr = gas.nReactions() + +# print the reaction equations +for i in range(nr): + print gas.reactionEqn(i) + +# print the creation rates, and check that the creation rates have the +# correct relationship to the reaction rates of progress +for k in range(nsp): + print '%12s %10.4e %10.4e ' % (gas.speciesName(k), + cdot[k], cdot[k]/fwd_rop[0]) + +# print the arrays of reactant and product stoichiometric coefficients +print gas.reactantStoichCoeffs() +print gas.productStoichCoeffs() + diff --git a/test_problems/python/frac_blessed.out b/test_problems/python/frac_blessed.out new file mode 100644 index 000000000..8cda04514 --- /dev/null +++ b/test_problems/python/frac_blessed.out @@ -0,0 +1,23 @@ +adding fractional reaction +n, stoich[n] = 0 1.4 +n, stoich[n] = 1 0.2 +n, stoich[n] = 2 0.6 +H2O => 1.3999999999999999 H + 0.20000000000000001 O2 + 0.59999999999999998 OH + H2 0.0000e+00 0.0000e+00 + H 7.7551e+10 1.4000e+00 + O 0.0000e+00 0.0000e+00 + O2 1.1079e+10 2.0000e-01 + OH 3.3236e+10 6.0000e-01 + H2O 0.0000e+00 0.0000e+00 +[[ 0.] + [ 0.] + [ 0.] + [ 0.] + [ 0.] + [ 1.]] +[[ 0. ] + [ 1.4] + [ 0. ] + [ 0.2] + [ 0.6] + [ 0. ]] diff --git a/test_problems/python/runtest b/test_problems/python/runtest index a83381598..125cdddbc 100755 --- a/test_problems/python/runtest +++ b/test_problems/python/runtest @@ -90,6 +90,21 @@ else temp_success="0" fi +################################################################# +# +################################################################# +$PYTHON_CMD frac.py > frac_test.out +diff -w frac_test.out frac_blessed.out > diff_test.out +retnStat=$? +if [ $retnStat = "0" ] +then + echo "successful diff comparison on frac test" +else + echo "unsuccessful diff comparison on frac test" + echo "FAILED" > csvCode.txt + temp_success="0" +fi + if [ $temp_success = "1" ] then echo 'Python csv test PASSED!' diff --git a/test_problems/silane_equil/Makefile.in b/test_problems/silane_equil/Makefile.in index ab55ce708..69486fc5f 100644 --- a/test_problems/silane_equil/Makefile.in +++ b/test_problems/silane_equil/Makefile.in @@ -19,7 +19,7 @@ OBJS = silane_equil.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = +LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# diff --git a/test_problems/silane_equil/output_blessed.txt b/test_problems/silane_equil/output_blessed.txt index 855ac7e4f..35775dd3c 100644 --- a/test_problems/silane_equil/output_blessed.txt +++ b/test_problems/silane_equil/output_blessed.txt @@ -42,7 +42,7 @@ For species SI2, discontinuity in s/R detected at Tmid = 1000 ------------- ------------ ------------ H2 0.995395 0.878516 -25.5277 H 0.000559189 0.000246765 -12.7639 - HE 0 0 -714.892 + HE 0 0 SIH4 1.05394e-07 1.48198e-06 -50.9842 SI 0.00105469 0.0129687 0.0713036 SIH 1.2607e-05 0.000160581 -12.6926 diff --git a/test_problems/silane_equil/silane_equil.cpp b/test_problems/silane_equil/silane_equil.cpp index 0ae0e7f89..655ce42cc 100644 --- a/test_problems/silane_equil/silane_equil.cpp +++ b/test_problems/silane_equil/silane_equil.cpp @@ -8,7 +8,7 @@ * */ -//#include "Cantera.h" +#include "Cantera.h" #include "IdealGasMix.h" #include "equilibrium.h" diff --git a/test_problems/surfkin/Makefile.in b/test_problems/surfkin/Makefile.in index 7a0d2d110..81405f106 100644 --- a/test_problems/surfkin/Makefile.in +++ b/test_problems/surfkin/Makefile.in @@ -17,7 +17,7 @@ OBJS = surfdemo.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = +LINK_OPTIONS = @EXTRA_LINK@ ############################################################################# diff --git a/tools/doc/Cantera.cfg b/tools/doc/Cantera.cfg index 2cd0e13bd..ea0bfbd5c 100755 --- a/tools/doc/Cantera.cfg +++ b/tools/doc/Cantera.cfg @@ -1,1089 +1,259 @@ -# Doxyfile 1.3.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") +# Doxyfile 1.4.2 #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - PROJECT_NAME = Cantera - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 1.5 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, -# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en -# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, -# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - +PROJECT_NUMBER = 1.6 +OUTPUT_DIRECTORY = /Users/dgg/kernel +CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - REPEAT_BRIEF = YES - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = YES - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. - +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. It is allowed to use relative paths in the argument list. - STRIP_FROM_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - +STRIP_FROM_INC_PATH = SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explict @brief command for a brief description. - JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# reimplements. - +DETAILS_AT_TOP = YES INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - DISTRIBUTE_GROUP_DOC = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - +SEPARATE_MEMBER_PAGES = NO TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - SUBGROUPING = YES - #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO EXTRACT_LOCAL_CLASSES = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are advised to set this option to NO. - +HIDE_IN_BODY_DOCS = YES +INTERNAL_DOCS = YES CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - HIDE_SCOPE_NAMES = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - SORT_MEMBER_DOCS = YES - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - SHOW_USED_FILES = YES - +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - WARN_IF_DOC_ERROR = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - +WARN_NO_PARAMDOC = NO WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - WARN_LOGFILE = - #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ../../Cantera/src - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc - -FILE_PATTERNS = *.h \ - *.cpp \ - *.c \ - *.txt - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - +INPUT = ../../Cantera/src \ + ../../Cantera/cxx/include \ + doxyinput +FILE_PATTERNS = Kinetics.h \ + Kinetics.cpp \ + misc.cpp \ + ct_defs.h \ + logger.h \ + global.h \ + ctexceptions.h \ + *.txt \ + equilibrium.h \ + ThermoPhase.h \ + ThermoPhase.cpp \ + State.h \ + Constituents.h \ + Phase.h \ + utilities.h +RECURSIVE = NO +>>>>>>> 1.8.2.3 EXCLUDE = CVS \ - examples converters - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories -# that are symbolic links (a Unix filesystem feature) are excluded from the input. - + examples \ + converters \ + zeroD EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - EXCLUDE_PATTERNS = *old/* \ *old_src/* \ *stl/* \ *CVS/* \ *examples/* \ *test/* \ - *tests/* - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = examples - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - + *tests/* +EXAMPLE_PATH = examples \ + input EXAMPLE_PATTERNS = *.cpp \ *.h - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - +FILTER_PATTERNS = FILTER_SOURCE_FILES = NO - #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. - SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - REFERENCES_RELATION = YES - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - VERBATIM_HEADERS = YES - #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - IGNORE_PREFIX = Cantera:: - #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = header.html - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet - -HTML_STYLESHEET = ct.css - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - GENERATE_HTMLHELP = YES - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output dir. - CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - +GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 - #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - COMPACT_LATEX = YES - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - PAPER_TYPE = letter - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - +USE_PDFLATEX = YES LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - LATEX_HIDE_INDICES = NO - #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimised for Word 97 and may not look very pretty with -# other RTF readers or editors. - GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assigments. You only have to provide -# replacements, missing definitions are set to their default value. - RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - RTF_EXTENSIONS_FILE = - #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - MAN_LINKS = NO - #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - XML_DTD = - +XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - GENERATE_AUTOGEN_DEF = NO - #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - PERLMOD_MAKEVAR_PREFIX = - #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - EXPAND_AS_DEFINED = YES - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse the -# parser if not removed. - SKIP_FUNCTION_MACROS = YES - #--------------------------------------------------------------------------- -# Configuration::addtions related to external references +# Configuration::additions related to external references #--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - PERL_PATH = /usr/bin/perl - #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. Note that this -# option is superceded by the HAVE_DOT option below. This is only a fallback. It is -# recommended to install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - +CLASS_DIAGRAMS = NO HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - COLLABORATION_GRAPH = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similiar to the OMG's Unified Modeling -# Language. - +GROUP_GRAPHS = YES UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - GRAPHICAL_HIERARCHY = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = gif - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = /Applications/Graphviz.app/Contents/MacOS DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes that -# lay further from the root node will be omitted. Note that setting this option to -# 1 or 2 may greatly reduce the computation time needed for large code bases. Also -# note that a graph may be further truncated if the graph's image dimensions are -# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). -# If 0 is used for the depth value (the default), the graph is not depth-constrained. - MAX_DOT_GRAPH_DEPTH = 0 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - DOT_CLEANUP = YES - #--------------------------------------------------------------------------- -# Configuration::addtions related to the search engine +# Configuration::additions related to the search engine #--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - SEARCHENGINE = NO diff --git a/tools/doc/doxyinput/Cantera.txt b/tools/doc/doxyinput/Cantera.txt new file mode 100644 index 000000000..a135e5fec --- /dev/null +++ b/tools/doc/doxyinput/Cantera.txt @@ -0,0 +1,21 @@ +/** + \mainpage Cantera Reference + + +Choose one of the links below for an introduction to %Cantera, or use + the menu at the top to view detailed documentation of the code. + +- \subpage languages + +- Building and Installing %Cantera + - \subpage cantera-build + - \subpage cantera-winbuild + +- Working with %Cantera in C++ + - \subpage start + - \subpage cxx-ctnew + +- Computing Properties of Matter + - \subpage thermopage + +*/ diff --git a/tools/doc/doxyinput/build.txt b/tools/doc/doxyinput/build.txt new file mode 100644 index 000000000..f580551d7 --- /dev/null +++ b/tools/doc/doxyinput/build.txt @@ -0,0 +1,93 @@ +/** + +\page cantera-build Building Cantera on a Unix, Linux, or Mac OS X Platform + +\section ctbuild-sysreq System Requirements + +Cantera can be built on most unix or unix-like platforms. Before you start, you'll need: + +- \b Python. Most systems already have some version of Python + installed. (Try typing "python" in a shell window.) If you don't + have it, or your version is older than Python 2.0, you can get the + latest version at http://www.python.org. Python is used in the build + process, and to process input files, so it is needed even if you + plan to use Cantera only from C++, MATLAB, or Fortran. + - \b numarray. If you \e do want to use Cantera from Python, or if you + want to run the graphical MixMaster application, you'll also need to + install the numarray package, which may be obtained at + http://sourceforge.net/projects/numpy . In most cases, all that is + required to build numarray is to type "python setup.py install" from + within the directory where you have unpacked the numarray source + code. + + + +- The GNU "make" program. Most systems have this, but on some it might + be called "gmake" instead of "make". + +- A C/C++ compiler. Virtually any reasonably recent compiler +should work. The GNU gcc/g++ compiler, available free for many +platforms, works fine. + +- Optional: + - MATLAB. Only needed to if you plan to use Cantera from MATLAB. + To build the Cantera MATLAB Toolbox, your C/C++ compiler must be + compatible with the one used to compile MATLAB. In most cases this means + you need to use gcc/g++ version 3.x if you have MATLAB 7 (R14) and gcc/g++ 2.95 if you have MATLAB 6 (R13). + - a Fortran 90/95 compiler. Only needed if you plan to use Cantera + from Fortran 90/95. + +- Note: On a Mac, you'll need to download the "XCode Tools" from Apple, +which includes the gcc/g++ compiler and other GNU tools. + + +\section ctbuild-proc Build Procedure + +To build Cantera, follow these steps: + +- Get the source code. Go to http://sourceforge.net/projects/cantera, + and download the latest source distribution, or check the source code out + using anonymous CVS. Using CVS is recommended, since this makes it much +easier to keep current. + +- Unpack it, and go into the top-level directory named "cantera". + +- Edit the file "configure" to set site-specific options. If you are + installing on a linux or Mac OS X platform using the GNU compilers, + you may not need to edit "configure" at all. Most of the options + also may be set by defining a suitable environment variable. This is + useful if you want to always use non-standard options, since you can + define the appropriate environment variables in your login script. + +- Now run "configure" by typing: + \verbatim + ./configure + \endverbatim + or + \verbatim + ./configure --prefix= + \endverbatim + This will generate the Makefiles that will be used to build Cantera. + By default, Cantera will be installed in /usr/local/cantera. If you + want to install it somewhere else, run the configure script with the + 'prefix' option. + For example, to install Cantera in a directory called "cantera" in your + home directory, run the configure script like this: + \verbatim + ./configure --prefix=$HOME/cantera + \endverbatim + +- Type 'make' to compile Cantera. + +- Type 'make install' to install it. You will need write access to the install directory for this step, which may require you to preface the command with "sudo". + +- To test the installation, type "make test". + +- At this point, you should have a functional Cantera installation. To + try it out, go to the "demos" directory within the Cantera + installation directory, and try out some of the Python or MATLAB + demos. + +\see \ref cxx-ctnew + +*/ diff --git a/tools/doc/doxyinput/ctnew.txt b/tools/doc/doxyinput/ctnew.txt new file mode 100644 index 000000000..e08e694c3 --- /dev/null +++ b/tools/doc/doxyinput/ctnew.txt @@ -0,0 +1,29 @@ +/** + +\page cxx-ctnew Compiling and Linking your C++ Program + +\subpage cxx-setup + +\section cxx-demo Building the C++ demo program + +When you installed Cantera, a script named "ctnew" was added to the +bin directory within the Cantera installation directory. This script +generates a demo C++ program and a Makefile to build it that is +already configured correctly for your system. If you have run setup_cantera, then the bin directory should be on your PATH, so you can just type +\verbatim +ctnew +\endverbatim +After ctnew runs, you will find two new files in the current directory: demo.cpp and demo.mak. To build the demo, type +\verbatim +make -f demo.mak +\endverbatim +To run the demo, type: +\verbatim +./demo +\endverbatim + +\section cxx-app Building your application + +To build your own C++ program, simply replace demo.o in the list of object files near the top of demo.mak with the object files for your application. You may want to rename demo.mak to Makefile or some other name. Now you should be able to simply type "make" to build your application! + +*/ diff --git a/tools/doc/doxyinput/cxx-headers.txt b/tools/doc/doxyinput/cxx-headers.txt new file mode 100644 index 000000000..aa46a4715 --- /dev/null +++ b/tools/doc/doxyinput/cxx-headers.txt @@ -0,0 +1,44 @@ +/** +\page cxx-headers C++ Header Files + +Cantera provides some header files designed for +use in C++ application programs. These are designed to include those +portions of the Cantera kernel needed for particular types of +calculations. For example, the header file equilibrium.h includes +header files from the kernel needed to do equilibrium calculations +(specifically, files ChemEquil.h and MultiPhaseEquil.h). + +These headers are designed for use in C++ application programs, and +are not included by the Cantera kernel. The headers and their functions are: + +These are: +- equilibrium.h + - Chemical equilibrium. +- GRI30.h + - Provides class GRI30. +- IdealGasMix.h + - Provides class IdealGasMix. +- Interface.h + - Provides class Interface. +- integrators.h + - ODE Integrators. +- kinetics.h + - Chemical kinetics. +- numerics.h + - Classes for matrices. +- onedim.h + - One-dimensional reacting flows. +- reactionpaths.h + - Reaction path diagrams. +- transport.h + - Transport properties. +- zerodim.h + - Zero-dimensional reactor networks. + +These must be included \e after Cantera.h, for example: +\code +#include +#include +\endcode + +*/ diff --git a/tools/doc/doxyinput/demo.cpp b/tools/doc/doxyinput/demo.cpp new file mode 100644 index 000000000..6434b5ae0 --- /dev/null +++ b/tools/doc/doxyinput/demo.cpp @@ -0,0 +1,99 @@ + +#include +#include // defines class IdealGasMix +#include // chemical equilibrium +#include // transport properties + +void demoprog() { + + IdealGasMix gas("h2o2.cti","ohmech"); + double temp = 1200.0; + double pres = OneAtm; + gas.setState_TPX(temp, pres, "H2:1, O2:1, AR:2"); + + // Thermodynamic properties + + printf("\n\nInitial state:\n\n"); + printf( + "Temperature: %14.5g K\n" + "Pressure: %14.5g Pa\n" + "Density: %14.5g kg/m3\n" + "Molar Enthalpy: %14.5g J/kmol\n" + "Molar Entropy: %14.5g J/kmol-K\n" + "Molar cp: %14.5g J/kmol-K\n", + gas.temperature(), gas.pressure(), gas.density(), + gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); + + // set the gas to the equilibrium state with the same specific + // enthalpy and pressure + equilibrate(gas,"HP"); + + printf("\n\nEquilibrium state:\n\n"); + printf( + "Temperature: %14.5g K\n" + "Pressure: %14.5g Pa\n" + "Density: %14.5g kg/m3\n" + "Molar Enthalpy: %14.5g J/kmol\n" + "Molar Entropy: %14.5g J/kmol-K\n" + "Molar cp: %14.5g J/kmol-K\n", + gas.temperature(), gas.pressure(), gas.density(), + gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); + + + // Reaction information + + int irxns = gas.nReactions(); + double* qf = new double[irxns]; + double* qr = new double[irxns]; + double* q = new double[irxns]; + + // since the gas has been set to an equilibrium state, the forward + // and reverse rates of progress should be equal for all + // reversible reactions, and the net rates should be zero. + gas.getFwdRatesOfProgress(qf); + gas.getRevRatesOfProgress(qr); + gas.getNetRatesOfProgress(q); + + printf("\n\n"); + for (int i = 0; i < irxns; i++) { + printf("%30s %14.5g %14.5g %14.5g kmol/m3/s\n", + gas.reactionString(i).c_str(), qf[i], qr[i], q[i]); + } + + + // transport properties + + Transport* tr = newTransportMgr("Mix", &gas, 1); + + printf("\n\nViscosity: %14.5g Pa-s\n", tr->viscosity()); + printf("Thermal conductivity: %14.5g W/m/K\n", tr->thermalConductivity()); + + int nsp = gas.nSpecies(); + double* diff = new double[nsp]; + tr->getMixDiffCoeffs(diff); + int k; + printf("\n\n%20s %26s\n", "Species","Diffusion Coefficient"); + for (k = 0; k < nsp; k++) { + printf("%20s %14.5g m2/s \n", gas.speciesName(k).c_str(), diff[k]); + } + + // clean up + delete qf; + delete qr; + delete q; + delete diff; + delete tr; +} + + + +int main() { + + try { + demoprog(); + } + catch (CanteraError) { + showErrors(cout); + } +} + diff --git a/tools/doc/doxyinput/demo1.cpp b/tools/doc/doxyinput/demo1.cpp new file mode 100644 index 000000000..ef2f81b9a --- /dev/null +++ b/tools/doc/doxyinput/demo1.cpp @@ -0,0 +1,107 @@ + +#include +#include // defines class IdealGasMix +#include // chemical equilibrium +#include // transport properties + +void demoprog() { + + // construct a gas mixture object from the specification in + // fileh2o2.cti, which defines a reacting hydrogen/oxygen mixture. + IdealGasMix gas("h2o2.cti","ohmech"); + + // set its state by specifying the temperature, pressure, + // and mole fractions + double temp = 1200.0; + double pres = OneAtm; + gas.setState_TPX(temp, pres, "H2:1, O2:1, AR:2"); + + // Print some thermodynamic properties + + printf("\n\nInitial state:\n\n"); + printf( + "Temperature: %14.5g K\n" + "Pressure: %14.5g Pa\n" + "Density: %14.5g kg/m3\n" + "Molar Enthalpy: %14.5g J/kmol\n" + "Molar Entropy: %14.5g J/kmol-K\n" + "Molar cp: %14.5g J/kmol-K\n", + gas.temperature(), gas.pressure(), gas.density(), + gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); + + // set the gas to the equilibrium state with the same specific + // enthalpy and pressure + equilibrate(gas,"HP"); + + // Print them again for the new equilibrium state + + printf("\n\nEquilibrium state:\n\n"); + printf( + "Temperature: %14.5g K\n" + "Pressure: %14.5g Pa\n" + "Density: %14.5g kg/m3\n" + "Molar Enthalpy: %14.5g J/kmol\n" + "Molar Entropy: %14.5g J/kmol-K\n" + "Molar cp: %14.5g J/kmol-K\n", + gas.temperature(), gas.pressure(), gas.density(), + gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); + + + // Reaction information + + int irxns = gas.nReactions(); + double* qf = new double[irxns]; + double* qr = new double[irxns]; + double* q = new double[irxns]; + + // since the gas has been set to an equilibrium state, the forward + // and reverse rates of progress should be equal for all + // reversible reactions, and the net rates should be zero. + // We'll print them to check this. + gas.getFwdRatesOfProgress(qf); + gas.getRevRatesOfProgress(qr); + gas.getNetRatesOfProgress(q); + + printf("\n\n"); + for (int i = 0; i < irxns; i++) { + printf("%30s %14.5g %14.5g %14.5g kmol/m3/s\n", + gas.reactionString(i).c_str(), qf[i], qr[i], q[i]); + } + + + // transport properties + + Transport* tr = newTransportMgr("Mix", &gas, 1); + + printf("\n\nViscosity: %14.5g Pa-s\n", tr->viscosity()); + printf("Thermal conductivity: %14.5g W/m/K\n", tr->thermalConductivity()); + + int nsp = gas.nSpecies(); + double* diff = new double[nsp]; + tr->getMixDiffCoeffs(diff); + int k; + printf("\n\n%20s %26s\n", "Species","Diffusion Coefficient"); + for (k = 0; k < nsp; k++) { + printf("%20s %14.5g m2/s \n", gas.speciesName(k).c_str(), diff[k]); + } + + // clean up + delete qf; + delete qr; + delete q; + delete diff; + delete tr; +} + + + +int main() { + + try { + demoprog(); + } + catch (CanteraError) { + showErrors(cout); + } +} + diff --git a/tools/doc/doxyinput/demo1a.cpp b/tools/doc/doxyinput/demo1a.cpp new file mode 100644 index 000000000..8d7732563 --- /dev/null +++ b/tools/doc/doxyinput/demo1a.cpp @@ -0,0 +1,38 @@ + +// This header must alway be included. +#include + + +// The actual code is put into a function that +// can be called from the main program. +void simple_demo() { + + // Create a new phase + ThermoPhase* gas = newPhase("h2o2.cti","ohmech"); + + // Set its state by specifying T (500 K) P (2 atm) and the mole + // fractions. Note that the mole fractions do not need to sum to + // 1.0 - they will be normalized internally. Also, the values for + // any unspecified species will be set to zero. + gas->setState_TPX(500.0, 2.0*OneAtm, "H2O:1.0, H2:8.0, AR:1.0"); + + // Print a summary report of the state of the gas + cout << report(*gas) << endl; + + // Clean up + delete gas; +} + +// the main program just calls function simple_demo within +// a 'try' block, and catches CanteraError exceptions that +// might be thrown +int main() { + + try { + simple_demo(); + } + catch (CanteraError) { + showErrors(); + } +} + diff --git a/tools/doc/doxyinput/demoequil.cpp b/tools/doc/doxyinput/demoequil.cpp new file mode 100644 index 000000000..6e003b019 --- /dev/null +++ b/tools/doc/doxyinput/demoequil.cpp @@ -0,0 +1,21 @@ + +#include +#include + +void equil_demo() { + ThermoPhase* gas = newPhase("h2o2.cti","ohmech"); + gas->setState_TPX(1500.0, 2.0*OneAtm, "O2:1.0, H2:3.0, AR:1.0"); + equilibrate(*gas, "TP"); + cout << report(*gas) << endl; +} + +int main() { + + try { + equil_demo(); + } + catch (CanteraError) { + showErrors(); + } +} + diff --git a/tools/doc/doxyinput/equildemo.txt b/tools/doc/doxyinput/equildemo.txt new file mode 100644 index 000000000..2c1858fb5 --- /dev/null +++ b/tools/doc/doxyinput/equildemo.txt @@ -0,0 +1,60 @@ +/** +\page cxx-equildemo A C++ Chemical Equilibrium Program + +. In the program below, the \c equilibrate function is called to set the +gas to a state of chemical equilibrium, holding the temperature and +pressure fixed. This function is declared in the equilibrium.h header +file. + +\include demoequil.cpp + +The program output is: +\verbatim + temperature 1500 K + pressure 202650 Pa + density 0.316828 kg/m^3 + mean mol. weight 19.4985 amu + + 1 kg 1 kmol + ----------- ------------ + enthalpy -4.17903e+06 -8.149e+07 J + internal energy -4.81866e+06 -9.396e+07 J + entropy 11283.3 2.2e+05 J/K + Gibbs function -2.1104e+07 -4.115e+08 J + heat capacity c_p 1893.06 3.691e+04 J/K + heat capacity c_v 1466.65 2.86e+04 J/K + + X Y Chem. Pot. / RT + ------------- ------------ ------------ + H2 0.249996 0.0258462 -19.2954 + H 6.22521e-06 3.218e-07 -9.64768 + O 7.66933e-12 6.29302e-12 -26.3767 + O2 7.1586e-12 1.17479e-11 -52.7533 + OH 3.55353e-07 3.09952e-07 -36.0243 + H2O 0.499998 0.461963 -45.672 + HO2 7.30338e-15 1.2363e-14 -62.401 + H2O2 3.95781e-13 6.90429e-13 -72.0487 + AR 0.249999 0.51219 -21.3391 +\endverbatim + +How can we tell that this is really a state of chemical equilibrium? Well, by applying the equation of reaction equilibrium to formation reactions from the elements, it is straightforward to show that +\f[ +\mu_k = \sum_m \lambda_m a_{km}. +\f] +where \f$\mu_k\f$ is the chemical potential of species \a k, \f$a_{km}\f$ is the number of atoms of element \a m in species \a k, and +\f$\lambda_m\f$ is the chemical potential of the elemental species per +atom (the so-called "element potential"). In other words, the chemical +potential of each species in an equilibrium state is a linear sum of +contributions from each atom. We see that this is true in the output +above -- the chemical potential of H2 is exactly twice that of H, the +chemical potential for OH is the sum of the values for H and O, the value for H2O2 is twice as large as the value for OH, and so +on. + +We'll see later how the \c equilibrate function really works. For now, though, the important points are these: + - The \c equilibrate procedure operates on an object, setting its state to a + chemical equilibrium state. + - To use \c equilibrate, you need to include the equilibrium.h header file. + +Return to \ref start + +*/ diff --git a/tools/doc/doxyinput/ex1.cpp b/tools/doc/doxyinput/ex1.cpp new file mode 100644 index 000000000..497b08c11 --- /dev/null +++ b/tools/doc/doxyinput/ex1.cpp @@ -0,0 +1,6 @@ +#include +int main() { + ThermoPhase* gas = newPhase("h2o2.cti","ohmech"); + cout << gas->temperature() << endl; + return 0; +} diff --git a/tools/doc/doxyinput/except.cpp b/tools/doc/doxyinput/except.cpp new file mode 100644 index 000000000..de15cc659 --- /dev/null +++ b/tools/doc/doxyinput/except.cpp @@ -0,0 +1,20 @@ +#include +// +// artifical example of throwing and catching a CanteraError exception. +// +void mycode() { + ThermoPhase* gas = newPhase("h2o2.cti","ohmech"); + if (gas->temperature() < 3000.0) { + throw CanteraError("mycode","test of exception throwing and catching"); + } +} + +int main() { + try { + mycode(); + } + catch (CanteraError) { + showErrors(); + error("program terminating."); + } +} diff --git a/tools/doc/doxyinput/exceptions.txt b/tools/doc/doxyinput/exceptions.txt new file mode 100644 index 000000000..d7e4abf16 --- /dev/null +++ b/tools/doc/doxyinput/exceptions.txt @@ -0,0 +1,29 @@ +/** + +\page cxx-exceptions Exception Handling + +Cantera throws exceptions of type CanteraError when an error is encountered. Your program should always catch these. You can throw CanteraError exceptions too, if you like, or you can use your own application-specific exception classes. + +\include except.cpp + +The function \c showErrors is a convenient way to display the error +message in the \c catch block. The \c error function prints an error +and terminates execution. Note that both of these functions are +environment-specific; i.e. they behave differently if you are running +your Cantera code embedded in a MATLAB application than if you run it +as a stand-alone C++ application. \see textlogs + +The output generated when this program is run is shown below. +\verbatim +************************************************ + Cantera Error! +************************************************ + + +Procedure: mycode +Error: test of exception throwing and catching + + +program terminating. +\endverbatim +*/ diff --git a/tools/doc/doxyinput/introcxx.txt b/tools/doc/doxyinput/introcxx.txt new file mode 100644 index 000000000..e180cfcdb --- /dev/null +++ b/tools/doc/doxyinput/introcxx.txt @@ -0,0 +1,89 @@ +/** + +\page start Getting Started with Cantera in C++ + +\section cxxsimpledemo A Very Simple C++ Program + +A short C++ program that uses %Cantera is shown below. This program +reads in a specification of a gas mixture from an input file, and then +builds a new object representing the mixture. It then sets the +thermodynamic state and composition of the gas mixture, and prints out +a summary of its properties. + +\include demo1a.cpp + +This program produces the output below: +\verbatim + temperature 500 K + pressure 202650 Pa + density 0.361163 kg/m^3 + mean mol. weight 7.40903 amu + + 1 kg 1 kmol + ----------- ------------ + enthalpy -2.47725e+06 -1.835e+07 J + internal energy -3.03836e+06 -2.251e+07 J + entropy 20700.1 1.534e+05 J/K + Gibbs function -1.28273e+07 -9.504e+07 J + heat capacity c_p 3919.29 2.904e+04 J/K + heat capacity c_v 2797.09 2.072e+04 J/K + + X Y Chem. Pot. / RT + ------------- ------------ ------------ + H2 0.8 0.217667 -15.6441 + H 0 0 + O 0 0 + O2 0 0 + OH 0 0 + H2O 0.1 0.243153 -82.9531 + HO2 0 0 + H2O2 0 0 + AR 0.1 0.53918 -20.5027 +\endverbatim + +As C++ programs go, this one is \e very short. It is the %Cantera +equivalent of the "Hello, World" program most programming textbooks +begin with. But it illustrates some important points in writing +%Cantera C++ programs. + +- The Cantera.h header\n +Note that the program begins with +\code +#include +\endcode +All %Cantera application programs must begin by including this header +file. The syntax of the include statement shown here is recommended, +since usually the %Cantera header files are installed within a +subdirectory named "cantera" in a directory on the search path +used by the compiler. If you need to include additional %Cantera headers, +always include Cantera.h first. +\see \ref cxx-headers + +- Catching CanteraError exceptions\n +The entire body of the program is put inside a function that is invoked +within a \c try block in the main program. In this way, exceptions +thrown in the function or in any procedure it calls may be caught. In +this program, a \c catch block is defined for exceptions of type +CanteraError. The %Cantera kernel throws exceptions of this type, so it +is always a good idea to catch them. In the \c catch block, function +\c showErrors() may be called to print the error message associated +with the exception. +\see \ref cxx-exceptions + +- The 'report' function The report function generates a +nicely-formatted report of the properties of a phase, including its +composition in both mole (X) and mass (Y) units. For each species +present, the non-dimensional chemical potential is also printed. This +is handy particularly when doing equilibrium calculations. This +function is very useful to see at a glance the state of some phase. + +\section cxx-examples More Examples +The program above is simple, but doesn't do much. The links listed below show how to build on this demo program to do some useful things. +- \ref cxx-equildemo +- \ref cxx-thermodemo + + +\see \ref cxx-ctnew + + +*/ diff --git a/tools/doc/doxyinput/languages.txt b/tools/doc/doxyinput/languages.txt new file mode 100644 index 000000000..01e97f761 --- /dev/null +++ b/tools/doc/doxyinput/languages.txt @@ -0,0 +1,51 @@ + +/** + +\page languages Language Interfaces + +Although most of Cantera is written in C++, interfaces are provided to +allow users to work with Cantera from several different languages or +environments, including Fortran 90/95, Python, and MATLAB. Which +language should you choose? The basic rule of thumb is this: use +Python or MATLAB if possible; use C++ or Fortran if necessary. + + +- \b Python. Python is a free scripting language that is designed to + be easy to use. If you are familiar with any other programming + language, you can probably learn Python in a couple of hours. It + is also an elegant language, and provides a user-friendly + introduction to the concepts of object-oriented programming. + Python is great for solving problems quickly, and Cantera provides + example Python scripts to do calculations ranging from simple + evaluation of thermodynamic or transport properties, on up to + chemical equilibrium in multiphase mixtures, 1D laminar flames, + reactor networks, and more. If your problem can be solved by + using Cantera from Python, you'll almost certainly solve it faster + with Python than by writing programs in Fortran or C++. \see + http://www.python.org. + +- \b MATLAB. The comments above for Python apply to MATLAB too, except + that Python is free and MATLAB isn't. If you have MATLAB already and + are familiar with it, this is a good choice for an environment from + which to run Cantera. It is probably the most popular Cantera + application environment. \see http://www.mathworks.com. + +- \b Fortran. Cantera provides an interface to Fortran 90/95, and can + even be used from Fortran 77 programs. Use this if you have existing + Fortran code you want to port to Cantera, or if you simply prefer working + in Fortran rather than C++. + +- \b C++. If you find that you need full access to the internals of + Cantera, or want to extend and customize Cantera, then C++ is the + language for you. Most of Cantera is itself written in C++, and so + C++ application programs have more direct access to the Cantera + "kernel" than do programs written in other languages, which access + Cantera through a library of C-like functions. From C++, you can + implement new equations of state, new models for transport + properties, and many other things that simply can't be done through + the other language interfaces. If you are doing substantial code + development with Cantera, rather than simply using it to solve a few + problems, then you will probably want to use it from C++. + \see \ref start \n\ref cxx-ctnew + +*/ diff --git a/tools/doc/doxyinput/thermo.txt b/tools/doc/doxyinput/thermo.txt new file mode 100644 index 000000000..aa7d69617 --- /dev/null +++ b/tools/doc/doxyinput/thermo.txt @@ -0,0 +1,84 @@ +/** + +\page thermopage Thermodynamic Properties + +Cantera can be used to compute thermodynamic properties of pure +substances, solutions, and mixtures of various types, including ones +containing multiple phases. The first step is to create an object that +represents each phase. + +A simple complete program that creates an object representing a gas mixture and prints its temperature is shown below. +\include ex1.cpp + +Class ThermoPhase is the base class for Cantera classes that represent +phases of matter. It defines the public interface for all classes that +represent phases. For example, it specifies that they all have a +method \c temperature() that returns the current temperature, a method +\c setTemperature(double T) that sets the temperature, a method \c +getChemPotentials(double* mu) that writes the species chemical +potentials into array \c mu, and so on. + +Class ThermoPhase can be used to represent the intensive state of any +single-phase solution of multiple species. The phase may be a bulk, +three-dimensional phase (a gas, a liquid, or a solid), or may be a +two-dimensional surface phase, or even a one-dimensional "edge" +phase. The specific attributes of each type of phase are specified by +deriving a class from ThemoPhase and providing implementations for the +virtual methods of ThermoPhase. + +\section The Intensive Thermodynamic State + +Class ThermoPhase and classes derived from it work only with the +intensive thermodynamic state. That is, all extensive properties +(enthalpy, entropy, internal energy, volume, etc.) are computed for a +unit quantity (on a mass or mole basis). For example, there is a +method enthalpy_mole() that returns the molar enthalpy (J/kmol), and a +method enthalpy_mass() that returns the specific enthalpy (J/kg), but +no method enthalpy() that would return the total enthalpy (J). This is +because class ThermoPhase does not store the total amount (mass or +mole) of the phase. + +From thermodynamics, it may be shown that the intensive state of a +single-component phase in equilibrium is fully specified by the values +of any r+1 independent thermodynamic properties, where r is the number +of reversible work modes. If the only reversible work mode is +compression (a "simple compressible substance"), then two properties +suffice to specify the intensive state. + +In principle, any two independent p + +specified, the values of all other intensive properties may be +computed. For example, specifying the pressure and molar entropy + +consisting of a solution of K species +in equilibrium is fully specified by the values of any two independent +thermodynamic properties, in addition to in +Class ThermoPhase stores internally the values of the temperature, the +mass density, and the mass fractions of all species. These values are +sufficient to fix the intensive thermodynamic state of the phase. All +properties for a unit amount (on a mass or mole basis) are determined +once the intensive state is specified. For the extensive properties, class ThermoPhase provides methods that return property values on a molar basis (e.g. enthalpy_mole(), with units J/kmol) or on a mass basis (e.g. enthalpy_mass(), with units J/kg). Since the total mass or total number of moles is not stored, + +Note that the total mass or number of moles is not stored + +Given these values, any other intensive thermodynamic property may + +Note that the total mass or total number of moles is not stored -- therefore the values of all extensive properties (mass, volume, energy) are + +This choice is arbitrary, and for most purposes you can't tell which properties are stored and which are computed. + +The classes that derive from ThermoPhase compute o + +For example, suppose we want to create a class to use to compute the properties of ideal gas mixtures. + +Many of the methods of ThermoPhase are declared virtual, and are meant to be +overloaded in classes derived from ThermoPhase. For example, class IdealGasPhase derives from ThermoPhase, and represents ideal gas mixtures. + +Although class ThermoPhase defines the interface for all classes +representing phases, it only provides implementations for a few of the +methods. This is because ThermoPhase does not actually know the +equation of state of any phase -- this information is provided by +classes that derive from ThermoPhase. +The methods implemented by ThermoPhase are ones that apply to all phases, independent of the equation of state. For example, it implements methods temperature() and setTemperature(), since the temperature value is stored internally. Also, the mass density is stored internally, so + +*/ diff --git a/tools/doc/doxyinput/thermodemo.cpp b/tools/doc/doxyinput/thermodemo.cpp new file mode 100644 index 000000000..cae5cfdc6 --- /dev/null +++ b/tools/doc/doxyinput/thermodemo.cpp @@ -0,0 +1,40 @@ + +#include + +void thermo_demo(string file, string phase) { + ThermoPhase* gas = newPhase(file, phase); + gas->setState_TPX(1500.0, 2.0*OneAtm, "O2:1.0, H2:3.0, AR:1.0"); + + // temperature, pressure, and density + cout << gas->temperature() << endl; + cout << gas->pressure() << endl; + cout << gas->density() << endl; + + // molar thermodynamic properties + cout << gas->enthalpy_mole() << endl; + cout << gas->entropy_mole() << endl; + + // specific (per unit mass) thermodynamic properties + cout << gas->enthalpy_mass() << endl; + cout << gas->entropy_mass() << endl; + + // chemical potentials of the species + int numSpecies = gas->nSpecies(); + vector_fp mu(numSpecies); + gas->getChemPotentials(mu.begin()); + int n; + for (n = 0; n < numSpecies; n++) { + cout << gas->speciesName(n) << " " << mu[n] << endl; + } +} + +int main() { + + try { + thermo_demo("h2o2.cti","ohmech"); + } + catch (CanteraError) { + showErrors(); + } +} + diff --git a/tools/doc/doxyinput/thermodemo.txt b/tools/doc/doxyinput/thermodemo.txt new file mode 100644 index 000000000..aed01bcf5 --- /dev/null +++ b/tools/doc/doxyinput/thermodemo.txt @@ -0,0 +1,29 @@ +/** +\page cxx-thermodemo A C++ Thermodynamics Properties Program + +. In the program below, a gas mixture object is created, and a few thermodynamic properties are computed and printed out. + +\include thermodemo.cpp + +Note that the methods that compute the properties take no input +parameters. The properties are computed for the state that has been +previously set and stored internally within the object. + +\section cxx-thermonaming Naming Conventions +- methods that return molar properties have names that end in \c "_mole". +- methods that return properties per unit mass have names that end in + \c "_mass". +- methods that write an array of values into a supplied output array +have names that begin with "get". For example, method \c +getChemPotentials(double* mu) writes the species chemical potentials +into the output array \a mu. + +The thermodynamic property methods are declared in class ThermoPhase, +which is the base class from which all classes that represent any +type of phase of matter derive. + +\see ThermoPhase + +Return to \ref start + +*/ diff --git a/tools/doc/footer.html b/tools/doc/footer.html index fd594b115..30ddd178a 100755 --- a/tools/doc/footer.html +++ b/tools/doc/footer.html @@ -3,7 +3,7 @@ -
Copyright (c) 2003 California Institute of Technology
+
Copyright (c) 2005 California Institute of Technology
diff --git a/tools/doc/header.html b/tools/doc/header.html index b027ac320..17e4b8b0f 100755 --- a/tools/doc/header.html +++ b/tools/doc/header.html @@ -8,7 +8,7 @@ - +
diff --git a/tools/src/Makefile.in b/tools/src/Makefile.in index 73698f37e..3eadd1913 100755 --- a/tools/src/Makefile.in +++ b/tools/src/Makefile.in @@ -11,7 +11,7 @@ LOCAL_LIBS = -lcantera -ltpx -lctcxx LCXX_END_LIBS = @LCXX_END_LIBS@ -OBJS = ck2cti.o cti2ctml.o +OBJS = ck2cti.o cti2ctml.o fixtext.o DEPENDS = $(OBJS:.o=.d) @@ -19,9 +19,11 @@ CONVLIB_DEP = @buildlib@/libconverters.a CANTERALIB_DEP = @buildlib@/libcantera.a \ @buildlib@/libctcxx.a -exes = $(BINDIR)/cti2ctml +progs = $(BINDIR)/cti2ctml $(BINDIR)/fixtext ifeq ($(build_ck),1) -exes = $(BINDIR)/cti2ctml $(BINDIR)/ck2cti +exes = $(progs) $(BINDIR)/ck2cti +else +exes = $(progs) endif .cpp.o: @@ -39,11 +41,15 @@ $(BINDIR)/cti2ctml: cti2ctml.o $(CANTERALIB_DEP) @CXX@ -o $(BINDIR)/cti2ctml cti2ctml.o $(LCXX_FLAGS) $(LOCAL_LIBS) \ $(LCXX_END_LIBS) +$(BINDIR)/fixtext: fixtext.o + @CXX@ -o $(BINDIR)/fixtext fixtext.o $(LCXX_FLAGS) \ + $(LCXX_END_LIBS) + $(CONVLIB_DEP): cd ../../Cantera/src/converters; @MAKE@ clean: - $(RM) *.o *.*~ + $(RM) *.o *.*~ $(BINDIR)/cti2ctml $(BINDIR)/ck2cti %.d: @CXX@ -MM $(INCDIR) @CXXFLAGS@ $(CXX_FLAGS) $*.cpp > $*.d diff --git a/tools/src/ck2cti.cpp b/tools/src/ck2cti.cpp index e47453ae6..5c42f1991 100644 --- a/tools/src/ck2cti.cpp +++ b/tools/src/ck2cti.cpp @@ -57,48 +57,68 @@ int showHelp() { << " -tr \n" << " -id \n" << " -d print debugging output \n\n" + << " -v validate the input file \n\n" << "The results are written to the standard output.\n"; return 0; } +string getp(int& i, int argc, char** args) { + string a="--"; + if (i < argc-1) { + a = string(args[i+1]); + } + if (a[0] == '-') { + a = ""; + } + else { + i += 1; + } + return a; +} + + int main(int argc, char** argv) { string infile="chem.inp", dbfile="", trfile="", logfile; string idtag = "gas"; bool debug = false; + bool validate = false; int i=1; if (argc == 1) return showHelp(); while (i < argc) { string arg = string(argv[i]); - if (i < argc-1) { - if (arg == "-i") { - infile = argv[i+1]; - ++i; - } - else if (arg == "-t") { - dbfile = argv[i+1]; - ++i; - } - else if (arg == "-tr") { - trfile = argv[i+1]; - ++i; - } - else if (arg == "-id") { - idtag = argv[i+1]; - } + if (arg == "-i") { + infile = getp(i,argc,argv); + } + else if (arg == "-t") { + dbfile = getp(i,argc,argv);; + } + else if (arg == "-tr") { + trfile = getp(i,argc,argv); + } + else if (arg == "-id") { + idtag = getp(i,argc,argv); } else if (arg == "-d") { debug = true; cout << "### DEBUG MODE ###" << endl; } + else if (arg == "-v") { + validate = true; + cout << "### VALIDATION ENABLED ###" << endl; + } else if (arg == "-h" || argc < 3) { return showHelp(); } + else { + cout << "unknown option:" << arg << endl; + exit(-1); + } ++i; } int ierr = pip::convert_ck(infile.c_str(), dbfile.c_str(), trfile.c_str(), - idtag.c_str(), debug); + idtag.c_str(), debug, validate); if (ierr < 0) { showErrors(cerr); diff --git a/tools/src/findtag.py b/tools/src/findtag.py new file mode 100644 index 000000000..258cb348d --- /dev/null +++ b/tools/src/findtag.py @@ -0,0 +1,21 @@ +import sys + +def cvstag(dir): + path = dir+"/CVS/Tag" + try: + f = open(path,'r') + if f: + s = f.readlines() + if s: + return s[0][1:-1] + else: + return "" + else: + return "" + except: + return "" + +if __name__ == "__main__": + dir = sys.argv[1] + print cvstag(dir) + diff --git a/tools/src/finish_install.py.in b/tools/src/finish_install.py.in index de4146ab5..17755d9c9 100644 --- a/tools/src/finish_install.py.in +++ b/tools/src/finish_install.py.in @@ -11,6 +11,8 @@ datadir = '@ct_datadir@' templdir = '@ct_templdir@' ctdir = '@ct_dir@' home = '@homedir@' +isdarwin = '@OS_IS_DARWIN@' +numarray_home = '@NUMARRAY_HOME@' f = open(home+'/setup_cantera','w') f.write('#!/bin/sh\n') @@ -43,17 +45,25 @@ if localinst: """ except: pass - - sys.path.append(ctloc) - f.write('PYTHONPATH='+ctloc+':$PYTHONPATH\nexport PYTHONPATH\n') + + pypath = ctloc + if numarray_home <> '': + pypath += ':'+numarray_home+'/lib/python' + + sys.path.append(pypath) + f.write('PYTHONPATH='+pypath+':$PYTHONPATH\nexport PYTHONPATH\n') except: print 'error' f.close() # write the script to run MixMaster f = open(bindir+'/mixmaster','w') -f.write('#!/bin/sh\n'+pycmd+"""w -c 'from MixMaster import MixMaster; MixMaster()' -""") +if isdarwin == '1': + f.write('#!/bin/sh\n'+pycmd+"""w -c 'from MixMaster import MixMaster; MixMaster()' + """) +else: + f.write('#!/bin/sh\n'+pycmd+""" -c 'from MixMaster import MixMaster; MixMaster()' + """) f.close() @@ -118,7 +128,7 @@ else: Warning: the Cantera Python package is not installed. If you intentionally skipped it, ignore this message. Otherwise, type 'make python' and/or 'make python-install' and look for error messages. - Note that you must first install the 'Numeric' package before installing + Note that you must first install the 'numarray' package before installing the Cantera package. ###################################################################### """ diff --git a/tools/src/fixtext.cpp b/tools/src/fixtext.cpp new file mode 100644 index 000000000..491a28153 --- /dev/null +++ b/tools/src/fixtext.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +using namespace std; + +//////////////////////////////////////////////////////////////////////// +// +// Convert a text file created on any system (unix, Mac, or Windows) +// to the line-ending convention used on this machine. The input is +// read from the standard input, and the output is written to the +// standard output. +// +// > convertfile < input_file.txt > output_file.txt +// +/////////////////////////////////////////////////////////////////////// + +int main() { + char ch; + char last_eol = ' '; + const char char10 = char(10); + const char char13 = char(13); + string line; + while (1 > 0) { + line = ""; + while (1 > 0) { + cin.get(ch); + if (cin.eof()) break; + if (ch == char13 || (ch == char10 + && (last_eol != char13))) { + last_eol = ch; + break; + } + if (isprint(ch)) line += ch; + } + cout << line << endl; + if (cin.eof()) break; + } +} diff --git a/tools/src/package4mac.in b/tools/src/package4mac.in index 6962fc600..6d9e142c7 100644 --- a/tools/src/package4mac.in +++ b/tools/src/package4mac.in @@ -5,12 +5,15 @@ INSTALL='@INSTALL@' PYVERSION=2.3 PKGDIR=$HOME/Packages -CTDIR=$PKGDIR/Cantera/root_dir/Applications/Cantera +ctname=Cantera2 +mixname=MixMaster2 + +CTDIR=$PKGDIR/Cantera/root_dir/Applications/$ctname PYDIR=$PKGDIR/Cantera/root_dir/Library/Python/$PYVERSION RESDIR=$PKGDIR/Cantera/resources_dir -NUMPYDIR=$PKGDIR/Numeric/root_dir/Library/Python/$PYVERSION -NUMRESDIR=$PKGDIR/Numeric/resources_dir +#NUMPYDIR=$PKGDIR/Numeric/root_dir/Library/Python/$PYVERSION +#NUMRESDIR=$PKGDIR/Numeric/resources_dir NUMARRAYPYDIR=$PKGDIR/numarray/root_dir/Library/Python/$PYVERSION NUMARRAYRESDIR=$PKGDIR/numarray/resources_dir @@ -20,32 +23,39 @@ instdir=/Applications/Cantera pylibdir=/Library/Python/$PYVERSION $INSTALL -d $CTDIR -$INSTALL -d $PYDIR/Cantera -$INSTALL -d $PYDIR/MixMaster +$INSTALL -d $PYDIR +$INSTALL -d $PYDIR $INSTALL -d $RESDIR -$INSTALL -d $NUMPYDIR/Numeric -$INSTALL -d $NUMRESDIR - -$INSTALL -d $NUMARRAYPYDIR/Numeric +$INSTALL -d $NUMARRAYPYDIR $INSTALL -d $NUMARRAYRESDIR rm -r -f $CTDIR/* rm -r -f $PYDIR/* rm -r -f $RESDIR/* -rm -r -f $NUMPYDIR/* -rm -r -f $NUMRESDIR/* rm -r -f $NUMARRAYPYDIR/* rm -r -f $NUMARRAYRESDIR/* +$INSTALL -d $PYDIR/$ctname +$INSTALL -d $PYDIR/$mixname +$INSTALL -d $RESDIR + +$INSTALL -d $NUMARRAYPYDIR/numarray +$INSTALL -d $NUMARRAYRESDIR + cp -R -f $instdir/* $CTDIR +rm -r -f $CTDIR/*.xml +rm -r -f $CTDIR/*.csv +cp -R -f $instdir/data/*.xml $CTDIR/data + chmod +x $CTDIR/bin/* rm -r -f $CTDIR/lib cp -R -f $PKGDIR/apps/* $CTDIR -cp -R -f $pylibdir/Cantera/* $PYDIR/Cantera -cp -R -f $pylibdir/MixMaster/* $PYDIR/MixMaster +cp -R -f $pylibdir/Cantera/*.py $PYDIR/$ctname +cp -R -f $pylibdir/Cantera/_cantera.so $PYDIR/$ctname +cp -R -f $pylibdir/MixMaster/*.py $PYDIR/$mixname cp -f $pylibdir/ctml_writer.py $PYDIR cp -f ~/setup_cantera $CTDIR @@ -53,8 +63,6 @@ chmod +x @ctroot@/tools/src/postflight cp -f @ctroot@/tools/src/postflight $RESDIR cp -f @ctroot@/License.rtf $RESDIR -cp -R -f $pylibdir/Numeric/* $NUMPYDIR/Numeric -cp -f $pylibdir/Numeric.pth $NUMPYDIR - -cp -R -f $pylibdir/numarray/* $NUMARRAYPYDIR/numarray +cp -R -f $pylibdir/numarray/*.py $NUMARRAYPYDIR/numarray +cp -R -f $pylibdir/numarray/*.so $NUMARRAYPYDIR/numarray diff --git a/tools/templates/cxx/demo.mak.in b/tools/templates/cxx/demo.mak.in index d58a4714d..be2882225 100644 --- a/tools/templates/cxx/demo.mak.in +++ b/tools/templates/cxx/demo.mak.in @@ -21,7 +21,7 @@ OBJS = demo.o # additional flags to be passed to the linker. If your program # requires other external libraries, put them here -LINK_OPTIONS = @LCXX_FLAGS@ +LINK_OPTIONS = @LCXX_FLAGS@ @EXTRA_LINK@ #--------------------------------------------------------------------------- # You probably don't need to edit anything below. @@ -35,6 +35,9 @@ CXX_FLAGS = @CXXFLAGS@ # external libraries EXT_LIBS = @LOCAL_LIBS@ -lctcxx +# Ending C++ linking libraries +LCXX_END_LIBS = @LCXX_END_LIBS@ + # the directory where the Cantera libraries are located CANTERA_LIBDIR=@ct_libdir@ @@ -55,7 +58,9 @@ DEPENDS = $(OBJS:.o=.d) all: $(PROGRAM) $(PROGRAM): $(OBJS) - $(CXX) -o $(PROGRAM) $(OBJS) $(LCXXFLAGS) $(CANTERA_LIBS) $(LINK_OPTIONS) $(EXT_LIBS) @LIBS@ @FLIBS@ + $(CXX) -o $(PROGRAM) $(OBJS) $(LCXXFLAGS)\ + $(CANTERA_LIBS) $(LINK_OPTIONS) $(EXT_LIBS) \ + @LIBS@ @FLIBS@ $(LCXX_END_LIBS) %.d: g++ -MM -I$(CANTERA_INCDIR) $*.cpp > $*.d diff --git a/winconfig.h b/winconfig.h index 9cc9f7918..e29d4bad5 100644 --- a/winconfig.h +++ b/winconfig.h @@ -83,4 +83,8 @@ typedef int ftnlen; // Fortran hidden string length type //--------------------- compile options ---------------------------- /* #define USE_PCH 1 */ +#define WITH_METAL +#define WITH_STOICH_SUBSTANCE +#define WITH_PURE_FLUIDS + #endif