From 6b70634f94a040cdef06d3f28a6bc9a9d66a9cfb Mon Sep 17 00:00:00 2001 From: Andreas Lauser Date: Wed, 19 Feb 2014 14:49:34 +0100 Subject: [PATCH] fix the "DATES" keyword The time of the day field was missing. The defaults for it are those of E100. --- opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp | 6 ++++-- .../eclipse/EclipseState/Schedule/tests/TimeMapTest.cpp | 4 ++++ opm/parser/share/keywords/D/DATES | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp index a44e818ec..b9d8e2e46 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/TimeMap.cpp @@ -94,13 +94,15 @@ namespace Opm { boost::gregorian::date TimeMap::dateFromEclipse(DeckRecordConstPtr dateRecord) { - static const std::string errorMsg("The datarecord must consists of three values: \"DAY(int) MONTH(string) YEAR(int)\".\n"); - if (dateRecord->size() != 3) + static const std::string errorMsg("The datarecord must consist of the three values " + "\"DAY(int) MONTH(string) YEAR(int)\" plus the optional value \"TIME(string)\".\n"); + if (dateRecord->size() < 3 || dateRecord->size() > 4) throw std::invalid_argument( errorMsg); DeckItemConstPtr dayItem = dateRecord->getItem( 0 ); DeckItemConstPtr monthItem = dateRecord->getItem( 1 ); DeckItemConstPtr yearItem = dateRecord->getItem( 2 ); + //DeckItemConstPtr timeItem = dateRecord->getItem( 3 ); try { int day = dayItem->getInt(0); diff --git a/opm/parser/eclipse/EclipseState/Schedule/tests/TimeMapTest.cpp b/opm/parser/eclipse/EclipseState/Schedule/tests/TimeMapTest.cpp index 90911f6c0..96fbc1af5 100644 --- a/opm/parser/eclipse/EclipseState/Schedule/tests/TimeMapTest.cpp +++ b/opm/parser/eclipse/EclipseState/Schedule/tests/TimeMapTest.cpp @@ -98,6 +98,7 @@ BOOST_AUTO_TEST_CASE( dateFromEclipseThrowsInvalidRecord ) { Opm::DeckIntItemPtr dayItem( new Opm::DeckIntItem("DAY") ); Opm::DeckStringItemPtr monthItem(new Opm::DeckStringItem("MONTH") ); Opm::DeckIntItemPtr yearItem(new Opm::DeckIntItem("YEAR")); + Opm::DeckStringItemPtr timeItem(new Opm::DeckStringItem("TIME") ); Opm::DeckIntItemPtr extraItem(new Opm::DeckIntItem("EXTRA")); dayItem->push_back( 10 ); @@ -114,6 +115,9 @@ BOOST_AUTO_TEST_CASE( dateFromEclipseThrowsInvalidRecord ) { startRecord->addItem( yearItem ); BOOST_CHECK_NO_THROW(Opm::TimeMap::dateFromEclipse( startRecord )); + + startRecord->addItem( timeItem ); + BOOST_CHECK_NO_THROW(Opm::TimeMap::dateFromEclipse( startRecord )); startRecord->addItem( extraItem ); BOOST_CHECK_THROW( Opm::TimeMap::dateFromEclipse( startRecord ) , std::invalid_argument ); diff --git a/opm/parser/share/keywords/D/DATES b/opm/parser/share/keywords/D/DATES index e472c0ddb..659b0c06f 100644 --- a/opm/parser/share/keywords/D/DATES +++ b/opm/parser/share/keywords/D/DATES @@ -1,5 +1,6 @@ {"name" : "DATES", "items" : [ - {"name" : "DAY" , "value_type" : "INT"}, + {"name" : "DAY" , "value_type" : "INT" }, {"name" : "MONTH" , "value_type" : "STRING"}, - {"name" : "YEAR" , "value_type" : "INT"}] + {"name" : "YEAR" , "value_type" : "INT" }, + {"name" : "TIME" , "value_type" : "STRING", "default":"00:00:00.000"} ] }