Use wellcontainer2 (#3255)

Use WellContainer<> to manage members in WellState
This commit is contained in:
Joakim Hove
2021-05-20 16:16:12 +02:00
committed by GitHub
parent b9f916080a
commit 506a349085
14 changed files with 329 additions and 302 deletions

View File

@@ -393,37 +393,61 @@ BOOST_AUTO_TEST_CASE(STOP_well)
std::vector<Opm::ParallelWellInfo> pinfos;
auto wstate = buildWellState(setup, 0, pinfos);
for (const auto& p : wstate.perfPress())
BOOST_CHECK(p > 0);
for (std::size_t well_index = 0; well_index < setup.sched.numWells(0); well_index++) {
for (const auto& p : wstate.perfPress(well_index))
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_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);
// Opm::WellContainer<Opm::Well::Status> status({{"PROD01", Opm::Well::Status::OPEN}});
//
// 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);
//
//
// Opm::WellContainer<Opm::Well::InjectorCMode> inj_cmode({{"PROD01", Opm::Well::InjectorCMode::CMODE_UNDEFINED}});
// {
// Opm::WellContainer<Opm::Well::ProducerCMode> prod_cmode({{"PROD01", Opm::Well::ProducerCMode::GRUP}});
// gwi.update_group(status, inj_cmode, prod_cmode);
// }
// BOOST_CHECK(!gwi.in_producing_group("INJE01"));
// BOOST_CHECK(gwi.in_producing_group("PROD01"));
//
// {
// Opm::WellContainer<Opm::Well::ProducerCMode> prod_cmode(
// {{"PROD01", Opm::Well::ProducerCMode::CMODE_UNDEFINED}});
// gwi.update_group(status, inj_cmode, prod_cmode);
// }
//
// {
// Opm::WellContainer<Opm::Well::ProducerCMode> prod_cmode({{"PROD01", Opm::Well::ProducerCMode::GRUP}});
// gwi.update_group(status, inj_cmode, prod_cmode);
// }
// BOOST_CHECK(!gwi.in_producing_group("INJE01"));
// BOOST_CHECK(gwi.in_producing_group("PROD01"));
//
// {
// Opm::WellContainer<Opm::Well::ProducerCMode> prod_cmode({{"PROD01", Opm::Well::ProducerCMode::NONE}});
// gwi.update_group(status, inj_cmode, prod_cmode);
// }
// BOOST_CHECK(!gwi.in_producing_group("INJE01"));
// BOOST_CHECK(!gwi.in_producing_group("PROD01"));
//}
BOOST_AUTO_TEST_CASE(TESTWellContainer) {
Opm::WellContainer<int> wc;