diff --git a/interfaces/python/Cantera/OneD/BurnerDiffFlame.py b/interfaces/python/Cantera/OneD/BurnerDiffFlame.py index 9107ccdec..8b160fcdc 100644 --- a/interfaces/python/Cantera/OneD/BurnerDiffFlame.py +++ b/interfaces/python/Cantera/OneD/BurnerDiffFlame.py @@ -83,6 +83,9 @@ class BurnerDiffFlame(Stack): ratio = ratio, slope = slope, curve = curve, prune = prune) + def setGridMin(self, gridmin): + Stack.setGridMin(self, self.flame, gridmin) + def setProfile(self, component, locs, vals): self._initialized = 1 Stack.setProfile(self, self.flame, component, locs, vals) diff --git a/interfaces/python/Cantera/OneD/BurnerFlame.py b/interfaces/python/Cantera/OneD/BurnerFlame.py index 43007acf4..b0971563f 100644 --- a/interfaces/python/Cantera/OneD/BurnerFlame.py +++ b/interfaces/python/Cantera/OneD/BurnerFlame.py @@ -83,6 +83,9 @@ class BurnerFlame(Stack): ratio = ratio, slope = slope, curve = curve, prune = prune) + def setGridMin(self, gridmin): + Stack.setGridMin(self, self.flame, gridmin) + def setProfile(self, component, locs, vals): self._initialized = 1 Stack.setProfile(self, self.flame, component, locs, vals) diff --git a/interfaces/python/Cantera/OneD/CounterFlame.py b/interfaces/python/Cantera/OneD/CounterFlame.py index 3c459f48b..cffec7861 100644 --- a/interfaces/python/Cantera/OneD/CounterFlame.py +++ b/interfaces/python/Cantera/OneD/CounterFlame.py @@ -162,6 +162,9 @@ class CounterFlame(Stack): ratio = ratio, slope = slope, curve = curve, prune = prune) + def setGridMin(self, gridmin): + Stack.setGridMin(self, self.flame, gridmin) + def setProfile(self, component, locs, vals): self._initialized = 1 Stack.setProfile(self, self.flame, component, locs, vals) diff --git a/interfaces/python/Cantera/OneD/FreeFlame.py b/interfaces/python/Cantera/OneD/FreeFlame.py index bc96558b0..3748658da 100644 --- a/interfaces/python/Cantera/OneD/FreeFlame.py +++ b/interfaces/python/Cantera/OneD/FreeFlame.py @@ -79,6 +79,9 @@ class FreeFlame(Stack): ratio = ratio, slope = slope, curve = curve, prune = prune) + def setGridMin(self, gridmin): + Stack.setGridMin(self, self.flame, gridmin) + def setFixedTemperature(self, temp): _cantera.sim1D_setFixedTemperature(self._hndl, temp) diff --git a/interfaces/python/Cantera/OneD/StagnationFlow.py b/interfaces/python/Cantera/OneD/StagnationFlow.py index 5e0f38624..57789b3d0 100644 --- a/interfaces/python/Cantera/OneD/StagnationFlow.py +++ b/interfaces/python/Cantera/OneD/StagnationFlow.py @@ -86,6 +86,9 @@ class StagnationFlow(Stack): ratio = ratio, slope = slope, curve = curve, prune = prune) + def setGridMin(self, gridmin): + Stack.setGridMin(self, self.flow, gridmin) + def setProfile(self, component, locs, vals): self._initialized = 1 Stack.setProfile(self, self.flow, component, locs, vals) diff --git a/interfaces/python/Cantera/OneD/onedim.py b/interfaces/python/Cantera/OneD/onedim.py index 51d03a438..ca3b2362a 100644 --- a/interfaces/python/Cantera/OneD/onedim.py +++ b/interfaces/python/Cantera/OneD/onedim.py @@ -617,6 +617,18 @@ class Stack: return _cantera.sim1D_setRefineCriteria(self._hndl, idom, ratio, slope, curve, prune) + def setGridMin(self, domain, gridmin): + """ + Set the minimum allowable grid spacing in a domain. + + :param domain: + domain object + :param gridmin: + The minimum allowable grid spacing [m] for this domain + """ + idom = domain.index() + return _cantera.sim1D_setGridMin(self._hndl, idom, gridmin) + def save(self, file = 'soln.xml', id = 'solution', desc = 'none'): """Save the solution in XML format. diff --git a/src/clib/ctonedim.cpp b/src/clib/ctonedim.cpp index 4487b44d6..cd383c665 100644 --- a/src/clib/ctonedim.cpp +++ b/src/clib/ctonedim.cpp @@ -609,6 +609,16 @@ extern "C" { } } + int sim1D_setGridMin(int i, int dom, double gridmin) + { + try { + SimCabinet::item(i).setGridMin(dom, gridmin); + return 0; + } catch (...) { + return handleAllExceptions(-1, ERR); + } + } + int sim1D_save(int i, char* fname, char* id, char* desc) { try { diff --git a/src/clib/ctonedim.h b/src/clib/ctonedim.h index 7a88ea224..e9b72864c 100644 --- a/src/clib/ctonedim.h +++ b/src/clib/ctonedim.h @@ -71,6 +71,7 @@ extern "C" { CANTERA_CAPI int sim1D_refine(int i, int loglevel); CANTERA_CAPI int sim1D_setRefineCriteria(int i, int dom, double ratio, double slope, double curve, double prune); + CANTERA_CAPI int sim1D_setGridMin(int i, int dom, double gridmin); CANTERA_CAPI int sim1D_save(int i, char* fname, char* id, char* desc); CANTERA_CAPI int sim1D_restore(int i, char* fname, char* id); diff --git a/src/python/ctonedim_methods.cpp b/src/python/ctonedim_methods.cpp index dbf399467..ab83757e1 100644 --- a/src/python/ctonedim_methods.cpp +++ b/src/python/ctonedim_methods.cpp @@ -957,6 +957,23 @@ py_sim1D_setRefineCriteria(PyObject* self, PyObject* args) return Py_BuildValue("i",_val); } +static PyObject* +py_sim1D_setGridMin(PyObject* self, PyObject* args) +{ + int _val; + int i; + int dom; + double gridmin; + if (!PyArg_ParseTuple(args, "iid:sim1D_setGridMin", &i, &dom, &gridmin)) { + return NULL; + } + + _val = sim1D_setGridMin(i,dom,gridmin); + if (int(_val) == -1) { + return reportCanteraError(); + } + return Py_BuildValue("i",_val); +} static PyObject* py_sim1D_getInitialSoln(PyObject* self, PyObject* args) diff --git a/src/python/methods.h b/src/python/methods.h index c560471d3..6cd1aa667 100644 --- a/src/python/methods.h +++ b/src/python/methods.h @@ -146,6 +146,7 @@ static PyMethodDef ct_methods[] = { {"sim1D_solve", py_sim1D_solve, METH_VARARGS}, {"sim1D_refine", py_sim1D_refine, METH_VARARGS}, {"sim1D_setRefineCriteria", py_sim1D_setRefineCriteria, METH_VARARGS}, + {"sim1D_setGridMin", py_sim1D_setGridMin, METH_VARARGS}, {"sim1D_save", py_sim1D_save, METH_VARARGS}, {"sim1D_restore", py_sim1D_restore, METH_VARARGS}, {"sim1D_writeStats", py_sim1D_writeStats, METH_VARARGS},