From 1907b2d5c950c1898c2f38db5f3bff7ff11e65f8 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 23 Nov 2016 14:43:38 +0000 Subject: [PATCH] report error when edges from different entities share vertices --- Mesh/HighOrder.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index de7d9376db..859cba4c10 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -260,10 +260,15 @@ static void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve, if (!gotVertOnGeo) interpVerticesInExistingEdge(ge, ele, veEdge, nPts); newHOVert.insert(newHOVert.end(), veEdge.begin(), veEdge.end()); - if(increasing) // Add newly created vertices to list - edgeVertices[p].insert(edgeVertices[p].end(), veEdge.begin(), veEdge.end()); - else - edgeVertices[p].insert(edgeVertices[p].end(), veEdge.rbegin(), veEdge.rend()); + if (edgeVertices.count(p) == 0) { + if (increasing) // Add newly created vertices to list + edgeVertices[p].insert(edgeVertices[p].end(), veEdge.begin(), veEdge.end()); + else + edgeVertices[p].insert(edgeVertices[p].end(), veEdge.rbegin(), veEdge.rend()); + } + else { // Vertices already exist + Msg::Error("Edges from different entities share vertices: create a finer mesh"); + } ve.insert(ve.end(), veEdge.begin(), veEdge.end()); } -- GitLab