+ SMDSAbs_EntityType myEntity;
+ SMDSAbs_ElementType myType;
+ SMDSAbs_GeometryType myGeom;
+ bool myIsPoly;
+ bool myIsQuadratic;
+ int myNbCornerNodes;
+ int myNbNodes;
+ int myNbEdges;
+ int myNbFaces;
+
+ CellProps() :
+ myEntity( SMDSEntity_Last ), myType( SMDSAbs_All ), myGeom( SMDSGeom_NONE ),
+ myIsPoly( 0 ), myNbCornerNodes( 0 ),
+ myNbNodes( 0 ), myNbEdges( 0 ), myNbFaces ( 0 )
+ {
+ }
+ void Set( SMDSAbs_EntityType Entity,
+ SMDSAbs_ElementType Type,
+ SMDSAbs_GeometryType Geom,
+ bool IsPoly,
+ int NbCornerNodes,
+ int NbNodes,
+ int NbEdges,
+ int NbFaces)
+ {
+ myEntity = Entity;
+ myType = Type;
+ myGeom = Geom;
+ myIsPoly = IsPoly;
+ myIsQuadratic = ( NbNodes > NbCornerNodes );
+ myNbCornerNodes = NbCornerNodes;
+ myNbNodes = NbNodes;
+ myNbEdges = NbEdges;
+ myNbFaces = NbFaces;
+ }
+ };
+
+ static std::vector< CellProps > theCellProps;
+
+ //! initialize theCellProps
+ void initCellProps()
+ {
+ theCellProps.resize( VTK_NUMBER_OF_CELL_TYPES );
+ CellProps* p = & theCellProps[0];
+ p[ VTK_VERTEX ].
+ Set( SMDSEntity_0D, SMDSAbs_0DElement, SMDSGeom_POINT,
+ /*isPoly=*/0,/*nbCN=*/1,/*nbN=*/1,/*nbE=*/0,/*nbF=*/0 );
+ p[ VTK_LINE ].
+ Set( SMDSEntity_Edge, SMDSAbs_Edge, SMDSGeom_EDGE,
+ /*isPoly=*/0,/*nbCN=*/2,/*nbN=*/2,/*nbE=*/1,/*nbF=*/0 );
+ p[ VTK_QUADRATIC_EDGE ].
+ Set( SMDSEntity_Quad_Edge, SMDSAbs_Edge, SMDSGeom_EDGE,
+ /*isPoly=*/0,/*nbCN=*/2,/*nbN=*/3,/*nbE=*/1,/*nbF=*/0 );
+ p[ VTK_TRIANGLE ].
+ Set( SMDSEntity_Triangle, SMDSAbs_Face, SMDSGeom_TRIANGLE,
+ /*isPoly=*/0,/*nbCN=*/3,/*nbN=*/3,/*nbE=*/3,/*nbF=*/1 );
+ p[ VTK_QUADRATIC_TRIANGLE ].
+ Set( SMDSEntity_Quad_Triangle, SMDSAbs_Face, SMDSGeom_TRIANGLE,
+ /*isPoly=*/0,/*nbCN=*/3,/*nbN=*/6,/*nbE=*/3,/*nbF=*/1 );
+ p[ VTK_BIQUADRATIC_TRIANGLE ].
+ Set( SMDSEntity_BiQuad_Triangle, SMDSAbs_Face, SMDSGeom_TRIANGLE,
+ /*isPoly=*/0,/*nbCN=*/3,/*nbN=*/7,/*nbE=*/3,/*nbF=*/1 );
+ p[ VTK_QUAD].
+ Set( SMDSEntity_Quadrangle, SMDSAbs_Face, SMDSGeom_QUADRANGLE,
+ /*isPoly=*/0,/*nbCN=*/4,/*nbN=*/4,/*nbE=*/4,/*nbF=*/1 );
+ p[ VTK_QUADRATIC_QUAD].
+ Set( SMDSEntity_Quad_Quadrangle, SMDSAbs_Face, SMDSGeom_QUADRANGLE,
+ /*isPoly=*/0,/*nbCN=*/4,/*nbN=*/8,/*nbE=*/4,/*nbF=*/1 );
+ p[ VTK_BIQUADRATIC_QUAD].
+ Set( SMDSEntity_BiQuad_Quadrangle, SMDSAbs_Face, SMDSGeom_QUADRANGLE,
+ /*isPoly=*/0,/*nbCN=*/4,/*nbN=*/9,/*nbE=*/4,/*nbF=*/1 );
+ p[ VTK_POLYGON ].
+ Set( SMDSEntity_Polygon, SMDSAbs_Face, SMDSGeom_POLYGON,
+ /*isPoly=*/1,/*nbCN=*/-1,/*nbN=*/-1,/*nbE=*/-1,/*nbF=*/1 );
+ p[ VTK_QUADRATIC_POLYGON ].
+ Set( SMDSEntity_Quad_Polygon, SMDSAbs_Face, SMDSGeom_POLYGON,
+ /*isPoly=*/1,/*nbCN=*/-2,/*nbN=*/-1,/*nbE=*/-1,/*nbF=*/1 );
+ p[ VTK_TETRA ].
+ Set( SMDSEntity_Tetra, SMDSAbs_Volume, SMDSGeom_TETRA,
+ /*isPoly=*/0,/*nbCN=*/4,/*nbN=*/4,/*nbE=*/6,/*nbF=*/4 );
+ p[ VTK_QUADRATIC_TETRA ].
+ Set( SMDSEntity_Quad_Tetra, SMDSAbs_Volume, SMDSGeom_TETRA,
+ /*isPoly=*/0,/*nbCN=*/4,/*nbN=*/10,/*nbE=*/6,/*nbF=*/4 );
+ p[ VTK_PYRAMID ].
+ Set( SMDSEntity_Pyramid, SMDSAbs_Volume, SMDSGeom_PYRAMID,
+ /*isPoly=*/0,/*nbCN=*/5,/*nbN=*/5,/*nbE=*/8,/*nbF=*/5 );
+ p[ VTK_QUADRATIC_PYRAMID].
+ Set( SMDSEntity_Quad_Pyramid, SMDSAbs_Volume, SMDSGeom_PYRAMID,
+ /*isPoly=*/0,/*nbCN=*/5,/*nbN=*/13,/*nbE=*/8,/*nbF=*/5 );
+ p[ VTK_HEXAHEDRON ].
+ Set( SMDSEntity_Hexa, SMDSAbs_Volume, SMDSGeom_HEXA,
+ /*isPoly=*/0,/*nbCN=*/8,/*nbN=*/8,/*nbE=*/12,/*nbF=*/6 );
+ p[ VTK_QUADRATIC_HEXAHEDRON ].
+ Set( SMDSEntity_Quad_Hexa, SMDSAbs_Volume, SMDSGeom_HEXA,
+ /*isPoly=*/0,/*nbCN=*/8,/*nbN=*/20,/*nbE=*/12,/*nbF=*/6 );
+ p[ VTK_TRIQUADRATIC_HEXAHEDRON ].
+ Set( SMDSEntity_TriQuad_Hexa, SMDSAbs_Volume, SMDSGeom_HEXA,
+ /*isPoly=*/0,/*nbCN=*/8,/*nbN=*/27,/*nbE=*/12,/*nbF=*/6 );
+ p[ VTK_WEDGE ].
+ Set( SMDSEntity_Penta, SMDSAbs_Volume, SMDSGeom_PENTA,
+ /*isPoly=*/0,/*nbCN=*/6,/*nbN=*/6,/*nbE=*/9,/*nbF=*/5 );
+ p[ VTK_QUADRATIC_WEDGE ].
+ Set( SMDSEntity_Quad_Penta, SMDSAbs_Volume, SMDSGeom_PENTA,
+ /*isPoly=*/0,/*nbCN=*/6,/*nbN=*/15,/*nbE=*/9,/*nbF=*/5 );
+ p[ VTK_BIQUADRATIC_QUADRATIC_WEDGE ].
+ Set( SMDSEntity_BiQuad_Penta, SMDSAbs_Volume, SMDSGeom_PENTA,
+ /*isPoly=*/0,/*nbCN=*/6,/*nbN=*/18,/*nbE=*/9,/*nbF=*/5 );
+ p[ VTK_HEXAGONAL_PRISM].
+ Set( SMDSEntity_Hexagonal_Prism, SMDSAbs_Volume, SMDSGeom_HEXAGONAL_PRISM,
+ /*isPoly=*/0,/*nbCN=*/12,/*nbN=*/12,/*nbE=*/18,/*nbF=*/8 );
+ p[ VTK_POLYHEDRON ].
+ Set( SMDSEntity_Polyhedra, SMDSAbs_Volume, SMDSGeom_POLYHEDRA,
+ /*isPoly=*/1,/*nbCN=*/-1,/*nbN=*/-1,/*nbE=*/-1,/*nbF=*/-1 );
+ p[ VTK_POLY_VERTEX].
+ Set( SMDSEntity_Ball, SMDSAbs_Ball, SMDSGeom_BALL,
+ /*isPoly=*/0,/*nbCN=*/1,/*nbN=*/1,/*nbE=*/0,/*nbF=*/0 );