X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MeshInfo.hxx;h=8277ed76c189a57c2ad8e23e39b9ca8f98762b99;hp=4c6dba726a1cc72f9c8911231a6c23d2d170ee8b;hb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;hpb=7a65c9fad427b1ccba6b9ccae612296e5092a324 diff --git a/src/SMDS/SMDS_MeshInfo.hxx b/src/SMDS/SMDS_MeshInfo.hxx index 4c6dba726..8277ed76c 100644 --- a/src/SMDS/SMDS_MeshInfo.hxx +++ b/src/SMDS/SMDS_MeshInfo.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -25,11 +25,11 @@ #define SMDS_MeshInfo_HeaderFile #include -using namespace std; #include "SMESH_SMDS.hxx" #include "SMDS_MeshElement.hxx" +#include class SMDS_EXPORT SMDS_MeshInfo { @@ -65,6 +65,8 @@ public: inline int NbPrisms (SMDSAbs_ElementOrder order = ORDER_ANY) const; inline int NbHexPrisms(SMDSAbs_ElementOrder order = ORDER_ANY) const; int NbTriQuadHexas() const { return myNbTriQuadHexas; } + int NbQuadPrisms() const { return myNbQuadPrisms; } + int NbBiQuadPrisms() const { return myNbBiQuadPrisms; } int NbPolyhedrons() const { return myNbPolyhedrons; } protected: @@ -95,7 +97,7 @@ private: int myNbTetras , myNbQuadTetras ; int myNbHexas , myNbQuadHexas, myNbTriQuadHexas; int myNbPyramids, myNbQuadPyramids; - int myNbPrisms , myNbQuadPrisms ; + int myNbPrisms , myNbQuadPrisms, myNbBiQuadPrisms; int myNbHexPrism; int myNbPolyhedrons; @@ -114,7 +116,7 @@ inline SMDS_MeshInfo::SMDS_MeshInfo(): myNbTetras (0), myNbQuadTetras (0), myNbHexas (0), myNbQuadHexas (0), myNbTriQuadHexas(0), myNbPyramids (0), myNbQuadPyramids(0), - myNbPrisms (0), myNbQuadPrisms (0), + myNbPrisms (0), myNbQuadPrisms (0), myNbBiQuadPrisms(0), myNbHexPrism (0), myNbPolyhedrons(0) { @@ -143,26 +145,30 @@ inline SMDS_MeshInfo::SMDS_MeshInfo(): // 15 * // 16 * // 17 * - // 18 * - // 19 * + // 18 * + // 19 // 20 * - // 21 * - // 22 * - // 23 * - // 24 * - // 25 - // 26 + // 21 + // 22 + // 23 + // 24 + // 25 * + // 26 * // 27 * + // 28 * + // 29 * + // 30 * + // 31 * // // So to have a unique index for each type basing on nb of nodes, we use a shift: myShift.resize(SMDSAbs_NbElementTypes, 0); - myShift[ SMDSAbs_Face ] = +15;// 3->18, 4->19, etc. + myShift[ SMDSAbs_Face ] = +22;// 3->25, 4->26, etc. myShift[ SMDSAbs_Edge ] = +14;// 2->16, 3->17 myShift[ SMDSAbs_0DElement ] = +2; // 1->3 myShift[ SMDSAbs_Ball ] = +1; // 1->2 - myNb.resize( index( SMDSAbs_Volume,27 ) + 1, NULL); + myNb.resize( index( SMDSAbs_Face,9 ) + 1, NULL); myNb[ index( SMDSAbs_Node,1 )] = & myNbNodes; myNb[ index( SMDSAbs_0DElement,1 )] = & myNb0DElements; @@ -186,6 +192,7 @@ inline SMDS_MeshInfo::SMDS_MeshInfo(): myNb[ index( SMDSAbs_Volume, 12)] = & myNbHexPrism; myNb[ index( SMDSAbs_Volume, 13)] = & myNbQuadPyramids; myNb[ index( SMDSAbs_Volume, 15)] = & myNbQuadPrisms; + myNb[ index( SMDSAbs_Volume, 18)] = & myNbBiQuadPrisms; myNb[ index( SMDSAbs_Volume, 20)] = & myNbQuadHexas; myNb[ index( SMDSAbs_Volume, 27)] = & myNbTriQuadHexas; } @@ -281,7 +288,7 @@ SMDS_MeshInfo::NbPyramids(SMDSAbs_ElementOrder order) const inline int // NbPrisms SMDS_MeshInfo::NbPrisms (SMDSAbs_ElementOrder order) const -{ return order == ORDER_ANY ? myNbPrisms+myNbQuadPrisms : order == ORDER_LINEAR ? myNbPrisms : myNbQuadPrisms; } +{ return order == ORDER_ANY ? myNbPrisms+myNbQuadPrisms+myNbBiQuadPrisms: order == ORDER_LINEAR ? myNbPrisms : myNbQuadPrisms+myNbBiQuadPrisms; } inline int // NbHexPrisms SMDS_MeshInfo::NbHexPrisms (SMDSAbs_ElementOrder order) const @@ -298,7 +305,7 @@ SMDS_MeshInfo::NbElements(SMDSAbs_ElementType type) const break; case SMDSAbs_Volume: nb = ( myNbTetras+ myNbPyramids+ myNbPrisms+ myNbHexas+ myNbHexPrism+ - myNbQuadTetras+ myNbQuadPyramids+ myNbQuadPrisms+ myNbQuadHexas+ myNbTriQuadHexas+ + myNbQuadTetras+ myNbQuadPyramids+ myNbQuadPrisms+ myNbBiQuadPrisms + myNbQuadHexas+ myNbTriQuadHexas+ myNbPolyhedrons ); break; case SMDSAbs_Face: @@ -346,6 +353,7 @@ SMDS_MeshInfo::NbEntities(SMDSAbs_EntityType type) const case SMDSEntity_TriQuad_Hexa: return myNbTriQuadHexas; case SMDSEntity_Penta: return myNbPrisms; case SMDSEntity_Quad_Penta: return myNbQuadPrisms; + case SMDSEntity_BiQuad_Penta: return myNbBiQuadPrisms; case SMDSEntity_Hexagonal_Prism: return myNbHexPrism; case SMDSEntity_Polyhedra: return myNbPolyhedrons; case SMDSEntity_0D: return myNb0DElements; @@ -384,7 +392,8 @@ SMDS_MeshInfo::NbElementsOfGeom(SMDSAbs_GeometryType geom) const myNbQuadHexas + myNbTriQuadHexas); case SMDSGeom_PENTA: return (myNbPrisms + - myNbQuadPrisms); + myNbQuadPrisms + + myNbBiQuadPrisms); case SMDSGeom_HEXAGONAL_PRISM: return myNbHexPrism; case SMDSGeom_POLYHEDRA: return myNbPolyhedrons; // Discrete: @@ -415,6 +424,7 @@ SMDS_MeshInfo::setNb(const SMDSAbs_EntityType geomType, const int nb) case SMDSEntity_Quad_Edge: myNbQuadEdges = nb; break; case SMDSEntity_Quad_Hexa: myNbQuadHexas = nb; break; case SMDSEntity_Quad_Penta: myNbQuadPrisms = nb; break; + case SMDSEntity_BiQuad_Penta: myNbBiQuadPrisms = nb; break; case SMDSEntity_Quad_Pyramid: myNbQuadPyramids = nb; break; case SMDSEntity_Quad_Quadrangle: myNbQuadQuadrangles = nb; break; case SMDSEntity_Quad_Tetra: myNbQuadTetras = nb; break;