VTKHDF roadmap

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¬Ļ.

What is currently supported with VTKHDF

In the VTKHDF file format.

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.

In VTK

VTK has a dedicated module‚Ā∂ VTK::IOHDF to read and write VTKHDF file format, it contains a reader named vtkHDFReader and a writer, vtkHDFWriter.

types serial distributed Transient (in one file)
vtkPolyData :white_check_mark: :white_check_mark: :white_check_mark:
vtkUnstructuredGrid :white_check_mark: :white_check_mark: :white_check_mark:
vtkImageData :white_check_mark: :white_check_mark: :white_check_mark:
vtkPartitionedDataSet :white_check_mark: :white_check_mark: :white_check_mark:
vtkPartitionedDataSetCollection³ :white_check_mark: :white_check_mark: :x:
vtkMultiBlockDataSet³ :white_check_mark: :x: :x:
vtkOverlappingAMR² :white_check_mark: :white_check_mark: :x:
vtkHDFReader supports

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.


types serial Transient (in one file)
vtkPolyData :white_check_mark: :white_check_mark:
vtkUnstructuredGrid :white_check_mark: :white_check_mark:
vtkPartitionedDataSetCollection³ :white_check_mark: :x:
vtkMultiBlockDataSet³ :white_check_mark: :x:
vtkHDFWriter supports

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.

In ParaView

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.

Roadmap

Few other features are already under development, discussion or planned. Some of them will be data type dependent like in this table:

PolyData UnstructuredGrid ImageData OverlappingAMR PartitionedDataSet PartitionedDataSetCollection MultiBlockDataSet
vtkHDFReader: Distributed support :large_blue_circle: :large_blue_circle: :large_blue_circle: :large_blue_circle: :large_blue_circle: :orange_circle: :orange_circle:
vtkHDFReader: Static mesh support** :green_circle: :green_circle: :white_circle: :white_circle: :green_circle: :white_circle: :white_circle:
vtkHDFWriter: non-distributed support :large_blue_circle: :large_blue_circle: :white_circle: :large_blue_circle: :orange_circle: :large_blue_circle: :large_blue_circle:
vtkHDFWriter:Distributed support :orange_circle: :orange_circle: :white_circle: :orange_circle: :orange_circle: :orange_circle: :orange_circle:
vtkHDFWriter: iterative transient writing :green_circle: :green_circle: :white_circle: :orange_circle: :orange_circle: :orange_circle: :orange_circle:
vtkHDFWriter: Static mesh support :white_circle: :white_circle: :white_circle: :white_circle: :white_circle: :white_circle: :white_circle:
VTKHDF ongoing efforts in 2024 based on Data Type supported by the file format

Legends:

:white_circle: Future work
:orange_circle: Looking for funding
:yellow_circle: To be implemented in 2024
:green_circle: Currently being implemented
:large_blue_circle: Already done

**: 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 Misc group under VTKHDF group 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.

How you can help

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.

Resources

Official up-to-date documentation¬Ļ : VTK File Formats - VTK documentation

Related discussions:

  • 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

4 Likes

cc @mwestphal @Francois_Mazen @berk.geveci @danlipsa @Louis_Gombert @Charles_Gueunet

Great roadmap, this is very useful. I have tried to follow the development of this format close, but the pace of recent development have been high and it‚Äôs not necessarily easy to hang on as an outsider. This overview is great, and I hope you manage to keep it updated. Maybe consider converting it to some ‚Äúreal‚ÄĚ documentation together with the file format spec (under docs.vtk.org)?

Keep up the good work!

2 Likes