From 2811c7afe38cb59f2f2912f0ec5436ff00674e4e Mon Sep 17 00:00:00 2001 From: Bastien Gorissen <bastien.gorissen@cenaero.be> Date: Fri, 13 Nov 2009 13:54:57 +0000 Subject: [PATCH] Yesterday's commit broke mesh generation for order > 2 in some cases. This fixes the problem. --- Geo/GEdge.cpp | 11 +++++++++++ Geo/GEdge.h | 2 +- Mesh/HighOrder.cpp | 7 +++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index bc07fcf05f..d693619f3d 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 074408fa24..2818522761 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 eecf866a62..a666efa23d 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){ -- GitLab