updating the group control limit for individual control wells

to provide a better standard for the wells under individual control to
return to group control. For example, some wells get really big group
control limit and switch to individual control, it is very difficult for
them to return to group control with that kind of unreasonable fixed
group limit.
This commit is contained in:
Kai Bao 2017-01-12 11:26:34 +01:00
parent 7830083e9b
commit 713c833b0a

View File

@ -793,6 +793,18 @@ namespace Opm
const double children_guide_rate = children_[i]->productionGuideRate(true);
children_[i]->applyProdGroupControl(prod_mode, (children_guide_rate / my_guide_rate) * rate_for_group_control, true);
children_[i]->setTargetUpdated(true);
} else {
// for the well not under group control, we need to update their group control limit
// to provide a mechanism for the well to return to group control
// putting its own rate back to the rate_for_group_control for redistribution
const double rate = std::abs(children_[i]->getProductionRate(well_rates, prod_mode) * children_[i]->efficiencyFactor());
const double temp_rate_for_group_control = rate_for_group_control + rate;
// TODO: the following might not be the correct thing to do for mutliple-layer group
const double children_guide_rate = children_[i]->productionGuideRate(false);
const double temp_my_guide_rate = my_guide_rate + children_guide_rate;
children_[i]->applyProdGroupControl(prod_mode, (children_guide_rate / temp_my_guide_rate) * temp_rate_for_group_control, false);
children_[i]->setTargetUpdated(true);
}
}
}