Salome HOME
Add test for .mesh file format
[tools/medcoupling.git] / src / MEDLoader / MeshFormatWriter.cxx
index 553bd648eb51b5fb2123a258ff8f883aef55a31f..d86046d4b9c91afdca2b6975f4dce717ade75d76 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2021-2023  CEA, EDF
+// Copyright (C) 2021-2024  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -74,11 +74,14 @@ void MeshFormatWriter::setMEDFileDS(MEDCoupling::MEDFileData* mfd)
     _mesh->incrRef();
     MEDCoupling::MEDFileFields* fields = mfd->getFields();
 
-    for (int i = 0; i<fields->getNumberOfFields(); i++ )
+    if (fields)
     {
-        MEDCoupling::MEDFileAnyTypeFieldMultiTS* field = fields->getFieldAtPos(i);
-        MEDCoupling::MEDFileFieldMultiTS * f = dynamic_cast<MEDCoupling::MEDFileFieldMultiTS *>(field);
-        _fields.push_back(f);
+      for (int i = 0; i<fields->getNumberOfFields(); i++ )
+      {
+          MEDCoupling::MEDFileAnyTypeFieldMultiTS* field = fields->getFieldAtPos(i);
+          MEDCoupling::MEDFileFieldMultiTS * f = dynamic_cast<MEDCoupling::MEDFileFieldMultiTS *>(field);
+          _fields.push_back(f);
+      }
     }
 
 
@@ -867,7 +870,8 @@ void MeshFormatWriter::linkFamilyToCells()
         int meshDimRelToMax = levs[iDim];
         MEDCoupling::MCAuto< MEDCoupling::MEDCouplingMesh > mesh = _mesh->getMeshAtLevel( meshDimRelToMax);
         MEDCoupling::MCAuto< MEDCoupling::MEDCouplingUMesh > umesh0 = mesh->buildUnstructured();
-        const MEDCoupling::DataArrayIdType * famIds = _mesh->getFamilyFieldAtLevel(meshDimRelToMax);
+        const MEDCoupling::DataArrayIdType * famIdsField = _mesh->getFamilyFieldAtLevel(meshDimRelToMax);
+        const MEDCoupling::DataArrayIdType * famIds = famIdsField->getDifferentValues();
         const MEDCoupling::mcIdType * famID = famIds->begin(), *famIDEnd = famIds->end();
         for (; famID < famIDEnd; ++famID)
         {