From 302ebb2c7e080691a3e9e52ac59c945e253f3bfe Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Thu, 7 Mar 2013 18:51:33 +0000 Subject: [PATCH] [1D] Save and restore energy_enabled and species_enabled flags --- interfaces/cython/cantera/test/test_onedim.py | 1 + src/oneD/StFlow.cpp | 36 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/interfaces/cython/cantera/test/test_onedim.py b/interfaces/cython/cantera/test/test_onedim.py index 43088b50f..e5a9db4c9 100644 --- a/interfaces/cython/cantera/test/test_onedim.py +++ b/interfaces/cython/cantera/test/test_onedim.py @@ -222,6 +222,7 @@ class TestFreeFlame(utilities.CanteraTest): rtol, atol = self.sim.flame.tolerances('T') self.assertNear(rtol, self.tol_ss[0]) self.assertNear(atol, self.tol_ss[1]) + self.assertFalse(self.sim.energy_enabled) P2a = self.sim.P diff --git a/src/oneD/StFlow.cpp b/src/oneD/StFlow.cpp index 5e2b085ad..20eab09ca 100644 --- a/src/oneD/StFlow.cpp +++ b/src/oneD/StFlow.cpp @@ -887,8 +887,29 @@ void StFlow::restore(const XML_Node& dom, doublereal* soln, int loglevel) } } } -} + getFloatArray(dom, x, false, "", "energy_enabled"); + if (x.size() == nPoints()) { + for (size_t i = 0; i < x.size(); i++) { + m_do_energy[i] = x[i]; + } + } else if (!x.empty()) { + throw CanteraError("StFlow::restore", "energy_enabled is length" + + int2str(x.size()) + "but should be length" + + int2str(nPoints())); + } + + getFloatArray(dom, x, false, "", "species_enabled"); + if (x.size() == m_nsp) { + for (size_t i = 0; i < x.size(); i++) { + m_do_species[i] = x[i]; + } + } else if (!x.empty()) { + throw CanteraError("StFlow::restore", "species_enabled is length" + + int2str(x.size()) + "but should be length" + + int2str(m_nsp)); + } +} XML_Node& StFlow::save(XML_Node& o, const doublereal* const sol) @@ -933,6 +954,19 @@ XML_Node& StFlow::save(XML_Node& o, const doublereal* const sol) addFloatArray(gv,m_thermo->speciesName(k), x.size(),DATA_PTR(x),"","massFraction",0.0,1.0); } + + vector_fp values(nPoints()); + for (size_t i = 0; i < nPoints(); i++) { + values[i] = m_do_energy[i]; + } + addNamedFloatArray(flow, "energy_enabled", nPoints(), &values[0]); + + values.resize(m_nsp); + for (size_t i = 0; i < m_nsp; i++) { + values[i] = m_do_species[i]; + } + addNamedFloatArray(flow, "species_enabled", m_nsp, &values[0]); + return flow; }