From b3afd0f3610f6854be2996dabf34e5e91997d8ba Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 4 Apr 2017 00:23:34 +0200
Subject: [PATCH] enable mesh extrusion of surface with seam

---
 Mesh/meshGRegionExtruded.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/Mesh/meshGRegionExtruded.cpp b/Mesh/meshGRegionExtruded.cpp
index ac0c1a99c0..8ce236855d 100644
--- a/Mesh/meshGRegionExtruded.cpp
+++ b/Mesh/meshGRegionExtruded.cpp
@@ -143,6 +143,23 @@ static void extrudeMesh(GFace *from, GRegion *to, MVertexRTree &pos)
   std::vector<MVertex*> embedded = from->getEmbeddedMeshVertices();
   mesh_vertices.insert(mesh_vertices.end(), embedded.begin(), embedded.end());
 
+  // add all vertices on surface seams
+  std::set<MVertex*> seam;
+  std::list<GEdge*> l_edges = from->edges();
+  for (std::list<GEdge*>::const_iterator it = l_edges.begin();
+       it != l_edges.end(); ++it){
+    if ((*it)->isSeam(from)){
+      seam.insert((*it)->mesh_vertices.begin(), (*it)->mesh_vertices.end());
+      if((*it)->getBeginVertex())
+        seam.insert((*it)->getBeginVertex()->mesh_vertices.begin(),
+                    (*it)->getBeginVertex()->mesh_vertices.end());
+      if((*it)->getEndVertex())
+        seam.insert((*it)->getEndVertex()->mesh_vertices.begin(),
+                    (*it)->getEndVertex()->mesh_vertices.end());
+    }
+  }
+  mesh_vertices.insert(mesh_vertices.end(), seam.begin(), seam.end());
+
   // create extruded vertices
   for(unsigned int i = 0; i < mesh_vertices.size(); i++){
     MVertex *v = mesh_vertices[i];
-- 
GitLab