From 9c2962c6aefdb332745b81728a1457b1bdeb04c2 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Fri, 27 Aug 2010 08:16:12 +0000 Subject: [PATCH] pp --- Mesh/HighOrder.cpp | 52 +++++++++++++++++++++++++++------------------- Mesh/HighOrder.h | 11 ++++------ 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index a11aa2ebe5..1ad6aaba7c 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -652,7 +652,7 @@ static void setHighOrder(GEdge *ge, edgeContainer &edgeVertices, bool linear, ge->deleteVertexArrays(); } -MTriangle* setHighOrder(MTriangle *t, GFace *gf, +MTriangle *setHighOrder(MTriangle *t, GFace *gf, edgeContainer &edgeVertices, faceContainer &faceVertices, bool linear, bool incomplete, int nPts, @@ -688,34 +688,44 @@ MTriangle* setHighOrder(MTriangle *t, GFace *gf, } } } -MQuadrangle *setHighOrder(MQuadrangle *q, GFace *gf, - edgeContainer &edgeVertices, - faceContainer &faceVertices, - bool linear, bool incomplete, int nPts, - highOrderSmoother *displ2D, - highOrderSmoother *displ3D) + +static MQuadrangle *setHighOrder(MQuadrangle *q, GFace *gf, + edgeContainer &edgeVertices, + faceContainer &faceVertices, + bool linear, bool incomplete, int nPts, + highOrderSmoother *displ2D, + highOrderSmoother *displ3D) { std::vector<MVertex*> ve, vf; getEdgeVertices(gf, q, ve, edgeVertices, linear, nPts, displ2D, displ3D); 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]); - }else{ - return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), q->getVertex(3), ve, nPts + 1); + 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]); + } + else{ + return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), + q->getVertex(3), ve, nPts + 1); } - } else { + } + else { if (displ2D && gf->geomType() == GEntity::Plane){ - MQuadrangle incpl(q->getVertex(0), q->getVertex(1), q->getVertex(2), q->getVertex(3)); + MQuadrangle incpl(q->getVertex(0), q->getVertex(1), q->getVertex(2), + q->getVertex(3)); getFaceVertices(gf, &incpl, q, vf, faceVertices, linear, nPts, displ2D, displ3D); }else{ - MQuadrangleN incpl(q->getVertex(0), q->getVertex(1), q->getVertex(2), q->getVertex(3), ve, nPts + 1); + MQuadrangleN incpl(q->getVertex(0), q->getVertex(1), q->getVertex(2), + q->getVertex(3), ve, nPts + 1); getFaceVertices(gf, &incpl, q, vf, faceVertices, linear, nPts, displ2D, displ3D); } 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]); - }else{ - return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), q->getVertex(3), ve, nPts + 1); + 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]); + } + else{ + return new MQuadrangleN(q->getVertex(0), q->getVertex(1), q->getVertex(2), + q->getVertex(3), ve, nPts + 1); } } } @@ -728,8 +738,8 @@ static void setHighOrder(GFace *gf, edgeContainer &edgeVertices, std::vector<MTriangle*> triangles2; for(unsigned int i = 0; i < gf->triangles.size(); i++){ MTriangle *t = gf->triangles[i]; - MTriangle *tNew = setHighOrder(t,gf,edgeVertices,faceVertices, linear, incomplete, - nPts,displ2D,displ3D); + MTriangle *tNew = setHighOrder(t, gf,edgeVertices, faceVertices, linear, incomplete, + nPts, displ2D, displ3D); triangles2.push_back(tNew); delete t; } @@ -1120,7 +1130,7 @@ void SetOrderN(GModel *m, int order, bool linear, bool incomplete) if(displ2D) delete displ2D; if(displ3D) delete displ3D; - // printJacobians(m, "smoothness.pos"); + // printJacobians(m, "smoothness.pos"); double t2 = Cpu(); Msg::StatusBar(2, true, "Done meshing order %d (%g s)", order, t2 - t1); diff --git a/Mesh/HighOrder.h b/Mesh/HighOrder.h index c8f10b9462..c0d073c95c 100644 --- a/Mesh/HighOrder.h +++ b/Mesh/HighOrder.h @@ -23,16 +23,13 @@ class highOrderSmoother; void SetOrder1(GModel *m); void SetOrderN(GModel *m, int order, bool linear=true, bool incomplete=false); - -MTriangle* setHighOrder(MTriangle *t, - GFace *gf, +MTriangle* setHighOrder(MTriangle *t, GFace *gf, edgeContainer &edgeVertices, faceContainer &faceVertices, - bool linear, - bool incomplete, - int nPts = 1, + bool linear, bool incomplete, int nPts = 1, highOrderSmoother *displ2D = 0, highOrderSmoother *displ3D = 0); void checkHighOrderTriangles(const char* cc, GModel *m, - std::vector<MElement*> &bad, double &minJGlob); + std::vector<MElement*> &bad, double &minJGlob); + #endif -- GitLab