diff --git a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp index 607948963..15f930cc6 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp +++ b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp @@ -51,16 +51,12 @@ namespace Opm { TimeMap() = default; explicit TimeMap(std::time_t startTime); - explicit TimeMap( const Deck& deck); + explicit TimeMap(const Deck& deck); explicit TimeMap(const std::vector& time_points); TimeMap(const std::vector& timeList, const std::vector& firstStepMonths, const std::vector& firstStepYears); - void addTime(std::time_t newTime); - void addTStep(int64_t step); - void addFromDATESKeyword( const DeckKeyword& DATESKeyword ); - void addFromTSTEPKeyword( const DeckKeyword& TSTEPKeyword ); size_t size() const; size_t last() const; size_t numTimesteps() const; @@ -99,6 +95,10 @@ namespace Opm { bool isTimestepInFreqSequence (size_t timestep, size_t start_timestep, size_t frequency, bool years) const; size_t closest(const std::vector & vec, size_t value) const; + void addTStep(int64_t step); + void addTime(std::time_t newTime); + void addFromDATESKeyword( const DeckKeyword& DATESKeyword ); + void addFromTSTEPKeyword( const DeckKeyword& TSTEPKeyword ); std::vector m_first_timestep_years; // A list of the first timestep of every year std::vector m_first_timestep_months; // A list of the first timestep of every month diff --git a/tests/parser/DynamicStateTests.cpp b/tests/parser/DynamicStateTests.cpp index 13bb0ffef..56bfd026e 100644 --- a/tests/parser/DynamicStateTests.cpp +++ b/tests/parser/DynamicStateTests.cpp @@ -30,6 +30,16 @@ #include +Opm::TimeMap make_timemap(int num) { + std::vector tp; + for (int i = 0; i < num; i++) + tp.push_back( Opm::asTimeT(Opm::TimeStampUTC({2010,1,i+1}))); + + Opm::TimeMap timeMap{ tp }; + return timeMap; +} + + BOOST_AUTO_TEST_CASE(CreateDynamicTest) { const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); @@ -56,11 +66,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateGetDefault) { BOOST_AUTO_TEST_CASE(DynamicStateSetOutOfRangeThrows) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 2; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(3); Opm::DynamicState state(timeMap , 137); BOOST_CHECK_THROW( state.update(3 , 100) , std::out_of_range ); @@ -68,11 +74,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateSetOutOfRangeThrows) { BOOST_AUTO_TEST_CASE(DynamicStateSetOK) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); state.update(2 , 23 ); @@ -97,11 +99,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateSetOK) { } BOOST_AUTO_TEST_CASE(DynamicStateAddAt) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 0); state.update( 10 , 77 ); @@ -115,10 +113,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateAddAt) { } BOOST_AUTO_TEST_CASE(DynamicStateOperatorSubscript) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); state.update( 10 , 200 ); @@ -129,15 +124,10 @@ BOOST_AUTO_TEST_CASE(DynamicStateOperatorSubscript) { BOOST_AUTO_TEST_CASE(DynamicStateInitial) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); Opm::DynamicState state2(timeMap , 137); - state.update( 10 , 200 ); BOOST_CHECK_EQUAL( state[9] , 137 ); BOOST_CHECK_EQUAL( state[0] , 137 ); @@ -165,11 +155,7 @@ BOOST_AUTO_TEST_CASE(DynamicStateInitial) { } BOOST_AUTO_TEST_CASE( ResetGlobal ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); state.update(5 , 100); @@ -193,11 +179,7 @@ BOOST_AUTO_TEST_CASE( ResetGlobal ) { BOOST_AUTO_TEST_CASE( CheckReturn ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); BOOST_CHECK_EQUAL( false , state.update( 0 , 137 )); @@ -207,11 +189,7 @@ BOOST_AUTO_TEST_CASE( CheckReturn ) { BOOST_AUTO_TEST_CASE( UpdateEmptyInitial ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 137); BOOST_CHECK_EQUAL( state[5] , 137 ); @@ -221,11 +199,7 @@ BOOST_AUTO_TEST_CASE( UpdateEmptyInitial ) { BOOST_AUTO_TEST_CASE( find ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 5; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(6); Opm::DynamicState state(timeMap , 137); BOOST_CHECK_EQUAL( state.find( 137 ) , 0 ); @@ -254,11 +228,7 @@ BOOST_AUTO_TEST_CASE( find ) { BOOST_AUTO_TEST_CASE( update_elm ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 5; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(6); Opm::DynamicState state(timeMap , 137); state.update( 5, 88 ); BOOST_CHECK_THROW( state.update_elm(10,88) , std::out_of_range ); @@ -280,11 +250,7 @@ BOOST_AUTO_TEST_CASE( update_elm ) { } BOOST_AUTO_TEST_CASE( update_equal ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 0); state.update( 5, 100 ); BOOST_REQUIRE_THROW(state.update_equal(100, 100), std::out_of_range); @@ -315,11 +281,7 @@ BOOST_AUTO_TEST_CASE( update_equal ) { BOOST_AUTO_TEST_CASE( UNIQUE ) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 10; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); - + Opm::TimeMap timeMap = make_timemap(11); Opm::DynamicState state(timeMap , 13); auto unique0 = state.unique(); BOOST_CHECK_EQUAL(unique0.size(), 1); diff --git a/tests/parser/DynamicVectorTests.cpp b/tests/parser/DynamicVectorTests.cpp index 122a82398..e13b27f89 100644 --- a/tests/parser/DynamicVectorTests.cpp +++ b/tests/parser/DynamicVectorTests.cpp @@ -42,10 +42,11 @@ BOOST_AUTO_TEST_CASE(CreateDynamicTest) { BOOST_AUTO_TEST_CASE(DynamicVectorSet) { const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 4; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); + std::vector tp = { startDate }; + for (int i = 0; i < 4; i++) + tp.push_back( Opm::asTimeT(Opm::TimeStampUTC({2010,1,i+2}))); + Opm::TimeMap timeMap{ tp }; Opm::DynamicVector state(timeMap , 137); BOOST_CHECK_EQUAL( 137 , state[0] ); BOOST_CHECK_EQUAL( 137 , state[1] ); @@ -67,11 +68,13 @@ BOOST_AUTO_TEST_CASE(DynamicVectorSet) { BOOST_AUTO_TEST_CASE(DynamicVectorPtr) { const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - for (size_t i = 0; i < 4; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); + std::vector tp = { startDate }; + for (int i = 0; i < 4; i++) + tp.push_back( Opm::asTimeT(Opm::TimeStampUTC({2010,1,i+2}))); + Opm::TimeMap timeMap{ tp }; Opm::DynamicVector state( timeMap , 137 ); + BOOST_CHECK_EQUAL( 137 , state.iget(0) ); BOOST_CHECK_EQUAL( 137 , state.iget(1) ); BOOST_CHECK_EQUAL( 137 , state.iget(2) ); diff --git a/tests/parser/EventTests.cpp b/tests/parser/EventTests.cpp index 0bed043f4..5b37bbb94 100644 --- a/tests/parser/EventTests.cpp +++ b/tests/parser/EventTests.cpp @@ -27,16 +27,19 @@ #include #include +#include + + BOOST_AUTO_TEST_CASE(CreateEmpty) { - const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; - Opm::DynamicVector vector(timeMap , 9.99); + std::vector tp = { Opm::asTimeT(Opm::TimeStampUTC({2010,1,1})) }; - for (size_t i = 0; i < 11; i++) - timeMap.addTStep((i+1) * 24 * 60 * 60); + for (int i = 0; i < 11; i++) + tp.push_back( Opm::asTimeT(Opm::TimeStampUTC({2010,1,i+2}))); + Opm::TimeMap timeMap(tp); Opm::Events events( timeMap ); + Opm::DynamicVector vector(timeMap , 9.99); BOOST_CHECK_EQUAL( false , events.hasEvent(Opm::ScheduleEvents::NEW_WELL , 10)); @@ -65,7 +68,7 @@ BOOST_AUTO_TEST_CASE(CreateEmpty) { BOOST_AUTO_TEST_CASE(TestMultiple) { const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1); - Opm::TimeMap timeMap{ startDate }; + Opm::TimeMap timeMap( { startDate } ); Opm::DynamicVector vector(timeMap , 9.99); Opm::Events events( timeMap ); diff --git a/tests/parser/ScheduleTests.cpp b/tests/parser/ScheduleTests.cpp index 81b0f5fcd..f3e326c50 100644 --- a/tests/parser/ScheduleTests.cpp +++ b/tests/parser/ScheduleTests.cpp @@ -3393,13 +3393,16 @@ BOOST_AUTO_TEST_CASE(WellNames) { BOOST_AUTO_TEST_CASE(RFT_CONFIG) { - TimeMap tm(Opm::TimeMap::mkdate(2010, 1,1)); - tm.addTStep(static_cast(24 * 60 * 60)); - tm.addTStep(static_cast(24 * 60 * 60)); - tm.addTStep(static_cast(24 * 60 * 60)); - tm.addTStep(static_cast(24 * 60 * 60)); - tm.addTStep(static_cast(24 * 60 * 60)); + std::vector tp = { asTimeT( TimeStampUTC({2010, 1, 1})), + asTimeT( TimeStampUTC({2010, 1, 2})), + asTimeT( TimeStampUTC({2010, 1, 3})), + asTimeT( TimeStampUTC({2010, 1, 4})), + asTimeT( TimeStampUTC({2010, 1, 5})), + asTimeT( TimeStampUTC({2010, 1, 6}))}; + + + TimeMap tm(tp); RFTConfig conf(tm); BOOST_CHECK_THROW( conf.rft("W1", 100), std::invalid_argument); BOOST_CHECK_THROW( conf.plt("W1", 100), std::invalid_argument); diff --git a/tests/parser/TimeMapTest.cpp b/tests/parser/TimeMapTest.cpp index 917fec341..8519805b3 100644 --- a/tests/parser/TimeMapTest.cpp +++ b/tests/parser/TimeMapTest.cpp @@ -47,44 +47,29 @@ BOOST_AUTO_TEST_CASE(CreateTimeMapFromTimeT) { } -BOOST_AUTO_TEST_CASE(AddDateBeforeThrows) { - Opm::TimeMap timeMap(startDateJan1st2010); - const std::time_t dateBefore = Opm::TimeMap::mkdate(2009, 2, 1); - BOOST_CHECK_THROW(timeMap.addTime(dateBefore), std::invalid_argument); -} - - BOOST_AUTO_TEST_CASE(GetStartDate) { Opm::TimeMap timeMap(startDateJan1st2010); BOOST_CHECK_EQUAL( Opm::TimeMap::mkdate(2010, 1, 1) , timeMap.getStartTime(/*timeStepIdx=*/0)); } -BOOST_AUTO_TEST_CASE(AddDateAfterSizeCorrect) { - Opm::TimeMap timeMap(startDateJan1st2010); - const std::time_t dateAfter = Opm::TimeMap::mkdate(2010, 2, 1); - timeMap.addTime(dateAfter); - BOOST_CHECK_EQUAL( 2U , timeMap.size()); -} - BOOST_AUTO_TEST_CASE(AddDateNegativeStepThrows) { - const std::time_t startDate = time(NULL); - Opm::TimeMap timeMap(startDate); - BOOST_CHECK_THROW(timeMap.addTStep(static_cast(-1)) , std::invalid_argument); + std::vector time_points = { Opm::asTimeT(Opm::TimeStampUTC({2000,1,1})), Opm::asTimeT(Opm::TimeStampUTC({1999,1,1}))}; + BOOST_CHECK_THROW(Opm::TimeMap timeMap(time_points), std::invalid_argument); } BOOST_AUTO_TEST_CASE(AddStepSizeCorrect) { - Opm::TimeMap timeMap{startDateJan1st2010}; - - timeMap.addTStep(static_cast(1 * 60 * 60)); - timeMap.addTStep(static_cast(23 * 60 * 60)); + std::vector time_points = { Opm::asTimeT(Opm::TimeStampUTC({2010,1,1})), + Opm::asTimeT(Opm::TimeStampUTC({2010,1,2})), + Opm::asTimeT(Opm::TimeStampUTC({2010,1,3}))}; + Opm::TimeMap timeMap(time_points); BOOST_CHECK_EQUAL(3U, timeMap.size()); BOOST_CHECK_THROW(timeMap[3] , std::invalid_argument ); BOOST_CHECK_EQUAL(timeMap[0] , Opm::TimeMap::mkdate(2010, 1, 1 )); - BOOST_CHECK_EQUAL(timeMap[2] , Opm::TimeMap::mkdate(2010, 1, 2 )); + BOOST_CHECK_EQUAL(timeMap[2] , Opm::TimeMap::mkdate(2010, 1, 3 )); } @@ -181,21 +166,6 @@ BOOST_AUTO_TEST_CASE( timeFromEclipseInputRecord ) { -BOOST_AUTO_TEST_CASE( addDATESFromWrongKeywordThrows ) { - Opm::Parser parser; - Opm::TimeMap timeMap(startDateJan1st2010); - Opm::DeckKeyword deckKeyword( parser.getKeyword("GRID") ); - BOOST_CHECK_THROW( timeMap.addFromDATESKeyword( deckKeyword ) , std::invalid_argument ); -} - - - -BOOST_AUTO_TEST_CASE( addTSTEPFromWrongKeywordThrows ) { - Opm::Parser parser; - Opm::TimeMap timeMap(startDateJan1st2010); - Opm::DeckKeyword deckKeyword(parser.getKeyword("GRID")); - BOOST_CHECK_THROW( timeMap.addFromTSTEPKeyword( deckKeyword ) , std::invalid_argument ); -} BOOST_AUTO_TEST_CASE(TimeStepsCorrect) { const char *deckData =