Fortran写nc文件 f90 netcdf

netCDF的教程例子,用Fortran95把数据写到文件中

编译:gfortran  ****.f90 -I/usr/local/include -L/usr/local/lib -lnetcdff -o test1

运行:./test1

源代码:

program simple_xy_wr
  use netcdf
  implicit none

  ! 定义数据文件的名称

  character (len = *), parameter :: FILE_NAME = "simple_xy.nc"

  ! 写一个12*6的二维数据
  integer, parameter :: NDIMS = 2
  integer, parameter :: NX = 6, NY = 12

  ! 当创建netCDF文件的时候,变量和维数都有一个对应的ID

  integer :: ncid, varid, dimids(NDIMS)
  integer :: x_dimid, y_dimid
 
  ! 要保存到文件的数据数组

  integer, dimension(:,:), allocatable :: data_out

 

  ! 为数据数组分配内存

  allocate(data_out(NY, NX))

  ! 随意往数据数组里写一些数据

  integer :: x, y

  do x = 1, NX
     do y = 1, NY
        data_out(y, x) = (x - 1) * NY + (y - 1)
     end do
  end do

 

  ! 创建netCDF文件,返回文件对应的ID,如果存在则覆盖,check子程序用来检验执行是否成功

  call check( nf90_create(FILE_NAME, NF90_CLOBBER, ncid) )

  ! 定义维数,返回一个对应的ID
  call check( nf90_def_dim(ncid, "x", NX, x_dimid) )
  call check( nf90_def_dim(ncid, "y", NY, y_dimid) )

  ! 把上面得到的ID写到一个存放ID的数组里,注意,在fortran中,数组是以列为主存放数据的

  dimids =  (/ y_dimid, x_dimid /)

  ! 定义变量,返回一个对应的ID

  call check( nf90_def_var(ncid, "data", NF90_INT, dimids, varid) )

  ! 定义完成,关闭定义模式

  call check( nf90_enddef(ncid) )

 

  ! 写入数据

  call check( nf90_put_var(ncid, varid, data_out) )

  ! 关闭文件

  call check( nf90_close(ncid) )

  !提示写文件成功

  print *, "*** SUCCESS writing example file simple_xy.nc! "

 

contains
  subroutine check(status)
    integer, intent ( in) :: status
  
    if(status /= nf90_noerr) then
      print *, trim(nf90_strerror(status))
      stop 2
    end if
  end subroutine check
end program simple_xy_wr

你可能感兴趣的:(Fortran写nc文件 f90 netcdf)