Salome HOME
#16927: Error when loading a med file with 140 millions elements
authoreap <eap@opencascade.com>
Tue, 14 May 2019 13:58:34 +0000 (16:58 +0300)
committereap <eap@opencascade.com>
Tue, 14 May 2019 13:58:34 +0000 (16:58 +0300)
src/MEDWrapper/MED_Wrapper.cxx
src/MEDWrapper/MED_Wrapper.hxx

index 157f983..85a8d9f 100644 (file)
@@ -195,8 +195,8 @@ namespace MED
     if ( write ) {
       myFile->Open(eLECTURE_ECRITURE, &aRet);
       if (aRet < 0) {
-       myFile->Close();
-       myFile->Open(eCREATION, &aRet);
+        myFile->Close();
+        myFile->Open(eCREATION, &aRet);
       }
     }
     else {
@@ -2058,6 +2058,24 @@ namespace MED
     TValueHolder<EConnectivite, med_connectivity_mode> aConnMode    (theInfo.myConnMode);
 
     TErr aRet;
+    med_bool dummy;
+    aRet = MEDmeshnEntity(myFile->Id(),
+                          &aMeshName,
+                          MED_NO_DT,
+                          MED_NO_IT,
+                          anEntity,
+                          aGeom,
+                          MED_NAME,
+                          aConnMode,
+                          &dummy, &dummy);
+    if ( aRet > 0 )
+    {
+      // names are present in the file, they will be read in spite of theInfo.myIsElemNames
+      theInfo.myIsElemNames = eVRAI;
+      theInfo.myElemNames.reset( new TString( theInfo.myNbElem * GetPNOMLength() + 1 ));
+      anElemNames.myRepresentation = & ((TString&) theInfo.myElemNames )[0];
+    }
+
     aRet = MEDmeshElementRd(myFile->Id(),
                             &aMeshName,
                             MED_NO_DT,
@@ -2080,11 +2098,11 @@ namespace MED
       EXCEPTION(std::runtime_error, "GetCellInfo - MEDmeshElementRd(...)");
 
     if (anIsFamNum == MED_FALSE)
-      {
-        int mySize = (int) theInfo.myFamNum->size();
-        theInfo.myFamNum->clear();
-        theInfo.myFamNum->resize(mySize, 0);
-      }
+    {
+      int mySize = (int) theInfo.myFamNum->size();
+      theInfo.myFamNum->clear();
+      theInfo.myFamNum->resize(mySize, 0);
+    }
 
   }
 
index e236f20..6761a19 100644 (file)
@@ -279,7 +279,7 @@ namespace MED
                EModeSwitch theMode = eFULL_INTERLACE,
                ERepere theSystem = eCART,
                EBooleen theIsElemNum = eVRAI,
-               EBooleen theIsElemNames = eVRAI);
+               EBooleen theIsElemNames = eFAUX);
 
     //! Create a MEDWrapper MED Nodes representation
     virtual
@@ -521,7 +521,7 @@ namespace MED
                TInt theNbElem,
                EConnectivite theConnMode = eNOD,
                EBooleen theIsElemNum = eVRAI,
-               EBooleen theIsElemNames = eVRAI,
+               EBooleen theIsElemNames = eFAUX,
                EModeSwitch theMode = eFULL_INTERLACE);
 
     //! Create a MEDWrapper MED Cells representation