diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp index b2817074c79a948846b427d59f8d738c0112493a..69d2b66d19aa312bf115472393bd4c5dbc60a9ec 100644 --- a/Geo/MElementCut.cpp +++ b/Geo/MElementCut.cpp @@ -914,7 +914,8 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN, int reg = getBorderTag(lsTag, c, newElemTags[2][0], borderElemTags[1]); int physTag = (!gePhysicals.size()) ? 0 : getBorderTag(lsTag, c, newPhysTags[2][0], borderPhysTags[1]); elements[2][reg].push_back(tri); - assignLsPhysical(GM, reg, 2, physicals, physTag, lsTag); + if(physTag) + assignLsPhysical(GM, reg, 2, physicals, physTag, lsTag); for(int i = 0; i < 2; i++) if(tri->getDomain(i)) borders[1].insert(std::pair<MElement*, MElement*>(tri->getDomain(i), tri)); @@ -1009,9 +1010,16 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN, else mv[j] = it->second; } } - MQuadrangle *mq = new MQuadrangle(mv[0], mv[1], mv[2], mv[3], 0, 0); - int reg = getElementaryTag(quads[i]->lsTag(), elementary, newElemTags[2]); - elements[3][reg].push_back(mq); + MTriangle *mt0 = new MTriangle(mv[0], mv[1], mv[2], 0, 0); + MTriangle *mt1 = new MTriangle(mv[0], mv[2], mv[3], 0, 0); + if(quads[i]->lsTag() < 0){ + poly[0].push_back(mt0); + poly[0].push_back(mt1); + } + else{ + poly[1].push_back(mt0); + poly[1].push_back(mt1); + } } bool own = (eParent && !e->ownsParent()) ? false : true; @@ -1116,7 +1124,8 @@ static void elementCutMesh(MElement *e, std::vector<gLevelset *> &RPN, int reg = getBorderTag(lsTag, c, newElemTags[1][0], borderElemTags[0]); int physTag = (!gePhysicals.size()) ? 0 : getBorderTag(lsTag, c, newPhysTags[1][0], borderPhysTags[0]); elements[1][reg].push_back(lin); - assignLsPhysical(GM, reg, 1, physicals, physTag, lsTag); + if(physTag) + assignLsPhysical(GM, reg, 1, physicals, physTag, lsTag); for(int i = 0; i < 2; i++) if(lin->getDomain(i)) borders[0].insert(std::pair<MElement*, MElement*>(lin->getDomain(i), lin));