From 7064b96260ca635950600adeffff20b40df04404 Mon Sep 17 00:00:00 2001 From: Markus Blatt Date: Wed, 21 Nov 2018 10:28:40 +0100 Subject: [PATCH] Test for next neighbour without using abs. Substraction of two unsigned int might cause trouble as the result might have to be signed to be meaningful. In addition there have overload resolution issues with g++-7. --- .../eclipse/EclipseState/Edit/EDITNNC.cpp | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/opm/parser/eclipse/EclipseState/Edit/EDITNNC.cpp b/src/opm/parser/eclipse/EclipseState/Edit/EDITNNC.cpp index 7f7a47515..b1e21758f 100644 --- a/src/opm/parser/eclipse/EclipseState/Edit/EDITNNC.cpp +++ b/src/opm/parser/eclipse/EclipseState/Edit/EDITNNC.cpp @@ -15,6 +15,23 @@ namespace Opm { +bool isNeighbor(const std::array& ijk1, const std::array& ijk2) +{ + if ( (ijk1[0] + 1) == ijk2[0] || (ijk1[0] - 1) == ijk2[0] ) + { + return ijk1[1] == ijk2[1] && ijk1[2] == ijk2[2]; + } + if ( (ijk1[1] + 1) == ijk2[1] || (ijk1[1] - 1) == ijk2[1] ) + { + return ijk1[0] == ijk2[0] && ijk1[2] == ijk2[2]; + } + if( (ijk1[2] + 1) == ijk2[2] || (ijk1[2] - 1) == ijk2[2] ) + { + return ijk1[1] == ijk2[1] && ijk1[1] == ijk2[1]; + } + return false; +} + void readEditNncs(const std::vector< const DeckKeyword* >& editNncsKw, std::vector& editNncs, const GridDims& gridDims) { for (size_t idx_nnc = 0; idx_nnc& editNncsKw, std::vect const double trans = nnc.getRecord(i).getItem(6).get(0); using std::abs; - if ( ( abs(ijk1[0]-ijk2[0]) > 1 ) || ( abs(ijk1[1]-ijk2[1]) > 1 ) || - ( abs(ijk1[2]-ijk2[2]) > 1 ) ) + if ( !isNeighbor(ijk1, ijk2) ) { editNncs.emplace_back(global_index1, global_index2, trans); }