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