diff --git a/opm/simulators/wells/BlackoilWellModel.hpp b/opm/simulators/wells/BlackoilWellModel.hpp index 5f22e4a72..223c74f75 100644 --- a/opm/simulators/wells/BlackoilWellModel.hpp +++ b/opm/simulators/wells/BlackoilWellModel.hpp @@ -294,8 +294,7 @@ namespace Opm { void initPrimaryVariablesEvaluation() const; std::pair - updateWellControls(const bool mandatory_network_balance, DeferredLogger& deferred_logger, - const std::size_t network_update_it); + updateWellControls(const bool mandatory_network_balance, DeferredLogger& deferred_logger); void updateAndCommunicate(const int reportStepIdx, const int iterationIdx, @@ -401,7 +400,6 @@ namespace Opm { // the returned two booleans are {continue_due_to_network, well_group_control_changed}, respectively std::pair updateWellControlsAndNetworkIteration(const bool mandatory_network_balance, const double dt, - const std::size_t network_update_iteration, DeferredLogger& local_deferredLogger); bool updateWellControlsAndNetwork(const bool mandatory_network_balance, diff --git a/opm/simulators/wells/BlackoilWellModelGeneric.cpp b/opm/simulators/wells/BlackoilWellModelGeneric.cpp index fbae81dcd..952270d33 100644 --- a/opm/simulators/wells/BlackoilWellModelGeneric.cpp +++ b/opm/simulators/wells/BlackoilWellModelGeneric.cpp @@ -1292,17 +1292,7 @@ shouldBalanceNetwork(const int reportStepIdx, const int iterationIdx) const } } -bool -BlackoilWellModelGeneric:: -moreNetworkIteration(const int reportStepIdx, - const std::size_t iteration, - const double network_imbalance) const -{ - const auto& balance = schedule()[reportStepIdx].network_balance(); - // Iterate if not converged, and number of iterations is not yet max (NETBALAN item 3). - return iteration < balance.pressure_max_iter() && - network_imbalance > balance.pressure_tolerance(); -} + std::vector BlackoilWellModelGeneric:: diff --git a/opm/simulators/wells/BlackoilWellModelGeneric.hpp b/opm/simulators/wells/BlackoilWellModelGeneric.hpp index e6b4289d2..68a0aec2c 100644 --- a/opm/simulators/wells/BlackoilWellModelGeneric.hpp +++ b/opm/simulators/wells/BlackoilWellModelGeneric.hpp @@ -177,10 +177,6 @@ public: bool shouldBalanceNetwork(const int reportStepIndex, const int iterationIdx) const; - bool moreNetworkIteration(const int reportStepIdx, - const std::size_t iteration, - const double network_imbalance) const; - template void serializeOp(Serializer& serializer) { diff --git a/opm/simulators/wells/BlackoilWellModel_impl.hpp b/opm/simulators/wells/BlackoilWellModel_impl.hpp index 791b6e19b..5639d0772 100644 --- a/opm/simulators/wells/BlackoilWellModel_impl.hpp +++ b/opm/simulators/wells/BlackoilWellModel_impl.hpp @@ -953,14 +953,14 @@ namespace Opm { BlackoilWellModel:: updateWellControlsAndNetwork(const bool mandatory_network_balance, const double dt, DeferredLogger& local_deferredLogger) { + // TODO: adding max_iter and also the iteration that we need to use relaxed tolerance and what happens if not converged? // not necessarily that we always need to update once of the network solutions bool do_network_update = true; bool well_group_control_changed = false; std::size_t network_update_iteration = 0; while (do_network_update) { std::tie(do_network_update, well_group_control_changed) = - updateWellControlsAndNetworkIteration(mandatory_network_balance, dt, - network_update_iteration, local_deferredLogger); + updateWellControlsAndNetworkIteration(mandatory_network_balance, dt,local_deferredLogger); ++network_update_iteration; } return well_group_control_changed; @@ -974,11 +974,10 @@ namespace Opm { BlackoilWellModel:: updateWellControlsAndNetworkIteration(const bool mandatory_network_balance, const double dt, - const std::size_t network_update_iteration, DeferredLogger& local_deferredLogger) { auto [well_group_control_changed, more_network_update] = - updateWellControls(mandatory_network_balance,local_deferredLogger,network_update_iteration); + updateWellControls(mandatory_network_balance, local_deferredLogger); bool alq_updated = false; OPM_BEGIN_PARALLEL_TRY_CATCH(); @@ -1557,8 +1556,7 @@ namespace Opm { template std::pair BlackoilWellModel:: - updateWellControls(const bool mandatory_network_balance, DeferredLogger& deferred_logger, - const std::size_t network_update_it) + updateWellControls(const bool mandatory_network_balance, DeferredLogger& deferred_logger) { const int episodeIdx = ebosSimulator_.episodeIndex(); const auto& network = schedule()[episodeIdx].network(); @@ -1575,7 +1573,8 @@ namespace Opm { if (shouldBalanceNetwork(episodeIdx, iterationIdx) || mandatory_network_balance) { const auto local_network_imbalance = updateNetworkPressures(episodeIdx); const double network_imbalance = comm.max(local_network_imbalance); - more_network_update = moreNetworkIteration(episodeIdx, network_update_it, network_imbalance); + const auto& balance = schedule()[episodeIdx].network_balance(); + more_network_update = network_imbalance > balance.pressure_tolerance(); } bool changed_well_group = false; diff --git a/tests/test_glift1.cpp b/tests/test_glift1.cpp index 3311d73d1..4518a37da 100644 --- a/tests/test_glift1.cpp +++ b/tests/test_glift1.cpp @@ -147,7 +147,7 @@ BOOST_AUTO_TEST_CASE(G1) Opm::DeferredLogger deferred_logger; well_model.calculateExplicitQuantities(deferred_logger); well_model.prepareTimeStep(deferred_logger); - well_model.updateWellControls(false, deferred_logger, 0); + well_model.updateWellControls(false, deferred_logger); well_model.initPrimaryVariablesEvaluation(); Opm::WellInterface *well_ptr = well_model.getWell("B-1H").get(); StdWell *std_well = dynamic_cast(well_ptr);