From ef2f8b430eb43e329e680303601e54a1d341ca23 Mon Sep 17 00:00:00 2001 From: Gaetan Bricteux <gaetan.bricteux@uclouvain.be> Date: Mon, 28 Nov 2011 16:51:52 +0000 Subject: [PATCH] fix polygon numbering --- Geo/GModelIO_Mesh.cpp | 3 +++ Geo/MElement.cpp | 4 ++-- Geo/MElementCut.cpp | 10 +++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp index 0fa196375c..a188c8b6a3 100644 --- a/Geo/GModelIO_Mesh.cpp +++ b/Geo/GModelIO_Mesh.cpp @@ -617,6 +617,9 @@ static void writeElementMSH(FILE *fp, GModel *model, T *ele, bool saveAll, } model->setMeshElementIndex(ele, num); // should really be a multimap... + + if(CTX::instance()->mesh.saveTri && ele->getNumChildren()) + num += ele->getNumChildren() - 1; } template<class T> diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp index 6f45c85c18..e5f2fed785 100644 --- a/Geo/MElement.cpp +++ b/Geo/MElement.cpp @@ -630,13 +630,13 @@ void MElement::writeMSH(FILE *fp, double version, bool binary, int num, if(CTX::instance()->mesh.saveTri && poly){ for (int i = 0; i < getNumChildren() ; i++){ MElement *t = getChild(i); - t->writeMSH(fp, version, binary, num, elementary, physical, 0, 0, 0, ghosts); + t->writeMSH(fp, version, binary, num++, elementary, physical, 0, 0, 0, ghosts); } return; } else if(CTX::instance()->mesh.saveTri && polyl){ MLine *l = new MLine(getVertex(0), getVertex(1)); - l->writeMSH(fp, version, binary, num, elementary, physical, 0, 0, 0, ghosts); + l->writeMSH(fp, version, binary, num++, elementary, physical, 0, 0, 0, ghosts); delete l; return; } diff --git a/Geo/MElementCut.cpp b/Geo/MElementCut.cpp index ee41a648ac..be041390af 100644 --- a/Geo/MElementCut.cpp +++ b/Geo/MElementCut.cpp @@ -732,7 +732,10 @@ static void elementSplitMesh(MElement *e, fullMatrix<double> &verticesLs, elements[2][reg].push_back(tri); } else if(mf.getNumVertices() == 4){ - MQuadrangle *quad = new MQuadrangle(mf.getVertex(0), mf.getVertex(1), mf.getVertex(2), mf.getVertex(3)); + MQuadrangle *quad = new MQuadrangle(vertexMap[mf.getVertex(0)->getNum()], + vertexMap[mf.getVertex(1)->getNum()], + vertexMap[mf.getVertex(2)->getNum()], + vertexMap[mf.getVertex(3)->getNum()]); elements[3][reg].push_back(quad); } if(physTag) assignLsPhysical(GM, reg, 2, physicals, physTag, gLsTag); @@ -1375,13 +1378,10 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, if(primS > 1) verticesLs(k, vi->getIndex()) = (*ls)(vi->x(), vi->y(), vi->z()); } - else{ + else verticesLs(0, vi->getIndex()) = (*ls)(vi->x(), vi->y(), vi->z()); - //printf("xy = (%g,%g) val= %g(%g) ind=%d\n",vi->x(), vi->y(), verticesLs(0, vi->getIndex()),-vi->x()+0.41, vi->getIndex() ); - } } } - //exit(1); int numEle = gm->getNumMeshElements() + gm->getNumMeshParentElements(); //element number increment for(unsigned int i = 0; i < gmEntities.size(); i++) { -- GitLab