我是一名使用 Fortran 的用户。我尝试使用 Fortran 来使用 netCDF,但我不断收到以下错误。
PROGRAM net1
use netcdf
IMPLICIT NONE
CHARACTER(len = 256) :: fi
REAL, ALLOCATABLE :: T2(:,:,:)
INTEGER :: dx, dy
INTEGER :: ncid, varid
INTEGER :: start(3), cou(3)
fi = "wrfout_d10_2016-10-06_00.nc"
dx = 209
dy = 209
call check(nf90_open(fi, NF90_NOWRITE, ncid), "opening T2 file")
call check(nf90_inq_varid(ncid, "T2", varid), "getting T2 varid")
allocate(T2(0, dx, dy))
start = [0, 0, 0]
cou = [0, dx, dy]
WRITE(*, *) "Reading Grid T2"
call check(nf90_get_var(ncid, varid, T2, start = start, count = cou), "reading T2")
WRITE(*, *) "T2 : ", sum(T2) / size(T2)
call check(nf90_close(ncid), "closing T2 file")
deallocate(T2)
END PROGRAM
gfortran net1.f90 -I/home/lsh/WRF/Library/include -L/home/lsh/WRF/Library/lib -lnetcdff -L/home/lsh/WRF/Library/lib -lnetcdf -ldl -lm -lnetcdf -lhdf5_hl -lhdf5 -lz
/usr/bin/ld: /tmp/ccrMu0aM.o: in function `MAIN__':
net1.f90:(.text+0x184): undefined reference to `check_'
/usr/bin/ld: net1.f90:(.text+0x1c7): undefined reference to `check_'
/usr/bin/ld: net1.f90:(.text+0x5ca): undefined reference to `check_'
/usr/bin/ld: net1.f90:(.text+0x749): undefined reference to `check_'
第一部分是我做的Fortran代码,第二部分是我执行的命令,最后部分是发生的错误
不知道如何解决
缺少子程序检查定义
SUBROUTINE check(status, msg)
INTEGER, INTENT(IN) :: status
CHARACTER(*), INTENT(IN) :: msg
IF (status /= 0) THEN
WRITE(*, *) "Error: ", msg
STOP
END IF
END SUBROUTINE check
PROGRAM net1
use netcdf
IMPLICIT NONE
CHARACTER(len=256) :: fi
REAL, ALLOCATABLE :: T2(:,:,:)
INTEGER :: dx, dy
INTEGER :: ncid, varid
INTEGER :: start(3), cou(3)
INTEGER :: status
fi = "wrfout_d10_2016-10-06_00.nc"
dx = 209
dy = 209
CALL check(nf90_open(fi, NF90_NOWRITE, ncid), "opening T2 file")
CALL check(nf90_inq_varid(ncid, "T2", varid), "getting T2 varid")
ALLOCATE(T2(0, dx, dy))
start = [0, 0, 0]
cou = [0, dx, dy]
WRITE(*, *) "Reading Grid T2"
CALL check(nf90_get_var(ncid, varid, T2, start=start, count=cou), "reading T2")
WRITE(*, *) "T2 : ", SUM(T2) / SIZE(T2)
CALL check(nf90_close(ncid), "closing T2 file")
DEALLOCATE(T2)
END PROGRAM