Add class GlobalWellInfo and use it from WellState

This commit is contained in:
Joakim Hove
2021-04-28 10:22:29 +02:00
parent 1329a73546
commit 8a78dc1c59
7 changed files with 239 additions and 82 deletions

View File

@@ -22,6 +22,7 @@
#define BOOST_TEST_MODULE WellStateFIBOTest
#include "MpiFixture.hpp"
#include <opm/simulators/wells/GlobalWellInfo.hpp>
#include <opm/simulators/wells/WellStateFullyImplicitBlackoil.hpp>
#include <opm/parser/eclipse/Python/Python.hpp>
@@ -146,8 +147,7 @@ namespace {
state.init(cpress, setup.sched,
wells, ppinfos,
timeStep, nullptr, setup.well_perf_data, setup.st,
wells.size());
timeStep, nullptr, setup.well_perf_data, setup.st);
state.initWellStateMSWell(setup.sched.getWells(timeStep),
nullptr);
@@ -394,4 +394,35 @@ BOOST_AUTO_TEST_CASE(STOP_well)
BOOST_CHECK(p > 0);
}
// ---------------------------------------------------------------------
BOOST_AUTO_TEST_CASE(GlobalWellInfo_TEST) {
const Setup setup{ "msw.data" };
std::vector<Opm::Well> local_wells = { setup.sched.getWell("PROD01", 1) };
Opm::GlobalWellInfo gwi(setup.sched, 1, local_wells);
BOOST_CHECK(!gwi.in_injecting_group("INJE01"));
BOOST_CHECK(!gwi.in_injecting_group("PROD01"));
BOOST_CHECK(!gwi.in_producing_group("INJE01"));
BOOST_CHECK(!gwi.in_producing_group("PROD01"));
BOOST_CHECK_EQUAL( gwi.well_name(0), "INJE01");
BOOST_CHECK_EQUAL( gwi.well_name(1), "PROD01");
BOOST_CHECK_EQUAL( gwi.well_index("PROD01"), 1);
BOOST_CHECK_THROW( gwi.update_group( {}, {}, {} ), std::exception);
gwi.update_group( {Opm::Well::Status::OPEN}, {Opm::Well::InjectorCMode::CMODE_UNDEFINED}, {Opm::Well::ProducerCMode::GRUP} );
BOOST_CHECK(!gwi.in_producing_group("INJE01"));
BOOST_CHECK(gwi.in_producing_group("PROD01"));
gwi.update_group( {Opm::Well::Status::OPEN}, {Opm::Well::InjectorCMode::CMODE_UNDEFINED}, {Opm::Well::ProducerCMode::NONE} );
BOOST_CHECK(!gwi.in_producing_group("INJE01"));
BOOST_CHECK(!gwi.in_producing_group("PROD01"));
}
BOOST_AUTO_TEST_SUITE_END()