From 99542f6685f940914ff6ca6491921b98d168909f Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Mon, 16 Dec 2013 17:23:46 +0100 Subject: [PATCH] Added dimensions to GCONINJE / GCONPROD / WCONINJE / WCONINJH. --- .../EclipseState/Schedule/Schedule.cpp | 16 +++--- .../ScheduleCreateFromDeck.cpp | 52 ++++++++++--------- opm/parser/share/keywords/G/GCONINJE | 6 +-- opm/parser/share/keywords/G/GCONPROD | 8 +-- opm/parser/share/keywords/W/WCONINJE | 8 +-- opm/parser/share/keywords/W/WCONINJH | 6 +-- 6 files changed, 49 insertions(+), 47 deletions(-) diff --git a/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp b/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp index 47fbcfe78..8913d0e21 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp @@ -173,7 +173,7 @@ namespace Opm { DeckRecordConstPtr record = keyword->getRecord(recordNr); const std::string& wellName = record->getItem("WELL")->getString(0); WellPtr well = getWell(wellName); - double injectionRate = record->getItem("SURFACE_FLOW_TARGET")->getRawDouble(0); + double injectionRate = record->getItem("SURFACE_FLOW_TARGET")->getSIDouble(0); well->setInjectionRate( currentStep , injectionRate ); well->setInPredictionMode(currentStep, true); @@ -185,7 +185,7 @@ namespace Opm { DeckRecordConstPtr record = keyword->getRecord(recordNr); const std::string& wellName = record->getItem("WELL")->getString(0); WellPtr well = getWell(wellName); - double injectionRate = record->getItem("RATE")->getRawDouble(0); + double injectionRate = record->getItem("RATE")->getSIDouble(0); well->setInjectionRate( currentStep , injectionRate ); well->setInPredictionMode(currentStep, false ); @@ -207,8 +207,8 @@ namespace Opm { GroupInjection::ControlEnum controlMode = GroupInjection::ControlEnumFromString( record->getItem("CONTROL_MODE")->getString(0) ); group->setInjectionControlMode( currentStep , controlMode ); } - group->setSurfaceMaxRate( currentStep , record->getItem("SURFACE_TARGET")->getRawDouble(0)); - group->setReservoirMaxRate( currentStep , record->getItem("RESV_TARGET")->getRawDouble(0)); + group->setSurfaceMaxRate( currentStep , record->getItem("SURFACE_TARGET")->getSIDouble(0)); + group->setReservoirMaxRate( currentStep , record->getItem("RESV_TARGET")->getSIDouble(0)); group->setTargetReinjectFraction( currentStep , record->getItem("REINJ_TARGET")->getRawDouble(0)); group->setTargetVoidReplacementFraction( currentStep , record->getItem("VOIDAGE_TARGET")->getRawDouble(0)); } @@ -224,10 +224,10 @@ namespace Opm { GroupProduction::ControlEnum controlMode = GroupProduction::ControlEnumFromString( record->getItem("CONTROL_MODE")->getString(0) ); group->setProductionControlMode( currentStep , controlMode ); } - group->setOilTargetRate( currentStep , record->getItem("OIL_TARGET")->getRawDouble(0)); - group->setGasTargetRate( currentStep , record->getItem("GAS_TARGET")->getRawDouble(0)); - group->setWaterTargetRate( currentStep , record->getItem("WATER_TARGET")->getRawDouble(0)); - group->setLiquidTargetRate( currentStep , record->getItem("LIQUID_TARGET")->getRawDouble(0)); + group->setOilTargetRate( currentStep , record->getItem("OIL_TARGET")->getSIDouble(0)); + group->setGasTargetRate( currentStep , record->getItem("GAS_TARGET")->getSIDouble(0)); + group->setWaterTargetRate( currentStep , record->getItem("WATER_TARGET")->getSIDouble(0)); + group->setLiquidTargetRate( currentStep , record->getItem("LIQUID_TARGET")->getSIDouble(0)); { GroupProductionExceedLimit::ActionEnum exceedAction = GroupProductionExceedLimit::ActionEnumFromString(record->getItem("EXCEED_PROC")->getString(0) ); group->setProductionExceedLimitAction( currentStep , exceedAction ); diff --git a/opm/parser/eclipse/IntegrationTests/ScheduleCreateFromDeck.cpp b/opm/parser/eclipse/IntegrationTests/ScheduleCreateFromDeck.cpp index eae3eef9f..68322e38f 100644 --- a/opm/parser/eclipse/IntegrationTests/ScheduleCreateFromDeck.cpp +++ b/opm/parser/eclipse/IntegrationTests/ScheduleCreateFromDeck.cpp @@ -26,10 +26,9 @@ #include #include -#include #include #include - +#include using namespace Opm; @@ -75,33 +74,36 @@ BOOST_AUTO_TEST_CASE(WellTesting) { BOOST_CHECK(well1->isInPredictionMode(0)); BOOST_CHECK_EQUAL(0, well1->getOilRate(0)); + BOOST_CHECK_EQUAL(0, well1->getOilRate(1)); BOOST_CHECK_EQUAL(0, well1->getOilRate(2)); BOOST_CHECK(!well1->isInPredictionMode(3)); - BOOST_CHECK_CLOSE(4000 / Metric::Time, well1->getOilRate(3), 0.0001); - BOOST_CHECK_CLOSE(4000 / Metric::Time, well1->getOilRate(4) , 0.0001); - BOOST_CHECK_CLOSE(12345 / Metric::Time, well1->getGasRate(3) , 0.0001); - BOOST_CHECK_CLOSE(4 / Metric::Time, well1->getWaterRate(4) , 0.0001); - BOOST_CHECK_CLOSE(12345 / Metric::Time, well1->getGasRate(4) , 0.0001); - BOOST_CHECK_CLOSE(4 / Metric::Time, well1->getWaterRate(5), 0.0001); - BOOST_CHECK_CLOSE(12345 / Metric::Time, well1->getGasRate(5) , 0.0001); + BOOST_CHECK_CLOSE(4000/Metric::Time , well1->getOilRate(3) , 0.001); + BOOST_CHECK_CLOSE(4000/Metric::Time , well1->getOilRate(4) , 0.001); + BOOST_CHECK_CLOSE(4000/Metric::Time , well1->getOilRate(5) , 0.001); + BOOST_CHECK_CLOSE(4/Metric::Time , well1->getWaterRate(3) , 0.001); + BOOST_CHECK_CLOSE(12345/Metric::Time , well1->getGasRate(3) , 0.001); + BOOST_CHECK_CLOSE(4/Metric::Time , well1->getWaterRate(4) , 0.001); + BOOST_CHECK_CLOSE(12345/Metric::Time , well1->getGasRate(4) , 0.001); + BOOST_CHECK_CLOSE(4/Metric::Time , well1->getWaterRate(5) , 0.001); + BOOST_CHECK_CLOSE(12345/Metric::Time , well1->getGasRate(5) , 0.001); + - BOOST_CHECK(!well1->isInPredictionMode(6)); - BOOST_CHECK_CLOSE(14000/Metric::Time, well1->getOilRate(6) , 0.0001); + BOOST_CHECK_CLOSE(14000/Metric::Time , well1->getOilRate(6) , 0.001); BOOST_CHECK(well1->isInPredictionMode(7)); - BOOST_CHECK_CLOSE(11000/Metric::Time, well1->getOilRate(7) , 0.0001); - BOOST_CHECK_CLOSE(44/Metric::Time , well1->getWaterRate(7) , 0.0001); - BOOST_CHECK_CLOSE(188/Metric::Time , well1->getGasRate(7) , 0.0001); + BOOST_CHECK_CLOSE(11000/Metric::Time , well1->getOilRate(7) , 0.001); + BOOST_CHECK_CLOSE(44/Metric::Time , well1->getWaterRate(7) , 0.001); + BOOST_CHECK_CLOSE(188/Metric::Time , well1->getGasRate(7) , 0.001); BOOST_CHECK(!well1->isInPredictionMode(8)); - BOOST_CHECK_CLOSE(13000/Metric::Time, well1->getOilRate(8) , 0.0001); + BOOST_CHECK_CLOSE(13000/Metric::Time , well1->getOilRate(8) , 0.001); BOOST_CHECK( well1->isInjector(9)); - BOOST_CHECK_CLOSE(20000, well1->getInjectionRate(9) , 0.0001); - BOOST_CHECK_CLOSE(5000, well1->getInjectionRate(10) , 0.0001); + BOOST_CHECK_CLOSE(20000/Metric::Time , well1->getInjectionRate(9) , 0.001); + BOOST_CHECK_CLOSE(5000/Metric::Time , well1->getInjectionRate(10) , 0.001); } } @@ -117,7 +119,7 @@ BOOST_AUTO_TEST_CASE(WellTestCOMPDAT) { BOOST_CHECK(sched->hasWell("W_3")); { WellPtr well1 = sched->getWell("W_1"); - BOOST_CHECK_CLOSE(13000/Metric::Time, well1->getOilRate(8), 0.0001); + BOOST_CHECK_CLOSE(13000/Metric::Time , well1->getOilRate(8) , 0.0001); CompletionSetConstPtr completions = well1->getCompletions(0); BOOST_CHECK_EQUAL(0U, completions->size()); @@ -263,23 +265,23 @@ BOOST_AUTO_TEST_CASE( WellTestGroups ) { GroupPtr group = sched->getGroup("INJ"); BOOST_CHECK_EQUAL( WATER , group->getInjectionPhase( 3 )); BOOST_CHECK_EQUAL( GroupInjection::VREP , group->getInjectionControlMode( 3 )); - BOOST_CHECK_EQUAL( 10 , group->getSurfaceMaxRate( 3 )); - BOOST_CHECK_EQUAL( 20 , group->getReservoirMaxRate( 3 )); + BOOST_CHECK_CLOSE( 10/Metric::Time , group->getSurfaceMaxRate( 3 ) , 0.001); + BOOST_CHECK_CLOSE( 20/Metric::Time , group->getReservoirMaxRate( 3 ) , 0.001); BOOST_CHECK_EQUAL( 0.75 , group->getTargetReinjectFraction( 3 )); BOOST_CHECK_EQUAL( 0.95 , group->getTargetVoidReplacementFraction( 3 )); BOOST_CHECK_EQUAL( OIL , group->getInjectionPhase( 6 )); BOOST_CHECK_EQUAL( GroupInjection::RATE , group->getInjectionControlMode( 6 )); - BOOST_CHECK_EQUAL( 1000 , group->getSurfaceMaxRate( 6 )); + BOOST_CHECK_CLOSE( 1000/Metric::Time , group->getSurfaceMaxRate( 6 ) , 0.0001); } { GroupPtr group = sched->getGroup("OP"); BOOST_CHECK_EQUAL( GroupProduction::ORAT , group->getProductionControlMode(3)); - BOOST_CHECK_EQUAL( 10 , group->getOilTargetRate(3)); - BOOST_CHECK_EQUAL( 20 , group->getWaterTargetRate(3)); - BOOST_CHECK_EQUAL( 30 , group->getGasTargetRate(3)); - BOOST_CHECK_EQUAL( 40 , group->getLiquidTargetRate(3)); + BOOST_CHECK_CLOSE( 10/Metric::Time , group->getOilTargetRate(3) , 0.001); + BOOST_CHECK_CLOSE( 20/Metric::Time , group->getWaterTargetRate(3) , 0.001); + BOOST_CHECK_CLOSE( 30/Metric::Time , group->getGasTargetRate(3) , 0.001); + BOOST_CHECK_CLOSE( 40/Metric::Time , group->getLiquidTargetRate(3) , 0.001); } } diff --git a/opm/parser/share/keywords/G/GCONINJE b/opm/parser/share/keywords/G/GCONINJE index 7706838f3..4a49a6965 100644 --- a/opm/parser/share/keywords/G/GCONINJE +++ b/opm/parser/share/keywords/G/GCONINJE @@ -2,8 +2,8 @@ {"name" : "GROUP" , "value_type" : "STRING" }, {"name" : "PHASE" , "value_type" : "STRING"}, {"name" : "CONTROL_MODE" , "value_type" : "STRING" , "default" : "NONE"}, - {"name" : "SURFACE_TARGET" , "value_type" : "FLOAT" , "default" : 0}, - {"name" : "RESV_TARGET" , "value_type" : "FLOAT" , "default" : 0}, + {"name" : "SURFACE_TARGET" , "value_type" : "FLOAT" , "default" : 0 , "dimension" : "V/t"}, + {"name" : "RESV_TARGET" , "value_type" : "FLOAT" , "default" : 0 , "dimension" : "V/t"}, {"name" : "REINJ_TARGET" , "value_type" : "FLOAT" , "default" : 0}, {"name" : "VOIDAGE_TARGET" , "value_type" : "FLOAT" , "default" : 0}, {"name" : "FREE" , "value_type" : "STRING" , "default" : "YES"}, @@ -11,5 +11,5 @@ {"name" : "GUIDE_DEF" , "value_type" : "STRING"}, {"name" : "REINJECT_GROUP" , "value_type" : "STRING"}, {"name" : "VOIDAGE_GROUP" , "value_type" : "STRING"}, - {"name" : "WETGAS_TARGET", "value_type" : "FLOAT"} + {"name" : "WETGAS_TARGET", "value_type" : "FLOAT" , "dimension" : "V/t"} ]} \ No newline at end of file diff --git a/opm/parser/share/keywords/G/GCONPROD b/opm/parser/share/keywords/G/GCONPROD index b3a7e981c..07552c0ba 100644 --- a/opm/parser/share/keywords/G/GCONPROD +++ b/opm/parser/share/keywords/G/GCONPROD @@ -1,10 +1,10 @@ {"name" : "GCONPROD" , "items" : [ {"name" : "GROUP" , "value_type" : "STRING" }, {"name" : "CONTROL_MODE" , "value_type" : "STRING" , "default" : "NONE"}, - {"name" : "OIL_TARGET" , "value_type" : "FLOAT" }, - {"name" : "WATER_TARGET" , "value_type" : "FLOAT"}, - {"name" : "GAS_TARGET" , "value_type" : "FLOAT"}, - {"name" : "LIQUID_TARGET" , "value_type" : "FLOAT"}, + {"name" : "OIL_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "WATER_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "GAS_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "LIQUID_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, {"name" : "EXCEED_PROC" , "value_type" : "STRING" , "default" : "NONE"}, {"name" : "RESPOND_TO_PARENT" , "value_type" : "STRING" , "default" : "YES"}, {"name" : "GUIDE_RATE" , "value_type" : "FLOAT"}, diff --git a/opm/parser/share/keywords/W/WCONINJE b/opm/parser/share/keywords/W/WCONINJE index 857d942a7..f271022e9 100644 --- a/opm/parser/share/keywords/W/WCONINJE +++ b/opm/parser/share/keywords/W/WCONINJE @@ -3,10 +3,10 @@ {"name" : "TYPE" , "value_type" : "STRING" }, {"name" : "STATUS" , "value_type" : "STRING" , "default" : "OPEN"}, {"name" : "CMODE" , "value_type" : "STRING" }, - {"name" : "SURFACE_FLOW_TARGET" , "value_type" : "FLOAT"}, - {"name" : "RESV_FLOW_TARGET" , "value_type" : "FLOAT"}, - {"name" : "BHP_TARGET" , "value_type" : "FLOAT"}, - {"name" : "THP_TARGET" , "value_type" : "FLOAT"}, + {"name" : "SURFACE_FLOW_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "RESV_FLOW_TARGET" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "BHP_TARGET" , "value_type" : "FLOAT" , "dimension" : "P"}, + {"name" : "THP_TARGET" , "value_type" : "FLOAT" , "dimension" : "P"}, {"name" : "VFP_TABLE" , "value_type" : "INT" , "default" : 0}, {"name" : "VAPOIL_C" , "value_type" : "FLOAT" , "default" : 0}, {"name" : "GAS_STEAM_RATIO" , "value_type" : "FLOAT" , "default" : 0}, diff --git a/opm/parser/share/keywords/W/WCONINJH b/opm/parser/share/keywords/W/WCONINJH index 164a128f0..d45e7dfe6 100644 --- a/opm/parser/share/keywords/W/WCONINJH +++ b/opm/parser/share/keywords/W/WCONINJH @@ -2,9 +2,9 @@ {"name" : "WELL" , "value_type" : "STRING" }, {"name" : "TYPE" , "value_type" : "STRING" }, {"name" : "STATUS" , "value_type" : "STRING" , "default" : "OPEN"}, - {"name" : "RATE" , "value_type" : "FLOAT"}, - {"name" : "BHP" , "value_type" : "FLOAT"}, - {"name" : "THP" , "value_type" : "FLOAT"}, + {"name" : "RATE" , "value_type" : "FLOAT" , "dimension" : "V/t"}, + {"name" : "BHP" , "value_type" : "FLOAT" , "dimension" : "P"}, + {"name" : "THP" , "value_type" : "FLOAT" , "dimension" : "P"}, {"name" : "VFP_TABLE" , "value_type" : "INT" , "default" : 0}, {"name" : "VAPOIL_C" , "value_type" : "FLOAT" , "default" : 0}, {"name" : "SURFACE_OIL_FRACTION" , "value_type" : "FLOAT" , "default" : 0},