From 8191089fdec9725b08b2cf512d8040dbdb455afd Mon Sep 17 00:00:00 2001 From: Norihiro Watanabe <norihiro.watanabe@ufz.de> Date: Wed, 28 Jan 2015 14:10:03 +0100 Subject: [PATCH] optimise getFace() for Hex and Tet as the number of face nodes is always same --- MeshLib/Elements/HexRule8.cpp | 7 ++++--- MeshLib/Elements/TetRule4.cpp | 9 +++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/MeshLib/Elements/HexRule8.cpp b/MeshLib/Elements/HexRule8.cpp index b049b0b075b..0264ac8d9af 100644 --- a/MeshLib/Elements/HexRule8.cpp +++ b/MeshLib/Elements/HexRule8.cpp @@ -9,6 +9,8 @@ #include "HexRule8.h" +#include <array> + #include "logog/include/logog.hpp" #include "GeoLib/AnalyticalGeometry.h" @@ -53,9 +55,8 @@ const Element* HexRule8::getFace(const Element* e, unsigned i) { if (i < n_faces) { - unsigned nFaceNodes (getNFaceNodes(i)); - Node** nodes = new Node*[nFaceNodes]; - for (unsigned j=0; j<nFaceNodes; j++) + std::array<Node*, 4> nodes; + for (unsigned j=0; j<4; j++) nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j])); return new Quad(nodes); } diff --git a/MeshLib/Elements/TetRule4.cpp b/MeshLib/Elements/TetRule4.cpp index f95ef2b37de..9ecb8868e1a 100644 --- a/MeshLib/Elements/TetRule4.cpp +++ b/MeshLib/Elements/TetRule4.cpp @@ -9,6 +9,8 @@ #include "TetRule4.h" +#include <array> + #include "logog/include/logog.hpp" #include "GeoLib/AnalyticalGeometry.h" @@ -43,11 +45,10 @@ const unsigned TetRule4::edge_nodes[6][2] = const Element* TetRule4::getFace(const Element* e, unsigned i) { - if (i<e->getNFaces()) + if (i<n_faces) { - unsigned nFaceNodes (e->getNFaceNodes(i)); - Node** nodes = new Node*[nFaceNodes]; - for (unsigned j=0; j<nFaceNodes; j++) + std::array<Node*,3> nodes; + for (unsigned j=0; j<3; j++) nodes[j] = const_cast<Node*>(e->getNode(face_nodes[i][j])); return new Tri(nodes); } -- GitLab