Loading src/BasicTools/IO/XdmfReader.py +81 −77 Original line number Diff line number Diff line Loading @@ -13,10 +13,9 @@ import numpy as np import xml.sax from BasicTools.Helpers.TextFormatHelper import TFormat from BasicTools.IO.XdmfTools import FieldNotFound from BasicTools.NumpyDefs import PBasicFloatType import BasicTools.Containers.ElementNames as ElementNames from BasicTools.IO.XdmfTools import FieldNotFound, HasHdf5Support, XdmfNumber def ReadXdmf(fileName): Loading Loading @@ -102,7 +101,7 @@ class XdmfDomain(Xdmfbase): if isinstance(nameornumber,str): for g in self.grids: if g.Name == nameornumber : return g raise raise Exception(f" grid with name '{nameornumber}' not found") else: return self.grids[nameornumber] Loading Loading @@ -906,11 +905,16 @@ def CheckIntegrity(): except Exception as e : pass res = XdmfReader(filename = TestDataPath + "Unstructured.xmf" ) for filename in ["Unstructured.xmf", "UnstructuredBinary.xmf", "UnstructuredAscii.xmf" ]: if not HasHdf5Support() and filename == "Unstructured.xmf": continue res = XdmfReader(filename = TestDataPath + filename ) res.lazy = False res.Read() res = XdmfReader(filename = TestDataPath + "Unstructured.xmf" ) res = XdmfReader(filename = TestDataPath + filename ) # read only the xml part res.Read() Loading Loading @@ -990,7 +994,7 @@ def CheckIntegrity(): topo = res.xdmf.domains[0].GetGrid("Grid").topology.dataitems[0].GetData() #print(topo) if topo[2] != 1: raise if topo[0] != XdmfNumber[ElementNames.Hexaedron_8]: raise ######################### Structured ######################### res = XdmfReader(filename = TestDataPath + "Structured.xmf" ) Loading @@ -1016,7 +1020,7 @@ def CheckIntegrity(): def Example1(): import BasicTools.TestData as test # Create a Reader reader = XdmfReader(filename = test.GetTestDataPath() + "Unstructured.xmf") reader = XdmfReader(filename = test.GetTestDataPath() + "UnstructuredBinary.xmf") # Do the reading (only the xml part, to read all the data set lazy to False) #res.lazy = False reader.Read() Loading src/BasicTools/IO/XdmfTools.py +7 −1 Original line number Diff line number Diff line Loading @@ -63,10 +63,16 @@ class FieldNotFound(ValueError): def __str__(self): return repr(self.value) # pragma: no cover def HasHdf5Support(): try: import h5py return True except: return False def CheckIntegrity(): FieldNotFound('toto'); FieldNotFound('toto') return 'OK' if __name__ == '__main__': Loading src/BasicTools/IO/XdmfWriter.py +18 −4 Original line number Diff line number Diff line Loading @@ -13,10 +13,10 @@ import os from BasicTools.Helpers.TextFormatHelper import TFormat import BasicTools.Containers.ElementNames as EN from BasicTools.IO.XdmfTools import XdmfName,XdmfNumber from BasicTools.IO.WriterBase import WriterBase as WriterBase from BasicTools.Helpers.MPIInterface import MPIInterface as MPI from BasicTools.NumpyDefs import PBasicIndexType from BasicTools.IO.XdmfTools import XdmfName,XdmfNumber, HasHdf5Support def ArrayToString(data): return " ".join(str(x) for x in data) Loading Loading @@ -237,7 +237,12 @@ class XdmfWriter(WriterBase): self.__chunkSize = 2**30 self.automaticOpen = False try: import h5py self.__isHdf5 = True except: self.__isHdf5 = False self.__hdf5FileName = "" self.__hdf5FileNameOnly = None self.__hdf5FilePointer = None Loading Loading @@ -289,7 +294,13 @@ class XdmfWriter(WriterBase): if val : self.SetBinary(True) try: import h5py self.__isHdf5 = val except: self.__isHdf5 = False if val: print("h5py not available using binary file for output") def SetChunkSize(self,size): self.__chunkSize = size Loading Loading @@ -1518,7 +1529,10 @@ def CheckIntegrityDDM(GUI=False): writer.Write(mesh1D, CellFields = [np.arange(mesh1D.GetNumberOfElements())+0.1 ], CellFieldsNames=["IPId_0"]) writer.Close() if HasHdf5Support(): return "ok" else: return "ok, but no hdf5 support" if __name__ == '__main__': Loading Loading
src/BasicTools/IO/XdmfReader.py +81 −77 Original line number Diff line number Diff line Loading @@ -13,10 +13,9 @@ import numpy as np import xml.sax from BasicTools.Helpers.TextFormatHelper import TFormat from BasicTools.IO.XdmfTools import FieldNotFound from BasicTools.NumpyDefs import PBasicFloatType import BasicTools.Containers.ElementNames as ElementNames from BasicTools.IO.XdmfTools import FieldNotFound, HasHdf5Support, XdmfNumber def ReadXdmf(fileName): Loading Loading @@ -102,7 +101,7 @@ class XdmfDomain(Xdmfbase): if isinstance(nameornumber,str): for g in self.grids: if g.Name == nameornumber : return g raise raise Exception(f" grid with name '{nameornumber}' not found") else: return self.grids[nameornumber] Loading Loading @@ -906,11 +905,16 @@ def CheckIntegrity(): except Exception as e : pass res = XdmfReader(filename = TestDataPath + "Unstructured.xmf" ) for filename in ["Unstructured.xmf", "UnstructuredBinary.xmf", "UnstructuredAscii.xmf" ]: if not HasHdf5Support() and filename == "Unstructured.xmf": continue res = XdmfReader(filename = TestDataPath + filename ) res.lazy = False res.Read() res = XdmfReader(filename = TestDataPath + "Unstructured.xmf" ) res = XdmfReader(filename = TestDataPath + filename ) # read only the xml part res.Read() Loading Loading @@ -990,7 +994,7 @@ def CheckIntegrity(): topo = res.xdmf.domains[0].GetGrid("Grid").topology.dataitems[0].GetData() #print(topo) if topo[2] != 1: raise if topo[0] != XdmfNumber[ElementNames.Hexaedron_8]: raise ######################### Structured ######################### res = XdmfReader(filename = TestDataPath + "Structured.xmf" ) Loading @@ -1016,7 +1020,7 @@ def CheckIntegrity(): def Example1(): import BasicTools.TestData as test # Create a Reader reader = XdmfReader(filename = test.GetTestDataPath() + "Unstructured.xmf") reader = XdmfReader(filename = test.GetTestDataPath() + "UnstructuredBinary.xmf") # Do the reading (only the xml part, to read all the data set lazy to False) #res.lazy = False reader.Read() Loading
src/BasicTools/IO/XdmfTools.py +7 −1 Original line number Diff line number Diff line Loading @@ -63,10 +63,16 @@ class FieldNotFound(ValueError): def __str__(self): return repr(self.value) # pragma: no cover def HasHdf5Support(): try: import h5py return True except: return False def CheckIntegrity(): FieldNotFound('toto'); FieldNotFound('toto') return 'OK' if __name__ == '__main__': Loading
src/BasicTools/IO/XdmfWriter.py +18 −4 Original line number Diff line number Diff line Loading @@ -13,10 +13,10 @@ import os from BasicTools.Helpers.TextFormatHelper import TFormat import BasicTools.Containers.ElementNames as EN from BasicTools.IO.XdmfTools import XdmfName,XdmfNumber from BasicTools.IO.WriterBase import WriterBase as WriterBase from BasicTools.Helpers.MPIInterface import MPIInterface as MPI from BasicTools.NumpyDefs import PBasicIndexType from BasicTools.IO.XdmfTools import XdmfName,XdmfNumber, HasHdf5Support def ArrayToString(data): return " ".join(str(x) for x in data) Loading Loading @@ -237,7 +237,12 @@ class XdmfWriter(WriterBase): self.__chunkSize = 2**30 self.automaticOpen = False try: import h5py self.__isHdf5 = True except: self.__isHdf5 = False self.__hdf5FileName = "" self.__hdf5FileNameOnly = None self.__hdf5FilePointer = None Loading Loading @@ -289,7 +294,13 @@ class XdmfWriter(WriterBase): if val : self.SetBinary(True) try: import h5py self.__isHdf5 = val except: self.__isHdf5 = False if val: print("h5py not available using binary file for output") def SetChunkSize(self,size): self.__chunkSize = size Loading Loading @@ -1518,7 +1529,10 @@ def CheckIntegrityDDM(GUI=False): writer.Write(mesh1D, CellFields = [np.arange(mesh1D.GetNumberOfElements())+0.1 ], CellFieldsNames=["IPId_0"]) writer.Close() if HasHdf5Support(): return "ok" else: return "ok, but no hdf5 support" if __name__ == '__main__': Loading