fortran - 在 fortran 中追加写入 hdf5 文件

标签 fortran hdf5

我想以附加方式将数据写入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 文件来实现这一点,即在同一数据集名称下的同一文件中保存数字,但不保存保存这些数字的数组?

最佳答案

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

关于fortran - 在 fortran 中追加写入 hdf5 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68941871/

相关文章:

python - Fortran:以 Python 方式使用数组:派生类型、派生类型迭代

fortran - 如何在循环中单行打印?

arrays - 仅在根进程上声明的数组

python pandas HDF5Store 附加带有长字符串列的新数据框失败

c++ - 如何通过 C 或 C++ API 获取 HDF5 数据集的名称?

c++ - 在 netbeans 中包含 hdf5 的库

compiler-errors - 编译使用在同一 fortran 文件中定义的模块的子例程时出错

arrays - 使用向量索引多维 Fortran 数组

python - 如何在 h5py 中为 HDF5 数据集分配比例(或物理尺寸)?

c++ - HDF5 :Create a Dataset with string