mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Call SingleWellState::update_targets for ACTIONX affected wells
This commit is contained in:
parent
869de90b56
commit
fd5640774b
@ -1317,7 +1317,7 @@ public:
|
||||
const auto& wellpi = this->fetchWellPI(reportStep, *action, schedule, matching_wells);
|
||||
|
||||
auto affected_wells = schedule.applyAction(reportStep, TimeService::from_time_t(simTime), *action, actionResult, wellpi);
|
||||
this->wellModel_.updateEclWells(reportStep, affected_wells);
|
||||
this->wellModel_.updateEclWells(reportStep, affected_wells, summaryState);
|
||||
if (!affected_wells.empty())
|
||||
commit_wellstate = true;
|
||||
actionState.add_run(*action, simTime, std::move(actionResult));
|
||||
|
@ -1447,7 +1447,8 @@ actionOnBrokenConstraints(const Group& group,
|
||||
void
|
||||
BlackoilWellModelGeneric::
|
||||
updateEclWells(const int timeStepIdx,
|
||||
const std::unordered_set<std::string>& wells)
|
||||
const std::unordered_set<std::string>& wells,
|
||||
const SummaryState& st)
|
||||
{
|
||||
for (const auto& wname : wells) {
|
||||
auto well_iter = std::find_if(this->wells_ecl_.begin(), this->wells_ecl_.end(),
|
||||
@ -1476,6 +1477,7 @@ updateEclWells(const int timeStepIdx,
|
||||
|
||||
ws.updateStatus( well.getStatus() );
|
||||
ws.reset_connection_factors(pd);
|
||||
ws.update_targets(well, st);
|
||||
this->prod_index_calc_[well_index].reInit(well);
|
||||
}
|
||||
}
|
||||
|
@ -128,7 +128,8 @@ public:
|
||||
double wellPI(const std::string& well_name) const;
|
||||
|
||||
void updateEclWells(const int timeStepIdx,
|
||||
const std::unordered_set<std::string>& wells);
|
||||
const std::unordered_set<std::string>& wells,
|
||||
const SummaryState& st);
|
||||
|
||||
|
||||
void loadRestartData(const data::Wells& rst_wells,
|
||||
|
@ -251,6 +251,14 @@ void SingleWellState::update_injector_targets(const Well& ecl_well, const Summar
|
||||
else
|
||||
this->bhp = this->perf_data.pressure_first_connection * bhp_safety_factor;
|
||||
}
|
||||
|
||||
void SingleWellState::update_targets(const Well& ecl_well, const SummaryState& st) {
|
||||
if (this->producer)
|
||||
this->update_producer_targets(ecl_well, st);
|
||||
else
|
||||
this->update_injector_targets(ecl_well, st);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -76,6 +76,7 @@ public:
|
||||
void reset_connection_factors(const std::vector<PerforationData>& new_perf_data);
|
||||
void update_producer_targets(const Well& ecl_well, const SummaryState& st);
|
||||
void update_injector_targets(const Well& ecl_well, const SummaryState& st);
|
||||
void update_targets(const Well& ecl_well, const SummaryState& st);
|
||||
void updateStatus(Well::Status status);
|
||||
void init_timestep(const SingleWellState& other);
|
||||
void shut();
|
||||
|
Loading…
Reference in New Issue
Block a user