【问题标题】:Appending writes to hdf5 file in fortran在 fortran 中将写入附加到 hdf5 文件
【发布时间】:2021-10-26 17:05:50
【问题描述】:

我想以附加方式将数据写入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】:

您需要创建一个可扩展的数据集,然后在 hyperslab 或点选择的帮助下填充它(否则,之前写入的数据将被覆盖)。使用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

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 1970-01-01
    • 2013-03-01
    • 2016-03-22
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多