VTKHDF file format: 2025 status update

In an effort to improve both the VTK ASCII “legacy” and the various VTK XML formats, we introduced the VTKHDF file format in 2022, taking advantage of the HDF5 standard.

VTKHDF was designed for high-performance data access, while being easy to use and write from simulation software, thanks to the various HDF5 library language bindings.

The format has quietly been evolving over the last few years, with growing adoption from the scientific community. Many additional data types were added to the specification and the vtkHDFReader implementation. VTKHDF has proven to be much easier to write than previous VTK formats, because one can write it without depending on VTK itself, while benefiting from the native high-performance parallel writing capabilities for multi-dimensional data provided by HDF5, which is well suited for HPC usage.

Documentation updates & tutorial

For an overview of the current implementation status of the VTKHDF specification in VTK and ParaView, you can take a look at the updated VTKHDF Status.

If you are a new VTKHDF user, you can read the new VTKHDF tutorial to guide you through writing your first VTKHDF files, adding new elements step-by-step. This tutorial will first show you how to write basic unstructured data, and attach scalar fields to it. Then, we will explain the required fields for time-dependent data, how to optimize files using static meshes and finally we will present other data types, such as composite structures and regular grids.

We also have re-organized the VTKHDF documentation so you can find your way more easily through the format.

OpenRadioss Crash simulation output converted to VTKHDF, rendered in ParaView

VTKHDF feature highlight

VTKHDF is a container for a growing number of VTK data types. It now supports composite data types MultiBlockDataSet and PartitionedDataSetCollection, that define a composite tree structure. Each leaf is a non-composite dataset such as PolyData or UnstructuredGrid. This allows supporting multi-piece simulation outputs without merging all of the geometry in a single piece.

Fig. 2: VTKHDF composite dataset structure, from the VTKHDF documentation

There is also news for Adaptive Mesh refinement (AMR) users! vtkHDF can now read the tree-based AMR HyperTreeGrid data type, as well as the patch-based Overlapping AMR. The former describes cell trees placed on a regular grid, refined up to a certain level using compact binary descriptors and masks. Overlapping AMR defines a collection of uniform grids grouped into different levels of refinement.

These new data types can be read as temporal files, and distributed in multiple partitions to be read in parallel using MPI. The vtkHDF writer was also improved to support writing Unstructured composite, parallel and time-dependent data. Static mesh support has been added in both the reader and the writer, which allows caching geometry between time steps when scalar fields are changing but the unstructured mesh geometry is static.

A temporal DualSPHysics fluid simulation efficiently stored using VTKHDF, rendered as particle pathlines over time in ParaView 6.0.

You can use all of these VTKHDF data types and new features in the newest ParaView 6.0 release.

There are still many improvements to be made to VTKHDF and new data types to be added, among which are rectilinear grids, tables, high-order elements… Please reach out to Kitware to start a discussion if you wish to help develop VTKHDF!

Acknowledgements

Improvements to the VTKHDF specification, writer and reader were funded by Total Energies, “CEA, DAM, DIF, F-91297 Arpajon, France”, KM-Turbulenz and an internal effort by Kitware Europe.

Leave a Reply