From 4b708d83507da5beb628faec969eac5c89c06fef Mon Sep 17 00:00:00 2001 From: Nick-lab Date: Wed, 17 Jun 2015 17:12:30 -0400 Subject: [PATCH] fixes issue #275 --- interfaces/cython/cantera/_cantera.pxd | 1 + interfaces/cython/cantera/speciesthermo.pyx | 10 +++++++ interfaces/cython/cantera/test/test_thermo.py | 30 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/interfaces/cython/cantera/_cantera.pxd b/interfaces/cython/cantera/_cantera.pxd index eb5eb3fc95..a7770f7b09 100644 --- a/interfaces/cython/cantera/_cantera.pxd +++ b/interfaces/cython/cantera/_cantera.pxd @@ -75,6 +75,7 @@ cdef extern from "cantera/thermo/SpeciesThermoInterpType.h": cdef cppclass CxxSpeciesThermo "Cantera::SpeciesThermoInterpType": CxxSpeciesThermo() int reportType() + void reportParameters(size_t&, int&, double&, double&, double&, double* const) void updatePropertiesTemp(double, double*, double*, double*) except + cdef extern from "cantera/thermo/SpeciesThermoFactory.h": diff --git a/interfaces/cython/cantera/speciesthermo.pyx b/interfaces/cython/cantera/speciesthermo.pyx index 8cb02e5f77..6e42ba3e31 100644 --- a/interfaces/cython/cantera/speciesthermo.pyx +++ b/interfaces/cython/cantera/speciesthermo.pyx @@ -59,6 +59,16 @@ cdef class SpeciesThermo: self.spthermo.updatePropertiesTemp(T, &cp_r, &h_rt, &s_r) return s_r * gas_constant + def report_parameters(self): + """Returns a tuple containing the species index, parameterization type, min temperature (K), max temperature (K), reference Pressure (Pa), and list of the coefficients of this parameterization""" + cdef size_t index = 0 + cdef int type = 0 + cdef double min_t = 0, max_t = 0, ref_p = 0 + cdef np.ndarray[np.double_t, ndim=1] coeffs = np.empty((self.n_coeffs,)) + self.spthermo.reportParameters(index, type, min_t, max_t, ref_p, &coeffs[0]) + return index, type, min_t, max_t, ref_p, coeffs + + cdef class ConstantCp(SpeciesThermo): r""" diff --git a/interfaces/cython/cantera/test/test_thermo.py b/interfaces/cython/cantera/test/test_thermo.py index b75886f43c..49a7f6facc 100644 --- a/interfaces/cython/cantera/test/test_thermo.py +++ b/interfaces/cython/cantera/test/test_thermo.py @@ -887,3 +887,33 @@ def test_wrap(self): self.assertAlmostEqual(st.cp(T), self.gas.cp_mole) self.assertAlmostEqual(st.h(T), self.gas.enthalpy_mole) self.assertAlmostEqual(st.s(T), self.gas.entropy_mole) + + def test_report(self): + st = ct.NasaPoly2(300, 3500, 101325, + [1000.0, 3.03399249E+00, 2.17691804E-03, -1.64072518E-07, + -9.70419870E-11, 1.68200992E-14, -3.00042971E+04, 4.96677010E+00, + 4.19864056E+00, -2.03643410E-03, 6.52040211E-06, -5.48797062E-09, + 1.77197817E-12, -3.02937267E+04, -8.49032208E-01]) + index, parameterization, t_min, t_max, \ + p_ref, array = st.report_parameters() + self.assertEqual(index, 0) + self.assertEqual(parameterization, st.derived_type) + self.assertEqual(t_min, 300) + self.assertEqual(t_max, 3500) + self.assertEqual(p_ref, 101325) + self.assertEqual(array[0], 1000.0) + self.assertEqual(array[1], 3.03399249E+00) + self.assertEqual(array[2], 2.17691804E-03) + self.assertEqual(array[3], -1.64072518E-07) + self.assertEqual(array[4], -9.70419870E-11) + self.assertEqual(array[5], 1.68200992E-14) + self.assertEqual(array[6], -3.00042971E+04) + self.assertEqual(array[7], 4.96677010E+00) + self.assertEqual(array[8], 4.19864056E+00) + self.assertEqual(array[9], -2.03643410E-03) + self.assertEqual(array[10], 6.52040211E-06) + self.assertEqual(array[11], -5.48797062E-09) + self.assertEqual(array[12], 1.77197817E-12) + self.assertEqual(array[13], -3.02937267E+04) + self.assertEqual(array[14], -8.49032208E-01) +