From 4aa54c34190b16b74874e419f6fb2a62a70e9790 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Wed, 14 Dec 2011 02:08:49 +0000 Subject: [PATCH] Export the Transport::getMassFluxes function --- Cantera/clib/src/ct.cpp | 11 +++++++++ Cantera/clib/src/ct.h | 2 ++ Cantera/python/Cantera/Transport.py | 4 ++++ Cantera/python/src/cttransport_methods.cpp | 26 ++++++++++++++++++++++ Cantera/python/src/methods.h | 1 + 5 files changed, 44 insertions(+) diff --git a/Cantera/clib/src/ct.cpp b/Cantera/clib/src/ct.cpp index 9a5fa36d0..cbb1b52e4 100755 --- a/Cantera/clib/src/ct.cpp +++ b/Cantera/clib/src/ct.cpp @@ -1107,6 +1107,17 @@ extern "C" { catch (CanteraError) { return -1; } } + int DLL_EXPORT trans_getMassFluxes(int n, const double* state1, + const double* state2, double delta, double* fluxes) + { + try { + trans(n)->getMassFluxes(state1, state2, delta, fluxes); + return 0; + } catch (CanteraError) { + return -1; + } + } + //-------------------- Functions --------------------------- int DLL_EXPORT import_phase(int nth, int nxml, char* id) { diff --git a/Cantera/clib/src/ct.h b/Cantera/clib/src/ct.h index 8aa59bec3..bb608f809 100755 --- a/Cantera/clib/src/ct.h +++ b/Cantera/clib/src/ct.h @@ -155,6 +155,8 @@ extern "C" { EEXXTT int DLL_CPREFIX trans_setParameters(int n, int type, int k, double* d); EEXXTT int DLL_CPREFIX trans_getMolarFluxes(int n, const double* state1, const double* state2, double delta, double* fluxes); + EEXXTT int DLL_CPREFIX trans_getMassFluxes(int n, const double* state1, + const double* state2, double delta, double* fluxes); EEXXTT int DLL_CPREFIX import_phase(int nth, int nxml, char* id); EEXXTT int DLL_CPREFIX import_kinetics(int nxml, char* id, diff --git a/Cantera/python/Cantera/Transport.py b/Cantera/python/Cantera/Transport.py index 6c74f2564..c2844bee1 100755 --- a/Cantera/python/Cantera/Transport.py +++ b/Cantera/python/Cantera/Transport.py @@ -166,3 +166,7 @@ class Transport: asarray(state1), asarray(state2), delta) + def massFluxes(self, state1, state2, delta): + return _cantera.tran_getMassFluxes(self.__tr_id, self.trnsp, + asarray(state1), asarray(state2), + delta) diff --git a/Cantera/python/src/cttransport_methods.cpp b/Cantera/python/src/cttransport_methods.cpp index 8e10d9001..1eb1d17db 100644 --- a/Cantera/python/src/cttransport_methods.cpp +++ b/Cantera/python/src/cttransport_methods.cpp @@ -165,3 +165,29 @@ py_getMolarFluxes(PyObject *self, PyObject *args) { if (iok < 0) return reportError(iok); return PyArray_Return(f); } + +static PyObject* +py_getMassFluxes(PyObject *self, PyObject *args) +{ + int n, id; + PyObject *state1, *state2; + double delta; + if (!PyArg_ParseTuple(args, "iiOOd:py_getMassFluxes", &n, &id, + &state1, &state2, &delta)) + + return NULL; + PyArrayObject* state1array = (PyArrayObject*)state1; + PyArrayObject* state2array = (PyArrayObject*)state2; + double* d1 = (double*)state1array->data; + double* d2 = (double*)state2array->data; +#ifdef HAS_NUMPY + npy_intp nid = id; + PyArrayObject* f = (PyArrayObject*)PyArray_SimpleNew(1, &nid, PyArray_DOUBLE); +#else + PyArrayObject* f = (PyArrayObject*)PyArray_FromDims(1, &id, PyArray_DOUBLE); +#endif + double* fd = (double*)f->data; + int iok = trans_getMassFluxes(n, d1, d2, delta, fd); + if (iok < 0) return reportError(iok); + return PyArray_Return(f); +} diff --git a/Cantera/python/src/methods.h b/Cantera/python/src/methods.h index 002431661..d299236c8 100644 --- a/Cantera/python/src/methods.h +++ b/Cantera/python/src/methods.h @@ -84,6 +84,7 @@ static PyMethodDef ct_methods[] = { {"tran_multiDiffCoeffs", py_multiDiffCoeffs, METH_VARARGS}, {"tran_setParameters", py_setParameters, METH_VARARGS}, {"tran_getMolarFluxes", py_getMolarFluxes, METH_VARARGS}, + {"tran_getMassFluxes", py_getMassFluxes, METH_VARARGS}, {"get_Cantera_Error", ct_get_cantera_error, METH_VARARGS}, //{"ct_print", ct_print, METH_VARARGS},