diff --git a/Cantera/clib/src/ct.cpp b/Cantera/clib/src/ct.cpp index 7b4f38ca4..0ccdc083e 100755 --- a/Cantera/clib/src/ct.cpp +++ b/Cantera/clib/src/ct.cpp @@ -22,6 +22,7 @@ #include "converters/ck2ctml.h" #include "Storage.h" #include "Cabinet.h" +#include "InterfaceKinetics.h" #include "clib_defs.h" @@ -475,10 +476,17 @@ extern "C" { return -10; } + int DLL_EXPORT th_setElectricPotential(int n, double v) { + th(n)->setElectricPotential(v); + return 0; + } + + //-------------- Kinetics ------------------// int DLL_EXPORT newKineticsFromXML(int mxml, int iphase, - int neighbor1, int neighbor2) { + int neighbor1, int neighbor2, int neighbor3, + int neighbor4) { try { XML_Node* x = _xml(mxml); vector phases; @@ -487,6 +495,12 @@ extern "C" { phases.push_back(th(neighbor1)); if (neighbor2 >= 0) { phases.push_back(th(neighbor2)); + if (neighbor3 >= 0) { + phases.push_back(th(neighbor3)); + if (neighbor4 >= 0) { + phases.push_back(th(neighbor4)); + } + } } } Kinetics* kin = newKineticsMgr(*x, phases); @@ -648,6 +662,10 @@ extern "C" { return kin(n)->multiplier(i); } + int DLL_EXPORT kin_phase(int n, int i) { + return thermo_index(kin(n)->thermo(i).id()); + } + int DLL_EXPORT kin_getEquilibriumConstants(int n, int len, double* kc) { try { Kinetics* k = kin(n); @@ -684,6 +702,20 @@ extern "C" { catch (CanteraError) {return -1;} } + int DLL_EXPORT kin_advanceCoverages(int n, double tstep) { + try { + Kinetics* k = kin(n); + if (k->type() == cInterfaceKinetics) { + ((InterfaceKinetics*)k)->advanceCoverages(tstep); + } + else { + throw CanteraError("kin_advanceCoverages", + "wrong kinetics manager type"); + } + return 0; + } + catch (CanteraError) {return -1;} + } //------------------- Transport --------------------------- diff --git a/Cantera/clib/src/ct.h b/Cantera/clib/src/ct.h index aa76f3a92..5cc907e36 100755 --- a/Cantera/clib/src/ct.h +++ b/Cantera/clib/src/ct.h @@ -66,6 +66,7 @@ extern "C" { int DLL_IMPORT th_getEnthalpies_RT(int n, int lenm, double* h_rt); int DLL_IMPORT th_getEntropies_R(int n, int lenm, double* s_r); int DLL_IMPORT th_getCp_R(int n, int lenm, double* cp_r); + int DLL_IMPORT th_setElectricPotential(int n, double v); int DLL_IMPORT get_eos(char* fname, char* phase_id); int DLL_IMPORT th_set_HP(int n, double* vals); @@ -75,7 +76,8 @@ extern "C" { int DLL_IMPORT th_equil(int n, int XY); int DLL_IMPORT newKineticsFromXML(int mxml, int iphase, - int neighbor1=-1, int neighbor2=-1); + int neighbor1=-1, int neighbor2=-1, int neighbor3=-1, + int neighbor4=-1); int DLL_IMPORT installRxnArrays(int pxml, int ikin, char* default_phase); int DLL_IMPORT kin_nSpecies(int n); @@ -99,6 +101,8 @@ extern "C" { int DLL_IMPORT kin_type(int n); int DLL_IMPORT kin_start(int n, int p); int DLL_IMPORT kin_speciesIndex(int n, const char* nm, const char* ph); + int DLL_IMPORT kin_advanceCoverages(int n, double tstep); + int DLL_IMPORT kin_phase(int n, int i); int DLL_IMPORT newTransport(char* model, int th, int loglevel); diff --git a/Cantera/clib/src/ctsurf.cpp b/Cantera/clib/src/ctsurf.cpp index 46e329b3b..4bd3752ca 100755 --- a/Cantera/clib/src/ctsurf.cpp +++ b/Cantera/clib/src/ctsurf.cpp @@ -2,6 +2,7 @@ // Cantera includes #include "SurfPhase.h" #include "InterfaceKinetics.h" +#include "ImplicitSurfChem.h" #include "Cabinet.h" #include "Storage.h" diff --git a/Cantera/clib/src/ctxml.cpp b/Cantera/clib/src/ctxml.cpp index 198e8c92d..cf9a896b6 100644 --- a/Cantera/clib/src/ctxml.cpp +++ b/Cantera/clib/src/ctxml.cpp @@ -93,6 +93,16 @@ extern "C" { return 0; } + int DLL_EXPORT xml_addComment(int i, const char* comment) { + try { + string c = string(comment); + XML_Node& node = *_xml(i); + node.addComment(c); + } + catch (CanteraError) { return -1; } + return 0; + } + int DLL_EXPORT xml_tag(int i, char* tag) { try { XML_Node& node = *_xml(i); diff --git a/Cantera/clib/src/ctxml.h b/Cantera/clib/src/ctxml.h index 4efbe02a9..a6aaf2f97 100644 --- a/Cantera/clib/src/ctxml.h +++ b/Cantera/clib/src/ctxml.h @@ -12,6 +12,7 @@ extern "C" { int DLL_IMPORT xml_build(int i, const char* file); int DLL_IMPORT xml_attrib(int i, const char* key, char* value); int DLL_IMPORT xml_addAttrib(int i, const char* key, const char* value); + int DLL_IMPORT xml_addComment(int i, const char* comment); int DLL_IMPORT xml_value(int i, char* value); int DLL_IMPORT xml_tag(int i, char* tag); int DLL_IMPORT xml_child(int i, const char* loc); diff --git a/Cantera/matlab/cantera/examples/prandtl2.m b/Cantera/matlab/cantera/examples/prandtl2.m index ad51febb8..798a8e937 100755 --- a/Cantera/matlab/cantera/examples/prandtl2.m +++ b/Cantera/matlab/cantera/examples/prandtl2.m @@ -13,10 +13,15 @@ else end pr = zeros(31,31); +xh2 = zeros(31,31); +visc = zeros(31,31); +lambda = zeros(31,31); t = []; xo2 = []; io2 = speciesIndex(gas,'O2'); ih2 = speciesIndex(gas,'H2'); +ih = speciesIndex(gas,'H'); +ih2o = speciesIndex(gas,'H2O'); atm = oneatm; t0 = cputime; @@ -29,9 +34,11 @@ for i = 1:31 x(ih2) = 1.0 - xo2(j); set(gas,'T',t(i),'P',oneatm,'X',x); equilibrate(gas,'TP'); - pr(i,j) = viscosity(gas)*cp_mass(gas)/ ... - thermalConductivity(gas); - + visc(i,j) = viscosity(gas); + lambda(i,j) = thermalConductivity(gas); + pr(i,j) = visc(i,j)*cp_mass(gas)/lambda(i,j); + x = moleFractions(gas); + xh2(i,j) = x(ih2); end end disp(['CPU time = ' num2str(cputime - t0)]); @@ -39,8 +46,27 @@ disp(['CPU time = ' num2str(cputime - t0)]); % plot results figure(1); +subplot(2,2,1); surf(xo2,t,pr); xlabel('Elemental O/(O+H)'); ylabel('Temperature (K)'); zlabel('Prandtl Number'); +subplot(2,2,2); +surf(xo2,t,xh2); +xlabel('Elemental O/(O+H)'); +ylabel('Temperature (K)'); +zlabel('H_2 Mole Fraction'); + +subplot(2,2,3); +surf(xo2,t,visc); +xlabel('Elemental O/(O+H)'); +ylabel('Temperature (K)'); +zlabel('Viscosity'); + +subplot(2,2,4); +surf(xo2,t,lambda); +xlabel('Elemental O/(O+H)'); +ylabel('Temperature (K)'); +zlabel('Thermal Conductivity'); + diff --git a/Cantera/python/Cantera/Interface.py b/Cantera/python/Cantera/Interface.py index d8dab6c85..295c4e6a5 100644 --- a/Cantera/python/Cantera/Interface.py +++ b/Cantera/python/Cantera/Interface.py @@ -22,17 +22,22 @@ class Interface(SurfacePhase, Kinetics): fn = string.split(src,'#') fn = fn[0] + id = "" + if len(fn) > 1: id = fn[1] fname = os.path.basename(fn) ff = os.path.splitext(fname) # get the 'phase' element - s = XML.find_XML(src=src, root=root, name="phase") + if id: + s = XML.find_XML(src=src, root=root, id=id) + else: + s = XML.find_XML(src=src, root=root, name="phase") # get the equation of state model SurfacePhase.__init__(self, xml_phase=s) # get the kinetics model - Kinetics.__init__(self, xml_phase=s, phases=[self]+phases) + Kinetics.__init__(self, xml_phase=s, phases=phases+[self]) def __del__(self): diff --git a/Cantera/python/Cantera/Kinetics.py b/Cantera/python/Cantera/Kinetics.py index 76cc5af26..cce6452a3 100755 --- a/Cantera/python/Cantera/Kinetics.py +++ b/Cantera/python/Cantera/Kinetics.py @@ -1,5 +1,5 @@ -from Cantera.exceptions import CanteraError +from Cantera.exceptions import CanteraError, getCanteraError from Cantera.ThermoPhase import ThermoPhase from Cantera.XML import XML_Node import Numeric @@ -47,23 +47,45 @@ class Kinetics: the specification of the parameters. """ np = len(phases) + self._np = np self._ph = {} + self._sp = [] + for p in phases: + self._ph[p.thermophase()] = p + self._phnum = {} + self._end = [0] p0 = phases[0].thermophase() - self._ph[phases[0]] = 0 - self._end.append(phases[0].nSpecies()) + #self._ph[phases[0]] = phases + #self._end.append(phases[0].nSpecies()) p1 = -1 p2 = -1 + p3 = -1 + p4 = -1 if np >= 2: p1 = phases[1].thermophase() - self._ph[phases[1]] = 1 - self._end.append(self._end[-1] + phases[1].nSpecies()) if np >= 3: p2 = phases[2].thermophase() - self._ph[phases[2]] = 2 - self._end.append(self._end[-1] + phases[2].nSpecies()) + if np >= 4: + p3 = phases[3].thermophase() + if np >= 5: + p4 = phases[4].thermophase() + if np >= 6: + raise CanteraError("only 4 neighbor phases allowed") + #try: self.ckin = _cantera.KineticsFromXML(xml_phase, - p0, p1, p2) + p0, p1, p2, p3, p4) + + for nn in range(self._np): + p = self.phase(nn) + self._phnum[p] = nn + self._end.append(self._end[-1]+p.nSpecies()) + for k in range(p.nSpecies()): + self._sp.append(p.speciesName(k)) + + #except: + # print getCanteraError() + # self.ckin = 0 self.phases = phases @@ -85,6 +107,9 @@ class Kinetics: def kineticsStart(self, n): return _cantera.kin_start(self.ckin, n) + + def phase(self, n): + return self._ph[_cantera.kin_phase(self.ckin, n)] def nReactions(self): """Number of reactions.""" @@ -101,18 +126,41 @@ class Kinetics: """Type of reaction 'i'""" return _cantera.kin_rxntype(self.ckin,i) - def reactionString(self,i): - return _cantera.kin_getstring(self.ckin,1,i) + #def reactionString(self,i): + # return _cantera.kin_getstring(self.ckin,1,i) def reactionEqn(self,i): try: eqs = [] for rxn in i: - eqs.append(_cantera.kin_getstring(self.ckin,1,rxn)) + eqs.append(self.reactionString(rxn)) return eqs except: - return _cantera.kin_getstring(self.ckin,1,i) + return self.reactionString(i) + def reactionString(self, i): + s = '' + nsp = _cantera.kin_nspecies(self.ckin) + for k in range(nsp): + nur = _cantera.kin_rstoichcoeff(self.ckin,k,i) + if nur <> 0.0: + if nur <> 1.0: + s += `int(nur)`+' ' + s += self._sp[k]+' + ' + s = s[:-2] + if self.isReversible(i): + s += ' <=> ' + else: + s += ' => ' + for k in range(nsp): + nup = _cantera.kin_pstoichcoeff(self.ckin,k,i) + if nup <> 0.0: + if nup <> 1.0: + s += `int(nup)`+' ' + s += self._sp[k]+' + ' + s = s[:-2] + return s + def reactantStoichCoeff(self,k,i): return _cantera.kin_rstoichcoeff(self.ckin,k,i) @@ -152,22 +200,38 @@ class Kinetics: def creationRates(self, phase = None): c = _cantera.kin_getarray(self.ckin,50) if phase: - if self._ph.has_key(phase): - n = self._ph[phase] + if self._phnum.has_key(phase): + n = self._phnum[phase] return c[self._end[n]:self._end[n+1]] else: raise CanteraError('unknown phase') else: - return c - + return c - def destructionRates(self): - return _cantera.kin_getarray(self.ckin,60) + def destructionRates(self, phase = None): + d = _cantera.kin_getarray(self.ckin,60) + if phase: + if self._phnum.has_key(phase): + n = self._phnum[phase] + return d[self._end[n]:self._end[n+1]] + else: + raise CanteraError('unknown phase') + else: + return d + - def netProductionRates(self): - return _cantera.kin_getarray(self.ckin,70) - + def netProductionRates(self, phase = None): + w = _cantera.kin_getarray(self.ckin,70) + if phase: + if self._phnum.has_key(phase): + n = self._phnum[phase] + return w[self._end[n]:self._end[n+1]] + else: + raise CanteraError('unknown phase') + else: + return w + def sourceTerms(self): return _cantera.kin_getarray(self.ckin,80) @@ -177,7 +241,8 @@ class Kinetics: def setMultiplier(self,i,v): return _cantera.kin_setMultiplier(self.ckin,i,v) - + def advanceCoverages(self,dt): + return _cantera.kin_advanceCoverages(self.ckin,dt) diff --git a/Cantera/python/Cantera/ThermoPhase.py b/Cantera/python/Cantera/ThermoPhase.py index 614d0079c..c082721b6 100644 --- a/Cantera/python/Cantera/ThermoPhase.py +++ b/Cantera/python/Cantera/ThermoPhase.py @@ -237,6 +237,9 @@ class ThermoPhase(Phase): energy and the pressure.""" _cantera.thermo_setfp(self._phase_id, 5, s, p) + def setElectricPotential(self, v): + _cantera.thermo_setfp(self._phase_id, 6, v, 0); + def equilibrate(self, XY): """Set to a state of chemical equilibrium holding property pair 'XY' constant. The pair is specified by a two-letter string, diff --git a/Cantera/python/Cantera/XML.py b/Cantera/python/Cantera/XML.py index 81efed5d0..20b9772c7 100644 --- a/Cantera/python/Cantera/XML.py +++ b/Cantera/python/Cantera/XML.py @@ -82,6 +82,9 @@ class XML_Node: def addAttrib(self, key, value): _cantera.xml_addAttrib(self._xml_id, key, value) + + def addComment(self, comment): + _cantera.xml_addComment(self._xml_id, comment) def value(self, loc=""): if loc: diff --git a/Cantera/python/Cantera/__init__.py b/Cantera/python/Cantera/__init__.py index 00afd499d..6812ed27e 100755 --- a/Cantera/python/Cantera/__init__.py +++ b/Cantera/python/Cantera/__init__.py @@ -7,6 +7,8 @@ from constants import * from gases import * from exceptions import * from set import set +from importFromFile import * + #from _version import __createdate__ try: diff --git a/Cantera/python/Cantera/ctml_writer.py b/Cantera/python/Cantera/ctml_writer.py new file mode 100644 index 000000000..535d91702 --- /dev/null +++ b/Cantera/python/Cantera/ctml_writer.py @@ -0,0 +1,941 @@ +# +# Cantera input file processor +# + +from Cantera import GasConstant +from Cantera.XML import XML_Node +import types, math + +SPECIES = 10 +SPECIES_SET = 20 +COLLECTION = 30 +THERMO = 40 + +ALL = 10 +SKIP_UNDECLARED_ELEMENTS = 20 +SKIP_UNDECLARED_SPECIES = 30 +STOP = 0 + +# default units +_ulen = 'm' +_umol = 'kmol' +_umass = 'kg' +_utime = 's' +_ue = 'J/kmol' + +# default std state pressure +_pref = 1.0e5 # 1 bar + +_name = 'noname' + +_species = [] +_phases = [] +_reactions = [] +_atw = {} +_mw = {} + +def isnum(a): + if type(a) == types.IntType or type(a) == types.FloatType: + return 1 + else: + return 0 + +def dataset(nm): + global _name + _name = nm + +def standard_pressure(p0): + """Set the default standard-state pressure.""" + global _pref + _pref = p0 + +def get_atomic_wts(): + global _atw + edb = XML_Node('edb', src = 'elements.xml') + edata = edb.child('ctml/elementData') + e = edata.children() + for el in e: + _atw[el['name']] = el['atomicWt'] + if el['atomicWt'] == '': + print 'no wt for ',el['name'] + +def units(length = '', quantity = '', mass = '', time = '', act_energy = ''): + global _ulen, _umol, _ue + if length: _ulen = length + if quantity: _umol = quantity + if act_energy: _ue = act_energy + if time: _utime = time + if mass: _umass = mass + +def ufmt(base, n): + if n == 0: return '' + if n == 1: return '-'+base + if n == -1: return '/'+base + if n > 0: return '-'+base+`n` + if n < 0: return '/'+base+`-n` + +def write(): + x = XML_Node("ctml") + for ph in _phases: + ph.build(x) + s = species_set(name = _name, species = _species) + s.build(x) + + r = x.addChild('reactionData') + r['id'] = 'reaction_data' + for rx in _reactions: + rx.build(r) + + if _name <> 'noname': + x.write(_name+'.xml') + else: + print x + +def addFloat(x, nm, val, fmt=''): + u = '' + s = '' + if isnum(val): + fval = float(val) + if fmt: + s = fmt % fval + else: + s = `fval` + x.addChild(nm, s) + else: + v = val[0] + u = val[1] + if fmt: + s = fmt % v + else: + s = `v` + xc = x.addChild(nm, s) + xc['units'] = u + +def getAtomicComp(atoms): + if type(atoms) == types.DictType: return atoms + a = atoms.replace(',',' ') + toks = a.split() + d = {} + for t in toks: + b = t.split(':') + d[b[0]] = int(b[1]) + return d + +def getEfficiencies(e): + if type(e) == types.DictType: return e + a = atoms.replace(',',' ') + toks = a.split() + d = {} + for t in toks: + b = t.split(':') + d[b[0]] = int(b[1]) + return d + +def getReactionSpecies(s): + toks = s.replace(' + ',' ').split() + d = {} + n = 1 + for t in toks: + if t > '0' and t < '9': + n = int(t) + else: + if d.has_key(t): + d[t] += n + else: + d[t] = n + n = 1 + return d + +class writer: + def write_ctml(self, file = ''): + x = XML_Node("ctml") + self.build(x) + if file: + x.write(file) + else: + print x + +class collection(writer): + def __init__(self, s): + self._s = s + self.type = COLLECTION + def build(self, p): + for s in self._s: + s.build(p) + +class species_set(writer): + def __init__(self, name = '', species = []): + self._s = species + self._name = name + self.type = SPECIES_SET + + def build(self, p): + p.addComment(' species definitions ') + sd = p.addChild("speciesData") + sd.addAttrib("id","species_data") + for s in self._s: + if s.type == SPECIES: + s.build(sd) + else: + raise 'wrong object type in species_set: '+s.__class__ + + +class species(writer): + """A species.""" + + def __init__(self, + name = 'missing name!', + atoms = 'missing atoms!', + comment = '', + thermo = None, + transport = None, + charge = -999): + self._name = name + self._atoms = getAtomicComp(atoms) + mw = 0.0 + for a in self._atoms.keys(): + mw += self._atoms[a]*float(_atw[a]) + self._mw = mw + global _mw + _mw[name] = mw + self._comment = comment + self._thermo = thermo + self._transport = transport + chrg = 0 + self._charge = charge + if self._atoms.has_key('E'): + chrg = -self._atoms['E'] + if self._charge <> -999: + if self._charge <> chrg: + raise 'specified charge inconsistent with number of electrons' + else: + self._charge = chrg + self.type = SPECIES + + global _species + _species.append(self) + + + def build(self, p): + #phname = '' + #for ph in _phases: + # if ph.has_species(self._name): + # phname = ph._name + hdr = ' species '+self._name+' ' + p.addComment(hdr) + s = p.addChild("species") + s.addAttrib("name",self._name) + a = '' + for e in self._atoms.keys(): + a += e+':'+`self._atoms[e]`+' ' + s.addChild("atomArray",a) + if self._comment: + s.addChild("note",self._comment) + if self._charge <> -999: + s.addChild("charge",self._charge) + if self._thermo: + t = s.addChild("thermo") + if type(self._thermo) == types.InstanceType: + self._thermo.build(t) + else: + nt = len(self._thermo) + for n in range(nt): + self._thermo[n].build(t) + if self._transport: + t = s.addChild("transport") + if type(self._transport) == types.InstanceType: + self._transport.build(t) + else: + nt = len(self._transport) + for n in range(nt): + self._transport[n].build(t) + +class thermo(writer): + """Base class for species standard-state thermodynamic properties.""" + def _build(self, p): + return p.addChild("thermo") + + +class NASA(thermo): + """NASA polynomial parameterization.""" + + def __init__(self, range = (0.0, 0.0), + coeffs = [], p0 = -1.0): + self._t = range + self._pref = p0 + if len(coeffs) <> 7: + raise 'NASA coefficient list must have length = 7' + self._coeffs = coeffs + + + def build(self, t): + n = t.addChild("NASA") + n['Tmin'] = `self._t[0]` + #n['Tmid'] = `self._t[1]` + n['Tmax'] = `self._t[1]` + if self._pref <= 0.0: + n['P0'] = `_pref` + else: + n['P0'] = `self._pref` + str = '' + for i in range(7): + str += '%17.9E, ' % self._coeffs[i] + if i > 0 and 3*((i+1)/3) == i: str += '\n' + str = str[:-2] + u = n.addChild("floatArray", str) + u["size"] = "7" + u["name"] = "coeffs" + + +class const_cp(thermo): + """Constant specific heat.""" + + def __init__(self, tmax = -1.0, tmin = -1.0, + t0 = 0.0, cp0 = 0.0, h0 = 0.0, s0 = 0.0): + self._t = [tmin, tmax] + self._c = [t0, h0, s0, cp0] + + def build(self, t): + #t = self._build(p) + c = t.addChild('const_cp') + if self._t[0] >= 0.0: c['Tmin'] = self._t[0] + if self._t[1] >= 0.0: c['Tmax'] = self._t[1] + addFloat(c,'t0',self._c[0]) + addFloat(c,'h0',self._c[1]) + addFloat(c,'s0',self._c[2]) + addFloat(c,'cp0',self._c[3]) + + +class gas_transport: + """Transport coefficients for ideal gas transport model.""" + + def __init__(self, geom = 'nonlin', + diam = 0.0, well_depth = 0.0, dipole = 0.0, + polar = 0.0, rot_relax = 0.0): + self._geom = geom + self._diam = diam + self._well_depth = well_depth + self._dipole = dipole + self._polar = polar + self._rot_relax = rot_relax + + def build(self, t): + #t = s.addChild("transport") + t['model'] = 'gas_transport' + # t.addChild("geometry", self._geom) + tg = t.addChild('string',self._geom) + tg['title'] = 'geometry' + addFloat(t, "LJ_welldepth", (self._well_depth, 'K'), '%8.3f') + addFloat(t, "LJ_diameter", (self._diam, 'A'),'%8.3f') + addFloat(t, "dipoleMoment", (self._dipole, 'Debye'),'%8.3f') + addFloat(t, "polarizability", (self._polar, 'A3'),'%8.3f') + addFloat(t, "rotRelax", self._rot_relax,'%8.3f') + +class Arrhenius(writer): + def __init__(self, + A = 0.0, + n = 0.0, + E = 0.0): + self._c = [A, n, E] + + def build(self, p, units = '', name = ''): + a = p.addChild('Arrhenius') + if name: a['name'] = name + if isnum(self._c[0]): + addFloat(a,'A', (self._c[0], units), fmt = '%14.6E') + else: + addFloat(a,'A',self._c[0], fmt = '%14.6E') + a.addChild('b',`self._c[1]`) + if isnum(self._c[2]): + addFloat(a,'E',(self._c[2],_ue), fmt = '%f') + else: + addFloat(a,'E',self._c[2], fmt = '%f') + + +class sticking_prob(writer): + def __init__(self, + A = 0.0, + n = 0.0, + E = 0.0, + species = ''): + self._c = [A, n, E] + self._sp = species + + def build(self, p): + ig = ideal_gas() + for ph in _phases: + if ph.has_species(self._sp): + if ph._eos.__class__ == ig.__class__: + pass + else: + raise ('sticking probabilities only implemented for ' + +'species in ideal gas mixtures') + + a = p.addChild('Stick') + addFloat(a,'A',self._c[0],fmt = '%14.6E') + a.addChild('n',`self._c[1]`) + if type(self._c[2]) == types.FloatType: + addFloat(a,'E',(self._c[2],_ue)) + else: + addFloat(a,'E',self._c[2]) + + +class reaction(writer): + def __init__(self, + equation = '', + rate_coeff = None, + k_0 = None, + k_inf = None, + efficiencies = '', + falloff = None, + id = '' + ): + + self._id = id + self._e = equation + self._falloff = falloff + global _reactions + self._num = len(_reactions)+1 + r = '' + p = '' + for e in ['<=>', '=>', '=']: + if self._e.find(e) >= 0: + r, p = self._e.split(e) + if e in ['<=>','=']: self.rev = 1 + else: self.rev = 0 + break + self._r = getReactionSpecies(r) + self._p = getReactionSpecies(p) + self._kf = rate_coeff + self._kf0 = k_0 + self._kfinf = k_inf + self._type = '' + self._effm = -1.0 + self._eff = efficiencies + _reactions.append(self) + + + def build(self, p): + if self._id: + id = self._id + else: + id = 'reaction_'+`self._num` + p.addComment(" reaction "+id+" ") + r = p.addChild('reaction') + r['id'] = id + if self.rev: + r['reversible'] = 'yes' + else: + r['reversible'] = 'no' + + ee = self._e.replace('<','[') + ee = ee.replace('>',']') + r.addChild('equation',ee) + + mdim = 0 + ldim = 0 + str = '' + + if self._r.has_key('(+'): + self._type = 'falloff' + if not self._falloff: + self._falloff = Lindemann() + if self._r.has_key('M)'): + self._effm = 1.0 + del self._r['M)'] + del self._p['M)'] + else: + for f in self._r.keys(): + if f[-1] == ')' and f.find('(') < 0: + self._effm = 0.0 + self._eff = f[:-1]+':1.0' + del self._r[f] + del self._p[f] + + del self._r['(+'] + del self._p['(+'] + + for s in self._r.keys(): + ns = self._r[s] + nm = -999 + nl = -999 + if s == 'M' or s == 'm': + self._type = 'threeBody' + mdim += 1 + ldim -= 3 + self._effm = 1.0 + else: + str += s+':'+`ns`+' ' + + for ph in _phases: + if ph.has_species(s): + nm, nl = ph.conc_dim() + break + if nm < 0: + print self._r + raise 'undeclared species '+s + else: + mdim += nm*ns + ldim += nl*ns + + # adjust the moles and length powers based on the dimensions of + # the rate of progress (moles/length^2 or moles/length^3) + if self._type == 'surface': + mdim += -1 + ldim += 2 + else: + mdim += -1 + ldim += 3 + + if self._type == 'falloff': + self._kf = (self._kfinf, self._kf0) + else: + self._kf = (self._kf,) + + # add the reaction type as an attribute if it has been specified. + if self._type: + r['type'] = self._type + + # The default rate coefficient type is Arrhenius. If the rate + # coefficient has been specified as a sequence of three + # numbers, then create a new Arrhenius instance for it; + # otherwise, just use the supplied instance. + nm = '' + kfnode = r.addChild('rateCoeff') + + for kf in self._kf: + + # compute the pre-exponential units string, and if it begins with a + # dash, remove it. + ku = ufmt(_ulen,-ldim) + ufmt(_umol,-mdim) + ufmt('s',-1) + if ku[0] == '-': ku = ku[1:] + mdim += 1 + ldim -= 3 + + if type(kf) == types.InstanceType: + k = kf + else: + k = Arrhenius(A = kf[0], n = kf[1], E = kf[2]) + k.build(kfnode, units = ku, name = nm) + nm = 'k0' + + if self._eff and self._effm >= 0.0: + eff = kfnode.addChild('efficiencies',self._eff) + eff['default'] = `self._effm` + + str = str[:-1] + r.addChild('reactants',str) + str = '' + for s in self._p.keys(): + ns = self._p[s] + if s == 'M' or s == 'm': + pass + else: + str += s+':'+`ns`+' ' + str = str[:-1] + r.addChild('products',str) + + if self._falloff: + self._falloff.build(kfnode) + + + +#------------------- + + +class falloff_reaction(writer): + def __init__(self, + equation = '', + k_0 = None, + k_inf = None, + efficiencies = '', + falloff = None, + id = '' + ): + + if self._falloff: + self._falloff = falloff + else: + self._falloff = Lindemann() + self._num = len(_reactions)+1 + self._type = 'falloff' + self._effm = 1.0 + self._eff = efficiencies + kf = (kfinf, kf0) + reaction.__init__(self, equation, kf, id) + + + + def build(self, p): + r = reaction.build(self, p) + if self._r.has_key('M)'): + self._effm = 1.0 + del self._r['M)'] + del self._p['M)'] + else: + for f in self._r.keys(): + if f[-1] == ')' and f.find('(') < 0: + self._effm = 0.0 + self._eff = f[:-1]+':1.0' + del self._r[f] + del self._p[f] + + del self._r['(+'] + del self._p['(+'] + + + r['type'] = 'falloff' + + # The default rate coefficient type is Arrhenius. If the rate + # coefficient has been specified as a sequence of three + # numbers, then create a new Arrhenius instance for it; + # otherwise, just use the supplied instance. + nm = '' + kfnode = r.addChild('rateCoeff') + + if self._eff and self._effm >= 0.0: + eff = kfnode.addChild('efficiencies',self._eff) + eff['default'] = `self._effm` + + if self._falloff: + self._falloff.build(kfnode) + + +#-------------- + + +class state: + def __init__(self, + temperature = None, + pressure = None, + moleFractions = None, + massFractions = None, + density = None, + coverages = None): + self._t = temperature + self._p = pressure + self._rho = density + self._x = moleFractions + self._y = massFractions + self._c = coverages + + def build(self, ph): + st = ph.addChild('state') + if self._t: addFloat(st, 'temperature', self._t) + if self._p: addFloat(st, 'pressure', self._p) + if self._rho: addFloat(st, 'density', self._rho) + if self._x: st.addChild('moleFractions', self._x) + if self._y: st.addChild('massFractions', self._y) + if self._c: st.addChild('moleFractions', self._c) + + +class phase(writer): + """Base class for phases of matter.""" + + def __init__(self, + name = '', + dim = 3, + elements = '', + species = '', + reactions = 'none', + initial_state = None): + + self._name = name + self._dim = dim + self._el = elements + self._sp = [] + self._rx = [] + + #-------------------------------- + # process species + #-------------------------------- + + # if a single string is entered, make it a list + if type(species) == types.StringType: + self._species = [species] + else: + self._species = species + + self._skip = 0 + + # dictionary of species names + self._spmap = {} + + # for each species string, check whether or not the species + # are imported or defined locally. If imported, the string + # contains a colon (:) + for sp in self._species: + if sp.find(':') > 0: + datasrc, spnames = sp.split(':') + self._sp.append((datasrc+'.xml', spnames)) + else: + spnames = sp + self._sp.append(('', spnames)) + + # strip the commas, and make the list of species names + sptoks = spnames.replace(',',' ').split() + for s in sptoks: + if self._spmap.has_key(s): + raise 'multiply-defined species '+s+' in phase '+self._name + self._spmap[s] = self._dim + + self._rxns = reactions + + # check that species have been declared + if len(self._spmap) == 0: + raise 'No species declared for phase '+self._name + + # and that only one species is declared if it is a pure phase + if self.is_pure() and len(self._spmap) > 1: + raise 'Pure phases may only declare one species, but phase '+self._name+' declares '+`len(self._spmap)`+'.' + + self._initial = initial_state + + # add this phase to the global phase list + global _phases + _phases.append(self) + + + def is_pure(self): + return 0 + + def has_species(self, s): + """Return 1 is a species with name 's' belongs to the phase, + or 0 otherwise.""" + if self._spmap.has_key(s): return 1 + return 0 + + def conc_dim(self): + """Concentration dimensions. Used in computing the units for reaction + rate coefficients.""" + return (1, -self._dim) + + + def buildrxns(self, p): + + if type(self._rxns) == types.StringType: + self._rxns = [self._rxns] + + # for each reaction string, check whether or not the reactions + # are imported or defined locally. If imported, the string + # contains a colon (:) + for r in self._rxns: + + if r.find(':') > 0: + datasrc, rnum = r.split(':') + self._rx.append((datasrc+'.xml', rnum)) + else: + rnum = r + self._rx.append(('', rnum)) + + for r in self._rx: + datasrc = r[0] + ra = p.addChild('reactionArray') + ra['datasrc'] = datasrc+'#reaction_data' + rtoks = r[1].split() + if rtoks[0] <> 'all': + i = ra.addChild('include') + i['prefix'] = 'reaction_' + i['min'] = rtoks[0] + if len(rtoks) > 2 and (rtoks[1] == 'to' or rtoks[1] == '-'): + i['max'] = rtoks[2] + else: + i['max'] = rtoks[0] + + + def build(self, p): + p.addComment(' phase '+self._name+' ') + ph = p.addChild('phase') + ph['id'] = self._name + ph['dim'] = `self._dim` + e = ph.addChild('elementArray',self._el) + e['datasrc'] = 'elements.xml' + for s in self._sp: + datasrc, names = s + sa = ph.addChild('speciesArray',names) + sa['datasrc'] = datasrc+'#species_data' + + if self._skip: + sk = sa.addChild('skip') + sk['element'] = 'undeclared' + + if self._rxns <> 'none': + self.buildrxns(ph) + + #self._eos.build(ph) + if self._initial: + self._initial.build(ph) + return ph + + +class ideal_gas(phase): + """An ideal gas mixture.""" + def __init__(self, + name = '', + elements = '', + species = '', + reactions = 'none', + kinetics = 'GasKinetics', + transport = 'Mix', + initial_state = None): + + phase.__init__(self, name, 3, elements, species, reactions, + initial_state) + self._pure = 0 + self._kin = kinetics + self._tr = transport + + + def build(self, p): + ph = phase.build(self, p) + e = ph.addChild("thermo") + e['model'] = 'IdealGas' + k = ph.addChild("kinetics") + k['model'] = self._kin + t = ph.addChild('transport') + t['model'] = self._tr + + + + +#------------------ equations of state -------------------------- + +class eos(writer): + def is_pure(self): + return self._pure + +class incompressible_eos(eos): + def __init__(self, density = -1.0): + self._dens = density + self._pure = 0 + if self._dens < 0.0: + raise 'density must be specified.' + + def build(self, p): + e = p.addChild("thermo") + e['model'] = 'Incompressible' + addFloat(e, 'density', self._dens) + + def conc_dim(self): + return (1, -3) + +class solid_compound_eos(eos): + def __init__(self, density = -1.0): + self._dens = density + self._pure = 1 + if self._dens < 0.0: + raise 'density must be specified.' + + def build(self, p): + e = p.addChild("thermo") + e['model'] = 'SolidCompound' + addFloat(e, 'density', self._dens) + if len(self.parent._spmap) > 1: + raise 'A solid compound can only have one species.' + + def conc_dim(self): + return (0, 0) + + +class ideal_gas_eos(eos): + def __init__(self, kinetics = 'GasKinetics', + transport = 'none'): + self._pure = 0 + self._kin = kinetics + self._tr = transport + global _idealgas_class + _idealgas_class = self.__class__ + + def build(self, p): + e = p.addChild("thermo") + e['model'] = 'IdealGas' + k = p.addChild("kinetics") + k['model'] = self._kin + t = p.addChild('transport') + t['model'] = self._tr + + def conc_dim(self): + return (1, -3) + + +class surface(eos): + def __init__(self, site_density = 0.0): + self._pure = 0 + self._s0 = site_density + def build(self, p): + e = p.addChild("thermo") + e['model'] = 'Surface' + addFloat(e, 'site_density', self._s0, '%14.6E') + + def conc_dim(self): + return (1, -2) + +#------------------------------------------------------------------- + +# falloff parameterizations + +class Troe: + + def __init__(self, A = 0.0, T3 = 0.0, T1 = 0.0, T2 = -999.9): + if T2 <> -999.9: + self._c = (A, T3, T1, T2) + else: + self._c = (A, T3, T1) + + def build(self, p): + s = '' + for num in self._c: + s += '%g ' % num + f = p.addChild('falloff', s) + f['type'] = 'Troe' + + +class SRI: + def __init__(self, A = 0.0, B = 0.0, C = 0.0, D = -999.9, E=-999.9): + if D <> -999.9 and E <> -999.9: + self._c = (A, B, C, D, E) + else: + self._c = (A, B, C) + + def build(self, p): + s = '' + for num in self._c: + s += '%g ' % num + f = p.addChild('falloff', s) + f['type'] = 'SRI' + +class Lindemann: + def __init__(self): + pass + def build(self, p): + f = p.addChild('falloff') + f['type'] = 'Lindemann' + +#-------------------------------------------------------------------- + +## class gas_transport: +## def __init__(self, geom = 'nonlin', +## welldepth = 0.0, +## diam = 0.0, +## dipole = 0.0, +## polar = 0.0, +## rot_relax = 0.0): +## self._sp = species +## self._geom = geom +## self._params = (welldepth, diam, dipole, polar, rotrelax) + +## #global _trdata +## #_trdata[species] = self + +## def build(self, s): +## tr = s.addChild('transport') +## g = tr.addChild('string','linear') +## g['title'] = 'geometry' +## tr.addChild('LJ_welldepth',`self._params[0]`) +## tr.addChild('LJ_diameter',`self._params[1]`) +## tr.addChild('dipoleMoment',`self._params[2]`) +## tr.addChild('polarizability',`self._params[3]`) +## tr.addChild('rotRelax',`self._params[4]`) + + +get_atomic_wts() diff --git a/Cantera/python/Cantera/gases.py b/Cantera/python/Cantera/gases.py index de2fa71a1..67f4c18ed 100755 --- a/Cantera/python/Cantera/gases.py +++ b/Cantera/python/Cantera/gases.py @@ -34,13 +34,17 @@ def IdealGasMix(src="", root=None, transport='None', else: nm = ff ext = '' - if ext <> '.xml' and ext <> '.XML' and ext <> '.ctml' and ext <> '.CTML': - outfile = p+os.sep+nm+'.xml' - ck2ctml(infile = src, outfile = outfile, thermo = thermo, - transport = trandb, id = nm) - return Solution(src=outfile, root=None, transport=transport) - else: - return Solution(src=src, root=root, transport=transport) +## if ext <> '.xml' and ext <> '.XML' and ext <> '.ctml' and ext <> '.CTML': +## outfile = p+os.sep+nm+'.xml' +## if ext == '.py': +## from Cantera import pip +## pip.process(fname) +## else: +## ck2ctml(infile = src, outfile = outfile, thermo = thermo, +## transport = trandb, id = nm) +## return Solution(src=outfile, root=None, transport=transport) +## else: + return Solution(src=src, root=root, transport=transport) def GRI30(transport='None'): """Return a Solution instance implementing reaction mechanism diff --git a/Cantera/python/Cantera/importFromFile.py b/Cantera/python/Cantera/importFromFile.py index 5bfda3c4f..84f14cf8f 100755 --- a/Cantera/python/Cantera/importFromFile.py +++ b/Cantera/python/Cantera/importFromFile.py @@ -1,8 +1,9 @@ +import solution -import _cantera -from Thermo import Thermo -from Kinetics import Kinetics - -def importFromFile(t, k, params): - return _cantera.importFromFile(t.cthermo, k.ckin, params['import_file'],'',1) +def importPhase(file = '', name = ''): + if name: + src = file+'#'+name + else: + src = file + return solution.Solution(src) diff --git a/Cantera/python/Cantera/pip.py b/Cantera/python/Cantera/pip.py new file mode 100644 index 000000000..7628ed37f --- /dev/null +++ b/Cantera/python/Cantera/pip.py @@ -0,0 +1,29 @@ +import sys, os +from tempfile import mktemp + +def process(name): + parts = name.split('.') + base = parts[0] + if len(parts) == 2: + ext = parts[1] + fname = mktemp('.py') + fo = open(fname,'w') + txt = """from Cantera.ctml_writer import * +import sys, os +f = sys.argv[1] +b = sys.argv[2] +try: + os.remove(b+'.xml') +except: + pass +execfile(f) +write() +""" + fo.write(txt) + fo.close() + cmd = sys.executable+' '+fname+' '+name+' '+base + os.system(cmd) + os.remove(fname) + + + diff --git a/Cantera/python/Cantera/solution.py b/Cantera/python/Cantera/solution.py index 9bf059619..365e0e5c9 100755 --- a/Cantera/python/Cantera/solution.py +++ b/Cantera/python/Cantera/solution.py @@ -1,7 +1,7 @@ """ """ -import string +#import string import os from constants import * @@ -29,30 +29,41 @@ class Solution(ThermoPhase, Kinetics, Transport): """ def __init__(self, src="", root=None, - transport = "None", thermo_db = "", - transport_db = ""): + transport = "", thermo_db = "", + transport_db = "", phases=[]): self.ckin = 0 self._owner = 0 self.verbose = 1 - - fn = string.split(src,'#') + fn = src.split('#') + id = "" + if len(fn) > 1: id = fn[1] fn = fn[0] + fname = os.path.basename(fn) ff = os.path.splitext(fname) if ff[1] <> '.xml' and ff[1] <> '.ctml': - ctmodule.ck2ctml(src, thermo_db, transport_db, ff[0]+'.xml', - ff[0]) + #if ff[1] == '.py' or ff[1] == '.in': + from Cantera import pip + pip.process(fname) + #else: + # ctmodule.ck2ctml(src, thermo_db, transport_db, ff[0]+'.xml', + # ff[0]) src = ff[0]+'.xml' # get the 'phase' element - s = XML.find_XML(src=src, root=root, name="phase") + + if id: + s = XML.find_XML(src=src, root=root, id=id) + else: + s = XML.find_XML(src=src, root=root, name="phase") # get the equation of state model ThermoPhase.__init__(self, xml_phase=s) # get the kinetics model - Kinetics.__init__(self, xml_phase=s, phases=[self]) + ph = [self]+list(phases) + Kinetics.__init__(self, xml_phase=s, phases=ph) Transport.__init__(self, xml_phase=s, phase=self, model = transport, loglevel=4) diff --git a/Cantera/python/examples/flame2.py b/Cantera/python/examples/flame2.py index ec962cbcb..3702bcf4e 100755 --- a/Cantera/python/examples/flame2.py +++ b/Cantera/python/examples/flame2.py @@ -7,7 +7,7 @@ from Cantera import units #from Cantera.gases import H_O_AR -gas = GRI30(transport = 'Default') +gas = GRI30(transport = 'Mix') flame = BurnerFlame( domain = (0, 0.01), diff --git a/Cantera/python/src/ctbndry_methods.cpp b/Cantera/python/src/ctbndry_methods.cpp index 8c6923484..aac80e9ee 100644 --- a/Cantera/python/src/ctbndry_methods.cpp +++ b/Cantera/python/src/ctbndry_methods.cpp @@ -42,6 +42,19 @@ py_bndry_settemperature(PyObject *self, PyObject *args) return Py_BuildValue("i",0); } + +static PyObject* +py_bndry_setspreadrate(PyObject *self, PyObject *args) +{ + int n; + double v; + if (!PyArg_ParseTuple(args, "id:bndry_setspreadrate", &n, &v)) + return NULL; + int iok = bndry_setSpreadRate(n, v); + if (iok < 0) return reportError(iok); + return Py_BuildValue("i",0); +} + static PyObject* py_bndry_mdot(PyObject *self, PyObject *args) { diff --git a/Cantera/python/src/ctkinetics_methods.cpp b/Cantera/python/src/ctkinetics_methods.cpp index 6f037e45b..68bbfb789 100644 --- a/Cantera/python/src/ctkinetics_methods.cpp +++ b/Cantera/python/src/ctkinetics_methods.cpp @@ -1,11 +1,12 @@ static PyObject* kin_newFromXML(PyObject *self, PyObject *args) { - int mxml, iphase, neighbor1, neighbor2; - if (!PyArg_ParseTuple(args, "iiii:newFromXML", &mxml, - &iphase, &neighbor1, &neighbor2)) + int mxml, iphase, neighbor1, neighbor2, neighbor3, neighbor4; + if (!PyArg_ParseTuple(args, "iiiiii:newFromXML", &mxml, + &iphase, &neighbor1, &neighbor2, &neighbor3, &neighbor4)) return NULL; - int n = newKineticsFromXML(mxml, iphase, neighbor1, neighbor2); + int n = newKineticsFromXML(mxml, iphase, neighbor1, neighbor2, + neighbor3, neighbor4); if (n < 0) return reportError(n); return Py_BuildValue("i",n); } @@ -19,6 +20,13 @@ kin_delete(PyObject *self, PyObject *args) return Py_BuildValue("i",0); } +static PyObject* +kin_phase(PyObject *self, PyObject *args) { + int kin, n; + if (!PyArg_ParseTuple(args, "ii:kin_phase", &kin, &n)) return NULL; + return Py_BuildValue("i",kin_phase(kin, n)); +} + static PyObject* kin_nspecies(PyObject *self, PyObject *args) { int kin; @@ -102,6 +110,17 @@ kin_speciesIndex(PyObject *self, PyObject *args) { return Py_BuildValue("i",kin_speciesIndex(kin,nm,ph)); } +static PyObject* +kin_advanceCoverages(PyObject *self, PyObject *args) { + int kin; + double dt; + if (!PyArg_ParseTuple(args, "id:kin_advanceCoverages", &kin, &dt)) + return NULL; + int iok = kin_advanceCoverages(kin, dt); + if (iok < 0) return reportCanteraError(); + return Py_BuildValue("i",0); +} + static PyObject* kin_getarray(PyObject *self, PyObject *args) { diff --git a/Cantera/python/src/ctthermo_methods.cpp b/Cantera/python/src/ctthermo_methods.cpp index b1d628494..b00f29d1d 100644 --- a/Cantera/python/src/ctthermo_methods.cpp +++ b/Cantera/python/src/ctthermo_methods.cpp @@ -149,6 +149,8 @@ thermo_setfp(PyObject *self, PyObject *args) iok = th_set_SV(th, v); break; case 5: iok = th_set_SP(th, v); break; + case 6: + iok = th_setElectricPotential(th, v[0]); break; default: iok = -10; } diff --git a/Cantera/python/src/ctxml_methods.cpp b/Cantera/python/src/ctxml_methods.cpp index 6e8426b07..cfd2c2cec 100644 --- a/Cantera/python/src/ctxml_methods.cpp +++ b/Cantera/python/src/ctxml_methods.cpp @@ -170,6 +170,18 @@ py_xml_addAttrib(PyObject *self, PyObject *args) return Py_BuildValue("i",m); } +static PyObject* +py_xml_addComment(PyObject *self, PyObject *args) +{ + int n; + char *comment; + if (!PyArg_ParseTuple(args, "is:xml_addComment", &n, &comment)) + return NULL; + int m = xml_addComment(n, comment); + if (m < 0) return reportError(m); + return Py_BuildValue("i",m); +} + static PyObject* py_xml_removeChild(PyObject *self, PyObject *args) { diff --git a/Cantera/python/src/methods.h b/Cantera/python/src/methods.h index b87e0546c..79066ccda 100644 --- a/Cantera/python/src/methods.h +++ b/Cantera/python/src/methods.h @@ -35,6 +35,7 @@ static PyMethodDef ct_methods[] = { {"xml_attrib", py_xml_attrib, METH_VARARGS}, {"xml_addAttrib", py_xml_addAttrib, METH_VARARGS}, + {"xml_addComment", py_xml_addComment, METH_VARARGS}, {"xml_tag", py_xml_tag, METH_VARARGS}, {"xml_value", py_xml_value, METH_VARARGS}, {"xml_new", py_xml_new, METH_VARARGS}, @@ -66,6 +67,8 @@ static PyMethodDef ct_methods[] = { {"kin_speciesIndex", kin_speciesIndex, METH_VARARGS}, {"kin_getarray", kin_getarray, METH_VARARGS}, {"kin_getstring", kin_getstring, METH_VARARGS}, + {"kin_phase", kin_phase, METH_VARARGS}, + {"kin_advanceCoverages", kin_advanceCoverages, METH_VARARGS}, {"Transport", py_transport_new, METH_VARARGS}, {"tran_delete", py_transport_delete, METH_VARARGS}, @@ -156,6 +159,7 @@ static PyMethodDef ct_methods[] = { {"bndry_setxin", py_bndry_setxin, METH_VARARGS}, {"bndry_setxinbyname", py_bndry_setxinbyname, METH_VARARGS}, {"bndry_settemperature", py_bndry_settemperature, METH_VARARGS}, + {"bndry_setspreadrate", py_bndry_setspreadrate, METH_VARARGS}, {"bndry_new", py_bndry_new, METH_VARARGS}, {"bndry_del", py_bndry_del, METH_VARARGS}, {"bndry_mdot", py_bndry_mdot, METH_VARARGS}, diff --git a/Cantera/src/ChemEquil.cpp b/Cantera/src/ChemEquil.cpp index 47b752d9d..5a4327db1 100755 --- a/Cantera/src/ChemEquil.cpp +++ b/Cantera/src/ChemEquil.cpp @@ -316,7 +316,6 @@ namespace Cantera { delete m_p2; bool tempFixed = true; initialize(s); - switch (XY) { case TP: case PT: m_p1 = new TemperatureCalculator; @@ -346,7 +345,6 @@ namespace Cantera { xval = m_p1->value(s); yval = m_p2->value(s); - int mm = m_mm; int m; @@ -357,7 +355,6 @@ namespace Cantera { vector_fp res_trial(nvar); vector_fp elementMol(mm, 0.0); - double perturb; for (m = 0; m < mm; m++) { perturb = Cutoff*(1.0 + rand()); diff --git a/Cantera/src/ConstDensityThermo.cpp b/Cantera/src/ConstDensityThermo.cpp index 6d0e3e547..2712b9d07 100755 --- a/Cantera/src/ConstDensityThermo.cpp +++ b/Cantera/src/ConstDensityThermo.cpp @@ -84,12 +84,12 @@ 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); + // doublereal rrt = 1.0 / (GasConstant * tnow); int k; - doublereal deltaE; + //doublereal deltaE; for (k = 0; k < m_kk; k++) { - deltaE = rrt * m_pe[k]; - m_h0_RT[k] += deltaE; + //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/GRI_30_Kinetics.cpp b/Cantera/src/GRI_30_Kinetics.cpp index 3651058c7..710a78469 100755 --- a/Cantera/src/GRI_30_Kinetics.cpp +++ b/Cantera/src/GRI_30_Kinetics.cpp @@ -15,7 +15,7 @@ #include "GRI_30_Kinetics.h" #include "ReactionData.h" -#include "StoichManager.h" +//#include "StoichManager.h" #include "Enhanced3BConc.h" #include "ThirdBodyMgr.h" #include "RateCoeffMgr.h" diff --git a/Cantera/src/GasKinetics.cpp b/Cantera/src/GasKinetics.cpp index e20736156..2d5e3f94e 100755 --- a/Cantera/src/GasKinetics.cpp +++ b/Cantera/src/GasKinetics.cpp @@ -17,7 +17,7 @@ #include "GasKinetics.h" #include "ReactionData.h" -#include "StoichManager.h" +//#include "StoichManager.h" #include "Enhanced3BConc.h" #include "ThirdBodyMgr.h" #include "RateCoeffMgr.h" @@ -52,6 +52,7 @@ namespace Cantera { { m_kdata = new GasKineticsData; m_kdata->m_temp = 0.0; + // m_rxnstoich = new ReactionStoichMgr; } /** @@ -128,8 +129,9 @@ namespace Cantera { fill(m_rkc.begin(), m_rkc.end(), 0.0); // compute Delta G^0 for all reversible reactions - m_reactantStoich.decrementReactions(m_grt.begin(), m_rkc.begin()); - m_revProductStoich.incrementReactions(m_grt.begin(), m_rkc.begin()); + m_rxnstoich.getRevReactionDelta(m_ii, m_grt.begin(), m_rkc.begin()); + //m_reactantStoich.decrementReactions(m_grt.begin(), m_rkc.begin()); + //m_revProductStoich.incrementReactions(m_grt.begin(), m_rkc.begin()); doublereal logc0 = m_kdata->m_logc0; doublereal rrt = 1.0/(GasConstant * thermo().temperature()); @@ -157,11 +159,13 @@ namespace Cantera { fill(rkc.begin(), rkc.end(), 0.0); // compute Delta G^0 for all reactions - m_reactantStoich.decrementReactions(m_grt.begin(), rkc.begin()); - m_revProductStoich.incrementReactions(m_grt.begin(), - rkc.begin()); - m_irrevProductStoich.incrementReactions(m_grt.begin(), - rkc.begin()); + m_rxnstoich.getReactionDelta(m_ii, m_grt.begin(), rkc.begin()); + + // m_reactantStoich.decrementReactions(m_grt.begin(), rkc.begin()); + //m_revProductStoich.incrementReactions(m_grt.begin(), + //rkc.begin()); + //m_irrevProductStoich.incrementReactions(m_grt.begin(), + //rkc.begin()); doublereal logc0 = m_kdata->m_logc0; doublereal rrt = 1.0/(GasConstant * thermo().temperature()); @@ -239,11 +243,13 @@ namespace Cantera { multiply_each(ropr.begin(), ropr.end(), m_rkc.begin()); // multiply ropf by concentration products - m_reactantStoich.multiply(m_conc.begin(), ropf.begin()); + m_rxnstoich.multiplyReactants(m_conc.begin(), ropf.begin()); + //m_reactantStoich.multiply(m_conc.begin(), ropf.begin()); // for reversible reactions, multiply ropr by concentration // products - m_revProductStoich.multiply(m_conc.begin(), ropr.begin()); + m_rxnstoich.multiplyRevProducts(m_conc.begin(), ropr.begin()); + //m_revProductStoich.multiply(m_conc.begin(), ropr.begin()); for (int j = 0; j != m_ii; ++j) { ropnet[j] = ropf[j] - ropr[j]; @@ -390,26 +396,18 @@ namespace Cantera { m_kdata->m_rkcn.push_back(0.0); // int nr = r.size(); - //int i; - //for (i = 0; i < nr; i++) { - // m_rrxn[r[i]][rnum] += 1.0; - //} - m_reactantStoich.add( reactionNumber(), rk); - - //int np = p.size(); - // - //for (i = 0; i < np; i++) { - // m_prxn[p[i]][rnum] += 1.0; - // } + //m_reactantStoich.add( reactionNumber(), rk); if (r.reversible) { - m_revProductStoich.add(reactionNumber(), pk); + m_rxnstoich.add(reactionNumber(), rk, pk, true); + //m_revProductStoich.add(reactionNumber(), pk); m_dn.push_back(pk.size() - rk.size()); m_revindex.push_back(reactionNumber()); m_nrev++; } else { - m_irrevProductStoich.add(reactionNumber(), pk); + m_rxnstoich.add(reactionNumber(), rk, pk, false); + //m_irrevProductStoich.add(reactionNumber(), pk); m_dn.push_back(pk.size() - rk.size()); m_irrev.push_back( reactionNumber() ); m_nirrev++; diff --git a/Cantera/src/GasKinetics.h b/Cantera/src/GasKinetics.h index 7214d56b4..da54dd822 100755 --- a/Cantera/src/GasKinetics.h +++ b/Cantera/src/GasKinetics.h @@ -21,7 +21,10 @@ #include "Kinetics.h" #include "utilities.h" -#include "StoichManager.h" + +//#include "StoichManager.h" + +#include "ReactionStoichMgr.h" #include "ThirdBodyMgr.h" #include "FalloffMgr.h" #include "RateCoeffMgr.h" @@ -109,34 +112,39 @@ namespace Cantera { #ifdef HWMECH get_wdot(m_kdata->m_ropnet.begin(), net); #else - 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_kdata->m_ropnet.begin(), net); + //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); #endif } virtual void getCreationRates(doublereal* cdot) { updateROP(); - 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); + 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); } virtual void getDestructionRates(doublereal* ddot) { updateROP(); - 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); + 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); } virtual void getEquilibriumConstants(doublereal* kc); @@ -204,9 +212,11 @@ namespace Cantera { vector m_irrev; - StoichManagerN m_reactantStoich; - StoichManagerN m_revProductStoich; - StoichManagerN m_irrevProductStoich; + //StoichManagerN m_reactantStoich; + //StoichManagerN m_revProductStoich; + //StoichManagerN m_irrevProductStoich; + + ReactionStoichMgr m_rxnstoich; vector m_fwdOrder; diff --git a/Cantera/src/IdealGasPhase.cpp b/Cantera/src/IdealGasPhase.cpp index b586a0175..a6659489d 100644 --- a/Cantera/src/IdealGasPhase.cpp +++ b/Cantera/src/IdealGasPhase.cpp @@ -91,12 +91,12 @@ 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); + // doublereal rrt = 1.0 / (GasConstant * tnow); int k; - doublereal deltaE; + //doublereal deltaE; for (k = 0; k < m_kk; k++) { - deltaE = rrt * m_pe[k]; - m_h0_RT[k] += deltaE; + //deltaE = rrt * m_pe[k]; + //m_h0_RT[k] += deltaE; m_g0_RT[k] = m_h0_RT[k] - m_s0_R[k]; } m_logc0 = log(m_p0/(GasConstant * tnow)); diff --git a/Cantera/src/ImplicitSurfChem.cpp b/Cantera/src/ImplicitSurfChem.cpp index 6e91017e1..0c907e2d8 100755 --- a/Cantera/src/ImplicitSurfChem.cpp +++ b/Cantera/src/ImplicitSurfChem.cpp @@ -26,7 +26,8 @@ namespace Cantera { m_atol(1.e-14), m_rtol(1.e-7), m_maxstep(0.0) { m_integ = new CVodeInt; - m_surf = (SurfPhase*)&kin.thermo(kin.nPhases()-1); + m_surfindex = kin.surfacePhaseIndex(); + m_surf = (SurfPhase*)&kin.thermo(m_surfindex); // use backward differencing, with a full Jacobian computed // numerically, and use a Newton linear iterator @@ -38,6 +39,7 @@ namespace Cantera { m_work.resize(m_kin->nTotalSpecies()); } + // overloaded method of FuncEval. Called by the integrator to // get the initial conditions. void ImplicitSurfChem::getInitialConditions(double t0, size_t lenc, @@ -55,10 +57,12 @@ namespace Cantera { m_integ->initialize(t0, *this); } + void ImplicitSurfChem::updateState(doublereal* c) { m_surf->setCoverages(c); } + /** * Called by the integrator to evaluate ydot given y at time 'time'. */ @@ -69,10 +73,10 @@ namespace Cantera { doublereal rs0 = 1.0/m_surf->siteDensity(); m_kin->getNetProductionRates(m_work.begin()); int k; - int kbulk = m_kin->nTotalSpecies() - m_nsp; + int kstart = m_kin->start(m_surfindex); doublereal sum = 0.0; for (k = 1; k < m_nsp; k++) { - ydot[k] = m_work[kbulk + k] * rs0 * m_surf->size(k); + ydot[k] = m_work[kstart + k] * rs0 * m_surf->size(k); sum -= ydot[k]; } //if (sum < 0.0) sum = 0.0; diff --git a/Cantera/src/ImplicitSurfChem.h b/Cantera/src/ImplicitSurfChem.h index 72be5bdf0..0937012c0 100755 --- a/Cantera/src/ImplicitSurfChem.h +++ b/Cantera/src/ImplicitSurfChem.h @@ -93,7 +93,7 @@ namespace Cantera { SurfPhase* m_surf; InterfaceKinetics* m_kin; - int m_nsp; + int m_nsp, m_surfindex; Integrator* m_integ; // pointer to integrator doublereal m_atol, m_rtol; // tolerances doublereal m_maxstep; // max step size diff --git a/Cantera/src/InterfaceKinetics.cpp b/Cantera/src/InterfaceKinetics.cpp index 48aa69b6d..4e4f9b323 100644 --- a/Cantera/src/InterfaceKinetics.cpp +++ b/Cantera/src/InterfaceKinetics.cpp @@ -19,6 +19,8 @@ #include "StoichManager.h" #include "RateCoeffMgr.h" +#include "ImplicitSurfChem.h" + #include using namespace std; @@ -44,6 +46,9 @@ namespace Cantera { return mean_X(m_h0.begin()); } + SurfPhase:: + ~SurfPhase() { } + /** * For a surface phase, the pressure is not a relevant * thermodynamic variable, and so the enthalpy is equal to the @@ -101,20 +106,20 @@ namespace Cantera { _updateThermo(true); } - void SurfPhase:: setSiteDensity(doublereal n0) { doublereal x = n0; setParameters(1, &x); } - void SurfPhase:: - setElectricPotential(doublereal V) { - for (int k = 0; k < m_kk; k++) { - m_pe[k] = charge(k)*Faraday*V; - } - _updateThermo(true); - } + + //void SurfPhase:: + //setElectricPotential(doublereal V) { + // for (int k = 0; k < m_kk; k++) { + // m_pe[k] = charge(k)*Faraday*V; + // } + // _updateThermo(true); + //} void SurfPhase:: setCoverages(const doublereal* theta) { @@ -141,12 +146,12 @@ namespace Cantera { m_tlast = tnow; doublereal rt = GasConstant * tnow; int k; - doublereal deltaE; + //doublereal deltaE; for (k = 0; k < m_kk; k++) { m_h0[k] *= rt; m_s0[k] *= GasConstant; m_cp0[k] *= GasConstant; - deltaE = m_pe[k]; + //deltaE = m_pe[k]; //m_h0[k] += deltaE; m_mu0[k] = m_h0[k] - tnow*m_s0[k]; } @@ -169,29 +174,53 @@ namespace Cantera { m_redo_rates(false), m_nirrev(0), m_nrev(0), + m_integrator(0), m_finalized(false) { m_kdata = new InterfaceKineticsData; m_kdata->m_temp = 0.0; } + InterfaceKinetics:: + ~InterfaceKinetics(){ + delete m_kdata; + delete m_integrator; + } + void InterfaceKinetics:: _update_rates_T() { + _update_rates_phi(); doublereal T = thermo().temperature(); if (T != m_kdata->m_temp || m_redo_rates) { doublereal logT = log(T); m_rates.update(T, logT, m_kdata->m_rfn.begin()); - correctElectronTransferRates(m_kdata->m_rfn.begin()); + applyButlerVolmerCorrection(m_kdata->m_rfn.begin()); m_kdata->m_temp = T; updateKc(); m_kdata->m_ROP_ok = false; m_redo_rates = false; } - }; + } + + void InterfaceKinetics:: + _update_rates_phi() { + int np = nPhases(); + for (int n = 0; n < np; n++) { + if (thermo(n).electricPotential() != m_phi[n]) { + m_phi[n] = thermo(n).electricPotential(); + m_redo_rates = true; + } + } + } + /** - * Update properties that depend on concentrations. + * Update properties that depend on concentrations. This method + * fills out the array of generalized concentrations by calling + * method getActivityConcentrations for each phase, which classes + * representing phases should overload to return the appropriate + * quantities. */ void InterfaceKinetics:: _update_rates_C() { @@ -203,8 +232,10 @@ namespace Cantera { m_kdata->m_ROP_ok = false; } + /** - * Update the equilibrium constants in molar units. + * Update the equilibrium constants in molar units for all + * reversible reactions. */ void InterfaceKinetics::updateKc() { int i, irxn; @@ -215,14 +246,11 @@ namespace Cantera { doublereal rrt = 1.0/rt; int np = nPhases(); for (n = 0; n < np; n++) { - // cout << n << "start = " << m_start[n] << endl; thermo(n).getStandardChemPotentials(m_mu0.begin() + m_start[n]); nsp = thermo(n).nSpecies(); for (k = 0; k < nsp; k++) { - //cout << ik << "mu0 = " << m_mu0[ik] << endl; m_mu0[ik] -= rt*thermo(n).logStandardConc(k); m_mu0[ik] += Faraday * m_phi[n] * thermo(n).charge(k); - //cout << ik << "mu0 = " << m_mu0[ik] << endl; ik++; } } @@ -235,9 +263,7 @@ namespace Cantera { for (i = 0; i < m_nrev; i++) { irxn = m_revindex[i]; - //cout << "rev " << irxn << " " << m_rkc[irxn] << endl; m_rkc[irxn] = exp(m_rkc[irxn]*rrt); - //cout << "rev " << irxn << " " << m_rkc[irxn] << endl; } for(i = 0; i != m_nirrev; ++i) { @@ -245,6 +271,7 @@ namespace Cantera { } } + /** * Get the equilibrium constants of all reactions, whether * reversible or not. @@ -260,14 +287,8 @@ namespace Cantera { thermo(n).getStandardChemPotentials(m_mu0.begin() + m_start[n]); nsp = thermo(n).nSpecies(); for (k = 0; k < nsp; k++) { - //cout << thermo(n).id() << " " << thermo(n).speciesName(k) - // << " " << m_mu0[ik] << endl; m_mu0[ik] -= rt*thermo(n).logStandardConc(k); m_mu0[ik] += Faraday * m_phi[n] * thermo(n).charge(k); - //if (thermo(n).charge(k) != 0.0) { - // cout << thermo(n).id() << " " << thermo(n).speciesName(k) - // << " " << m_phi[n] << " " << thermo(n).charge(k) << endl; - //} ik++; } } @@ -285,16 +306,19 @@ namespace Cantera { /** - * Get the equilibrium constants of all reactions, whether - * reversible or not. + * For reactions that transfer charge across a potential difference, + * the activation energies are modified by the potential difference. + * (see, for example, ...). This method applies this correction. */ - void InterfaceKinetics::correctElectronTransferRates(doublereal* kf) { + void InterfaceKinetics::applyButlerVolmerCorrection(doublereal* kf) { int i; int n, nsp, k, ik=0; doublereal rt = GasConstant*thermo(0).temperature(); doublereal rrt = 1.0/rt; int np = nPhases(); + + // compute the electrical potential energy of each species for (n = 0; n < np; n++) { nsp = thermo(n).nSpecies(); for (k = 0; k < nsp; k++) { @@ -302,18 +326,25 @@ namespace Cantera { ik++; } } + + // compute the change in electrical potential energy for each + // reaction. This will only be non-zero if a potential + // difference is present. fill(m_rwork.begin(), m_rwork.begin() + m_ii, 0.0); m_reactantStoich.decrementReactions(m_pot.begin(), m_rwork.begin()); m_revProductStoich.incrementReactions(m_pot.begin(), m_rwork.begin()); m_irrevProductStoich.incrementReactions(m_pot.begin(), m_rwork.begin()); - doublereal eamod, ea; + // modify the reaction rates. Only modify those with a + // non-zero activation energy, and do not decrease the + // activation energy below zero. + doublereal ea, eamod; for (i = 0; i < m_ii; i++) { - //loc = m_index[i].second; - //if (loc >= 0) { - // const Arrhenius& r = m_rates.rateCoeff(m_index[i].second); - // ea = GasConstant*r.activationEnergy_R(); eamod = 0.5*m_rwork[i]; - if (m_index[i].second >= 0) kf[i] *= exp(-eamod*rrt); + if (eamod != 0.0 && m_E[i] != 0.0) { + ea = GasConstant * m_E[i]; + if (eamod + ea < 0.0) eamod = -ea; + kf[i] *= exp(-eamod*rrt); + } } } @@ -386,6 +417,8 @@ namespace Cantera { iloc = m_rates.install( reactionNumber(), r.rateCoeffType, r.rateCoeffParameters.size(), r.rateCoeffParameters.begin() ); + // store activation energy + m_E.push_back(r.rateCoeffParameters[2]); // add constant term to rate coeff value vector m_kdata->m_rfn.push_back(r.rateCoeffParameters[0]); registerReaction( reactionNumber(), ELEMENTARY_RXN, iloc); @@ -500,6 +533,15 @@ namespace Cantera { return (m_finalized); } + void InterfaceKinetics:: + advanceCoverages(doublereal tstep) { + if (m_integrator == 0) { + m_integrator = new ImplicitSurfChem(*this); + m_integrator->initialize(); + } + m_integrator->integrate(0.0, tstep); + } + } diff --git a/Cantera/src/InterfaceKinetics.h b/Cantera/src/InterfaceKinetics.h index 20d8377d9..03d162d18 100644 --- a/Cantera/src/InterfaceKinetics.h +++ b/Cantera/src/InterfaceKinetics.h @@ -31,6 +31,7 @@ namespace Cantera { class ReactionData; class InterfaceKineticsData; class ThermoPhase; + class ImplicitSurfChem; /** * Holds mechanism-specific data. @@ -62,12 +63,13 @@ namespace Cantera { InterfaceKinetics(thermo_t* thermo = 0); /// Destructor. - virtual ~InterfaceKinetics(){delete m_kdata;} + virtual ~InterfaceKinetics(); virtual int ID() { return cInterfaceKinetics; } + virtual int type() { return cInterfaceKinetics; } void setElectricPotential(int n, doublereal V) { - m_phi[n] = V; + thermo(n).setElectricPotential(V); m_redo_rates = true; } @@ -158,10 +160,12 @@ namespace Cantera { < m_revindex.end()) return true; else return false; } - void correctElectronTransferRates(doublereal* kf); void _update_rates_T(); + void _update_rates_phi(); void _update_rates_C(); + void advanceCoverages(doublereal tstep); + protected: int m_kk; @@ -200,6 +204,9 @@ namespace Cantera { vector_fp m_phi; vector_fp m_pot; vector_fp m_rwork; + vector_fp m_E; + + ImplicitSurfChem* m_integrator; private: @@ -215,6 +222,7 @@ namespace Cantera { void registerReaction(int rxnNumber, int type, int loc) { m_index[rxnNumber] = pair(type, loc); } + void applyButlerVolmerCorrection(doublereal* kf); bool m_finalized; }; } diff --git a/Cantera/src/Kinetics.h b/Cantera/src/Kinetics.h index 628d8ae58..0338d1b0c 100755 --- a/Cantera/src/Kinetics.h +++ b/Cantera/src/Kinetics.h @@ -16,7 +16,6 @@ #define CT_KINETICS_H #include "ctexceptions.h" -//#include "Phase.h" #include "ThermoPhase.h" namespace Cantera { @@ -36,7 +35,7 @@ namespace Cantera { typedef ThermoPhase thermo_t; /// Constructors. - Kinetics() : m_ii(0), m_thermo(0), m_index(-1) {} + Kinetics() : m_ii(0), m_thermo(0), m_index(-1), m_surfphase(-1) {} /** * This Constructor initializes with a starting phase. @@ -44,7 +43,7 @@ namespace Cantera { * sets up are also done here. */ Kinetics(thermo_t* thermo) - : m_ii(0), m_index(-1) { + : m_ii(0), m_index(-1), m_surfphase(-1) { if (thermo) { m_start.push_back(0); m_thermo.push_back(thermo); @@ -76,6 +75,8 @@ namespace Cantera { return n; } + int surfacePhaseIndex() { return m_surfphase; } + /** * Stoichiometric coefficient of species k as a reactant in * reaction i. @@ -268,9 +269,20 @@ namespace Cantera { * @param k species index * @param n phase index for the species */ - int kineticsSpeciesIndex(int k, int n) { + int kineticsSpeciesIndex(int k, int n) const { return m_start[n] + k; } + + string 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 ""; + } + /** * This routine will look up a species number based on * the input string nm. The lookup of species will @@ -283,7 +295,7 @@ namespace Cantera { * is returned. * If no match is found, the value -2 is returned. */ - int kineticsSpeciesIndex(string nm, string ph = "") { + int kineticsSpeciesIndex(string nm, string ph = "") const { int np = m_thermo.size(); int k; string id; @@ -317,6 +329,17 @@ namespace Cantera { throw CanteraError("speciesPhase", "unknown species "+nm); } + thermo_t& speciesPhase(int k) { + int np = m_start.size(); + for (int n = np-1; n >= 0; n--) { + if (k >= m_start[n]) { + return thermo(n); + } + } + throw CanteraError("speciesPhase", + "illegal species index: "+int2str(k)); + } + /** * Prepare the class for the addition of reactions. This function @@ -440,6 +463,8 @@ namespace Cantera { map m_phaseindex; int m_index; + int m_surfphase; + private: vector m_dummygroups; diff --git a/Cantera/src/KineticsFactory.h b/Cantera/src/KineticsFactory.h index b3da2e2f6..d17ddde90 100644 --- a/Cantera/src/KineticsFactory.h +++ b/Cantera/src/KineticsFactory.h @@ -52,7 +52,7 @@ namespace Cantera { /** - * Create a new thermo manager instance. + * Create a new kinetics manager. */ inline Kinetics* newKineticsMgr(XML_Node& phase, vector th, KineticsFactory* f=0) { @@ -64,7 +64,7 @@ namespace Cantera { } /** - * Create a new thermo manager instance. + * Create a new kinetics manager. */ inline Kinetics* newKineticsMgr(string model, KineticsFactory* f=0) { if (f == 0) { diff --git a/Cantera/src/Makefile.in b/Cantera/src/Makefile.in index d0cb9c177..9a68651e1 100755 --- a/Cantera/src/Makefile.in +++ b/Cantera/src/Makefile.in @@ -22,14 +22,15 @@ EXT = ../../ext #---------------------- # basic components always needed -BASE = Elements.o Constituents.o stringUtils.o misc.o importCTML.o plots.o \ +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 # thermodynamic properties THERMO = $(BASE) ThermoPhase.o IdealGasPhase.o ConstDensityThermo.o SolidCompound.o SpeciesThermoFactory.o ThermoFactory.o # homogeneous kinetics -KINETICS = GRI_30_Kinetics.o KineticsFactory.o GasKinetics.o FalloffFactory.o GasKineticsWriter.o $(THERMO) +KINETICS = GRI_30_Kinetics.o KineticsFactory.o GasKinetics.o FalloffFactory.o GasKineticsWriter.o \ + ReactionStoichMgr.o $(THERMO) # heterogeneous kinetics HETEROKIN = InterfaceKinetics.o ImplicitSurfChem.o $(THERMO) diff --git a/Cantera/src/Phase.cpp b/Cantera/src/Phase.cpp index e76b6d7b5..1c96075d0 100755 --- a/Cantera/src/Phase.cpp +++ b/Cantera/src/Phase.cpp @@ -207,13 +207,13 @@ namespace Cantera { } - void Phase::update_T(int n) const { - m_T_updater.update(n); - } +// void Phase::update_T(int n) const { +// m_T_updater.update(n); +// } - void Phase::update_C(int n) const { - m_C_updater.update(n); - } +// void Phase::update_C(int n) const { +// m_C_updater.update(n); +// } /** * Finished adding species, prepare to use them for calculation @@ -238,11 +238,11 @@ namespace Cantera { return (m_kk > 0 && Constituents::ready() && State::ready()); } - int Phase::installUpdater_T(Updater* u) { - return m_T_updater.install(u); - } +// int Phase::installUpdater_T(Updater* u) { +// return m_T_updater.install(u); +// } - int Phase::installUpdater_C(Updater* u) { - return m_C_updater.install(u); - } +// int Phase::installUpdater_C(Updater* u) { +// return m_C_updater.install(u); +// } } diff --git a/Cantera/src/Phase.h b/Cantera/src/Phase.h index 7b5fb7674..1ab8be720 100755 --- a/Cantera/src/Phase.h +++ b/Cantera/src/Phase.h @@ -50,9 +50,9 @@ namespace Cantera { virtual ~Phase(){ delete m_xml; } XML_Node& xml() { return *m_xml; } - string id() { return m_id; } + string id() const { return m_id; } void setID(string id) {m_id = id;} - int index() { return m_index; } + int index() const { return m_index; } void setIndex(int m) { m_index = m; } /** @@ -154,9 +154,9 @@ namespace Cantera { */ doublereal chargeDensity() const; - void update_T(int n) const; + //void update_T(int n) const; - void update_C(int n) const; + //void update_C(int n) const; /// Number of spatial dimensions (1, 2, or 3) int nDim() {return m_ndim;} @@ -170,9 +170,9 @@ namespace Cantera { virtual bool ready() const; - int installUpdater_T(Updater* u); +// int installUpdater_T(Updater* u); - int installUpdater_C(Updater* u); +// int installUpdater_C(Updater* u); protected: diff --git a/Cantera/src/ReactionPath.cpp b/Cantera/src/ReactionPath.cpp index 87368a448..cd264d5ad 100755 --- a/Cantera/src/ReactionPath.cpp +++ b/Cantera/src/ReactionPath.cpp @@ -37,7 +37,7 @@ namespace Cantera { } void SpeciesNode::printPaths() { - for (int i = 0; i < m_paths.size(); i++) { + for (int i = 0; i < int(m_paths.size()); i++) { cout << m_paths[i]->begin()->name << " --> " << m_paths[i]->end()->name << ": " << m_paths[i]->flow() << endl; @@ -789,14 +789,13 @@ namespace Cantera { string reactionLabel(int i, int kr, int nr, const vector_int& slist, const Kinetics& s) { - - const Kinetics::thermo_t& ph = s.thermo(); - + + //int np = s.nPhases(); string label = ""; int l; for (l = 0; l < nr; l++) { if (l != kr) - label += " + "+ ph.speciesName(slist[l]); + label += " + "+ s.kineticsSpeciesName(slist[l]); } if (s.reactionType(i) == THREE_BODY_RXN) label += " + M "; @@ -823,7 +822,7 @@ namespace Cantera { r.element = element; if (m < 0) return -1; - int k; + //int k; int kk = ph.nSpecies(); s.getFwdRatesOfProgress(m_ropf.begin()); @@ -831,11 +830,11 @@ namespace Cantera { ph.getMoleFractions(m_x.begin()); - doublereal sum = 0.0; - for (k = 0; k < kk; k++) { - sum += m_x[k] * ph.nAtoms(k,m); - } - sum *= ph.molarDensity(); + //doublereal sum = 0.0; + //for (k = 0; k < kk; k++) { + // sum += m_x[k] * ph.nAtoms(k,m); + //} + //sum *= ph.molarDensity(); // species explicitly included or excluded vector& in_nodes = r.included(); @@ -846,9 +845,9 @@ namespace Cantera { vector_int status; status.resize(kk,0); for (int ni = 0; ni < nin; ni++) - status[ph.speciesIndex(in_nodes[ni])] = 1; + status[s.kineticsSpeciesIndex(in_nodes[ni])] = 1; for (int ne = 0; ne < nout; ne++) - status[ph.speciesIndex(out_nodes[ne])] = -1; + status[s.kineticsSpeciesIndex(out_nodes[ne])] = -1; for (i = 0; i < m_nr; i++) { diff --git a/Cantera/src/SolidCompound.h b/Cantera/src/SolidCompound.h index 07205489d..82f4b2a89 100644 --- a/Cantera/src/SolidCompound.h +++ b/Cantera/src/SolidCompound.h @@ -40,8 +40,8 @@ namespace Cantera { m_kk(0), m_tmin(0.0), m_tmax(0.0), - m_p0(OneAtm), m_press(OneAtm), + m_p0(OneAtm), m_tlast(-1.0) {} virtual ~SolidCompound() {} @@ -71,8 +71,6 @@ namespace Cantera { */ virtual doublereal intEnergy_mole() const { _updateThermo(); - // cout << "intEnergy: " << m_h0_RT[0] << " " << m_p0/molarDensity() - // << endl; return GasConstant * temperature() * m_h0_RT[0] - m_p0 / molarDensity(); } @@ -82,7 +80,6 @@ namespace Cantera { */ virtual doublereal entropy_mole() const { _updateThermo(); - //cout << "s/r = " << m_s0_R[0] << endl; return GasConstant * m_s0_R[0]; } @@ -170,7 +167,7 @@ namespace Cantera { protected: int m_kk; - doublereal m_tmin, m_tmax, m_p0, m_press; + doublereal m_tmin, m_tmax, m_press, m_p0; mutable doublereal m_tlast; mutable array_fp m_h0_RT; diff --git a/Cantera/src/SpeciesThermoFactory.cpp b/Cantera/src/SpeciesThermoFactory.cpp index 1665055ad..f752e0e34 100755 --- a/Cantera/src/SpeciesThermoFactory.cpp +++ b/Cantera/src/SpeciesThermoFactory.cpp @@ -32,33 +32,49 @@ namespace Cantera { SpeciesThermoFactory* SpeciesThermoFactory::__factory = 0; + + static void getSpeciesThermoTypes(XML_Node* node, + int& has_nasa, int& has_shomate, int& has_simple) { + XML_Node& sparray = *node; + vector sp; + sparray.getChildren("species",sp); + int ns = sp.size(); + for (int n = 0; n < ns; n++) { + XML_Node& th = sp[n]->child("thermo"); + if (th.hasChild("NASA")) has_nasa = 1; + if (th.hasChild("Shomate")) has_shomate = 1; + if (th.hasChild("const_cp")) has_simple = 1; + if (th.hasChild("poly")) { + if (th.child("poly")["order"] == "1") has_simple = 1; + else throw CanteraError("newSpeciesThermo", + "poly with order > 1 not yet supported"); + } + } + } + + /** * Return a species thermo manager to handle the parameterizations * specified in a CTML phase specification. */ SpeciesThermo* SpeciesThermoFactory::newSpeciesThermo(XML_Node* node) { - XML_Node& sparray = *node; //node->child("speciesData"); - vector sp; - sparray.getChildren("species",sp); - int ns = sp.size(); - int inasa = 0; - int ishomate = 0; - int isimple = 0; - for (int n = 0; n < ns; n++) { - XML_Node& th = sp[n]->child("thermo"); - if (th.hasChild("NASA")) inasa = 1; - if (th.hasChild("Shomate")) ishomate = 1; - if (th.hasChild("const_cp")) isimple = 1; - if (th.hasChild("poly")) { - if (th.child("poly")["order"] == "1") isimple = 1; - else throw CanteraError("newSpeciesThermo", - "poly with order > 1 not yet supported"); - } - } - return newSpeciesThermo(NASA*inasa + int inasa = 0, ishomate = 0, isimple = 0; + getSpeciesThermoTypes(node, inasa, ishomate, isimple); + return newSpeciesThermo(NASA*inasa + SHOMATE*ishomate + SIMPLE*isimple); } + SpeciesThermo* SpeciesThermoFactory::newSpeciesThermo(vector nodes) { + int n = nodes.size(); + int inasa = 0, ishomate = 0, isimple = 0; + for (int j = 0; j < n; j++) { + getSpeciesThermoTypes(nodes[j], inasa, ishomate, isimple); + } + return newSpeciesThermo(NASA*inasa + + SHOMATE*ishomate + SIMPLE*isimple); + } + + SpeciesThermo* SpeciesThermoFactory::newSpeciesThermo(int type) { switch (type) { diff --git a/Cantera/src/SpeciesThermoFactory.h b/Cantera/src/SpeciesThermoFactory.h index a3e2b68db..5eec44735 100755 --- a/Cantera/src/SpeciesThermoFactory.h +++ b/Cantera/src/SpeciesThermoFactory.h @@ -45,6 +45,7 @@ namespace Cantera { */ virtual SpeciesThermo* newSpeciesThermo(int type); virtual SpeciesThermo* newSpeciesThermo(XML_Node* node); + virtual SpeciesThermo* newSpeciesThermo(vector nodes); private: static SpeciesThermoFactory* __factory; @@ -76,6 +77,15 @@ namespace Cantera { return sptherm; } + inline SpeciesThermo* newSpeciesThermoMgr(vector nodes, + SpeciesThermoFactory* f=0) { + if (f == 0) { + f = SpeciesThermoFactory::factory(); + } + SpeciesThermo* sptherm = f->newSpeciesThermo(nodes); + return sptherm; + } + } #endif diff --git a/Cantera/src/State.h b/Cantera/src/State.h index 47c2494d5..d41eb814f 100755 --- a/Cantera/src/State.h +++ b/Cantera/src/State.h @@ -226,8 +226,6 @@ namespace Cantera { private: - doublereal m_temp, m_dens; - /** * Temperature. This is an independent variable * units = Kelvin diff --git a/Cantera/src/SurfPhase.h b/Cantera/src/SurfPhase.h index d76bf033e..b0caac6d0 100644 --- a/Cantera/src/SurfPhase.h +++ b/Cantera/src/SurfPhase.h @@ -36,7 +36,7 @@ namespace Cantera { public: SurfPhase(doublereal n0 = 0.0); - virtual ~SurfPhase() {} + virtual ~SurfPhase(); virtual int eosType() const { return cSurf; } virtual doublereal enthalpy_mole() const; virtual doublereal intEnergy_mole() const; diff --git a/Cantera/src/ThermoFactory.cpp b/Cantera/src/ThermoFactory.cpp index 0f6101e9d..32a35d271 100644 --- a/Cantera/src/ThermoFactory.cpp +++ b/Cantera/src/ThermoFactory.cpp @@ -74,72 +74,72 @@ namespace Cantera { return th; } - /** - * Return a thermo manager to handle the parameterizations - * specified in a CTML phase specification. - */ - ThermoPhase* ThermoFactory::newThermo(XML_Node& root, string id) { +// /** +// * Return a thermo manager to handle the parameterizations +// * specified in a CTML phase specification. +// */ +// ThermoPhase* ThermoFactory::newThermo(XML_Node& root, string id) { - // Find the node with the specified id, check that it is - // a 'phase' node, and set the phase id to 'id'. - XML_Node* ph; - ph = root.findID(id); - if (ph == 0) return 0; // false; // id not found - XML_Node& node = *ph; +// // Find the node with the specified id, check that it is +// // a 'phase' node, and set the phase id to 'id'. +// XML_Node* ph; +// ph = root.findID(id); +// if (ph == 0) return 0; // false; // id not found +// XML_Node& node = *ph; - if (node.name() != "phase") - throw CanteraError("newThermo","node with id = "+id - +" is not a phase object."); +// if (node.name() != "phase") +// throw CanteraError("newThermo","node with id = "+id +// +" is not a phase object."); - //Phase* p = new Phase; - //p->setID(id); // set the phase id +// //Phase* p = new Phase; +// //p->setID(id); // set the phase id - // get equaton of state type - XML_Node& eos = node.child("thermo"); - string eostype = eos["model"]; - int ieos=-1; - for (int n = 0; n < ntypes; n++) { - if (eostype == _types[n]) ieos = _itypes[n]; - } +// // get equaton of state type +// XML_Node& eos = node.child("thermo"); +// string eostype = eos["model"]; +// int ieos=-1; +// for (int n = 0; n < ntypes; n++) { +// if (eostype == _types[n]) ieos = _itypes[n]; +// } - // build species thermo manager - SpeciesThermo* spthermo = newSpeciesThermoMgr(&node); +// // build species thermo manager +// SpeciesThermo* spthermo = newSpeciesThermoMgr(&node); - ThermoPhase* th=0; - // doublereal dens; - map d; - switch (ieos) { +// ThermoPhase* th=0; +// // doublereal dens; +// map d; +// switch (ieos) { - case cIdealGas: - th = new IdealGasPhase; - break; +// case cIdealGas: +// th = new IdealGasPhase; +// break; - case cIncompressible: - th = new ConstDensityThermo; - break; +// case cIncompressible: +// th = new ConstDensityThermo; +// break; - case cSurf: - th = new SurfPhase; - break; +// case cSurf: +// th = new SurfPhase; +// break; - case cMetal: - th = new MetalPhase; - break; +// case cMetal: +// th = new MetalPhase; +// break; - case cSolidCompound: - th = new SolidCompound; - break; +// case cSolidCompound: +// th = new SolidCompound; +// break; - default: - throw CanteraError("newThermo", - "newThermo: unknown equation of state: "+eostype); - } - th->setSpeciesThermo(spthermo); +// default: +// throw CanteraError("newThermo", +// "newThermo: unknown equation of state: "+eostype); +// } +// th->setSpeciesThermo(spthermo); - // import the phase specification - importPhase(node, th); +// // import the phase specification +// importPhase(node, th); - return th; - } +// return th; +// } } diff --git a/Cantera/src/ThermoFactory.h b/Cantera/src/ThermoFactory.h index a27502d36..a82b7a8af 100644 --- a/Cantera/src/ThermoFactory.h +++ b/Cantera/src/ThermoFactory.h @@ -40,7 +40,7 @@ namespace Cantera { * Create a new thermodynamic property manager. * @param type the type to be created. */ - virtual ThermoPhase* newThermo(XML_Node& node, string id); + //virtual ThermoPhase* newThermo(XML_Node& node, string id); virtual ThermoPhase* newThermoPhase(string model); private: @@ -53,14 +53,14 @@ namespace Cantera { /** * Create a new thermo manager instance. */ - inline ThermoPhase* newThermoMgr(XML_Node& root, string id, - ThermoFactory* f=0) { - if (f == 0) { - f = ThermoFactory::factory(); - } - ThermoPhase* therm = f->newThermo(root, id); - return therm; - } +// inline ThermoPhase* newThermoMgr(XML_Node& root, string id, +// ThermoFactory* f=0) { +// if (f == 0) { +// f = ThermoFactory::factory(); +// } +// ThermoPhase* therm = f->newThermo(root, id); +// return therm; +// } /** * Create a new thermo manager instance. diff --git a/Cantera/src/ThermoPhase.h b/Cantera/src/ThermoPhase.h index f7dd10cf7..3ec30174b 100755 --- a/Cantera/src/ThermoPhase.h +++ b/Cantera/src/ThermoPhase.h @@ -199,6 +199,8 @@ namespace Cantera { err("setPressure"); } + virtual void updateDensity() {} + /** * @} * @name Potential Energy @@ -231,12 +233,16 @@ namespace Cantera { } void setElectricPotential(doublereal v) { - int nsp = nSpecies(); - for (int k = 0; k < nsp; k++) { - setPotentialEnergy(k, v*charge(k)*Faraday); - } + //int nsp = nSpecies(); + m_phi = v; + //for (int k = 0; k < nsp; k++) { + // setPotentialEnergy(k, v*charge(k)*Faraday); + //} } + doublereal electricPotential() { return m_phi; } + + /** * @} * @name Chemical Potentials and Activities @@ -594,6 +600,7 @@ namespace Cantera { m_spthermo = 0; m_index = -1; m_speciesData = 0; + m_phi = 0.0; } protected: @@ -605,6 +612,7 @@ namespace Cantera { /// Index number int m_index; + doublereal m_phi; private: diff --git a/Cantera/src/converters/Makefile.in b/Cantera/src/converters/Makefile.in index 2e3deaf7a..75f017379 100644 --- a/Cantera/src/converters/Makefile.in +++ b/Cantera/src/converters/Makefile.in @@ -16,7 +16,7 @@ OBJDIR = . CXX_FLAGS = @CXXFLAGS@ $(CXX_OPT) # Temporarily removed 'filter.o', since it was causing a compile error on Mac OS X. -OBJS = ck2ctml.o atomicWeightDB.o CKParser.o CKReader.o Reaction.o ckr_utils.o thermoFunctions.o writelog.o +OBJS = ck2ctml.o atomicWeightDB.o CKParser.o CKReader.o Reaction.o ckr_utils.o thermoFunctions.o writelog.o ck2ct.o CXX_INCLUDES = -I. -I.. CONV_LIB = @buildlib@/libconverters.a diff --git a/Cantera/src/converters/ck2ct.cpp b/Cantera/src/converters/ck2ct.cpp new file mode 100644 index 000000000..6bd3518a1 --- /dev/null +++ b/Cantera/src/converters/ck2ct.cpp @@ -0,0 +1,462 @@ +/** + * @file ck2ctml.cpp + * + * Convert CK-format reaction mechanism files to CTML format. + * + */ +#ifdef WIN32 +#pragma warning(disable:4786) +#pragma warning(disable:4503) +#endif + +#include +#include +using namespace std; + +#include "CKReader.h" +#include "Reaction.h" +#include "writelog.h" + +#include "ck2ct.h" +#include "../ct_defs.h" +#include "ctml.h" +using namespace Cantera; + +namespace pip { + + struct trdata { + //trdata() {name = "-";} + // string name; + int geom; + doublereal welldepth, diam, dipole, polar, rot; + }; + + static map _trmap; + static bool _with_transport = false; + + static void getTransportData(string trfile) { + + _with_transport = true; + ifstream s(trfile.c_str()); + if (!s) throw CanteraError("getTransportData", + "could not open transport database "+trfile); + + /* + * The first thing we will do is to read the entire transport + * database and place its contents into a map structure, + * indexed by the name of the species. + */ + string rest; + while (! s.eof()) { +#ifdef USE_STRINGSTREAM + /* + * Read a line from the file + */ + getline(s, rest); + /* + * In the transport database, we allow comment lines that + * consist of '#' and '!' as the first character in the + * in the line. We also don't bother to parse short lines that + * can't possibly have enough data in them to comprise a + * properly formatted record. + */ + if (rest[0] != '#' && rest[0] != '!' && rest.size() > 5) { + /* + * copy the string into a stringstream and parse the line + * into the trdata object + */ + std::istringstream ioline(rest); + trdata t; + string nm; + ioline >> nm >> t.geom >> t.welldepth >> t.diam + >> t.dipole >> t.polar >> t.rot; + /* + * Add the trdata object into the map database by making a + * copy of it, and index it by the species name. + */ + if (nm != "") { + _trmap[nm] = t; // t.name] = t; + } + } +#else + trdata t; + string nm; + s >> nm; + if (nm[0] != '!' && !s.eof()) { + s >> t.geom >> t.welldepth >> t.diam + >> t.dipole >> t.polar >> t.rot; + + // get the rest of the line, in case there are comments + getline(s, rest); + if (nm != "") { + _trmap[nm] = t; // t.name] = t; + } + } + } +#endif + } + + + // add a NASA polynomial parameterization + static void addNASA( + 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(" )"); + } + + + static void addTransportParams(string name) { + + trdata td; + if (_with_transport && _trmap.find(name) != _trmap.end()) { + td = _trmap[name]; + } + else { + throw CanteraError("addTransportParams", + "no transport data for species "+name); + } + + printf(",\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; + } + printf(" diam = %8.2f,\n",td.diam); + printf(" well_depth = %8.2f",td.welldepth); + if (td.polar != 0.0) + printf(",\n polar = %8.2f",td.polar); + if (td.dipole != 0.0) + printf(",\n dipole = %8.2f",td.dipole); + if (td.rot != 0.0) + printf(",\n rot_relax = %8.2f",td.rot); + printf(")"); + } + + +// static void addShomate(XML_Node& node, +// const vector_fp& low, const vector_fp& high, +// doublereal minx, doublereal midx, +// doublereal maxx) { +// XML_Node& f = node.addChild("Shomate"); +// if (minx != -999.0) f.addAttribute("Tmin",minx); +// if (maxx != -999.0) f.addAttribute("Tmid",midx); +// if (maxx != -999.0) f.addAttribute("Tmax",maxx); +// addFloatArray(f,"low",low.size(),low.begin()); +// addFloatArray(f,"high",high.size(),high.begin()); +// } + + + static void addFalloff(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]); + if (params.size() >= 4) { + cout << ", T2 = " << fp2str(params[3]); + } + cout << ")"; + } + else if (type == "SRI") { + cout << ",\n falloff = SRI(A = " + << fp2str(params[0]) << ", B = " + << fp2str(params[1]) << ", C = " + << fp2str(params[2]); + if (params.size() >= 5) { + cout << ", D = " << fp2str(params[3]) + << ", E = " << fp2str(params[4]); + } + cout << ")"; + } + } + + /** + * addSpecies(): + * + */ + static void addSpecies(string idtag, const ckr::Species& sp) { + string spname = sp.name; + printf("\nspecies(name = \"%s\",\n",spname.c_str()); + int nel = sp.elements.size(); + int m, num; + string nm, str=""; + doublereal charge = 0.0; + for (m = 0; m < nel; m++) { + /* + * Copy the element name into the string, nm. Lower case the + * second letter, if needed. + */ + nm = sp.elements[m].name; + nm[0] = toupper(nm[0]); + if (nm.size() == 2) nm[1] = tolower(nm[1]); + /* + * Obtain the current number of atoms in the species. + * Linearize the number (HKM question? can we employ real values here + * instead?) + */ + num = int(sp.elements[m].number); + /* + * Add the name and number to end of the string, str + */ + str += " "+nm+":"+int2str(num)+" "; + + /* if the species contains the special element E (electron), + * then set the charge. + */ + if (nm == "E") charge = -sp.elements[m].number; + } + + /* + * Add the child element, atomArray, to the species xml node. + */ + printf(" atoms = \"%s\",\n", str.c_str()); + addNASA(sp.lowCoeffs, sp.highCoeffs, + sp.tlow, sp.tmid, sp.thigh); + + if (_with_transport) + addTransportParams(sp.name); + printf("\n )\n"); + } + + + static void addReaction(string idtag, int i, + const ckr::Reaction& rxn, + const ckr::ReactionUnits& runits, doublereal version) { + + cout << "\n# Reaction " << i+1 << endl; + string eqn = ckr::reactionEquation(rxn); + cout << "reaction( \"" << eqn << "\", "; + + if (rxn.isFalloffRxn) { + if (rxn.kf.type == ckr::Arrhenius) { + printf("\n k_inf = [%10.5E, %g, %g]", rxn.kf.A, rxn.kf.n, rxn.kf.E); + } + if (rxn.kf_aux.type == ckr::Arrhenius) { + printf(",\n k_0 = [%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); + else if (rxn.falloffType == ckr::Troe) + addFalloff("Troe",rxn.falloffParameters); + else if (rxn.falloffType == ckr::SRI) + addFalloff("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); + } + } + + + int ne = rxn.e3b.size(); + if (rxn.thirdBody != "") { + if (rxn.thirdBody != "M") { + ; + } + else if (ne > 0.0) { + map::const_iterator b = rxn.e3b.begin(), + e = rxn.e3b.end(); + string estr = ""; + for (; b != e; ++b) { + estr += " "+b->first+":"+fp2str(b->second)+" "; + } + cout << ",\n efficiencies = \"" << estr << "\""; + } + } + cout << ")" << endl; + } + + void writeline() { + cout << "#-------------------------------------------------------------------------------" << endl; + } + + /*! + * This routine is the main routine. It + * + * @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) { + + popError(); + doublereal version = 1.0; + cout << "from ctmm import *" << endl; + + cout << "dataset(\"" << idtag << "\")" << endl; + + cout << "\n\n"; + writeline(); + cout << "#\n# The default units. These will be used for dimensional quantities" << endl + << "# with unspecified units." << endl; + writeline(); + + cout << "units(length = \"cm\", time = \"s\", quantity = \"mol\", "; + string e_unit; + int eunit = r.units.ActEnergy; + if (eunit == ckr::Cal_per_Mole) + e_unit = "cal/mol"; + else if (eunit == ckr::Kcal_per_Mole) + e_unit = "kcal/mol"; + else if (eunit == ckr::Joules_per_Mole) + e_unit = "J/mol"; + else if (eunit == ckr::Kjoules_per_Mole) + e_unit = "kJ/mol"; + else if (eunit == ckr::Kelvin) + e_unit = "K"; + else if (eunit == ckr::Electron_Volts) + e_unit = "eV"; + cout << "act_energy = " << "\"" << e_unit << "\")\n\n"; + + cout << "\n\n\n"; + writeline(); + cout << "#\n# The phase definition. This specifies an ideal gas mixture that" << endl + << "# includes all species and reactions defined in this file." + << "\n#\n"; + writeline(); + + + printf("ideal_gas(name = \"%s\",\n",idtag.c_str()); + + string enames; + int nel = r.elements.size(); + int i; + map emap; + string elnm; + for (i = 0; i < nel; i++) { + elnm = r.elements[i].name; + elnm[0] = toupper(elnm[0]); + 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()); + + string spnames = ""; + int nsp = r.species.size(); + for (i = 0; i < nsp; i++) { + spnames += " "+r.species[i].name+" "; + if ((i+1) % 10 == 0) spnames += "\n "; + } + printf(" species = \"\"\"%s\"\"\",\n", spnames.c_str()); + printf(" reactions = \"all\""); + cout << " )" << endl; + + cout << "\n\n\n"; + writeline(); + cout << "#\n# Species data \n#\n"; + writeline(); + + for (i = 0; i < nsp; i++) { + addSpecies(idtag, r.species[i]); + } + + cout << "\n\n\n"; + writeline(); + cout << "#\n# Reaction data \n#\n"; + writeline(); + + + int nrxns = r.reactions.size(); + + int irxn = 0; + string idktag = idtag; + for (i = 0; i < nrxns; i++) { + + // if krev.A is non-zero, then the reverse rate coefficient is + // being explicitly specified rather than being computed from + // thermochemistry. In this case, convert the reaction into + // two irreversible reactions. + + if (r.reactions[i].krev.A != 0.0) { + addReaction(idktag, irxn, + ckr::forwardReaction(r.reactions[i]), r.units, version); + irxn++; + addReaction(idktag, irxn, + ckr::reverseReaction(r.reactions[i]), r.units, version); + irxn++; + } + + // Otherwise, just add the whole reaction, which may or may + // not be reversible. + else { + addReaction(idktag, irxn, r.reactions[i], + r.units, version); + irxn++; + } + } +// incl.addAttribute("min",1); +// incl.addAttribute("max", irxn); + } + + + + int convert_ck(const char* in_file, const char* db_file, + const char* tr_file, const char* id_tag) { + ckr::CKReader r; + r.validate = true; + //int i=1; + + string infile = string(in_file); + string dbfile = string(db_file); + string trfile = string(tr_file); + //string outfile = string(out_file); + string idtag = string(id_tag); + string logfile; + if (dbfile == "-") dbfile = ""; + if (trfile == "-") trfile = ""; + + struct tm *newtime; + time_t aclock; + ::time( &aclock ); /* Get time in seconds */ + newtime = localtime( &aclock ); /* Convert time to struct tm form */ + + try { + + logfile = "ck2ct.log"; + if (!r.read(infile, dbfile, logfile)) { + throw CanteraError("convert_ck", + "error encountered in input file " + string(infile) + + "\nsee file ck2ct.log for more information.\n"); + } + + + cout << "#" << endl; + cout << "# Generated from file " + << infile << "\n# by ck2ct on " << asctime(newtime) << "#\n" << endl; + if (trfile != "") { + cout << "# Transport data from file "+trfile+"." << endl; + getTransportData(trfile); + } + ck2ct(idtag, r); + cout << "write()" << endl; + } + catch (CanteraError) { + return -1; + } + + return 0; + } + +} + + diff --git a/Cantera/src/converters/ck2ct.h b/Cantera/src/converters/ck2ct.h new file mode 100644 index 000000000..a6c1dfecd --- /dev/null +++ b/Cantera/src/converters/ck2ct.h @@ -0,0 +1,24 @@ +#ifndef CT_CK2CT_H +#define CT_CK2CT_H + +#include +#include +#include + +//#include "ctml.h" + +namespace ckr{ + class CKReader; +} + +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); + +} + +#endif + diff --git a/Cantera/src/converters/ck2ctml.cpp b/Cantera/src/converters/ck2ctml.cpp index 6ce626f49..a57d66b01 100755 --- a/Cantera/src/converters/ck2ctml.cpp +++ b/Cantera/src/converters/ck2ctml.cpp @@ -40,10 +40,12 @@ namespace ctml { doublereal maxx) { XML_Node& f = node.addChild("NASA"); if (minx != -999.0) f.addAttribute("Tmin",minx); - if (maxx != -999.0) f.addAttribute("Tmid",midx); - if (maxx != -999.0) f.addAttribute("Tmax",maxx); - addFloatArray(f,"low",low.size(),low.begin()); - addFloatArray(f,"high",high.size(),high.begin()); + if (midx != -999.0) f.addAttribute("Tmax",midx); + addFloatArray(f,"coeffs",low.size(),low.begin()); + XML_Node& fh = node.addChild("NASA"); + if (midx != -999.0) fh.addAttribute("Tmin",midx); + if (maxx != -999.0) fh.addAttribute("Tmax",maxx); + addFloatArray(fh,"coeffs",high.size(),high.begin()); } /* @@ -66,10 +68,27 @@ namespace ctml { static void addArrhenius(XML_Node& node, doublereal A, doublereal b, doublereal E, int order, - string unitsys, string E_units) { + string id, string E_units) { + +#ifdef OLD_VERSION + // versions prior to 1.4.1 string abe = fp2str(A)+" "+fp2str(b)+" "+fp2str(E); XML_Node& r = node.addChild("Arrhenius",abe); r.addAttribute("order",order); +#else + // version 1.4.1 + XML_Node& rn = node.addChild("Arrhenius"); + if (id != "") rn.addAttribute("name",id); + string units; + if (order == 1) units = "/s"; + else if (order == 2) units = "cm3/mol/s"; + else if (order == 3) units = "cm6/mol2/s"; + else throw CanteraError("addArrhenius", + "unsupported rxn order: "+int2str(order)); + addFloat(rn, "A", A, units); + addFloat(rn, "b", b); + addFloat(rn, "E", E, E_units); +#endif } /* @@ -273,17 +292,17 @@ namespace ctml { XML_Node& kf = r.addChild("rateCoeff"); - kf.addAttribute("units","mol,cm,s"); - kf.addAttribute("Eunits",e_unit); + //kf.addAttribute("units","mol,cm,s"); + //kf.addAttribute("Eunits",e_unit); //kf.addAttribute("id",r["id"]+"_kf"); if (rxn.kf.type == ckr::Arrhenius) addArrhenius(kf, rxn.kf.A, rxn.kf.n, rxn.kf.E, - int(order), "mol,cm,s", e_unit); + int(order), "", e_unit); if (rxn.isFalloffRxn) { addArrhenius(kf, rxn.kf_aux.A, rxn.kf_aux.n, rxn.kf_aux.E, - int(order+1), "mol,cm,s", e_unit); + int(order+1), "k0", e_unit); if (rxn.falloffType == ckr::Lindemann) addFalloff(kf,"Lindemann",rxn.falloffParameters); @@ -426,15 +445,15 @@ namespace ctml { addString(tr,"geometry","nonlinear"); break; default: ; } - if (t.welldepth != 0.0) + //if (t.welldepth != 0.0) addFloat(tr,"LJ_welldepth",t.welldepth,"Kelvin"); - if (t.diam != 0.0) + //if (t.diam != 0.0) addFloat(tr,"LJ_diameter",t.diam,"A"); - if (t.dipole != 0.0) + //if (t.dipole != 0.0) addFloat(tr,"dipoleMoment",t.dipole,"Debye"); - if (t.polar != 0.0) + //if (t.polar != 0.0) addFloat(tr,"polarizability",t.polar,"A^3"); - if (t.rot != 0.0) + //if (t.rot != 0.0) addFloat(tr,"rotRelax",t.rot); } } @@ -562,6 +581,7 @@ namespace ctml { } XML_Node root("ctml"); + root["version"] = CTML_Version; root.addComment("generated from "+infile+" by ck2ctml."); if (trfile != "") root.addComment("transport data from "+trfile+"."); diff --git a/Cantera/src/ctml.cpp b/Cantera/src/ctml.cpp index 34a655e72..16a9048c8 100755 --- a/Cantera/src/ctml.cpp +++ b/Cantera/src/ctml.cpp @@ -21,6 +21,8 @@ #include "ctml.h" +#define CTML_VERSION_1_4_1 + namespace ctml { static doublereal fpValue(string val) { @@ -69,11 +71,15 @@ namespace ctml { string type, doublereal minval, doublereal maxval) { - string fmt = "%17.9E"; +#ifdef CTML_VERSION_1_4 XML_Node& f = node.addChild("float",val,fmt); f.addAttribute("title",title); - if (type != "") f.addAttribute("type",type); +#endif +#ifdef CTML_VERSION_1_4_1 + XML_Node& f = node.addChild(title,val,fmt); +#endif + if (type != "") f.addAttribute("type",type); if (units != "") f.addAttribute("units",units); if (minval != Undef) f.addAttribute("min",minval); if (maxval != Undef) f.addAttribute("max",maxval); diff --git a/Cantera/src/ctml.h b/Cantera/src/ctml.h index 75d861098..4a8f2a161 100755 --- a/Cantera/src/ctml.h +++ b/Cantera/src/ctml.h @@ -26,6 +26,8 @@ using namespace Cantera; namespace ctml { + const string CTML_Version = "1.4.1"; + bool isBuiltin(string nm); void addBool(XML_Node& node, diff --git a/Cantera/src/importCTML.cpp b/Cantera/src/importCTML.cpp index 00cd4743c..9568e9bbc 100755 --- a/Cantera/src/importCTML.cpp +++ b/Cantera/src/importCTML.cpp @@ -80,37 +80,70 @@ namespace Cantera { * Install a NASA polynomial thermodynamic property * parameterization for species k. */ - void installNasaThermo(SpeciesThermo& sp, int k, XML_Node& f) { - doublereal tmin, tmid, tmax; - tmin = fpValue(f["Tmin"]); - tmid = fpValue(f["Tmid"]); - tmax = fpValue(f["Tmax"]); + void installNasaThermo(SpeciesThermo& sp, int k, XML_Node& f0, XML_Node& f1) { + doublereal tmin0, tmax0, tmin1, tmax1, tmin, tmid, tmax; + + tmin0 = fpValue(f0["Tmin"]); + tmax0 = fpValue(f0["Tmax"]); + tmin1 = fpValue(f1["Tmin"]); + tmax1 = fpValue(f1["Tmax"]); - vector fa; - f.getChildren("floatArray",fa); vector_fp c0, c1; - getFloatArray(*fa[0], c0, false); - getFloatArray(*fa[1], c1, false); + if (fabs(tmax0 - tmin1) < 0.01) { + tmin = tmin0; + tmid = tmax0; + tmax = tmax1; + getFloatArray(f0.child("floatArray"), c0, false); + getFloatArray(f1.child("floatArray"), c1, false); + } + else if (fabs(tmax1 - tmin0) < 0.01) { + tmin = tmin1; + tmid = tmax1; + tmax = tmax0; + getFloatArray(f1.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; - if ((*fa[0])["title"] == "low") { - 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); - } - else { - c[1] = c1[5]; - c[2] = c1[6]; - copy(c1.begin(), c1.begin()+5, c.begin() + 3); - c[8] = c0[5]; - c[9] = c0[6]; - copy(c0.begin(), c0.begin()+5, c.begin() + 10); - } + 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(k, NASA, c.begin(), tmin, tmax, p0); + +// tmax = fpValue(f["Tmax"]); + +// vector fa; +// f.getChildren("floatArray",fa); +// vector_fp c0, c1; +// getFloatArray(*fa[0], c0, false); +// getFloatArray(*fa[1], c1, false); +// array_fp c(15); +// c[0] = tmid; +// doublereal p0 = OneAtm; +// if ((*fa[0])["title"] == "low") { +// 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); +// } +// else { +// c[1] = c1[5]; +// c[2] = c1[6]; +// copy(c1.begin(), c1.begin()+5, c.begin() + 3); +// c[8] = c0[5]; +// c[9] = c0[6]; +// copy(c0.begin(), c0.begin()+5, c.begin() + 10); +// } +// sp.install(k, NASA, c.begin(), tmin, tmax, p0); } /** @@ -210,10 +243,10 @@ namespace Cantera { int nc = tp.size(); if (nc == 1) { XML_Node& f = *tp[0]; - if (f.name() == "NASA") { - installNasaThermo(spthermo, k, f); - } - else if (f.name() == "Shomate") { + //if (f.name() == "NASA") { + // installNasaThermo(spthermo, k, f); + //} + if (f.name() == "Shomate") { installShomateThermo(spthermo, k, f); } else if (f.name() == "const_cp") { @@ -222,7 +255,14 @@ namespace Cantera { else throw CanteraError("importCTML", "Unsupported species thermo parameterization" - " for species "+s["name"]); + " for species "+s["name"]+": "+f.name()); + } + else if (nc == 2) { + XML_Node& f0 = *tp[0]; + XML_Node& f1 = *tp[1]; + if (f0.name() == "NASA" && f1.name() == "NASA") { + installNasaThermo(spthermo, k, f0, f1); + } } else throw CanteraError("importCTML", @@ -276,53 +316,43 @@ namespace Cantera { } - void getArrhenius(XML_Node& node, int& order, doublereal& A, doublereal& b, + void getArrhenius(XML_Node& node, int& highlow, doublereal& A, doublereal& b, doublereal& E) { - // get rxn order to do unit conversion for pre-exponential - order = intValue(node["order"]); + if (node["name"] == "k0") + highlow = 0; + else highlow = 1; - //nodeset_t c = node.children(); + A = getFloat(node, "A", "-"); + b = getFloat(node, "b"); + E = getFloat(node, "E", "-"); + E /= GasConstant; + } - vector abe; - getStringArray(node, abe); - A = fpValue(abe[0]); - b = fpValue(abe[1]); - E = fpValue(abe[2]); - - string u = (*node.parent())["units"]; - string eu = (*node.parent())["Eunits"]; - - doublereal cmult = 1.0; - if (u != "") { - if (u == "mol,cm,s") - cmult = 1.0e-6 / CtMoles_per_mole; - else if (u == "molec,cm,s") - cmult = 1.0e-6*Avogadro; + void getStick(XML_Node& node, doublereal mw, Kinetics& kin, + ReactionData& r, doublereal& A, doublereal& b, doublereal& E) { + int nr = r.reactants.size(); + int k, ns, not_surf = 0; + doublereal f = 1.0; + for (int n = 0; n < nr; n++) { + k = r.reactants[n]; + ns = r.rstoich[n]; + const ThermoPhase& p = kin.speciesPhase(k); + if (p.eosType() == cSurf) + f /= pow(p.standardConcentration(k),ns); else - throw CanteraError("getArrhenius","unknown units for A"); + not_surf++; } - A *= pow(cmult, order - 1); - - doublereal gasConstant = 1.0; - if (eu != "") { - if (eu == "cal/mol") - gasConstant = 1.987; - else if (eu == "kcal/mol") - gasConstant = 1.987e-3; - else if (eu == "J/mol") - gasConstant = 8.314; - else if (eu == "kJ/mol") - gasConstant = 8.314e-3; - else if (eu == "K") - gasConstant = 1.0; - else if (eu == "eV") - gasConstant = 1.0/11600.0; - else - throw CanteraError("getArrhenius", - "unknown units for activation energy: "+eu); + if (not_surf != 1) { + throw CanteraError("getStick", + "reaction probabilities can only be used in " + "reactions with exactly 1 bulk species."); } - E /= gasConstant; + doublereal cbar = sqrt(8.0*GasConstant/(Pi*mw)); + A = 0.25 * getFloat(node, "A", "-") * cbar * f; + b = getFloat(node, "b") + 0.5; + E = getFloat(node, "E", "-"); + E /= GasConstant; } @@ -384,36 +414,30 @@ namespace Cantera { int nc = kf.nChildren(); const nodeset_t& kf_children = kf.children(); vector_fp clow(3,0.0), chigh(3,0.0); - int nr = nReacMolecules(rdata); + // int nr = nReacMolecules(rdata); for (int m = 0; m < nc; m++) { node_t& c = *kf_children[m]; string nm = c.name(); - int order=0; + int highlow=0; if (nm == "Arrhenius") { vector_fp coeff(3); - getArrhenius(c, order, coeff[0], coeff[1], coeff[2]); - if (order == 0) order = nr; - if (order == nr || rdata.reactionType == THREE_BODY_RXN + getArrhenius(c, highlow, coeff[0], coeff[1], coeff[2]); + if (highlow == 1 || rdata.reactionType == THREE_BODY_RXN || rdata.reactionType == ELEMENTARY_RXN) chigh = coeff; - else if (order == nr + 1) clow = coeff; - else { - cerr << "\n\n\n" << endl; - kf.write(cerr); - throw CanteraError("importCTML", - "wrong Arrhenius coeff order"); - } + else clow = coeff; } -// else if (nm == "Stick") { -// vector_fp coeff(3); -// string spname = c["species"]; -// ThermoPhase& th = kin.speciesPhase(spname); -// int isp = th.speciesIndex(spname); -// double mw = th.molecularWeights()[isp]; -// cbar = sqrt((8.0*GasConstant)/(Pi*mw)); - // - // } + else if (nm == "Stick") { + vector_fp coeff(3); + string spname = c["species"]; + ThermoPhase& th = kin.speciesPhase(spname); + int isp = th.speciesIndex(spname); + double mw = th.molecularWeights()[isp]; + getStick(c, mw, kin, rdata, coeff[0], coeff[1], coeff[2]); + chigh = coeff; + } + else if (nm == "falloff") { getFalloff(c, rdata); } @@ -540,7 +564,7 @@ namespace Cantera { /************************************************* - * Add the elements. + * AddArrhethe elements. ************************************************/ @@ -578,19 +602,27 @@ namespace Cantera { * the species database. ***************************************************************/ - XML_Node& species = phase.child("speciesArray"); + vector sparrays; + phase.getChildren("speciesArray", sparrays); + int jsp, nspa = sparrays.size(); + vector dbases; + vector_int sprule(nspa,0); - int sprule = 0; - if (species.hasChild("skip")) { - XML_Node& sk = species.child("skip"); - string eskip = sk["element"]; - if (eskip == "undeclared") { - sprule = 1; + for (jsp = 0; jsp < nspa; jsp++) { + + XML_Node& species = *sparrays[jsp]; // phase.child("speciesArray"); + + if (species.hasChild("skip")) { + XML_Node& sk = species.child("skip"); + string eskip = sk["element"]; + if (eskip == "undeclared") { + sprule[jsp] = 1; + } } + db = find_XML(species["datasrc"], &phase.root(), species["idRef"], + "","speciesData"); + dbases.push_back(db); } - - db = find_XML(species["datasrc"], &phase.root(), species["idRef"], - "","speciesData"); /******************************************************* @@ -602,42 +634,55 @@ namespace Cantera { ******************************************************/ delete &th->speciesThermo(); - SpeciesThermo* spth = newSpeciesThermoMgr(db); + SpeciesThermo* spth = newSpeciesThermoMgr(dbases); th->setSpeciesThermo(spth); SpeciesThermo& spthermo = th->speciesThermo(); - - /* - * Get the array of species name strings. - */ - vector spnames; - getStringArray(species, spnames); - int nsp = spnames.size(); - map declared; - string name; int k = 0; - for (i = 0; i < nsp; i++) { - name = spnames[i]; - - // Check that every species is only declared once - if (declared[name]) { - throw CanteraError("importPhase", - "duplicate species: "+name); - } - declared[name] = true; + for (jsp = 0; jsp < nspa; jsp++) { + + XML_Node& species = *sparrays[jsp]; + db = dbases[jsp]; /* - * Find the species in the database by name. - */ - XML_Node* s = db->findByAttr("name",spnames[i]); - if (s) { - if (installSpecies(k, *s, *th, spthermo, sprule)) - ++k; + * Get the array of species name strings. + */ + vector spnames; + getStringArray(species, spnames); + int nsp = spnames.size(); + + if (nsp == 1 && spnames[0] == "all") { + vector allsp; + db->getChildren("species",allsp); + nsp = allsp.size(); + spnames.resize(nsp); + for (int nn = 0; nn < nsp; nn++) spnames[nn] = (*allsp[nn])["name"]; } - else { - throw CanteraError("importPhase","no data for species " - +name); + + string name; + for (i = 0; i < nsp; i++) { + name = spnames[i]; + + // Check that every species is only declared once + if (declared[name]) { + throw CanteraError("importPhase", + "duplicate species: "+name); + } + declared[name] = true; + + /* + * Find the species in the database by name. + */ + XML_Node* s = db->findByAttr("name",spnames[i]); + if (s) { + if (installSpecies(k, *s, *th, spthermo, sprule[jsp])) + ++k; + } + else { + throw CanteraError("importPhase","no data for species " + +name); + } } } th->freezeSpecies(); @@ -661,7 +706,11 @@ namespace Cantera { int nn, eqlen; vector_fp dummy; - eqn = r("equation"); + if (r.hasChild("equation")) + eqn = r("equation"); + else + eqn = ""; + eqlen = eqn.size(); for (nn = 0; nn < eqlen; nn++) { if (eqn[nn] == '[') eqn[nn] = '<'; @@ -677,7 +726,7 @@ namespace Cantera { ok = ok && getReagents(r, kin, -1, default_phase, rdata.products, rdata.pstoich, dummy, rule); if (!ok) { - cout << "skipping " << eqn << endl; + //cout << "skipping " << eqn << endl; return false; } @@ -715,9 +764,6 @@ namespace Cantera { bool installReactionArrays(XML_Node& p, Kinetics& kin, string default_phase) { - - writer = new GasKineticsWriter; - vector rarrays; int itot = 0; p.getChildren("reactionArray",rarrays); @@ -736,40 +782,50 @@ namespace Cantera { rxnrule = 1; } } - + int i, nrxns = 0; vector incl; rxns.getChildren("include",incl); int ninc = incl.size(); - for (int nii = 0; nii < ninc; nii++) { - int nrxns = 0; - XML_Node& ii = *incl[nii]; - vector rxn_ids; - string pref = ii["prefix"]; - int imin = atoi(ii["min"].c_str()); - int imax = atoi(ii["max"].c_str()); - if (imin != 0 && imax != 0) { - nrxns = imax - imin + 1; - for (int nn=0; nn allrxns; + rdata->getChildren("reaction",allrxns); + nrxns = allrxns.size(); for (i = 0; i < nrxns; i++) { - XML_Node* r = rdata->findID(rxn_ids[i],1); + XML_Node* r = allrxns[i]; if (r) { if (installReaction(itot, *r, &kin, default_phase, rxnrule)) ++itot; } } } + else { + for (int nii = 0; nii < ninc; nii++) { + nrxns = 0; + XML_Node& ii = *incl[nii]; + vector rxn_ids; + string pref = ii["prefix"]; + int imin = atoi(ii["min"].c_str()); + int imax = atoi(ii["max"].c_str()); + if (imin != 0 && imax != 0) { + nrxns = imax - imin + 1; + for (int nn=0; nnfindID(rxn_ids[i],1); + if (r) { + if (installReaction(itot, *r, &kin, + default_phase, rxnrule)) ++itot; + } + } + } + } } kin.finalize(); - ofstream fwrite("mech.cpp"); - //writer->writeGetNetProductionRates(cout, kin.nTotalSpecies(), - // kin.nReactions()); - fwrite.close(); - delete writer; writer = 0; return true; } diff --git a/Cantera/src/transport/MultiTransport.cpp b/Cantera/src/transport/MultiTransport.cpp index b408d2540..a06089e4b 100755 --- a/Cantera/src/transport/MultiTransport.cpp +++ b/Cantera/src/transport/MultiTransport.cpp @@ -45,33 +45,33 @@ namespace Cantera { - template - struct UpdateSpeciesVisc : public Updater { - UpdateSpeciesVisc(S& s) : Updater(), m_s(s) {} - void update() { m_s._update_species_visc_T(); } - S& m_s; - }; +// template +// struct UpdateSpeciesVisc : public Updater { +// UpdateSpeciesVisc(S& s) : Updater(), m_s(s) {} +// void update() { m_s._update_species_visc_T(); } +// S& m_s; +// }; - template - struct UpdateVisc_T : public Updater { - UpdateVisc_T(S& s) : Updater(), m_s(s) {} - void update() { m_s._update_visc_T(); } - S& m_s; - }; +// template +// struct UpdateVisc_T : public Updater { +// UpdateVisc_T(S& s) : Updater(), m_s(s) {} +// void update() { m_s._update_visc_T(); } +// S& m_s; +// }; - template - struct UpdateDiff_T : public Updater { - UpdateDiff_T(S& s) : Updater(), m_s(s) {} - void update() { m_s._update_diff_T(); } - S& m_s; - }; +// template +// struct UpdateDiff_T : public Updater { +// UpdateDiff_T(S& s) : Updater(), m_s(s) {} +// void update() { m_s._update_diff_T(); } +// S& m_s; +// }; - template - struct UpdateThermal_T : public Updater { - UpdateThermal_T(S& s) : Updater(), m_s(s) {} - void update() { m_s._update_thermal_T(); } - S& m_s; - }; +// template +// struct UpdateThermal_T : public Updater { +// UpdateThermal_T(S& s) : Updater(), m_s(s) {} +// void update() { m_s._update_thermal_T(); } +// S& m_s; +// }; /////////////////////////// constants ////////////////////////// @@ -189,6 +189,11 @@ namespace Cantera { m_l0000_ok = false; m_lmatrix_soln_ok = false; + m_diff_tlast = 0.0; + m_spvisc_tlast = 0.0; + m_visc_tlast = 0.0; + m_thermal_tlast = 0.0; + // use LU decomposition by default m_gmres = false; @@ -223,19 +228,19 @@ namespace Cantera { m_sqrt_eps_k[k]/sq298); } - // install updaters - m_update_transport_T = m_thermo->installUpdater_T( - new UpdateTransport_T(*this)); - m_update_transport_C = m_thermo->installUpdater_C( - new UpdateTransport_C(*this)); - m_update_spvisc_T = m_thermo->installUpdater_T( - new UpdateSpeciesVisc(*this)); - m_update_visc_T = m_thermo->installUpdater_T( - new UpdateVisc_T(*this)); - m_update_diff_T = m_thermo->installUpdater_T( - new UpdateDiff_T(*this)); - m_update_thermal_T = m_thermo->installUpdater_T( - new UpdateThermal_T(*this)); +// // install updaters +// m_update_transport_T = m_thermo->installUpdater_T( +// new UpdateTransport_T(*this)); +// m_update_transport_C = m_thermo->installUpdater_C( +// new UpdateTransport_C(*this)); +// m_update_spvisc_T = m_thermo->installUpdater_T( +// new UpdateSpeciesVisc(*this)); +// m_update_visc_T = m_thermo->installUpdater_T( +// new UpdateVisc_T(*this)); +// m_update_diff_T = m_thermo->installUpdater_T( +// new UpdateDiff_T(*this)); +// m_update_thermal_T = m_thermo->installUpdater_T( +// new UpdateThermal_T(*this)); return true; } @@ -551,14 +556,25 @@ namespace Cantera { } } - + + void MultiTransport::updateTransport_T() { + //m_thermo->update_T(m_update_transport_T); + _update_transport_T(); + } + + void MultiTransport::updateTransport_C() { + // {m_thermo->update_C(m_update_transport_C); + _update_transport_C(); + } + + /** * Update temperature-dependent quantities. This method is called * by the temperature property updater. */ void MultiTransport::_update_transport_T() { - //if (m_temp == m_thermo->temperature()) return; + if (m_temp == m_thermo->temperature()) return; m_temp = m_thermo->temperature(); m_logt = log(m_temp); @@ -620,7 +636,10 @@ namespace Cantera { * from the polynomial fits at unit pressure (1 Pa). */ void MultiTransport::updateDiff_T() { - m_thermo->update_T(m_update_diff_T); + if (m_diff_tlast == m_thermo->temperature()) return; + _update_diff_T(); + m_diff_tlast = m_thermo->temperature(); + //m_thermo->update_T(m_update_diff_T); } void MultiTransport::_update_diff_T() { @@ -661,7 +680,10 @@ namespace Cantera { * The flag m_visc_ok is set to true. */ void MultiTransport::updateSpeciesViscosities_T() { - m_thermo->update_T(m_update_spvisc_T); + if (m_spvisc_tlast == m_thermo->temperature()) return; + _update_species_visc_T(); + //m_thermo->update_T(m_update_spvisc_T); + m_spvisc_tlast = m_thermo->temperature(); } @@ -687,7 +709,10 @@ namespace Cantera { * @internal */ void MultiTransport::updateViscosity_T() { - m_thermo->update_T(m_update_visc_T); + if (m_visc_tlast == m_thermo->temperature()) return; + _update_visc_T(); + //m_thermo->update_T(m_update_visc_T); + m_visc_tlast = m_thermo->temperature(); } void MultiTransport::_update_visc_T() { @@ -718,10 +743,14 @@ namespace Cantera { * thermal conductivity and thermal diffusion coefficients. */ void MultiTransport::updateThermal_T() { - m_thermo->update_T(m_update_thermal_T); + if (m_thermal_tlast == m_thermo->temperature()) return; + _update_thermal_T(); + // m_thermo->update_T(m_update_thermal_T); + m_thermal_tlast = m_thermo->temperature(); } void MultiTransport::_update_thermal_T() { + // we need species viscosities and binary diffusion // coefficients updateSpeciesViscosities_T(); diff --git a/Cantera/src/transport/MultiTransport.h b/Cantera/src/transport/MultiTransport.h index 2e95b74e3..a0ae8ea7d 100755 --- a/Cantera/src/transport/MultiTransport.h +++ b/Cantera/src/transport/MultiTransport.h @@ -141,9 +141,8 @@ namespace Cantera { * are the ones with names beginning with an underscore. These * are only called by the property updaters. */ - - void updateTransport_T() {m_thermo->update_T(m_update_transport_T);} - void updateTransport_C() {m_thermo->update_C(m_update_transport_C);} + void updateTransport_T(); + void updateTransport_C(); void updateThermal_T(); void updateViscosity_T(); @@ -167,13 +166,15 @@ namespace Cantera { private: - int m_update_transport_T; - int m_update_transport_C; - int m_update_spvisc_T; - int m_update_visc_T; - int m_update_diff_T; - int m_update_thermal_T; +// int m_update_transport_T; +// int m_update_transport_C; +// int m_update_spvisc_T; +// int m_update_visc_T; +// int m_update_diff_T; +// int m_update_thermal_T; + doublereal m_diff_tlast, m_spvisc_tlast, m_visc_tlast, + m_thermal_tlast; // mixture attributes int m_nsp; diff --git a/Cantera/src/transport/TransportFactory.cpp b/Cantera/src/transport/TransportFactory.cpp index 993a337f9..74a7090cf 100755 --- a/Cantera/src/transport/TransportFactory.cpp +++ b/Cantera/src/transport/TransportFactory.cpp @@ -691,12 +691,19 @@ namespace Cantera { getString(tr, "geometry", val, type); geom = gindx[val] - 100; map fv; - getFloats(tr, fv, false); - welldepth = fv["LJ_welldepth"]; - diam = fv["LJ_diameter"]; - dipole = fv["dipoleMoment"]; - polar = fv["polarizability"]; - rot = fv["rotRelax"]; + + welldepth = getFloat(tr, "LJ_welldepth"); + diam = getFloat(tr, "LJ_diameter"); + dipole = getFloat(tr, "dipoleMoment"); + polar = getFloat(tr, "polarizability"); + rot = getFloat(tr, "rotRelax"); + + //getFloats(tr, fv, false); + //welldepth = fv["LJ_welldepth"]; + //diam = fv["LJ_diameter"]; + //dipole = fv["dipoleMoment"]; + //polar = fv["polarizability"]; + //rot = fv["rotRelax"]; TransportData data; data.speciesName = name; diff --git a/Cantera/src/units.h b/Cantera/src/units.h index f599a444f..cd3af54a9 100644 --- a/Cantera/src/units.h +++ b/Cantera/src/units.h @@ -25,6 +25,7 @@ namespace Cantera { string u = units, tok, tsub; int k; char action = '-'; + //if (units[0] == '/') action = '/'; while (1 > 0) { k = u.find_first_of("/-"); if (k >= 0) @@ -32,7 +33,9 @@ namespace Cantera { else tok = u; tsize = tok.size(); - if (tok[tsize - 1] == '2') { + if (tsize == 0) + fctr = 1.0; + else if (tok[tsize - 1] == '2') { tsub = tok.substr(0,tsize-1); fctr = m_u[tsub]; fctr *= fctr; @@ -42,6 +45,21 @@ namespace Cantera { fctr = m_u[tsub]; fctr *= fctr*fctr; } + else if (tok[tsize - 1] == '4') { + tsub = tok.substr(0,tsize-1); + fctr = m_u[tsub]; + fctr *= fctr*fctr*fctr; + } + else if (tok[tsize - 1] == '5') { + tsub = tok.substr(0,tsize-1); + fctr = m_u[tsub]; + fctr *= fctr*fctr*fctr*fctr; + } + else if (tok[tsize - 1] == '6') { + tsub = tok.substr(0,tsize-1); + fctr = m_u[tsub]; + fctr *= fctr*fctr*fctr*fctr*fctr; + } else { tsub = tok; fctr = m_u[tok]; @@ -96,6 +114,12 @@ namespace Cantera { m_u["atm"] = 1.01325e5; m_u["bar"] = 1.0e5; m_u["Pa"] = 1.0; + + // time + m_u["s"] = 1.0; + m_u["min"] = 60.0; + m_u["hr"] = 3600.0; + m_u["ms"] = 0.001; } }; } diff --git a/config/configure b/config/configure index 7d8386f2e..09b2f54c3 100755 --- a/config/configure +++ b/config/configure @@ -949,6 +949,12 @@ ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. +echo +echo "**************************************************************" +echo " Cantera Configuration Script " +echo "**************************************************************" +echo + cat >>confdefs.h <<\EOF #define NDEBUG 1 EOF @@ -960,6 +966,27 @@ local_inst=1 if test "x${prefix}" = "xNONE"; then prefix=${ac_default_prefix} local_inst=0 + if test ! -d ${prefix}; then + echo + echo "********************************************************************" + echo "Installation directory /usr/local 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 + +echo "Cantera will be installed in ${prefix}" +if test ! -w ${prefix}; then +echo "checking for write-access... no" +echo +echo "**** Since you do not have write-access to ${prefix}, you will need to" +echo "**** run the 'make install' step as super-user." +echo +else +echo "checking for write-access... yes" fi CANTERA_LIBDIR=$prefix/lib/cantera @@ -970,11 +997,11 @@ if test -z "$username"; then username=$USER; fi # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:973: error: cannot run $ac_config_sub" >&5 + { { echo "$as_me:1000: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:977: checking build system type" >&5 +echo "$as_me:1004: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -983,23 +1010,23 @@ else test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && - { { echo "$as_me:986: error: cannot guess build type; you must specify one" >&5 + { { echo "$as_me:1013: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:990: error: $ac_config_sub $ac_cv_build_alias failed." >&5 + { { echo "$as_me:1017: error: $ac_config_sub $ac_cv_build_alias failed." >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:995: result: $ac_cv_build" >&5 +echo "$as_me:1022: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$as_me:1002: checking host system type" >&5 +echo "$as_me:1029: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1008,19 +1035,19 @@ else test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:1011: error: $ac_config_sub $ac_cv_host_alias failed" >&5 + { { echo "$as_me:1038: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1016: result: $ac_cv_host" >&5 +echo "$as_me:1043: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -echo "$as_me:1023: checking target system type" >&5 +echo "$as_me:1050: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6 if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1029,12 +1056,12 @@ else test "x$ac_cv_target_alias" = "x" && ac_cv_target_alias=$ac_cv_host_alias ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:1032: error: $ac_config_sub $ac_cv_target_alias failed" >&5 + { { echo "$as_me:1059: error: $ac_config_sub $ac_cv_target_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:1037: result: $ac_cv_target" >&5 +echo "$as_me:1064: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6 target=$ac_cv_target target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` @@ -1213,23 +1240,16 @@ if test -z "$CANTERA_DATA_DIR"; then CANTERA_DATA_DIR=$CANTERA_ROOT/data; fi #------------------------------------------------- BUILD_CLIB=0 -# -# Fortran 90 Interface -# -BUILD_F90=0 -if test "$BUILD_FORTRAN_90_INTERFACE" = "y"; then BUILD_F90=1; BUILD_CLIB=1; fi - # # Python Interface # BUILD_PYTHON=0 -if test "$BUILD_PYTHON_INTERFACE" != "n"; then - if test -z "$PYTHON_CMD"; then +if test -z "$PYTHON_CMD"; then for ac_prog in python2 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:1232: checking for $ac_word" >&5 +echo "$as_me:1252: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PYTHON_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1246,7 +1266,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_PYTHON_CMD="$ac_dir/$ac_word" - echo "$as_me:1249: found $ac_dir/$ac_word" >&5 + echo "$as_me:1269: found $ac_dir/$ac_word" >&5 break fi done @@ -1257,10 +1277,10 @@ fi PYTHON_CMD=$ac_cv_path_PYTHON_CMD if test -n "$PYTHON_CMD"; then - echo "$as_me:1260: result: $PYTHON_CMD" >&5 + echo "$as_me:1280: result: $PYTHON_CMD" >&5 echo "${ECHO_T}$PYTHON_CMD" >&6 else - echo "$as_me:1263: result: no" >&5 + echo "$as_me:1283: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1268,10 +1288,19 @@ fi done test -n "$PYTHON_CMD" || PYTHON_CMD=""none"" - if test "$PYTHON_CMD" != "none"; then BUILD_PYTHON=1; BUILD_CLIB=1; fi - else - BUILD_PYTHON=1 +fi +if test "$PYTHON_CMD" != "none"; then + if test "$BUILD_PYTHON_INTERFACE" != "n"; then + BUILD_PYTHON=1; BUILD_CLIB=1 fi +else + echo + echo "********************************************************************" + echo "Configuration error. Python is required to build Cantera, but it" + echo "cannot be found. Set environment variable PYTHON_CMD to the command to" + echo "run the Python interpreter on your system, and run configure again." + echo "********************************************************************" + exit 1 fi # @@ -1282,7 +1311,7 @@ if test "$BUILD_MATLAB_TOOLBOX" != "n"; then if test -z "$MATLAB_CMD"; then # Extract the first word of "matlab", so it can be a program name with args. set dummy matlab; ac_word=$2 -echo "$as_me:1285: checking for $ac_word" >&5 +echo "$as_me:1314: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_MATLAB_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1299,7 +1328,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if $as_executable_p "$ac_dir/$ac_word"; then ac_cv_path_MATLAB_CMD="$ac_dir/$ac_word" - echo "$as_me:1302: found $ac_dir/$ac_word" >&5 + echo "$as_me:1331: found $ac_dir/$ac_word" >&5 break fi done @@ -1311,10 +1340,10 @@ fi MATLAB_CMD=$ac_cv_path_MATLAB_CMD if test -n "$MATLAB_CMD"; then - echo "$as_me:1314: result: $MATLAB_CMD" >&5 + echo "$as_me:1343: result: $MATLAB_CMD" >&5 echo "${ECHO_T}$MATLAB_CMD" >&6 else - echo "$as_me:1317: result: no" >&5 + echo "$as_me:1346: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1336,7 +1365,7 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:1339: checking for $ac_word" >&5 +echo "$as_me:1368: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1351,7 +1380,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" -echo "$as_me:1354: found $ac_dir/$ac_word" >&5 +echo "$as_me:1383: found $ac_dir/$ac_word" >&5 break done @@ -1359,10 +1388,10 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:1362: result: $CXX" >&5 + echo "$as_me:1391: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else - echo "$as_me:1365: result: no" >&5 + echo "$as_me:1394: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1375,7 +1404,7 @@ if test -z "$CXX"; then 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:1378: checking for $ac_word" >&5 +echo "$as_me:1407: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1390,7 +1419,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CXX="$ac_prog" -echo "$as_me:1393: found $ac_dir/$ac_word" >&5 +echo "$as_me:1422: found $ac_dir/$ac_word" >&5 break done @@ -1398,10 +1427,10 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - echo "$as_me:1401: result: $ac_ct_CXX" >&5 + echo "$as_me:1430: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else - echo "$as_me:1404: result: no" >&5 + echo "$as_me:1433: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1413,27 +1442,27 @@ test -n "$ac_ct_CXX" || ac_ct_CXX="g++" fi # Provide some information about the compiler. -echo "$as_me:1416:" \ +echo "$as_me:1445:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1419: \"$ac_compiler --version &5\"") >&5 +{ (eval echo "$as_me:1448: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? - echo "$as_me:1422: \$? = $ac_status" >&5 + echo "$as_me:1451: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1424: \"$ac_compiler -v &5\"") >&5 +{ (eval echo "$as_me:1453: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? - echo "$as_me:1427: \$? = $ac_status" >&5 + echo "$as_me:1456: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:1429: \"$ac_compiler -V &5\"") >&5 +{ (eval echo "$as_me:1458: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? - echo "$as_me:1432: \$? = $ac_status" >&5 + echo "$as_me:1461: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF -#line 1436 "configure" +#line 1465 "configure" #include "confdefs.h" int @@ -1449,13 +1478,13 @@ ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:1452: checking for C++ compiler default output" >&5 +echo "$as_me:1481: checking for C++ compiler default output" >&5 echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:1455: \"$ac_link_default\"") >&5 +if { (eval echo "$as_me:1484: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? - echo "$as_me:1458: \$? = $ac_status" >&5 + echo "$as_me:1487: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last @@ -1478,34 +1507,34 @@ done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -{ { echo "$as_me:1481: error: C++ compiler cannot create executables" >&5 +{ { echo "$as_me:1510: error: C++ compiler cannot create executables" >&5 echo "$as_me: error: C++ compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:1487: result: $ac_file" >&5 +echo "$as_me:1516: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:1492: checking whether the C++ compiler works" >&5 +echo "$as_me:1521: checking whether the C++ compiler works" >&5 echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:1498: \"$ac_try\"") >&5 + { (eval echo "$as_me:1527: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1501: \$? = $ac_status" >&5 + echo "$as_me:1530: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:1508: error: cannot run C++ compiled programs. + { { echo "$as_me:1537: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'." >&2;} @@ -1513,24 +1542,24 @@ If you meant to cross compile, use \`--host'." >&2;} fi fi fi -echo "$as_me:1516: result: yes" >&5 +echo "$as_me:1545: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:1523: checking whether we are cross compiling" >&5 +echo "$as_me:1552: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1525: result: $cross_compiling" >&5 +echo "$as_me:1554: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 -echo "$as_me:1528: checking for executable suffix" >&5 +echo "$as_me:1557: checking for executable suffix" >&5 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1530: \"$ac_link\"") >&5 +if { (eval echo "$as_me:1559: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:1533: \$? = $ac_status" >&5 + echo "$as_me:1562: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will @@ -1546,25 +1575,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do esac done else - { { echo "$as_me:1549: error: cannot compute EXEEXT: cannot compile and link" >&5 + { { echo "$as_me:1578: error: cannot compute EXEEXT: cannot compile and link" >&5 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext -echo "$as_me:1555: result: $ac_cv_exeext" >&5 +echo "$as_me:1584: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:1561: checking for object suffix" >&5 +echo "$as_me:1590: checking for object suffix" >&5 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 1567 "configure" +#line 1596 "configure" #include "confdefs.h" int @@ -1576,10 +1605,10 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:1579: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:1608: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1582: \$? = $ac_status" >&5 + echo "$as_me:1611: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in @@ -1591,24 +1620,24 @@ done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -{ { echo "$as_me:1594: error: cannot compute OBJEXT: cannot compile" >&5 +{ { echo "$as_me:1623: error: cannot compute OBJEXT: cannot compile" >&5 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:1601: result: $ac_cv_objext" >&5 +echo "$as_me:1630: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:1605: checking whether we are using the GNU C++ compiler" >&5 +echo "$as_me:1634: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 1611 "configure" +#line 1640 "configure" #include "confdefs.h" int @@ -1623,16 +1652,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1626: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:1655: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1629: \$? = $ac_status" >&5 + echo "$as_me:1658: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1632: \"$ac_try\"") >&5 + { (eval echo "$as_me:1661: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1635: \$? = $ac_status" >&5 + echo "$as_me:1664: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else @@ -1644,19 +1673,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:1647: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "$as_me:1676: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" -echo "$as_me:1653: checking whether $CXX accepts -g" >&5 +echo "$as_me:1682: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 1659 "configure" +#line 1688 "configure" #include "confdefs.h" int @@ -1668,16 +1697,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1671: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:1700: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1674: \$? = $ac_status" >&5 + echo "$as_me:1703: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1677: \"$ac_try\"") >&5 + { (eval echo "$as_me:1706: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1680: \$? = $ac_status" >&5 + echo "$as_me:1709: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else @@ -1687,7 +1716,7 @@ ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:1690: result: $ac_cv_prog_cxx_g" >&5 +echo "$as_me:1719: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS @@ -1714,7 +1743,7 @@ for ac_declaration in \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line 1717 "configure" +#line 1746 "configure" #include "confdefs.h" #include $ac_declaration @@ -1727,16 +1756,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1730: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:1759: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1733: \$? = $ac_status" >&5 + echo "$as_me:1762: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1736: \"$ac_try\"") >&5 + { (eval echo "$as_me:1765: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1739: \$? = $ac_status" >&5 + echo "$as_me:1768: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else @@ -1746,7 +1775,7 @@ continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line 1749 "configure" +#line 1778 "configure" #include "confdefs.h" $ac_declaration int @@ -1758,16 +1787,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:1761: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:1790: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:1764: \$? = $ac_status" >&5 + echo "$as_me:1793: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1767: \"$ac_try\"") >&5 + { (eval echo "$as_me:1796: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:1770: \$? = $ac_status" >&5 + echo "$as_me:1799: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else @@ -1797,7 +1826,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1800: checking for $ac_word" >&5 +echo "$as_me:1829: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1812,7 +1841,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}gcc" -echo "$as_me:1815: found $ac_dir/$ac_word" >&5 +echo "$as_me:1844: found $ac_dir/$ac_word" >&5 break done @@ -1820,10 +1849,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1823: result: $CC" >&5 + echo "$as_me:1852: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1826: result: no" >&5 + echo "$as_me:1855: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1832,7 +1861,7 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:1835: checking for $ac_word" >&5 +echo "$as_me:1864: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1847,7 +1876,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="gcc" -echo "$as_me:1850: found $ac_dir/$ac_word" >&5 +echo "$as_me:1879: found $ac_dir/$ac_word" >&5 break done @@ -1855,10 +1884,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1858: result: $ac_ct_CC" >&5 + echo "$as_me:1887: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1861: result: no" >&5 + echo "$as_me:1890: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1871,7 +1900,7 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1874: checking for $ac_word" >&5 +echo "$as_me:1903: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1886,7 +1915,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="${ac_tool_prefix}cc" -echo "$as_me:1889: found $ac_dir/$ac_word" >&5 +echo "$as_me:1918: found $ac_dir/$ac_word" >&5 break done @@ -1894,10 +1923,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1897: result: $CC" >&5 + echo "$as_me:1926: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1900: result: no" >&5 + echo "$as_me:1929: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1906,7 +1935,7 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:1909: checking for $ac_word" >&5 +echo "$as_me:1938: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1921,7 +1950,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="cc" -echo "$as_me:1924: found $ac_dir/$ac_word" >&5 +echo "$as_me:1953: found $ac_dir/$ac_word" >&5 break done @@ -1929,10 +1958,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:1932: result: $ac_ct_CC" >&5 + echo "$as_me:1961: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:1935: result: no" >&5 + echo "$as_me:1964: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -1945,7 +1974,7 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:1948: checking for $ac_word" >&5 +echo "$as_me:1977: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1965,7 +1994,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then continue fi ac_cv_prog_CC="cc" -echo "$as_me:1968: found $ac_dir/$ac_word" >&5 +echo "$as_me:1997: found $ac_dir/$ac_word" >&5 break done @@ -1987,10 +2016,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:1990: result: $CC" >&5 + echo "$as_me:2019: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:1993: result: no" >&5 + echo "$as_me:2022: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2001,7 +2030,7 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:2004: checking for $ac_word" >&5 +echo "$as_me:2033: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2016,7 +2045,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:2019: found $ac_dir/$ac_word" >&5 +echo "$as_me:2048: found $ac_dir/$ac_word" >&5 break done @@ -2024,10 +2053,10 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:2027: result: $CC" >&5 + echo "$as_me:2056: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else - echo "$as_me:2030: result: no" >&5 + echo "$as_me:2059: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2040,7 +2069,7 @@ if test -z "$CC"; then 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:2043: checking for $ac_word" >&5 +echo "$as_me:2072: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2055,7 +2084,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_CC="$ac_prog" -echo "$as_me:2058: found $ac_dir/$ac_word" >&5 +echo "$as_me:2087: found $ac_dir/$ac_word" >&5 break done @@ -2063,10 +2092,10 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:2066: result: $ac_ct_CC" >&5 + echo "$as_me:2095: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else - echo "$as_me:2069: result: no" >&5 + echo "$as_me:2098: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2078,37 +2107,37 @@ fi fi -test -z "$CC" && { { echo "$as_me:2081: error: no acceptable cc found in \$PATH" >&5 +test -z "$CC" && { { echo "$as_me:2110: error: no acceptable cc found in \$PATH" >&5 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:2086:" \ +echo "$as_me:2115:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:2089: \"$ac_compiler --version &5\"") >&5 +{ (eval echo "$as_me:2118: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? - echo "$as_me:2092: \$? = $ac_status" >&5 + echo "$as_me:2121: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:2094: \"$ac_compiler -v &5\"") >&5 +{ (eval echo "$as_me:2123: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? - echo "$as_me:2097: \$? = $ac_status" >&5 + echo "$as_me:2126: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:2099: \"$ac_compiler -V &5\"") >&5 +{ (eval echo "$as_me:2128: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? - echo "$as_me:2102: \$? = $ac_status" >&5 + echo "$as_me:2131: \$? = $ac_status" >&5 (exit $ac_status); } -echo "$as_me:2105: checking whether we are using the GNU C compiler" >&5 +echo "$as_me:2134: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 2111 "configure" +#line 2140 "configure" #include "confdefs.h" int @@ -2123,16 +2152,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2126: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2155: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2129: \$? = $ac_status" >&5 + echo "$as_me:2158: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2132: \"$ac_try\"") >&5 + { (eval echo "$as_me:2161: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2135: \$? = $ac_status" >&5 + echo "$as_me:2164: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else @@ -2144,19 +2173,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:2147: result: $ac_cv_c_compiler_gnu" >&5 +echo "$as_me:2176: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" -echo "$as_me:2153: checking whether $CC accepts -g" >&5 +echo "$as_me:2182: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 2159 "configure" +#line 2188 "configure" #include "confdefs.h" int @@ -2168,16 +2197,16 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2171: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2200: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2174: \$? = $ac_status" >&5 + echo "$as_me:2203: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2177: \"$ac_try\"") >&5 + { (eval echo "$as_me:2206: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2180: \$? = $ac_status" >&5 + echo "$as_me:2209: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else @@ -2187,7 +2216,7 @@ ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:2190: result: $ac_cv_prog_cc_g" >&5 +echo "$as_me:2219: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS @@ -2214,16 +2243,16 @@ cat >conftest.$ac_ext <<_ACEOF #endif _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2217: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2246: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2220: \$? = $ac_status" >&5 + echo "$as_me:2249: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2223: \"$ac_try\"") >&5 + { (eval echo "$as_me:2252: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2226: \$? = $ac_status" >&5 + echo "$as_me:2255: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ @@ -2235,7 +2264,7 @@ if { (eval echo "$as_me:2217: \"$ac_compile\"") >&5 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF -#line 2238 "configure" +#line 2267 "configure" #include "confdefs.h" #include $ac_declaration @@ -2248,16 +2277,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2251: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2280: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2254: \$? = $ac_status" >&5 + echo "$as_me:2283: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2257: \"$ac_try\"") >&5 + { (eval echo "$as_me:2286: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2260: \$? = $ac_status" >&5 + echo "$as_me:2289: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else @@ -2267,7 +2296,7 @@ continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF -#line 2270 "configure" +#line 2299 "configure" #include "confdefs.h" $ac_declaration int @@ -2279,16 +2308,16 @@ exit (42); } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2282: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2311: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2285: \$? = $ac_status" >&5 + echo "$as_me:2314: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2288: \"$ac_try\"") >&5 + { (eval echo "$as_me:2317: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2291: \$? = $ac_status" >&5 + echo "$as_me:2320: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else @@ -2327,7 +2356,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:2330: checking for a BSD compatible install" >&5 +echo "$as_me:2359: checking for a BSD compatible install" >&5 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then @@ -2376,7 +2405,7 @@ fi INSTALL=$ac_install_sh fi fi -echo "$as_me:2379: result: $INSTALL" >&5 +echo "$as_me:2408: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. @@ -2400,7 +2429,7 @@ if test -n "$ac_tool_prefix"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:2403: checking for $ac_word" >&5 +echo "$as_me:2432: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2415,7 +2444,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_F77="$ac_tool_prefix$ac_prog" -echo "$as_me:2418: found $ac_dir/$ac_word" >&5 +echo "$as_me:2447: found $ac_dir/$ac_word" >&5 break done @@ -2423,10 +2452,10 @@ fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then - echo "$as_me:2426: result: $F77" >&5 + echo "$as_me:2455: result: $F77" >&5 echo "${ECHO_T}$F77" >&6 else - echo "$as_me:2429: result: no" >&5 + echo "$as_me:2458: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2439,7 +2468,7 @@ if test -z "$F77"; then 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:2442: checking for $ac_word" >&5 +echo "$as_me:2471: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_F77+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2454,7 +2483,7 @@ for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. $as_executable_p "$ac_dir/$ac_word" || continue ac_cv_prog_ac_ct_F77="$ac_prog" -echo "$as_me:2457: found $ac_dir/$ac_word" >&5 +echo "$as_me:2486: found $ac_dir/$ac_word" >&5 break done @@ -2462,10 +2491,10 @@ fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then - echo "$as_me:2465: result: $ac_ct_F77" >&5 + echo "$as_me:2494: result: $ac_ct_F77" >&5 echo "${ECHO_T}$ac_ct_F77" >&6 else - echo "$as_me:2468: result: no" >&5 + echo "$as_me:2497: result: no" >&5 echo "${ECHO_T}no" >&6 fi @@ -2476,30 +2505,30 @@ done fi # Provide some information about the compiler. -echo "$as_me:2479:" \ +echo "$as_me:2508:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:2482: \"$ac_compiler --version &5\"") >&5 +{ (eval echo "$as_me:2511: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? - echo "$as_me:2485: \$? = $ac_status" >&5 + echo "$as_me:2514: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:2487: \"$ac_compiler -v &5\"") >&5 +{ (eval echo "$as_me:2516: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? - echo "$as_me:2490: \$? = $ac_status" >&5 + echo "$as_me:2519: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:2492: \"$ac_compiler -V &5\"") >&5 +{ (eval echo "$as_me:2521: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? - echo "$as_me:2495: \$? = $ac_status" >&5 + echo "$as_me:2524: \$? = $ac_status" >&5 (exit $ac_status); } # If we don't use `.F' as extension, the preprocessor is not run on the # input file. ac_save_ext=$ac_ext ac_ext=F -echo "$as_me:2502: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo "$as_me:2531: checking whether we are using the GNU Fortran 77 compiler" >&5 echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 if test "${ac_cv_f77_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2513,16 +2542,16 @@ else end _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2516: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2545: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2519: \$? = $ac_status" >&5 + echo "$as_me:2548: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2522: \"$ac_try\"") >&5 + { (eval echo "$as_me:2551: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2525: \$? = $ac_status" >&5 + echo "$as_me:2554: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else @@ -2534,14 +2563,14 @@ rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:2537: result: $ac_cv_f77_compiler_gnu" >&5 +echo "$as_me:2566: result: $ac_cv_f77_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 ac_ext=$ac_save_ext G77=`test $ac_compiler_gnu = yes && echo yes` ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= -echo "$as_me:2544: checking whether $F77 accepts -g" >&5 +echo "$as_me:2573: checking whether $F77 accepts -g" >&5 echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_f77_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2553,16 +2582,16 @@ cat >conftest.$ac_ext <<_ACEOF end _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2556: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2585: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2559: \$? = $ac_status" >&5 + echo "$as_me:2588: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2562: \"$ac_try\"") >&5 + { (eval echo "$as_me:2591: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2565: \$? = $ac_status" >&5 + echo "$as_me:2594: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_g=yes else @@ -2573,7 +2602,7 @@ fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:2576: result: $ac_cv_prog_f77_g" >&5 +echo "$as_me:2605: result: $ac_cv_prog_f77_g" >&5 echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS @@ -2609,7 +2638,7 @@ 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 -echo "$as_me:2612: checking how to get verbose linking output from $F77" >&5 +echo "$as_me:2641: checking how to get verbose linking output from $F77" >&5 echo $ECHO_N "checking how to get verbose linking output from $F77... $ECHO_C" >&6 if test "${ac_cv_prog_f77_v+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2621,16 +2650,16 @@ cat >conftest.$ac_ext <<_ACEOF end _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:2624: \"$ac_compile\"") >&5 +if { (eval echo "$as_me:2653: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:2627: \$? = $ac_status" >&5 + echo "$as_me:2656: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2630: \"$ac_try\"") >&5 + { (eval echo "$as_me:2659: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:2633: \$? = $ac_status" >&5 + echo "$as_me:2662: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_f77_v= # Try some options frequently used verbose output @@ -2652,7 +2681,7 @@ _ACEOF # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_verb" -(eval echo $as_me:2655: \"$ac_link\") >&5 +(eval echo $as_me:2684: \"$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 @@ -2684,21 +2713,21 @@ fi done done if test -z "$ac_cv_prog_f77_v"; then - { echo "$as_me:2687: WARNING: cannot determine how to obtain linking information from $F77" >&5 + { echo "$as_me:2716: WARNING: cannot determine how to obtain linking information from $F77" >&5 echo "$as_me: WARNING: cannot determine how to obtain linking information from $F77" >&2;} fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 -{ echo "$as_me:2693: WARNING: compilation failed" >&5 +{ echo "$as_me:2722: WARNING: compilation failed" >&5 echo "$as_me: WARNING: compilation failed" >&2;} fi rm -f conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:2699: result: $ac_cv_prog_f77_v" >&5 +echo "$as_me:2728: result: $ac_cv_prog_f77_v" >&5 echo "${ECHO_T}$ac_cv_prog_f77_v" >&6 -echo "$as_me:2701: checking for Fortran 77 libraries" >&5 +echo "$as_me:2730: checking for Fortran 77 libraries" >&5 echo $ECHO_N "checking for Fortran 77 libraries... $ECHO_C" >&6 if test "${ac_cv_flibs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -2724,7 +2753,7 @@ _ACEOF # flags. ac_save_FFLAGS=$FFLAGS FFLAGS="$FFLAGS $ac_cv_prog_f77_v" -(eval echo $as_me:2727: \"$ac_link\") >&5 +(eval echo $as_me:2756: \"$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 @@ -2879,7 +2908,7 @@ esac fi # test "x$FLIBS" = "x" fi -echo "$as_me:2882: result: $ac_cv_flibs" >&5 +echo "$as_me:2911: result: $ac_cv_flibs" >&5 echo "${ECHO_T}$ac_cv_flibs" >&6 FLIBS="$ac_cv_flibs" @@ -2894,15 +2923,9 @@ case $ac_sys_system in esac -# filename extensions for Fortran 77 and Fortran 90 +# filename extensions for Fortran 77 if test -z "$F77_EXT"; then F77_EXT=f; fi -if test -z "$F90_EXT"; then F90_EXT=f90; fi - -if test -n "$FORT_MODULE_PATH_CMD" -then FORT_MOD_PATH=$FORT_MODULE_PATH_CMD -fi - ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2946,7 +2969,7 @@ fi # SO is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin -echo "$as_me:2949: checking SO" >&5 +echo "$as_me:2972: checking SO" >&5 echo $ECHO_N "checking SO... $ECHO_C" >&6 if test -z "$SO" then @@ -2957,7 +2980,7 @@ then *) SO=.so;; esac fi -echo "$as_me:2960: result: $SO" >&5 +echo "$as_me:2983: result: $SO" >&5 echo "${ECHO_T}$SO" >&6 ac_ext=cc @@ -2992,7 +3015,7 @@ DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:2995: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:3018: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL @@ -3165,7 +3188,7 @@ cat >>$CONFIG_STATUS <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:3168: error: ambiguous option: $1 + { { echo "$as_me:3191: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -3184,7 +3207,7 @@ Try \`$0 --help' for more information." >&2;} ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:3187: error: unrecognized option: $1 + -*) { { echo "$as_me:3210: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -3252,7 +3275,7 @@ do "../test_problems/cxx_ex/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../test_problems/cxx_ex/Makefile" ;; "../test_problems/silane_equil/Makefile" ) CONFIG_FILES="$CONFIG_FILES ../test_problems/silane_equil/Makefile" ;; "../config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ../config.h" ;; - *) { { echo "$as_me:3255: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:3278: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -3371,7 +3394,6 @@ s,@CANTERA_BINDIR@,$CANTERA_BINDIR,;t t s,@CANTERA_EXAMPLES_DIR@,$CANTERA_EXAMPLES_DIR,;t t s,@CANTERA_DATA_DIR@,$CANTERA_DATA_DIR,;t t s,@CT_SHARED_LIB@,$CT_SHARED_LIB,;t t -s,@BUILD_F90@,$BUILD_F90,;t t s,@PYTHON_CMD@,$PYTHON_CMD,;t t s,@BUILD_PYTHON@,$BUILD_PYTHON,;t t s,@MATLAB_CMD@,$MATLAB_CMD,;t t @@ -3395,14 +3417,11 @@ s,@CXX_DEPENDS@,$CXX_DEPENDS,;t t s,@F77@,$F77,;t t s,@FFLAGS@,$FFLAGS,;t t s,@ac_ct_F77@,$ac_ct_F77,;t t -s,@F90@,$F90,;t t s,@FLIBS@,$FLIBS,;t t s,@OS_IS_DARWIN@,$OS_IS_DARWIN,;t t s,@SHARED_CTLIB@,$SHARED_CTLIB,;t t s,@mex_ext@,$mex_ext,;t t s,@F77_EXT@,$F77_EXT,;t t -s,@F90_EXT@,$F90_EXT,;t t -s,@FORT_MOD_PATH@,$FORT_MOD_PATH,;t t s,@CXX_EXT@,$CXX_EXT,;t t s,@OBJ_EXT@,$OBJ_EXT,;t t s,@EXE_EXT@,$EXE_EXT,;t t @@ -3524,7 +3543,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:3527: creating $ac_file" >&5 + { echo "$as_me:3546: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -3542,7 +3561,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:3545: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:3564: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -3555,7 +3574,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:3558: error: cannot find input file: $f" >&5 + { { echo "$as_me:3577: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -3616,7 +3635,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:3619: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:3638: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -3627,7 +3646,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:3630: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:3649: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -3640,7 +3659,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;} echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:3643: error: cannot find input file: $f" >&5 + { { echo "$as_me:3662: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -3757,7 +3776,7 @@ cat >>$CONFIG_STATUS <<\EOF rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:3760: $ac_file is unchanged" >&5 + { echo "$as_me:3779: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ @@ -3826,5 +3845,8 @@ fi # ) +echo +echo "Now type '${MAKE}' to build Cantera" +echo # $Log: configure.in,v diff --git a/config/configure.in b/config/configure.in index c674c22fa..82d88af58 100755 --- a/config/configure.in +++ b/config/configure.in @@ -5,6 +5,11 @@ AC_INIT(Cantera.README) AC_CONFIG_HEADER(../config.h) AC_CONFIG_AUX_DIR(.) +echo +echo "**************************************************************" +echo " Cantera Configuration Script " +echo "**************************************************************" +echo AC_DEFINE(NDEBUG) @@ -16,7 +21,29 @@ local_inst=1 if test "x${prefix}" = "xNONE"; then prefix=${ac_default_prefix} local_inst=0 + if test ! -d ${prefix}; then + echo + echo "********************************************************************" + echo "Installation directory /usr/local 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 + +echo "Cantera will be installed in ${prefix}" +if test ! -w ${prefix}; then +echo "checking for write-access... no" +echo +echo "**** Since you do not have write-access to ${prefix}, you will need to" +echo "**** run the 'make install' step as super-user." +echo +else +echo "checking for write-access... yes" +fi + AC_SUBST(prefix) AC_SUBST(local_inst) CANTERA_LIBDIR=$prefix/lib/cantera @@ -221,24 +248,25 @@ AC_SUBST(CANTERA_DATA_DIR) AC_SUBST(CT_SHARED_LIB) BUILD_CLIB=0 -# -# Fortran 90 Interface -# -BUILD_F90=0 -if test "$BUILD_FORTRAN_90_INTERFACE" = "y"; then BUILD_F90=1; BUILD_CLIB=1; fi -AC_SUBST(BUILD_F90) - # # Python Interface # BUILD_PYTHON=0 -if test "$BUILD_PYTHON_INTERFACE" != "n"; then - if test -z "$PYTHON_CMD"; then +if test -z "$PYTHON_CMD"; then AC_PATH_PROGS(PYTHON_CMD, python2 python, "none") - if test "$PYTHON_CMD" != "none"; then BUILD_PYTHON=1; BUILD_CLIB=1; fi - else - BUILD_PYTHON=1 +fi +if test "$PYTHON_CMD" != "none"; then + if test "$BUILD_PYTHON_INTERFACE" != "n"; then + BUILD_PYTHON=1; BUILD_CLIB=1 fi +else + echo + echo "********************************************************************" + echo "Configuration error. Python is required to build Cantera, but it" + echo "cannot be found. Set environment variable PYTHON_CMD to the command to" + echo "run the Python interpreter on your system, and run configure again." + echo "********************************************************************" + exit 1 fi AC_SUBST(BUILD_PYTHON) @@ -274,7 +302,6 @@ AC_SUBST(CXX_DEPENDS) #--------------------------------- AC_PROG_F77() -AC_SUBST(F90) # if G77 is defined, then add a flag to turn off adding a second underscore # to procedures that have an underscore in the name @@ -295,17 +322,9 @@ esac AC_SUBST(SHARED_CTLIB) AC_SUBST(mex_ext) -# filename extensions for Fortran 77 and Fortran 90 +# filename extensions for Fortran 77 if test -z "$F77_EXT"; then F77_EXT=f; fi AC_SUBST(F77_EXT) -if test -z "$F90_EXT"; then F90_EXT=f90; fi -AC_SUBST(F90_EXT) - - -if test -n "$FORT_MODULE_PATH_CMD" -then FORT_MOD_PATH=$FORT_MODULE_PATH_CMD -fi -AC_SUBST(FORT_MOD_PATH) AC_LANG_CPLUSPLUS @@ -405,6 +424,9 @@ AC_OUTPUT(../Cantera/Makefile \ ../test_problems/silane_equil/Makefile) # ) +echo +echo "Now type '${MAKE}' to build Cantera" +echo # $Log: configure.in,v diff --git a/data/inputs/air.xml b/data/inputs/air.xml index 2f015db57..7faf17956 100644 --- a/data/inputs/air.xml +++ b/data/inputs/air.xml @@ -1,296 +1,406 @@ - - - - - - - - 300 - 1 - O:1.0 - - - O N Ar - O O2 N NO NO2 N2O N2 AR - - - - - - - - - - L 1/90 - O:1 - - - 3.168267100E+00, - -3.279318840E-03, 6.643063960E-06, - -6.128066240E-09, 2.112659710E-12, - 2.912225920E+04, 2.051933460E+00 - - 2.569420780E+00, -8.597411370E-05, - 4.194845890E-08, -1.001777990E-11, - 1.228336910E-15, 2.921757910E+04, - 4.784338640E+00 - - - - atom - 8.000000000E+01 - 2.750000000E+00 - - - - - TPIS89 - O:2 - - - 3.782456360E+00, - -2.996734160E-03, 9.847302010E-06, - -9.681295090E-09, 3.243728370E-12, - -1.063943560E+03, 3.657675730E+00 - - 3.282537840E+00, 1.483087540E-03, - -7.579666690E-07, 2.094705550E-10, - -2.167177940E-14, -1.088457720E+03, - 5.453231290E+00 - - - - linear - 1.074000000E+02 - 3.458000000E+00 - 1.600000000E+00 - 3.800000000E+00 - - - - - L 6/88 - N:1 - - - 2.500000000E+00, - 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00, - 5.610463700E+04, 4.193908700E+00 - - 2.415942900E+00, 1.748906500E-04, - -1.190236900E-07, 3.022624500E-11, - -2.036098200E-15, 5.613377300E+04, - 4.649609600E+00 - - - - atom - 7.140000000E+01 - 3.298000000E+00 - - - - - RUS 78 - N:1 O:1 - - - 4.218476300E+00, - -4.638976000E-03, 1.104102200E-05, - -9.336135400E-09, 2.803577000E-12, - 9.844623000E+03, 2.280846400E+00 - - 3.260605600E+00, 1.191104300E-03, - -4.291704800E-07, 6.945766900E-11, - -4.033609900E-15, 9.920974600E+03, - 6.369302700E+00 - - - - linear - 9.753000000E+01 - 3.621000000E+00 - 1.760000000E+00 - 4.000000000E+00 - - - - - L 7/88 - N:1 O:2 - - - 3.944031200E+00, - -1.585429000E-03, 1.665781200E-05, - -2.047542600E-08, 7.835056400E-12, - 2.896617900E+03, 6.311991700E+00 - - 4.884754200E+00, 2.172395600E-03, - -8.280690600E-07, 1.574751000E-10, - -1.051089500E-14, 2.316498300E+03, - -1.174169500E-01 - - - - nonlinear - 2.000000000E+02 - 3.500000000E+00 - 1.000000000E+00 - - - - - L 7/88 - N:2 O:1 - - - 2.257150200E+00, - 1.130472800E-02, -1.367131900E-05, - 9.681980600E-09, -2.930718200E-12, - 8.741774400E+03, 1.075799200E+01 - - 4.823072900E+00, 2.627025100E-03, - -9.585087400E-07, 1.600071200E-10, - -9.775230300E-15, 8.073404800E+03, - -2.201720700E+00 - - - - linear - 2.324000000E+02 - 3.828000000E+00 - 1.000000000E+00 - - - - - 121286 - N:2 - - - 3.298677000E+00, - 1.408240400E-03, -3.963222000E-06, - 5.641515000E-09, -2.444854000E-12, - -1.020899900E+03, 3.950372000E+00 - - 2.926640000E+00, 1.487976800E-03, - -5.684760000E-07, 1.009703800E-10, - -6.753351000E-15, -9.227977000E+02, - 5.980528000E+00 - - - - linear - 9.753000000E+01 - 3.621000000E+00 - 1.760000000E+00 - 4.000000000E+00 - - - - - 120186 - Ar:1 - - - 2.500000000E+00, - 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00, - -7.453750000E+02, 4.366000000E+00 - - 2.500000000E+00, 0.000000000E+00, - 0.000000000E+00, 0.000000000E+00, - 0.000000000E+00, -7.453750000E+02, - 4.366000000E+00 - - - - atom - 1.365000000E+02 - 3.330000000E+00 - - - - - - - - 2 O + M [=] O2 + M - O:2 - O2:1 - - 1.2e+17 -1 0 - AR:0.83 - - - - - N + NO [=] N2 + O - N:1 NO:1 - N2:1 O:1 - - 2.7e+13 0 355 - - - - - N + O2 [=] NO + O - N:1 O2:1 - NO:1 O:1 - - 9e+09 1 6500 - - - - - N2O + O [=] N2 + O2 - N2O:1 O:1 - N2:1 O2:1 - - 1.4e+12 0 10810 - - - - - N2O + O [=] 2 NO - N2O:1 O:1 - NO:2 - - 2.9e+13 0 23150 - - - - - N2O (+ M) [=] N2 + O (+ M) - N2O:1 - N2:1 O:1 - - 7.91e+10 0 56020 - 6.37e+14 0 56640 - - AR:0.625 - - - - - NO + O + M [=] NO2 + M - NO:1 O:1 - NO2:1 - - 1.06e+20 -1.41 0 - AR:0.7 - - - - - NO2 + O [=] NO + O2 - NO2:1 O:1 - NO:1 O2:1 - - 3.9e+12 0 -240 - - - - + + + + + + + + + 300 + 1 + O:1.0 + + + O N Ar + + O O2 N NO NO2 N2O N2 AR + + + + + + + + + + + + + L 1/90 + O:1 + 0.000000000E+00 + + + + 3.168267100E+00, -3.279318840E-03, 6.643063960E-06, + -6.128066240E-09, 2.112659710E-12, 2.912225920E+04, + 2.051933460E+00 + + + + + 2.569420780E+00, -8.597411370E-05, 4.194845890E-08, + -1.001777990E-11, 1.228336910E-15, 2.921757910E+04, + 4.784338640E+00 + + + + + atom + 8.000000000E+01 + 2.750000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 + + + + + + TPIS89 + O:2 + 0.000000000E+00 + + + + 3.782456360E+00, -2.996734160E-03, 9.847302010E-06, + -9.681295090E-09, 3.243728370E-12, -1.063943560E+03, + 3.657675730E+00 + + + + + 3.282537840E+00, 1.483087540E-03, -7.579666690E-07, + 2.094705550E-10, -2.167177940E-14, -1.088457720E+03, + 5.453231290E+00 + + + + + linear + 1.074000000E+02 + 3.458000000E+00 + 0.000000000E+00 + 1.600000000E+00 + 3.800000000E+00 + + + + + + L 6/88 + N:1 + 0.000000000E+00 + + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, 5.610463700E+04, + 4.193908700E+00 + + + + + 2.415942900E+00, 1.748906500E-04, -1.190236900E-07, + 3.022624500E-11, -2.036098200E-15, 5.613377300E+04, + 4.649609600E+00 + + + + + atom + 7.140000000E+01 + 3.298000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 + + + + + + RUS 78 + N:1 O:1 + 0.000000000E+00 + + + + 4.218476300E+00, -4.638976000E-03, 1.104102200E-05, + -9.336135400E-09, 2.803577000E-12, 9.844623000E+03, + 2.280846400E+00 + + + + + 3.260605600E+00, 1.191104300E-03, -4.291704800E-07, + 6.945766900E-11, -4.033609900E-15, 9.920974600E+03, + 6.369302700E+00 + + + + + linear + 9.753000000E+01 + 3.621000000E+00 + 0.000000000E+00 + 1.760000000E+00 + 4.000000000E+00 + + + + + + L 7/88 + N:1 O:2 + 0.000000000E+00 + + + + 3.944031200E+00, -1.585429000E-03, 1.665781200E-05, + -2.047542600E-08, 7.835056400E-12, 2.896617900E+03, + 6.311991700E+00 + + + + + 4.884754200E+00, 2.172395600E-03, -8.280690600E-07, + 1.574751000E-10, -1.051089500E-14, 2.316498300E+03, + -1.174169500E-01 + + + + + nonlinear + 2.000000000E+02 + 3.500000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 1.000000000E+00 + + + + + + L 7/88 + N:2 O:1 + 0.000000000E+00 + + + + 2.257150200E+00, 1.130472800E-02, -1.367131900E-05, + 9.681980600E-09, -2.930718200E-12, 8.741774400E+03, + 1.075799200E+01 + + + + + 4.823072900E+00, 2.627025100E-03, -9.585087400E-07, + 1.600071200E-10, -9.775230300E-15, 8.073404800E+03, + -2.201720700E+00 + + + + + linear + 2.324000000E+02 + 3.828000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 1.000000000E+00 + + + + + + 121286 + N:2 + 0.000000000E+00 + + + + 3.298677000E+00, 1.408240400E-03, -3.963222000E-06, + 5.641515000E-09, -2.444854000E-12, -1.020899900E+03, + 3.950372000E+00 + + + + + 2.926640000E+00, 1.487976800E-03, -5.684760000E-07, + 1.009703800E-10, -6.753351000E-15, -9.227977000E+02, + 5.980528000E+00 + + + + + linear + 9.753000000E+01 + 3.621000000E+00 + 0.000000000E+00 + 1.760000000E+00 + 4.000000000E+00 + + + + + + 120186 + Ar:1 + 0.000000000E+00 + + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, + 4.366000000E+00 + + + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, + 4.366000000E+00 + + + + + atom + 1.365000000E+02 + 3.330000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 + + + + + + + + + + 2 O + M [=] O2 + M + O:2 + O2:1 + + + 1.200000000E+17 + -1.000000000E+00 + 0.000000000E+00 + + + AR:0.83 + + + + + + + N + NO [=] N2 + O + N:1 NO:1 + N2:1 O:1 + + + 2.700000000E+13 + 0.000000000E+00 + 3.550000000E+02 + + + + + + + N + O2 [=] NO + O + N:1 O2:1 + NO:1 O:1 + + + 9.000000000E+09 + 1.000000000E+00 + 6.500000000E+03 + + + + + + + N2O + O [=] N2 + O2 + N2O:1 O:1 + N2:1 O2:1 + + + 1.400000000E+12 + 0.000000000E+00 + 1.081000000E+04 + + + + + + + N2O + O [=] 2 NO + N2O:1 O:1 + NO:2 + + + 2.900000000E+13 + 0.000000000E+00 + 2.315000000E+04 + + + + + + + N2O (+ M) [=] N2 + O (+ M) + N2O:1 + N2:1 O:1 + + + 7.910000000E+10 + 0.000000000E+00 + 5.602000000E+04 + + + 6.370000000E+14 + 0.000000000E+00 + 5.664000000E+04 + + + + AR:0.625 + + + + + + + NO + O + M [=] NO2 + M + NO:1 O:1 + NO2:1 + + + 1.060000000E+20 + -1.410000000E+00 + 0.000000000E+00 + + + AR:0.7 + + + + + + + NO2 + O [=] NO + O2 + NO2:1 O:1 + NO:1 O2:1 + + + 3.900000000E+12 + 0.000000000E+00 + -2.400000000E+02 + + + + + \ No newline at end of file diff --git a/data/inputs/argon.xml b/data/inputs/argon.xml index 04e2a899e..176a77851 100644 --- a/data/inputs/argon.xml +++ b/data/inputs/argon.xml @@ -28,24 +28,30 @@ 120186 Ar:1 + 0.000000000E+00 - - - 2.500000000E+000, 0.000000000E+000, 0.000000000E+000, - 0.000000000E+000, 0.000000000E+000, -7.453750000E+002, - 4.366000000E+000 + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, + 4.366000000E+00 - - 2.500000000E+000, 0.000000000E+000, 0.000000000E+000, - 0.000000000E+000, 0.000000000E+000, -7.453750000E+002, - 4.366000000E+000 + + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, + 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, + 4.366000000E+00 atom - 1.365000000E+002 - 3.330000000E+000 + 1.365000000E+02 + 3.330000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 diff --git a/data/inputs/elements.xml b/data/inputs/elements.xml index e092e826c..cafb66803 100644 --- a/data/inputs/elements.xml +++ b/data/inputs/elements.xml @@ -1,8 +1,8 @@ - - + + diff --git a/data/inputs/gri30.xml b/data/inputs/gri30.xml index da7da5613..e22cd3439 100755 --- a/data/inputs/gri30.xml +++ b/data/inputs/gri30.xml @@ -12,7 +12,7 @@ O H C N Ar - + H2 H O O2 OH H2O HO2 H2O2 C CH CH2 CH2(S) CH3 CH4 CO CO2 HCO CH2O CH2OH CH3O CH3OH C2H C2H2 C2H3 C2H4 C2H5 C2H6 HCCO CH2CO HCCOH @@ -20,14 +20,13 @@ HCN H2CN HCNN HCNO HOCN HNCO NCO N2 AR C3H7 C3H8 CH2CHO CH3CHO - + - - + 300 @@ -36,7 +35,7 @@ O H C N Ar - + H2 H O O2 OH H2O HO2 H2O2 C CH CH2 CH2(S) CH3 CH4 CO CO2 HCO CH2O CH2OH CH3O CH3OH C2H C2H2 C2H3 C2H4 C2H5 C2H6 HCCO CH2CO HCCOH @@ -44,4834 +43,10 @@ HCN H2CN HCNN HCNO HOCN HNCO NCO N2 AR C3H7 C3H8 CH2CHO CH3CHO - + - - - - - - - TPIS78 - H:2 - - - - 2.344331120E+000, 7.980520750E-003, -1.947815100E-005, - 2.015720940E-008, -7.376117610E-012, -9.179351730E+002, - 6.830102380E-001 - - - 3.337279200E+000, -4.940247310E-005, 4.994567780E-007, - -1.795663940E-010, 2.002553760E-014, -9.501589220E+002, - -3.205023310E+000 - - - - - linear - 3.800000000E+001 - 2.920000000E+000 - 7.900000000E-001 - 2.800000000E+002 - - - - - - L 7/88 - H:1 - - - - 2.500000000E+000, 7.053328190E-013, -1.995919640E-015, - 2.300816320E-018, -9.277323320E-022, 2.547365990E+004, - -4.466828530E-001 - - - 2.500000010E+000, -2.308429730E-011, 1.615619480E-014, - -4.735152350E-018, 4.981973570E-022, 2.547365990E+004, - -4.466829140E-001 - - - - - atom - 1.450000000E+002 - 2.050000000E+000 - - - - - - L 1/90 - O:1 - - - - 3.168267100E+000, -3.279318840E-003, 6.643063960E-006, - -6.128066240E-009, 2.112659710E-012, 2.912225920E+004, - 2.051933460E+000 - - - 2.569420780E+000, -8.597411370E-005, 4.194845890E-008, - -1.001777990E-011, 1.228336910E-015, 2.921757910E+004, - 4.784338640E+000 - - - - - atom - 8.000000000E+001 - 2.750000000E+000 - - - - - - TPIS89 - O:2 - - - - 3.782456360E+000, -2.996734160E-003, 9.847302010E-006, - -9.681295090E-009, 3.243728370E-012, -1.063943560E+003, - 3.657675730E+000 - - - 3.282537840E+000, 1.483087540E-003, -7.579666690E-007, - 2.094705550E-010, -2.167177940E-014, -1.088457720E+003, - 5.453231290E+000 - - - - - linear - 1.074000000E+002 - 3.458000000E+000 - 1.600000000E+000 - 3.800000000E+000 - - - - - - RUS 78 - O:1 H:1 - - - - 3.992015430E+000, -2.401317520E-003, 4.617938410E-006, - -3.881133330E-009, 1.364114700E-012, 3.615080560E+003, - -1.039254580E-001 - - - 3.092887670E+000, 5.484297160E-004, 1.265052280E-007, - -8.794615560E-011, 1.174123760E-014, 3.858657000E+003, - 4.476696100E+000 - - - - - linear - 8.000000000E+001 - 2.750000000E+000 - - - - - - L 8/89 - H:2 O:1 - - - - 4.198640560E+000, -2.036434100E-003, 6.520402110E-006, - -5.487970620E-009, 1.771978170E-012, -3.029372670E+004, - -8.490322080E-001 - - - 3.033992490E+000, 2.176918040E-003, -1.640725180E-007, - -9.704198700E-011, 1.682009920E-014, -3.000429710E+004, - 4.966770100E+000 - - - - - nonlinear - 5.724000000E+002 - 2.605000000E+000 - 1.844000000E+000 - 4.000000000E+000 - - - - - - L 5/89 - H:1 O:2 - - - - 4.301798010E+000, -4.749120510E-003, 2.115828910E-005, - -2.427638940E-008, 9.292251240E-012, 2.948080400E+002, - 3.716662450E+000 - - - 4.017210900E+000, 2.239820130E-003, -6.336581500E-007, - 1.142463700E-010, -1.079085350E-014, 1.118567130E+002, - 3.785102150E+000 - - - - - nonlinear - 1.074000000E+002 - 3.458000000E+000 - 1.000000000E+000 - - - - - - L 7/88 - H:2 O:2 - - - - 4.276112690E+000, -5.428224170E-004, 1.673357010E-005, - -2.157708130E-008, 8.624543630E-012, -1.770258210E+004, - 3.435050740E+000 - - - 4.165002850E+000, 4.908316940E-003, -1.901392250E-006, - 3.711859860E-010, -2.879083050E-014, -1.786178770E+004, - 2.916156620E+000 - - - - - nonlinear - 1.074000000E+002 - 3.458000000E+000 - 3.800000000E+000 - - - - - - L11/88 - C:1 - - - - 2.554239550E+000, -3.215377240E-004, 7.337922450E-007, - -7.322348890E-010, 2.665214460E-013, 8.544388320E+004, - 4.531308480E+000 - - - 2.492668880E+000, 4.798892840E-005, -7.243350200E-008, - 3.742910290E-011, -4.872778930E-015, 8.545129530E+004, - 4.801503730E+000 - - - - - atom - 7.140000000E+001 - 3.298000000E+000 - - - - - - TPIS79 - C:1 H:1 - - - - 3.489816650E+000, 3.238355410E-004, -1.688990650E-006, - 3.162173270E-009, -1.406090670E-012, 7.079729340E+004, - 2.084011080E+000 - - - 2.878464730E+000, 9.709136810E-004, 1.444456550E-007, - -1.306878490E-010, 1.760793830E-014, 7.101243640E+004, - 5.484979990E+000 - - - - - linear - 8.000000000E+001 - 2.750000000E+000 - - - - - - L S/93 - C:1 H:2 - - - - 3.762678670E+000, 9.688721430E-004, 2.794898410E-006, - -3.850911530E-009, 1.687417190E-012, 4.600404010E+004, - 1.562531850E+000 - - - 2.874101130E+000, 3.656392920E-003, -1.408945970E-006, - 2.601795490E-010, -1.877275670E-014, 4.626360400E+004, - 6.171193240E+000 - - - - - linear - 1.440000000E+002 - 3.800000000E+000 - - - - - - L S/93 - C:1 H:2 - - - - 4.198604110E+000, -2.366614190E-003, 8.232962200E-006, - -6.688159810E-009, 1.943147370E-012, 5.049681630E+004, - -7.691189670E-001 - - - 2.292038420E+000, 4.655886370E-003, -2.011919470E-006, - 4.179060000E-010, -3.397163650E-014, 5.092599970E+004, - 8.626501690E+000 - - - - - linear - 1.440000000E+002 - 3.800000000E+000 - - - - - - L11/89 - C:1 H:3 - - - - 3.673590400E+000, 2.010951750E-003, 5.730218560E-006, - -6.871174250E-009, 2.543857340E-012, 1.644499880E+004, - 1.604564330E+000 - - - 2.285717720E+000, 7.239900370E-003, -2.987143480E-006, - 5.956846440E-010, -4.671543940E-014, 1.677558430E+004, - 8.480071790E+000 - - - - - linear - 1.440000000E+002 - 3.800000000E+000 - - - - - - L 8/88 - C:1 H:4 - - - - 5.149876130E+000, -1.367097880E-002, 4.918005990E-005, - -4.847430260E-008, 1.666939560E-011, -1.024664760E+004, - -4.641303760E+000 - - - 7.485149500E-002, 1.339094670E-002, -5.732858090E-006, - 1.222925350E-009, -1.018152300E-013, -9.468344590E+003, - 1.843731800E+001 - - - - - nonlinear - 1.414000000E+002 - 3.746000000E+000 - 2.600000000E+000 - 1.300000000E+001 - - - - - - TPIS79 - C:1 O:1 - - - - 3.579533470E+000, -6.103536800E-004, 1.016814330E-006, - 9.070058840E-010, -9.044244990E-013, -1.434408600E+004, - 3.508409280E+000 - - - 2.715185610E+000, 2.062527430E-003, -9.988257710E-007, - 2.300530080E-010, -2.036477160E-014, -1.415187240E+004, - 7.818687720E+000 - - - - - linear - 9.810000000E+001 - 3.650000000E+000 - 1.950000000E+000 - 1.800000000E+000 - - - - - - L 7/88 - C:1 O:2 - - - - 2.356773520E+000, 8.984596770E-003, -7.123562690E-006, - 2.459190220E-009, -1.436995480E-013, -4.837196970E+004, - 9.901052220E+000 - - - 3.857460290E+000, 4.414370260E-003, -2.214814040E-006, - 5.234901880E-010, -4.720841640E-014, -4.875916600E+004, - 2.271638060E+000 - - - - - linear - 2.440000000E+002 - 3.763000000E+000 - 2.650000000E+000 - 2.100000000E+000 - - - - - - L12/89 - H:1 C:1 O:1 - - - - 4.221185840E+000, -3.243925320E-003, 1.377994460E-005, - -1.331440930E-008, 4.337688650E-012, 3.839564960E+003, - 3.394372430E+000 - - - 2.772174380E+000, 4.956955260E-003, -2.484456130E-006, - 5.891617780E-010, -5.335087110E-014, 4.011918150E+003, - 9.798344920E+000 - - - - - nonlinear - 4.980000000E+002 - 3.590000000E+000 - - - - - - L 8/88 - H:2 C:1 O:1 - - - - 4.793723150E+000, -9.908333690E-003, 3.732200080E-005, - -3.792852610E-008, 1.317726520E-011, -1.430895670E+004, - 6.028129000E-001 - - - 1.760690080E+000, 9.200000820E-003, -4.422588130E-006, - 1.006412120E-009, -8.838556400E-014, -1.399583230E+004, - 1.365632300E+001 - - - - - nonlinear - 4.980000000E+002 - 3.590000000E+000 - 2.000000000E+000 - - - - - - GUNL93 - C:1 H:3 O:1 - - - - 3.863889180E+000, 5.596723040E-003, 5.932717910E-006, - -1.045320120E-008, 4.369672780E-012, -3.193913670E+003, - 5.473022430E+000 - - - 3.692665690E+000, 8.645767970E-003, -3.751011200E-006, - 7.872346360E-010, -6.485542010E-014, -3.242506270E+003, - 5.810432150E+000 - - - - - nonlinear - 4.170000000E+002 - 3.690000000E+000 - 1.700000000E+000 - 2.000000000E+000 - - - - - - 121686 - C:1 H:3 O:1 - - - - 2.106204000E+000, 7.216595000E-003, 5.338472000E-006, - -7.377636000E-009, 2.075610000E-012, 9.786011000E+002, - 1.315217700E+001 - - - 3.770799000E+000, 7.871497000E-003, -2.656384000E-006, - 3.944431000E-010, -2.112616000E-014, 1.278325200E+002, - 2.929575000E+000 - - - - - nonlinear - 4.170000000E+002 - 3.690000000E+000 - 1.700000000E+000 - 2.000000000E+000 - - - - - - L 8/88 - C:1 H:4 O:1 - - - - 5.715395820E+000, -1.523091290E-002, 6.524411550E-005, - -7.108068890E-008, 2.613526980E-011, -2.564276560E+004, - -1.504098230E+000 - - - 1.789707910E+000, 1.409382920E-002, -6.365008350E-006, - 1.381710850E-009, -1.170602200E-013, -2.537487470E+004, - 1.450236230E+001 - - - - - nonlinear - 4.818000000E+002 - 3.626000000E+000 - 1.000000000E+000 - - - - - - L 1/91 - C:2 H:1 - - - - 2.889657330E+000, 1.340996110E-002, -2.847695010E-005, - 2.947910450E-008, -1.093315110E-011, 6.683939320E+004, - 6.222964380E+000 - - - 3.167806520E+000, 4.752219020E-003, -1.837870770E-006, - 3.041902520E-010, -1.772327700E-014, 6.712106500E+004, - 6.635894750E+000 - - - - - linear - 2.090000000E+002 - 4.100000000E+000 - 2.500000000E+000 - - - - - - L 1/91 - C:2 H:2 - - - - 8.086810940E-001, 2.336156290E-002, -3.551718150E-005, - 2.801524370E-008, -8.500729740E-012, 2.642898070E+004, - 1.393970510E+001 - - - 4.147569640E+000, 5.961666640E-003, -2.372948520E-006, - 4.674121710E-010, -3.612352130E-014, 2.593599920E+004, - -1.230281210E+000 - - - - - linear - 2.090000000E+002 - 4.100000000E+000 - 2.500000000E+000 - - - - - - L 2/92 - C:2 H:3 - - - - 3.212466450E+000, 1.514791620E-003, 2.592094120E-005, - -3.576578470E-008, 1.471508730E-011, 3.485984680E+004, - 8.510540250E+000 - - - 3.016724000E+000, 1.033022920E-002, -4.680823490E-006, - 1.017632880E-009, -8.626070410E-014, 3.461287390E+004, - 7.787323780E+000 - - - - - nonlinear - 2.090000000E+002 - 4.100000000E+000 - 1.000000000E+000 - - - - - - L 1/91 - C:2 H:4 - - - - 3.959201480E+000, -7.570522470E-003, 5.709902920E-005, - -6.915887530E-008, 2.698843730E-011, 5.089775930E+003, - 4.097330960E+000 - - - 2.036111160E+000, 1.464541510E-002, -6.710779150E-006, - 1.472229230E-009, -1.257060610E-013, 4.939886140E+003, - 1.030536930E+001 - - - - - nonlinear - 2.808000000E+002 - 3.971000000E+000 - 1.500000000E+000 - - - - - - L12/92 - C:2 H:5 - - - - 4.306465680E+000, -4.186588920E-003, 4.971428070E-005, - -5.991266060E-008, 2.305090040E-011, 1.284162650E+004, - 4.707209240E+000 - - - 1.954656420E+000, 1.739727220E-002, -7.982066680E-006, - 1.752176890E-009, -1.496415760E-013, 1.285752000E+004, - 1.346243430E+001 - - - - - nonlinear - 2.523000000E+002 - 4.302000000E+000 - 1.500000000E+000 - - - - - - L 8/88 - C:2 H:6 - - - - 4.291424920E+000, -5.501542700E-003, 5.994382880E-005, - -7.084662850E-008, 2.686857710E-011, -1.152220550E+004, - 2.666823160E+000 - - - 1.071881500E+000, 2.168526770E-002, -1.002560670E-005, - 2.214120010E-009, -1.900028900E-013, -1.142639320E+004, - 1.511561070E+001 - - - - - nonlinear - 2.523000000E+002 - 4.302000000E+000 - 1.500000000E+000 - - - - - - SRIC91 - H:1 C:2 O:1 - - - - 2.251721400E+000, 1.765502100E-002, -2.372910100E-005, - 1.727575900E-008, -5.066481100E-012, 2.005944900E+004, - 1.249041700E+001 - - - 5.628205800E+000, 4.085340100E-003, -1.593454700E-006, - 2.862605200E-010, -1.940783200E-014, 1.932721500E+004, - -3.930259500E+000 - - - - - nonlinear - 1.500000000E+002 - 2.500000000E+000 - 1.000000000E+000 - - - - - - L 5/90 - C:2 H:2 O:1 - - - - 2.135836300E+000, 1.811887210E-002, -1.739474740E-005, - 9.343975680E-009, -2.014576150E-012, -7.042918040E+003, - 1.221564800E+001 - - - 4.511297320E+000, 9.003597450E-003, -4.169396350E-006, - 9.233458820E-010, -7.948382010E-014, -7.551053110E+003, - 6.322472050E-001 - - - - - nonlinear - 4.360000000E+002 - 3.970000000E+000 - 2.000000000E+000 - - - - - - SRI91 - C:2 O:1 H:2 - - - - 1.242373300E+000, 3.107220100E-002, -5.086686400E-005, - 4.313713100E-008, -1.401459400E-011, 8.031614300E+003, - 1.387431900E+001 - - - 5.923829100E+000, 6.792360000E-003, -2.565856400E-006, - 4.498784100E-010, -2.994010100E-014, 7.264626000E+003, - -7.601774200E+000 - - - - - nonlinear - 4.360000000E+002 - 3.970000000E+000 - 2.000000000E+000 - - - - - - L 6/88 - N:1 - - - - 2.500000000E+000, 0.000000000E+000, 0.000000000E+000, - 0.000000000E+000, 0.000000000E+000, 5.610463700E+004, - 4.193908700E+000 - - - 2.415942900E+000, 1.748906500E-004, -1.190236900E-007, - 3.022624500E-011, -2.036098200E-015, 5.613377300E+004, - 4.649609600E+000 - - - - - atom - 7.140000000E+001 - 3.298000000E+000 - - - - - - And94 - N:1 H:1 - - - - 3.492908500E+000, 3.117919800E-004, -1.489048400E-006, - 2.481644200E-009, -1.035696700E-012, 4.188062900E+004, - 1.848327800E+000 - - - 2.783692800E+000, 1.329843000E-003, -4.247804700E-007, - 7.834850100E-011, -5.504447000E-015, 4.212084800E+004, - 5.740779900E+000 - - - - - linear - 8.000000000E+001 - 2.650000000E+000 - 4.000000000E+000 - - - - - - And89 - N:1 H:2 - - - - 4.204002900E+000, -2.106138500E-003, 7.106834800E-006, - -5.611519700E-009, 1.644071700E-012, 2.188591000E+004, - -1.418424800E-001 - - - 2.834742100E+000, 3.207308200E-003, -9.339080400E-007, - 1.370295300E-010, -7.920614400E-015, 2.217195700E+004, - 6.520416300E+000 - - - - - nonlinear - 8.000000000E+001 - 2.650000000E+000 - 2.260000000E+000 - 4.000000000E+000 - - - - - - J 6/77 - N:1 H:3 - - - - 4.286027400E+000, -4.660523000E-003, 2.171851300E-005, - -2.280888700E-008, 8.263804600E-012, -6.741728500E+003, - -6.253727700E-001 - - - 2.634452100E+000, 5.666256000E-003, -1.727867600E-006, - 2.386716100E-010, -1.257878600E-014, -6.544695800E+003, - 6.566292800E+000 - - - - - nonlinear - 4.810000000E+002 - 2.920000000E+000 - 1.470000000E+000 - 1.000000000E+001 - - - - - - T07/93 - N:2 H:1 - - - - 4.344692700E+000, -4.849707200E-003, 2.005945900E-005, - -2.172646400E-008, 7.946953900E-012, 2.879197300E+004, - 2.977941000E+000 - - - 3.766754400E+000, 2.891508200E-003, -1.041662000E-006, - 1.684259400E-010, -1.009189600E-014, 2.865069700E+004, - 4.470506700E+000 - - - - - nonlinear - 7.140000000E+001 - 3.798000000E+000 - 1.000000000E+000 - - - - - - RUS 78 - N:1 O:1 - - - - 4.218476300E+000, -4.638976000E-003, 1.104102200E-005, - -9.336135400E-009, 2.803577000E-012, 9.844623000E+003, - 2.280846400E+000 - - - 3.260605600E+000, 1.191104300E-003, -4.291704800E-007, - 6.945766900E-011, -4.033609900E-015, 9.920974600E+003, - 6.369302700E+000 - - - - - linear - 9.753000000E+001 - 3.621000000E+000 - 1.760000000E+000 - 4.000000000E+000 - - - - - - L 7/88 - N:1 O:2 - - - - 3.944031200E+000, -1.585429000E-003, 1.665781200E-005, - -2.047542600E-008, 7.835056400E-012, 2.896617900E+003, - 6.311991700E+000 - - - 4.884754200E+000, 2.172395600E-003, -8.280690600E-007, - 1.574751000E-010, -1.051089500E-014, 2.316498300E+003, - -1.174169500E-001 - - - - - nonlinear - 2.000000000E+002 - 3.500000000E+000 - 1.000000000E+000 - - - - - - L 7/88 - N:2 O:1 - - - - 2.257150200E+000, 1.130472800E-002, -1.367131900E-005, - 9.681980600E-009, -2.930718200E-012, 8.741774400E+003, - 1.075799200E+001 - - - 4.823072900E+000, 2.627025100E-003, -9.585087400E-007, - 1.600071200E-010, -9.775230300E-015, 8.073404800E+003, - -2.201720700E+000 - - - - - linear - 2.324000000E+002 - 3.828000000E+000 - 1.000000000E+000 - - - - - - And93 - H:1 N:1 O:1 - - - - 4.533491600E+000, -5.669617100E-003, 1.847320700E-005, - -1.713709400E-008, 5.545457300E-012, 1.154829700E+004, - 1.749841700E+000 - - - 2.979250900E+000, 3.494405900E-003, -7.854977800E-007, - 5.747959400E-011, -1.933591600E-016, 1.175058200E+004, - 8.606372800E+000 - - - - - nonlinear - 1.167000000E+002 - 3.492000000E+000 - 1.000000000E+000 - - - - - - HBH92 - C:1 N:1 - - - - 3.612935100E+000, -9.555132700E-004, 2.144297700E-006, - -3.151632300E-010, -4.643035600E-013, 5.170834000E+004, - 3.980499500E+000 - - - 3.745980500E+000, 4.345077500E-005, 2.970598400E-007, - -6.865180600E-011, 4.413417300E-015, 5.153618800E+004, - 2.786760100E+000 - - - - - linear - 7.500000000E+001 - 3.856000000E+000 - 1.000000000E+000 - - - - - - GRI/98 - H:1 C:1 N:1 - - - - 2.258988600E+000, 1.005117000E-002, -1.335176300E-005, - 1.009234900E-008, -3.008902800E-012, 1.471263300E+004, - 8.916441900E+000 - - - 3.802239200E+000, 3.146422800E-003, -1.063218500E-006, - 1.661975700E-010, -9.799757000E-015, 1.440729200E+004, - 1.575460100E+000 - - - - - linear - 5.690000000E+002 - 3.630000000E+000 - 1.000000000E+000 - - - - - - 41687 - H:2 C:1 N:1 - - - - 2.851661000E+000, 5.695233100E-003, 1.071140000E-006, - -1.622612000E-009, -2.351108100E-013, 2.863782000E+004, - 8.992751100E+000 - - - 5.209703000E+000, 2.969291100E-003, -2.855589100E-007, - -1.635550000E-010, 3.043258900E-014, 2.767710900E+004, - -4.444478000E+000 - - - - - linear - 5.690000000E+002 - 3.630000000E+000 - 1.000000000E+000 - - - - - - SRI/94 - C:1 N:2 H:1 - - - - 2.524319400E+000, 1.596061900E-002, -1.881635400E-005, - 1.212554000E-008, -3.235737800E-012, 5.426198400E+004, - 1.167587000E+001 - - - 5.894636200E+000, 3.989595900E-003, -1.598238000E-006, - 2.924939500E-010, -2.009468600E-014, 5.345294100E+004, - -5.103050200E+000 - - - - - nonlinear - 1.500000000E+002 - 2.500000000E+000 - 1.000000000E+000 - - - - - - BDEA94 - H:1 N:1 C:1 O:1 - - - - 2.647279890E+000, 1.275053420E-002, -1.047942360E-005, - 4.414328360E-009, -7.575214660E-013, 1.929902520E+004, - 1.073329720E+001 - - - 6.598604560E+000, 3.027786260E-003, -1.077043460E-006, - 1.716665280E-010, -1.014393910E-014, 1.796613390E+004, - -1.033065990E+001 - - - - - nonlinear - 2.324000000E+002 - 3.828000000E+000 - 1.000000000E+000 - - - - - - BDEA94 - H:1 N:1 C:1 O:1 - - - - 3.786049520E+000, 6.886679220E-003, -3.214878640E-006, - 5.171957670E-010, 1.193607880E-014, -2.826984000E+003, - 5.632921620E+000 - - - 5.897848850E+000, 3.167893930E-003, -1.118010640E-006, - 1.772431440E-010, -1.043391770E-014, -3.706533310E+003, - -6.181678250E+000 - - - - - nonlinear - 2.324000000E+002 - 3.828000000E+000 - 1.000000000E+000 - - - - - - BDEA94 - H:1 N:1 C:1 O:1 - - - - 3.630963170E+000, 7.302823570E-003, -2.280500030E-006, - -6.612712980E-010, 3.622357520E-013, -1.558736360E+004, - 6.194577270E+000 - - - 6.223951340E+000, 3.178640040E-003, -1.093787550E-006, - 1.707351630E-010, -9.950219550E-015, -1.665993440E+004, - -8.382247410E+000 - - - - - nonlinear - 2.324000000E+002 - 3.828000000E+000 - 1.000000000E+000 - - - - - - EA 93 - N:1 C:1 O:1 - - - - 2.826930800E+000, 8.805168800E-003, -8.386613400E-006, - 4.801696400E-009, -1.331359500E-012, 1.468247700E+004, - 9.550464600E+000 - - - 5.152184500E+000, 2.305176100E-003, -8.803315300E-007, - 1.478909800E-010, -9.097799600E-015, 1.400412300E+004, - -2.544266000E+000 - - - - - linear - 2.324000000E+002 - 3.828000000E+000 - 1.000000000E+000 - - - - - - 121286 - N:2 - - - - 3.298677000E+000, 1.408240400E-003, -3.963222000E-006, - 5.641515000E-009, -2.444854000E-012, -1.020899900E+003, - 3.950372000E+000 - - - 2.926640000E+000, 1.487976800E-003, -5.684760000E-007, - 1.009703800E-010, -6.753351000E-015, -9.227977000E+002, - 5.980528000E+000 - - - - - linear - 9.753000000E+001 - 3.621000000E+000 - 1.760000000E+000 - 4.000000000E+000 - - - - - - 120186 - Ar:1 - - - - 2.500000000E+000, 0.000000000E+000, 0.000000000E+000, - 0.000000000E+000, 0.000000000E+000, -7.453750000E+002, - 4.366000000E+000 - - - 2.500000000E+000, 0.000000000E+000, 0.000000000E+000, - 0.000000000E+000, 0.000000000E+000, -7.453750000E+002, - 4.366000000E+000 - - - - - atom - 1.365000000E+002 - 3.330000000E+000 - - - - - - L 9/84 - C:3 H:7 - - - - 1.051551800E+000, 2.599198000E-002, 2.380054000E-006, - -1.960956900E-008, 9.373247000E-012, 1.063186300E+004, - 2.112255900E+001 - - - 7.702698700E+000, 1.604420300E-002, -5.283322000E-006, - 7.629859000E-010, -3.939228400E-014, 8.298433600E+003, - -1.548018000E+001 - - - - - nonlinear - 2.668000000E+002 - 4.982000000E+000 - 1.000000000E+000 - - - - - - L 4/85 - C:3 H:8 - - - - 9.335538100E-001, 2.642457900E-002, 6.105972700E-006, - -2.197749900E-008, 9.514925300E-012, -1.395852000E+004, - 1.920169100E+001 - - - 7.534136800E+000, 1.887223900E-002, -6.271849100E-006, - 9.147564900E-010, -4.783806900E-014, -1.646751600E+004, - -1.789234900E+001 - - - - - nonlinear - 2.668000000E+002 - 4.982000000E+000 - 1.000000000E+000 - - - - - - SAND86 - O:1 H:3 C:2 - - - - 3.409062000E+000, 1.073857400E-002, 1.891492000E-006, - -7.158583000E-009, 2.867385000E-012, 1.521476600E+003, - 9.558290000E+000 - - - 5.975670000E+000, 8.130591000E-003, -2.743624000E-006, - 4.070304000E-010, -2.176017000E-014, 4.903218000E+002, - -5.045251000E+000 - - - - - nonlinear - 4.360000000E+002 - 3.970000000E+000 - 2.000000000E+000 - - - - - - L 8/88 - C:2 H:4 O:1 - - - - 4.729459500E+000, -3.193285800E-003, 4.753492100E-005, - -5.745861100E-008, 2.193111200E-011, -2.157287800E+004, - 4.103015900E+000 - - - 5.404110800E+000, 1.172305900E-002, -4.226313700E-006, - 6.837245100E-010, -4.098486300E-014, -2.259312200E+004, - -3.480791700E+000 - - - - - nonlinear - 4.360000000E+002 - 3.970000000E+000 - 2.000000000E+000 - - - - - - - - - - 2 O + M [=] O2 + M - O:2 - O2:1 - - 1.2e+017 -1 0 - - AR:0.83 C2H6:3 CH4:2 CO:1.75 CO2:3.6 H2:2.4 H2O:15.4 - - - - - - - O + H + M [=] OH + M - O:1 H:1 - OH:1 - - 5e+017 -1 0 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - O + H2 [=] H + OH - O:1 H2:1 - H:1 OH:1 - - 38700 2.7 6260 - - - - - - O + HO2 [=] OH + O2 - O:1 HO2:1 - OH:1 O2:1 - - 2e+013 0 0 - - - - - - O + H2O2 [=] OH + HO2 - O:1 H2O2:1 - OH:1 HO2:1 - - 9.63e+006 2 4000 - - - - - - O + CH [=] H + CO - O:1 CH:1 - H:1 CO:1 - - 5.7e+013 0 0 - - - - - - O + CH2 [=] H + HCO - O:1 CH2:1 - H:1 HCO:1 - - 8e+013 0 0 - - - - - - O + CH2(S) [=] H2 + CO - O:1 CH2(S):1 - H2:1 CO:1 - - 1.5e+013 0 0 - - - - - - O + CH2(S) [=] H + HCO - O:1 CH2(S):1 - H:1 HCO:1 - - 1.5e+013 0 0 - - - - - - O + CH3 [=] H + CH2O - O:1 CH3:1 - H:1 CH2O:1 - - 5.06e+013 0 0 - - - - - - O + CH4 [=] OH + CH3 - O:1 CH4:1 - OH:1 CH3:1 - - 1.02e+009 1.5 8600 - - - - - - O + CO (+ M) [=] CO2 (+ M) - O:1 CO:1 - CO2:1 - - 1.8e+010 0 2385 - 6.02e+014 0 3000 - - - AR:0.5 C2H6:3 CH4:2 CO:1.5 CO2:3.5 H2:2 H2O:6 O2:6 - - - - - - - O + HCO [=] OH + CO - O:1 HCO:1 - OH:1 CO:1 - - 3e+013 0 0 - - - - - - O + HCO [=] H + CO2 - O:1 HCO:1 - H:1 CO2:1 - - 3e+013 0 0 - - - - - - O + CH2O [=] OH + HCO - O:1 CH2O:1 - OH:1 HCO:1 - - 3.9e+013 0 3540 - - - - - - O + CH2OH [=] OH + CH2O - O:1 CH2OH:1 - OH:1 CH2O:1 - - 1e+013 0 0 - - - - - - O + CH3O [=] OH + CH2O - O:1 CH3O:1 - OH:1 CH2O:1 - - 1e+013 0 0 - - - - - - O + CH3OH [=] OH + CH2OH - O:1 CH3OH:1 - OH:1 CH2OH:1 - - 388000 2.5 3100 - - - - - - O + CH3OH [=] OH + CH3O - O:1 CH3OH:1 - OH:1 CH3O:1 - - 130000 2.5 5000 - - - - - - O + C2H [=] CH + CO - O:1 C2H:1 - CH:1 CO:1 - - 5e+013 0 0 - - - - - - O + C2H2 [=] H + HCCO - O:1 C2H2:1 - H:1 HCCO:1 - - 1.35e+007 2 1900 - - - - - - O + C2H2 [=] OH + C2H - O:1 C2H2:1 - OH:1 C2H:1 - - 4.6e+019 -1.41 28950 - - - - - - O + C2H2 [=] CO + CH2 - O:1 C2H2:1 - CO:1 CH2:1 - - 6.94e+006 2 1900 - - - - - - O + C2H3 [=] H + CH2CO - O:1 C2H3:1 - H:1 CH2CO:1 - - 3e+013 0 0 - - - - - - O + C2H4 [=] CH3 + HCO - O:1 C2H4:1 - CH3:1 HCO:1 - - 1.25e+007 1.83 220 - - - - - - O + C2H5 [=] CH3 + CH2O - O:1 C2H5:1 - CH3:1 CH2O:1 - - 2.24e+013 0 0 - - - - - - O + C2H6 [=] OH + C2H5 - O:1 C2H6:1 - OH:1 C2H5:1 - - 8.98e+007 1.92 5690 - - - - - - O + HCCO [=] H + 2 CO - O:1 HCCO:1 - H:1 CO:2 - - 1e+014 0 0 - - - - - - O + CH2CO [=] OH + HCCO - O:1 CH2CO:1 - OH:1 HCCO:1 - - 1e+013 0 8000 - - - - - - O + CH2CO [=] CH2 + CO2 - O:1 CH2CO:1 - CH2:1 CO2:1 - - 1.75e+012 0 1350 - - - - - - O2 + CO [=] O + CO2 - O2:1 CO:1 - O:1 CO2:1 - - 2.5e+012 0 47800 - - - - - - O2 + CH2O [=] HO2 + HCO - O2:1 CH2O:1 - HO2:1 HCO:1 - - 1e+014 0 40000 - - - - - - H + O2 + M [=] HO2 + M - H:1 O2:1 - HO2:1 - - 2.8e+018 -0.86 0 - - AR:0 C2H6:1.5 CO:0.75 CO2:1.5 H2O:0 N2:0 O2:0 - - - - - - - H + 2 O2 [=] HO2 + O2 - H:1 O2:2 - HO2:1 O2:1 - - 2.08e+019 -1.24 0 - - - - - - H + O2 + H2O [=] HO2 + H2O - H:1 O2:1 H2O:1 - HO2:1 H2O:1 - - 1.126e+019 -0.76 0 - - - - - - H + O2 + N2 [=] HO2 + N2 - H:1 O2:1 N2:1 - HO2:1 N2:1 - - 2.6e+019 -1.24 0 - - - - - - H + O2 + AR [=] HO2 + AR - H:1 O2:1 AR:1 - HO2:1 AR:1 - - 7e+017 -0.8 0 - - - - - - H + O2 [=] O + OH - H:1 O2:1 - O:1 OH:1 - - 2.65e+016 -0.6707 17041 - - - - - - 2 H + M [=] H2 + M - H:2 - H2:1 - - 1e+018 -1 0 - - AR:0.63 C2H6:3 CH4:2 CO2:0 H2:0 H2O:0 - - - - - - - 2 H + H2 [=] 2 H2 - H:2 H2:1 - H2:2 - - 9e+016 -0.6 0 - - - - - - 2 H + H2O [=] H2 + H2O - H:2 H2O:1 - H2:1 H2O:1 - - 6e+019 -1.25 0 - - - - - - 2 H + CO2 [=] H2 + CO2 - H:2 CO2:1 - H2:1 CO2:1 - - 5.5e+020 -2 0 - - - - - - H + OH + M [=] H2O + M - H:1 OH:1 - H2O:1 - - 2.2e+022 -2 0 - - AR:0.38 C2H6:3 CH4:2 H2:0.73 H2O:3.65 - - - - - - - H + HO2 [=] O + H2O - H:1 HO2:1 - O:1 H2O:1 - - 3.97e+012 0 671 - - - - - - H + HO2 [=] O2 + H2 - H:1 HO2:1 - O2:1 H2:1 - - 4.48e+013 0 1068 - - - - - - H + HO2 [=] 2 OH - H:1 HO2:1 - OH:2 - - 8.4e+013 0 635 - - - - - - H + H2O2 [=] HO2 + H2 - H:1 H2O2:1 - HO2:1 H2:1 - - 1.21e+007 2 5200 - - - - - - H + H2O2 [=] OH + H2O - H:1 H2O2:1 - OH:1 H2O:1 - - 1e+013 0 3600 - - - - - - H + CH [=] C + H2 - H:1 CH:1 - C:1 H2:1 - - 1.65e+014 0 0 - - - - - - H + CH2 (+ M) [=] CH3 (+ M) - H:1 CH2:1 - CH3:1 - - 6e+014 0 0 - 1.04e+026 -2.76 1600 - 0.562 91 5836 8552 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH2(S) [=] CH + H2 - H:1 CH2(S):1 - CH:1 H2:1 - - 3e+013 0 0 - - - - - - H + CH3 (+ M) [=] CH4 (+ M) - H:1 CH3:1 - CH4:1 - - 1.39e+016 -0.534 536 - 2.62e+033 -4.76 2440 - 0.783 74 2941 6964 - - AR:0.7 C2H6:3 CH4:3 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH4 [=] CH3 + H2 - H:1 CH4:1 - CH3:1 H2:1 - - 6.6e+008 1.62 10840 - - - - - - H + HCO (+ M) [=] CH2O (+ M) - H:1 HCO:1 - CH2O:1 - - 1.09e+012 0.48 -260 - 2.47e+024 -2.57 425 - 0.7824 271 2755 6570 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + HCO [=] H2 + CO - H:1 HCO:1 - H2:1 CO:1 - - 7.34e+013 0 0 - - - - - - H + CH2O (+ M) [=] CH2OH (+ M) - H:1 CH2O:1 - CH2OH:1 - - 5.4e+011 0.454 3600 - 1.27e+032 -4.82 6530 - 0.7187 103 1291 4160 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH2O (+ M) [=] CH3O (+ M) - H:1 CH2O:1 - CH3O:1 - - 5.4e+011 0.454 2600 - 2.2e+030 -4.8 5560 - 0.758 94 1555 4200 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH2O [=] HCO + H2 - H:1 CH2O:1 - HCO:1 H2:1 - - 5.74e+007 1.9 2742 - - - - - - H + CH2OH (+ M) [=] CH3OH (+ M) - H:1 CH2OH:1 - CH3OH:1 - - 1.055e+012 0.5 86 - 4.36e+031 -4.65 5080 - 0.6 100 90000 10000 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH2OH [=] H2 + CH2O - H:1 CH2OH:1 - H2:1 CH2O:1 - - 2e+013 0 0 - - - - - - H + CH2OH [=] OH + CH3 - H:1 CH2OH:1 - OH:1 CH3:1 - - 1.65e+011 0.65 -284 - - - - - - H + CH2OH [=] CH2(S) + H2O - H:1 CH2OH:1 - CH2(S):1 H2O:1 - - 3.28e+013 -0.09 610 - - - - - - H + CH3O (+ M) [=] CH3OH (+ M) - H:1 CH3O:1 - CH3OH:1 - - 2.43e+012 0.515 50 - 4.66e+041 -7.44 14080 - 0.7 100 90000 10000 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + CH3O [=] H + CH2OH - H:1 CH3O:1 - H:1 CH2OH:1 - - 4.15e+007 1.63 1924 - - - - - - H + CH3O [=] H2 + CH2O - H:1 CH3O:1 - H2:1 CH2O:1 - - 2e+013 0 0 - - - - - - H + CH3O [=] OH + CH3 - H:1 CH3O:1 - OH:1 CH3:1 - - 1.5e+012 0.5 -110 - - - - - - H + CH3O [=] CH2(S) + H2O - H:1 CH3O:1 - CH2(S):1 H2O:1 - - 2.62e+014 -0.23 1070 - - - - - - H + CH3OH [=] CH2OH + H2 - H:1 CH3OH:1 - CH2OH:1 H2:1 - - 1.7e+007 2.1 4870 - - - - - - H + CH3OH [=] CH3O + H2 - H:1 CH3OH:1 - CH3O:1 H2:1 - - 4.2e+006 2.1 4870 - - - - - - H + C2H (+ M) [=] C2H2 (+ M) - H:1 C2H:1 - C2H2:1 - - 1e+017 -1 0 - 3.75e+033 -4.8 1900 - 0.6464 132 1315 5566 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C2H2 (+ M) [=] C2H3 (+ M) - H:1 C2H2:1 - C2H3:1 - - 5.6e+012 0 2400 - 3.8e+040 -7.27 7220 - 0.7507 98.5 1302 4167 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C2H3 (+ M) [=] C2H4 (+ M) - H:1 C2H3:1 - C2H4:1 - - 6.08e+012 0.27 280 - 1.4e+030 -3.86 3320 - 0.782 207.5 2663 6095 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C2H3 [=] H2 + C2H2 - H:1 C2H3:1 - H2:1 C2H2:1 - - 3e+013 0 0 - - - - - - H + C2H4 (+ M) [=] C2H5 (+ M) - H:1 C2H4:1 - C2H5:1 - - 5.4e+011 0.454 1820 - 6e+041 -7.62 6970 - 0.9753 210 984 4374 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C2H4 [=] C2H3 + H2 - H:1 C2H4:1 - C2H3:1 H2:1 - - 1.325e+006 2.53 12240 - - - - - - H + C2H5 (+ M) [=] C2H6 (+ M) - H:1 C2H5:1 - C2H6:1 - - 5.21e+017 -0.99 1580 - 1.99e+041 -7.08 6685 - 0.8422 125 2219 6882 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C2H5 [=] H2 + C2H4 - H:1 C2H5:1 - H2:1 C2H4:1 - - 2e+012 0 0 - - - - - - H + C2H6 [=] C2H5 + H2 - H:1 C2H6:1 - C2H5:1 H2:1 - - 1.15e+008 1.9 7530 - - - - - - H + HCCO [=] CH2(S) + CO - H:1 HCCO:1 - CH2(S):1 CO:1 - - 1e+014 0 0 - - - - - - H + CH2CO [=] HCCO + H2 - H:1 CH2CO:1 - HCCO:1 H2:1 - - 5e+013 0 8000 - - - - - - H + CH2CO [=] CH3 + CO - H:1 CH2CO:1 - CH3:1 CO:1 - - 1.13e+013 0 3428 - - - - - - H + HCCOH [=] H + CH2CO - H:1 HCCOH:1 - H:1 CH2CO:1 - - 1e+013 0 0 - - - - - - H2 + CO (+ M) [=] CH2O (+ M) - H2:1 CO:1 - CH2O:1 - - 4.3e+007 1.5 79600 - 5.07e+027 -3.42 84350 - 0.932 197 1540 10300 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - OH + H2 [=] H + H2O - OH:1 H2:1 - H:1 H2O:1 - - 2.16e+008 1.51 3430 - - - - - - 2 OH (+ M) [=] H2O2 (+ M) - OH:2 - H2O2:1 - - 7.4e+013 -0.37 0 - 2.3e+018 -0.9 -1700 - 0.7346 94 1756 5182 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - 2 OH [=] O + H2O - OH:2 - O:1 H2O:1 - - 35700 2.4 -2110 - - - - - - OH + HO2 [=] O2 + H2O - OH:1 HO2:1 - O2:1 H2O:1 - - 1.45e+013 0 -500 - - idtag_rxn_287 - - - - - OH + H2O2 [=] HO2 + H2O - OH:1 H2O2:1 - HO2:1 H2O:1 - - 2e+012 0 427 - - idtag_rxn_89 - - - - - OH + H2O2 [=] HO2 + H2O - OH:1 H2O2:1 - HO2:1 H2O:1 - - 1.7e+018 0 29410 - - idtag_rxn_88 - - - - - OH + C [=] H + CO - OH:1 C:1 - H:1 CO:1 - - 5e+013 0 0 - - - - - - OH + CH [=] H + HCO - OH:1 CH:1 - H:1 HCO:1 - - 3e+013 0 0 - - - - - - OH + CH2 [=] H + CH2O - OH:1 CH2:1 - H:1 CH2O:1 - - 2e+013 0 0 - - - - - - OH + CH2 [=] CH + H2O - OH:1 CH2:1 - CH:1 H2O:1 - - 1.13e+007 2 3000 - - - - - - OH + CH2(S) [=] H + CH2O - OH:1 CH2(S):1 - H:1 CH2O:1 - - 3e+013 0 0 - - - - - - OH + CH3 (+ M) [=] CH3OH (+ M) - OH:1 CH3:1 - CH3OH:1 - - 2.79e+018 -1.43 1330 - 4e+036 -5.92 3140 - 0.412 195 5900 6394 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - OH + CH3 [=] CH2 + H2O - OH:1 CH3:1 - CH2:1 H2O:1 - - 5.6e+007 1.6 5420 - - - - - - OH + CH3 [=] CH2(S) + H2O - OH:1 CH3:1 - CH2(S):1 H2O:1 - - 6.44e+017 -1.34 1417 - - - - - - OH + CH4 [=] CH3 + H2O - OH:1 CH4:1 - CH3:1 H2O:1 - - 1e+008 1.6 3120 - - - - - - OH + CO [=] H + CO2 - OH:1 CO:1 - H:1 CO2:1 - - 4.76e+007 1.228 70 - - - - - - OH + HCO [=] H2O + CO - OH:1 HCO:1 - H2O:1 CO:1 - - 5e+013 0 0 - - - - - - OH + CH2O [=] HCO + H2O - OH:1 CH2O:1 - HCO:1 H2O:1 - - 3.43e+009 1.18 -447 - - - - - - OH + CH2OH [=] H2O + CH2O - OH:1 CH2OH:1 - H2O:1 CH2O:1 - - 5e+012 0 0 - - - - - - OH + CH3O [=] H2O + CH2O - OH:1 CH3O:1 - H2O:1 CH2O:1 - - 5e+012 0 0 - - - - - - OH + CH3OH [=] CH2OH + H2O - OH:1 CH3OH:1 - CH2OH:1 H2O:1 - - 1.44e+006 2 -840 - - - - - - OH + CH3OH [=] CH3O + H2O - OH:1 CH3OH:1 - CH3O:1 H2O:1 - - 6.3e+006 2 1500 - - - - - - OH + C2H [=] H + HCCO - OH:1 C2H:1 - H:1 HCCO:1 - - 2e+013 0 0 - - - - - - OH + C2H2 [=] H + CH2CO - OH:1 C2H2:1 - H:1 CH2CO:1 - - 0.000218 4.5 -1000 - - - - - - OH + C2H2 [=] H + HCCOH - OH:1 C2H2:1 - H:1 HCCOH:1 - - 504000 2.3 13500 - - - - - - OH + C2H2 [=] C2H + H2O - OH:1 C2H2:1 - C2H:1 H2O:1 - - 3.37e+007 2 14000 - - - - - - OH + C2H2 [=] CH3 + CO - OH:1 C2H2:1 - CH3:1 CO:1 - - 0.000483 4 -2000 - - - - - - OH + C2H3 [=] H2O + C2H2 - OH:1 C2H3:1 - H2O:1 C2H2:1 - - 5e+012 0 0 - - - - - - OH + C2H4 [=] C2H3 + H2O - OH:1 C2H4:1 - C2H3:1 H2O:1 - - 3.6e+006 2 2500 - - - - - - OH + C2H6 [=] C2H5 + H2O - OH:1 C2H6:1 - C2H5:1 H2O:1 - - 3.54e+006 2.12 870 - - - - - - OH + CH2CO [=] HCCO + H2O - OH:1 CH2CO:1 - HCCO:1 H2O:1 - - 7.5e+012 0 2000 - - - - - - 2 HO2 [=] O2 + H2O2 - HO2:2 - O2:1 H2O2:1 - - 1.3e+011 0 -1630 - - idtag_rxn_116 - - - - - 2 HO2 [=] O2 + H2O2 - HO2:2 - O2:1 H2O2:1 - - 4.2e+014 0 12000 - - idtag_rxn_115 - - - - - HO2 + CH2 [=] OH + CH2O - HO2:1 CH2:1 - OH:1 CH2O:1 - - 2e+013 0 0 - - - - - - HO2 + CH3 [=] O2 + CH4 - HO2:1 CH3:1 - O2:1 CH4:1 - - 1e+012 0 0 - - - - - - HO2 + CH3 [=] OH + CH3O - HO2:1 CH3:1 - OH:1 CH3O:1 - - 3.78e+013 0 0 - - - - - - HO2 + CO [=] OH + CO2 - HO2:1 CO:1 - OH:1 CO2:1 - - 1.5e+014 0 23600 - - - - - - HO2 + CH2O [=] HCO + H2O2 - HO2:1 CH2O:1 - HCO:1 H2O2:1 - - 5.6e+006 2 12000 - - - - - - C + O2 [=] O + CO - C:1 O2:1 - O:1 CO:1 - - 5.8e+013 0 576 - - - - - - C + CH2 [=] H + C2H - C:1 CH2:1 - H:1 C2H:1 - - 5e+013 0 0 - - - - - - C + CH3 [=] H + C2H2 - C:1 CH3:1 - H:1 C2H2:1 - - 5e+013 0 0 - - - - - - CH + O2 [=] O + HCO - CH:1 O2:1 - O:1 HCO:1 - - 6.71e+013 0 0 - - - - - - CH + H2 [=] H + CH2 - CH:1 H2:1 - H:1 CH2:1 - - 1.08e+014 0 3110 - - - - - - CH + H2O [=] H + CH2O - CH:1 H2O:1 - H:1 CH2O:1 - - 5.71e+012 0 -755 - - - - - - CH + CH2 [=] H + C2H2 - CH:1 CH2:1 - H:1 C2H2:1 - - 4e+013 0 0 - - - - - - CH + CH3 [=] H + C2H3 - CH:1 CH3:1 - H:1 C2H3:1 - - 3e+013 0 0 - - - - - - CH + CH4 [=] H + C2H4 - CH:1 CH4:1 - H:1 C2H4:1 - - 6e+013 0 0 - - - - - - CH + CO (+ M) [=] HCCO (+ M) - CH:1 CO:1 - HCCO:1 - - 5e+013 0 0 - 2.69e+028 -3.74 1936 - 0.5757 237 1652 5069 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - CH + CO2 [=] HCO + CO - CH:1 CO2:1 - HCO:1 CO:1 - - 1.9e+014 0 15792 - - - - - - CH + CH2O [=] H + CH2CO - CH:1 CH2O:1 - H:1 CH2CO:1 - - 9.46e+013 0 -515 - - - - - - CH + HCCO [=] CO + C2H2 - CH:1 HCCO:1 - CO:1 C2H2:1 - - 5e+013 0 0 - - - - - - CH2 + O2 =] OH + H + CO - CH2:1 O2:1 - OH:1 H:1 CO:1 - - 5e+012 0 1500 - - - - - - CH2 + H2 [=] H + CH3 - CH2:1 H2:1 - H:1 CH3:1 - - 500000 2 7230 - - - - - - 2 CH2 [=] H2 + C2H2 - CH2:2 - H2:1 C2H2:1 - - 1.6e+015 0 11944 - - - - - - CH2 + CH3 [=] H + C2H4 - CH2:1 CH3:1 - H:1 C2H4:1 - - 4e+013 0 0 - - - - - - CH2 + CH4 [=] 2 CH3 - CH2:1 CH4:1 - CH3:2 - - 2.46e+006 2 8270 - - - - - - CH2 + CO (+ M) [=] CH2CO (+ M) - CH2:1 CO:1 - CH2CO:1 - - 8.1e+011 0.5 4510 - 2.69e+033 -5.11 7095 - 0.5907 275 1226 5185 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - CH2 + HCCO [=] C2H3 + CO - CH2:1 HCCO:1 - C2H3:1 CO:1 - - 3e+013 0 0 - - - - - - CH2(S) + N2 [=] CH2 + N2 - CH2(S):1 N2:1 - CH2:1 N2:1 - - 1.5e+013 0 600 - - - - - - CH2(S) + AR [=] CH2 + AR - CH2(S):1 AR:1 - CH2:1 AR:1 - - 9e+012 0 600 - - - - - - CH2(S) + O2 [=] H + OH + CO - CH2(S):1 O2:1 - H:1 OH:1 CO:1 - - 2.8e+013 0 0 - - - - - - CH2(S) + O2 [=] CO + H2O - CH2(S):1 O2:1 - CO:1 H2O:1 - - 1.2e+013 0 0 - - - - - - CH2(S) + H2 [=] CH3 + H - CH2(S):1 H2:1 - CH3:1 H:1 - - 7e+013 0 0 - - - - - - CH2(S) + H2O (+ M) [=] CH3OH (+ M) - CH2(S):1 H2O:1 - CH3OH:1 - - 4.82e+017 -1.16 1145 - 1.88e+038 -6.36 5040 - 0.6027 208 3922 10180 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - CH2(S) + H2O [=] CH2 + H2O - CH2(S):1 H2O:1 - CH2:1 H2O:1 - - 3e+013 0 0 - - - - - - CH2(S) + CH3 [=] H + C2H4 - CH2(S):1 CH3:1 - H:1 C2H4:1 - - 1.2e+013 0 -570 - - - - - - CH2(S) + CH4 [=] 2 CH3 - CH2(S):1 CH4:1 - CH3:2 - - 1.6e+013 0 -570 - - - - - - CH2(S) + CO [=] CH2 + CO - CH2(S):1 CO:1 - CH2:1 CO:1 - - 9e+012 0 0 - - - - - - CH2(S) + CO2 [=] CH2 + CO2 - CH2(S):1 CO2:1 - CH2:1 CO2:1 - - 7e+012 0 0 - - - - - - CH2(S) + CO2 [=] CO + CH2O - CH2(S):1 CO2:1 - CO:1 CH2O:1 - - 1.4e+013 0 0 - - - - - - CH2(S) + C2H6 [=] CH3 + C2H5 - CH2(S):1 C2H6:1 - CH3:1 C2H5:1 - - 4e+013 0 -550 - - - - - - CH3 + O2 [=] O + CH3O - CH3:1 O2:1 - O:1 CH3O:1 - - 3.56e+013 0 30480 - - - - - - CH3 + O2 [=] OH + CH2O - CH3:1 O2:1 - OH:1 CH2O:1 - - 2.31e+012 0 20315 - - - - - - CH3 + H2O2 [=] HO2 + CH4 - CH3:1 H2O2:1 - HO2:1 CH4:1 - - 24500 2.47 5180 - - - - - - 2 CH3 (+ M) [=] C2H6 (+ M) - CH3:2 - C2H6:1 - - 6.77e+016 -1.18 654 - 3.4e+041 -7.03 2762 - 0.619 73.2 1180 9999 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - 2 CH3 [=] H + C2H5 - CH3:2 - H:1 C2H5:1 - - 6.84e+012 0.1 10600 - - - - - - CH3 + HCO [=] CH4 + CO - CH3:1 HCO:1 - CH4:1 CO:1 - - 2.648e+013 0 0 - - - - - - CH3 + CH2O [=] HCO + CH4 - CH3:1 CH2O:1 - HCO:1 CH4:1 - - 3320 2.81 5860 - - - - - - CH3 + CH3OH [=] CH2OH + CH4 - CH3:1 CH3OH:1 - CH2OH:1 CH4:1 - - 3e+007 1.5 9940 - - - - - - CH3 + CH3OH [=] CH3O + CH4 - CH3:1 CH3OH:1 - CH3O:1 CH4:1 - - 1e+007 1.5 9940 - - - - - - CH3 + C2H4 [=] C2H3 + CH4 - CH3:1 C2H4:1 - C2H3:1 CH4:1 - - 227000 2 9200 - - - - - - CH3 + C2H6 [=] C2H5 + CH4 - CH3:1 C2H6:1 - C2H5:1 CH4:1 - - 6.14e+006 1.74 10450 - - - - - - HCO + H2O [=] H + CO + H2O - HCO:1 H2O:1 - H:1 CO:1 H2O:1 - - 1.5e+018 -1 17000 - - - - - - HCO + M [=] H + CO + M - HCO:1 - H:1 CO:1 - - 1.87e+017 -1 17000 - - C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:0 - - - - - - - HCO + O2 [=] HO2 + CO - HCO:1 O2:1 - HO2:1 CO:1 - - 1.345e+013 0 400 - - - - - - CH2OH + O2 [=] HO2 + CH2O - CH2OH:1 O2:1 - HO2:1 CH2O:1 - - 1.8e+013 0 900 - - - - - - CH3O + O2 [=] HO2 + CH2O - CH3O:1 O2:1 - HO2:1 CH2O:1 - - 4.28e-013 7.6 -3530 - - - - - - C2H + O2 [=] HCO + CO - C2H:1 O2:1 - HCO:1 CO:1 - - 1e+013 0 -755 - - - - - - C2H + H2 [=] H + C2H2 - C2H:1 H2:1 - H:1 C2H2:1 - - 5.68e+010 0.9 1993 - - - - - - C2H3 + O2 [=] HCO + CH2O - C2H3:1 O2:1 - HCO:1 CH2O:1 - - 4.58e+016 -1.39 1015 - - - - - - C2H4 (+ M) [=] H2 + C2H2 (+ M) - C2H4:1 - H2:1 C2H2:1 - - 8e+012 0.44 86770 - 1.58e+051 -9.3 97800 - 0.7345 180 1035 5417 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - C2H5 + O2 [=] HO2 + C2H4 - C2H5:1 O2:1 - HO2:1 C2H4:1 - - 8.4e+011 0 3875 - - - - - - HCCO + O2 [=] OH + 2 CO - HCCO:1 O2:1 - OH:1 CO:2 - - 3.2e+012 0 854 - - - - - - 2 HCCO [=] 2 CO + C2H2 - HCCO:2 - CO:2 C2H2:1 - - 1e+013 0 0 - - - - - - N + NO [=] N2 + O - N:1 NO:1 - N2:1 O:1 - - 2.7e+013 0 355 - - - - - - N + O2 [=] NO + O - N:1 O2:1 - NO:1 O:1 - - 9e+009 1 6500 - - - - - - N + OH [=] NO + H - N:1 OH:1 - NO:1 H:1 - - 3.36e+013 0 385 - - - - - - N2O + O [=] N2 + O2 - N2O:1 O:1 - N2:1 O2:1 - - 1.4e+012 0 10810 - - - - - - N2O + O [=] 2 NO - N2O:1 O:1 - NO:2 - - 2.9e+013 0 23150 - - - - - - N2O + H [=] N2 + OH - N2O:1 H:1 - N2:1 OH:1 - - 3.87e+014 0 18880 - - - - - - N2O + OH [=] N2 + HO2 - N2O:1 OH:1 - N2:1 HO2:1 - - 2e+012 0 21060 - - - - - - N2O (+ M) [=] N2 + O (+ M) - N2O:1 - N2:1 O:1 - - 7.91e+010 0 56020 - 6.37e+014 0 56640 - - - AR:0.625 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - HO2 + NO [=] NO2 + OH - HO2:1 NO:1 - NO2:1 OH:1 - - 2.11e+012 0 -480 - - - - - - NO + O + M [=] NO2 + M - NO:1 O:1 - NO2:1 - - 1.06e+020 -1.41 0 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - NO2 + O [=] NO + O2 - NO2:1 O:1 - NO:1 O2:1 - - 3.9e+012 0 -240 - - - - - - NO2 + H [=] NO + OH - NO2:1 H:1 - NO:1 OH:1 - - 1.32e+014 0 360 - - - - - - NH + O [=] NO + H - NH:1 O:1 - NO:1 H:1 - - 4e+013 0 0 - - - - - - NH + H [=] N + H2 - NH:1 H:1 - N:1 H2:1 - - 3.2e+013 0 330 - - - - - - NH + OH [=] HNO + H - NH:1 OH:1 - HNO:1 H:1 - - 2e+013 0 0 - - - - - - NH + OH [=] N + H2O - NH:1 OH:1 - N:1 H2O:1 - - 2e+009 1.2 0 - - - - - - NH + O2 [=] HNO + O - NH:1 O2:1 - HNO:1 O:1 - - 461000 2 6500 - - - - - - NH + O2 [=] NO + OH - NH:1 O2:1 - NO:1 OH:1 - - 1.28e+006 1.5 100 - - - - - - NH + N [=] N2 + H - NH:1 N:1 - N2:1 H:1 - - 1.5e+013 0 0 - - - - - - NH + H2O [=] HNO + H2 - NH:1 H2O:1 - HNO:1 H2:1 - - 2e+013 0 13850 - - - - - - NH + NO [=] N2 + OH - NH:1 NO:1 - N2:1 OH:1 - - 2.16e+013 -0.23 0 - - - - - - NH + NO [=] N2O + H - NH:1 NO:1 - N2O:1 H:1 - - 3.65e+014 -0.45 0 - - - - - - NH2 + O [=] OH + NH - NH2:1 O:1 - OH:1 NH:1 - - 3e+012 0 0 - - - - - - NH2 + O [=] H + HNO - NH2:1 O:1 - H:1 HNO:1 - - 3.9e+013 0 0 - - - - - - NH2 + H [=] NH + H2 - NH2:1 H:1 - NH:1 H2:1 - - 4e+013 0 3650 - - - - - - NH2 + OH [=] NH + H2O - NH2:1 OH:1 - NH:1 H2O:1 - - 9e+007 1.5 -460 - - - - - - NNH [=] N2 + H - NNH:1 - N2:1 H:1 - - 3.3e+008 0 0 - - - - - - NNH + M [=] N2 + H + M - NNH:1 - N2:1 H:1 - - 1.3e+014 -0.11 4980 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - NNH + O2 [=] HO2 + N2 - NNH:1 O2:1 - HO2:1 N2:1 - - 5e+012 0 0 - - - - - - NNH + O [=] OH + N2 - NNH:1 O:1 - OH:1 N2:1 - - 2.5e+013 0 0 - - - - - - NNH + O [=] NH + NO - NNH:1 O:1 - NH:1 NO:1 - - 7e+013 0 0 - - - - - - NNH + H [=] H2 + N2 - NNH:1 H:1 - H2:1 N2:1 - - 5e+013 0 0 - - - - - - NNH + OH [=] H2O + N2 - NNH:1 OH:1 - H2O:1 N2:1 - - 2e+013 0 0 - - - - - - NNH + CH3 [=] CH4 + N2 - NNH:1 CH3:1 - CH4:1 N2:1 - - 2.5e+013 0 0 - - - - - - H + NO + M [=] HNO + M - H:1 NO:1 - HNO:1 - - 4.48e+019 -1.32 740 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - HNO + O [=] NO + OH - HNO:1 O:1 - NO:1 OH:1 - - 2.5e+013 0 0 - - - - - - HNO + H [=] H2 + NO - HNO:1 H:1 - H2:1 NO:1 - - 9e+011 0.72 660 - - - - - - HNO + OH [=] NO + H2O - HNO:1 OH:1 - NO:1 H2O:1 - - 1.3e+007 1.9 -950 - - - - - - HNO + O2 [=] HO2 + NO - HNO:1 O2:1 - HO2:1 NO:1 - - 1e+013 0 13000 - - - - - - CN + O [=] CO + N - CN:1 O:1 - CO:1 N:1 - - 7.7e+013 0 0 - - - - - - CN + OH [=] NCO + H - CN:1 OH:1 - NCO:1 H:1 - - 4e+013 0 0 - - - - - - CN + H2O [=] HCN + OH - CN:1 H2O:1 - HCN:1 OH:1 - - 8e+012 0 7460 - - - - - - CN + O2 [=] NCO + O - CN:1 O2:1 - NCO:1 O:1 - - 6.14e+012 0 -440 - - - - - - CN + H2 [=] HCN + H - CN:1 H2:1 - HCN:1 H:1 - - 295000 2.45 2240 - - - - - - NCO + O [=] NO + CO - NCO:1 O:1 - NO:1 CO:1 - - 2.35e+013 0 0 - - - - - - NCO + H [=] NH + CO - NCO:1 H:1 - NH:1 CO:1 - - 5.4e+013 0 0 - - - - - - NCO + OH [=] NO + H + CO - NCO:1 OH:1 - NO:1 H:1 CO:1 - - 2.5e+012 0 0 - - - - - - NCO + N [=] N2 + CO - NCO:1 N:1 - N2:1 CO:1 - - 2e+013 0 0 - - - - - - NCO + O2 [=] NO + CO2 - NCO:1 O2:1 - NO:1 CO2:1 - - 2e+012 0 20000 - - - - - - NCO + M [=] N + CO + M - NCO:1 - N:1 CO:1 - - 3.1e+014 0 54050 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - NCO + NO [=] N2O + CO - NCO:1 NO:1 - N2O:1 CO:1 - - 1.9e+017 -1.52 740 - - - - - - NCO + NO [=] N2 + CO2 - NCO:1 NO:1 - N2:1 CO2:1 - - 3.8e+018 -2 800 - - - - - - HCN + M [=] H + CN + M - HCN:1 - H:1 CN:1 - - 1.04e+029 -3.3 126600 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - HCN + O [=] NCO + H - HCN:1 O:1 - NCO:1 H:1 - - 20300 2.64 4980 - - - - - - HCN + O [=] NH + CO - HCN:1 O:1 - NH:1 CO:1 - - 5070 2.64 4980 - - - - - - HCN + O [=] CN + OH - HCN:1 O:1 - CN:1 OH:1 - - 3.91e+009 1.58 26600 - - - - - - HCN + OH [=] HOCN + H - HCN:1 OH:1 - HOCN:1 H:1 - - 1.1e+006 2.03 13370 - - - - - - HCN + OH [=] HNCO + H - HCN:1 OH:1 - HNCO:1 H:1 - - 4400 2.26 6400 - - - - - - HCN + OH [=] NH2 + CO - HCN:1 OH:1 - NH2:1 CO:1 - - 160 2.56 9000 - - - - - - H + HCN (+ M) [=] H2CN (+ M) - H:1 HCN:1 - H2CN:1 - - 3.3e+013 0 0 - 1.4e+026 -3.4 1900 - - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H2CN + N [=] N2 + CH2 - H2CN:1 N:1 - N2:1 CH2:1 - - 6e+013 0 400 - - - - - - C + N2 [=] CN + N - C:1 N2:1 - CN:1 N:1 - - 6.3e+013 0 46020 - - - - - - CH + N2 [=] HCN + N - CH:1 N2:1 - HCN:1 N:1 - - 3.12e+009 0.88 20130 - - - - - - CH + N2 (+ M) [=] HCNN (+ M) - CH:1 N2:1 - HCNN:1 - - 3.1e+012 0.15 0 - 1.3e+025 -3.16 740 - 0.667 235 2117 4536 - - AR:1 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - CH2 + N2 [=] HCN + NH - CH2:1 N2:1 - HCN:1 NH:1 - - 1e+013 0 74000 - - - - - - CH2(S) + N2 [=] NH + HCN - CH2(S):1 N2:1 - NH:1 HCN:1 - - 1e+011 0 65000 - - - - - - C + NO [=] CN + O - C:1 NO:1 - CN:1 O:1 - - 1.9e+013 0 0 - - - - - - C + NO [=] CO + N - C:1 NO:1 - CO:1 N:1 - - 2.9e+013 0 0 - - - - - - CH + NO [=] HCN + O - CH:1 NO:1 - HCN:1 O:1 - - 4.1e+013 0 0 - - - - - - CH + NO [=] H + NCO - CH:1 NO:1 - H:1 NCO:1 - - 1.62e+013 0 0 - - - - - - CH + NO [=] N + HCO - CH:1 NO:1 - N:1 HCO:1 - - 2.46e+013 0 0 - - - - - - CH2 + NO [=] H + HNCO - CH2:1 NO:1 - H:1 HNCO:1 - - 3.1e+017 -1.38 1270 - - - - - - CH2 + NO [=] OH + HCN - CH2:1 NO:1 - OH:1 HCN:1 - - 2.9e+014 -0.69 760 - - - - - - CH2 + NO [=] H + HCNO - CH2:1 NO:1 - H:1 HCNO:1 - - 3.8e+013 -0.36 580 - - - - - - CH2(S) + NO [=] H + HNCO - CH2(S):1 NO:1 - H:1 HNCO:1 - - 3.1e+017 -1.38 1270 - - - - - - CH2(S) + NO [=] OH + HCN - CH2(S):1 NO:1 - OH:1 HCN:1 - - 2.9e+014 -0.69 760 - - - - - - CH2(S) + NO [=] H + HCNO - CH2(S):1 NO:1 - H:1 HCNO:1 - - 3.8e+013 -0.36 580 - - - - - - CH3 + NO [=] HCN + H2O - CH3:1 NO:1 - HCN:1 H2O:1 - - 9.6e+013 0 28800 - - - - - - CH3 + NO [=] H2CN + OH - CH3:1 NO:1 - H2CN:1 OH:1 - - 1e+012 0 21750 - - - - - - HCNN + O [=] CO + H + N2 - HCNN:1 O:1 - CO:1 H:1 N2:1 - - 2.2e+013 0 0 - - - - - - HCNN + O [=] HCN + NO - HCNN:1 O:1 - HCN:1 NO:1 - - 2e+012 0 0 - - - - - - HCNN + O2 [=] O + HCO + N2 - HCNN:1 O2:1 - O:1 HCO:1 N2:1 - - 1.2e+013 0 0 - - - - - - HCNN + OH [=] H + HCO + N2 - HCNN:1 OH:1 - H:1 HCO:1 N2:1 - - 1.2e+013 0 0 - - - - - - HCNN + H [=] CH2 + N2 - HCNN:1 H:1 - CH2:1 N2:1 - - 1e+014 0 0 - - - - - - HNCO + O [=] NH + CO2 - HNCO:1 O:1 - NH:1 CO2:1 - - 9.8e+007 1.41 8500 - - - - - - HNCO + O [=] HNO + CO - HNCO:1 O:1 - HNO:1 CO:1 - - 1.5e+008 1.57 44000 - - - - - - HNCO + O [=] NCO + OH - HNCO:1 O:1 - NCO:1 OH:1 - - 2.2e+006 2.11 11400 - - - - - - HNCO + H [=] NH2 + CO - HNCO:1 H:1 - NH2:1 CO:1 - - 2.25e+007 1.7 3800 - - - - - - HNCO + H [=] H2 + NCO - HNCO:1 H:1 - H2:1 NCO:1 - - 105000 2.5 13300 - - - - - - HNCO + OH [=] NCO + H2O - HNCO:1 OH:1 - NCO:1 H2O:1 - - 3.3e+007 1.5 3600 - - - - - - HNCO + OH [=] NH2 + CO2 - HNCO:1 OH:1 - NH2:1 CO2:1 - - 3.3e+006 1.5 3600 - - - - - - HNCO + M [=] NH + CO + M - HNCO:1 - NH:1 CO:1 - - 1.18e+016 0 84720 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - HCNO + H [=] H + HNCO - HCNO:1 H:1 - H:1 HNCO:1 - - 2.1e+015 -0.69 2850 - - - - - - HCNO + H [=] OH + HCN - HCNO:1 H:1 - OH:1 HCN:1 - - 2.7e+011 0.18 2120 - - - - - - HCNO + H [=] NH2 + CO - HCNO:1 H:1 - NH2:1 CO:1 - - 1.7e+014 -0.75 2890 - - - - - - HOCN + H [=] H + HNCO - HOCN:1 H:1 - H:1 HNCO:1 - - 2e+007 2 2000 - - - - - - HCCO + NO [=] HCNO + CO - HCCO:1 NO:1 - HCNO:1 CO:1 - - 9e+012 0 0 - - - - - - CH3 + N [=] H2CN + H - CH3:1 N:1 - H2CN:1 H:1 - - 6.1e+014 -0.31 290 - - - - - - CH3 + N [=] HCN + H2 - CH3:1 N:1 - HCN:1 H2:1 - - 3.7e+012 0.15 -90 - - - - - - NH3 + H [=] NH2 + H2 - NH3:1 H:1 - NH2:1 H2:1 - - 540000 2.4 9915 - - - - - - NH3 + OH [=] NH2 + H2O - NH3:1 OH:1 - NH2:1 H2O:1 - - 5e+007 1.6 955 - - - - - - NH3 + O [=] NH2 + OH - NH3:1 O:1 - NH2:1 OH:1 - - 9.4e+006 1.94 6460 - - - - - - NH + CO2 [=] HNO + CO - NH:1 CO2:1 - HNO:1 CO:1 - - 1e+013 0 14350 - - - - - - CN + NO2 [=] NCO + NO - CN:1 NO2:1 - NCO:1 NO:1 - - 6.16e+015 -0.752 345 - - - - - - NCO + NO2 [=] N2O + CO2 - NCO:1 NO2:1 - N2O:1 CO2:1 - - 3.25e+012 0 -705 - - - - - - N + CO2 [=] NO + CO - N:1 CO2:1 - NO:1 CO:1 - - 3e+012 0 11300 - - - - - - O + CH3 =] H + H2 + CO - O:1 CH3:1 - H:1 H2:1 CO:1 - - 3.37e+013 0 0 - - - - - - O + C2H4 [=] H + CH2CHO - O:1 C2H4:1 - H:1 CH2CHO:1 - - 6.7e+006 1.83 220 - - - - - - O + C2H5 [=] H + CH3CHO - O:1 C2H5:1 - H:1 CH3CHO:1 - - 1.096e+014 0 0 - - - - - - OH + HO2 [=] O2 + H2O - OH:1 HO2:1 - O2:1 H2O:1 - - 5e+015 0 17330 - - idtag_rxn_87 - - - - - OH + CH3 =] H2 + CH2O - OH:1 CH3:1 - H2:1 CH2O:1 - - 8e+009 0.5 -1755 - - - - - - CH + H2 (+ M) [=] CH3 (+ M) - CH:1 H2:1 - CH3:1 - - 1.97e+012 0.43 -370 - 4.82e+025 -2.8 590 - 0.578 122 2535 9365 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - CH2 + O2 =] 2 H + CO2 - CH2:1 O2:1 - H:2 CO2:1 - - 5.8e+012 0 1500 - - - - - - CH2 + O2 [=] O + CH2O - CH2:1 O2:1 - O:1 CH2O:1 - - 2.4e+012 0 1500 - - - - - - CH2 + CH2 =] 2 H + C2H2 - CH2:1 CH2:1 - H:2 C2H2:1 - - 2e+014 0 10989 - - - - - - CH2(S) + H2O =] H2 + CH2O - CH2(S):1 H2O:1 - H2:1 CH2O:1 - - 6.82e+010 0.25 -935 - - - - - - C2H3 + O2 [=] O + CH2CHO - C2H3:1 O2:1 - O:1 CH2CHO:1 - - 3.03e+011 0.29 11 - - - - - - C2H3 + O2 [=] HO2 + C2H2 - C2H3:1 O2:1 - HO2:1 C2H2:1 - - 1.337e+006 1.61 -384 - - - - - - O + CH3CHO [=] OH + CH2CHO - O:1 CH3CHO:1 - OH:1 CH2CHO:1 - - 5.84e+012 0 1808 - - - - - - O + CH3CHO =] OH + CH3 + CO - O:1 CH3CHO:1 - OH:1 CH3:1 CO:1 - - 5.84e+012 0 1808 - - - - - - O2 + CH3CHO =] HO2 + CH3 + CO - O2:1 CH3CHO:1 - HO2:1 CH3:1 CO:1 - - 3.01e+013 0 39150 - - - - - - H + CH3CHO [=] CH2CHO + H2 - H:1 CH3CHO:1 - CH2CHO:1 H2:1 - - 2.05e+009 1.16 2405 - - - - - - H + CH3CHO =] CH3 + H2 + CO - H:1 CH3CHO:1 - CH3:1 H2:1 CO:1 - - 2.05e+009 1.16 2405 - - - - - - OH + CH3CHO =] CH3 + H2O + CO - OH:1 CH3CHO:1 - CH3:1 H2O:1 CO:1 - - 2.343e+010 0.73 -1113 - - - - - - HO2 + CH3CHO =] CH3 + H2O2 + CO - HO2:1 CH3CHO:1 - CH3:1 H2O2:1 CO:1 - - 3.01e+012 0 11923 - - - - - - CH3 + CH3CHO =] CH3 + CH4 + CO - CH3:1 CH3CHO:1 - CH3:1 CH4:1 CO:1 - - 2.72e+006 1.77 5920 - - - - - - H + CH2CO (+ M) [=] CH2CHO (+ M) - H:1 CH2CO:1 - CH2CHO:1 - - 4.865e+011 0.422 -1755 - 1.012e+042 -7.63 3854 - 0.465 201 1773 5333 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - O + CH2CHO =] H + CH2 + CO2 - O:1 CH2CHO:1 - H:1 CH2:1 CO2:1 - - 1.5e+014 0 0 - - - - - - O2 + CH2CHO =] OH + CO + CH2O - O2:1 CH2CHO:1 - OH:1 CO:1 CH2O:1 - - 1.81e+010 0 0 - - - - - - O2 + CH2CHO =] OH + 2 HCO - O2:1 CH2CHO:1 - OH:1 HCO:2 - - 2.35e+010 0 0 - - - - - - H + CH2CHO [=] CH3 + HCO - H:1 CH2CHO:1 - CH3:1 HCO:1 - - 2.2e+013 0 0 - - - - - - H + CH2CHO [=] CH2CO + H2 - H:1 CH2CHO:1 - CH2CO:1 H2:1 - - 1.1e+013 0 0 - - - - - - OH + CH2CHO [=] H2O + CH2CO - OH:1 CH2CHO:1 - H2O:1 CH2CO:1 - - 1.2e+013 0 0 - - - - - - OH + CH2CHO [=] HCO + CH2OH - OH:1 CH2CHO:1 - HCO:1 CH2OH:1 - - 3.01e+013 0 0 - - - - - - CH3 + C2H5 (+ M) [=] C3H8 (+ M) - CH3:1 C2H5:1 - C3H8:1 - - 9.43e+012 0 0 - 2.71e+074 -16.82 13065 - 0.1527 291 2742 7748 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - O + C3H8 [=] OH + C3H7 - O:1 C3H8:1 - OH:1 C3H7:1 - - 193000 2.68 3716 - - - - - - H + C3H8 [=] C3H7 + H2 - H:1 C3H8:1 - C3H7:1 H2:1 - - 1.32e+006 2.54 6756 - - - - - - OH + C3H8 [=] C3H7 + H2O - OH:1 C3H8:1 - C3H7:1 H2O:1 - - 3.16e+007 1.8 934 - - - - - - C3H7 + H2O2 [=] HO2 + C3H8 - C3H7:1 H2O2:1 - HO2:1 C3H8:1 - - 378 2.72 1500 - - - - - - CH3 + C3H8 [=] C3H7 + CH4 - CH3:1 C3H8:1 - C3H7:1 CH4:1 - - 0.903 3.65 7154 - - - - - - CH3 + C2H4 (+ M) [=] C3H7 (+ M) - CH3:1 C2H4:1 - C3H7:1 - - 2.55e+006 1.6 5700 - 3e+063 -14.6 18170 - 0.1894 277 8748 7891 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - O + C3H7 [=] C2H5 + CH2O - O:1 C3H7:1 - C2H5:1 CH2O:1 - - 9.64e+013 0 0 - - - - - - H + C3H7 (+ M) [=] C3H8 (+ M) - H:1 C3H7:1 - C3H8:1 - - 3.613e+013 0 0 - 4.42e+061 -13.545 11357 - 0.315 369 3285 6667 - - AR:0.7 C2H6:3 CH4:2 CO:1.5 CO2:2 H2:2 H2O:6 - - - - - - - H + C3H7 [=] CH3 + C2H5 - H:1 C3H7:1 - CH3:1 C2H5:1 - - 4.06e+006 2.19 890 - - - - - - OH + C3H7 [=] C2H5 + CH2OH - OH:1 C3H7:1 - C2H5:1 CH2OH:1 - - 2.41e+013 0 0 - - - - - - HO2 + C3H7 [=] O2 + C3H8 - HO2:1 C3H7:1 - O2:1 C3H8:1 - - 2.55e+010 0.255 -943 - - - - - - HO2 + C3H7 =] OH + C2H5 + CH2O - HO2:1 C3H7:1 - OH:1 C2H5:1 CH2O:1 - - 2.41e+013 0 0 - - - - - - CH3 + C3H7 [=] 2 C2H5 - CH3:1 C3H7:1 - C2H5:2 - - 1.927e+013 -0.32 0 - - - - \ No newline at end of file + diff --git a/data/inputs/h2o2.xml b/data/inputs/h2o2.xml index 8e9b84a97..4dc46044d 100644 --- a/data/inputs/h2o2.xml +++ b/data/inputs/h2o2.xml @@ -19,7 +19,6 @@ - @@ -29,14 +28,17 @@ TPIS78 H:2 + 0.000000000E+00 - - + + 2.344331120E+00, 7.980520750E-03, -1.947815100E-05, 2.015720940E-08, -7.376117610E-12, -9.179351730E+02, 6.830102380E-01 - + + + 3.337279200E+00, -4.940247310E-05, 4.994567780E-07, -1.795663940E-10, 2.002553760E-14, -9.501589220E+02, -3.205023310E+00 @@ -45,10 +47,11 @@ linear - 3.800000000E+01 - 2.920000000E+00 - 7.900000000E-01 - 2.800000000E+02 + 3.800000000E+01 + 2.920000000E+00 + 0.000000000E+00 + 7.900000000E-01 + 2.800000000E+02 @@ -56,14 +59,17 @@ L 7/88 H:1 + 0.000000000E+00 - - + + 2.500000000E+00, 7.053328190E-13, -1.995919640E-15, 2.300816320E-18, -9.277323320E-22, 2.547365990E+04, -4.466828530E-01 - + + + 2.500000010E+00, -2.308429730E-11, 1.615619480E-14, -4.735152350E-18, 4.981973570E-22, 2.547365990E+04, -4.466829140E-01 @@ -72,8 +78,11 @@ atom - 1.450000000E+02 - 2.050000000E+00 + 1.450000000E+02 + 2.050000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 @@ -81,14 +90,17 @@ L 1/90 O:1 + 0.000000000E+00 - - + + 3.168267100E+00, -3.279318840E-03, 6.643063960E-06, -6.128066240E-09, 2.112659710E-12, 2.912225920E+04, 2.051933460E+00 - + + + 2.569420780E+00, -8.597411370E-05, 4.194845890E-08, -1.001777990E-11, 1.228336910E-15, 2.921757910E+04, 4.784338640E+00 @@ -97,8 +109,11 @@ atom - 8.000000000E+01 - 2.750000000E+00 + 8.000000000E+01 + 2.750000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 @@ -106,14 +121,17 @@ TPIS89 O:2 + 0.000000000E+00 - - + + 3.782456360E+00, -2.996734160E-03, 9.847302010E-06, -9.681295090E-09, 3.243728370E-12, -1.063943560E+03, 3.657675730E+00 - + + + 3.282537840E+00, 1.483087540E-03, -7.579666690E-07, 2.094705550E-10, -2.167177940E-14, -1.088457720E+03, 5.453231290E+00 @@ -122,10 +140,11 @@ linear - 1.074000000E+02 - 3.458000000E+00 - 1.600000000E+00 - 3.800000000E+00 + 1.074000000E+02 + 3.458000000E+00 + 0.000000000E+00 + 1.600000000E+00 + 3.800000000E+00 @@ -133,14 +152,17 @@ RUS 78 O:1 H:1 + 0.000000000E+00 - - + + 3.992015430E+00, -2.401317520E-03, 4.617938410E-06, -3.881133330E-09, 1.364114700E-12, 3.615080560E+03, -1.039254580E-01 - + + + 3.092887670E+00, 5.484297160E-04, 1.265052280E-07, -8.794615560E-11, 1.174123760E-14, 3.858657000E+03, 4.476696100E+00 @@ -149,8 +171,11 @@ linear - 8.000000000E+01 - 2.750000000E+00 + 8.000000000E+01 + 2.750000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 @@ -158,14 +183,17 @@ L 8/89 H:2 O:1 + 0.000000000E+00 - - + + 4.198640560E+00, -2.036434100E-03, 6.520402110E-06, -5.487970620E-09, 1.771978170E-12, -3.029372670E+04, -8.490322080E-01 - + + + 3.033992490E+00, 2.176918040E-03, -1.640725180E-07, -9.704198700E-11, 1.682009920E-14, -3.000429710E+04, 4.966770100E+00 @@ -174,10 +202,11 @@ nonlinear - 5.724000000E+02 - 2.605000000E+00 - 1.844000000E+00 - 4.000000000E+00 + 5.724000000E+02 + 2.605000000E+00 + 1.844000000E+00 + 0.000000000E+00 + 4.000000000E+00 @@ -185,14 +214,17 @@ L 5/89 H:1 O:2 + 0.000000000E+00 - - + + 4.301798010E+00, -4.749120510E-03, 2.115828910E-05, -2.427638940E-08, 9.292251240E-12, 2.948080400E+02, 3.716662450E+00 - + + + 4.017210900E+00, 2.239820130E-03, -6.336581500E-07, 1.142463700E-10, -1.079085350E-14, 1.118567130E+02, 3.785102150E+00 @@ -201,9 +233,11 @@ nonlinear - 1.074000000E+02 - 3.458000000E+00 - 1.000000000E+00 + 1.074000000E+02 + 3.458000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 1.000000000E+00 @@ -211,14 +245,17 @@ L 7/88 H:2 O:2 + 0.000000000E+00 - - + + 4.276112690E+00, -5.428224170E-04, 1.673357010E-05, -2.157708130E-08, 8.624543630E-12, -1.770258210E+04, 3.435050740E+00 - + + + 4.165002850E+00, 4.908316940E-03, -1.901392250E-06, 3.711859860E-10, -2.879083050E-14, -1.786178770E+04, 2.916156620E+00 @@ -227,9 +264,11 @@ nonlinear - 1.074000000E+02 - 3.458000000E+00 - 3.800000000E+00 + 1.074000000E+02 + 3.458000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 3.800000000E+00 @@ -237,14 +276,17 @@ 120186 Ar:1 + 0.000000000E+00 - - + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, 4.366000000E+00 - + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, 4.366000000E+00 @@ -253,8 +295,11 @@ atom - 1.365000000E+02 - 3.330000000E+00 + 1.365000000E+02 + 3.330000000E+00 + 0.000000000E+00 + 0.000000000E+00 + 0.000000000E+00 @@ -267,8 +312,12 @@ 2 O + M [=] O2 + M O:2 O2:1 - - 1.2e+17 -1 0 + + + 1.200000000E+17 + -1.000000000E+00 + 0.000000000E+00 + AR:0.83 H2:2.4 H2O:15.4 @@ -280,8 +329,12 @@ O + H + M [=] OH + M O:1 H:1 OH:1 - - 5e+17 -1 0 + + + 5.000000000E+17 + -1.000000000E+00 + 0.000000000E+00 + AR:0.7 H2:2 H2O:6 @@ -293,8 +346,12 @@ O + H2 [=] H + OH O:1 H2:1 H:1 OH:1 - - 38700 2.7 6260 + + + 3.870000000E+04 + 2.700000000E+00 + 6.260000000E+03 + @@ -303,8 +360,12 @@ O + HO2 [=] OH + O2 O:1 HO2:1 OH:1 O2:1 - - 2e+13 0 0 + + + 2.000000000E+13 + 0.000000000E+00 + 0.000000000E+00 + @@ -313,8 +374,12 @@ O + H2O2 [=] OH + HO2 O:1 H2O2:1 OH:1 HO2:1 - - 9.63e+06 2 4000 + + + 9.630000000E+06 + 2.000000000E+00 + 4.000000000E+03 + @@ -323,8 +388,12 @@ H + 2 O2 [=] HO2 + O2 H:1 O2:2 HO2:1 O2:1 - - 2.08e+19 -1.24 0 + + + 2.080000000E+19 + -1.240000000E+00 + 0.000000000E+00 + @@ -333,8 +402,12 @@ H + O2 + H2O [=] HO2 + H2O H:1 O2:1 H2O:1 HO2:1 H2O:1 - - 1.126e+19 -0.76 0 + + + 1.126000000E+19 + -7.600000000E-01 + 0.000000000E+00 + @@ -343,8 +416,12 @@ H + O2 + AR [=] HO2 + AR H:1 O2:1 AR:1 HO2:1 AR:1 - - 7e+17 -0.8 0 + + + 7.000000000E+17 + -8.000000000E-01 + 0.000000000E+00 + @@ -353,8 +430,12 @@ H + O2 [=] O + OH H:1 O2:1 O:1 OH:1 - - 2.65e+16 -0.6707 17041 + + + 2.650000000E+16 + -6.707000000E-01 + 1.704100000E+04 + @@ -363,8 +444,12 @@ 2 H + M [=] H2 + M H:2 H2:1 - - 1e+18 -1 0 + + + 1.000000000E+18 + -1.000000000E+00 + 0.000000000E+00 + AR:0.63 H2:0 H2O:0 @@ -376,8 +461,12 @@ 2 H + H2 [=] 2 H2 H:2 H2:1 H2:2 - - 9e+16 -0.6 0 + + + 9.000000000E+16 + -6.000000000E-01 + 0.000000000E+00 + @@ -386,8 +475,12 @@ 2 H + H2O [=] H2 + H2O H:2 H2O:1 H2:1 H2O:1 - - 6e+19 -1.25 0 + + + 6.000000000E+19 + -1.250000000E+00 + 0.000000000E+00 + @@ -396,8 +489,12 @@ H + OH + M [=] H2O + M H:1 OH:1 H2O:1 - - 2.2e+22 -2 0 + + + 2.200000000E+22 + -2.000000000E+00 + 0.000000000E+00 + AR:0.38 H2:0.73 H2O:3.65 @@ -409,8 +506,12 @@ H + HO2 [=] O + H2O H:1 HO2:1 O:1 H2O:1 - - 3.97e+12 0 671 + + + 3.970000000E+12 + 0.000000000E+00 + 6.710000000E+02 + @@ -419,8 +520,12 @@ H + HO2 [=] O2 + H2 H:1 HO2:1 O2:1 H2:1 - - 4.48e+13 0 1068 + + + 4.480000000E+13 + 0.000000000E+00 + 1.068000000E+03 + @@ -429,8 +534,12 @@ H + HO2 [=] 2 OH H:1 HO2:1 OH:2 - - 8.4e+13 0 635 + + + 8.400000000E+13 + 0.000000000E+00 + 6.350000000E+02 + @@ -439,8 +548,12 @@ H + H2O2 [=] HO2 + H2 H:1 H2O2:1 HO2:1 H2:1 - - 1.21e+07 2 5200 + + + 1.210000000E+07 + 2.000000000E+00 + 5.200000000E+03 + @@ -449,8 +562,12 @@ H + H2O2 [=] OH + H2O H:1 H2O2:1 OH:1 H2O:1 - - 1e+13 0 3600 + + + 1.000000000E+13 + 0.000000000E+00 + 3.600000000E+03 + @@ -459,8 +576,12 @@ OH + H2 [=] H + H2O OH:1 H2:1 H:1 H2O:1 - - 2.16e+08 1.51 3430 + + + 2.160000000E+08 + 1.510000000E+00 + 3.430000000E+03 + @@ -469,9 +590,17 @@ 2 OH (+ M) [=] H2O2 (+ M) OH:2 H2O2:1 - - 7.4e+13 -0.37 0 - 2.3e+18 -0.9 -1700 + + + 7.400000000E+13 + -3.700000000E-01 + 0.000000000E+00 + + + 2.300000000E+18 + -9.000000000E-01 + -1.700000000E+03 + 0.7346 94 1756 5182 AR:0.7 H2:2 H2O:6 @@ -484,8 +613,12 @@ 2 OH [=] O + H2O OH:2 O:1 H2O:1 - - 35700 2.4 -2110 + + + 3.570000000E+04 + 2.400000000E+00 + -2.110000000E+03 + @@ -494,8 +627,12 @@ OH + HO2 [=] O2 + H2O OH:1 HO2:1 O2:1 H2O:1 - - 1.45e+13 0 -500 + + + 1.450000000E+13 + 0.000000000E+00 + -5.000000000E+02 + idtag_rxn_27 @@ -505,8 +642,12 @@ OH + H2O2 [=] HO2 + H2O OH:1 H2O2:1 HO2:1 H2O:1 - - 2e+12 0 427 + + + 2.000000000E+12 + 0.000000000E+00 + 4.270000000E+02 + idtag_rxn_24 @@ -516,8 +657,12 @@ OH + H2O2 [=] HO2 + H2O OH:1 H2O2:1 HO2:1 H2O:1 - - 1.7e+18 0 29410 + + + 1.700000000E+18 + 0.000000000E+00 + 2.941000000E+04 + idtag_rxn_23 @@ -527,8 +672,12 @@ 2 HO2 [=] O2 + H2O2 HO2:2 O2:1 H2O2:1 - - 1.3e+11 0 -1630 + + + 1.300000000E+11 + 0.000000000E+00 + -1.630000000E+03 + idtag_rxn_26 @@ -538,8 +687,12 @@ 2 HO2 [=] O2 + H2O2 HO2:2 O2:1 H2O2:1 - - 4.2e+14 0 12000 + + + 4.200000000E+14 + 0.000000000E+00 + 1.200000000E+04 + idtag_rxn_25 @@ -549,8 +702,12 @@ OH + HO2 [=] O2 + H2O OH:1 HO2:1 O2:1 H2O:1 - - 5e+15 0 17330 + + + 5.000000000E+15 + 0.000000000E+00 + 1.733000000E+04 + idtag_rxn_22 diff --git a/data/inputs/mkxml b/data/inputs/mkxml index 554876439..d1e798139 100755 --- a/data/inputs/mkxml +++ b/data/inputs/mkxml @@ -1,7 +1,8 @@ #!/usr/bin/env bash -../../bin/ck2ctml -i gri30.inp -id gri30 -o gri30.xml -tr ../transport/gri30_tran.dat -../../bin/ck2ctml -i air.inp -o air.xml -t gri30.inp -id air -tr ../transport/gri30_tran.dat -../../bin/ck2ctml -i h2o2.inp -o h2o2.xml -id ohmech -tr ../transport/gri30_tran.dat -../../bin/ck2ctml -i silane.inp -o silane.xml -id silane -../../bin/ck2ctml -i argon.inp -o argon.xml -id argon -t gri30.inp -tr ../transport/gri30_tran.dat +../../bin/ck2ctml -i gri30.inp -id gri30 -o gri30_data.xml -tr ../transport/gri30_tran.dat > gri30.in +../../bin/ck2ctml -i air.inp -o air.xml -t gri30.inp -id air -tr ../transport/gri30_tran.dat > air.in +../../bin/ck2ctml -i h2o2.inp -o h2o2.xml -id ohmech -tr ../transport/gri30_tran.dat > h2o2.in +../../bin/ck2ctml -i silane.inp -o silane.xml -id silane > silane.in +../../bin/ck2ctml -i argon.inp -o argon.xml -id argon -t gri30.inp -tr ../transport/gri30_tran.dat > argon.in + diff --git a/data/inputs/silane.xml b/data/inputs/silane.xml index a64f8192a..863f921fb 100644 --- a/data/inputs/silane.xml +++ b/data/inputs/silane.xml @@ -27,14 +27,17 @@ TPIS78 H:2 + 0.000000000E+00 - - + + 2.344331120E+00, 7.980520750E-03, -1.947815100E-05, 2.015720940E-08, -7.376117610E-12, -9.179351730E+02, 6.830102380E-01 - + + + 3.337279200E+00, -4.940247310E-05, 4.994567780E-07, -1.795663940E-10, 2.002553760E-14, -9.501589220E+02, -3.205023310E+00 @@ -47,14 +50,17 @@ L 7/88 H:1 + 0.000000000E+00 - - + + 2.500000000E+00, 7.053328190E-13, -1.995919640E-15, 2.300816320E-18, -9.277323320E-22, 2.547365990E+04, -4.466828530E-01 - + + + 2.500000010E+00, -2.308429730E-11, 1.615619480E-14, -4.735152350E-18, 4.981973570E-22, 2.547365990E+04, -4.466829140E-01 @@ -67,14 +73,17 @@ 120186 He:1 + 0.000000000E+00 - - + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, 9.153488000E-01 - + + + 2.500000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, 0.000000000E+00, -7.453750000E+02, 9.153489000E-01 @@ -87,14 +96,17 @@ 90784 Si:1 H:4 + 0.000000000E+00 - - + + 1.451640400E+00, 1.398736300E-02, -4.234563900E-06, -2.360614200E-09, 1.371208900E-12, 3.113410500E+03, 1.232185500E+01 - + + + 7.935938000E-01, 1.767189900E-02, -1.139800900E-05, 3.599260400E-09, -4.524157100E-13, 3.198212700E+03, 1.524225700E+01 @@ -107,14 +119,17 @@ J 3/67 Si:1 + 0.000000000E+00 - - + + 3.179353700E+00, -2.764699200E-03, 4.478403800E-06, -3.283317700E-09, 9.121363100E-13, 5.333903200E+04, 2.727320400E+00 - + + + 2.650601400E+00, -3.576385200E-04, 2.959229300E-07, -7.280482900E-11, 5.796332900E-15, 5.343705400E+04, 5.220405700E+00 @@ -127,14 +142,17 @@ 121986 Si:1 H:1 + 0.000000000E+00 - - + + 3.836010000E+00, -2.702657000E-03, 6.849070000E-06, -5.424184000E-09, 1.472131000E-12, 4.507593000E+04, 9.350778000E-01 - + + + 3.110430000E+00, 1.094946000E-03, 2.898629000E-08, -2.745104000E-10, 7.051799000E-14, 4.516898000E+04, 4.193487000E+00 @@ -147,14 +165,17 @@ 42489 Si:1 H:2 + 0.000000000E+00 - - + + 3.475092000E+00, 2.139338000E-03, 7.672306000E-07, 5.217668000E-10, -9.898824000E-13, 3.147397000E+04, 4.436585000E+00 - + + + 4.142390000E+00, 2.150191000E-03, -2.190730000E-07, -2.073725000E-10, 4.741018000E-14, 3.110484000E+04, 2.930745000E-01 @@ -167,14 +188,17 @@ 42489 Si:1 H:3 + 0.000000000E+00 - - + + 2.946733000E+00, 6.466764000E-03, 5.991653000E-07, -2.218413000E-09, 3.052670000E-13, 2.270173000E+04, 7.347948000E+00 - + + + 5.015906000E+00, 3.732750000E-03, -3.609053000E-07, -3.729193000E-10, 8.468490000E-14, 2.190233000E+04, -4.291368000E+00 @@ -187,14 +211,17 @@ 111191 H:4 Si:2 + 0.000000000E+00 - - + + 3.698707000E+00, 1.870180000E-02, -1.430704000E-05, 6.005836000E-09, -1.116293000E-12, 3.590825000E+04, 8.825191000E+00 - + + + 1.127202000E+01, 2.538145000E-03, -2.998472000E-07, -9.465367000E-11, 1.855053000E-14, 3.297169000E+04, -3.264598000E+01 @@ -207,14 +234,17 @@ 90784 Si:2 H:6 + 0.000000000E+00 - - + + 6.734798300E-01, 4.093153100E-02, -4.484125500E-05, 2.995223200E-08, -8.901085400E-12, 7.932787500E+03, 1.862740300E+01 - + + + 3.407493600E+00, 2.720647900E-02, -1.771320400E-05, 5.639117700E-09, -7.137868200E-13, 7.532184200E+03, 6.132175400E+00 @@ -227,14 +257,17 @@ 42489 Si:2 H:4 + 0.000000000E+00 - - + + 5.133186000E+00, 1.252855000E-02, -4.620421000E-07, -6.606075000E-09, 2.864345000E-12, 2.956915000E+04, 7.605133000E-01 - + + + 8.986817000E+00, 5.405047000E-03, -5.214022000E-07, -5.313742000E-10, 1.188727000E-13, 2.832748000E+04, -2.004478000E+01 @@ -247,14 +280,17 @@ 90784 Si:3 H:8 + 0.000000000E+00 - - + + 7.719684600E-01, 6.344274000E-02, -7.672610900E-05, 5.454371500E-08, -1.661172900E-11, 1.207126300E+04, 2.153250700E+01 - + + + 6.093334100E+00, 3.658011200E-02, -2.389236100E-05, 7.627193200E-09, -9.676938400E-13, 1.129720500E+04, -2.747565400E+00 @@ -267,14 +303,17 @@ 90784 Si:2 + 0.000000000E+00 - - + + 2.967197600E+00, 6.311955800E-03, -1.097079000E-05, 8.927868000E-09, -2.787368900E-12, 6.987073800E+04, 9.278950300E+00 - + + + 4.144677900E+00, 6.523467700E-04, -5.010852000E-07, 1.806284300E-10, -2.516111100E-14, 6.969470700E+04, 3.862736600E+00 @@ -287,14 +326,17 @@ J 3/67 Si:3 + 0.000000000E+00 - - + + 4.597912900E+00, 1.071527400E-02, -1.610042200E-05, 1.096920700E-08, -2.783287500E-12, 7.476632400E+04, 3.442167100E+00 - + + + 7.421336000E+00, -1.170994800E-04, 8.982077500E-08, 7.193596400E-12, -2.567083700E-15, 7.414669900E+04, -1.036527400E+01 @@ -312,8 +354,12 @@ SIH4 + H [=] SIH3 + H2 SIH4:1 H:1 SIH3:1 H2:1 - - 7.8e+14 0 2260 + + + 7.800000000E+14 + 0.000000000E+00 + 2.260000000E+03 + @@ -322,8 +368,12 @@ SIH4 + M [=] SIH3 + H + M SIH4:1 SIH3:1 H:1 - - 3.91e+15 0 89356 + + + 3.910000000E+15 + 0.000000000E+00 + 8.935600000E+04 + @@ -332,8 +382,12 @@ SIH3 + H [=] SIH2 + H2 SIH3:1 H:1 SIH2:1 H2:1 - - 7.8e+14 0 2260 + + + 7.800000000E+14 + 0.000000000E+00 + 2.260000000E+03 + @@ -342,8 +396,12 @@ SI + SI + M [=] SI2 + M SI:1 SI:1 SI2:1 - - 2.47e+16 0 1178 + + + 2.470000000E+16 + 0.000000000E+00 + 1.178000000E+03 + @@ -352,8 +410,12 @@ SIH4 + SIH2 [=] H3SISIH + H2 SIH4:1 SIH2:1 H3SISIH:1 H2:1 - - 1.3e+13 0 0 + + + 1.300000000E+13 + 0.000000000E+00 + 0.000000000E+00 + @@ -362,8 +424,12 @@ SIH + H2 [=] SIH2 + H SIH:1 H2:1 SIH2:1 H:1 - - 4.8e+14 0 23.64 + + + 4.800000000E+14 + 0.000000000E+00 + 2.364000000E+01 + @@ -372,8 +438,12 @@ SIH + SIH4 [=] H3SISIH + H SIH:1 SIH4:1 H3SISIH:1 H:1 - - 1.6e+14 0 0 + + + 1.600000000E+14 + 0.000000000E+00 + 0.000000000E+00 + @@ -382,8 +452,12 @@ SI + H2 [=] SIH + H SI:1 H2:1 SIH:1 H:1 - - 1.5e+15 0 31.8 + + + 1.500000000E+15 + 0.000000000E+00 + 3.180000000E+01 + @@ -392,9 +466,17 @@ SIH4 (+ M) [=] SIH2 + H2 (+ M) SIH4:1 SIH2:1 H2:1 - - 3.119e+09 1.669 54710 - 5.214e+29 -3.545 57550 + + + 3.119000000E+09 + 1.669000000E+00 + 5.471000000E+04 + + + 5.214000000E+29 + -3.545000000E+00 + 5.755000000E+04 + -0.4984 888.3 209.4 2760 SI2H6:4 SIH4:4 @@ -407,9 +489,17 @@ H3SISIH (+ M) [=] H2SISIH2 (+ M) H3SISIH:1 H2SISIH2:1 - - 2.54e+13 -0.2239 5381 - 1.099e+33 -5.765 9152 + + + 2.540000000E+13 + -2.239000000E-01 + 5.381000000E+03 + + + 1.099000000E+33 + -5.765000000E+00 + 9.152000000E+03 + -0.4202 214.5 103 136.3 SI2H6:4 SIH4:4 @@ -422,9 +512,17 @@ SI3H8 (+ M) [=] SIH4 + H3SISIH (+ M) SI3H8:1 SIH4:1 H3SISIH:1 - - 3.73e+12 0.992 50850 - 4.36e+76 -17.26 59303 + + + 3.730000000E+12 + 9.920000000E-01 + 5.085000000E+04 + + + 4.360000000E+76 + -1.726000000E+01 + 5.930300000E+04 + 0.4157 365.3 3102 9.724 SI2H6:4 SIH4:4 @@ -437,9 +535,17 @@ SI3H8 (+ M) [=] SIH2 + SI2H6 (+ M) SI3H8:1 SIH2:1 SI2H6:1 - - 6.97e+12 0.9691 52677 - 1.73e+69 -15.07 60491 + + + 6.970000000E+12 + 9.691000000E-01 + 5.267700000E+04 + + + 1.730000000E+69 + -1.507000000E+01 + 6.049100000E+04 + -3.47e-05 442 2412 128.3 SI2H6:4 SIH4:4 @@ -452,9 +558,17 @@ SI2H6 (+ M) [=] H2 + H3SISIH (+ M) SI2H6:1 H2:1 H3SISIH:1 - - 9.086e+09 1.834 54197 - 1.945e+44 -7.772 59023 + + + 9.086000000E+09 + 1.834000000E+00 + 5.419700000E+04 + + + 1.945000000E+44 + -7.772000000E+00 + 5.902300000E+04 + -0.1224 793.3 2400 11.39 SI2H6:4 SIH4:4 @@ -467,9 +581,17 @@ SI2H6 (+ M) [=] SIH4 + SIH2 (+ M) SI2H6:1 SIH4:1 SIH2:1 - - 1.81e+10 1.747 50203 - 5.09e+53 -10.37 56034 + + + 1.810000000E+10 + 1.747000000E+00 + 5.020300000E+04 + + + 5.090000000E+53 + -1.037000000E+01 + 5.603400000E+04 + 4.375e-05 438.5 2726 438.2 SI2H6:4 SIH4:4 diff --git a/tools/src/ck2ctml.cpp b/tools/src/ck2ctml.cpp index 1f4a059d8..099655194 100755 --- a/tools/src/ck2ctml.cpp +++ b/tools/src/ck2ctml.cpp @@ -14,6 +14,7 @@ using namespace std; #include "converters/ck2ctml.h" +#include "converters/ck2ct.h" using namespace ctml; @@ -68,8 +69,14 @@ int main(int argc, char** argv) { ++i; } +#define MAKE_CT_INPUT +#ifdef MAKE_CT_INPUT + int ierr = pip::convert_ck(infile.c_str(), dbfile.c_str(), trfile.c_str(), + idtag.c_str()); +#else int ierr = convert_ck(infile.c_str(), dbfile.c_str(), trfile.c_str(), outfile.c_str(), idtag.c_str()); +#endif if (ierr < 0) { showErrors(cerr); } diff --git a/tools/testtools/csvdiff.cpp b/tools/testtools/csvdiff.cpp index 45cfdfe90..116adf905 100644 --- a/tools/testtools/csvdiff.cpp +++ b/tools/testtools/csvdiff.cpp @@ -38,9 +38,9 @@ #include #include -#ifndef CYGWIN -#include -#endif +//#ifndef CYGWIN +//#include +//#endif #include "mdp_allo.h" #include "tok_input_util.h"