如何在hdf5中存储模拟数据?

how to store simulation data in hdf5?

我想创建一个存储模拟数据的 HDF5 文件。数据由快照流组成,它们具有相同(或非常相似)的格式,但模拟时间不同。这个想法是,在读取文件后,可以在给定的模拟时间间隔内搜索快照。

这在 HDF5 中如何实现?

显然,每个快照都必须使用 H5::Group,这显然必须具有不同的名称(比如 'snapshot1'、'snapshot2' 等)。我可以在文件中添加 snapshot_name:time table 以便快速搜索吗?

HDF5是自描述数据格式,也就是说如何给每个分组添加信息的最好方式就是添加属性。

HDF5 "result.h5" {
GROUP "/" {
   GROUP "Timestep_0" {
      ATTRIBUTE "Time" {
         DATATYPE  H5T_IEEE_F64LE
         DATASPACE  SCALAR
         DATA {
         (0): 0
         }
      }
      DATASET "Temperature" {
         DATATYPE  H5T_IEEE_F32LE
         DATASPACE  SIMPLE { ( 128, 128 ) / ( 128, 128 ) }
         DATA {
         (0,0): ...