WellsGroup.hpp
Go to the documentation of this file.
161 virtual std::pair<WellNode*, double> getWorstOffending(const std::vector<double>& well_reservoirrates_phase,
206 virtual void applyExplicitReinjectionControls(const std::vector<double>& well_reservoirrates_phase,
240 // they have the potential to adjust their targets to produce more to match the higher level target
304 virtual std::pair<WellNode*, double> getWorstOffending(const std::vector<double>& well_reservoirrates_phase,
362 virtual void applyExplicitReinjectionControls(const std::vector<double>& well_reservoirrates_phase,
420 virtual std::pair<WellNode*, double> getWorstOffending(const std::vector<double>& well_reservoirrates_phase,
481 virtual void applyExplicitReinjectionControls(const std::vector<double>& well_reservoirrates_phase,
Definition: WellsGroup.hpp:397 bool targetUpdated() const WellNode(const std::string &name, const double efficiency_factor, const ProductionSpecification &prod_spec, const InjectionSpecification &inj_spec, const PhaseUsage &phase_usage) bool isProducer() const virtual bool groupProdTargetConverged(const std::vector< double > &well_rates) const bool isInjector() const virtual int numberOfLeafNodes() virtual bool isLeafNode() const virtual std::pair< WellNode *, double > getWorstOffending(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, ProductionSpecification::ControlMode mode) bool isGuideRateWellPotential() const virtual void setTargetUpdated(const bool flag) virtual WellsGroupInterface * findGroup(const std::string &name_of_node) double getAccumulativeEfficiencyFactor() const virtual double getProductionRate(const std::vector< double > &well_rates, const ProductionSpecification::ControlMode prod_mode) const void setWellsPointer(Wells *wells, int self_index) virtual void applyExplicitReinjectionControls(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase) void setIsGuideRateWellPotential(const bool flag) int selfIndex() const int groupControlIndex() const virtual void applyVREPGroupControl(const double target, const InjectionSpecification::InjectorType injector_type, const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs, const bool only_group) virtual void applyInjGroupControls() virtual void applyProdGroupControl(const ProductionSpecification::ControlMode control_mode, const double target, bool only_group) virtual double injectionGuideRate(bool only_group) virtual double productionGuideRate(bool only_group) virtual double getTotalVoidageRate(const std::vector< double > &well_voidage_rates) virtual void updateWellProductionTargets(const std::vector< double > &well_rates) virtual void updateWellInjectionTargets(const std::vector< double > &well_rates) virtual bool canProduceMore() const virtual double getTotalProductionFlow(const std::vector< double > &phase_flows, const BlackoilPhases::PhaseIndex phase) const virtual void applyProdGroupControls() virtual bool conditionsMet(const std::vector< double > &well_bhp, const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, WellPhasesSummed &summed_phases) virtual void applyVREPGroupControls(const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs) TODO: prototyping a VREP enforcement function. virtual void applyInjGroupControl(const InjectionSpecification::ControlMode control_mode, const InjectionSpecification::InjectorType injector_type, const double target, bool only_group) void shutWell() Definition: WellsGroup.hpp:55 double rateByMode(const double *res_rates, const double *surf_rates, const ProductionSpecification::ControlMode mode) Calculates the correct rate for the given ProductionSpecification::ControlMode. virtual void updateWellInjectionTargets(const std::vector< double > &well_rates)=0 const ProductionSpecification & prodSpec() const Production specifications for the well or well group. double getTarget(ProductionSpecification::ControlMode mode) const Gets the target rate for the given mode. void setEfficiencyFactor(const double efficiency_factor) const WellsGroupInterface * getParent() const Gets the parent of the group, NULL if no parent. virtual double injectionGuideRate(bool only_group)=0 virtual void updateWellProductionTargets(const std::vector< double > &well_rates)=0 virtual void applyInjGroupControl(const InjectionSpecification::ControlMode control_mode, const InjectionSpecification::InjectorType injector_type, const double target, const bool only_group)=0 virtual bool groupProdTargetConverged(const std::vector< double > &well_rates) const =0 virtual double getProductionRate(const std::vector< double > &well_rates, const ProductionSpecification::ControlMode prod_mode) const =0 virtual double getTotalProductionFlow(const std::vector< double > &phase_flows, const BlackoilPhases::PhaseIndex phase) const =0 double rateByMode(const double *res_rates, const double *surf_rates, const InjectionSpecification::ControlMode mode) Calculates the correct rate for the given InjectionSpecification::ControlMode. virtual void setTargetUpdated(const bool flag)=0 double getTarget(InjectionSpecification::ControlMode mode) const Gets the target rate for the given mode. virtual void applyVREPGroupControl(const double target, const InjectionSpecification::InjectorType injector_type, const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs, const bool only_group)=0 virtual int numberOfLeafNodes()=0 const InjectionSpecification & injSpec() const Injection specifications for the well or well group. virtual bool isLeafNode() const virtual void applyProdGroupControls()=0 double efficiencyFactor() const virtual bool canProduceMore() const =0 virtual double productionGuideRate(bool only_group)=0 virtual double getTotalVoidageRate(const std::vector< double > &well_voidage_rates)=0 WellsGroupInterface(const std::string &name, const double efficiency_factor, const ProductionSpecification &prod_spec, const InjectionSpecification &inj_spec, const PhaseUsage &phase_usage) virtual std::pair< WellNode *, double > getWorstOffending(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, ProductionSpecification::ControlMode mode)=0 void setIndividualControl(const bool) Update the status for individual contrl. virtual void applyExplicitReinjectionControls(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase)=0 virtual void applyVREPGroupControls(const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs)=0 TODO: prototyping a VREP enforcement function. InjectionSpecification & injSpec() Injection specifications for the well or well group. WellsGroupInterface * getParent() virtual void applyInjGroupControls()=0 ProductionSpecification & prodSpec() Production specifications for the well or well group. void setParent(WellsGroupInterface *parent) const std::string & name() const The unique identifier for the well or well group. virtual ~WellsGroupInterface() virtual bool conditionsMet(const std::vector< double > &well_bhp, const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, WellPhasesSummed &summed_phases)=0 virtual WellsGroupInterface * findGroup(const std::string &name_of_node)=0 bool individualControl() const virtual void applyProdGroupControl(const ProductionSpecification::ControlMode control_mode, const double target, const bool only_group)=0 Definition: WellsGroup.hpp:286 virtual void updateWellInjectionTargets(const std::vector< double > &well_rates) void addChild(std::shared_ptr< WellsGroupInterface > child) virtual void updateWellProductionTargets(const std::vector< double > &well_rates) virtual bool conditionsMet(const std::vector< double > &well_bhp, const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, WellPhasesSummed &summed_phases) virtual void applyVREPGroupControls(const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs) TODO: prototyping a VREP enforcement function. virtual double getTotalVoidageRate(const std::vector< double > &well_voidage_rates) virtual void setTargetUpdated(const bool flag) virtual WellsGroupInterface * findGroup(const std::string &name_of_node) WellsGroup(const std::string &name, const double efficiency_factor, const ProductionSpecification &prod_spec, const InjectionSpecification &inj_spec, const PhaseUsage &phase_usage) virtual double productionGuideRate(bool only_group) virtual bool canProduceMore() const virtual void applyProdGroupControl(const ProductionSpecification::ControlMode control_mode, const double target, bool only_group) virtual double getProductionRate(const std::vector< double > &well_rates, const ProductionSpecification::ControlMode prod_mode) const virtual std::pair< WellNode *, double > getWorstOffending(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, ProductionSpecification::ControlMode mode) virtual void applyInjGroupControls() virtual double injectionGuideRate(bool only_group) virtual bool groupProdTargetConverged(const std::vector< double > &well_rates) const virtual int numberOfLeafNodes() virtual double getTotalProductionFlow(const std::vector< double > &phase_flows, const BlackoilPhases::PhaseIndex phase) const virtual void applyVREPGroupControl(const double target, const InjectionSpecification::InjectorType injector_type, const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs, const bool only_group) virtual void applyInjGroupControl(const InjectionSpecification::ControlMode control_mode, const InjectionSpecification::InjectorType injector_type, const double target, bool only_group) virtual void applyProdGroupControls() virtual void applyExplicitReinjectionControls(const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase) Definition: AnisotropicEikonal.hpp:44 std::shared_ptr< WellsGroupInterface > createGroupWellsGroup(const Group &group, size_t timeStep, const PhaseUsage &phase_usage) std::shared_ptr< WellsGroupInterface > createWellWellsGroup(const Well *well, size_t timeStep, const PhaseUsage &phase_usage) Mode mode(const std::string &control) Definition: InjectionSpecification.hpp:11 Definition: BlackoilPhases.hpp:44 Definition: ProductionSpecification.hpp:11 Definition: WellsGroup.hpp:43 WellPhasesSummed() Definition: wells.h:51 |