diff --git a/Geo/MElement.cpp b/Geo/MElement.cpp index d6322bdacb311cb8233437626ed0847e79b332bd..ad3e570db064bc392f74708ebfbb155242efc205 100644 --- a/Geo/MElement.cpp +++ b/Geo/MElement.cpp @@ -52,92 +52,6 @@ MElement::MElement(int num, int part) : _visible(1) } } -MElement* MElement::createElement(int tag, const std::vector<MVertex*> &vertices, - int num, int part) -{ - const int type = ElementType::ParentTypeFromTag(tag); - const int order = ElementType::OrderFromTag(tag); - const bool serendipity = ElementType::SerendipityFromTag(tag) > 1; - - if (order == 0) { - Msg::Error("p0 elements can not be created (tag %d)", tag); - return NULL; - } - - switch (type) { - - case TYPE_PNT: - return new MPoint(vertices, num, part); - - case TYPE_LIN: - if (order == 1) - return new MLine(vertices, num, part); - else if (order == 2) - return new MLine3(vertices, num, part); - else - return new MLineN(vertices, num, part); - - case TYPE_TRI: - if (order == 1) - return new MTriangle(vertices, num, part); - else if (order == 2) - return new MTriangle6(vertices, num, part); - else - return new MTriangleN(vertices, order, num, part); - - case TYPE_QUA: - if (order == 1) - return new MQuadrangle(vertices, num, part); - else if (order == 2 && serendipity) - return new MQuadrangle8(vertices, num, part); - else if (order == 2) - return new MQuadrangle9(vertices, num, part); - else - return new MQuadrangleN(vertices, order, num, part); - - case TYPE_TET: - if (order == 1) - return new MTetrahedron(vertices, num, part); - else if (order == 2) - return new MTetrahedron10(vertices, num, part); - else - return new MTetrahedronN(vertices, order, num, part); - - case TYPE_PYR: - if (order == 1) - return new MPyramid(vertices, num, part); - else - return new MPyramidN(vertices, order, num, part); - - case TYPE_PRI: - if (order == 1) - return new MPrism(vertices, num, part); - else if (order == 2 && serendipity) - return new MPrism15(vertices, num, part); - else if (order == 2) - return new MPrism18(vertices, num, part); - else - return new MPrismN(vertices, order, num, part); - - case TYPE_TRIH: - return new MTrihedron(vertices, num, part); - - case TYPE_HEX: - if (order == 1) - return new MHexahedron(vertices, num, part); - else if (order == 2 && serendipity) - return new MHexahedron20(vertices, num, part); - else if (order == 2) - return new MHexahedron27(vertices, num, part); - else - return new MHexahedronN(vertices, order, num, part); - - default: - break; - } - return NULL; -} - void MElement::setTolerance(const double tol) { _isInsideTolerance = tol; diff --git a/Geo/MElement.h b/Geo/MElement.h index 8c3b84b5e045d323d17b65017124d035a88bccf1..50fc874c3c981e58cd4220eba04a6df7fc45660f 100644 --- a/Geo/MElement.h +++ b/Geo/MElement.h @@ -47,10 +47,6 @@ class MElement MElement(int num=0, int part=0); virtual ~MElement(){} - // Create an element from tag - static MElement* createElement(int tag, const std::vector<MVertex*>&, - int num=0, int part=0); - // set/get the tolerance for isInside() test static void setTolerance(const double tol); static double getTolerance(); diff --git a/Mesh/meshGFaceRecombine.cpp b/Mesh/meshGFaceRecombine.cpp index 730710d27f3bd5d86d13d22ceaa5ed54f7d5d2f4..f2bc44a43a70aca0e1443c4e567a6c1cd02dac72 100644 --- a/Mesh/meshGFaceRecombine.cpp +++ b/Mesh/meshGFaceRecombine.cpp @@ -117,6 +117,7 @@ namespace { for (int i = 0; i < numEdges; ++i) { edges[i]->print(); } + delete[] v; return false; } for (int i = 2; i < numEdges; ++i) { @@ -129,6 +130,7 @@ namespace { for (int i = 0; i < numEdges; ++i) { edges[i]->print(); } + delete[] v; return false; } } @@ -138,6 +140,7 @@ namespace { for (int i = 0; i < numEdges; ++i) { edges[i]->print(); } + delete[] v; return false; } delete[] v; @@ -4443,6 +4446,8 @@ double Rec2DVertex::/*vertQual_*/getGainMerge(const Rec2DVertex *rv, sumQualEdge -= Recombine2D::getWeightEdgeBase() * edges[i]->getQual(); } + delete[] numAngle; + delete[] qualAngle; return Rec2DVertex::getQual(sumQualAngle/sumAngle, sumQualEdge/sumEdge, numElem) - getQual() - rv->getQual() ; @@ -4484,6 +4489,8 @@ double Rec2DVertex::/*vertEdgeQual_*/getGainMerge(const Rec2DVertex *rv) const int numElem = _elements.size() + rv->_elements.size() - 4; ans += getQualDegree(numElem) + sumQualAngle / sumAngle; + delete[] qualAngle; + delete[] angleWeight; return ans; }