Salome HOME
Fix crash in Interpolate if the field is float
authorChristophe Bourcier <christophe.bourcier@cea.fr>
Wed, 15 Sep 2021 14:33:31 +0000 (16:33 +0200)
committerChristophe Bourcier <christophe.bourcier@cea.fr>
Wed, 15 Sep 2021 14:33:31 +0000 (16:33 +0200)
src/MEDCalc/cmp/MEDDataManager_i.cxx
src/MEDCalc/cmp/MEDDataManager_i.hxx

index 756b529b9f6fb0fc186352c1e119d116611fe471..cb4127df578c15dcf0a760993127efea2a5bf988 100644 (file)
@@ -722,6 +722,16 @@ MEDCouplingFieldDouble * MEDDataManager_i::getFieldDouble(const MEDCALC::FieldHa
                 fieldHandler->iteration,
                 fieldHandler->order));
   MCAuto<MEDCouplingFieldDouble> myField(DynamicCast<MEDCouplingField,MEDCouplingFieldDouble>(myFieldTmpp));
+
+  // trying float field
+  if (!myField){
+    MCAuto<MEDCouplingFieldFloat> myFieldFloat(DynamicCast<MEDCouplingField,MEDCouplingFieldFloat>(myFieldTmpp));
+    if (myFieldFloat){
+      myField = myFieldFloat->convertToDblField();
+      LOG("getFieldDouble: field "<<fieldHandler->fieldname<<" was read as float and converted to double.");
+    }
+  }
+
   myField->setMesh(myMesh);
   _fieldDoubleMap[fieldHandler->id] = myField.retn();
   return myField;
index f6081f08ed97d4861d3bd0a0bd5e28f0223f43d9..ff1ecfa444a5266ccfbdcb351ccec2a8abd9a024 100644 (file)
@@ -29,6 +29,7 @@
 #include "MEDCouplingRemapper.hxx"
 #include "MEDCouplingUMesh.hxx"
 #include "MEDCouplingFieldDouble.hxx"
+#include "MEDCouplingFieldFloat.hxx"
 using namespace MEDCoupling;
 
 /*! This map is used for lifecycle management of fields used in this operator */