#include <WellsGroup.hpp>
|
| WellNode (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) |
|
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 bool | isLeafNode () const |
|
void | setWellsPointer (Wells *wells, int self_index) |
|
virtual int | numberOfLeafNodes () |
|
void | shutWell () |
|
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 | applyInjGroupControl (const InjectionSpecification::ControlMode control_mode, const InjectionSpecification::InjectorType injector_type, const double target, bool only_group) |
|
virtual void | applyProdGroupControl (const ProductionSpecification::ControlMode control_mode, const double target, bool only_group) |
|
virtual void | applyProdGroupControls () |
|
virtual void | applyInjGroupControls () |
|
virtual double | productionGuideRate (bool only_group) |
|
virtual double | injectionGuideRate (bool only_group) |
|
virtual double | getTotalProductionFlow (const std::vector< double > &phase_flows, const BlackoilPhases::PhaseIndex phase) const |
|
WellType | type () const |
| Returns the type of the well. More...
|
|
virtual void | applyExplicitReinjectionControls (const std::vector< double > &well_reservoirrates_phase, const std::vector< double > &well_surfacerates_phase) |
|
virtual void | applyVREPGroupControls (const std::vector< double > &well_voidage_rates, const std::vector< double > &conversion_coeffs) |
| TODO: prototyping a VREP enforcement function. More...
|
|
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) |
|
int | groupControlIndex () const |
|
virtual double | getProductionRate (const std::vector< double > &well_rates, const ProductionSpecification::ControlMode prod_mode) const |
|
virtual void | updateWellProductionTargets (const std::vector< double > &well_rates) |
|
virtual void | updateWellInjectionTargets (const std::vector< double > &well_rates) |
|
double | getAccumulativeEfficiencyFactor () const |
|
bool | isProducer () const |
|
bool | isInjector () const |
|
int | selfIndex () const |
|
bool | targetUpdated () const |
|
bool | isGuideRateWellPotential () const |
|
void | setIsGuideRateWellPotential (const bool flag) |
|
virtual void | setTargetUpdated (const bool flag) |
|
virtual bool | canProduceMore () const |
|
virtual bool | groupProdTargetConverged (const std::vector< double > &well_rates) const |
|
const std::string & | name () const |
| The unique identifier for the well or well group. More...
|
|
const ProductionSpecification & | prodSpec () const |
| Production specifications for the well or well group. More...
|
|
ProductionSpecification & | prodSpec () |
| Production specifications for the well or well group. More...
|
|
const InjectionSpecification & | injSpec () const |
| Injection specifications for the well or well group. More...
|
|
InjectionSpecification & | injSpec () |
| Injection specifications for the well or well group. More...
|
|
const PhaseUsage & | phaseUsage () const |
| Phase usage information. More...
|
|
void | setParent (WellsGroupInterface *parent) |
|
const WellsGroupInterface * | getParent () const |
| Gets the parent of the group, NULL if no parent. More...
|
|
WellsGroupInterface * | getParent () |
|
double | getTarget (ProductionSpecification::ControlMode mode) const |
| Gets the target rate for the given mode. More...
|
|
double | getTarget (InjectionSpecification::ControlMode mode) const |
| Gets the target rate for the given mode. More...
|
|
bool | individualControl () const |
|
void | setIndividualControl (const bool) |
| Update the status for individual contrl. More...
|
|
double | efficiencyFactor () const |
|
void | setEfficiencyFactor (const double efficiency_factor) |
|
◆ WellNode()
◆ applyExplicitReinjectionControls()
virtual void Opm::WellNode::applyExplicitReinjectionControls |
( |
const std::vector< double > & |
well_reservoirrates_phase, |
|
|
const std::vector< double > & |
well_surfacerates_phase |
|
) |
| |
|
virtual |
Applies explicit reinjection controls. This must be called at each timestep to be correct. - Parameters
-
[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.
◆ applyInjGroupControl()
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. - Parameters
-
[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.
◆ applyInjGroupControls()
virtual void Opm::WellNode::applyInjGroupControls |
( |
| ) |
|
|
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.
◆ applyProdGroupControl()
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. - Parameters
-
[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.
◆ applyProdGroupControls()
virtual void Opm::WellNode::applyProdGroupControls |
( |
| ) |
|
|
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.
◆ applyVREPGroupControl()
virtual void Opm::WellNode::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 |
◆ applyVREPGroupControls()
virtual void Opm::WellNode::applyVREPGroupControls |
( |
const std::vector< double > & |
well_voidage_rates, |
|
|
const std::vector< double > & |
conversion_coeffs |
|
) |
| |
|
virtual |
◆ canProduceMore()
virtual bool Opm::WellNode::canProduceMore |
( |
| ) |
const |
|
virtual |
◆ conditionsMet()
virtual bool Opm::WellNode::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 |
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 solve_pressure();
while(!group.conditionsMet(...)) {
solve_pressure();
}
- Note
- It's highly recommended to use the conditionsMet found in WellsManager.
- Parameters
-
[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. |
- Returns
- true if no violations were found, false otherwise (false also implies a change).
Implements Opm::WellsGroupInterface.
◆ efficiencyFactor()
double Opm::WellsGroupInterface::efficiencyFactor |
( |
| ) |
const |
|
inherited |
◆ findGroup()
◆ getAccumulativeEfficiencyFactor()
double Opm::WellNode::getAccumulativeEfficiencyFactor |
( |
| ) |
const |
the efficiency factor for groups are muliplitive, this function return the resulted final efficiency factor to the well in a multi-layer group structure.
◆ getParent() [1/2]
◆ getParent() [2/2]
Gets the parent of the group, NULL if no parent.
◆ getProductionRate()
◆ getTarget() [1/2]
Gets the target rate for the given mode.
◆ getTarget() [2/2]
Gets the target rate for the given mode.
◆ getTotalProductionFlow()
virtual double Opm::WellNode::getTotalProductionFlow |
( |
const std::vector< double > & |
phase_flows, |
|
|
const BlackoilPhases::PhaseIndex |
phase |
|
) |
| const |
|
virtual |
Gets the total production flow of the given phase. - Parameters
-
[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.
◆ getTotalVoidageRate()
virtual double Opm::WellNode::getTotalVoidageRate |
( |
const std::vector< double > & |
well_voidage_rates | ) |
|
|
virtual |
◆ getWorstOffending()
virtual std::pair< WellNode *, double > Opm::WellNode::getWorstOffending |
( |
const std::vector< double > & |
well_reservoirrates_phase, |
|
|
const std::vector< double > & |
well_surfacerates_phase, |
|
|
ProductionSpecification::ControlMode |
mode |
|
) |
| |
|
virtual |
Gets the worst offending well based on the input - Parameters
-
[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. |
- Returns
- first will be a pointer to the worst offending well, second will be the obtained value at that well.
Implements Opm::WellsGroupInterface.
◆ groupControlIndex()
int Opm::WellNode::groupControlIndex |
( |
| ) |
const |
◆ groupProdTargetConverged()
virtual bool Opm::WellNode::groupProdTargetConverged |
( |
const std::vector< double > & |
well_rates | ) |
const |
|
virtual |
◆ individualControl()
bool Opm::WellsGroupInterface::individualControl |
( |
| ) |
const |
|
inherited |
Return whether the well is running under group control target or under their own limit. True under their own limit. False running under group control target
◆ injectionGuideRate()
virtual double Opm::WellNode::injectionGuideRate |
( |
bool |
only_group | ) |
|
|
virtual |
Calculates the injection guide rate for the group. - Parameters
-
[in] | only_group | If true, will only accumelate guide rates for wells under group control |
Implements Opm::WellsGroupInterface.
◆ injSpec() [1/2]
Injection specifications for the well or well group.
◆ injSpec() [2/2]
Injection specifications for the well or well group.
◆ isGuideRateWellPotential()
bool Opm::WellNode::isGuideRateWellPotential |
( |
| ) |
const |
◆ isInjector()
bool Opm::WellNode::isInjector |
( |
| ) |
const |
◆ isLeafNode()
virtual bool Opm::WellNode::isLeafNode |
( |
| ) |
const |
|
virtual |
◆ isProducer()
bool Opm::WellNode::isProducer |
( |
| ) |
const |
◆ name()
const std::string & Opm::WellsGroupInterface::name |
( |
| ) |
const |
|
inherited |
The unique identifier for the well or well group.
◆ numberOfLeafNodes()
virtual int Opm::WellNode::numberOfLeafNodes |
( |
| ) |
|
|
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.
◆ phaseUsage()
const PhaseUsage & Opm::WellsGroupInterface::phaseUsage |
( |
| ) |
const |
|
inherited |
◆ prodSpec() [1/2]
Production specifications for the well or well group.
◆ prodSpec() [2/2]
Production specifications for the well or well group.
◆ productionGuideRate()
virtual double Opm::WellNode::productionGuideRate |
( |
bool |
only_group | ) |
|
|
virtual |
Calculates the production guide rate for the group. - Parameters
-
[in] | only_group | If true, will only accumelate guide rates for wells under group control |
Implements Opm::WellsGroupInterface.
◆ rateByMode() [1/2]
◆ rateByMode() [2/2]
◆ selfIndex()
int Opm::WellNode::selfIndex |
( |
| ) |
const |
◆ setEfficiencyFactor()
void Opm::WellsGroupInterface::setEfficiencyFactor |
( |
const double |
efficiency_factor | ) |
|
|
inherited |
◆ setIndividualControl()
void Opm::WellsGroupInterface::setIndividualControl |
( |
const bool |
| ) |
|
|
inherited |
Update the status for individual contrl.
◆ setIsGuideRateWellPotential()
void Opm::WellNode::setIsGuideRateWellPotential |
( |
const bool |
flag | ) |
|
◆ setParent()
Sets the parent - Parameters
-
[in] | parent | the pointer to the parent |
◆ setTargetUpdated()
virtual void Opm::WellNode::setTargetUpdated |
( |
const bool |
flag | ) |
|
|
virtual |
◆ setWellsPointer()
void Opm::WellNode::setWellsPointer |
( |
Wells * |
wells, |
|
|
int |
self_index |
|
) |
| |
◆ shutWell()
void Opm::WellNode::shutWell |
( |
| ) |
|
◆ targetUpdated()
bool Opm::WellNode::targetUpdated |
( |
| ) |
const |
◆ type()
Returns the type of the well.
◆ updateWellInjectionTargets()
virtual void Opm::WellNode::updateWellInjectionTargets |
( |
const std::vector< double > & |
well_rates | ) |
|
|
virtual |
◆ updateWellProductionTargets()
virtual void Opm::WellNode::updateWellProductionTargets |
( |
const std::vector< double > & |
well_rates | ) |
|
|
virtual |
◆ efficiency_factor_
double Opm::WellsGroupInterface::efficiency_factor_ |
|
protectedinherited |
◆ individual_control_
bool Opm::WellsGroupInterface::individual_control_ |
|
protectedinherited |
◆ parent_
The documentation for this class was generated from the following file:
|