diff --git a/opm/parser/eclipse/EclipseState/EclipseState.cpp b/opm/parser/eclipse/EclipseState/EclipseState.cpp index d279a6a85..4c0e77691 100644 --- a/opm/parser/eclipse/EclipseState/EclipseState.cpp +++ b/opm/parser/eclipse/EclipseState/EclipseState.cpp @@ -27,6 +27,7 @@ namespace Opm { EclipseState::EclipseState(DeckConstPtr deck) { initPhases(deck); initSchedule(deck); + initTitle(deck); } @@ -35,6 +36,10 @@ namespace Opm { } + std::string EclipseState::getTitle() const { + return m_title; + } + void EclipseState::initSchedule(DeckConstPtr deck) { schedule = ScheduleConstPtr( new Schedule(deck) ); } @@ -56,4 +61,15 @@ namespace Opm { return (phases.count(phase) == 1); } + void EclipseState::initTitle(DeckConstPtr deck){ + DeckKeywordConstPtr titleKeyword = deck->getKeyword("TITLE"); + DeckRecordConstPtr record = titleKeyword->getRecord(0); + DeckItemPtr item = record->getItem(0); + std::vector itemValue = item->getStringData(); + m_title.clear(); + for(size_t i=0; i!=itemValue.size(); ++i) { + m_title.append(itemValue[i]); + if (i phases; + std::string m_title; }; typedef std::shared_ptr EclipseStatePtr; diff --git a/opm/parser/eclipse/EclipseState/tests/EclipseStateTests.cpp b/opm/parser/eclipse/EclipseState/tests/EclipseStateTests.cpp index e8c04db62..f31a50927 100644 --- a/opm/parser/eclipse/EclipseState/tests/EclipseStateTests.cpp +++ b/opm/parser/eclipse/EclipseState/tests/EclipseStateTests.cpp @@ -39,6 +39,9 @@ DeckPtr createDeck() { DeckKeywordPtr oilKeyword(new DeckKeyword("OIL")); DeckKeywordPtr gasKeyword(new DeckKeyword("GAS")); + DeckKeywordPtr titleKeyword(new DeckKeyword("TITLE")); + DeckRecordPtr titleRecord(new DeckRecord()); + DeckStringItemPtr titleItem(new DeckStringItem("TITLE") ); DeckKeywordPtr scheduleKeyword(new DeckKeyword("SCHEDULE")); DeckKeywordPtr startKeyword(new DeckKeyword("START")); @@ -57,10 +60,16 @@ DeckPtr createDeck() { startRecord->addItem( yearItem ); startKeyword->addRecord( startRecord ); + titleItem->push_back( "The" ); + titleItem->push_back( "title" ); + titleRecord->addItem( titleItem ); + titleKeyword->addRecord( titleRecord ); + deck->addKeyword( oilKeyword ); deck->addKeyword( gasKeyword ); deck->addKeyword( startKeyword ); deck->addKeyword( scheduleKeyword ); + deck->addKeyword( titleKeyword ); return deck; } @@ -85,3 +94,11 @@ BOOST_AUTO_TEST_CASE(PhasesCorrect) { BOOST_CHECK( state.hasPhase( PhaseEnum::GAS )); BOOST_CHECK( !state.hasPhase( PhaseEnum::WATER )); } + + +BOOST_AUTO_TEST_CASE(TitleCorrect) { + DeckPtr deck = createDeck(); + EclipseState state(deck); + + BOOST_CHECK_EQUAL( state.getTitle(), "The title"); +} diff --git a/opm/parser/eclipse/IntegrationTests/ParseTITLE.cpp b/opm/parser/eclipse/IntegrationTests/ParseTITLE.cpp index 7da663b60..c3443ec3a 100644 --- a/opm/parser/eclipse/IntegrationTests/ParseTITLE.cpp +++ b/opm/parser/eclipse/IntegrationTests/ParseTITLE.cpp @@ -38,7 +38,7 @@ using namespace Opm; BOOST_AUTO_TEST_CASE( parse_TITLE_OK ) { ParserPtr parser(new Parser()); boost::filesystem::path fileWithTitleKeyword("testdata/integration_tests/TITLE/TITLE1.txt"); - + DeckPtr deck = parser->parseFile (fileWithTitleKeyword.string(), true); BOOST_CHECK_EQUAL(size_t(2), deck->size()); @@ -46,10 +46,15 @@ BOOST_AUTO_TEST_CASE( parse_TITLE_OK ) { DeckKeywordConstPtr titleKeyword = deck->getKeyword("TITLE"); DeckRecordConstPtr record = titleKeyword->getRecord(0); DeckItemPtr item = record->getItem(0); - std::string itemValue = item->getString(0); - BOOST_CHECK (itemValue.length() > 0 ); //Should check for actual value? - BOOST_CHECK_EQUAL (true, deck->hasKeyword("START")); + std::vector itemValue = item->getStringData(); + std::string itemValueString; + for(size_t i=0; i!=itemValue.size(); ++i) { + itemValueString.append(itemValue[i]); + if (ihasKeyword("START")); } diff --git a/opm/parser/eclipse/Parser/ParserRecord.cpp b/opm/parser/eclipse/Parser/ParserRecord.cpp index 23bb8b851..002f4f57b 100644 --- a/opm/parser/eclipse/Parser/ParserRecord.cpp +++ b/opm/parser/eclipse/Parser/ParserRecord.cpp @@ -93,8 +93,6 @@ namespace Opm { DeckRecordConstPtr ParserRecord::parse(RawRecordPtr rawRecord) const { std::string recordBeforeParsing = rawRecord->getRecordString(); - std::cout << "Inside ParserRecord::parse(): recordBeforeParsing: " << recordBeforeParsing << std::endl; - std::cout << "Inside ParserRecord::parse(): size(): " << size() << std::endl; DeckRecordPtr deckRecord(new DeckRecord()); for (size_t i = 0; i < size(); i++) { ParserItemConstPtr parserItem = get(i); diff --git a/opm/parser/share/keywords/T/TITLE b/opm/parser/share/keywords/T/TITLE index b7037be2c..1e20beda2 100644 --- a/opm/parser/share/keywords/T/TITLE +++ b/opm/parser/share/keywords/T/TITLE @@ -1,2 +1,2 @@ {"name" : "TITLE" , "size" : 1 , "items" : [ - {"name" : "TitleText" , "value_type" : "STRING"}]} + {"name" : "TitleText" , "value_type" : "STRING", "size_type" : "ALL"}]} diff --git a/testdata/integration_tests/TITLE/TITLE1.txt b/testdata/integration_tests/TITLE/TITLE1.txt index 6e0a02aba..9f23e7fd1 100644 --- a/testdata/integration_tests/TITLE/TITLE1.txt +++ b/testdata/integration_tests/TITLE/TITLE1.txt @@ -1,4 +1,4 @@ TITLE -'This is the title of the model.' +This is the title of the model. START 10 'FEB' 2012