From 5a7222e82a94b4bfd432b41ca56643ee25c18d3a Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Wed, 20 Sep 2017 20:43:39 +0200 Subject: [PATCH] extruded and transfinite regions should be considered as void! --- Mesh/meshGRegionDelaunayInsertion.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp index 8ea7dfe613..c26ea66132 100644 --- a/Mesh/meshGRegionDelaunayInsertion.cpp +++ b/Mesh/meshGRegionDelaunayInsertion.cpp @@ -574,18 +574,28 @@ static void setLcs(MTetrahedron *t, std::map<MVertex*, double,MVertexLessThanNum } } +#include "ExtrudeParams.h" + GRegion *getRegionFromBoundingFaces(GModel *model, std::set<GFace *> &faces_bound) { GModel::riter git = model->firstRegion(); while (git != model->lastRegion()){ - std::list <GFace *> _faces = (*git)->faces(); - if(_faces.size() == faces_bound.size()){ - bool ok = true; - for (std::list<GFace *>::iterator it = _faces.begin(); it != _faces.end(); ++it){ - if(faces_bound.find (*it) == faces_bound.end()) ok = false; + GRegion *gr = *git; + ExtrudeParams *ep = gr->meshAttributes.extrude; + if((ep && ep->mesh.ExtrudeMesh) || + gr->meshAttributes.method == MESH_TRANSFINITE){ + // extruded meshes or transfinite should be considered as "void" + } + else{ + std::list <GFace *> _faces = (*git)->faces(); + if(_faces.size() == faces_bound.size()){ + bool ok = true; + for (std::list<GFace *>::iterator it = _faces.begin(); it != _faces.end(); ++it){ + if(faces_bound.find (*it) == faces_bound.end()) ok = false; + } + if (ok) return *git; } - if (ok) return *git; } ++git; } @@ -1182,7 +1192,7 @@ void insertVerticesInRegion (GRegion *gr, int maxVert, bool _classify) // TEST_IF_BOUNDARY_IS_RECOVERED (gr); - + //printf("sizeof MTet4 = %d sizeof MTetrahedron %d sizeof(MVertex) %d\n", // sizeof(MTet4), sizeof(MTetrahedron), sizeof(MVertex)); -- GitLab