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