mirror of
https://github.com/OPM/opm-simulators.git
synced 2024-12-28 02:00:59 -06:00
putting all the guide rate update function in one single function
to make sure we only do once checking of the expiration of the guide rates.
This commit is contained in:
parent
42dd7ad56d
commit
12fa7a4ac8
@ -322,10 +322,8 @@ namespace Opm {
|
||||
const auto& summaryState = ebosSimulator_.vanguard().summaryState();
|
||||
std::vector<double> pot(numPhases(), 0.0);
|
||||
const Group& fieldGroup = schedule().getGroup("FIELD", reportStepIdx);
|
||||
WellGroupHelpers::updateGuideRateForProductionGroups(fieldGroup, schedule(), phase_usage_, reportStepIdx, simulationTime, this->wellState(), this->groupState(), comm, &guideRate_, pot);
|
||||
WellGroupHelpers::updateGuideRatesForInjectionGroups(fieldGroup, schedule(), summaryState, phase_usage_, reportStepIdx, this->wellState(), this->groupState(), &guideRate_, local_deferredLogger);
|
||||
WellGroupHelpers::updateGuideRatesForWells(schedule(), phase_usage_, reportStepIdx, simulationTime, this->wellState(), comm, &guideRate_);
|
||||
|
||||
WellGroupHelpers::updateGuideRates(fieldGroup, schedule(), summaryState, this->phase_usage_, reportStepIdx, simulationTime,
|
||||
this->wellState(), this->groupState(), comm, &this->guideRate_, pot, local_deferredLogger);
|
||||
try {
|
||||
// Compute initial well solution for new wells and injectors that change injection type i.e. WAG.
|
||||
for (auto& well : well_container_) {
|
||||
|
@ -1306,6 +1306,27 @@ namespace WellGroupHelpers
|
||||
return std::make_pair(current_rate > target_rate, scale);
|
||||
}
|
||||
|
||||
|
||||
template <class Comm>
|
||||
void updateGuideRates(const Group& group,
|
||||
const Schedule& schedule,
|
||||
const SummaryState& summary_state,
|
||||
const PhaseUsage& pu,
|
||||
const int report_step,
|
||||
const double sim_time,
|
||||
WellState& well_state,
|
||||
const GroupState& group_state,
|
||||
const Comm& comm,
|
||||
GuideRate* guide_rate,
|
||||
std::vector<double>& pot,
|
||||
Opm::DeferredLogger& deferred_logger)
|
||||
{
|
||||
guide_rate->updateGuideRateExpiration(sim_time, report_step);
|
||||
updateGuideRateForProductionGroups(group, schedule, pu, report_step, sim_time, well_state, group_state, comm, guide_rate, pot);
|
||||
updateGuideRatesForInjectionGroups(group, schedule, summary_state, pu, report_step, well_state, group_state, guide_rate, deferred_logger);
|
||||
updateGuideRatesForWells(schedule, pu, report_step, sim_time, well_state, comm, guide_rate);
|
||||
}
|
||||
|
||||
template <class Comm>
|
||||
void updateGuideRateForProductionGroups(const Group& group,
|
||||
const Schedule& schedule,
|
||||
@ -1454,7 +1475,20 @@ namespace WellGroupHelpers
|
||||
const double& simTime, \
|
||||
const WellState& wellState, \
|
||||
const Dune::CollectiveCommunication<__VA_ARGS__>& comm, \
|
||||
GuideRate* guideRate);
|
||||
GuideRate* guideRate); \
|
||||
template \
|
||||
void updateGuideRates<Dune::CollectiveCommunication<__VA_ARGS__>>(const Group& group, \
|
||||
const Schedule& schedule, \
|
||||
const SummaryState& summary_state, \
|
||||
const PhaseUsage& pu, \
|
||||
const int report_step, \
|
||||
const double sim_time, \
|
||||
WellState& well_state, \
|
||||
const GroupState& group_state, \
|
||||
const Dune::CollectiveCommunication<__VA_ARGS__>& comm,\
|
||||
GuideRate* guide_rate, \
|
||||
std::vector<double>& pot,\
|
||||
Opm::DeferredLogger& deferred_logger);
|
||||
|
||||
#if HAVE_MPI
|
||||
INSTANCE_WELLGROUP_HELPERS(MPI_Comm)
|
||||
|
@ -100,6 +100,20 @@ namespace WellGroupHelpers
|
||||
GroupState& group_state,
|
||||
std::vector<double>& groupTargetReduction);
|
||||
|
||||
template <class Comm>
|
||||
void updateGuideRates(const Group& group,
|
||||
const Schedule& schedule,
|
||||
const SummaryState& summary_state,
|
||||
const PhaseUsage& pu,
|
||||
int report_step,
|
||||
double sim_time,
|
||||
WellState& well_state,
|
||||
const GroupState& group_state,
|
||||
const Comm& comm,
|
||||
GuideRate* guide_rate,
|
||||
std::vector<double>& pot,
|
||||
Opm::DeferredLogger& deferred_logge);
|
||||
|
||||
template <class Comm>
|
||||
void updateGuideRateForProductionGroups(const Group& group,
|
||||
const Schedule& schedule,
|
||||
|
Loading…
Reference in New Issue
Block a user