Well::Well(const std::string& name, int headI, int headJ, double refDepth, TimeMapConstPtr timeMap , size_t creationTimeStep) : m_oilRate( new DynamicState<double>( timeMap , 0.0)) , m_gasRate(new DynamicState<double>(timeMap, 0.0)), m_waterRate(new DynamicState<double>(timeMap, 0.0)), m_liquidRate(new DynamicState<double>(timeMap, 0.0)), m_resVRate(new DynamicState<double>(timeMap, 0.0)), m_surfaceInjectionRate(new DynamicState<double>(timeMap, 0.0)), m_reservoirInjectionRate(new DynamicState<double>(timeMap, 0.0)), m_BHPLimit(new DynamicState<double>(timeMap , 0.0)), m_THPLimit(new DynamicState<double>(timeMap , 0.0)), m_injectorType(new DynamicState<WellInjector::TypeEnum>(timeMap, WellInjector::WATER)), m_injectorControlMode(new DynamicState<WellInjector::ControlModeEnum>(timeMap, WellInjector::RATE)), m_producerControlMode(new DynamicState<WellProducer::ControlModeEnum>(timeMap, WellProducer::ORAT)), m_status(new DynamicState<WellCommon::StatusEnum>(timeMap, WellCommon::OPEN)), m_productionControls(new DynamicState<int>(timeMap, 0)), m_injectionControls(new DynamicState<int>(timeMap, 0)), m_inPredictionMode(new DynamicState<bool>(timeMap, true)), m_isProducer(new DynamicState<bool>(timeMap, true)), 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_completions( new DynamicState<CompletionSetConstPtr>( timeMap , CompletionSetConstPtr( new CompletionSet()) )), m_groupName( new DynamicState<std::string>( timeMap , "" )), m_headI(headI), m_headJ(headJ), m_refDepth(refDepth) { m_name = name; m_creationTimeStep = creationTimeStep; }
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; }