From c59ee86d5da01ebd8ab2f0ad372989d564d071f6 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Fri, 8 Mar 2013 15:32:02 +0000 Subject: [PATCH] [1D] Fixed restoration from XML files with missing fields This improves compatibility with output files from older versions of Cantera that don't save the 'energy_enabled' and 'species_enabled' flags. --- src/oneD/StFlow.cpp | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/oneD/StFlow.cpp b/src/oneD/StFlow.cpp index e00dc30cf..0a1d98f7b 100644 --- a/src/oneD/StFlow.cpp +++ b/src/oneD/StFlow.cpp @@ -888,26 +888,30 @@ 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]; + if (dom.hasChild("energy_enabled")) { + 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())); } - } 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]; + if (dom.hasChild("species_enabled")) { + 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)); } - } else if (!x.empty()) { - throw CanteraError("StFlow::restore", "species_enabled is length" + - int2str(x.size()) + "but should be length" + - int2str(m_nsp)); } if (dom.hasChild("refine_criteria")) {