在 fortran 中追加写入 hdf5 文件

问题描述 投票:0回答:1

我想以附加方式将数据写入fortran中的hdf5文件中,但我无法将数据保存在大型内存数组中。

使用 ascii 写作时,我可以这样做:

program example1
implicit none
integer :: nu, i
open(filename="someFile.txt", newunit=nu)
do i = 1, 10
   write(nu, *) i
end do
close(nu)
end program example1

我会得到一个包含从 1 到 10 的所有整数的文件,但没有声明大小为 10 的一维数组。

如何在 fortran 中编写一个 hdf5 文件来实现这一点,即在同一数据集名称下的同一文件中保存数字,但不保存保存这些数字的数组?

fortran hdf5
1个回答
3
投票

您需要创建一个可扩展的数据集,然后借助超板或点选择来填充它(否则,之前写入的数据将被覆盖)。使用 HDFql,您的用例可以在 Fortran 中按以下方式解决:

PROGRAM Example

      USE HDFql

      CHARACTER :: variable_number
      INTEGER :: state
      INTEGER :: i

      state = hdfql_execute("CREATE AND USE FILE test.h5")
      state = hdfql_execute("CREATE DATASET dset AS INT(0 TO UNLIMITED)")

      WRITE(variable_number, "(I0)") hdfql_variable_register(i)

      DO i = 1, 10
            state = hdfql_execute("ALTER DIMENSION dset TO +1")
            state = hdfql_execute("INSERT INTO dset[-1] VALUES FROM MEMORY " // variable_number)
      END DO

      state = hdfql_variable_unregister(i)
      state = hdfql_execute("CLOSE FILE")

END PROGRAM
© www.soinside.com 2019 - 2024. All rights reserved.