@@ -513,9 +513,9 @@ namespace Opm {
513513 if (event || dyn_status_change) {
514514 try {
515515 well->scaleSegmentRatesAndPressure (this ->wellState ());
516- well->calculateExplicitQuantities (simulator_, this ->wellState (), local_deferredLogger);
516+ well->calculateExplicitQuantities (simulator_, this ->groupStateHelper (), local_deferredLogger);
517517 well->updateWellStateWithTarget (simulator_, this ->groupStateHelper (), this ->wellState (), local_deferredLogger);
518- well->updatePrimaryVariables (simulator_, this ->wellState (), local_deferredLogger);
518+ well->updatePrimaryVariables (this ->groupStateHelper (), local_deferredLogger);
519519 well->solveWellEquation (
520520 simulator_, this ->groupStateHelper (), this ->wellState (), local_deferredLogger
521521 );
@@ -1168,7 +1168,7 @@ namespace Opm {
11681168
11691169 OPM_BEGIN_PARALLEL_TRY_CATCH ();
11701170 for (auto & well : this ->well_container_ ) {
1171- well->solveEqAndUpdateWellState (simulator_, well_state, deferred_logger);
1171+ well->solveEqAndUpdateWellState (simulator_, this -> groupStateHelper (), well_state, deferred_logger);
11721172 }
11731173 OPM_END_PARALLEL_TRY_CATCH (" BlackoilWellModel::doPreStepNetworkRebalance() failed: " ,
11741174 this ->simulator_ .vanguard ().grid ().comm ());
@@ -1402,9 +1402,6 @@ namespace Opm {
14021402
14031403 // TODO: Auto choke combined with RESV control is not supported
14041404 std::vector<Scalar> resv_coeff (Indices::numPhases, 1.0 );
1405- Scalar gratTargetFromSales = 0.0 ;
1406- if (group_state.has_grat_sales_target (group.name ()))
1407- gratTargetFromSales = group_state.grat_sales_target (group.name ());
14081405
14091406 const auto ctrl = group.productionControls (summary_state);
14101407 auto cmode_tmp = ctrl.cmode ;
@@ -1417,7 +1414,7 @@ namespace Opm {
14171414 const Scalar efficiencyFactor = 1.0 ;
14181415 const Group& parentGroup = this ->schedule ().getGroup (group.parent (), reportStepIdx);
14191416 auto target = WellGroupControls<Scalar, IndexTraits>::getAutoChokeGroupProductionTargetRate (
1420- group. name () ,
1417+ group,
14211418 parentGroup,
14221419 this ->groupStateHelper (),
14231420 this ->schedule (),
@@ -1430,16 +1427,12 @@ namespace Opm {
14301427 target_tmp = target.first ;
14311428 cmode_tmp = target.second ;
14321429 }
1433- const auto cmode = cmode_tmp;
1434- using TargetCalculatorType = GroupStateHelpers
1435- ::TargetCalculator<Scalar, IndexTraits>;
1436- TargetCalculatorType tcalc (cmode, FluidSystem::phaseUsage (), resv_coeff,
1437- gratTargetFromSales, nodeName, group_state,
1438- group.has_gpmaint_control (cmode));
1430+ using TargetCalculatorType = GroupStateHelpers::TargetCalculator<Scalar, IndexTraits>;
1431+ TargetCalculatorType tcalc{this ->groupStateHelper (), resv_coeff, group};
14391432 if (!fld_none)
14401433 {
14411434 // Target is set for the autochoke group itself
1442- target_tmp = tcalc.groupTarget (ctrl, local_deferredLogger);
1435+ target_tmp = tcalc.groupTarget (local_deferredLogger);
14431436 }
14441437
14451438 const Scalar orig_target = target_tmp;
@@ -1777,7 +1770,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
17771770 x_local_[i] = x[cells[i]];
17781771 }
17791772 well->recoverWellSolutionAndUpdateWellState (simulator_, x_local_,
1780- this ->wellState (), local_deferredLogger);
1773+ this ->groupStateHelper (), this -> wellState (), local_deferredLogger);
17811774 }
17821775 }
17831776 OPM_END_PARALLEL_TRY_CATCH_LOG (local_deferredLogger,
@@ -1812,7 +1805,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
18121805 for (const auto & well : well_container_) {
18131806 if (well->isOperableAndSolvable () || well->wellIsStopped ()) {
18141807 local_report += well->getWellConvergence (
1815- simulator_, this ->wellState (), B_avg, local_deferredLogger,
1808+ this ->groupStateHelper (), B_avg, local_deferredLogger,
18161809 iterationIdx > param_.strict_outer_iter_wells_ );
18171810 } else {
18181811 ConvergenceReport report;
@@ -1858,7 +1851,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
18581851 {
18591852 // TODO: checking isOperableAndSolvable() ?
18601853 for (auto & well : well_container_) {
1861- well->calculateExplicitQuantities (simulator_, this ->wellState (), deferred_logger);
1854+ well->calculateExplicitQuantities (simulator_, this ->groupStateHelper (), deferred_logger);
18621855 }
18631856 }
18641857
@@ -2101,9 +2094,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
21012094 this ->groupStateHelper (),
21022095 local_deferredLogger);
21032096 const bool under_zero_target =
2104- well->wellUnderZeroGroupRateTarget (this ->simulator_ ,
2105- this ->wellState (),
2106- local_deferredLogger);
2097+ well->wellUnderZeroGroupRateTarget (this ->groupStateHelper (), local_deferredLogger);
21072098 well->updateWellTestState (this ->wellState ().well (wname),
21082099 simulationTime,
21092100 /* writeMessageToOPMLog=*/ true ,
@@ -2280,7 +2271,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
22802271 well->updateWellStateWithTarget (
22812272 simulator_, this ->groupStateHelper (), this ->wellState (), deferred_logger
22822273 );
2283- well->updatePrimaryVariables (simulator_, this ->wellState (), deferred_logger);
2274+ well->updatePrimaryVariables (this ->groupStateHelper (), deferred_logger);
22842275 // There is no new well control change input within a report step,
22852276 // so next time step, the well does not consider to have effective events anymore.
22862277 events.clearEvent (WellState<Scalar, IndexTraits>::event_mask);
@@ -2364,7 +2355,7 @@ ::TargetCalculator<Scalar, IndexTraits>;
23642355 updatePrimaryVariables (DeferredLogger& deferred_logger)
23652356 {
23662357 for (const auto & well : well_container_) {
2367- well->updatePrimaryVariables (simulator_, this ->wellState (), deferred_logger);
2358+ well->updatePrimaryVariables (this ->groupStateHelper (), deferred_logger);
23682359 }
23692360 }
23702361
0 commit comments