]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Implementation of fake medfile methods
authorAnthony Geay <anthony.geay@edf.fr>
Tue, 9 Oct 2018 14:06:32 +0000 (16:06 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Tue, 9 Oct 2018 14:06:32 +0000 (16:06 +0200)
src/MEDLoader/CMakeLists.txt
src/MEDLoader/MEDExt.cxx [new file with mode: 0644]
src/MEDLoader/MEDExt.hxx [new file with mode: 0644]
src/MEDLoader/MEDFileFieldMultiTS.cxx

index b54b36b517fcc7851f8de52a2716fa8de5321dfa..4d2787fbb03f4599c1815e84f8a0849256f70ff0 100644 (file)
@@ -80,6 +80,7 @@ SET(medloader_SOURCES
   SauvMedConvertor.cxx
   SauvReader.cxx
   SauvWriter.cxx
+  MEDExt.cxx
   )
 
 ADD_LIBRARY(medloader ${medloader_SOURCES})
diff --git a/src/MEDLoader/MEDExt.cxx b/src/MEDLoader/MEDExt.cxx
new file mode 100644 (file)
index 0000000..81f609d
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright (C) 2018  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Anthony Geay (EDF R&D)
+
+#include "MEDExt.hxx"
+
+med_int MEDfieldnEntityType(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit)
+{
+  return 1;
+}
+
+med_err MEDfieldEntityType(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, med_entity_type * const  entitypes, med_int * const  usedbyncs)
+{
+  entitypes[0]=MED_CELL;
+  *usedbyncs=1584;
+  return 0;
+}
+
+med_int MEDfieldnGeotype(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype)
+{
+  return 1;
+}
+
+med_err MEDfieldGeotype(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, med_geometry_type *const geotypes, med_int * const usedbyncs)
+{
+  geotypes[0]=MED_QUAD4;
+  *usedbyncs=1584;
+  return 0;
+}
+
diff --git a/src/MEDLoader/MEDExt.hxx b/src/MEDLoader/MEDExt.hxx
new file mode 100644 (file)
index 0000000..f430d87
--- /dev/null
@@ -0,0 +1,31 @@
+// Copyright (C) 2018  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Anthony Geay (EDF R&D)
+
+#include "med.h"
+
+constexpr med_int MED_ALL_NUMDT = 1999999999;
+
+med_int MEDfieldnEntityType(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit);
+
+med_err MEDfieldEntityType(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, med_entity_type * const  entitypes, med_int * const  usedbyncs);
+
+med_int MEDfieldnGeotype(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype);
+
+med_err MEDfieldGeotype(const med_idt fid, const char * const fieldname, const med_int numdt, const med_int numit, const med_entity_type entitype, med_geometry_type *const geotypes, med_int * const usedbyncs);
index 34dde39ad985f81fcaefd4fd54864b11f78cb5bb..7c3ba4d514acdffe58b08fbe82de27f9ad6ecfa5 100644 (file)
@@ -27,6 +27,8 @@
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
 
+#include "MEDExt.hxx"
+
 #include <sstream>
 
 using namespace MEDCoupling;
@@ -484,6 +486,17 @@ void MEDFileAnyTypeFieldMultiTSWithoutSDA::synchronizeNameScope()
 void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysRecursively(med_idt fid, int nbPdt, med_field_type fieldTyp, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
 {
   _time_steps.resize(nbPdt);
+  int nentitype(MEDfieldnEntityType(fid,_name.c_str(),MED_ALL_NUMDT,MED_ALL_NUMDT));
+  INTERP_KERNEL::AutoPtr<med_entity_type> types(new med_entity_type[nentitype]);
+  med_int usedbyncs;
+  MEDFILESAFECALLERRD0(MEDfieldEntityType,(fid,_name.c_str(),MED_ALL_NUMDT,MED_ALL_NUMDT,types,&usedbyncs));
+  for(int i=0;i<nentitype;i++)
+    {
+      int ngeotype(MEDfieldnGeotype(fid,_name.c_str(),MED_ALL_NUMDT,MED_ALL_NUMDT,types[i]));
+      INTERP_KERNEL::AutoPtr<med_geometry_type> geotypes(new med_geometry_type[ngeotype]);
+      med_int geousedbyncs;
+      MEDFILESAFECALLERRD0(MEDfieldGeotype,(fid,_name.c_str(),MED_ALL_NUMDT,MED_ALL_NUMDT,types[i],geotypes,&geousedbyncs));
+    }
   for(int i=0;i<nbPdt;i++)
     {
       std::vector< std::pair<int,int> > ts;