diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index 150cb77043ff073019103f8632aa3ec310269b8e..ea8158c017de353542df14912ff615aa2ccb6528 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -819,20 +819,20 @@ MTriangle *setHighOrder(MTriangle *t, GFace *gf, getEdgeVertices(gf, t, ve, edgeVertices, linear, nPts); if(nPts == 1){ return new MTriangle6(t->getVertex(0), t->getVertex(1), t->getVertex(2), - ve[0], ve[1], ve[2]); + ve[0], ve[1], ve[2], 0, t->getPartition()); } else{ if(incomplete){ return new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), - ve, nPts + 1); + ve, nPts + 1, 0, t->getPartition()); } else{ MTriangleN incpl(t->getVertex(0), t->getVertex(1), t->getVertex(2), - ve, nPts + 1); + ve, nPts + 1, 0, t->getPartition()); getFaceVertices(gf, &incpl, t, vf, faceVertices, linear, nPts); ve.insert(ve.end(), vf.begin(), vf.end()); return new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), - ve, nPts + 1); + ve, nPts + 1, 0, t->getPartition()); } } } @@ -847,25 +847,29 @@ static MQuadrangle *setHighOrder(MQuadrangle *q, GFace *gf, if(incomplete){ if(nPts == 1){ return new MQuadrangle8(q->getVertex(0), q->getVertex(1), q->getVertex(2), - q->getVertex(3), ve[0], ve[1], ve[2], ve[3]); + q->getVertex(3), ve[0], ve[1], ve[2], ve[3], + 0, q->getPartition()); } else{ return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), - q->getVertex(3), ve, nPts + 1); + q->getVertex(3), ve, nPts + 1, + 0, q->getPartition()); } } else { MQuadrangleN incpl(q->getVertex(0), q->getVertex(1), q->getVertex(2), - q->getVertex(3), ve, nPts + 1); + q->getVertex(3), ve, nPts + 1, 0, q->getPartition()); getFaceVertices(gf, &incpl, q, vf, faceVertices, linear, nPts); ve.insert(ve.end(), vf.begin(), vf.end()); if(nPts == 1){ return new MQuadrangle9(q->getVertex(0), q->getVertex(1), q->getVertex(2), - q->getVertex(3), ve[0], ve[1], ve[2], ve[3], vf[0]); + q->getVertex(3), ve[0], ve[1], ve[2], ve[3], vf[0], + 0, q->getPartition()); } else{ return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), - q->getVertex(3), ve, nPts + 1); + q->getVertex(3), ve, nPts + 1, + 0, q->getPartition()); } } } @@ -907,17 +911,19 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, if(nPts == 1){ tetrahedra2.push_back (new MTetrahedron10(t->getVertex(0), t->getVertex(1), t->getVertex(2), - t->getVertex(3), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5])); + t->getVertex(3), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], + 0, t->getPartition())); } else{ getFaceVertices(gr, t, vf, faceVertices, edgeVertices, linear, nPts); ve.insert(ve.end(), vf.begin(), vf.end()); MTetrahedronN incpl(t->getVertex(0), t->getVertex(1), t->getVertex(2), - t->getVertex(3), ve, nPts + 1); + t->getVertex(3), ve, nPts + 1, 0, t->getPartition()); getRegionVertices(gr, &incpl, t, vr, linear, nPts); ve.insert(ve.end(), vr.begin(), vr.end()); MTetrahedron *n = new MTetrahedronN(t->getVertex(0), t->getVertex(1), - t->getVertex(2), t->getVertex(3), ve, nPts + 1); + t->getVertex(2), t->getVertex(3), ve, nPts + 1, + 0, t->getPartition()); tetrahedra2.push_back(n); } delete t; @@ -936,7 +942,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, h->getVertex(3), h->getVertex(4), h->getVertex(5), h->getVertex(6), h->getVertex(7), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], ve[9], ve[10], - ve[11])); + ve[11], 0, h->getPartition())); } else{ getFaceVertices(gr, h, vf, faceVertices, edgeVertices, linear, nPts); @@ -948,7 +954,8 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, h->getVertex(3), h->getVertex(4), h->getVertex(5), h->getVertex(6), h->getVertex(7), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], ve[9], ve[10], - ve[11], vf[0], vf[1], vf[2], vf[3], vf[4], vf[5], v)); + ve[11], vf[0], vf[1], vf[2], vf[3], vf[4], vf[5], v, + 0, h->getPartition())); } } else { @@ -956,12 +963,13 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, ve.insert(ve.end(), vf.begin(), vf.end()); MHexahedronN incpl(h->getVertex(0), h->getVertex(1), h->getVertex(2), h->getVertex(3), h->getVertex(4), h->getVertex(5), - h->getVertex(6), h->getVertex(7), ve, nPts + 1); + h->getVertex(6), h->getVertex(7), ve, nPts + 1, 0, h->getPartition()); getRegionVertices(gr, &incpl, h, vr, linear, nPts); ve.insert(ve.end(), vr.begin(), vr.end()); MHexahedron *n = new MHexahedronN(h->getVertex(0), h->getVertex(1), h->getVertex(2), h->getVertex(3), h->getVertex(4), h->getVertex(5), - h->getVertex(6), h->getVertex(7), ve, nPts + 1); + h->getVertex(6), h->getVertex(7), ve, nPts + 1, + 0, h->getPartition()); hexahedra2.push_back(n); } delete h; @@ -977,7 +985,8 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, prisms2.push_back (new MPrism15(p->getVertex(0), p->getVertex(1), p->getVertex(2), p->getVertex(3), p->getVertex(4), p->getVertex(5), - ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8])); + ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], + 0, p->getPartition())); } else{ if (nPts == 1) { @@ -986,7 +995,8 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, (new MPrism18(p->getVertex(0), p->getVertex(1), p->getVertex(2), p->getVertex(3), p->getVertex(4), p->getVertex(5), ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8], - vf[0], vf[1], vf[2])); + vf[0], vf[1], vf[2], + 0, p->getPartition())); } else { Msg::Error("PrismN generation not implemented"); @@ -1021,16 +1031,18 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, if (nPts == 1) { if(incomplete) { pyramids2.push_back(new MPyramid13(p->getVertex(0), p->getVertex(1), - p->getVertex(2), p->getVertex(3), - p->getVertex(4), ve[0], ve[1], ve[2], - ve[3], ve[4], ve[5], ve[6], ve[7])); + p->getVertex(2), p->getVertex(3), + p->getVertex(4), ve[0], ve[1], ve[2], + ve[3], ve[4], ve[5], ve[6], ve[7], + 0, p->getPartition())); } else { getFaceVertices(gr, p, vf, faceVertices, edgeVertices, linear, nPts); pyramids2.push_back (new MPyramid14(p->getVertex(0), p->getVertex(1), p->getVertex(2), - p->getVertex(3), p->getVertex(4), ve[0], ve[1], ve[2], - ve[3], ve[4], ve[5], ve[6], ve[7], vf[0])); + p->getVertex(3), p->getVertex(4), ve[0], ve[1], ve[2], + ve[3], ve[4], ve[5], ve[6], ve[7], vf[0], + 0, p->getPartition())); } } else { @@ -1171,7 +1183,8 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, } ve.insert(ve.end(), vr.begin(), vr.end()); MPyramid *n = new MPyramidN(p->getVertex(0), p->getVertex(1), p->getVertex(2), - p->getVertex(3), p->getVertex(4), ve, nPts + 1); + p->getVertex(3), p->getVertex(4), ve, nPts + 1, + 0, p->getPartition()); pyramids2.push_back(n); SPoint3 test_pnt; n->pnt(-1,-1,0, test_pnt); @@ -1193,7 +1206,7 @@ static void setFirstOrder(GEntity *e, std::vector<T*> &elements, bool onlyVisibl std::vector<MVertex*> v1; for(int j = 0; j < n; j++) v1.push_back(ele->getVertex(j)); - elements1.push_back(new T(v1)); + elements1.push_back(new T(v1, 0, ele->getPartition())); delete ele; } elements = elements1; @@ -1547,12 +1560,12 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible) MTriangle *t = (*it)->triangles[i]; std::vector<MVertex*> vf, vt; int nPts = t->getPolynomialOrder() - 1; - MTriangle TEMP (t->getVertex(0), t->getVertex(1), t->getVertex(2)); + MTriangle TEMP (t->getVertex(0), t->getVertex(1), t->getVertex(2), 0, t->getPartition()); getFaceVertices (*it, t, t, vf, faceVertices, false, nPts); for (int j=3;j<t->getNumVertices();j++)vt.push_back(t->getVertex(j)); vt.insert(vt.end(), vf.begin(), vf.end()); MTriangleN *newTr = new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), - vt, nPts + 1); + vt, nPts + 1, 0, t->getPartition()); newT.push_back(newTr); delete t; @@ -1563,13 +1576,13 @@ void SetHighOrderComplete(GModel *m, bool onlyVisible) MQuadrangle *t = (*it)->quadrangles[i]; std::vector<MVertex*> vf, vt; int nPts = t->getPolynomialOrder() - 1; - MQuadrangle TEMP (t->getVertex(0), t->getVertex(1), t->getVertex(2), t->getVertex(3)); + MQuadrangle TEMP (t->getVertex(0), t->getVertex(1), t->getVertex(2), t->getVertex(3), 0, t->getPartition()); getFaceVertices (*it, t, &TEMP, vf, faceVertices, false, nPts); for (int j=4;j<t->getNumVertices();j++)vt.push_back(t->getVertex(j)); vt.insert(vt.end(), vf.begin(), vf.end()); newQ.push_back(new MQuadrangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), t->getVertex(3), - vt, nPts + 1)); + vt, nPts + 1, 0, t->getPartition())); delete t; } (*it)->quadrangles = newQ; @@ -1601,7 +1614,7 @@ void SetHighOrderInComplete (GModel *m, bool onlyVisible) j < t->getNumVertices(); j++) toDelete.insert(t->getVertex(j)); newT.push_back(new MTriangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), - vt, order)); + vt, order, 0, t->getPartition())); delete t; } (*it)->triangles = newT; @@ -1615,7 +1628,7 @@ void SetHighOrderInComplete (GModel *m, bool onlyVisible) vt.push_back(t->getVertex(j)); newQ.push_back(new MQuadrangleN(t->getVertex(0), t->getVertex(1), t->getVertex(2), t->getVertex(3), - vt, nPts + 1)); + vt, nPts + 1, 0, t->getPartition())); delete t; } (*it)->quadrangles = newQ;