mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
completing prepareTimeStep() for StandardWellsDense
updating all the group control related.
This commit is contained in:
@@ -1843,14 +1843,26 @@ namespace Opm {
|
|||||||
prepareTimeStep(const Simulator& ebos_simulator,
|
prepareTimeStep(const Simulator& ebos_simulator,
|
||||||
WellState& well_state)
|
WellState& well_state)
|
||||||
{
|
{
|
||||||
|
|
||||||
// TODO: we should remove the wellPotentials() from the well_state.
|
|
||||||
|
|
||||||
if (well_collection_->groupControlActive()) {
|
if (well_collection_->groupControlActive()) {
|
||||||
// calculate the well potentials
|
// calculate the well potentials
|
||||||
// two functions will probably be merged in the final version
|
// two functions will probably be merged in the final version
|
||||||
// and also the well potentials related parts in well state.
|
// and also the well potentials related parts in well state.
|
||||||
if (param_.compute_well_potentials_) {
|
if (param_.compute_well_potentials_) {
|
||||||
|
|
||||||
|
// the following part should be made a function
|
||||||
|
const int nw = wells().number_of_wells;
|
||||||
|
|
||||||
|
for (int w = 0; w < nw; ++w) {
|
||||||
|
WellControls* wc = wells().ctrls[w];
|
||||||
|
const int control = well_controls_get_current(wc);
|
||||||
|
well_state.currentControls()[w] = control;
|
||||||
|
// TODO: when we under defaulted BHP value here, it is not
|
||||||
|
// wise to update the WellState with this target.
|
||||||
|
// It should only be the case with `GRUP` while we have not
|
||||||
|
// applied group control.
|
||||||
|
// updateWellStateWithTarget(wc, control, w, well_state);
|
||||||
|
}
|
||||||
|
|
||||||
setWellVariables(well_state);
|
setWellVariables(well_state);
|
||||||
computeWellConnectionPressures(ebos_simulator, well_state);
|
computeWellConnectionPressures(ebos_simulator, well_state);
|
||||||
|
|
||||||
@@ -1860,13 +1872,27 @@ namespace Opm {
|
|||||||
computeWellPotentials(ebos_simulator, well_state, well_potentials);
|
computeWellPotentials(ebos_simulator, well_state, well_potentials);
|
||||||
|
|
||||||
// update/setup guide rates for each well based on the well_potentials
|
// update/setup guide rates for each well based on the well_potentials
|
||||||
well_collection_->setGuideRates(wellsPointer(), phase_usage_, well_potentials);
|
well_collection_->setGuideRatesWithPotentials(wellsPointer(), phase_usage_, well_potentials);
|
||||||
}
|
}
|
||||||
applyVREPGroupControl(well_state);
|
applyVREPGroupControl(well_state);
|
||||||
|
|
||||||
|
if (!wellCollection()->groupControlApplied()) {
|
||||||
|
wellCollection()->applyGroupControls();
|
||||||
|
} else {
|
||||||
wellCollection()->updateWellTargets(well_state.wellRates());
|
wellCollection()->updateWellTargets(well_state.wellRates());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// since the controls are all updated, we should update well_state accordingly
|
||||||
|
const int nw = wells().number_of_wells;
|
||||||
|
for (int w = 0; w < nw; ++w) {
|
||||||
|
WellControls* wc = wells().ctrls[w];
|
||||||
|
const int control = well_controls_get_current(wc);
|
||||||
|
well_state.currentControls()[w] = control;
|
||||||
|
updateWellStateWithTarget(wc, control, w, well_state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user