From 63e55bfa8f9f49d1d44792fd9bfe39bc44465536 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Wed, 31 Jul 2019 11:53:20 +0200 Subject: [PATCH] Remove use of GroupTree from opm-common --- opm/core/wells/WellCollection.cpp | 12 ++++++------ opm/core/wells/WellCollection.hpp | 6 +++--- opm/core/wells/WellsGroup.cpp | 2 +- opm/core/wells/WellsGroup.hpp | 2 +- opm/core/wells/WellsManager.hpp | 1 - opm/core/wells/WellsManager_impl.hpp | 16 ++++++---------- tests/test_wellcollection.cpp | 17 ++++++++--------- tests/test_wellsgroup.cpp | 12 ++---------- 8 files changed, 27 insertions(+), 41 deletions(-) diff --git a/opm/core/wells/WellCollection.cpp b/opm/core/wells/WellCollection.cpp index 9c22e9935..1edae481f 100644 --- a/opm/core/wells/WellCollection.cpp +++ b/opm/core/wells/WellCollection.cpp @@ -30,17 +30,17 @@ namespace Opm { - void WellCollection::addField(const Group2& fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage) { + void WellCollection::addField(const Group2& fieldGroup, const PhaseUsage& phaseUsage) { WellsGroupInterface* fieldNode = findNode(fieldGroup.name()); if (fieldNode) { OPM_THROW(std::runtime_error, "Trying to add FIELD node, but this already exists. Can only have one FIELD node."); } - roots_.push_back(createGroupWellsGroup(fieldGroup, timeStep, phaseUsage)); + roots_.push_back(createGroupWellsGroup(fieldGroup, phaseUsage)); } void WellCollection::addGroup(const Group2& groupChild, std::string parent_name, - size_t timeStep, const PhaseUsage& phaseUsage) { + const PhaseUsage& phaseUsage) { WellsGroupInterface* parent = findNode(parent_name); if (!parent) { OPM_THROW(std::runtime_error, "Trying to add child group to group named " << parent_name << ", but this does not exist in the WellCollection."); @@ -55,7 +55,7 @@ namespace Opm group_control_active_ = true; } - std::shared_ptr child = createGroupWellsGroup(groupChild, timeStep, phaseUsage); + std::shared_ptr child = createGroupWellsGroup(groupChild, phaseUsage); if (child->injSpec().control_mode_ == InjectionSpecification::VREP) { having_vrep_groups_ = true; @@ -69,7 +69,7 @@ namespace Opm child->setParent(parent); } - void WellCollection::addWell(const Well2& wellChild, const SummaryState& summaryState, size_t timeStep, const PhaseUsage& phaseUsage) { + void WellCollection::addWell(const Well2& wellChild, const SummaryState& summaryState, const PhaseUsage& phaseUsage) { if (wellChild.getStatus() == WellCommon::SHUT) { //SHUT wells are not added to the well collection return; @@ -77,7 +77,7 @@ namespace Opm WellsGroupInterface* parent = findNode(wellChild.groupName()); if (!parent) { - OPM_THROW(std::runtime_error, "Trying to add well " << wellChild.name() << " Step: " << boost::lexical_cast(timeStep) << " to group named " << wellChild.groupName() << ", but this group does not exist in the WellCollection."); + OPM_THROW(std::runtime_error, "Trying to add well " << wellChild.name() << " to group named " << wellChild.groupName() << ", but this group does not exist in the WellCollection."); } std::shared_ptr child = createWellWellsGroup(wellChild, summaryState, phaseUsage); diff --git a/opm/core/wells/WellCollection.hpp b/opm/core/wells/WellCollection.hpp index 0c8392ade..e11d06364 100644 --- a/opm/core/wells/WellCollection.hpp +++ b/opm/core/wells/WellCollection.hpp @@ -36,12 +36,12 @@ namespace Opm { public: - void addField(const Group2& fieldGroup, size_t timeStep, const PhaseUsage& phaseUsage); + void addField(const Group2& fieldGroup, const PhaseUsage& phaseUsage); - void addWell(const Well2& wellChild, const SummaryState& summaryState, size_t timeStep, const PhaseUsage& phaseUsage); + void addWell(const Well2& wellChild, const SummaryState& summaryState, const PhaseUsage& phaseUsage); void addGroup(const Group2& groupChild, std::string parent_name, - size_t timeStep, const PhaseUsage& phaseUsage); + const PhaseUsage& phaseUsage); /// Adds the child to the collection /// and appends it to parent's children. diff --git a/opm/core/wells/WellsGroup.cpp b/opm/core/wells/WellsGroup.cpp index e351cb808..1d541a3c4 100644 --- a/opm/core/wells/WellsGroup.cpp +++ b/opm/core/wells/WellsGroup.cpp @@ -1556,7 +1556,7 @@ namespace Opm } } // anonymous namespace - std::shared_ptr createGroupWellsGroup(const Group2& group, size_t timeStep, const PhaseUsage& phase_usage ) + std::shared_ptr createGroupWellsGroup(const Group2& group, const PhaseUsage& phase_usage ) { InjectionSpecification injection_specification; ProductionSpecification production_specification; diff --git a/opm/core/wells/WellsGroup.hpp b/opm/core/wells/WellsGroup.hpp index dc3aff107..7578dd5cf 100644 --- a/opm/core/wells/WellsGroup.hpp +++ b/opm/core/wells/WellsGroup.hpp @@ -549,7 +549,7 @@ namespace Opm /// \param[in] group the Group to construct object for /// \param[in] timeStep the time step in question /// \param[in] the phase usage - std::shared_ptr createGroupWellsGroup(const Group2& group, size_t timeStep, + std::shared_ptr createGroupWellsGroup(const Group2& group, const PhaseUsage& phase_usage ); } diff --git a/opm/core/wells/WellsManager.hpp b/opm/core/wells/WellsManager.hpp index 5fb1f2379..ed0c3a56f 100644 --- a/opm/core/wells/WellsManager.hpp +++ b/opm/core/wells/WellsManager.hpp @@ -26,7 +26,6 @@ #include #include -#include #include diff --git a/opm/core/wells/WellsManager_impl.hpp b/opm/core/wells/WellsManager_impl.hpp index 4c3fb2d60..b868ab926 100644 --- a/opm/core/wells/WellsManager_impl.hpp +++ b/opm/core/wells/WellsManager_impl.hpp @@ -372,19 +372,15 @@ WellsManager::init(const Opm::EclipseState& eclipseState, { const auto& fieldGroup = schedule.getGroup2( "FIELD", timeStep); - well_collection_.addField(fieldGroup, timeStep, pu); - - const auto& grouptree = schedule.getGroupTree( timeStep ); + well_collection_.addField(fieldGroup, pu); std::vector< std::string > group_stack = { "FIELD" }; do { - auto parent = group_stack.back(); + const auto& parent = schedule.getGroup2(group_stack.back(), timeStep); group_stack.pop_back(); - const auto& children = grouptree.children( parent ); - group_stack.insert( group_stack.end(), children.begin(), children.end() ); - - for( const auto& child : children ) { - well_collection_.addGroup( schedule.getGroup2( child, timeStep ), parent, timeStep, pu ); + for (const auto& child: parent.groups()) { + group_stack.push_back(child); + well_collection_.addGroup( schedule.getGroup2( child, timeStep ), parent.name(), pu ); } } while( !group_stack.empty() ); @@ -393,7 +389,7 @@ WellsManager::init(const Opm::EclipseState& eclipseState, for (size_t i = 0; i < wells_on_proc.size(); ++i) { // wells_on_proc is a vector of flag to indicate whether a well is on the process if (wells_on_proc[i]) { - well_collection_.addWell(wells[i], summaryState, timeStep, pu); + well_collection_.addWell(wells[i], summaryState, pu); } } diff --git a/tests/test_wellcollection.cpp b/tests/test_wellcollection.cpp index 8dcdd347e..818956ea7 100644 --- a/tests/test_wellcollection.cpp +++ b/tests/test_wellcollection.cpp @@ -30,7 +30,6 @@ #include #include #include -#include using namespace Opm; @@ -51,10 +50,10 @@ BOOST_AUTO_TEST_CASE(AddWellsAndGroupToCollection) { // Add groups to WellCollection const auto& fieldGroup = sched.getGroup2("FIELD", 2); - collection.addField(fieldGroup, 2, pu); + collection.addField(fieldGroup, pu); - collection.addGroup( sched.getGroup2( "G1", 2 ), fieldGroup.name(), 2, pu); - collection.addGroup( sched.getGroup2( "G2", 2 ), fieldGroup.name(), 2, pu); + collection.addGroup( sched.getGroup2( "G1", 2 ), fieldGroup.name(), pu); + collection.addGroup( sched.getGroup2( "G2", 2 ), fieldGroup.name(), pu); BOOST_CHECK_EQUAL("FIELD", collection.findNode("FIELD")->name()); BOOST_CHECK_EQUAL("FIELD", collection.findNode("G1")->getParent()->name()); @@ -64,7 +63,7 @@ BOOST_AUTO_TEST_CASE(AddWellsAndGroupToCollection) { WellCollection wellCollection; const auto wells = sched.getWells2atEnd(); for (size_t i=0; igetParent()->name()); @@ -90,9 +89,9 @@ BOOST_AUTO_TEST_CASE(EfficiencyFactor) { WellCollection collection; // Add groups to WellCollection const auto& fieldGroup = sched.getGroup2("FIELD", timestep); - collection.addField(fieldGroup, timestep, pu); - collection.addGroup( sched.getGroup2( "G1", timestep ), fieldGroup.name(), timestep, pu); - collection.addGroup( sched.getGroup2( "G2", timestep ), fieldGroup.name(), timestep, pu); + collection.addField(fieldGroup, pu); + collection.addGroup( sched.getGroup2( "G1", timestep ), fieldGroup.name(), pu); + collection.addGroup( sched.getGroup2( "G2", timestep ), fieldGroup.name(), pu); BOOST_CHECK_EQUAL(1.0, collection.findNode("FIELD")->efficiencyFactor()); BOOST_CHECK_EQUAL(1.0, collection.findNode("G1")->getParent()->efficiencyFactor()); @@ -101,7 +100,7 @@ BOOST_AUTO_TEST_CASE(EfficiencyFactor) { // Add wells to WellCollection const auto wells1 = sched.getWells2(timestep); for (size_t i=0; i #include -#include - #include #include #include @@ -92,14 +90,10 @@ BOOST_AUTO_TEST_CASE(ConstructGroupFromGroup) { const Opm::Runspec runspec (deck); const Schedule sched(deck, grid, eclipseProperties, runspec); - - const auto& nodes = sched.getGroupTree(2); - for( const auto& grp_name : sched.groupNames() ) { - if( !nodes.exists( grp_name ) ) continue; const auto& group = sched.getGroup2(grp_name, 2); - std::shared_ptr wellsGroup = createGroupWellsGroup(group, 2, pu); + std::shared_ptr wellsGroup = createGroupWellsGroup(group, pu); BOOST_CHECK_EQUAL(group.name(), wellsGroup->name()); if (group.isInjectionGroup()) { const auto& injection = group.injectionProperties(); @@ -134,12 +128,10 @@ BOOST_AUTO_TEST_CASE(EfficiencyFactor) { const Schedule sched(deck, grid, eclipseProperties, runspec); - const auto& nodes = sched.getGroupTree(2); for( const auto& grp_name : sched.groupNames() ) { - if( !nodes.exists( grp_name ) ) continue; const auto& group = sched.getGroup2(grp_name, 2); - std::shared_ptr wellsGroup = createGroupWellsGroup(group, 2, pu); + std::shared_ptr wellsGroup = createGroupWellsGroup(group, pu); BOOST_CHECK_EQUAL(group.name(), wellsGroup->name()); BOOST_CHECK_EQUAL(group.getGroupEfficiencyFactor(), wellsGroup->efficiencyFactor()); BOOST_CHECK_EQUAL(group.getGroupEfficiencyFactor(), wellsGroup->efficiencyFactor());