Well::Well(const std::string& name_, std::shared_ptr<const EclipseGrid> grid , int headI, int headJ, Value<double> refDepth , Phase::PhaseEnum preferredPhase, TimeMapConstPtr timeMap, size_t creationTimeStep, WellCompletion::CompletionOrderEnum completionOrdering, bool allowCrossFlow) : m_status(new DynamicState<WellCommon::StatusEnum>(timeMap, WellCommon::SHUT)), m_isAvailableForGroupControl(new DynamicState<bool>(timeMap, true)), m_guideRate(new DynamicState<double>(timeMap, -1.0)), m_guideRatePhase(new DynamicState<GuideRate::GuideRatePhaseEnum>(timeMap, GuideRate::UNDEFINED)), m_guideRateScalingFactor(new DynamicState<double>(timeMap, 1.0)), m_isProducer(new DynamicState<bool>(timeMap, true)) , m_completions( new DynamicState<CompletionSetConstPtr>( timeMap , CompletionSetConstPtr( new CompletionSet()) )), m_productionProperties( new DynamicState<WellProductionProperties>(timeMap, WellProductionProperties() )), m_injectionProperties( new DynamicState<WellInjectionProperties>(timeMap, WellInjectionProperties() )), m_polymerProperties( new DynamicState<WellPolymerProperties>(timeMap, WellPolymerProperties() )), m_solventFraction( new DynamicState<double>(timeMap, 0.0 )), m_groupName( new DynamicState<std::string>( timeMap , "" )), m_rft( new DynamicState<bool>(timeMap,false)), m_plt( new DynamicState<bool>(timeMap,false)), m_timeMap( timeMap ), m_headI(headI), m_headJ(headJ), m_refDepth(refDepth), m_preferredPhase(preferredPhase), m_grid( grid ), m_comporder(completionOrdering), m_allowCrossFlow(allowCrossFlow), m_segmentset(new DynamicState<SegmentSetConstPtr>(timeMap, SegmentSetPtr(new SegmentSet()))) { m_name = name_; m_creationTimeStep = creationTimeStep; }
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 ); }