static std::shared_ptr< Opm::TimeMap > createXDaysTimeMap(size_t numDays) { boost::gregorian::date startDate( 2010 , boost::gregorian::Jan , 1); auto timeMap = std::make_shared< Opm::TimeMap >(boost::posix_time::ptime(startDate)); for (size_t i = 0; i < numDays; i++) timeMap->addTStep( boost::posix_time::hours( (i+1) * 24 )); return timeMap; }
void TimeMap::addFromTSTEPKeyword( const DeckKeyword& TSTEPKeyword ) { if (TSTEPKeyword.name() != "TSTEP") throw std::invalid_argument("Method requires TSTEP keyword input."); { const auto& item = TSTEPKeyword.getRecord( 0 ).getItem( 0 ); for (size_t itemIndex = 0; itemIndex < item.size(); itemIndex++) { double days = item.get< double >( itemIndex ); long int wholeSeconds = static_cast<long int>(days * 24*60*60); long int milliSeconds = static_cast<long int>((days * 24*60*60 - wholeSeconds)*1000); boost::posix_time::time_duration step = boost::posix_time::seconds(wholeSeconds) + boost::posix_time::milliseconds(milliSeconds); addTStep( step ); } } }
void TimeMap::addFromTSTEPKeyword( DeckKeywordConstPtr TSTEPKeyword ) { if (TSTEPKeyword->name() != "TSTEP") throw std::invalid_argument("Method requires TSTEP keyword input."); { DeckRecordConstPtr record = TSTEPKeyword->getRecord( 0 ); DeckItemConstPtr item = record->getItem( 0 ); for (size_t itemIndex = 0; itemIndex < item->size(); itemIndex++) { double days = item->getRawDouble( itemIndex ); long int wholeSeconds = static_cast<long int>(days * 24*60*60); long int milliSeconds = static_cast<long int>((days * 24*60*60 - wholeSeconds)*1000); boost::posix_time::time_duration step = boost::posix_time::seconds(wholeSeconds) + boost::posix_time::milliseconds(milliSeconds); addTStep( step ); } } }