diff --git a/opm/simulators/flow/MechContainer.cpp b/opm/simulators/flow/MechContainer.cpp index e3628b646..3cb0b228a 100644 --- a/opm/simulators/flow/MechContainer.cpp +++ b/opm/simulators/flow/MechContainer.cpp @@ -139,23 +139,23 @@ assignStress(const unsigned globalDofIdx, template void MechContainer:: -outputRestart(data::Solution& sol) const +outputRestart(data::Solution& sol) { if (!allocated_) { return; } using DataEntry = std::tuple*, - const std::array,3>*, - const VoigtArray*>>; + std::variant*, + std::array,3>*, + VoigtArray*>>; auto doInsert = [&sol](const std::string& name, const UnitSystem::measure& measure, - const std::vector& entry) + std::vector& entry) { if (!entry.empty()) { - sol.insert(name, measure, entry, data::TargetType::RESTART_OPM_EXTENDED); + sol.insert(name, measure, std::move(entry), data::TargetType::RESTART_OPM_EXTENDED); } }; @@ -172,25 +172,25 @@ outputRestart(data::Solution& sol) const }; std::for_each(solutionVectors.begin(), solutionVectors.end(), - [&doInsert](const auto& array) + [&doInsert](auto& array) { std::visit(VisitorOverloadSet{ - [&array, &doInsert](const std::vector* v) + [&array, &doInsert](std::vector* v) { doInsert(std::get<0>(array), std::get<1>(array), *v); }, - [&array, &doInsert](const std::array,3>* V) + [&array, &doInsert](std::array,3>* V) { - const auto& v = *V; + auto& v = *V; const auto& name = std::get<0>(array); const auto& measure = std::get<1>(array); doInsert(name + "X", measure, v[0]); doInsert(name + "Y", measure, v[1]); doInsert(name + "Z", measure, v[2]); }, - [&array, &doInsert](const VoigtArray* V) + [&array, &doInsert](VoigtArray* V) { - const auto& v = *V; + auto& v = *V; const auto& name = std::get<0>(array); const auto& measure = std::get<1>(array); doInsert(name + "XX", measure, v[VoigtIndex::XX]); @@ -203,6 +203,8 @@ outputRestart(data::Solution& sol) const }, std::get<2>(array)); } ); + + allocated_ = false; } template class MechContainer; diff --git a/opm/simulators/flow/MechContainer.hpp b/opm/simulators/flow/MechContainer.hpp index a0c4fdc4c..7dd824ed5 100644 --- a/opm/simulators/flow/MechContainer.hpp +++ b/opm/simulators/flow/MechContainer.hpp @@ -72,7 +72,7 @@ public: void assignStress(const unsigned globalDofIdx, const Dune::FieldVector& stress); - void outputRestart(data::Solution& sol) const; + void outputRestart(data::Solution& sol); bool allocated() const { return allocated_; }