Add code to internalize GPMAINT keyword in Group objects

This commit is contained in:
Joakim Hove
2020-05-26 13:29:01 +02:00
parent 9396d44379
commit 6090470045
9 changed files with 287 additions and 2 deletions

View File

@@ -537,3 +537,62 @@ BOOST_AUTO_TEST_CASE(GCONINJE_GCONPROD) {
BOOST_CHECK( g2.injectionGroupControlAvailable(Phase::GAS));
}
}
BOOST_AUTO_TEST_CASE(GPMAINT) {
const auto input = R"(
SCHEDULE
GRUPTREE
'PROD' 'FIELD' /
'M5S' 'PLAT-A' /
'M5N' 'PLAT-A' /
'C1' 'M5N' /
'F1' 'M5N' /
'B1' 'M5S' /
'G1' 'M5S' /
/
GPMAINT
'PROD' 'WINJ' 2 1* 100 0.25 1.0 /
'C1' 'GINJ' 0 1* 100 0.25 1.0 /
/
TSTEP
10 /
GPMAINT
'PROD' 'NONE' /
/
)";
Opm::UnitSystem unitSystem = UnitSystem( UnitSystem::UnitType::UNIT_TYPE_METRIC );
double siFactorG = unitSystem.parse("GasSurfaceVolume/Time").getSIScaling();
const auto sched = create_schedule(input);
{
const auto& prod_group = sched.getGroup("PROD", 0);
const auto& plat_group = sched.getGroup("PLAT-A", 0);
const auto& c1_group = sched.getGroup("C1", 0);
const auto& gpm_prod = prod_group.gpmaint();
BOOST_CHECK( gpm_prod );
BOOST_CHECK(gpm_prod->flow_target() == GPMaint::FlowTarget::RESV_WINJ);
auto [name, number] = *gpm_prod->region();
BOOST_CHECK_EQUAL(number, 2);
BOOST_CHECK_EQUAL(name, "FIPNUM");
const auto& gpm_c1 = c1_group.gpmaint();
BOOST_CHECK(!gpm_c1->region());
const auto& plat_prod = plat_group.gpmaint();
BOOST_CHECK( !plat_prod );
}
{
const auto& prod_group = sched.getGroup("PROD", 1);
const auto& gpm_prod = prod_group.gpmaint();
BOOST_CHECK( !gpm_prod );
}
}