diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index bc07fcf05ffacf66ba915f01ebe35fa94388ebd0..d693619f3dd02a7185780932256c0ff63762913b 100644 --- a/Geo/GEdge.cpp +++ b/Geo/GEdge.cpp @@ -39,6 +39,17 @@ void GEdge::deleteMesh() lines.clear(); } +void GEdge::reverse() +{ + GVertex* tmp=v0; + v0=v1; + v1=tmp; + for (std::vector<MLine*>::iterator line = lines.begin(); + line != lines.end(); + line++) + (*line)->revert(); +} + unsigned int GEdge::getNumMeshElements() { return lines.size(); diff --git a/Geo/GEdge.h b/Geo/GEdge.h index 074408fa2462df3742db5ec9f5bc7e0bb737ecc3..2818522761da1d6277b9afd1b12b8268afa6d7ed 100644 --- a/Geo/GEdge.h +++ b/Geo/GEdge.h @@ -45,7 +45,7 @@ class GEdge : public GEntity { GVertex *getBeginVertex() const { return v0; } GVertex *getEndVertex() const { return v1; } - void swapVertices() {GVertex* tmp=v0; v0=v1; v1=tmp;} + void reverse(); // add/delete a face bounded by this edge void addFace(GFace *f); diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index eecf866a62143a2ae9963675e78f198528dc6155..a666efa23d5bb9a21c16974c44da526e32d039ae 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -259,10 +259,9 @@ static void getEdgeVertices(GEdge *ge, MElement *ele, std::vector<MVertex*> &ve, reparamOK &= reparamMeshVertexOnEdge(v1, ge, u1); if(reparamOK){ if (u1 < u0) { - ge->swapVertices(); - double tmp = u0; - u0 = u1; - u1 = tmp; + ge->reverse(); + edge = ele->getEdge(i); + double tmp = u0; u0 = u1; u1 = tmp; } double relax = 1.; while (1){