Hello, I have an hdf5 dataset containing 3 large 4d arrays for xyz components of a vector. Each array is organized by time,nx,ny,nz, so if I wanted the x velocity for the 10th timestep at (0,0,0) that would be = xVel[9,0,0,0]. I am trying to create an xmf descriptor file for this data and I am having a little trouble figuring out how to use the HyperSlab command (the documentation shows how to do this for a static data set: http://www.xdmf.org/index.php/XDMF_Model_and_Format#HyperSlab), I am having a hard time getting this to work with my time series data.
For example using the paraview xmf reader on this (just shown for one timestep and one component) causes paraview to crash with an XdmfError::message(XdmfError::Level, std::string).
<?xml version="1.0" ?>
<!DOCTYPE Xdmf SYSTEM "Xdmf.dtd" >
<Grid Name="Box" GridType="HyperSlab" CollectionType="Temporal">
<!-- time step -->
<Grid Name="Box 0" GridType="Uniform">
<Topology TopologyType="3DCoRectMesh" Dimensions="26 3 26"/>
<DataItem DataType="Float" Dimensions="3" Format="XML">0.0 0.0 0.0</DataItem>
<DataItem DataType="Float" Dimensions="3" Format="XML">8 8 8</DataItem>
<Time Value="0" />
<Attribute Name="Z" AttributeType="Scalar" Center="Node">
<DataItem Dimensions="1 26 3 26" NumberType="Float" Precision="4" Type="HyperSlab"
Location48faultNormal.cycle=00000.essi:/vel_2 ijk layout/
I would add for context that the data set Location48faultNormal.cycle=00000.essi:/vel_2 ijk layout/ has a shape of [39878, 26, 3, 26] so I think that the dimension = “1 26 3 26” should correctly select all of the data at timestep t=1.
Thank You for your time and I greatly appreciate any assistance in resolving this. Also if you can’t help me with this specifically, if there are any examples of and xdmf3 file using hdf5 with the hyperSlab specification in a time step would also be very helpful.
Hi Eric, I believe that hyperslabs in xdmf are not working based on this gitlab issue:
It is not clear to me what is happening with the XDMF format as I don’t think it is being actively maintained, note the website you referenced has not been touched since 2018, I have been trying to steer my people away from using XDMF because of this (frequently unsuccessfully).
Oh ok that’s good to know (I definitely want to avoid adopting a dead format!). Could you recommend an alternative approach (or do you know of some projects which use paraview with medium sized compressed hdf5 files)? I only chose XDMF because it seemed like an (relatively) easy way of getting my (relatively simple uniform rectilinear) data into paraview. I had thought about writing a python plugin (using the programmable filter approach that they describe here https://www.paraview.org/Wiki/ParaView/Simple_ParaView_3_Python_Filters) but I am a little concerned about efficiency. I also want to try and make sure that whatever longterm approach I choose will support ZFP compressed hdf5 files, I am currently working with uncompressed hdf5 files (to try and get things to work) but I will eventually want to be able to use it with compressed hdf5 files.
Thank you for your help and for these clarifications!
My personal favorites are the VTK XML formats which support LZMA, zLIB, and LZ4 compression. Those can be read by VTK, ParaView, VisIt, and several of them can be read by Ensight. I have been frequently steered towards the exodus format when discussing the XDMF issues with others. Some of the ParaView examples, can and disk_out_ref, use exodus which might give you an idea of it’s power, it appears to support gzip (zlib?).
Would this permit to load data stored in binary files like it is possible with XDMF?
Is there a website you can recommend to get into this?
@firstkingofrome are you now using xdmf+hdf5+zfp? VTK XML does not support hdf5+zfp does it?
@patchett2002 How do you know about the compression algorithms that are supported by VTK XML?
Does one need to consult this page and know the rest or is that actually documented somewhere?
Anyway, these are all lossless. So for lossily compressed data in HDF5, xmdf is your only friend?