Always updating the well targets under group control
for each iteration. Even all the wells are under individual controls, their group targets/constraints should also be updated for correct group behavoirs.
This commit is contained in:
parent
7701b68814
commit
2fcb449196
@ -284,9 +284,8 @@ namespace Opm
|
|||||||
|
|
||||||
void WellCollection::updateWellTargets(const std::vector<double>& well_rates)
|
void WellCollection::updateWellTargets(const std::vector<double>& well_rates)
|
||||||
{
|
{
|
||||||
if ( !needUpdateWellTargets() && groupTargetConverged(well_rates)) {
|
|
||||||
return;
|
// TODO: if it gets converged, should we still update targets?
|
||||||
}
|
|
||||||
|
|
||||||
// set the target_updated to be false
|
// set the target_updated to be false
|
||||||
for (WellNode* well_node : leaf_nodes_) {
|
for (WellNode* well_node : leaf_nodes_) {
|
||||||
@ -298,8 +297,7 @@ namespace Opm
|
|||||||
// While there will be somre more complication invloved for sure.
|
// While there will be somre more complication invloved for sure.
|
||||||
for (size_t i = 0; i < leaf_nodes_.size(); ++i) {
|
for (size_t i = 0; i < leaf_nodes_.size(); ++i) {
|
||||||
// find a node needs to update targets, then update targets for all the wellls inside the group.
|
// find a node needs to update targets, then update targets for all the wellls inside the group.
|
||||||
// if (leaf_nodes_[i]->shouldUpdateWellTargets() && !leaf_nodes_[i]->individualControl()) {
|
if (!leaf_nodes_[i]->targetUpdated()) {
|
||||||
if (!leaf_nodes_[i]->individualControl() && !leaf_nodes_[i]->targetUpdated()) {
|
|
||||||
WellsGroupInterface* parent_node = leaf_nodes_[i]->getParent();
|
WellsGroupInterface* parent_node = leaf_nodes_[i]->getParent();
|
||||||
// update the target within this group.
|
// update the target within this group.
|
||||||
if (leaf_nodes_[i]->isProducer()) {
|
if (leaf_nodes_[i]->isProducer()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user