diff --git a/opm/simulators/wells/MultisegmentWellGeneric.cpp b/opm/simulators/wells/MultisegmentWellGeneric.cpp index a6e675590..ed06bd42f 100644 --- a/opm/simulators/wells/MultisegmentWellGeneric.cpp +++ b/opm/simulators/wells/MultisegmentWellGeneric.cpp @@ -37,6 +37,8 @@ #include #include +#include + namespace Opm { @@ -65,6 +67,13 @@ MultisegmentWellGeneric(WellInterfaceGeneric& baseif) const Connection& connection = completion_set.get(perf); if (connection.state() == Connection::State::OPEN) { const int segment_index = segmentNumberToIndex(connection.segment()); + if ( segment_index == -1) { + OPM_THROW(std::logic_error, + fmt::format("COMPSEGS: Well {} has connection in cell {}, {}, {} " + "without associated segment.", baseif_.wellEcl().name(), + connection.getI() + 1, connection.getJ() + 1, + connection.getK() + 1)); + } segment_perforations_[segment_index].push_back(i_perf_wells); baseif.perfDepth()[i_perf_wells] = connection.depth(); const double segment_depth = segmentSet()[segment_index].depth(); diff --git a/opm/simulators/wells/WellState.cpp b/opm/simulators/wells/WellState.cpp index ea0075008..a779ccba3 100644 --- a/opm/simulators/wells/WellState.cpp +++ b/opm/simulators/wells/WellState.cpp @@ -627,6 +627,14 @@ void WellState::initWellStateMSWell(const std::vector& wells_ecl, const Connection& connection = completion_set.get(perf); if (connection.state() == Connection::State::OPEN) { const int segment_index = segment_set.segmentNumberToIndex(connection.segment()); + if ( segment_index == -1) { + OPM_THROW(std::logic_error, + fmt::format("COMPSEGS: Well {} has connection in cell {}, {}, {} " + "without associated segment.", well_ecl.name(), + connection.getI() + 1 , connection.getJ() + 1, + connection.getK() + 1 )); + } + segment_perforations[segment_index].push_back(n_activeperf); n_activeperf++; }