From 8da208c0c0e7993e93fd7648b1cf6bb5feef01dd Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Thu, 28 Jan 2021 18:02:35 +0100 Subject: [PATCH] Add derived class GroupNames --- .../EclipseState/Schedule/Well/NameOrder.hpp | 7 +++++++ .../eclipse/EclipseState/Schedule/Schedule.cpp | 2 +- .../EclipseState/Schedule/Well/NameOrder.cpp | 16 ++++++++++++++++ tests/parser/ScheduleTests.cpp | 14 ++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.hpp b/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.hpp index 6c0b6f617..27977d0c2 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.hpp @@ -59,5 +59,12 @@ private: std::vector m_names2; }; + +class GroupOrder : public NameOrder { +public: + GroupOrder(); + std::vector restart_groups() const; +}; + } #endif diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp index eb22f234e..04d64f9ad 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp @@ -1073,7 +1073,7 @@ void Schedule::iterateScheduleSection(std::size_t load_start, std::size_t load_e std::vector Schedule::wellNames(std::size_t timeStep) const { const auto& well_order = this->snapshots[timeStep].well_order(); - return well_order.wells(); + return well_order.names(); } std::vector Schedule::wellNames() const { diff --git a/src/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.cpp b/src/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.cpp index 11beccce3..8093a8f72 100644 --- a/src/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.cpp +++ b/src/opm/parser/eclipse/EclipseState/Schedule/Well/NameOrder.cpp @@ -70,4 +70,20 @@ bool NameOrder::operator==(const NameOrder& other) const { this->m_names2 == other.m_names2; } +GroupOrder::GroupOrder() : + NameOrder() +{ + this->add("FIELD"); +} + +std::vector GroupOrder::restart_groups() const { + const auto& input_groups = this->names(); + std::vector groups{ input_groups.size() }; + for (std::size_t index = 1; index < input_groups.size(); index++) + groups[index - 1] = input_groups[index]; + groups.back() = input_groups[0]; + return groups; +} + + } diff --git a/tests/parser/ScheduleTests.cpp b/tests/parser/ScheduleTests.cpp index 6b35f0d9d..839978223 100644 --- a/tests/parser/ScheduleTests.cpp +++ b/tests/parser/ScheduleTests.cpp @@ -3384,6 +3384,20 @@ BOOST_AUTO_TEST_CASE(WellOrderTest) { BOOST_CHECK( !wo.has("G1")); } +BOOST_AUTO_TEST_CASE(GroupOrderTest) { + GroupOrder go; + + std::vector groups1 = {"FIELD"}; + std::vector groups2 = {"FIELD", "G1", "G2", "G3"}; + std::vector groups3 = {"G1", "G2", "G3", "FIELD"}; + + BOOST_CHECK( go.names() == groups1 ); + go.add("G1"); + go.add("G2"); + go.add("G3"); + BOOST_CHECK( go.names() == groups2 ); + BOOST_CHECK( go.restart_groups() == groups3 ); +} BOOST_AUTO_TEST_CASE(RFT_CONFIG) {