bool RestartSchedule::writeRestartFile( size_t input_timestep , const TimeMap& timemap) const { if (this->rptsched_restart_set && (this->rptsched_restart > 0)) return true; switch (basic) { //Do not write restart files case 0: return false; //Write restart file every report time case 1: return true; //Write restart file every report time case 2: return true; //Every n'th report time case 3: return ((input_timestep % this->frequency) == 0) ? true : false; //First reportstep of every year, or if n > 1, n'th years case 4: return timemap.isTimestepInFirstOfMonthsYearsSequence(input_timestep, true , this->timestep, this->frequency); //First reportstep of every month, or if n > 1, n'th months case 5: return timemap.isTimestepInFirstOfMonthsYearsSequence(input_timestep, false , this->timestep, this->frequency); default: return false; } }
/// Use the SimulatorTimer as a shim around opm-parser's Opm::TimeMap void SimulatorTimer::init(const TimeMap& timeMap, size_t report_step) { total_time_ = timeMap.getTotalTime(); timesteps_.resize(timeMap.numTimesteps()); for ( size_t i = 0; i < timeMap.numTimesteps(); ++i ) { timesteps_[i] = timeMap.getTimeStepLength(i); } setCurrentStepNum(report_step); boost::posix_time::ptime start_time = timeMap.getStartTime(0); start_date_ = start_time.date(); }
Well::Well(const std::string& name_, int headI, int headJ, double refDepth , Phase preferredPhase, const TimeMap& timeMap, size_t creationTimeStep, WellCompletion::CompletionOrderEnum completionOrdering, bool allowCrossFlow, bool automaticShutIn) : m_creationTimeStep( creationTimeStep ), m_name( name_ ), m_status( timeMap, WellCommon::SHUT ), m_isAvailableForGroupControl( timeMap, true ), m_guideRate( timeMap, -1.0 ), m_guideRatePhase( timeMap, GuideRate::UNDEFINED ), m_guideRateScalingFactor( timeMap, 1.0 ), m_isProducer( timeMap, true ) , m_completions( timeMap, CompletionSet{} ), m_productionProperties( timeMap, WellProductionProperties() ), m_injectionProperties( timeMap, WellInjectionProperties() ), m_polymerProperties( timeMap, WellPolymerProperties() ), m_econproductionlimits( timeMap, WellEconProductionLimits() ), m_solventFraction( timeMap, 0.0 ), m_groupName( timeMap, "" ), m_rft( timeMap, false ), m_plt( timeMap, false ), m_headI( timeMap, headI ), m_headJ( timeMap, headJ ), m_refDepth( timeMap, refDepth ), m_preferredPhase(preferredPhase), m_comporder(completionOrdering), m_allowCrossFlow(allowCrossFlow), m_automaticShutIn(automaticShutIn), m_segmentset( timeMap, SegmentSet{} ), timesteps( timeMap.numTimesteps() ), events( timeMap ) { addEvent( ScheduleEvents::NEW_WELL , creationTimeStep ); }