Salome HOME
ménage
[modules/smesh.git] / src / DriverMED / DriverMED_W_Field.cxx
index bdd191a4deae7bd3ad03115e51bf38bcd89d21f9..a0304a5d6a8c5549ff855f7189cb0a60ba294754 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -119,7 +119,7 @@ bool DriverMED_W_Field::Set(SMESHDS_Mesh *      mesh,
         if ( _nbElemsByGeom.size() == 1 )
           _nbElemsByGeom.push_back( std::make_pair( SMDSEntity_0D, 0));
         _nbElemsByGeom.push_back( std::make_pair( SMDSEntity_Node,
-                                             nodes.size() + _nbElemsByGeom.back().second ));
+                                                  nodes.size() + _nbElemsByGeom.back().second ));
       }
     }
 
@@ -156,7 +156,7 @@ bool DriverMED_W_Field::Set(SMESHDS_Mesh *      mesh,
   else
     _dblValues.reserve( nbElems * nbComps );
 
-  return nbElems * nbComps;
+  return nbElems && nbComps;
 }
 
 //================================================================================
@@ -253,7 +253,11 @@ Driver_Mesh::Status DriverMED_W_Field::Perform()
   if ( !myMesh )
     return addMessage("Supporting mesh not set", /*isFatal=*/true );
 
-  MED::PWrapper medFile = MED::CrWrapperW( myFile );
+  int version = -1, major, minor, release;
+  if ( MED::GetMEDVersion( myFile, major, minor, release ))
+    version = major * 10 + minor;
+
+  MED::PWrapper medFile = MED::CrWrapperW( myFile, version );
   MED::PMeshInfo meshInfo;
   if ( myMeshId > 0 )
   {
@@ -276,7 +280,7 @@ Driver_Mesh::Status DriverMED_W_Field::Perform()
       ( !myMeshName.empty() && meshInfo->GetName() != myMeshName ))
   {
     myMeshId = -1;
-    return addMessage("Specified mesh not found in the file", /*isFatal=*/true );
+    return addMessage("DriverMED_W_Field: Specified mesh not found in the file", /*isFatal=*/true );
   }
 
   // create a field