Skip to content
Snippets Groups Projects
Commit 7266748c authored by Gaetan Bricteux's avatar Gaetan Bricteux
Browse files

fix vertex numbering

parent 5e94bfcf
No related branches found
No related tags found
No related merge requests found
...@@ -1448,6 +1448,10 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1448,6 +1448,10 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
fullMatrix<double> verticesLs(nbLs, numVert + 1); fullMatrix<double> verticesLs(nbLs, numVert + 1);
//compute all at once for ls POINTS (type = 11) //compute all at once for ls POINTS (type = 11)
bool lsPoints = false;
for(int i = 0; i < primS; i++)
if(primitives[i]->type() == LSPOINTS) {lsPoints = true; break;}
if(lsPoints){
std::vector<MVertex *> vert; std::vector<MVertex *> vert;
for(unsigned int i = 0; i < gmEntities.size(); i++) { for(unsigned int i = 0; i < gmEntities.size(); i++) {
for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) { for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
...@@ -1459,8 +1463,9 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1459,8 +1463,9 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
((gLevelsetPoints*)primitives[k])->computeLS(vert); ((gLevelsetPoints*)primitives[k])->computeLS(vert);
} }
} }
}
//compute and store levelset values //compute and store levelset values + create new nodes
for(unsigned int i = 0; i < gmEntities.size(); i++) { for(unsigned int i = 0; i < gmEntities.size(); i++) {
for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) { for(unsigned int j = 0; j < gmEntities[i]->getNumMeshVertices(); j++) {
MVertex *vi = gmEntities[i]->getMeshVertex(j); MVertex *vi = gmEntities[i]->getMeshVertex(j);
...@@ -1470,6 +1475,9 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1470,6 +1475,9 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
verticesLs(k, vi->getIndex()) = (*primitives[k])(vi->x(), vi->y(), vi->z()); verticesLs(k, vi->getIndex()) = (*primitives[k])(vi->x(), vi->y(), vi->z());
if(primS > 1) if(primS > 1)
verticesLs(k, vi->getIndex()) = (*ls)(vi->x(), vi->y(), vi->z()); verticesLs(k, vi->getIndex()) = (*ls)(vi->x(), vi->y(), vi->z());
MVertex *vn = new MVertex(vi->x(), vi->y(), vi->z(), 0, vi->getNum());
vertexMap[vi->getNum()] = vn;
} }
} }
...@@ -1604,6 +1612,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1604,6 +1612,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
} }
#if 0 #if 0
int numElements = 0;
for(int i = 0; i < 10; i++) { for(int i = 0; i < 10; i++) {
printf(" - element type : %d\n", i); printf(" - element type : %d\n", i);
for(std::map<int, std::vector<MElement*> >::iterator it = elements[i].begin(); for(std::map<int, std::vector<MElement*> >::iterator it = elements[i].begin();
...@@ -1615,7 +1624,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1615,7 +1624,7 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
if(e->getParent()) printf(" par=%d (%d)",e->getParent()->getNum(),e->ownsParent()); if(e->getParent()) printf(" par=%d (%d)",e->getParent()->getNum(),e->ownsParent());
if(e->getDomain(0)) printf(" d0=%d",e->getDomain(0)->getNum()); if(e->getDomain(0)) printf(" d0=%d",e->getDomain(0)->getNum());
if(e->getDomain(1)) printf(" d1=%d",e->getDomain(1)->getNum()); if(e->getDomain(1)) printf(" d1=%d",e->getDomain(1)->getNum());
printf("\n"); printf("\n"); numElements++;
} }
} }
} }
...@@ -1624,13 +1633,11 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls, ...@@ -1624,13 +1633,11 @@ GModel *buildCutMesh(GModel *gm, gLevelset *ls,
for(std::map<int, std::map<int, std::string> >::iterator it=physicals[i].begin();it!=physicals[i].end();it++) for(std::map<int, std::map<int, std::string> >::iterator it=physicals[i].begin();it!=physicals[i].end();it++)
for(std::map<int, std::string>::iterator it2 = it->second.begin(); it2!=it->second.end(); it2++) for(std::map<int, std::string>::iterator it2 = it->second.begin(); it2!=it->second.end(); it2++)
printf(" dim=%d reg=%d phys=%d \"%s\"\n",i,it->first,it2->first,it2->second.c_str()); printf(" dim=%d reg=%d phys=%d \"%s\"\n",i,it->first,it2->first,it2->second.c_str());
printf("\n"); printf("new Model : %d elements %d nodes\n\n",numElements,vertexMap.size());
#endif #endif
for(newVerticesContainer::iterator it = newVertices.begin(); for(newVerticesContainer::iterator it = newVertices.begin();
it != newVertices.end(); ++it){ it != newVertices.end(); ++it){
if((*it)->getNum() <= gm->getMaxVertexNumber())
(*it)->forceNum(cutGM->getMaxVertexNumber() + 1);
vertexMap[(*it)->getNum()] = *it; vertexMap[(*it)->getNum()] = *it;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment