Public Member Functions | |
WellsGroup (const std::string &name, const double efficiency_factor, const ProductionSpecification &prod_spec, const InjectionSpecification &inj_spec, const PhaseUsage &phase_usage) | |
virtual WellsGroupInterface * | findGroup (const std::string &name_of_node) |
void | addChild (std::shared_ptr< WellsGroupInterface > child) |
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) |
Checks if each condition is met, applies well controls where needed (that is, it either changes the active control of violating wells, or shuts down wells). More... | |
virtual int | numberOfLeafNodes () |
Calculates the number of leaf nodes in the given group. More... | |
virtual std::pair< WellNode *, double > | getWorstOffending (const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase, ProductionSpecification::ControlMode mode) |
Gets the worst offending well based on the input. More... | |
virtual void | applyInjGroupControl (const InjectionSpecification::ControlMode control_mode, const InjectionSpecification::InjectorType injector_type, const double target, bool only_group) |
Sets the current active control to the provided one for all injectors within the group. More... | |
virtual void | applyProdGroupControl (const ProductionSpecification::ControlMode control_mode, const double target, bool only_group) |
Sets the current active control to the provided one for all producers within the group. More... | |
virtual void | applyProdGroupControls () |
Applies any production group control relevant to all children nodes. More... | |
virtual void | applyInjGroupControls () |
Applies any injection group control relevant to all children nodes. More... | |
virtual double | productionGuideRate (bool only_group) |
Calculates the production guide rate for the group. More... | |
virtual double | injectionGuideRate (bool only_group) |
Calculates the injection guide rate for the group. More... | |
virtual double | getTotalProductionFlow (const std::vector< double > &phase_flows, const BlackoilPhases::PhaseIndex phase) const |
Gets the total production flow of the given phase. More... | |
virtual void | applyExplicitReinjectionControls (const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase) |
Applies explicit reinjection controls. More... | |
virtual void | applyVREPGroupControls (const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs) |
TODO: prototyping a VREP enforcement function. | |
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 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 void | setTargetUpdated (const bool flag) |
virtual double | getProductionRate (const std::vector< double > &well_rates, const ProductionSpecification::ControlMode prod_mode) const |
virtual bool | canProduceMore () const |
virtual bool | groupProdTargetConverged (const std::vector< double > &well_rates) const |
![]() | |
WellsGroupInterface (const std::string &name, const double efficiency_factor, const ProductionSpecification &prod_spec, const InjectionSpecification &inj_spec, const PhaseUsage &phase_usage) | |
const std::string & | name () const |
The unique identifier for the well or well group. | |
const ProductionSpecification & | prodSpec () const |
Production specifications for the well or well group. | |
const InjectionSpecification & | injSpec () const |
Injection specifications for the well or well group. | |
ProductionSpecification & | prodSpec () |
Production specifications for the well or well group. | |
InjectionSpecification & | injSpec () |
Injection specifications for the well or well group. | |
const PhaseUsage & | phaseUsage () const |
Phase usage information. | |
virtual bool | isLeafNode () const |
void | setParent (WellsGroupInterface *parent) |
Sets the parent. More... | |
const WellsGroupInterface * | getParent () const |
Gets the parent of the group, NULL if no parent. | |
WellsGroupInterface * | getParent () |
double | getTarget (ProductionSpecification::ControlMode mode) const |
Gets the target rate for the given mode. | |
double | getTarget (InjectionSpecification::ControlMode mode) const |
Gets the target rate for the given mode. | |
bool | individualControl () const |
Return whether the well is running under group control target or under their own limit. More... | |
void | setIndividualControl (const bool) |
Update the status for individual contrl. | |
double | efficiencyFactor () const |
void | setEfficiencyFactor (const double efficiency_factor) |
Additional Inherited Members | |
![]() | |
double | rateByMode (const double *res_rates, const double *surf_rates, const ProductionSpecification::ControlMode mode) |
Calculates the correct rate for the given ProductionSpecification::ControlMode. | |
double | rateByMode (const double *res_rates, const double *surf_rates, const InjectionSpecification::ControlMode mode) |
Calculates the correct rate for the given InjectionSpecification::ControlMode. | |
![]() | |
WellsGroupInterface * | parent_ |
bool | individual_control_ |
double | efficiency_factor_ |
|
virtual |
Applies explicit reinjection controls.
This must be called at each timestep to be correct.
[in] | well_reservoirrates_phase | A vector containing reservoir rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[in] | well_surfacerates_phase | A vector containing surface rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
Implements Opm::WellsGroupInterface.
|
virtual |
Sets the current active control to the provided one for all injectors within the group.
After this call, the combined rate (which rate depending on control_mode) of the group shall be equal to target.
[in] | only_group | if true, only children that are under group control will be changed. |
After this call, the combined rate (which rate depending on control_mode) of the group shall be equal to target.
[in] | only_group | if true, only children that are under group control will be changed. otherwise, all children will be set under group control |
Implements Opm::WellsGroupInterface.
|
virtual |
Applies any injection group control relevant to all children nodes.
If no group control is set, this is called recursively to the children.
Implements Opm::WellsGroupInterface.
|
virtual |
Sets the current active control to the provided one for all producers within the group.
After this call, the combined rate (which rate depending on control_mode) of the group shall be equal to target.
[in] | only_group | if true, only children that are under group control will be changed. |
After this call, the combined rate (which rate depending on control_mode) of the group shall be equal to target.
[in] | only_group | if true, only children that are under group control will be changed. otherwise, all children will be set under group control |
Implements Opm::WellsGroupInterface.
|
virtual |
Applies any production group control relevant to all children nodes.
If no group control is set, this is called recursively to the children.
Implements Opm::WellsGroupInterface.
|
virtual |
Checks if each condition is met, applies well controls where needed (that is, it either changes the active control of violating wells, or shuts down wells).
Only one change is applied per invocation. Typical use will be
[in] | well_bhp | A vector containing the bhp for each well. Is assumed to be ordered the same way as the related Wells-struct. |
[in] | well_reservoirrates_phase | A vector containing reservoir rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[in] | well_surfacerates_phase | A vector containing surface rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[out] | summed_phases | Will at end of invocation contain the summed phase rates (rate ,etc.) for the group. |
Implements Opm::WellsGroupInterface.
|
virtual |
Implements Opm::WellsGroupInterface.
|
virtual |
Gets the total production flow of the given phase.
[in] | phase_flows | A vector containing rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[in] | phase | The phase for which to sum up. |
Implements Opm::WellsGroupInterface.
|
virtual |
Gets the worst offending well based on the input.
[in] | well_reservoirrates_phase | A vector containing reservoir rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[in] | well_surfacerates_phase | A vector containing surface rates by phase for each well. Is assumed to be ordered the same way as the related Wells-struct, with all phase rates of a single well adjacent in the array. |
[in] | mode | The relevant control mode to find the maximum over. |
Implements Opm::WellsGroupInterface.
|
virtual |
Calculates the injection guide rate for the group.
[in] | only_group | If true, will only accumelate guide rates for wells under group control |
Implements Opm::WellsGroupInterface.
|
virtual |
Calculates the number of leaf nodes in the given group.
A leaf node is defined to have one leaf node in its group.
Implements Opm::WellsGroupInterface.
|
virtual |
Calculates the production guide rate for the group.
[in] | only_group | If true, will only accumelate guide rates for wells under group control |
Implements Opm::WellsGroupInterface.