Пример #1
0
    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;
        }
    }
Пример #2
0
    /// 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();
    }
Пример #3
0
 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 );
 }