Make mutable accessors in TimeMap private

This commit is contained in:
Joakim Hove
2020-01-22 16:11:39 +01:00
parent 2d8151808f
commit 63e99fb807
6 changed files with 61 additions and 120 deletions

View File

@@ -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<std::time_t>& time_points);
TimeMap(const std::vector<std::time_t>& timeList,
const std::vector<StepData>& firstStepMonths,
const std::vector<StepData>& 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<size_t> & 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<StepData> m_first_timestep_years; // A list of the first timestep of every year
std::vector<StepData> m_first_timestep_months; // A list of the first timestep of every month

View File

@@ -30,6 +30,16 @@
#include <opm/parser/eclipse/EclipseState/Schedule/DynamicState.hpp>
Opm::TimeMap make_timemap(int num) {
std::vector<std::time_t> 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<int> 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<int> 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<int> 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<int> 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<int> state(timeMap , 137);
Opm::DynamicState<int> 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<int> 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<int> 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<int> 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<int> 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<int> 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<int> 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<int> state(timeMap , 13);
auto unique0 = state.unique();
BOOST_CHECK_EQUAL(unique0.size(), 1);

View File

@@ -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<std::time_t> 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<int> 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<std::time_t> 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<int> state( timeMap , 137 );
BOOST_CHECK_EQUAL( 137 , state.iget(0) );
BOOST_CHECK_EQUAL( 137 , state.iget(1) );
BOOST_CHECK_EQUAL( 137 , state.iget(2) );

View File

@@ -27,16 +27,19 @@
#include <opm/parser/eclipse/EclipseState/Schedule/TimeMap.hpp>
#include <opm/parser/eclipse/EclipseState/Schedule/Events.hpp>
#include <opm/common/utility/TimeService.hpp>
BOOST_AUTO_TEST_CASE(CreateEmpty) {
const std::time_t startDate = Opm::TimeMap::mkdate(2010, 1, 1);
Opm::TimeMap timeMap{ startDate };
Opm::DynamicVector<double> vector(timeMap , 9.99);
std::vector<std::time_t> 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<double> 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<double> vector(timeMap , 9.99);
Opm::Events events( timeMap );

View File

@@ -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<time_t>(24 * 60 * 60));
tm.addTStep(static_cast<time_t>(24 * 60 * 60));
tm.addTStep(static_cast<time_t>(24 * 60 * 60));
tm.addTStep(static_cast<time_t>(24 * 60 * 60));
tm.addTStep(static_cast<time_t>(24 * 60 * 60));
std::vector<std::time_t> 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);

View File

@@ -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<time_t>(-1)) , std::invalid_argument);
std::vector<std::time_t> 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<time_t>(1 * 60 * 60));
timeMap.addTStep(static_cast<time_t>(23 * 60 * 60));
std::vector<std::time_t> 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 =