From cce0d5890165f0b32c057df6e833fcd150fa5f82 Mon Sep 17 00:00:00 2001 From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be> Date: Mon, 26 Nov 2007 15:08:34 +0000 Subject: [PATCH] *** empty log message *** --- Mesh/meshGRegionDelaunayInsertion.cpp | 28 ++++++++++++------------- Mesh/meshGRegionLocalMeshMod.cpp | 30 ++++++++++++++++----------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/Mesh/meshGRegionDelaunayInsertion.cpp b/Mesh/meshGRegionDelaunayInsertion.cpp index 83e3eab036..d104bb134d 100644 --- a/Mesh/meshGRegionDelaunayInsertion.cpp +++ b/Mesh/meshGRegionDelaunayInsertion.cpp @@ -1,4 +1,4 @@ -// $Id: meshGRegionDelaunayInsertion.cpp,v 1.21 2007-11-26 14:34:10 remacle Exp $ +// $Id: meshGRegionDelaunayInsertion.cpp,v 1.22 2007-11-26 15:08:34 remacle Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -21,7 +21,7 @@ #include "OS.h" #include "BackgroundMesh.h" -#include "edgeSwap.h" +#include "meshGRegionLocalMeshMod.h" #include "meshGRegionDelaunayInsertion.h" #include "GModel.h" #include "GRegion.h" @@ -475,18 +475,18 @@ void gmshOptimizeMesh (CONTAINER &allTets, DATA &vSizes) } } - // relocate vertices -// for (typename CONTAINER::iterator it = allTets.begin();it!=allTets.end();++it) -// { -// if (!(*it)->isDeleted()){ -// double vol; -// double qq = qmTet((*it)->tet(),QMTET_2,&vol); -// if (qq < .5) -// for (int i=0;i<4;i++){ -// gmshSmoothVertex(*it,i); -// } -// } -// } + // relocate vertices +// for (typename CONTAINER::iterator it = allTets.begin();it!=allTets.end();++it) +// { +// if (!(*it)->isDeleted()){ +// double vol; +// double qq = qmTet((*it)->tet(),QMTET_2,&vol); +// if (qq < .5) +// for (int i=0;i<4;i++){ +// gmshSmoothVertex(*it,i); +// } +// } +// } // if no new tet is created, leave diff --git a/Mesh/meshGRegionLocalMeshMod.cpp b/Mesh/meshGRegionLocalMeshMod.cpp index 87a4757c84..58ef0efc4d 100644 --- a/Mesh/meshGRegionLocalMeshMod.cpp +++ b/Mesh/meshGRegionLocalMeshMod.cpp @@ -5,6 +5,7 @@ static int efaces[6][2] = {{0,2},{0,1},{1,2},{0,3},{2,3},{1,3}}; static int enofaces[6][2] = {{1,3},{2,3},{0,3},{1,2},{0,1},{0,2}}; static int facesXedges[4][3] = {{0,1,3},{1,2,5},{0,2,4},{3,4,5}}; static int faces[4][3] = {{0,1,2},{0,2,3},{0,1,3},{1,2,3}}; +static int vFac[4][3] = {{0,1,2},{0,2,3},{0,1,3},{1,2,3}}; // as input, we give a tet and an edge, as return, we get // all tets that share this edge and all vertices that are @@ -350,23 +351,28 @@ void gmshEdgeSwap (std::vector<MTet4 *> &newTets, void gmshBuildVertexCavity_recur ( MTet4 *t, MVertex *v, std::vector<MTet4*> &cavity){ + int iV=-1; for (int i=0; i<4; i++){ - MTet4 *neigh = t->getNeigh(i); + if (t->tet()->getVertex(i) == v){ + iV = i; + break; + } + } + if (iV==-1)throw; + for (int i=0; i<3; i++){ + MTet4 *neigh = t->getNeigh(vFac[iV][i]); if (neigh){ - bool foundv = false; - for (int j=0;j<4;j++){if (t->tet()->getVertex(j) == v){foundv = true; break;}} - if (foundv) - { - bool found = false; - for (int j=0;j<cavity.size();j++){if (cavity[j] == neigh){found = true; break;}} - if (!found){ - cavity.push_back(neigh); - gmshBuildVertexCavity_recur ( neigh,v,cavity); - } - } + bool found = false; + for (int j=0;j<cavity.size();j++){if (cavity[j] == neigh){found = true; break;}} + if (!found){ + cavity.push_back(neigh); + gmshBuildVertexCavity_recur ( neigh,v,cavity); + } } } } + + void gmshSmoothVertex ( MTet4 *t, int iVertex){ std::vector<MTet4*> cavity; -- GitLab