diff --git a/opm/parser/eclipse/Deck/DeckDoubleItem.cpp b/opm/parser/eclipse/Deck/DeckDoubleItem.cpp index 933409507..554c45b6b 100644 --- a/opm/parser/eclipse/Deck/DeckDoubleItem.cpp +++ b/opm/parser/eclipse/Deck/DeckDoubleItem.cpp @@ -25,14 +25,14 @@ namespace Opm { - double DeckDoubleItem::getDouble(size_t index) const { + double DeckDoubleItem::getRawDouble(size_t index) const { if (index < m_data.size()) { return m_data[index]; } else throw std::out_of_range("Out of range, index must be lower than " + boost::lexical_cast(m_data.size())); } - const std::vector& DeckDoubleItem::getDoubleData() const { + const std::vector& DeckDoubleItem::getRawDoubleData() const { return m_data; } diff --git a/opm/parser/eclipse/Deck/DeckDoubleItem.hpp b/opm/parser/eclipse/Deck/DeckDoubleItem.hpp index 7b2f861ec..64edde6ae 100644 --- a/opm/parser/eclipse/Deck/DeckDoubleItem.hpp +++ b/opm/parser/eclipse/Deck/DeckDoubleItem.hpp @@ -33,8 +33,8 @@ namespace Opm { class DeckDoubleItem : public DeckItem { public: DeckDoubleItem(std::string name) : DeckItem(name) {} - double getDouble(size_t index) const; - const std::vector& getDoubleData() const; + double getRawDouble(size_t index) const; + const std::vector& getRawDoubleData() const; double getSIDouble(size_t index); const std::vector& getSIDoubleData(); diff --git a/opm/parser/eclipse/Deck/DeckItem.hpp b/opm/parser/eclipse/Deck/DeckItem.hpp index fa4c0401f..a19b306cf 100644 --- a/opm/parser/eclipse/Deck/DeckItem.hpp +++ b/opm/parser/eclipse/Deck/DeckItem.hpp @@ -40,7 +40,11 @@ namespace Opm { throw std::logic_error("This implementation of DeckItem does not support int"); }; - virtual double getDouble(size_t index) const { + virtual double getSIDouble(size_t index) const { + throw std::logic_error("This implementation of DeckItem does not support double"); + }; + + virtual double getRawDouble(size_t index) const { throw std::logic_error("This implementation of DeckItem does not support double"); }; @@ -58,7 +62,11 @@ namespace Opm { throw std::logic_error("This implementation of DeckItem does not support int"); }; - virtual const std::vector& getDoubleData() const { + virtual const std::vector& getSIDoubleData() const { + throw std::logic_error("This implementation of DeckItem does not support double"); + }; + + virtual const std::vector& getRawDoubleData() const { throw std::logic_error("This implementation of DeckItem does not support double"); }; diff --git a/opm/parser/eclipse/Deck/DeckKeyword.cpp b/opm/parser/eclipse/Deck/DeckKeyword.cpp index df91bd431..b1157a7df 100644 --- a/opm/parser/eclipse/Deck/DeckKeyword.cpp +++ b/opm/parser/eclipse/Deck/DeckKeyword.cpp @@ -88,10 +88,16 @@ namespace Opm { } - const std::vector& DeckKeyword::getDoubleData() const { + const std::vector& DeckKeyword::getRawDoubleData() const { DeckRecordConstPtr record = getDataRecord(); DeckItemConstPtr item = record->getDataItem(); - return item->getDoubleData(); + return item->getRawDoubleData(); + } + + const std::vector& DeckKeyword::getSIDoubleData() const { + DeckRecordConstPtr record = getDataRecord(); + DeckItemConstPtr item = record->getDataItem(); + return item->getSIDoubleData(); } } diff --git a/opm/parser/eclipse/Deck/DeckKeyword.hpp b/opm/parser/eclipse/Deck/DeckKeyword.hpp index 75e2baff6..6613c06bf 100644 --- a/opm/parser/eclipse/Deck/DeckKeyword.hpp +++ b/opm/parser/eclipse/Deck/DeckKeyword.hpp @@ -32,7 +32,8 @@ namespace Opm { void setDeckIndex(size_t deckIndex); const std::vector& getIntData() const; - const std::vector& getDoubleData() const; + const std::vector& getRawDoubleData() const; + const std::vector& getSIDoubleData() const; const std::vector& getStringData() const; private: diff --git a/opm/parser/eclipse/Deck/tests/DeckDoubleItemTests.cpp b/opm/parser/eclipse/Deck/tests/DeckDoubleItemTests.cpp index 8702c6f28..d63621ada 100644 --- a/opm/parser/eclipse/Deck/tests/DeckDoubleItemTests.cpp +++ b/opm/parser/eclipse/Deck/tests/DeckDoubleItemTests.cpp @@ -36,7 +36,7 @@ BOOST_AUTO_TEST_CASE(InitializeDouble) { BOOST_AUTO_TEST_CASE(GetDoubleAtIndex_NoData_ExceptionThrown) { const DeckDoubleItem deckDoubleItem("TEST"); - BOOST_CHECK_THROW(deckDoubleItem.getDouble(0), std::out_of_range); + BOOST_CHECK_THROW(deckDoubleItem.getRawDouble(0), std::out_of_range); } @@ -47,8 +47,8 @@ BOOST_AUTO_TEST_CASE(PushBackDouble_VectorPushed_ElementsCorrect) { pushThese.push_back(13); pushThese.push_back(33); deckDoubleItem.push_back(pushThese); - BOOST_CHECK_EQUAL(13, deckDoubleItem.getDouble(0)); - BOOST_CHECK_EQUAL(33, deckDoubleItem.getDouble(1)); + BOOST_CHECK_EQUAL(13, deckDoubleItem.getRawDouble(0)); + BOOST_CHECK_EQUAL(33, deckDoubleItem.getRawDouble(1)); } @@ -59,8 +59,8 @@ BOOST_AUTO_TEST_CASE(PushBackDouble_subVectorPushed_ElementsCorrect) { pushThese.push_back(33); pushThese.push_back(47); deckDoubleItem.push_back(pushThese , 2); - BOOST_CHECK_EQUAL(13 , deckDoubleItem.getDouble(0)); - BOOST_CHECK_EQUAL(33 , deckDoubleItem.getDouble(1)); + BOOST_CHECK_EQUAL(13 , deckDoubleItem.getRawDouble(0)); + BOOST_CHECK_EQUAL(33 , deckDoubleItem.getRawDouble(1)); BOOST_CHECK_EQUAL( 2U , deckDoubleItem.size()); } @@ -94,7 +94,7 @@ BOOST_AUTO_TEST_CASE(PushBackMultiple) { item.push_backMultiple(10.22 , 100 ); BOOST_CHECK_EQUAL( 100U , item.size() ); for (size_t i=0; i < 100; i++) - BOOST_CHECK_EQUAL(10.22 , item.getDouble(i)); + BOOST_CHECK_EQUAL(10.22 , item.getRawDouble(i)); } @@ -126,7 +126,7 @@ BOOST_AUTO_TEST_CASE(GetSISingleDimensionCorrect) { item.push_backMultiple(1 , 100 ); item.push_backDimensions( dim , dim ); - BOOST_CHECK_EQUAL( 1 , item.getDouble(0) ); + BOOST_CHECK_EQUAL( 1 , item.getRawDouble(0) ); BOOST_CHECK_EQUAL( 100 , item.getSIDouble(0) ); } @@ -139,7 +139,7 @@ BOOST_AUTO_TEST_CASE(GetSISingleDefault) { item.push_backDefault(1 ); item.push_backDimensions( dim , defaultDim ); - BOOST_CHECK_EQUAL( 1 , item.getDouble(0) ); + BOOST_CHECK_EQUAL( 1 , item.getRawDouble(0) ); BOOST_CHECK_EQUAL( 100 , item.getSIDouble(0) ); } diff --git a/opm/parser/eclipse/EclipseState/Schedule/Completion.cpp b/opm/parser/eclipse/EclipseState/Schedule/Completion.cpp index 64dddbd10..11bcfbf31 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/Completion.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/Completion.cpp @@ -61,7 +61,7 @@ namespace Opm { if (CFItem->defaultApplied()) throw std::invalid_argument("The connection factor item can not be defaulted"); } - double CF = compdatRecord->getItem("CF")->getDouble(0); + double CF = compdatRecord->getItem("CF")->getRawDouble(0); for (int k = K1; k <= K2; k++) { CompletionConstPtr completion(new Completion(I , J , k , state , CF )); diff --git a/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp b/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp index 6cd463691..96560a8b0 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/Schedule.cpp @@ -149,9 +149,9 @@ namespace Opm { DeckRecordConstPtr record = keyword->getRecord(recordNr); const std::string& wellName = record->getItem("WELL")->getString(0); WellPtr well = getWell(wellName); - double orat = record->getItem("ORAT")->getDouble(0); - double wrat = record->getItem("WRAT")->getDouble(0); - double grat = record->getItem("GRAT")->getDouble(0); + double orat = record->getItem("ORAT")->getRawDouble(0); + double wrat = record->getItem("WRAT")->getRawDouble(0); + double grat = record->getItem("GRAT")->getRawDouble(0); well->setOilRate(currentStep, orat); well->setWaterRate(currentStep, wrat); @@ -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")->getDouble(0); + double injectionRate = record->getItem("SURFACE_FLOW_TARGET")->getRawDouble(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")->getDouble(0); + double injectionRate = record->getItem("RATE")->getRawDouble(0); well->setInjectionRate( currentStep , injectionRate ); well->setInPredictionMode(currentStep, false ); @@ -207,10 +207,10 @@ namespace Opm { GroupInjection::ControlEnum controlMode = GroupInjection::ControlEnumFromString( record->getItem("CONTROL_MODE")->getString(0) ); group->setInjectionControlMode( currentStep , controlMode ); } - group->setSurfaceMaxRate( currentStep , record->getItem("SURFACE_TARGET")->getDouble(0)); - group->setReservoirMaxRate( currentStep , record->getItem("RESV_TARGET")->getDouble(0)); - group->setTargetReinjectFraction( currentStep , record->getItem("REINJ_TARGET")->getDouble(0)); - group->setTargetVoidReplacementFraction( currentStep , record->getItem("VOIDAGE_TARGET")->getDouble(0)); + group->setSurfaceMaxRate( currentStep , record->getItem("SURFACE_TARGET")->getRawDouble(0)); + group->setReservoirMaxRate( currentStep , record->getItem("RESV_TARGET")->getRawDouble(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")->getDouble(0)); - group->setGasTargetRate( currentStep , record->getItem("GAS_TARGET")->getDouble(0)); - group->setWaterTargetRate( currentStep , record->getItem("WATER_TARGET")->getDouble(0)); - group->setLiquidTargetRate( currentStep , record->getItem("LIQUID_TARGET")->getDouble(0)); + 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)); { GroupProductionExceedLimit::ActionEnum exceedAction = GroupProductionExceedLimit::ActionEnumFromString(record->getItem("EXCEED_PROC")->getString(0) ); group->setProductionExceedLimitAction( currentStep , exceedAction ); diff --git a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp index ce73b13c0..a44e818ec 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp @@ -136,7 +136,7 @@ namespace Opm { DeckItemConstPtr item = record->getItem( 0 ); for (size_t itemIndex = 0; itemIndex < item->size(); itemIndex++) { - double days = item->getDouble( itemIndex ); + double days = item->getRawDouble( itemIndex ); boost::posix_time::time_duration step = boost::posix_time::seconds( static_cast(days * 24 * 3600) ); addTStep( step ); } diff --git a/opm/parser/eclipse/IntegrationTests/ParseEQUIL.cpp b/opm/parser/eclipse/IntegrationTests/ParseEQUIL.cpp index 34651ffd2..5f821c5da 100644 --- a/opm/parser/eclipse/IntegrationTests/ParseEQUIL.cpp +++ b/opm/parser/eclipse/IntegrationTests/ParseEQUIL.cpp @@ -60,12 +60,12 @@ BOOST_AUTO_TEST_CASE( parse_EQUIL_OK ) { DeckItemConstPtr item1_index = rec1->getItem(2); BOOST_CHECK_EQUAL( item1 , item1_index ); - BOOST_CHECK( fabs(item1->getDouble(0) - 1705) < 0.001); + BOOST_CHECK( fabs(item1->getRawDouble(0) - 1705) < 0.001); DeckItemConstPtr item3 = rec3->getItem("OWC"); DeckItemConstPtr item3_index = rec3->getItem(2); BOOST_CHECK_EQUAL( item3 , item3_index ); - BOOST_CHECK( fabs(item3->getDouble(0) - 3000) < 0.001); + BOOST_CHECK( fabs(item3->getRawDouble(0) - 3000) < 0.001); } diff --git a/opm/parser/eclipse/IntegrationTests/ParsePORO.cpp b/opm/parser/eclipse/IntegrationTests/ParsePORO.cpp index 21ca00b6f..3b7504c18 100644 --- a/opm/parser/eclipse/IntegrationTests/ParsePORO.cpp +++ b/opm/parser/eclipse/IntegrationTests/ParsePORO.cpp @@ -44,7 +44,7 @@ BOOST_AUTO_TEST_CASE(AddDataKeywordFromJson_correctlyConfigured) { BOOST_CHECK_THROW( kw1->getStringData() , std::logic_error ); { - const std::vector& poro = kw1->getDoubleData(); + const std::vector& poro = kw1->getRawDoubleData(); BOOST_CHECK_EQUAL( 440U , poro.size() ); BOOST_CHECK_EQUAL( 0.233782813 , poro[0]); BOOST_CHECK_EQUAL( 0.251224369 , poro[1]); diff --git a/opm/parser/eclipse/IntegrationTests/ParseRSVD.cpp b/opm/parser/eclipse/IntegrationTests/ParseRSVD.cpp index 8554c205e..aa24519e2 100644 --- a/opm/parser/eclipse/IntegrationTests/ParseRSVD.cpp +++ b/opm/parser/eclipse/IntegrationTests/ParseRSVD.cpp @@ -47,9 +47,9 @@ BOOST_AUTO_TEST_CASE( parse_EQUIL_OK ) { DeckRecordConstPtr rec3 = kw1->getRecord(2); DeckItemConstPtr item1 = rec1->getItem("table"); - BOOST_CHECK( fabs(item1->getDouble(0) - 2382) < 0.001); + BOOST_CHECK( fabs(item1->getRawDouble(0) - 2382) < 0.001); DeckItemConstPtr item3 = rec3->getItem("table"); - BOOST_CHECK( fabs(item3->getDouble(7) - 106.77) < 0.001); + BOOST_CHECK( fabs(item3->getRawDouble(7) - 106.77) < 0.001); }