Move injection control enum to Well2 class
This commit is contained in:
@@ -1455,13 +1455,13 @@ BOOST_AUTO_TEST_CASE(changeBhpLimitInHistoryModeWithWeltarg) {
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 1).getInjectionProperties().BHPLimit.get<double>(), 600 * 1e5); // 1
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 2).getInjectionProperties().BHPLimit.get<double>(), 600 * 1e5); // 2
|
||||
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 2).getInjectionProperties().hasInjectionControl(Opm::WellInjector::BHP), true);
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 2).getInjectionProperties().hasInjectionControl(Opm::Well2::InjectorCMode::BHP), true);
|
||||
|
||||
// The well is producer for timestep 3 and the injection properties BHPLimit should be set to zero.
|
||||
BOOST_CHECK(sched.getWell2("I", 3).isProducer());
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 3).getInjectionProperties().BHPLimit.get<double>(), 0); // 3
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 3).getProductionProperties().hasProductionControl(Opm::WellProducer::BHP), true );
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 4).getInjectionProperties().hasInjectionControl(Opm::WellInjector::BHP), true );
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 4).getInjectionProperties().hasInjectionControl(Opm::Well2::InjectorCMode::BHP), true );
|
||||
BOOST_CHECK_EQUAL(sched.getWell2("I", 4).getInjectionProperties().BHPLimit.get<double>(), 6891.2 * 1e5); // 4
|
||||
}
|
||||
|
||||
@@ -2551,37 +2551,37 @@ BOOST_AUTO_TEST_CASE(TestInjectorEnumLoop) {
|
||||
/*****************************************************************/
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectorCOntrolMopdeEnum2String) {
|
||||
BOOST_CHECK_EQUAL( "RATE" , WellInjector::ControlMode2String(WellInjector::RATE));
|
||||
BOOST_CHECK_EQUAL( "RESV" , WellInjector::ControlMode2String(WellInjector::RESV));
|
||||
BOOST_CHECK_EQUAL( "BHP" , WellInjector::ControlMode2String(WellInjector::BHP));
|
||||
BOOST_CHECK_EQUAL( "THP" , WellInjector::ControlMode2String(WellInjector::THP));
|
||||
BOOST_CHECK_EQUAL( "GRUP" , WellInjector::ControlMode2String(WellInjector::GRUP));
|
||||
BOOST_CHECK_EQUAL( "RATE" , Well2::InjectorCMode2String(Well2::InjectorCMode::RATE));
|
||||
BOOST_CHECK_EQUAL( "RESV" , Well2::InjectorCMode2String(Well2::InjectorCMode::RESV));
|
||||
BOOST_CHECK_EQUAL( "BHP" , Well2::InjectorCMode2String(Well2::InjectorCMode::BHP));
|
||||
BOOST_CHECK_EQUAL( "THP" , Well2::InjectorCMode2String(Well2::InjectorCMode::THP));
|
||||
BOOST_CHECK_EQUAL( "GRUP" , Well2::InjectorCMode2String(Well2::InjectorCMode::GRUP));
|
||||
}
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectorControlModeEnumFromString) {
|
||||
BOOST_CHECK_THROW( WellInjector::ControlModeFromString("XXX") , std::invalid_argument );
|
||||
BOOST_CHECK_EQUAL( WellInjector::RATE , WellInjector::ControlModeFromString("RATE"));
|
||||
BOOST_CHECK_EQUAL( WellInjector::BHP , WellInjector::ControlModeFromString("BHP"));
|
||||
BOOST_CHECK_EQUAL( WellInjector::RESV , WellInjector::ControlModeFromString("RESV"));
|
||||
BOOST_CHECK_EQUAL( WellInjector::THP , WellInjector::ControlModeFromString("THP"));
|
||||
BOOST_CHECK_EQUAL( WellInjector::GRUP , WellInjector::ControlModeFromString("GRUP"));
|
||||
BOOST_CHECK_THROW( Well2::InjectorCModeFromString("XXX") , std::invalid_argument );
|
||||
BOOST_CHECK( Well2::InjectorCMode::RATE == Well2::InjectorCModeFromString("RATE"));
|
||||
BOOST_CHECK( Well2::InjectorCMode::BHP == Well2::InjectorCModeFromString("BHP"));
|
||||
BOOST_CHECK( Well2::InjectorCMode::RESV == Well2::InjectorCModeFromString("RESV"));
|
||||
BOOST_CHECK( Well2::InjectorCMode::THP == Well2::InjectorCModeFromString("THP"));
|
||||
BOOST_CHECK( Well2::InjectorCMode::GRUP == Well2::InjectorCModeFromString("GRUP"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOST_AUTO_TEST_CASE(InjectorControlModeEnumLoop) {
|
||||
BOOST_CHECK_EQUAL( WellInjector::RATE , WellInjector::ControlModeFromString( WellInjector::ControlMode2String( WellInjector::RATE ) ));
|
||||
BOOST_CHECK_EQUAL( WellInjector::BHP , WellInjector::ControlModeFromString( WellInjector::ControlMode2String( WellInjector::BHP ) ));
|
||||
BOOST_CHECK_EQUAL( WellInjector::RESV , WellInjector::ControlModeFromString( WellInjector::ControlMode2String( WellInjector::RESV ) ));
|
||||
BOOST_CHECK_EQUAL( WellInjector::THP , WellInjector::ControlModeFromString( WellInjector::ControlMode2String( WellInjector::THP ) ));
|
||||
BOOST_CHECK_EQUAL( WellInjector::GRUP , WellInjector::ControlModeFromString( WellInjector::ControlMode2String( WellInjector::GRUP ) ));
|
||||
BOOST_CHECK( Well2::InjectorCMode::RATE == Well2::InjectorCModeFromString( Well2::InjectorCMode2String( Well2::InjectorCMode::RATE ) ));
|
||||
BOOST_CHECK( Well2::InjectorCMode::BHP == Well2::InjectorCModeFromString( Well2::InjectorCMode2String( Well2::InjectorCMode::BHP ) ));
|
||||
BOOST_CHECK( Well2::InjectorCMode::RESV == Well2::InjectorCModeFromString( Well2::InjectorCMode2String( Well2::InjectorCMode::RESV ) ));
|
||||
BOOST_CHECK( Well2::InjectorCMode::THP == Well2::InjectorCModeFromString( Well2::InjectorCMode2String( Well2::InjectorCMode::THP ) ));
|
||||
BOOST_CHECK( Well2::InjectorCMode::GRUP == Well2::InjectorCModeFromString( Well2::InjectorCMode2String( Well2::InjectorCMode::GRUP ) ));
|
||||
|
||||
BOOST_CHECK_EQUAL( "THP" , WellInjector::ControlMode2String(WellInjector::ControlModeFromString( "THP" ) ));
|
||||
BOOST_CHECK_EQUAL( "RATE" , WellInjector::ControlMode2String(WellInjector::ControlModeFromString( "RATE" ) ));
|
||||
BOOST_CHECK_EQUAL( "RESV" , WellInjector::ControlMode2String(WellInjector::ControlModeFromString( "RESV" ) ));
|
||||
BOOST_CHECK_EQUAL( "BHP" , WellInjector::ControlMode2String(WellInjector::ControlModeFromString( "BHP" ) ));
|
||||
BOOST_CHECK_EQUAL( "GRUP" , WellInjector::ControlMode2String(WellInjector::ControlModeFromString( "GRUP" ) ));
|
||||
BOOST_CHECK_EQUAL( "THP" , Well2::InjectorCMode2String(Well2::InjectorCModeFromString( "THP" ) ));
|
||||
BOOST_CHECK_EQUAL( "RATE" , Well2::InjectorCMode2String(Well2::InjectorCModeFromString( "RATE" ) ));
|
||||
BOOST_CHECK_EQUAL( "RESV" , Well2::InjectorCMode2String(Well2::InjectorCModeFromString( "RESV" ) ));
|
||||
BOOST_CHECK_EQUAL( "BHP" , Well2::InjectorCMode2String(Well2::InjectorCModeFromString( "BHP" ) ));
|
||||
BOOST_CHECK_EQUAL( "GRUP" , Well2::InjectorCMode2String(Well2::InjectorCModeFromString( "GRUP" ) ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -285,7 +285,7 @@ BOOST_AUTO_TEST_CASE(XHPLimitDefault) {
|
||||
injProps->THPLimit.reset(200);
|
||||
well.updateInjection(injProps);
|
||||
BOOST_CHECK_EQUAL( 200 , well.getInjectionProperties().THPLimit.get<double>());
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::THP ));
|
||||
}
|
||||
|
||||
|
||||
@@ -356,42 +356,42 @@ BOOST_AUTO_TEST_CASE(WellHaveProductionControlLimit) {
|
||||
BOOST_AUTO_TEST_CASE(WellHaveInjectionControlLimit) {
|
||||
Opm::Well2 well("WELL1", "GROUP", 0, 1, 23, 42, 2334.32, Opm::Phase::WATER, WellProducer::CMODE_UNDEFINED, WellCompletion::DEPTH, UnitSystem::newMETRIC(), 0);
|
||||
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RESV ));
|
||||
|
||||
auto injProps1 = std::make_shared<Opm::Well2::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps1->surfaceInjectionRate.reset(100);
|
||||
injProps1->addInjectionControl(Opm::WellInjector::RATE);
|
||||
injProps1->addInjectionControl(Opm::Well2::InjectorCMode::RATE);
|
||||
well.updateInjection(injProps1);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RESV ));
|
||||
|
||||
auto injProps2 = std::make_shared<Opm::Well2::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps2->reservoirInjectionRate.reset(100);
|
||||
injProps2->addInjectionControl(Opm::WellInjector::RESV);
|
||||
injProps2->addInjectionControl(Opm::Well2::InjectorCMode::RESV);
|
||||
well.updateInjection(injProps2);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RESV ));
|
||||
|
||||
auto injProps3 = std::make_shared<Opm::Well2::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps3->BHPLimit.reset(100);
|
||||
injProps3->addInjectionControl(Opm::WellInjector::BHP);
|
||||
injProps3->addInjectionControl(Opm::Well2::InjectorCMode::BHP);
|
||||
injProps3->THPLimit.reset(100);
|
||||
injProps3->addInjectionControl(Opm::WellInjector::THP);
|
||||
injProps3->addInjectionControl(Opm::Well2::InjectorCMode::THP);
|
||||
well.updateInjection(injProps3);
|
||||
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::BHP ));
|
||||
|
||||
|
||||
auto injProps4 = std::make_shared<Opm::Well2::WellInjectionProperties>(well.getInjectionProperties());
|
||||
injProps4->dropInjectionControl( Opm::WellInjector::RESV );
|
||||
injProps4->dropInjectionControl( Opm::Well2::InjectorCMode::RESV );
|
||||
well.updateInjection(injProps4);
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::WellInjector::BHP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( !well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::RESV ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::THP ));
|
||||
BOOST_CHECK( well.getInjectionProperties().hasInjectionControl( Opm::Well2::InjectorCMode::BHP ));
|
||||
}
|
||||
/*********************************************************************/
|
||||
|
||||
@@ -751,7 +751,7 @@ BOOST_AUTO_TEST_CASE(CMODE_DEFAULT) {
|
||||
const Opm::Well2::WellInjectionProperties Iproperties("W");
|
||||
|
||||
BOOST_CHECK_EQUAL( Pproperties.controlMode , Opm::WellProducer::CMODE_UNDEFINED );
|
||||
BOOST_CHECK_EQUAL( Iproperties.controlMode , Opm::WellInjector::CMODE_UNDEFINED );
|
||||
BOOST_CHECK( Iproperties.controlMode == Opm::Well2::InjectorCMode::CMODE_UNDEFINED );
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -212,11 +212,11 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
|
||||
BOOST_CHECK_CLOSE(200000/Metric::Time , controls.reservoir_rate, 0.001);
|
||||
BOOST_CHECK_CLOSE(6895 * Metric::Pressure , controls.bhp_limit, 0.001);
|
||||
BOOST_CHECK_CLOSE(0 , controls.thp_limit , 0.001);
|
||||
BOOST_CHECK_EQUAL( WellInjector::RESV , controls.cmode);
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::RATE ));
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::RESV ));
|
||||
BOOST_CHECK( !controls.hasControl(WellInjector::THP));
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::BHP));
|
||||
BOOST_CHECK( Well2::InjectorCMode::RESV == controls.cmode);
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::RESV ));
|
||||
BOOST_CHECK( !controls.hasControl(Well2::InjectorCMode::THP));
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::BHP));
|
||||
}
|
||||
|
||||
|
||||
@@ -227,10 +227,10 @@ BOOST_AUTO_TEST_CASE(WellTesting) {
|
||||
{
|
||||
SummaryState st;
|
||||
const auto controls = sched.getWell2("W_1", 12).injectionControls(st);
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::RATE ));
|
||||
BOOST_CHECK( !controls.hasControl(WellInjector::RESV));
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::THP ));
|
||||
BOOST_CHECK( controls.hasControl(WellInjector::BHP ));
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::RATE ));
|
||||
BOOST_CHECK( !controls.hasControl(Well2::InjectorCMode::RESV));
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::THP ));
|
||||
BOOST_CHECK( controls.hasControl(Well2::InjectorCMode::BHP ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user