From e292caa18721874c31971ac84cd9b7d61f40f46c Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 28 May 2015 12:36:45 -0400 Subject: [PATCH] [Python] Add Kinetics.reactions() method which returns all Reactions --- .../cantera/examples/kinetics/mechanism_reduction.py | 3 +-- interfaces/cython/cantera/kinetics.pyx | 6 ++++++ interfaces/cython/cantera/test/test_kinetics.py | 9 +++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/interfaces/cython/cantera/examples/kinetics/mechanism_reduction.py b/interfaces/cython/cantera/examples/kinetics/mechanism_reduction.py index cc0f5b2f5..69cf72c57 100644 --- a/interfaces/cython/cantera/examples/kinetics/mechanism_reduction.py +++ b/interfaces/cython/cantera/examples/kinetics/mechanism_reduction.py @@ -41,8 +41,7 @@ while t < 0.02: plt.plot(tt, TT, label='K=53, R=325', color='k', lw=3, zorder=100) # Get the reaction objects, and sort them so the most active reactions are first -R = [(Rmax[i],gas.reaction(i)) for i in range(gas.n_reactions)] -R.sort(key=lambda x: -x[0]) +R = sorted(zip(Rmax, gas.reactions()), key=lambda x: -x[0]) # Test reduced mechanisms with different numbers of reactions C = plt.cm.winter(np.linspace(0,1,5)) diff --git a/interfaces/cython/cantera/kinetics.pyx b/interfaces/cython/cantera/kinetics.pyx index e7956c73e..50950c054 100644 --- a/interfaces/cython/cantera/kinetics.pyx +++ b/interfaces/cython/cantera/kinetics.pyx @@ -80,6 +80,12 @@ cdef class Kinetics(_SolutionBase): """ return wrapReaction(self.kinetics.reaction(i_reaction)) + def reactions(self): + """ + Return a list of all `Reaction` objects + """ + return [self.reaction(i) for i in range(self.n_reactions)] + def modify_reaction(self, int irxn, Reaction rxn): """ Modify the `Reaction` with index ``irxn`` to have the same rate diff --git a/interfaces/cython/cantera/test/test_kinetics.py b/interfaces/cython/cantera/test/test_kinetics.py index ebaaea7b9..2ba91fc98 100644 --- a/interfaces/cython/cantera/test/test_kinetics.py +++ b/interfaces/cython/cantera/test/test_kinetics.py @@ -626,22 +626,19 @@ class TestReaction(utilities.CanteraTest): def test_listFromFile(self): R = ct.Reaction.listFromFile('h2o2.xml') eq1 = [r.equation for r in R] - eq2 = [self.gas.reaction(i).equation - for i in range(self.gas.n_reactions)] + eq2 = [r.equation for r in self.gas.reactions()] self.assertEqual(eq1, eq2) def test_listFromCti(self): R = ct.Reaction.listFromCti(open('../../build/data/h2o2.cti').read()) eq1 = [r.equation for r in R] - eq2 = [self.gas.reaction(i).equation - for i in range(self.gas.n_reactions)] + eq2 = [r.equation for r in self.gas.reactions()] self.assertEqual(eq1, eq2) def test_listFromXml(self): R = ct.Reaction.listFromCti(open('../../build/data/h2o2.xml').read()) eq1 = [r.equation for r in R] - eq2 = [self.gas.reaction(i).equation - for i in range(self.gas.n_reactions)] + eq2 = [r.equation for r in self.gas.reactions()] self.assertEqual(eq1, eq2) def test_elementary(self):