diff --git a/include/cantera/oneD/Boundary1D.h b/include/cantera/oneD/Boundary1D.h index 063fe8c09b..9898777111 100644 --- a/include/cantera/oneD/Boundary1D.h +++ b/include/cantera/oneD/Boundary1D.h @@ -135,9 +135,7 @@ class Inlet1D : public Boundary1D virtual void init(); virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; - virtual void restore(const AnyMap& state, double* soln, int loglevel); virtual void restore(SolutionArray& arr, double* soln, int loglevel); protected: @@ -171,7 +169,6 @@ class Empty1D : public Boundary1D virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; virtual void restore(SolutionArray& arr, double* soln, int loglevel) {} }; @@ -197,7 +194,6 @@ class Symm1D : public Boundary1D virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; virtual void restore(SolutionArray& arr, double* soln, int loglevel) {} }; @@ -223,7 +219,6 @@ class Outlet1D : public Boundary1D virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; virtual void restore(SolutionArray& arr, double* soln, int loglevel) {} }; @@ -256,9 +251,7 @@ class OutletRes1D : public Boundary1D virtual void init(); virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; - virtual void restore(const AnyMap& state, double* soln, int loglevel); virtual void restore(SolutionArray& arr, double* soln, int loglevel); protected: @@ -290,9 +283,7 @@ class Surf1D : public Boundary1D virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; - virtual void restore(const AnyMap& state, double* soln, int loglevel); virtual void restore(SolutionArray& arr, double* soln, int loglevel); virtual void showSolution_s(std::ostream& s, const double* x); @@ -328,9 +319,7 @@ class ReactingSurf1D : public Boundary1D virtual void eval(size_t jg, double* xg, double* rg, integer* diagg, double rdt); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; - virtual void restore(const AnyMap& state, double* soln, int loglevel); virtual void restore(SolutionArray& arr, double* soln, int loglevel); virtual void _getInitialSoln(double* x) { diff --git a/include/cantera/oneD/Domain1D.h b/include/cantera/oneD/Domain1D.h index 6205d6d6ee..67cceafdaa 100644 --- a/include/cantera/oneD/Domain1D.h +++ b/include/cantera/oneD/Domain1D.h @@ -313,8 +313,10 @@ class Domain1D //! Save the state of this domain as an AnyMap /*! * @param soln local solution vector for this domain + * + * @deprecated To be removed after Cantera 3.0; superseded by asArray. */ - virtual AnyMap serialize(const double* soln) const; + AnyMap serialize(const double* soln) const; //! Save the state of this domain as a SolutionArray /*! @@ -323,7 +325,7 @@ class Domain1D * @since New in Cantera 3.0. */ virtual shared_ptr asArray(const double* soln) const { - throw CanteraError("Domain1D::asArray", "Needs to be overloaded."); + throw NotImplementedError("Domain1D::asArray", "Needs to be overloaded."); } //! Restore the solution for this domain from an AnyMap @@ -332,8 +334,10 @@ class Domain1D * @param[out] soln Value of the solution vector, local to this domain * @param[in] loglevel 0 to suppress all output; 1 to show warnings; 2 for * verbose output + * + * @deprecated To be removed after Cantera 3.0; restore from SolutionArray instead. */ - virtual void restore(const AnyMap& state, double* soln, int loglevel); + void restore(const AnyMap& state, double* soln, int loglevel); //! Restore the solution for this domain from a SolutionArray /*! @@ -502,6 +506,9 @@ class Domain1D //! Retrieve meta data virtual AnyMap getMeta() const; + //! Retrieve meta data + virtual void setMeta(const AnyMap& meta, int loglevel); + doublereal m_rdt; size_t m_nv; size_t m_points; diff --git a/include/cantera/oneD/Sim1D.h b/include/cantera/oneD/Sim1D.h index 8fd006ee11..973becb501 100644 --- a/include/cantera/oneD/Sim1D.h +++ b/include/cantera/oneD/Sim1D.h @@ -122,13 +122,6 @@ class Sim1D : public OneDim void save(const std::string& fname, const std::string& id, const std::string& desc, int loglevel=1, int compression=0); - /** - * Save the current solution to YAML (legacy implementation). @see save - * @since New in Cantera 3.0. - */ - void write_yaml(const std::string& fname, const std::string& id, - const std::string& desc, int loglevel=1); - /** * Save the residual of the current solution to a container file. * @param fname Name of output container file @@ -148,13 +141,6 @@ class Sim1D : public OneDim */ AnyMap restore(const std::string& fname, const std::string& id, int loglevel=2); - /** - * Initialize the solution with a previously-saved solution (legacy implementation). - * @see restore - * @since New in Cantera 3.0. - */ - void read_yaml(const std::string& fname, const std::string& id, int loglevel=2); - //! @} // @deprecated To be removed after Cantera 3.0 (unused) diff --git a/include/cantera/oneD/StFlow.h b/include/cantera/oneD/StFlow.h index 741c81d796..802d424a31 100644 --- a/include/cantera/oneD/StFlow.h +++ b/include/cantera/oneD/StFlow.h @@ -157,9 +157,7 @@ class StFlow : public Domain1D //! Print the solution. virtual void showSolution(const doublereal* x); - virtual AnyMap serialize(const double* soln) const; virtual shared_ptr asArray(const double* soln) const; - virtual void restore(const AnyMap& state, double* soln, int loglevel); virtual void restore(SolutionArray& arr, double* soln, int loglevel); //! Set flow configuration for freely-propagating flames, using an internal @@ -284,8 +282,8 @@ class StFlow : public Domain1D } protected: - void setMeta(const AnyMap& state); virtual AnyMap getMeta() const; + virtual void setMeta(const AnyMap& state, int loglevel); doublereal wdot(size_t k, size_t j) const { return m_wdot(k,j); diff --git a/interfaces/cython/cantera/_onedim.pxd b/interfaces/cython/cantera/_onedim.pxd index 52612d4904..9acc3da220 100644 --- a/interfaces/cython/cantera/_onedim.pxd +++ b/interfaces/cython/cantera/_onedim.pxd @@ -125,8 +125,6 @@ cdef extern from "cantera/oneD/Sim1D.h": vector[double] getRefineCriteria(int) except +translate_exception void save(string, string, string, int, int) except +translate_exception CxxAnyMap restore(string, string, int) except +translate_exception - void write_yaml(string, string, string, int) except +translate_exception - void read_yaml(string, string, int) except +translate_exception void writeStats(int) except +translate_exception void clearStats() void resize() except +translate_exception diff --git a/interfaces/cython/cantera/_onedim.pyx b/interfaces/cython/cantera/_onedim.pyx index a2a1a997e7..5d20cc2d8a 100644 --- a/interfaces/cython/cantera/_onedim.pyx +++ b/interfaces/cython/cantera/_onedim.pyx @@ -1484,17 +1484,6 @@ cdef class Sim1D: self.sim.save(stringify(str(filename)), stringify(name), stringify(description), loglevel, compression) - def write_yaml(self, filename, name='solution', description='none', - quiet=True): - """ - Save the solution in YAML format (legacy implementation) - - .. versionadded:: 3.0 - """ - loglevel = 1 - quiet - self.sim.write_yaml(stringify(str(filename)), stringify(name), - stringify(description), loglevel) - def restore(self, filename='soln.yaml', name='solution', loglevel=2): """Set the solution vector to a previously-saved solution. @@ -1518,16 +1507,6 @@ cdef class Sim1D: self._initialized = True return anymap_to_dict(header) - def read_yaml(self, filename, name='solution', description='none', quiet=True): - """ - Set the solution vector to a previously-saved solution (legacy implementation) - - .. versionadded:: 3.0 - """ - loglevel = 2 * (1 - quiet) - self.sim.read_yaml(stringify(str(filename)), stringify(name), loglevel) - self._initialized = True - def restore_time_stepping_solution(self): """ Set the current solution vector to the last successful time-stepping diff --git a/src/oneD/Boundary1D.cpp b/src/oneD/Boundary1D.cpp index 548824da0e..ec28a23517 100644 --- a/src/oneD/Boundary1D.cpp +++ b/src/oneD/Boundary1D.cpp @@ -219,22 +219,6 @@ void Inlet1D::eval(size_t jg, double* xg, double* rg, } } -AnyMap Inlet1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "inlet"; - state["temperature"] = m_temp; - state["mass-flux"] = m_mdot; - AnyMap Y; - for (size_t k = 0; k < m_nsp; k++) { - if (m_yin[k] != 0.0) { - Y[m_flow->phase().speciesName(k)] = m_yin[k]; - } - } - state["mass-fractions"] = std::move(Y); - return state; -} - shared_ptr Inlet1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -253,32 +237,9 @@ shared_ptr Inlet1D::asArray(const double* soln) const return arr; } -void Inlet1D::restore(const AnyMap& state, double* soln, int loglevel) -{ - Boundary1D::restore(state, soln, loglevel); - m_mdot = state["mass-flux"].asDouble(); - m_temp = state["temperature"].asDouble(); - const auto& Y = state["mass-fractions"].as(); - ThermoPhase& thermo = m_flow->phase(); - for (size_t k = 0; k < m_nsp; k++) { - m_yin[k] = Y.getDouble(thermo.speciesName(k), 0.0); - } - - // Warn about species not in the current phase - if (loglevel) { - for (auto& item : Y) { - if (thermo.speciesIndex(item.first) == npos) { - warn_user("Inlet1D::restore", "Phase '{}' does not contain a species " - "named '{}'\n which was specified as having a mass fraction of {}.", - thermo.name(), item.first, item.second.asDouble()); - } - } - } -} - void Inlet1D::restore(SolutionArray& arr, double* soln, int loglevel) { - Boundary1D::restore(arr.meta(), soln, loglevel); + Boundary1D::setMeta(arr.meta(), loglevel); arr.setIndex(0); auto phase = arr.thermo(); auto meta = arr.meta(); @@ -305,13 +266,6 @@ void Empty1D::eval(size_t jg, double* xg, double* rg, { } -AnyMap Empty1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "empty"; - return state; -} - shared_ptr Empty1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -365,13 +319,6 @@ void Symm1D::eval(size_t jg, double* xg, double* rg, integer* diagg, } } -AnyMap Symm1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "symmetry"; - return state; -} - shared_ptr Symm1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -450,13 +397,6 @@ void Outlet1D::eval(size_t jg, double* xg, double* rg, integer* diagg, } } -AnyMap Outlet1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "outlet"; - return state; -} - shared_ptr Outlet1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -562,21 +502,6 @@ void OutletRes1D::eval(size_t jg, double* xg, double* rg, } } -AnyMap OutletRes1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "outlet-reservoir"; - state["temperature"] = m_temp; - AnyMap Y; - for (size_t k = 0; k < m_nsp; k++) { - if (m_yres[k] != 0.0) { - Y[m_flow->phase().speciesName(k)] = m_yres[k]; - } - } - state["mass-fractions"] = std::move(Y); - return state; -} - shared_ptr OutletRes1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -595,32 +520,9 @@ shared_ptr OutletRes1D::asArray(const double* soln) const return arr; } -void OutletRes1D::restore(const AnyMap& state, double* soln, int loglevel) -{ - Boundary1D::restore(state, soln, loglevel); - m_temp = state["temperature"].asDouble(); - const auto& Y = state["mass-fractions"].as(); - ThermoPhase& thermo = m_flow->phase(); - for (size_t k = 0; k < m_nsp; k++) { - m_yres[k] = Y.getDouble(thermo.speciesName(k), 0.0); - } - - // Warn about species not in the current phase - if (loglevel) { - for (auto& item : Y) { - if (thermo.speciesIndex(item.first) == npos) { - warn_user("OutletRes1D::restore", "Phase '{}' does not contain a " - "species named '{}'\nwhich was specified as having a mass " - "fraction of {}.", - thermo.name(), item.first, item.second.asDouble()); - } - } - } -} - void OutletRes1D::restore(SolutionArray& arr, double* soln, int loglevel) { - Boundary1D::restore(arr.meta(), soln, loglevel); + Boundary1D::setMeta(arr.meta(), loglevel); arr.setIndex(0); auto phase = arr.thermo(); m_temp = phase->temperature(); @@ -660,14 +562,6 @@ void Surf1D::eval(size_t jg, double* xg, double* rg, } } -AnyMap Surf1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "surface"; - state["temperature"] = m_temp; - return state; -} - shared_ptr Surf1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -676,15 +570,9 @@ shared_ptr Surf1D::asArray(const double* soln) const return SolutionArray::create(m_solution, 0, meta); } -void Surf1D::restore(const AnyMap& state, double* soln, int loglevel) -{ - Boundary1D::restore(state, soln, loglevel); - m_temp = state["temperature"].asDouble(); -} - void Surf1D::restore(SolutionArray& arr, double* soln, int loglevel) { - Boundary1D::restore(arr.meta(), soln, loglevel); + Boundary1D::setMeta(arr.meta(), loglevel); arr.setIndex(0); m_temp = arr.thermo()->temperature(); } @@ -853,23 +741,6 @@ void ReactingSurf1D::eval(size_t jg, double* xg, double* rg, } } -AnyMap ReactingSurf1D::serialize(const double* soln) const -{ - AnyMap state = Boundary1D::serialize(soln); - state["type"] = "reacting-surface"; - state["temperature"] = m_temp; - state["phase"]["name"] = m_sphase->name(); - AnyValue source =m_sphase->input().getMetadata("filename"); - state["phase"]["source"] = source.empty() ? "" : source.asString(); - AnyMap cov; - for (size_t k = 0; k < m_nsp; k++) { - cov[m_sphase->speciesName(k)] = soln[k]; - } - state["coverages"] = std::move(cov); - - return state; -} - shared_ptr ReactingSurf1D::asArray(const double* soln) const { AnyMap meta = Boundary1D::getMeta(); @@ -890,31 +761,9 @@ shared_ptr ReactingSurf1D::asArray(const double* soln) const return arr; } -void ReactingSurf1D::restore(const AnyMap& state, double* soln, int loglevel) -{ - Boundary1D::restore(state, soln, loglevel); - m_temp = state["temperature"].asDouble(); - const auto& cov = state["coverages"].as(); - for (size_t k = 0; k < m_nsp; k++) { - soln[k] = cov.getDouble(m_sphase->speciesName(k), 0.0); - } - - // Warn about species not in the current phase - if (loglevel) { - for (auto& item : cov) { - if (m_sphase->speciesIndex(item.first) == npos) { - warn_user("OutletRes1D::restore", "Phase '{}' does not contain a " - "species named '{}'\nwhich was specified as having a coverage " - "of {}.", - m_sphase->name(), item.first, item.second.asDouble()); - } - } - } -} - void ReactingSurf1D::restore(SolutionArray& arr, double* soln, int loglevel) { - Boundary1D::restore(arr.meta(), soln, loglevel); + Boundary1D::setMeta(arr.meta(), loglevel); arr.setIndex(0); auto surf = std::dynamic_pointer_cast(arr.thermo()); if (!surf) { diff --git a/src/oneD/Domain1D.cpp b/src/oneD/Domain1D.cpp index 7ff91730b8..af30fdb421 100644 --- a/src/oneD/Domain1D.cpp +++ b/src/oneD/Domain1D.cpp @@ -9,6 +9,7 @@ #include "cantera/oneD/MultiJac.h" #include "cantera/oneD/refine.h" #include "cantera/base/AnyMap.h" +#include "cantera/base/SolutionArray.h" #include @@ -143,10 +144,15 @@ AnyMap Domain1D::getMeta() const AnyMap Domain1D::serialize(const double* soln) const { - return getMeta(); + warn_deprecated("Domain1D::serialize", + "To be removed after Cantera 3.0; superseded by asArray."); + AnyMap out; + auto arr = asArray(soln); + arr->writeEntry(out, ""); + return out; } -void Domain1D::restore(const AnyMap& state, double* soln, int loglevel) +void Domain1D::setMeta(const AnyMap& meta, int loglevel) { auto set_tols = [&](const AnyValue& tols, const string& which, vector_fp& out) { @@ -162,15 +168,15 @@ void Domain1D::restore(const AnyMap& state, double* soln, int loglevel) if (tol.hasKey(name)) { out[i] = tol[name].asDouble(); } else if (loglevel) { - warn_user("Domain1D::restore", "No {} found for component '{}'", + warn_user("Domain1D::setMeta", "No {} found for component '{}'", which, name); } } } }; - if (state.hasKey("tolerances")) { - const auto& tols = state["tolerances"]; + if (meta.hasKey("tolerances")) { + const auto& tols = meta["tolerances"]; set_tols(tols, "transient-abstol", m_atol_ts); set_tols(tols, "transient-reltol", m_rtol_ts); set_tols(tols, "steady-abstol", m_atol_ss); @@ -178,6 +184,15 @@ void Domain1D::restore(const AnyMap& state, double* soln, int loglevel) } } +void Domain1D::restore(const AnyMap& state, double* soln, int loglevel) +{ + warn_deprecated("Domain1D::restore", + "To be removed after Cantera 3.0; restore from SolutionArray instead."); + auto arr = SolutionArray::create(solution()); + arr->readEntry(state, ""); + restore(*arr, soln, loglevel); +} + void Domain1D::locate() { if (m_left) { diff --git a/src/oneD/Sim1D.cpp b/src/oneD/Sim1D.cpp index c4d08a5334..90f9773210 100644 --- a/src/oneD/Sim1D.cpp +++ b/src/oneD/Sim1D.cpp @@ -136,52 +136,6 @@ void Sim1D::save(const std::string& fname, const std::string& id, "Unsupported file format '{}'", extension); } -void Sim1D::write_yaml(const std::string& fname, const std::string& id, - const std::string& desc, int loglevel) -{ - // Check for an existing file and load it if present - AnyMap data; - if (ifstream(fname).good()) { - data = AnyMap::fromYamlFile(fname); - } - bool preexisting = data.hasKey(id); - - // Add this simulation to the YAML - data[id] = serialize(m_x.data()); - - // Add metadata - data[id]["description"] = desc; - data[id]["generator"] = "Cantera Sim1D"; - data[id]["cantera-version"] = CANTERA_VERSION; - data[id]["git-commit"] = gitCommit(); - - // Add a timestamp indicating the current time - time_t aclock; - ::time(&aclock); // Get time in seconds - struct tm* newtime = localtime(&aclock); // Convert time to struct tm form - data[id]["date"] = stripnonprint(asctime(newtime)); - - // Force metadata fields to the top of the file - data[id]["description"].setLoc(-6, 0); - data[id]["generator"].setLoc(-5, 0); - data[id]["cantera-version"].setLoc(-4, 0); - data[id]["git-commit"].setLoc(-3, 0); - data[id]["date"].setLoc(-2, 0); - - // If this is not replacing an existing solution, put it at the end - if (!preexisting) { - data[id].setLoc(INT_MAX, 0); - } - - // Write the output file and remove the now-outdated cached file - std::ofstream out(fname); - out << data.toYamlString(); - AnyMap::clearCachedFile(fname); - if (loglevel > 0) { - writelog("Solution saved to file {} as solution '{}'.\n", fname, id); - } -} - void Sim1D::saveResidual(const std::string& fname, const std::string& id, const std::string& desc, int loglevel) { @@ -328,38 +282,6 @@ AnyMap Sim1D::restore(const std::string& fname, const std::string& id, return header; } -void Sim1D::read_yaml(const std::string& fname, const std::string& id, - int loglevel) -{ - size_t dot = fname.find_last_of("."); - string extension = (dot != npos) ? toLowerCopy(fname.substr(dot+1)) : ""; - if (extension == "xml") { - throw CanteraError("Sim1D::restore", - "Restoring from XML is no longer supported."); - } - AnyMap root = AnyMap::fromYamlFile(fname); - if (!root.hasKey(id)) { - throw InputFileError("Sim1D::restore", root, - "No solution with id '{}'", id); - } - const auto& state = root[id]; - for (auto dom : m_dom) { - if (!state.hasKey(dom->id())) { - throw InputFileError("Sim1D::restore", state, - "Saved state '{}' does not contain a domain named '{}'.", - id, dom->id()); - } - dom->resize(dom->nComponents(), state[dom->id()]["points"].asInt()); - } - resize(); - m_xlast_ts.clear(); - for (auto dom : m_dom) { - dom->restore(state[dom->id()].as(), m_x.data() + dom->loc(), - loglevel); - } - finalize(); -} - void Sim1D::setFlatProfile(size_t dom, size_t comp, doublereal v) { size_t np = domain(dom).nPoints(); diff --git a/src/oneD/StFlow.cpp b/src/oneD/StFlow.cpp index 4815014a43..9fb2e53c76 100644 --- a/src/oneD/StFlow.cpp +++ b/src/oneD/StFlow.cpp @@ -732,31 +732,6 @@ AnyMap StFlow::getMeta() const return state; } -AnyMap StFlow::serialize(const double* soln) const -{ - auto state = getMeta(); - - // m_rho - - state["pressure"] = m_press; - state["grid"] = m_z; - vector_fp data(nPoints()); - for (size_t i = 0; i < nComponents(); i++) { - if (componentActive(i)) { - for (size_t j = 0; j < nPoints(); j++) { - data[j] = soln[index(i,j)]; - } - state[componentName(i)] = data; - } - } - - if (m_do_radiation) { - state["radiative-heat-loss"] = m_qdotRadiation; - } - - return state; -} - shared_ptr StFlow::asArray(const double* soln) const { auto arr = SolutionArray::create(m_solution, nPoints(), getMeta()); @@ -779,35 +754,9 @@ shared_ptr StFlow::asArray(const double* soln) const return arr; } -void StFlow::restore(const AnyMap& state, double* soln, int loglevel) -{ - Domain1D::restore(state, soln, loglevel); - m_press = state["pressure"].asDouble(); - setupGrid(nPoints(), state["grid"].asVector(nPoints()).data()); - - for (size_t i = 0; i < nComponents(); i++) { - if (!componentActive(i)) { - continue; - } - std::string name = componentName(i); - if (state.hasKey(name)) { - const vector_fp& data = state[name].asVector(nPoints()); - for (size_t j = 0; j < nPoints(); j++) { - soln[index(i,j)] = data[j]; - } - } else if (loglevel) { - warn_user("StFlow::restore", "Saved state does not contain values for " - "component '{}' in domain '{}'.", name, id()); - } - } - - updateProperties(npos, soln + loc(), 0, m_points - 1); - setMeta(state); -} - void StFlow::restore(SolutionArray& arr, double* soln, int loglevel) { - Domain1D::restore(arr.meta(), soln, loglevel); + Domain1D::setMeta(arr.meta(), loglevel); arr.setIndex(0); auto phase = arr.thermo(); m_press = phase->pressure(); @@ -832,10 +781,10 @@ void StFlow::restore(SolutionArray& arr, double* soln, int loglevel) } updateProperties(npos, soln + loc(), 0, m_points - 1); - setMeta(arr.meta()); + setMeta(arr.meta(), loglevel); } -void StFlow::setMeta(const AnyMap& state) +void StFlow::setMeta(const AnyMap& state, int loglevel) { if (state.hasKey("energy-enabled")) { const AnyValue& ee = state["energy-enabled"];