diff --git a/src/opm/output/eclipse/Summary.cpp b/src/opm/output/eclipse/Summary.cpp index b4e8d7aae..39b3a45e9 100644 --- a/src/opm/output/eclipse/Summary.cpp +++ b/src/opm/output/eclipse/Summary.cpp @@ -2521,9 +2521,8 @@ private: int prevReportStepID_{-1}; std::vector::size_type numUnwritten_{0}; - SummaryOutputParameters outputParameters_{}; - std::vector requiredRestartParameters_{}; - std::vector udq_parameters; + SummaryOutputParameters outputParameters_{}; + std::unordered_map extra_parameters{}; std::vector valueKeys_{}; std::vector unwritten_{}; @@ -2613,12 +2612,9 @@ eval(const EclipseState& es, evalPtr->update(sim_step, duration, input, simRes, st); } - for (auto& evalPtr : this->requiredRestartParameters_) { + for (auto& [_, evalPtr] : this->extra_parameters) { evalPtr->update(sim_step, duration, input, simRes, st); } - - for (auto& eval_ptr : this->udq_parameters) - eval_ptr->update(sim_step, duration, input, simRes, st); } void Opm::out::Summary::SummaryImplementation::write() @@ -2855,13 +2851,13 @@ void Opm::out::Summary::SummaryImplementation::configureUDQ(const SummaryConfig& auto fun_pos = funs.find(node.keyword); if (fun_pos != funs.end()) - this->udq_parameters.push_back( std::make_unique(node, fun_pos->second) ); + this->extra_parameters.emplace( node.unique_key(), std::make_unique(node, fun_pos->second) ); else { auto unit = single_values_units.find(node.keyword); if (unit == single_values_units.end()) throw std::logic_error(fmt::format("Evaluation function for: {} not found ", node.keyword)); - this->udq_parameters.push_back( std::make_unique(node, unit->second)); + this->extra_parameters.emplace( node.unique_key(), std::make_unique(node, unit->second)); } } } @@ -2884,7 +2880,7 @@ configureRequiredRestartParameters(const SummaryConfig& sumcfg, auto eval = std::make_unique< Evaluator::FunctionRelation>(node, fcnPos->second); - this->requiredRestartParameters_.push_back(std::move(eval)); + this->extra_parameters.emplace(node.unique_key(), std::move(eval)); }; for (const auto& node : requiredRestartVectors(sched))