-
Notifications
You must be signed in to change notification settings - Fork 130
WIP in being able to changing group control mode to NONE #6559
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
jenkins build this please |
1 similar comment
|
jenkins build this please |
|
jenkins build this failure_report please |
1 similar comment
|
jenkins build this failure_report please |
863cb1f to
4d82ebd
Compare
|
jenkins build this failure_report please |
|
When investigating https://ci.opm-project.org/job/opm-simulators-PR-builder/8916/testReport/junit/(root)/mpi/compareECLFiles_flow_SPE9_CP_GROUP/ . It looks like we might get zero RESV group rate at the beginning of the time step. Probably due to uninitialized well rates values are used. (checkGroupProductionConstraints is called before the rates are initialized.) |
|
posting here for later reference. In the master branch, the following code can make the production well rate become zero. due to if (schedule.hasWell(name) && wellState.well(name).group_target) { // for wells we already have computed the target
const Scalar current_well_rate_available = -tcalc.calcModeRateFromRates(rates); // Switch sign since 'rates' are negative for producers.
const Scalar group_target_rate_available = *wellState.well(name).group_target;
Scalar scale = 1.0;
if (current_well_rate_available > 1e-12) {
scale = group_target_rate_available / current_well_rate_available;
}
return std::make_pair(current_well_rate_available > group_target_rate_available, scale);
}The calling stack is as follows, |
|
The usage of Furthermore, the have not figured out how the |
There are four wells for that group target. Four wells were under individual control earlier, and the individual rates of any three is bigger than the group target. When we try to calculate the individual group rate, all the four wells get negative group target because the other three wells are already over producing the group target based on their individual rates. |
|
The code that uses the if (this->schedule_.hasWell(name) && this->wellState().well(name).group_target) {
// for wells we already have computed the target
// Switch sign since 'rates' are negative for producers.
const Scalar current_well_rate_available = -tcalc.calcModeRateFromRates(rates);
const Scalar group_target_rate_available = *this->wellState().well(name).group_target;
Scalar scale = 1.0;
if (current_well_rate_available > 1e-12) {
scale = group_target_rate_available / current_well_rate_available;
}
return std::make_pair(current_well_rate_available > group_target_rate_available, scale);
}it is probably not doing much harm if its value is at the level of |
4d82ebd to
a0ac7ad
Compare
|
jenkins build this failure_report please |
a0ac7ad to
41f3a96
Compare
|
This way turns out to be too hard. Closing this one to favor the approach in #6596 . |
No description provided.