The aim of this post is to summarize the current status of the VTKHDF File Format handles, indicate where supporting resources can be found, and provide a roadmap of what is planned for 2024 and beyond.
Additionally, a master issue has been opened here to track any improvements and clarifications of the VTKHDF specification itself.
This post will be updated as we augment the format specification and improve the implementation.
In short, VTKHDF is a file format to store VTK data types in a HDF5 file. The up-to-date specification about this file format is here¹.
This format¹ specifies how to store the following VTK data types:
*: not all cell types are supported
The VTKHDF format also specifies how to store distributed and transient data for most of these VTK data types.
VTK has a dedicated module⁶
VTK::IOHDF to read and write VTKHDF file format, it contains a reader named vtkHDFReader and a writer, vtkHDFWriter.
|Transient (in one file)
Some types are specified and can be read, but some of them can not be written using vtkHDFWriter just yet. The types not listed here need to be written externally, using any library which supports writing HDF5 files.
|Transient (in one file)
Note that a part of the vtkHDFReader is available in VTK 9.3.0 but most of these features are available on VTK master only.
This VTK::IOHDF module is fully exposed in ParaView and an extractor has been added for the vtkHDFWriter, which is essential for in situ use cases with Catalyst.
Few other features are already under development, discussion or planned. Some of them will be data type dependent like in this table:
|vtkHDFReader: Distributed support
|vtkHDFReader: Static mesh support**
|vtkHDFWriter: non-distributed support
|vtkHDFWriter: iterative transient writing
|vtkHDFWriter: Static mesh support
Looking for funding
To be implemented in 2024
Currently being implemented
**: The VTK pipeline can reuse the mesh from another timestep if the correct key information is passed through and a special cache system is used with vtkDataObjectMeshCache. For more details about this feature, see the following blog post about this topic⁷.
A few other features, not related to any specific data type, will be implemented this year:
- Add a
VTKHDFgroup to contain user data ignored by the VTK implementation of the file format.
- Support writing VTKHDF file in one file per block.
There are other features which may be implemented this year:
- Iterative transient writing in vtkHDFWriter which means to append in the same file all requested timestep.
- vtkPolyhedron support for VTKHDF UnstructuredGrid⁵.
Last, we aim to create a benchmark this year to evaluate performance of the VTKHDF file format in an HPC environment.
If you are interested in the VTKHDF file format or the current VTK implementation, please don’t hesitate to try it out. Feedback is always welcome!
Finally, if some features that currently lack funding in the roadmap interest you, please reach us via the Kitware contact page.
Official up-to-date documentation¹ : VTK File Formats - VTK documentation
About vtkOverlappingAMR²: link
About composite support³ : link
About OverlappingAMR with transient data⁴ : link
About Polyhedron cell support in VTKHDF⁵: link
HDF Module in the vtk repository⁶ : link
Kitware blog post about the StaticMeshPlugin⁷: link
Repository containing python scripts to generate VTKHDF file or to convert VTKXML file to VTKHDF file: https://gitlab.kitware.com/keu-public/vtkhdf/vtkhdf-scripts