]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To support quadratic mesh elements
authorapo <apo@opencascade.com>
Mon, 3 Oct 2005 16:37:21 +0000 (16:37 +0000)
committerapo <apo@opencascade.com>
Mon, 3 Oct 2005 16:37:21 +0000 (16:37 +0000)
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_Convertor_impl.hxx
src/CONVERTOR/VISU_MedConvertor.cxx
src/VISU_I/VISU_CorbaMedConvertor.cxx

index 8b81fe720c4572cf53a32a446afe39078ed4ae6b..dd489e35ac43eb37cc25d90e4bb48f70fbcab86e 100644 (file)
@@ -65,6 +65,8 @@ static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;
 #endif
 
+//#define ENABLE_QUADRATIC
+
 namespace VISU
 {
   //---------------------------------------------------------------
@@ -259,10 +261,9 @@ namespace VISU
 
   //---------------------------------------------------------------
   TSubProfileImpl::TSubProfileImpl():
-    myStatus(eNone)
-  {
-    myGeom = -1;
-  }
+    myStatus(eNone),
+    myGeom(eNONE)
+  {}
 
 
   vtkIdType
@@ -799,7 +800,7 @@ namespace VISU
 
   const TMeshValue& 
   TValForTimeImpl
-  ::GetMeshValue(vtkIdType theGeom) const
+  ::GetMeshValue(EGeometry theGeom) const
   {
     TGeom2Value::const_iterator anIter = myGeom2Value.find(theGeom);
     if(anIter == myGeom2Value.end())
@@ -809,14 +810,14 @@ namespace VISU
   
   TMeshValue& 
   TValForTimeImpl
-  ::GetMeshValue(vtkIdType theGeom)
+  ::GetMeshValue(EGeometry theGeom)
   {
     return myGeom2Value[theGeom];
   }
 
   int
   TValForTimeImpl
-  ::GetNbGauss(vtkIdType theGeom) const
+  ::GetNbGauss(EGeometry theGeom) const
   {
     if(PGaussMeshImpl aGaussMesh = myGaussMesh){
       const TGeom2GaussSubMesh& aGeom2GaussSubMesh = aGaussMesh->myGeom2GaussSubMesh;
@@ -833,42 +834,115 @@ namespace VISU
 
   //---------------------------------------------------------------
   vtkIdType
-  VTKGeom2NbNodes(vtkIdType theGeom)
+  VISUGeom2NbNodes(EGeometry theGeom)
   { 
     switch(theGeom){
-    case VTK_VERTEX: return 1;
-    case VTK_LINE: return 2;
-    case VTK_TRIANGLE: return 3;
-    case VTK_QUAD: return 4;
-    case VTK_TETRA: return 4;
-    case VTK_HEXAHEDRON: return 8;
-    case VTK_WEDGE: return 6;
-    case VTK_PYRAMID: return 5;
-
-    case QUADRATIC_EDGE: return 3;
-    case QUADRATIC_TRIANGLE: return 6;
-    case QUADRATIC_QUAD: return 8;
-    case QUADRATIC_TETRA: return 10;
-    case QUADRATIC_HEXAHEDRON: return 20;
-    case QUADRATIC_WEDGE: return 15;
-    case QUADRATIC_PYRAMID: return 13;
+    case VISU::ePOLYGONE: 
+    case VISU::ePOLYEDRE: 
+      return -1;
+    default:
+      return theGeom % 100;
     }
-    return -1;
   }
 
   vtkIdType
-  VTKGeom2VISU(vtkIdType theGeom)
+  VISUGeom2VTK(EGeometry theGeom)
   { 
     switch(theGeom){
-    case QUADRATIC_EDGE: return VTK_POLY_LINE;
-    case QUADRATIC_TRIANGLE: return VTK_POLYGON;
-    case QUADRATIC_QUAD: return VTK_POLYGON;
-    case QUADRATIC_TETRA: return VTK_CONVEX_POINT_SET;
-    case QUADRATIC_HEXAHEDRON: return VTK_CONVEX_POINT_SET;
-    case QUADRATIC_WEDGE: return VTK_CONVEX_POINT_SET;
-    case QUADRATIC_PYRAMID: return VTK_CONVEX_POINT_SET;
+    case VISU::ePOINT1: 
+      return VTK_VERTEX;
+    case VISU::eSEG2: 
+      return VTK_LINE;
+    case VISU::eTRIA3: 
+      return VTK_TRIANGLE;
+    case VISU::eQUAD4: 
+      return VTK_QUAD;
+    case VISU::eTETRA4: 
+      return VTK_TETRA;
+    case VISU::eHEXA8: 
+      return VTK_HEXAHEDRON;
+    case VISU::ePENTA6: 
+      return VTK_WEDGE;
+    case VISU::ePYRA5: 
+      return VTK_PYRAMID;
+
+    case VISU::ePOLYGONE: 
+      return VTK_POLYGON;
+    case VISU::ePOLYEDRE: 
+      return VTK_CONVEX_POINT_SET;
+
+#ifndef ENABLE_QUADRATIC
+    case VISU::eSEG3: 
+      return VTK_LINE;
+    case VISU::eTRIA6: 
+      return VTK_TRIANGLE;
+    case VISU::eQUAD8: 
+      return VTK_QUAD;
+    case VISU::eTETRA10: 
+      return VTK_TETRA;
+    case VISU::eHEXA20: 
+      return VTK_HEXAHEDRON;
+    case VISU::ePENTA15: 
+      return VTK_WEDGE;
+    case VISU::ePYRA13: 
+      return VTK_PYRAMID;
+
+#else
+
+    case VISU::eSEG3: 
+#ifdef VTK_QUADRATIC_EDGE
+      return VTK_QUADRATIC_EDGE;
+#else
+      return VTK_POLY_LINE;
+#endif
+
+    case VISU::eTRIA6: 
+#ifdef VTK_QUADRATIC_TRIANGLE
+      return VTK_QUADRATIC_TRIANGLE;
+#else
+      return VTK_POLYGON;
+#endif
+
+    case VISU::eQUAD8: 
+#ifdef VTK_QUADRATIC_QUAD
+      return VTK_QUADRATIC_QUAD;
+#else
+      return VTK_POLYGON;
+#endif
+
+    case VISU::eTETRA10: 
+#ifdef VTK_QUADRATIC_TETRA
+      return VTK_QUADRATIC_QUAD;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::eHEXA20: 
+#ifdef VTK_QUADRATIC_HEXAHEDRON
+      return VTK_QUADRATIC_HEXAHEDRON;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::ePENTA15: 
+#ifdef VTK_QUADRATIC_WEDGE
+      return VTK_QUADRATIC_WEDGE;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::ePYRA13: 
+#ifdef VTK_QUADRATIC_PYRAMID
+      return VTK_QUADRATIC_PYRAMID;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+#endif //ENABLE_QUADRATIC
+
+    default:
+      return -1;
     }
-    return theGeom;
   }
 }
 
@@ -1125,7 +1199,8 @@ namespace
     const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
     VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.begin();
     for(vtkIdType i = 0, j = 0; anIter != aGeom2SubMesh.end(); anIter++){
-      const vtkIdType& aGeom = anIter->first;
+      VISU::EGeometry aEGeom = anIter->first;
+      vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
       const VISU::TSubMeshImpl& aSubMesh = anIter->second;
       const VISU::TCell2Connect& anArray = aSubMesh.myCell2Connect;
 
@@ -1133,13 +1208,13 @@ namespace
       if(aGeom2SubMeshID.empty()) 
        EXCEPTION(runtime_error,"GetCells >> There is no elements on the family !!!");
 
-      VISU::TGeom2SubMeshID::const_iterator aGeom2SubMeshIDIter = aGeom2SubMeshID.find(aGeom);
+      VISU::TGeom2SubMeshID::const_iterator aGeom2SubMeshIDIter = aGeom2SubMeshID.find(aEGeom);
       if(aGeom2SubMeshIDIter == aGeom2SubMeshID.end()) 
        continue;
 
       const VISU::TSubMeshID& aSubMeshID = aGeom2SubMeshIDIter->second;
 
-      INITMSG(MYDEBUG,"aGeom = "<<aGeom<<
+      INITMSG(MYDEBUG,"aEGeom = "<<aEGeom<<
              "; aSubMeshID.size() = "<<aSubMeshID.size()<<
              endl);
 
@@ -1147,7 +1222,7 @@ namespace
       for(; aSubMeshIDIter != aSubMeshID.end(); aSubMeshIDIter++, i++){
        vtkIdType anID = *aSubMeshIDIter;
        PrintCells(i,aConnectivity,anArray[anID]);
-       aCellTypesArray->SetValue(j++,(unsigned char)aGeom);
+       aCellTypesArray->SetValue(j++,(unsigned char)aVGeom);
 
        anElemObj2VTKID[anID] = i;
        aMeshID[i] = anID;
@@ -1225,13 +1300,13 @@ namespace
     TGeom2Value::const_iterator anIter = aGeom2Value.begin();
     TVector<float> aDataValues(aNbComp);
     for(int aTupleId = 0; anIter != aGeom2Value.end(); anIter++){
-      int aGeom = anIter->first;
+      EGeometry aEGeom = anIter->first;
       const TMeshValue& aMeshValue = anIter->second;
       
       int aNbElem = aMeshValue.myNbElem;
       int aNbGauss = aMeshValue.myNbGauss;
       INITMSG(MYDEBUG,
-             "- aGeom = "<<aGeom<<
+             "- aEGeom = "<<aEGeom<<
              "; aNbElem = "<<aNbElem<<
              "; aNbComp = "<<aNbComp<<
              "; aNbGauss = "<<aNbGauss<<
@@ -1271,16 +1346,16 @@ namespace
   {
     vtkIdType aNbCells = theSubProfile->myNbCells;
     vtkIdType aCellsSize = theSubProfile->myCellsSize;
-    vtkIdType aVGeom = theSubProfile->myGeom;
-    vtkIdType aNbNodes = VTKGeom2NbNodes(aVGeom);
-    vtkIdType aGeom = VTKGeom2VISU(aVGeom);
+    VISU::EGeometry aEGeom = theSubProfile->myGeom;
+    vtkIdType aNbNodes = VISUGeom2NbNodes(aEGeom);
+    vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
 
     const TSubMeshID& aSubMeshID = theSubProfile->mySubMeshID;
 
     const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
-    VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aVGeom);
+    VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aEGeom);
     if(anIter == aGeom2SubMesh.end())
-      EXCEPTION(runtime_error,"GetCells >> There is no elements for the GEOM("<<aVGeom<<")");
+      EXCEPTION(runtime_error,"GetCells >> There is no elements for the GEOM("<<aEGeom<<")");
     
     const VISU::TSubMeshImpl& aSubMesh = anIter->second;
     const TCell2Connect& aCell2Connect = aSubMesh.myCell2Connect;
@@ -1296,7 +1371,7 @@ namespace
       for(vtkIdType anId = 0, aConnId = 0; anIter != aCell2Connect.end(); anIter++){
        const TConnect& anArray = aCell2Connect[anId];
        PrintCells(aConnId,aConnectivity,anArray);
-       aCellTypesArray->SetValue(anId,(unsigned char)aGeom);
+       aCellTypesArray->SetValue(anId,(unsigned char)aVGeom);
        aConnId += aNbNodes;
        anId++;
       }
@@ -1306,7 +1381,7 @@ namespace
        vtkIdType aSubId = *anIter;
        const TConnect& anArray = aCell2Connect[aSubId];
        PrintCells(aConnId,aConnectivity,anArray);
-       aCellTypesArray->SetValue(anId,(unsigned char)aGeom);
+       aCellTypesArray->SetValue(anId,(unsigned char)aVGeom);
        aConnId += aNbNodes;
        anId++;
       }
@@ -1335,7 +1410,7 @@ namespace
                      const PProfileImpl& theProfile,
                      const PSubProfileImpl& theSubProfile)
   {
-    INITMSG(MYDEBUG,"GetMeshOnSubProfile - aVGeom = "<<theSubProfile->myGeom<<endl);
+    INITMSG(MYDEBUG,"GetMeshOnSubProfile - aEGeom = "<<theSubProfile->myGeom<<endl);
     
     const TVTKSource& aSource = theSubProfile->GetSource();
     if(theSubProfile->myIsVTKDone)
@@ -1449,12 +1524,14 @@ namespace
     TGeom2GaussSubMesh::const_iterator anIter = aGeom2GaussSubMesh.begin();
     TVector<float> aDataValues(aNbComp);
     for(int aTupleId = 0; anIter != aGeom2GaussSubMesh.end(); anIter++){
-      vtkIdType aVGeom = anIter->first;
+      EGeometry aEGeom = anIter->first;
+      vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
+
       PGaussSubMeshImpl aGaussSubMesh = anIter->second;
       if(!aGaussSubMesh->myIsDone)
        continue;
       
-      TGeom2Value::const_iterator anIter2 = aGeom2Value.find(aVGeom);
+      TGeom2Value::const_iterator anIter2 = aGeom2Value.find(aEGeom);
       if(anIter2 == aGeom2Value.end()){
        EXCEPTION(runtime_error,
                  "GetTimeStampOnGaussMesh >> Can't find values for corresponding Gauss Points SubMesh");
@@ -1466,7 +1543,8 @@ namespace
       if(aNbGauss < 1)
        continue;
 
-      INITMSG(MYDEBUG,"- aVGeom = "<<aVGeom<<
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
              "; aNbElem = "<<aNbElem<<
              "; aNbComp = "<<aNbComp<<
              "; aNbGauss = "<<aNbGauss<<
@@ -1684,7 +1762,8 @@ VISU_Convertor_impl
       aSubMeshArr.resize(aGeom2SubMesh.size());
 
       for(vtkIdType anID = 0, aCellID = 0; anIter != aGeom2SubMesh.end(); anIter++, anID++){
-       const vtkIdType& aVGeom = anIter->first;
+       EGeometry aEGeom = anIter->first;
+       vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
        PSubMeshImpl aSubMesh = anIter->second;
        const TVTKSource& aSource = aSubMesh->GetSource();
        aSource->SetPoints(GetPoints(aMesh));
index eae3b60bdff9d0f5701fe96ba4cec1b7d38299da..ad742b6a0435602f582cba6f46c2220b1321e656 100644 (file)
@@ -24,14 +24,19 @@ class VTKViewer_AppendFilter;
 
 namespace VISU
 {
-  const vtkIdType QUADRATIC_EDGE = 30;
-  const vtkIdType QUADRATIC_TRIANGLE = 31;
-  const vtkIdType QUADRATIC_QUAD = 32;
-  const vtkIdType QUADRATIC_TETRA = 33;
-  const vtkIdType QUADRATIC_HEXAHEDRON = 34;
-  const vtkIdType QUADRATIC_WEDGE = 35;
-  const vtkIdType QUADRATIC_PYRAMID = 36;
+  enum EGeometry {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
+                 eQUAD4=204, eTRIA6=206,eQUAD8=208, eTETRA4=304,
+                 ePYRA5=305, ePENTA6=306, eHEXA8=308, eTETRA10=310, 
+                 ePYRA13=313, ePENTA15=315, eHEXA20=320, 
+                 ePOLYGONE=400, ePOLYEDRE=500, eNONE=-1};
 
+  vtkIdType
+  VISUGeom2NbNodes(EGeometry theGeom);
+
+  vtkIdType
+  VISUGeom2VTK(EGeometry theGeom);
+
+  //---------------------------------------------------------------
   using MED::TCSlice;
   using MED::TSlice;
 
@@ -221,7 +226,7 @@ namespace VISU
   {
     TSubProfileImpl();
 
-    vtkIdType myGeom;
+    EGeometry myGeom;
     std::string myName;
 
     virtual 
@@ -239,7 +244,7 @@ namespace VISU
 
   typedef std::map<vtkIdType,vtkIdType> TID2ID;
   typedef TVector<PSubProfileImpl> TSubProfileArr;
-  typedef std::map<vtkIdType,PSubProfileImpl> TGeom2SubProfile;
+  typedef std::map<EGeometry,PSubProfileImpl> TGeom2SubProfile;
 
   struct TProfileImpl: virtual TProfile, 
                       virtual TAppendFilter
@@ -326,7 +331,7 @@ namespace VISU
   //---------------------------------------------------------------
   struct TGaussImpl: virtual TGauss
   {
-    vtkIdType myGeom;
+    EGeometry myGeom;
     std::string myName;
     vtkIdType myNbPoints;
   };
@@ -352,7 +357,7 @@ namespace VISU
 
   //---------------------------------------------------------------
   typedef TVector<PGaussSubMeshImpl> TGaussSubMeshArr;
-  typedef std::map<vtkIdType,PGaussSubMeshImpl> TGeom2GaussSubMesh;
+  typedef std::map<EGeometry,PGaussSubMeshImpl> TGeom2GaussSubMesh;
 
   struct TGaussMeshImpl: virtual TGaussMesh, 
                         virtual TAppendFilter
@@ -416,7 +421,7 @@ namespace VISU
 
 
   //---------------------------------------------------------------
-  typedef std::map<vtkIdType,PSubMeshImpl> TGeom2SubMesh;
+  typedef std::map<EGeometry,PSubMeshImpl> TGeom2SubMesh;
   typedef TVector<PSubMeshImpl> TSubMeshArr;
 
   struct TMeshOnEntityImpl: virtual TMeshOnEntity, 
@@ -457,7 +462,7 @@ namespace VISU
 
 
   //---------------------------------------------------------------
-  typedef std::map<vtkIdType,TSubMeshID> TGeom2SubMeshID;
+  typedef std::map<EGeometry,TSubMeshID> TGeom2SubMeshID;
 
   struct TFamilyImpl: virtual TFamily, 
                      virtual TSource
@@ -581,7 +586,7 @@ namespace VISU
   
 
   //---------------------------------------------------------------
-  typedef std::map<vtkIdType,TMeshValue> TGeom2Value;
+  typedef std::map<EGeometry,TMeshValue> TGeom2Value;
 
   struct TValForTimeImpl: virtual TValForTime
   {
@@ -593,21 +598,16 @@ namespace VISU
     TValForTimeImpl();
 
     const TMeshValue& 
-    GetMeshValue(vtkIdType theGeom) const;
+    GetMeshValue(EGeometry theGeom) const;
 
     TMeshValue& 
-    GetMeshValue(vtkIdType theGeom);
+    GetMeshValue(EGeometry theGeom);
 
     virtual
     int
-    GetNbGauss(vtkIdType theGeom) const;
+    GetNbGauss(EGeometry theGeom) const;
   };
   typedef SharedPtr<TValForTimeImpl> PValForTimeImpl;
-
-
-  //---------------------------------------------------------------
-  vtkIdType
-  VTKGeom2NbNodes(vtkIdType theGeom);
 }
 
 
index dae994999e4b32136a6b4eff82687e1239e0ccd0..34b94fb0d8aee2286d6b8ca9ea9d20b24b0879be 100644 (file)
@@ -67,6 +67,8 @@ static int MY_GROUP_DEBUG = 0;
 #define _EDF_NODE_IDS_
 #define _NAME_MAPPING_ 0
 
+//#define ENABLE_QUADRATIC
+
 namespace
 {
   //---------------------------------------------------------------
@@ -78,65 +80,65 @@ namespace
 
 
   //---------------------------------------------------------------
-  vtkIdType
-  MEDGeomToVTK(MED::EGeometrieElement theMEDGeomType)
+  VISU::EGeometry
+  MEDGeom2VISU(MED::EGeometrieElement theGeom)
   { 
-    switch(theMEDGeomType){
-    case MED::ePOINT1: return VTK_VERTEX;
-    case MED::eSEG2: return VTK_LINE;
-    case MED::eTRIA3: return VTK_TRIANGLE;
-    case MED::eQUAD4: return VTK_QUAD;
-    case MED::eTETRA4: return VTK_TETRA;
-    case MED::eHEXA8: return VTK_HEXAHEDRON;
-    case MED::ePENTA6: return VTK_WEDGE;
-    case MED::ePYRA5: return VTK_PYRAMID;
-
-    case MED::eSEG3: return VISU::QUADRATIC_EDGE;
-    case MED::eTRIA6: return VISU::QUADRATIC_TRIANGLE;
-    case MED::eQUAD8: return VISU::QUADRATIC_QUAD;
-    case MED::eTETRA10: return VISU::QUADRATIC_TETRA;
-    case MED::eHEXA20: return VISU::QUADRATIC_HEXAHEDRON;
-    case MED::ePENTA15: return VISU::QUADRATIC_WEDGE;
-    case MED::ePYRA13: return VISU::QUADRATIC_PYRAMID;
-
-    case MED::ePOLYGONE: return VTK_POLYGON;
-    case MED::ePOLYEDRE: return VTK_CONVEX_POINT_SET;
+    switch(theGeom){
+    case MED::ePOINT1: return VISU::ePOINT1;
+    case MED::eSEG2: return VISU::eSEG2;
+    case MED::eTRIA3: return VISU::eTRIA3;
+    case MED::eQUAD4: return VISU::eQUAD4;
+    case MED::eTETRA4: return VISU::eTETRA4;
+    case MED::eHEXA8: return VISU::eHEXA8;
+    case MED::ePENTA6: return VISU::ePENTA6;
+    case MED::ePYRA5: return VISU::ePYRA5;
+
+    case MED::eSEG3: return VISU::eSEG3;
+    case MED::eTRIA6: return VISU::eTRIA6;
+    case MED::eQUAD8: return VISU::eQUAD8;
+    case MED::eTETRA10: return VISU::eTETRA10;
+    case MED::eHEXA20: return VISU::eHEXA20;
+    case MED::ePENTA15: return VISU::ePENTA15;
+    case MED::ePYRA13: return VISU::ePYRA13;
+
+    case MED::ePOLYGONE: return VISU::ePOLYGONE;
+    case MED::ePOLYEDRE: return VISU::ePOLYEDRE;
     }
-    return -1;
+    return VISU::eNONE;
   }
 
 
   //---------------------------------------------------------------
   MED::EGeometrieElement 
-  VTKGeomToMED(int theVTKGeomType)
+  VISUGeom2MED(int theGeom)
   { 
-    switch(theVTKGeomType){
-    case VTK_VERTEX: return MED::ePOINT1;
-    case VTK_LINE: return MED::eSEG2;
-    case VTK_TRIANGLE: return MED::eTRIA3;
-    case VTK_QUAD: return MED::eQUAD4;
-    case VTK_TETRA: return MED::eTETRA4;
-    case VTK_HEXAHEDRON: return MED::eHEXA8;
-    case VTK_WEDGE: return MED::ePENTA6;
-    case VTK_PYRAMID: return MED::ePYRA5;
-
-    case VISU::QUADRATIC_EDGE: return MED::eSEG3;
-    case VISU::QUADRATIC_TRIANGLE: return MED::eTRIA6;
-    case VISU::QUADRATIC_QUAD: return MED::eQUAD8;
-    case VISU::QUADRATIC_TETRA: return MED::eTETRA10;
-    case VISU::QUADRATIC_HEXAHEDRON: return MED::eHEXA20;
-    case VISU::QUADRATIC_WEDGE: return MED::ePENTA15;
-    case VISU::QUADRATIC_PYRAMID: return MED::ePYRA13;
-
-    case VTK_POLYGON: return MED::ePOLYGONE;
-    case VTK_CONVEX_POINT_SET: return MED::ePOLYEDRE;
+    switch(theGeom){
+    case VISU::ePOINT1: return MED::ePOINT1;
+    case VISU::eSEG2: return MED::eSEG2;
+    case VISU::eTRIA3: return MED::eTRIA3;
+    case VISU::eQUAD4: return MED::eQUAD4;
+    case VISU::eTETRA4: return MED::eTETRA4;
+    case VISU::eHEXA8: return MED::eHEXA8;
+    case VISU::ePENTA6: return MED::ePENTA6;
+    case VISU::ePYRA5: return MED::ePYRA5;
+
+    case VISU::eSEG3: return MED::eSEG3;
+    case VISU::eTRIA6: return MED::eTRIA6;
+    case VISU::eQUAD8: return MED::eQUAD8;
+    case VISU::eTETRA10: return MED::eTETRA10;
+    case VISU::eHEXA20: return MED::eHEXA20;
+    case VISU::ePENTA15: return MED::ePENTA15;
+    case VISU::ePYRA13: return MED::ePYRA13;
+
+    case VISU::ePOLYGONE: return MED::ePOLYGONE;
+    case VISU::ePOLYEDRE: return MED::ePOLYEDRE;
     }
     return MED::EGeometrieElement(-1);
   }
 
 
   //---------------------------------------------------------------
-  TEntity
+  VISU::TEntity
   MEDEntityToVTK(MED::EEntiteMaillage theMEDEntity)
   {
     switch(theMEDEntity){
@@ -145,7 +147,7 @@ namespace
     case MED::eFACE: return FACE_ENTITY;
     case MED::eMAILLE: return CELL_ENTITY;
     }
-    return TEntity(-1);
+    return VISU::TEntity(-1);
   }
 
 
@@ -172,11 +174,11 @@ namespace
               const MED::TGeom2Size& theGeom2Size,
               const MED::TGeom2Profile& theGeom2Profile)
   {
-    vtkIdType aVGeom = MEDGeomToVTK(theMGeom);
-    vtkIdType aVNbNodes = VTKGeom2NbNodes(aVGeom);
+    VISU::EGeometry aEGeom = MEDGeom2VISU(theMGeom);
+    vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
 
     PMEDSubProfile aSubProfile(new TMEDSubProfile());
-    aSubProfile->myGeom = aVGeom;
+    aSubProfile->myGeom = aEGeom;
     aSubProfile->myMGeom = theMGeom;
     aSubProfile->myStatus = eAddAll;
 
@@ -261,7 +263,7 @@ namespace
     }
     INITMSG(MYDEBUG,
            "- aMGeom = "<<theMGeom<<
-           "; aVGeom = "<<aVGeom<<
+           "; aEGeom = "<<aEGeom<<
            "; aName = '"<<aSubProfile->myName<<"'"<<
            "; aStatus = "<<aSubProfile->myStatus<<
            "; aNbCells = "<<aSubProfile->myNbCells<<
@@ -339,8 +341,8 @@ namespace
        if(aProfile->myIsAll && aSubProfile->myStatus != eAddAll)
          aProfile->myIsAll = false;
 
-       vtkIdType aVGeom = aSubProfile->myGeom;
-       aGeom2SubProfile[aVGeom] = aSubProfile;
+       VISU::EGeometry aEGeom = aSubProfile->myGeom;
+       aGeom2SubProfile[aEGeom] = aSubProfile;
       }
 
       aProfileMap[aProfileKey] = aProfile;
@@ -370,9 +372,9 @@ namespace
     MED::TGeom2Size::const_iterator anIter = aGeom2Size.begin();
     for(; anIter != aGeom2Size.end(); anIter++){
       MED::EGeometrieElement aMGeom = anIter->first;
-      vtkIdType aVGeom = MEDGeomToVTK(aMGeom);
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
 
-      TGeom2SubProfile::iterator anIter2 = aGeom2SubProfile.find(aVGeom);
+      TGeom2SubProfile::iterator anIter2 = aGeom2SubProfile.find(aEGeom);
       if(anIter2 == aGeom2SubProfile.end()){
        INITMSG(MYDEBUG,"anIter2 == aGeom2SubProfile.end!!"<<endl);
        continue;
@@ -389,7 +391,7 @@ namespace
          
        PMEDGauss aGauss(new TMEDGauss());
        aGaussSubMesh->myGauss = aGauss;
-       aGauss->myGeom = aVGeom;
+       aGauss->myGeom = aEGeom;
 
        TInt aNbGauss = 1;
        std::string aName;
@@ -409,7 +411,7 @@ namespace
        aGaussKey.insert(aGaussSubMesh);
 
        INITMSGA(MYDEBUG,0,
-                "- aVGeom = "<<aVGeom<<
+                "- aEGeom = "<<aEGeom<<
                 "; aName = '"<<aName<<"'"<<
                 "; aNbGauss = "<<aNbGauss<<
                 "; aStatus = "<<aGaussSubMesh->myStatus<<
@@ -454,8 +456,8 @@ namespace
        for(; anIter != aGaussKey.end(); anIter++){
          PMEDGaussSubMesh aGaussSubMesh(*anIter);
          PMEDGauss aGauss = aGaussSubMesh->myGauss;
-         vtkIdType aVGeom = aGauss->myGeom;
-         aGeom2GaussSubMesh[aVGeom] = aGaussSubMesh;
+         VISU::EGeometry aEGeom = aGauss->myGeom;
+         aGeom2GaussSubMesh[aEGeom] = aGaussSubMesh;
        }
       }
       {
@@ -600,8 +602,8 @@ namespace
            break;
          }
          default: {
-           vtkIdType aVGeom = MEDGeomToVTK(aMGeom);
-           vtkIdType aVNbNodes = VTKGeom2NbNodes(aVGeom);
+           VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+           vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
            MED::PCellInfo aCellInfo = theMEDWrapper->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
            TInt aNbElem = aCellInfo->GetNbElem();
            aMeshOnEntity->myNbCells += aNbElem;
@@ -698,16 +700,16 @@ namespace
        TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
        TGeom2SubProfile::const_iterator anIter = aGeom2SubProfile.begin();
        for(; anIter != aGeom2SubProfile.end(); anIter++){
-         vtkIdType aVGeom = anIter->first;
+         VISU::EGeometry aEGeom = anIter->first;
          PMEDSubProfile aSubProfile(anIter->second);
          
          TInt aNbElem = aSubProfile->myNbCells;
-         TInt aNbGauss = aValForTime->GetNbGauss(aVGeom);
+         TInt aNbGauss = aValForTime->GetNbGauss(aEGeom);
          
          if(aSubProfile->myStatus != eRemoveAll){
            INITMSG(MYTHREADDEBUG,
                    "- "<<this<< 
-                   "; aVGeom = "<<aVGeom<<
+                   "; aEGeom = "<<aEGeom<<
                    "; aNbElem = "<<aNbElem<<
                    "; aNbGauss = "<<aNbGauss<<
                    endl);
@@ -1409,7 +1411,7 @@ VISU_MedConvertor
     }
     
     TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
-    PMEDSubMesh aSubMesh = aGeom2SubMesh[VTK_VERTEX](new TMEDSubMesh());
+    PMEDSubMesh aSubMesh = aGeom2SubMesh[VISU::ePOINT1](new TMEDSubMesh());
 
     aSubMesh->Init(aNodeInfo); 
     aSubMesh->myNbCells = theMesh->myNbPoints;
@@ -1461,7 +1463,7 @@ VISU_MedConvertor
 
     if(aNbElem > 0){
       TInt anId = theFamily->myId;
-      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VTK_VERTEX];
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
       for(TInt iElem = 0; iElem < aNbElem; iElem++) 
        if(aNodeInfo->GetFamNum(iElem) == anId)
          aSubMeshID.push_back(iElem);
@@ -1521,14 +1523,14 @@ VISU_MedConvertor
 
     for(; aGeom2SizeIter != aGeom2Size.end(); aGeom2SizeIter++){
       const MED::EGeometrieElement& aMGeom = aGeom2SizeIter->first;
-      vtkIdType aVGeom = MEDGeomToVTK(aMGeom);
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
       INITMSG(MYDEBUG,"aMGeom = "<<aMGeom<<"\n");
       switch(aMGeom){
       case MED::ePOLYGONE: {
        MED::PPolygoneInfo aPolygoneInfo = theMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
        TInt aNbElem = aPolygoneInfo->GetNbElem();
        if(aNbElem > 0){
-         PMEDSubMesh aSubMesh = aGeom2SubMesh[aVGeom](new TMEDSubMesh());
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
          aSubMesh->Init(aPolygoneInfo); 
          aSubMesh->myNbCells = aNbElem;      
@@ -1553,7 +1555,7 @@ VISU_MedConvertor
        TInt aNbElem = aPolyedreInfo->GetNbElem();
        
        if(aNbElem > 0){
-         PMEDSubMesh aSubMesh = aGeom2SubMesh[aVGeom](new TMEDSubMesh());
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
          aSubMesh->Init(aPolyedreInfo); 
          aSubMesh->myNbCells = aNbElem;      
@@ -1589,13 +1591,13 @@ VISU_MedConvertor
        break;
       }
       default: {
-       vtkIdType aVNbNodes = VTKGeom2NbNodes(aVGeom);
+       vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
        
        MED::PCellInfo aCellInfo = theMed->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
        TInt aNbElem = aCellInfo->GetNbElem();
        
        if(aNbElem > 0){
-         PMEDSubMesh aSubMesh = aGeom2SubMesh[aVGeom](new TMEDSubMesh());
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
          aSubMesh->Init(aCellInfo); 
          aSubMesh->myNbCells = aNbElem;      
@@ -1623,28 +1625,50 @@ VISU_MedConvertor
            }
            
            switch(aMGeom){
+#ifndef VTK_QUADRATIC_EDGE && ENABLE_QUADRATIC
+           case MED::eSEG3:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+
+             anArray[1] = aConnect[2];
+             break;
+#endif
+#ifndef VTK_QUADRATIC_TRIANGLE && ENABLE_QUADRATIC
+           case MED::eTRIA6:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+             anArray[4] = aConnect[2];  
+
+             anArray[1] = aConnect[3];
+             anArray[3] = aConnect[4];  
+             anArray[5] = aConnect[5];  
+             break;
+#endif
+#ifndef VTK_QUADRATIC_QUAD && ENABLE_QUADRATIC
+           case MED::eQUAD8:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+             anArray[4] = aConnect[2];  
+             anArray[6] = aConnect[3];  
+
+             anArray[1] = aConnect[4];
+             anArray[3] = aConnect[5];  
+             anArray[5] = aConnect[6];  
+             anArray[7] = aConnect[7];  
+             break;
+#endif
+#ifdef VTK_QUADRATIC_TETRA && ENABLE_QUADRATIC
            case MED::eTETRA10:
-             anArray[4] = aConnect[4];
-             anArray[5] = aConnect[5];
-             anArray[6] = aConnect[7];  
-             anArray[7] = aConnect[6];  
-             anArray[8] = aConnect[8];  
-             anArray[9] = aConnect[9];  
+#endif
            case MED::eTETRA4:
              anArray[0] = aConnect[0];
              anArray[1] = aConnect[1];
              anArray[2] = aConnect[3];  
              anArray[3] = aConnect[2];  
              break;
+#ifdef VTK_QUADRATIC_TETRA && ENABLE_QUADRATIC
            case MED::ePYRA13:
-             anArray[5] = aConnect[5];
-             anArray[6] = aConnect[8];  
-             anArray[7] = aConnect[7];
-             anArray[8] = aConnect[6];  
-             anArray[9] = aConnect[9];
-             anArray[10] = aConnect[10];
-             anArray[11] = aConnect[11];
-             anArray[12] = aConnect[12];
+#endif
            case MED::ePYRA5:
              anArray[0] = aConnect[0];
              anArray[1] = aConnect[3];  
@@ -1733,9 +1757,9 @@ VISU_MedConvertor
            if(anElemInfo->GetFamNum(iElem) == anId)
              aSubMeshID.push_back(iElem);
          if(!aSubMeshID.empty()){
-           TInt aVGeom = MEDGeomToVTK(aMGeom);
+           VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
            INITMSG(MYDEBUG,"aMGeom = "<<aMGeom<<"\n");
-           aGeom2SubMeshID.insert(TGeom2SubMeshID::value_type(aVGeom,aSubMeshID));
+           aGeom2SubMeshID.insert(TGeom2SubMeshID::value_type(aEGeom,aSubMeshID));
          }
        }
       }
@@ -1777,9 +1801,9 @@ LoadProfile(const MED::PWrapper& theMed,
   for(; anIter != aGeom2Profile.end(); anIter++){
     MED::PProfileInfo aProfileInfo = anIter->second;
     MED::EGeometrieElement aMGeom = anIter->first;
-    vtkIdType aVGeom = MEDGeomToVTK(aMGeom);
+    VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
 
-    TGeom2SubProfile::const_iterator anIter2 = aGeom2SubProfile.find(aVGeom);
+    TGeom2SubProfile::const_iterator anIter2 = aGeom2SubProfile.find(aEGeom);
     if(anIter2 != aGeom2SubProfile.end()){
       PMEDSubProfile aSubProfile = anIter2->second;
 
@@ -1793,7 +1817,7 @@ LoadProfile(const MED::PWrapper& theMed,
       }
 
       INITMSG(MYDEBUG,
-             "- aVGeom = "<<aVGeom<<
+             "- aEGeom = "<<aEGeom<<
              "; aNbCells = "<<aSubProfile->mySubMeshID.size()<<
              endl);
     }
@@ -1863,7 +1887,7 @@ LoadGaussMesh(const MED::PWrapper& theMed,
   TGeom2GaussSubMesh::const_iterator aSubMeshIter = aGeom2GaussSubMesh.begin();
   for(; aSubMeshIter != aGeom2GaussSubMesh.end(); aSubMeshIter++){
     PMEDGaussSubMesh aGaussSubMesh = aSubMeshIter->second;
-    vtkIdType aVGeom = aSubMeshIter->first;
+    VISU::EGeometry aEGeom = aSubMeshIter->first;
     
     if(aGaussSubMesh->myIsDone)
       continue;
@@ -1993,7 +2017,7 @@ LoadGaussMesh(const MED::PWrapper& theMed,
       aGaussSubMesh->myIsDone = true;;
       
       INITMSG(MYDEBUG,
-             "- aVGeom = "<<aVGeom<<
+             "- aEGeom = "<<aEGeom<<
              "; aName = '"<<aName<<"'"<<
              "; aStatus = "<<aGaussSubMesh->myStatus<<
              "; aNbCells = "<<aNbCells<<
@@ -2079,22 +2103,22 @@ LoadValForTime(const MED::PWrapper& theMed,
   const MED::TTimeStampVal& aTimeStampValRef = aTimeStampVal;
   TGeom2SubProfile::const_iterator anIter = aGeom2SubProfile.begin();
   for(; anIter != aGeom2SubProfile.end(); anIter++){
-    vtkIdType aVGeom = anIter->first;
+    VISU::EGeometry aEGeom = anIter->first;
     PMEDSubProfile aSubProfile(anIter->second);
 
     TInt aNbElem = aSubProfile->myNbCells;
     theField->myDataSize += aNbElem*aNbComp;
 
-    TInt aNbGauss = theValForTime->GetNbGauss(aVGeom);
+    TInt aNbGauss = theValForTime->GetNbGauss(aEGeom);
 
     if(aSubProfile->myStatus != eRemoveAll){
       INITMSG(MYDEBUG,
-             "- aVGeom = "<<aVGeom<<
+             "- aEGeom = "<<aEGeom<<
              "; aNbElem = "<<aNbElem<<
              "; aNbGauss = "<<aNbGauss<<
              endl);
       
-      TMeshValue& aVMeshValue = theValForTime->GetMeshValue(aVGeom);
+      TMeshValue& aVMeshValue = theValForTime->GetMeshValue(aEGeom);
       aVMeshValue.Init(aNbElem,aNbGauss,aNbComp);
 
       MED::EGeometrieElement aMGeom = aSubProfile->myMGeom;
index 94e84d6508241377a49f66f327891ca344c14496..7da437c1ff838261ef238803cdded1dc48bf3e9e 100644 (file)
@@ -150,28 +150,27 @@ namespace
   
 
   //---------------------------------------------------------------
-  int
-  MEDGeomToVTK(medGeometryElement theMEDGeomType)
+  VISU::EGeometry
+  MEDGeom2VISU(medGeometryElement theGeom)
   { 
-    switch(theMEDGeomType){
-    case MED_NONE: return VTK_EMPTY_CELL;
-    case MED_POINT1: return VTK_VERTEX;
-    case MED_SEG2: return VTK_LINE;
-    case MED_SEG3: return VTK_LINE;
-    case MED_TRIA3: return VTK_TRIANGLE;
-    case MED_TRIA6: return VTK_TRIANGLE;
-    case MED_QUAD4: return VTK_QUAD;
-    case MED_QUAD8: return VTK_QUAD;
-    case MED_TETRA4: return VTK_TETRA;
-    case MED_TETRA10: return VTK_TETRA;
-    case MED_HEXA8: return VTK_HEXAHEDRON;
-    case MED_HEXA20: return VTK_HEXAHEDRON;
-    case MED_PENTA6: return VTK_WEDGE;
-    case MED_PENTA15: return VTK_WEDGE;
-    case MED_PYRA5: return VTK_PYRAMID;
-    case MED_PYRA13: return VTK_PYRAMID;
+    switch(theGeom){
+    case MED_POINT1: return VISU::ePOINT1;
+    case MED_SEG2: return VISU::eSEG2;
+    case MED_SEG3: return VISU::eSEG3;
+    case MED_TRIA3: return VISU::eTRIA3;
+    case MED_TRIA6: return VISU::eTRIA6;
+    case MED_QUAD4: return VISU::eQUAD4;
+    case MED_QUAD8: return VISU::eQUAD8;
+    case MED_TETRA4: return VISU::eTETRA4;
+    case MED_TETRA10: return VISU::eTETRA10;
+    case MED_HEXA8: return VISU::eHEXA8;
+    case MED_HEXA20: return VISU::eHEXA20;
+    case MED_PENTA6: return VISU::ePENTA6;
+    case MED_PENTA15: return VISU::ePENTA15;
+    case MED_PYRA5: return VISU::ePYRA5;
+    case MED_PYRA13: return VISU::ePYRA13;
     }
-    return -1;
+    return VISU::eNONE;
   }
   
 
@@ -974,7 +973,7 @@ VISU_MEDConvertor
   if(MYDEBUG) MESSAGE("LoadPoints - Filling aMeshOnEntity with type NODE_ENTITY");
   
   TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
-  PSubMeshImpl aSubMesh = aGeom2SubMesh[VTK_VERTEX];
+  PSubMeshImpl aSubMesh = aGeom2SubMesh[VISU::ePOINT1];
   TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
   aCell2Connect.resize(aNbElem);
   for(int iElem = 0; iElem < aNbElem; iElem++)
@@ -1002,7 +1001,7 @@ VISU_MEDConvertor
 
   SALOME_MED::FAMILY_var aMedFamily = theFamily->myFamily;
   CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
-  TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VTK_VERTEX];
+  TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
   
   if(!anIsOnAllElements){
     SALOME_MED::medGeometryElement_array_var aGeom = aMedFamily->getTypes();
@@ -1052,20 +1051,21 @@ VISU_MEDConvertor
   int aNbPoints = aCoords.GetNbPoints();
 
   for(int iGeom = 0, aCounter = 0; iGeom < iGeomEnd; iGeom++){
-    SALOME_MED::medGeometryElement aGeom = aGeomElems[iGeom];
-    int aMNbNodes = MEDGeom2NbNodes(aGeom);
-    int aVGeom = MEDGeomToVTK(aGeom);
-    int aVNbNodes = VTKGeom2NbNodes(aVGeom);
-    int iNumElemEnd = aMedMesh->getNumberOfElements(aMEntity,aGeom);
+    SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
+    int aMNbNodes = MEDGeom2NbNodes(aMGeom);
+    VISU::EGeometry aEGeom = MEDGeom2VISU(aEGeom);
+    int aVNbNodes = VISUGeom2NbNodes(aEGeom);
+    int iNumElemEnd = aMedMesh->getNumberOfElements(aMEntity,aMGeom);
     if (iNumElemEnd > 0) {
+      using namespace SALOME_MED;
       SALOME_MED::long_array_var conn = 
-       aMedMesh->getConnectivity(SALOME_MED::MED_FULL_INTERLACE,SALOME_MED::MED_NODAL,aMEntity,aGeom);
-      PSubMeshImpl aSubMesh = aGeom2SubMesh[aVGeom];
+       aMedMesh->getConnectivity(MED_FULL_INTERLACE,MED_NODAL,aMEntity,aMGeom);
+      PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom];
       TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
       std::vector<int> aConnect(aMNbNodes);
       int aNbConnForElem = conn->length()/iNumElemEnd;
 
-      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aGeom = "<<aGeom<<
+      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aMGeom = "<<aMGeom<<
                          "; iNumElemEnd = "<<iNumElemEnd<<
                          "; aNbConnForElem = "<<aNbConnForElem);
 
@@ -1074,15 +1074,39 @@ VISU_MEDConvertor
        for(int k = 0, kj = iNumElem*aNbConnForElem; k < aMNbNodes; k++)
          aConnect[k] = conn[kj+k] - 1;
 
-       switch(aGeom){
+       switch(aMGeom){
+       case SALOME_MED::MED_SEG3:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         
+         anArray[1] = aConnect[2];
+         break;
+       case SALOME_MED::MED_TRIA6:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         anArray[4] = aConnect[2];  
+         
+         anArray[1] = aConnect[3];
+         anArray[3] = aConnect[4];  
+         anArray[5] = aConnect[5];  
+         break;
+       case SALOME_MED::MED_QUAD8:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         anArray[4] = aConnect[2];  
+         anArray[6] = aConnect[3];  
+         
+         anArray[1] = aConnect[4];
+         anArray[3] = aConnect[5];  
+         anArray[5] = aConnect[6];  
+         anArray[7] = aConnect[7];  
+         break;
        case SALOME_MED::MED_TETRA4 :
-       case SALOME_MED::MED_TETRA10 :
          anArray[0] = aConnect[0];
          anArray[1] = aConnect[1];
          anArray[2] = aConnect[3];  
          anArray[3] = aConnect[2];  
          break;
-       case SALOME_MED::MED_PYRA5 :
        case SALOME_MED::MED_PYRA13 :
          anArray[0] = aConnect[0];
          anArray[1] = aConnect[3];  
@@ -1104,7 +1128,7 @@ VISU_MEDConvertor
       }
       //Workaround for MED Component data structure
       int aSize = aCell2Connect.size();
-      theMeshOnEntity->myCellsFirstIndex[aGeom] = TCMeshOnEntity::TIndexAndSize(aCounter,aSize);
+      theMeshOnEntity->myCellsFirstIndex[aMGeom] = TCMeshOnEntity::TIndexAndSize(aCounter,aSize);
       aCounter += aSize;
     }
   }
@@ -1133,26 +1157,26 @@ VISU_MEDConvertor
     int iGeomEnd = aGeoms->length();
     if(MYDEBUG) MESSAGE("LoadCellsOnEntity - iGeomEnd = "<<iGeomEnd);
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
-      SALOME_MED::medGeometryElement aGeom = aGeoms[iGeom];
-      SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aGeom);
-      int aVGeom = MEDGeomToVTK(aGeom);
+      SALOME_MED::medGeometryElement aMGeom = aGeoms[iGeom];
+      SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aMGeom);
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
 
       int iNumElemEndTmp = 0;
-      TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aVGeom);
+      TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aEGeom);
       if(anIter != aGeom2SubMesh.end()){
        const VISU::TSubMeshImpl& aSubMesh = anIter->second;
        const VISU::TCell2Connect& anArray = aSubMesh.myCell2Connect;
        iNumElemEndTmp = anArray.size();
       }
 
-      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aVGeom]; 
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom]; 
 
       int iNumElemEnd = aCellNumForType->length();
-      int aCounter = theMeshOnEntity->myCellsFirstIndex[aGeom].first;
+      int aCounter = theMeshOnEntity->myCellsFirstIndex[aMGeom].first;
       
       if(MYDEBUG) 
        MESSAGE("LoadCellsOnFamily "<<
-               "- aGeom = "<<aGeom<<
+               "- aMGeom = "<<aMGeom<<
                "; iNumElemEnd = "<<iNumElemEnd<<
                "; aCounter = "<<aCounter);
       
@@ -1170,10 +1194,10 @@ VISU_MEDConvertor
     const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
     VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.begin();
     for(; anIter != aGeom2SubMesh.end(); anIter++){
-      int aVGeom = anIter->first;
+      VISU::EGeometry aEGeom = anIter->first;
       const VISU::TSubMeshImpl& aSubMesh = anIter->second;
       const VISU::TCell2Connect& aCell2Connect = aSubMesh.myCell2Connect;
-      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aVGeom];
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom];
       int iNumElemEnd = aCell2Connect.size();
       for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
        aSubMeshID.push_back(iNumElem);
@@ -1196,15 +1220,15 @@ ImportField(TArray& theArray,
 {
   int aNbComp = theField->myNbComp;
   if(theField->myEntity == NODE_ENTITY){
-    int aVGeom = VTK_VERTEX;
-    int aNbGauss = theValForTime->GetNbGauss(aVGeom);
+    VISU::EGeometry aEGeom = VISU::ePOINT1;
+    int aNbGauss = theValForTime->GetNbGauss(aEGeom);
     const TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
     int aNbPoints = aCoords.GetNbPoints();
     int aNbElem = aNbPoints*aNbComp;
 
     if(MYDEBUG) MESSAGE("ImportField - aNbElem = "<<aNbElem);
 
-    TMeshValue& aMeshValue = theValForTime->GetMeshValue(VTK_VERTEX);
+    TMeshValue& aMeshValue = theValForTime->GetMeshValue(VISU::ePOINT1);
     aMeshValue.Init(aNbElem,aNbGauss,aNbComp);
     for(int iElem = 0, anId = 0; iElem < aNbElem; iElem++){
       TValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
@@ -1220,21 +1244,21 @@ ImportField(TArray& theArray,
     const TEntity& aVEntity = theField->myEntity;
     int iGeomEnd = GetEntity2Geom(aVEntity,aGeomElems);
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
-      SALOME_MED::medGeometryElement aGeom = aGeomElems[iGeom];
-      int aVGeom = MEDGeomToVTK(aGeom);
-      int aNbGauss = theValForTime->GetNbGauss(aVGeom);
+      SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+      int aNbGauss = theValForTime->GetNbGauss(aEGeom);
       const TCMeshOnEntity::TCellsFirstIndex& aCellsFirstIndex = theMeshOnEntity->myCellsFirstIndex;
-      TCMeshOnEntity::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aGeom);
+      TCMeshOnEntity::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aMGeom);
       if(aCellsFirstIndexIter != aCellsFirstIndex.end()){
        const TCMeshOnEntity::TIndexAndSize& aIndexAndSize = aCellsFirstIndexIter->second;
        if(MYDEBUG) 
-         MESSAGE("ImportField - aGeom = "<<aGeom<<
+         MESSAGE("ImportField - aMGeom = "<<aMGeom<<
                  "; aIndexAndSize = {"<<aIndexAndSize.first<<
                  ","<<aIndexAndSize.second<<"}");
 
        int aNbElem = aIndexAndSize.second;
        int aStart = aIndexAndSize.first*aNbComp;
-       TMeshValue& aMeshValue = theValForTime->GetMeshValue(aVGeom);
+       TMeshValue& aMeshValue = theValForTime->GetMeshValue(aEGeom);
        aMeshValue.Init(aNbElem,aNbGauss,aNbComp);
        for(int iElem = 0, anId = 0; iElem < aNbElem; iElem++, anId += aNbComp){
          TValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);