fortran如何写nc文件
假设Data(:,:), 第一维名称'nCells'=34, 第二维名称'nf'=7;
Data有两个Attributes: 'long_name'为'Brightness Temperature', 'units'为'degreeK'
program nc_write
use netcdf
implicit none
integer :: ierr, fidA, dataid, dimids(2)
integer, parameter :: nCells = 34, nf = 7
real, dimension(nCells, nf) :: data
character(len=*), parameter :: filename = 'output.nc'
character(len=*), parameter :: varname = 'Brightness_Temperature'
data = 0.0 ! 示例初始化
! 创建NetCDF文件
call nf90_create(filename, nf90_clobber, fidA)
call nf90_def_dim(fidA, 'nCells', nCells, dimids(1))
call nf90_def_dim(fidA, 'nf', nf, dimids(2))
call nf90_def_var(fidA, varname, nf90_float, dimids, dataid)
call nf90_put_att(fidA, dataid, 'long_name', 'Brightness Temperature')
call nf90_put_att(fidA, dataid, 'units', 'degreeK')
call nf90_enddef(fidA)
! 写入数据
call nf90_put_var(fidA, dataid, data)
! 关闭NetCDF文件
call nf90_close(fidA)
end program nc_write
若多线程并行,在线程0上将Data写入nc文件:
program mpi_nc_write
use mpi
use netcdf
implicit none
integer :: myid, ierr, fidA, dataid, dimids(2)
integer, parameter :: nCells = 34, nf = 7
real, dimension(nCells, nf) :: data
integer, dimension(MPI_STATUS_SIZE) :: status
character(len=*), parameter :: filename = 'output.nc'
character(len=*), parameter :: varname = 'Brightness_Temperature'
! 初始化MPI环境
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierr)
! 所有进程初始化数据
data = 0.0 ! 示例初始化,可以根据需要更改
! 仅进程0写入NetCDF文件
if (myid == 0) then
! 创建NetCDF文件
call nf90_create(filename, nf90_clobber, fidA)
call nf90_def_dim(fidA, 'nCells', nCells, dimids(1))
call nf90_def_dim(fidA, 'nf', nf, dimids(2))
call nf90_def_var(fidA, varname, nf90_float, dimids, dataid)
call nf90_put_att(fidA, dataid, 'long_name', 'Brightness Temperature')
call nf90_put_att(fidA, dataid, 'units', 'degreeK')
call nf90_enddef(fidA)
! 写入数据
call nf90_put_var(fidA, dataid, data)
! 关闭NetCDF文件
call nf90_close(fidA)
endif
! 结束MPI环境
call MPI_FINALIZE(ierr)
end program mpi_nc_write