]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
1. To use safe MED::TVector::operator[] instead of std::vector
authorapo <apo@opencascade.com>
Fri, 29 Jul 2005 07:12:47 +0000 (07:12 +0000)
committerapo <apo@opencascade.com>
Fri, 29 Jul 2005 07:12:47 +0000 (07:12 +0000)
2. To use MED::ModeSwitch for TTimeStampVal and TCellInfo structures
3. To use MED::Slice interface for TCellInfo and TPolygonInfo
4. Minor bugs correction

src/CONVERTOR/VISUConvertor.cxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_MedConvertor.cxx

index 22aa9c729058c8162dd7a116b5ce0c5801be4375..c784c4b174b0fc93f05b8bbb197162abf40e6072 100644 (file)
@@ -43,8 +43,10 @@ static int MYDEBUG = 1;
 static int MYDEBUG = 0;
 #endif
 
+//#define _DEXCEPT_
+
 void parseFile(const char* theFileName) {
-#ifndef _DEBUG_
+#ifndef _DEXCEPT_
   try{
 #endif
     MSG(MYDEBUG,"'"<<theFileName<<"'...");
@@ -107,7 +109,7 @@ void parseFile(const char* theFileName) {
       }
     }
     MSG(MYDEBUG,"OK");
-#ifndef _DEBUG_
+#ifndef _DEXCEPT_
   }catch(std::exception& exc){
     MSG(MYDEBUG,"Follow exception was occured in file:"<<theFileName<<"\n"<<exc.what());
   }catch(...){
index 1828afac5670b98d66140bec33c6a2674bd9206a..15662ff88d4d109766427917e07e0adbae2374a4 100644 (file)
@@ -64,6 +64,7 @@ static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;
 #endif
 
+#define _DEXCEPT_
 
 namespace VISU
 {
@@ -742,15 +743,13 @@ namespace
              "; aNbGauss = "<<aNbGauss<<
              endl);
 
-      if(aNbComp == 4)
-       aNbComp = 2;
-
+      int aNbComp2 = aNbComp;
       switch(aNbComp){
       case 1:
        for(int iElem = 0; iElem < aNbElem; iElem++){
          float aValue[] = {0.0, 0.0, 0.0};
          TCValueSliceArr aValueSliceArr = aMeshValue.GetCompValueSliceArr(iElem);
-         for(int iComp = 0; iComp < aNbComp; iComp++){
+         for(int iComp = 0; iComp < aNbComp2; iComp++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iComp];
            for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
              aValue[iComp] += aValueSlice[iGauss];
@@ -760,11 +759,13 @@ namespace
          aFloatArray->SetTuple1(aTupleId++,aValue[0]);
        }
        break;
+      case 4:
+       aNbComp2 = 2;
       case 2:
        for(int iElem = 0; iElem < aNbElem; iElem++){
          float aValue[] = {0.0, 0.0, 0.0};
          TCValueSliceArr aValueSliceArr = aMeshValue.GetCompValueSliceArr(iElem);
-         for(int iComp = 0; iComp < aNbComp; iComp++){
+         for(int iComp = 0; iComp < aNbComp2; iComp++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iComp];
            for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
              aValue[iComp] += aValueSlice[iGauss];
@@ -775,10 +776,12 @@ namespace
        }
        break;
       default:
+       if(aNbComp > 3)
+         aNbComp2 = 3;
        for(int iElem = 0; iElem < aNbElem; iElem++){
          float aValue[] = {0.0, 0.0, 0.0};
          TCValueSliceArr aValueSliceArr = aMeshValue.GetCompValueSliceArr(iElem);
-         for(int iComp = 0; iComp < aNbComp; iComp++){
+         for(int iComp = 0; iComp < aNbComp2; iComp++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iComp];
            for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
              aValue[iComp] += aValueSlice[iGauss];
@@ -964,9 +967,7 @@ namespace
              "; aNbGauss = "<<aNbGauss<<
              endl);
 
-      if(aNbComp == 4)
-       aNbComp = 2;
-
+      int aNbComp2 = aNbComp;
       switch(aNbComp){
       case 1:
        for(int iElem = 0; iElem < aNbElem; iElem++){
@@ -974,20 +975,22 @@ namespace
          TCValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
          for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iGauss];
-           for(int iComp = 0; iComp < aNbComp; iComp++){
+           for(int iComp = 0; iComp < aNbComp2; iComp++){
              aValue[iComp] += aValueSlice[iComp];
            }
            aFloatArray->SetTuple1(aTupleId++,aValue[0]);
          }
        }
        break;
+      case 4:
+       aNbComp2 = 2;
       case 2:
        for(int iElem = 0; iElem < aNbElem; iElem++){
          float aValue[] = {0.0, 0.0, 0.0};
          TCValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
          for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iGauss];
-           for(int iComp = 0; iComp < aNbComp; iComp++){
+           for(int iComp = 0; iComp < aNbComp2; iComp++){
              aValue[iComp] += aValueSlice[iComp];
            }
            aFloatArray->SetTuple3(aTupleId++,aValue[0],aValue[1],0.0);
@@ -995,12 +998,14 @@ namespace
        }
        break;
       default:
+       if(aNbComp > 3)
+         aNbComp2 = 3;
        for(int iElem = 0; iElem < aNbElem; iElem++){
          float aValue[] = {0.0, 0.0, 0.0};
          TCValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
          for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
            const TCValueSlice& aValueSlice = aValueSliceArr[iGauss];
-           for(int iComp = 0; iComp < aNbComp; iComp++){
+           for(int iComp = 0; iComp < aNbComp2; iComp++){
              aValue[iComp] += aValueSlice[iComp];
            }
            aFloatArray->SetTuple3(aTupleId++,aValue[0],aValue[1],aValue[2]);
@@ -1288,7 +1293,7 @@ VISU_Convertor_impl
 
   //Main part of code
   TVTKSource& aSource = aValForTime->mySource;
-#ifndef _DEBUG_
+#ifndef _DEXCEPT_
   try{
 #endif
     if(!aValForTime->myIsVTKDone){
@@ -1344,7 +1349,7 @@ VISU_Convertor_impl
        BEGMSG(MYVTKDEBUG,"GetActualMemorySize() = "<<float(aSource->GetActualMemorySize()*1000)<<endl);
       }
     }
-#ifndef _DEBUG_
+#ifndef _DEXCEPT_
   }catch(std::exception& exc){
     throw;
   }catch(...){
index 7be4fb06ccf6a0313bde0947d6d306e9bde61b37..a4a8d2d770380c2e1f20e9882bb3173c2c31b333 100644 (file)
@@ -36,6 +36,7 @@
 #include <vtkCellType.h>
 
 #define _EDF_NODE_IDS_
+//#define _DEXCEPT_
 
 using namespace std;
 using namespace VISU;
@@ -252,7 +253,6 @@ namespace
              const MED::TGeom2Size& theGeom2Size,
              VISU::TMEDValForTime& theValForTime)
   {
-    int MYDEBUG = true;
     INITMSG(MYDEBUG,"GetGaussKey"<<endl);
 
     PMEDProfile aProfile = theValForTime.myProfile;
@@ -405,7 +405,9 @@ VISU_MedConvertor
   INITMSG(MYDEBUG,"GetNbMeshes() = "<<aNbMeshes<<"\n");
 
   for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+#ifndef _DEXCEPT_
     try{
+#endif
       MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
       
       MED::PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
@@ -477,29 +479,20 @@ VISU_MedConvertor
            case MED::ePOLYGONE: {
              MED::PPolygoneInfo aPolygoneInfo = aMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
              TInt aNbElem = aPolygoneInfo->GetNbElem();
-             MED::TElemNum aConn  = aPolygoneInfo->GetConnectivite();
-             MED::TElemNum aIndex = aPolygoneInfo->GetIndex();
-             TInt aNbIndex = aIndex.size();
-             TInt aNbConn  = aConn.size();
-             
-             aMeshOnEntity->myNbCells += aNbElem;
-             
-             for (int ii = 0; ii<aNbElem ; ii++){
-               int aNbConnii = aPolygoneInfo->GetNbConn(ii);
-               aMeshOnEntity->myCellsSize += aNbConnii;
-             }
-             
+
              INITMSG(MYDEBUG,
                      "- aMGeom = "<<aMGeom<<
                      "; aNbElem = "<<aNbElem<<
-                     "; aNbConn= "<<aNbConn<<
                      endl);
              
-             for(TInt iElem = 0; iElem < aNbElem; iElem++){
-               TInt aFamId = aPolygoneInfo->GetFamNum(iElem);
+             aMeshOnEntity->myNbCells += aNbElem;      
+             for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+               TInt aNbConn = aPolygoneInfo->GetNbConn(anElemId);
+               aMeshOnEntity->myCellsSize += aNbConn;
+               TInt aFamId = aPolygoneInfo->GetFamNum(anElemId);
                if(aFamId != 0){
                  aFamilyNbCellsCounterMap[aFamId] += 1;
-                 aFamilyCellsSizeCounterMap[aFamId] += aPolygoneInfo->GetNbConn(iElem) + 1;
+                 aFamilyCellsSizeCounterMap[aFamId] += aNbConn + 1;
                }
              }
              break;
@@ -737,13 +730,15 @@ VISU_MedConvertor
          aGroupMap.insert(VISU::TGroupMap::value_type(aGroupName,aGroup));
        }
       }
-      
-    } catch(std::exception& exc){
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
       MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
-    } catch(...){
+    }catch(...){
       EXCEPTION(runtime_error,"Unknown exception !!!");
     }
+#endif
   } 
+
   return this; 
 }
 
@@ -850,9 +845,10 @@ VISU_MedConvertor
        aCoords.GetName(iDim) = aNodeInfo->GetCoordName(iDim);
       
       for(int iElem = 0; iElem < aNbElem; iElem++){
-       TCoordSlice aCoordSlice = aCoords.GetCoordSlice(iElem);
+       TCoordSlice aVCoordSlice = aCoords.GetCoordSlice(iElem);
+       MED::TCCoordSlice aMCoordSlice = aNodeInfo->GetCoordSlice(iElem);
        for(int iDim = 0; iDim < aDim; iDim++)
-         aCoordSlice[iDim] = aNodeInfo->GetNodeCoord(iElem,iDim);
+         aVCoordSlice[iDim] = aMCoordSlice[iDim];
       }
 
       TCell2Connect& aConnForCellType = aMeshOnEntity->myGeom2Cell2Connect[VTK_VERTEX];
@@ -894,9 +890,13 @@ VISU_MedConvertor
                    VISU::PMEDMeshOnEntity theMeshOnEntity,
                    const string& theFamilyName)
 {
+#ifndef _DEXCEPT_
   try{
+#endif
+
     //Check on existing family
     PFamilyImpl aFamily = GetFamily(theMeshOnEntity,theFamilyName);
+
     //Check on loading already done
     bool isCellsLoaded = !theMeshOnEntity->myGeom2Cell2Connect.empty();
     if(isCellsLoaded)
@@ -944,15 +944,13 @@ VISU_MedConvertor
          TCell2Connect& aCell2Connect = aGeom2Cell2Connect[aVGeom];
          aCell2Connect.resize(aNbElem);
 
-         const MED::TElemNum& aIndex = aPolygoneInfo->GetIndex();
-         const MED::TElemNum& aConnect = aPolygoneInfo->GetConnectivite();
-
          for(int iElem = 0; iElem < aNbElem; iElem++) {
-           TConnect& anArray = aCell2Connect[iElem];
+           MED::TCConnSlice aConnSlice = aPolygoneInfo->GetConnSlice(iElem);
            int aNbConn = aPolygoneInfo->GetNbConn(iElem);
+           TConnect& anArray = aCell2Connect[iElem];
            anArray.resize(aNbConn);
-           for(int i = 0; i < aNbConn; i++)
-             anArray[i] = aConnect[aIndex[iElem]-1+i]-1;
+           for(int iConn = 0; iConn < aNbConn; iConn++)
+             anArray[iConn] = aConnSlice[iConn] - 1;
          }
        }
        if(aFamily){
@@ -1020,16 +1018,17 @@ VISU_MedConvertor
          vector<TInt> aConnect(aMNbNodes);
          
          for (int iElem = 0; iElem < aNbElem; iElem++) {
+           MED::TCConnSlice aConnSlice = aCellInfo->GetConnSlice(iElem);
            TConnect& anArray = aConnForCellType[iElem];
            anArray.resize(aVNbNodes);
            
            if(anIsNodeNum){
-             for(int i = 0; i < aMNbNodes; i++){
-               aConnect[i] = aNodeIdMap[aCellInfo->GetConn(iElem,i)-1];
+             for(int iConn = 0; iConn < aMNbNodes; iConn++){
+               aConnect[iConn] = aNodeIdMap[aConnSlice[iConn] - 1];
              }
            }else{
-             for(int i = 0; i < aMNbNodes; i++){
-               aConnect[i] = aCellInfo->GetConn(iElem,i)-1;
+             for(int iConn = 0; iConn < aMNbNodes; iConn++){
+               aConnect[iConn] = aConnSlice[iConn] - 1;
              }
            }
            
@@ -1073,6 +1072,8 @@ VISU_MedConvertor
       }
     }
     return 1;
+
+#ifndef _DEXCEPT_
   }catch(std::exception& exc){
     theMeshOnEntity->myGeom2Cell2Connect.clear();
     throw;
@@ -1080,6 +1081,8 @@ VISU_MedConvertor
     theMeshOnEntity->myGeom2Cell2Connect.clear();
     EXCEPTION(runtime_error,"Unknown exception !!!");
   }
+#endif
+
   return 0;
 }
 
@@ -1136,7 +1139,6 @@ LoadGaussMesh(const MED::PWrapper& theMed,
              VISU::TMEDValForTime& theValForTime,
              VISU::TMEDMeshOnEntity& theMeshOnEntity)
 {
-  int MYDEBUG = true;
   INITMSG(MYDEBUG,"LoadGaussMesh"<<endl);
 
   PMEDGaussMesh aGaussMesh = theValForTime.myGaussMesh;