diff --git a/opm/simulators/wells/WellInterfaceFluidSystem.cpp b/opm/simulators/wells/WellInterfaceFluidSystem.cpp index 67e26feed..0ae7b0002 100644 --- a/opm/simulators/wells/WellInterfaceFluidSystem.cpp +++ b/opm/simulators/wells/WellInterfaceFluidSystem.cpp @@ -131,6 +131,10 @@ checkGroupConstraints(WellState& well_state, const SummaryState& summaryState, DeferredLogger& deferred_logger) const { + + if (!this->wellEcl().isAvailableForGroupControl()) + return false; + auto rCoeff = [this, &group_state](const RegionId id, const int region, const std::optional& prod_gname, std::vector& coeff) { if (prod_gname) diff --git a/opm/simulators/wells/WellState.cpp b/opm/simulators/wells/WellState.cpp index be8fd0699..9254a0cec 100644 --- a/opm/simulators/wells/WellState.cpp +++ b/opm/simulators/wells/WellState.cpp @@ -302,11 +302,19 @@ void WellState::init(const std::vector& cellPressures, auto& ws = this->well(w); if (wells_ecl[w].isProducer()) { const auto controls = wells_ecl[w].productionControls(summary_state); - ws.production_cmode = controls.cmode; + if (controls.cmode == Well::ProducerCMode::GRUP && !wells_ecl[w].isAvailableForGroupControl()) { + ws.production_cmode = Well::ProducerCMode::BHP; // wells always has a BHP control + } else { + ws.production_cmode = controls.cmode; + } } else { const auto controls = wells_ecl[w].injectionControls(summary_state); - ws.injection_cmode = controls.cmode; + if (controls.cmode == Well::InjectorCMode::GRUP && !wells_ecl[w].isAvailableForGroupControl()) { + ws.injection_cmode = Well::InjectorCMode::BHP; // wells always has a BHP control + } else { + ws.injection_cmode = controls.cmode; + } } }