h5fortran 简介与使用指南
文章目录
- h5fortran 简介与使用指南
- 什么是 h5fortran?
- 主要特性
- 安装
- 前提条件
- 安装方法
- 基本用法
- 示例代码
- 常用方法
- 高级功能
- 压缩数据
- 属性操作
- 处理字符串
- 与 CMake 项目集成
- 注意事项
- 文档与资源
h5fortran 简介与使用指南
什么是 h5fortran?
h5fortran 是一个开源的 Fortran 库,用于简化与 HDF5 文件的交互。它提供了高级接口,使得 Fortran 程序员能够更轻松地读写 HDF5 格式的文件,而无需直接处理 HDF5 库的底层细节。
GitHub 仓库: https://github.com/geospace-code/h5fortran
主要特性
- 简化的 HDF5 文件读写接口
- 支持标量、一维、二维、三维和四维数组的读写
- 支持整数、实数、复数和字符串数据类型
- 自动创建文件和数据集
- 支持压缩和分块存储
- 跨平台兼容性
安装
前提条件
- 安装 HDF5 库(版本 1.8 或更高)
- Fortran 编译器(如 gfortran、ifort 等)
安装方法
-
克隆仓库:
git clone https://github.com/geospace-code/h5fortran.git cd h5fortran
-
编译安装:
mkdir build && cd build cmake .. make sudo make install # 如果需要系统级安装
或者,你也可以直接将 h5fortran 作为子模块添加到你的项目中。
基本用法
示例代码
program h5fortran_exampleuse h5fortran, only: hdf5_fileimplicit nonetype(hdf5_file) :: h5freal, allocatable :: A(:,:)integer :: i! 分配并初始化数组allocate(A(3,2))A = reshape([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], [3,2])! 创建 HDF5 文件并写入数据call h5f%open('test.h5', action='w')call h5f%write('/array2d', A)call h5f%close()! 重新打开文件读取数据call h5f%open('test.h5', action='r')call h5f%read('/array2d', A)call h5f%close()! 打印读取的数据do i = 1, size(A,1)print *, A(i,:)end dodeallocate(A)
end program h5fortran_example
常用方法
-
打开/关闭文件:
call h5f%open(filename, action) ! action: 'r' (read), 'w' (write), 'rw' (read/write) call h5f%close()
-
写入数据:
call h5f%write(dataset_name, data)
-
读取数据:
call h5f%read(dataset_name, data)
-
检查数据集是否存在:
logical :: exists exists = h5f%exists(dataset_name)
-
获取数据集属性:
integer :: dtype, drank call h5f%get_dtype(dataset_name, dtype) ! 获取数据类型 call h5f%shape(dataset_name, dims) ! 获取维度
高级功能
压缩数据
call h5f%write('/compressed_data', A, chunk_size=[10,10], comp_level=6)
属性操作
! 写入属性
call h5f%writeattr('/dataset', 'description', 'This is a test dataset')! 读取属性
character(100) :: attr_val
call h5f%readattr('/dataset', 'description', attr_val)
处理字符串
character(20) :: str = "Hello HDF5"
call h5f%write('/string_data', str)
与 CMake 项目集成
如果你使用 CMake 构建项目,可以在你的 CMakeLists.txt 中添加:
find_package(h5fortran REQUIRED)
target_link_libraries(your_target PRIVATE h5fortran::h5fortran)
注意事项
- 确保在使用前正确分配数组
- 读写操作时注意文件的操作模式(‘r’, ‘w’, ‘rw’)
- 对于大型数据集,考虑使用分块和压缩以提高性能
- 检查操作是否成功(大多数函数都有可选的 istatus 参数)
文档与资源
- GitHub 仓库中的 README 和示例代码
- 源代码中的文档注释
- HDF5 官方文档(了解底层细节)
h5fortran 大大简化了 Fortran 程序中 HDF5 文件的操作,使得科学家和工程师能够更专注于数据处理而非文件 I/O 的实现细节。