diff --git a/Geo/MPyramid.cpp b/Geo/MPyramid.cpp index af345dc87a3f7daf8cc316f8b918794826ec3966..37ccd000e87942fcaec56e4d2e3a7697c3912df7 100644 --- a/Geo/MPyramid.cpp +++ b/Geo/MPyramid.cpp @@ -37,13 +37,16 @@ MPyramidN::~MPyramidN() {} int MPyramidN::getNumEdgesRep(bool curved) { - return curved ? 8 * CTX::instance()->mesh.numSubEdges : 8; + // FIXME: remove !getIsAssimilatedSerendipity() when serendip are implemented + return (curved && !getIsAssimilatedSerendipity()) ? + 8 * CTX::instance()->mesh.numSubEdges : 8; } void MPyramidN::getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n) { - if (curved) { + // FIXME: remove !getIsAssimilatedSerendipity() when serendip are implemented + if (curved && !getIsAssimilatedSerendipity()) { int numSubEdges = CTX::instance()->mesh.numSubEdges; static double pp[5][3] = {{-1,-1,0},{1,-1,0},{1,1,0},{-1,1,0},{0,0,1}}; static int ed [8][2] = {{0,1},{0,3},{0,4},{1,2},{1,4},{2,3},{2,4},{3,4}}; @@ -79,7 +82,9 @@ void MPyramidN::getEdgeRep(bool curved, int num, int MPyramidN::getNumFacesRep(bool curved) { - return curved ? 6 * gmsh_SQU(CTX::instance()->mesh.numSubEdges) : 6; + // FIXME: remove !getIsAssimilatedSerendipity() when serendip are implemented + return (curved && !getIsAssimilatedSerendipity()) ? + 6 * gmsh_SQU(CTX::instance()->mesh.numSubEdges) : 6; } static void _myGetFaceRep(MPyramid *pyr, int num, double *x, double *y, double *z, @@ -321,6 +326,8 @@ static void _myGetFaceRep(MPyramid *pyr, int num, double *x, double *y, double * void MPyramidN::getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n) { - if (curved) _myGetFaceRep(this, num, x, y, z, n, CTX::instance()->mesh.numSubEdges); + // FIXME: remove !getIsAssimilatedSerendipity() when serendip are implemented + if (curved && !getIsAssimilatedSerendipity()) + _myGetFaceRep(this, num, x, y, z, n, CTX::instance()->mesh.numSubEdges); else MPyramid::getFaceRep(false, num, x, y, z, n); } diff --git a/Geo/MPyramid.h b/Geo/MPyramid.h index 4e531d8de1567327672dc07e883c6ff1eebc6a2d..05903346f30cf82e874a120ce09a6ed913bd06b0 100644 --- a/Geo/MPyramid.h +++ b/Geo/MPyramid.h @@ -75,7 +75,8 @@ class MPyramid : public MElement { return MEdge(_v[edges_pyramid(num, 0)], _v[edges_pyramid(num, 1)]); } virtual int getNumEdgesRep(bool curved){ return 8; } - virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n) + virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, + SVector3 *n) { static const int f[8] = {0, 1, 1, 2, 0, 3, 2, 3}; MEdge e(getEdge(num)); @@ -97,7 +98,8 @@ class MPyramid : public MElement { return MFace(_v[0], _v[3], _v[2], _v[1]); } virtual int getNumFacesRep(bool curved){ return 6; } - virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n) + virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, + SVector3 *n) { static const int f[6][3] = { {0, 1, 4}, @@ -230,7 +232,6 @@ class MPyramidN : public MPyramid { for (unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order); getFunctionSpace(order); } - MPyramidN(const std::vector<MVertex*> &v, char order, int num=0, int part=0) : MPyramid(v[0], v[1], v[2], v[3], v[4], num, part), _order(order) { @@ -238,13 +239,14 @@ class MPyramidN : public MPyramid { for (unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order); getFunctionSpace(order); } - ~MPyramidN(); - virtual int getPolynomialOrder() const { return _order; } virtual int getNumVertices() const { return 5 + _vs.size(); } virtual MVertex *getVertex(int num){ return num < 5 ? _v[num] : _vs[num - 5]; } - virtual const MVertex *getVertex(int num) const{ return num < 5 ? _v[num] : _vs[num - 5]; } + virtual const MVertex *getVertex(int num) const + { + return num < 5 ? _v[num] : _vs[num - 5]; + } virtual int getNumEdgeVertices() const { return 8 * (_order - 1); } virtual int getNumFaceVertices() const { @@ -319,20 +321,22 @@ class MPyramidN : public MPyramid { } virtual void reverse() { -/* MVertex *tmp; + /* + MVertex *tmp; tmp = _v[1]; _v[1] = _v[2]; _v[2] = tmp; std::vector<MVertex*> inv(_vs.size()); std::vector<int> reverseIndices = _getReverseIndices(_order); for (unsigned int i = 0; i< _vs.size(); i++) inv[i] = _vs[reverseIndices[i + 4] - 4]; - _vs = inv;*/ - + _vs = inv; + */ Msg::Error("Reverse not implemented yet for MPyramidN"); - } - virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n); + virtual void getEdgeRep(bool curved, int num, double *x, double *y, double *z, + SVector3 *n); virtual int getNumEdgesRep(bool curved); - virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, SVector3 *n); + virtual void getFaceRep(bool curved, int num, double *x, double *y, double *z, + SVector3 *n); virtual int getNumFacesRep(bool curved); virtual void getNode(int num, double &u, double &v, double &w) const { diff --git a/Numeric/pyramidalBasis.h b/Numeric/pyramidalBasis.h index abe8d0d45f1d0abb272f8e90d681c0176a2c44e2..6c32e1be164305ea2712947f951331ae7e455f95 100644 --- a/Numeric/pyramidalBasis.h +++ b/Numeric/pyramidalBasis.h @@ -7,12 +7,9 @@ #define PYRAMIDALBASIS_H #include "fullMatrix.h" - #include "nodalBasis.h" #include "BergotBasis.h" - - class pyramidalBasis: public nodalBasis { private: @@ -21,7 +18,7 @@ class pyramidalBasis: public nodalBasis fullMatrix<double> bergotCoefficients; public: - + fullMatrix<double> coefficients; fullMatrix<double> monomials; @@ -37,6 +34,4 @@ class pyramidalBasis: public nodalBasis virtual int getNumShapeFunctions() const; }; - - #endif