+ // collect info on all geom types
+
+ list< TElemTypeData > aTElemTypeDatas;
+
+ EEntiteMaillage anEntity = eMAILLE;
+#ifdef _ELEMENTS_BY_DIM_
+ anEntity = eNOEUD_ELEMENT;
+#endif
+ aTElemTypeDatas.push_back(TElemTypeData(anEntity,
+ ePOINT1,
+ nbElemInfo.Nb0DElements() + nodesOf0D.size(),
+ SMDSAbs_0DElement));
+#ifdef _ELEMENTS_BY_DIM_
+ anEntity = eSTRUCT_ELEMENT;
+#endif
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eBALL,
+ FromSmIdType<TInt>(nbElemInfo.NbBalls()),
+ SMDSAbs_Ball));
+#ifdef _ELEMENTS_BY_DIM_
+ anEntity = eARETE;
+#endif
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eSEG2,
+ FromSmIdType<TInt>(nbElemInfo.NbEdges( ORDER_LINEAR )),
+ SMDSAbs_Edge));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eSEG3,
+ FromSmIdType<TInt>(nbElemInfo.NbEdges( ORDER_QUADRATIC )),
+ SMDSAbs_Edge));
+#ifdef _ELEMENTS_BY_DIM_
+ anEntity = eFACE;
+#endif
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eTRIA3,
+ FromSmIdType<TInt>(nbElemInfo.NbTriangles( ORDER_LINEAR )),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eTRIA6,
+ FromSmIdType<TInt>(nbElemInfo.NbTriangles( ORDER_QUADRATIC ) -
+ nbElemInfo.NbBiQuadTriangles()),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eTRIA7,
+ FromSmIdType<TInt>(nbElemInfo.NbBiQuadTriangles()),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eQUAD4,
+ FromSmIdType<TInt>(nbElemInfo.NbQuadrangles( ORDER_LINEAR )),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eQUAD8,
+ FromSmIdType<TInt>(nbElemInfo.NbQuadrangles( ORDER_QUADRATIC ) -
+ nbElemInfo.NbBiQuadQuadrangles()),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eQUAD9,
+ FromSmIdType<TInt>(nbElemInfo.NbBiQuadQuadrangles()),
+ SMDSAbs_Face));
+ if ( polyTypesSupported ) {
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYGONE,
+ FromSmIdType<TInt>(nbElemInfo.NbPolygons( ORDER_LINEAR )),
+ SMDSAbs_Face));
+ // we need one more loop on poly elements to count nb of their nodes
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYGONE,
+ FromSmIdType<TInt>(nbElemInfo.NbPolygons( ORDER_LINEAR )),
+ SMDSAbs_Face));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYGON2,
+ FromSmIdType<TInt>(nbElemInfo.NbPolygons( ORDER_QUADRATIC )),
+ SMDSAbs_Face));
+ // we need one more loop on QUAD poly elements to count nb of their nodes
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYGON2,
+ FromSmIdType<TInt>(nbElemInfo.NbPolygons( ORDER_QUADRATIC )),
+ SMDSAbs_Face));
+ }
+#ifdef _ELEMENTS_BY_DIM_
+ anEntity = eMAILLE;
+#endif
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eTETRA4,
+ FromSmIdType<TInt>(nbElemInfo.NbTetras( ORDER_LINEAR )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eTETRA10,
+ FromSmIdType<TInt>(nbElemInfo.NbTetras( ORDER_QUADRATIC )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePYRA5,
+ FromSmIdType<TInt>(nbElemInfo.NbPyramids( ORDER_LINEAR )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePYRA13,
+ FromSmIdType<TInt>(nbElemInfo.NbPyramids( ORDER_QUADRATIC )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePENTA6,
+ FromSmIdType<TInt>(nbElemInfo.NbPrisms( ORDER_LINEAR )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePENTA15,
+ FromSmIdType<TInt>(nbElemInfo.NbQuadPrisms()),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePENTA18,
+ FromSmIdType<TInt>(nbElemInfo.NbBiQuadPrisms()),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eHEXA8,
+ FromSmIdType<TInt>(nbElemInfo.NbHexas( ORDER_LINEAR )),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eHEXA20,
+ FromSmIdType<TInt>(nbElemInfo.NbHexas( ORDER_QUADRATIC )-
+ nbElemInfo.NbTriQuadHexas()),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eHEXA27,
+ FromSmIdType<TInt>(nbElemInfo.NbTriQuadHexas()),
+ SMDSAbs_Volume));
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ eOCTA12,
+ FromSmIdType<TInt>(nbElemInfo.NbHexPrisms()),
+ SMDSAbs_Volume));
+ if ( polyTypesSupported ) {
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYEDRE,
+ FromSmIdType<TInt>(nbElemInfo.NbPolyhedrons()),
+ SMDSAbs_Volume));
+ // we need one more loop on poly elements to count nb of their nodes
+ aTElemTypeDatas.push_back( TElemTypeData(anEntity,
+ ePOLYEDRE,
+ FromSmIdType<TInt>(nbElemInfo.NbPolyhedrons()),
+ SMDSAbs_Volume));
+ }