diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index 4806a38d83c27ae2cc47ce95ea06a9c45207ac34..686b9e7befb09d3fabe9c1337a464c70fa0b02ec 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -354,8 +354,8 @@ static void getEdgeVertices(GFace *gf, MElement *ele, std::vector<MVertex*> &ve, } static void getEdgeVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &ve, - std::set<MVertex*> &blocked, edgeContainer &edgeVertices, - bool linear, int nPts = 1, gmshHighOrderSmoother *displ2D = 0, + edgeContainer &edgeVertices, bool linear, + int nPts = 1, gmshHighOrderSmoother *displ2D = 0, gmshHighOrderSmoother *displ3D = 0) { for(int i = 0; i < ele->getNumEdges(); i++){ @@ -366,9 +366,6 @@ static void getEdgeVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &v ve.insert(ve.end(), edgeVertices[p].begin(), edgeVertices[p].end()); else ve.insert(ve.end(), edgeVertices[p].rbegin(), edgeVertices[p].rend()); - blocked.insert(edgeVertices[p].begin(), edgeVertices[p].end()); - blocked.insert(edge.getMinVertex()); - blocked.insert(edge.getMaxVertex()); } else{ std::vector<MVertex*> temp; @@ -543,8 +540,8 @@ static void reorientTrianglePoints(std::vector<MVertex*> &vtcs, int orientation, // KH: check face orientation wrt element ... static void getFaceVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &vf, - std::set<MVertex*> &blocked, faceContainer &faceVertices, - edgeContainer &edgeVertices, bool linear, int nPts = 1) + faceContainer &faceVertices, edgeContainer &edgeVertices, + bool linear, int nPts = 1) { Double_Matrix points; int start = 0; @@ -579,10 +576,6 @@ static void getFaceVertices(GRegion *gr, MElement *ele, std::vector<MVertex*> &v reorientTrianglePoints(vtcs, orientation, swap); else Msg::Error("Error in face lookup for recuperation of high order face nodes"); - blocked.insert(vtcs.begin(), vtcs.end()); - blocked.insert(face.getVertex(0)); - blocked.insert(face.getVertex(1)); - blocked.insert(face.getVertex(2)); } else if(face.getNumVertices() == 4){ // quad face // TODO reorient if more than 1 face vertex @@ -731,7 +724,7 @@ static void setHighOrder(GFace *gf, edgeContainer &edgeVertices, for(unsigned int i = 0; i < gf->quadrangles.size(); i++){ MQuadrangle *q = gf->quadrangles[i]; std::vector<MVertex*> ve, vf; - getEdgeVertices(gf, q, ve, edgeVertices, linear, nPts,displ2D,displ3D); + getEdgeVertices(gf, q, ve, edgeVertices, linear, nPts, displ2D, displ3D); if(incomplete){ quadrangles2.push_back (new MQuadrangle8(q->getVertex(0), q->getVertex(1), q->getVertex(2), @@ -759,16 +752,15 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, std::vector<MTetrahedron*> tetrahedra2; for(unsigned int i = 0; i < gr->tetrahedra.size(); i++){ MTetrahedron *t = gr->tetrahedra[i]; - std::set<MVertex*> blocked; std::vector<MVertex*> ve, vf, vr; - getEdgeVertices(gr, t, ve, blocked, edgeVertices, linear, nPts, displ2D, displ3D); + getEdgeVertices(gr, t, ve, edgeVertices, linear, nPts, displ2D, displ3D); 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])); } else{ - getFaceVertices(gr, t, vf, blocked, faceVertices, edgeVertices, linear, nPts); + 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); @@ -800,8 +792,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, for(unsigned int i = 0; i < gr->hexahedra.size(); i++){ MHexahedron *h = gr->hexahedra[i]; std::vector<MVertex*> ve, vf; - std::set<MVertex*> blocked; - getEdgeVertices(gr, h, ve, blocked, edgeVertices, linear, nPts,displ2D, displ3D); + getEdgeVertices(gr, h, ve, edgeVertices, linear, nPts, displ2D, displ3D); if(incomplete){ hexahedra2.push_back (new MHexahedron20(h->getVertex(0), h->getVertex(1), h->getVertex(2), @@ -811,7 +802,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, ve[11])); } else{ - getFaceVertices(gr, h, vf, blocked, faceVertices, edgeVertices, linear, nPts); + getFaceVertices(gr, h, vf, faceVertices, edgeVertices, linear, nPts); SPoint3 pc = h->barycenter(); MVertex *v = new MVertex(pc.x(), pc.y(), pc.z(), gr); gr->mesh_vertices.push_back(v); @@ -830,8 +821,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, for(unsigned int i = 0; i < gr->prisms.size(); i++){ MPrism *p = gr->prisms[i]; std::vector<MVertex*> ve, vf; - std::set<MVertex*> blocked; - getEdgeVertices(gr, p, ve, blocked, edgeVertices, linear, nPts,displ2D, displ3D); + getEdgeVertices(gr, p, ve, edgeVertices, linear, nPts, displ2D, displ3D); if(incomplete){ prisms2.push_back (new MPrism15(p->getVertex(0), p->getVertex(1), p->getVertex(2), @@ -839,7 +829,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, ve[0], ve[1], ve[2], ve[3], ve[4], ve[5], ve[6], ve[7], ve[8])); } else{ - getFaceVertices(gr, p, vf, blocked, faceVertices, edgeVertices, linear, nPts); + getFaceVertices(gr, p, vf, faceVertices, edgeVertices, linear, nPts); prisms2.push_back (new MPrism18(p->getVertex(0), p->getVertex(1), p->getVertex(2), p->getVertex(3), p->getVertex(4), p->getVertex(5), @@ -854,8 +844,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, for(unsigned int i = 0; i < gr->pyramids.size(); i++){ MPyramid *p = gr->pyramids[i]; std::vector<MVertex*> ve, vf; - std::set<MVertex*> blocked; - getEdgeVertices(gr, p, ve, blocked, edgeVertices, linear, nPts,displ2D, displ3D); + getEdgeVertices(gr, p, ve, edgeVertices, linear, nPts, displ2D, displ3D); if(incomplete){ pyramids2.push_back (new MPyramid13(p->getVertex(0), p->getVertex(1), p->getVertex(2), @@ -863,7 +852,7 @@ static void setHighOrder(GRegion *gr, edgeContainer &edgeVertices, ve[3], ve[4], ve[5], ve[6], ve[7])); } else{ - getFaceVertices(gr, p, vf, blocked, faceVertices, edgeVertices, linear, nPts); + 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],