From a2c4d7300e65ef0a22481ee38301660216efd379 Mon Sep 17 00:00:00 2001 From: Emilie Marchandise <emilie.marchandise@uclouvain.be> Date: Fri, 28 Oct 2011 12:32:29 +0000 Subject: [PATCH] SplitMesh keeps all elements with positive levelset --- Geo/MElementCut.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp index 69d2b66d19..ab10028bd8 100644 --- a/Geo/MElementCut.cpp +++ b/Geo/MElementCut.cpp @@ -566,10 +566,19 @@ static void elementSplitMesh(MElement *e, fullMatrix<double> &verticesLs, MElement *copy = e->copy(vertexMap, newParents, newDomains); - double lsMean = 0.; - for(int k = 0; k < e->getNumVertices(); k++) - lsMean += verticesLs(0, e->getVertex(k)->getIndex()); - int lsTag = (lsMean < 0) ? 1 : -1; + //split acording to center of gravity + // double lsMean = 0.; + // for(int k = 0; k < e->getNumVertices(); k++) + // lsMean += verticesLs(0, e->getVertex(k)->getIndex()); + // int lsTag = (lsMean < 0) ? 1 : -1; + + //EMI : better for embedded dirichlet with smoothed properties + //split according to values of vertices (keep +) + int lsTag = 1; //negative ls + for(int k = 0; k < e->getNumVertices(); k++){ + double val = verticesLs(0, e->getVertex(k)->getIndex()); + if (val > 0.0) { lsTag = -1; break; } + } switch (eType) { case MSH_TET_4 : -- GitLab