From de9bb5b1c9c273ee76522357931aeaa99e95912a Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 14 Jul 2016 13:27:43 -0400 Subject: [PATCH] [ck2cti] Add support for surface coverage dependencies --- interfaces/cython/cantera/ck2cti.py | 20 ++++++++++++++++++++ interfaces/cython/cantera/ctml_writer.py | 8 +++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/interfaces/cython/cantera/ck2cti.py b/interfaces/cython/cantera/ck2cti.py index 86641991b1..650bc72bb8 100644 --- a/interfaces/cython/cantera/ck2cti.py +++ b/interfaces/cython/cantera/ck2cti.py @@ -463,6 +463,22 @@ class SurfaceArrhenius(Arrhenius): """ An Arrhenius-like reaction occurring on a surface """ + def __init__(self, *args, **kwargs): + Arrhenius.__init__(self, *args, **kwargs) + self.coverages = [] + + def rateStr(self): + s = Arrhenius.rateStr(self) + + if self.coverages: + if len(self.coverages) == 1: + covs = self.coverages[0] + else: + covs = self.coverages + s = '\n{0}Arrhenius({1},\n{2}coverage={3})'.format( + ' '*17, s[1:-1], ' '*27, list(covs)) + return s + def to_cti(self, reactantstr, arrow, productstr, indent=0): rxnstring = reactantstr + arrow + productstr @@ -1374,6 +1390,10 @@ def parseExpression(expression, dest): falloff = Sri(A=A, B=B, C=C) else: falloff = Sri(A=A, B=B, C=C, D=D, E=E) + elif 'cov' in line.lower(): + C = tokens[1].split() + arrhenius.coverages.append( + (C[0], fortFloat(C[1]), fortFloat(C[2]), fortFloat(C[3]))) elif 'cheb' in line.lower(): # Chebyshev parameters diff --git a/interfaces/cython/cantera/ctml_writer.py b/interfaces/cython/cantera/ctml_writer.py index 6e89d59449..11f3070e3f 100644 --- a/interfaces/cython/cantera/ctml_writer.py +++ b/interfaces/cython/cantera/ctml_writer.py @@ -20,6 +20,12 @@ import sys +# Python 2/3 compatibility +try: + basestring +except NameError: + basestring = str + def _printerr(*args): # All debug and error output should go to stderr print(*args, file=sys.stderr) @@ -1015,7 +1021,7 @@ def __init__(self, self._c = [A, b, E] if coverage: - if isinstance(coverage[0], str): + if isinstance(coverage[0], basestring): self._cov = [coverage] else: self._cov = coverage