From 8e5c569cf1589783a689996f3f50e60113159b44 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Wed, 29 Sep 2021 15:57:10 +0200 Subject: [PATCH] ENH: explicitly check for invalid edge (PrimitivePatch::findEdge) --- .../primitiveMesh/PrimitivePatch/PrimitivePatch.H | 14 ++++++++++++-- .../PrimitivePatch/PrimitivePatchMeshEdges.C | 6 +++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatch.H b/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatch.H index ef0b045a134..5bd1dfe87c0 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatch.H +++ b/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatch.H @@ -397,14 +397,15 @@ public: // If the point is not found, return -1 label whichPoint(const label gp) const; - //- Return local edge in terms of the mesh points in patch. + //- From patch edge to global edge using meshPoints. edge meshEdge(const label edgei) const; - //- Return local edge in terms of the mesh points in patch. + //- From patch edge to global edge using meshPoints. edge meshEdge(const edge& e) const; //- Search for edge (local point labels) and return its //- index in the edge list or -1 if not found. + // Ignores invalid or out-of-range edges label findEdge(const edge& e) const; //- Return labels of patch edges in the global edge list using @@ -466,6 +467,15 @@ public: bool hasFaceNormals() const { return bool(faceNormalsPtr_); } bool hasPointNormals() const { return bool(pointNormalsPtr_); } + bool hasBoundaryPoints() const { return bool(boundaryPointsPtr_); } + bool hasFaceFaces() const { return bool(faceFacesPtr_); } + bool hasEdgeFaces() const { return bool(edgeFacesPtr_); } + bool hasFaceEdges() const { return bool(faceEdgesPtr_); } + bool hasPointEdges() const { return bool(pointEdgesPtr_); } + bool hasPointFaces() const { return bool(pointFacesPtr_); } + + bool hasMeshPointMap() const { return bool(meshPointMapPtr_); } + // Other patch operations diff --git a/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatchMeshEdges.C b/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatchMeshEdges.C index 43442748f81..95ead63f5cf 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatchMeshEdges.C +++ b/src/OpenFOAM/meshes/primitiveMesh/PrimitivePatch/PrimitivePatchMeshEdges.C @@ -184,12 +184,12 @@ Foam::PrimitivePatch<FaceList, PointField>::findEdge const edge& e ) const { - if (e.start() >= 0 && e.start() < nPoints()) + if (e.valid() && e.first() < nPoints() && e.second() < nPoints()) { // Get pointEdges from the starting point and search all the candidates const edgeList& myEdges = this->edges(); - for (const label patchEdgei : pointEdges()[e.start()]) + for (const label patchEdgei : pointEdges()[e.first()]) { if (e == myEdges[patchEdgei]) { @@ -198,7 +198,7 @@ Foam::PrimitivePatch<FaceList, PointField>::findEdge } } - return -1; // Not found + return -1; // Not found, or invalid edge } -- GitLab