1
我已經使用這個答案Netcdf Fortran array allocation at run time給出的代碼,但我得到一個運行時錯誤,當我運行此代碼forrtl:嚴重(151)分配數組已分配
forrtl:嚴重(151)可分配數組已分配
當我與-g
和-traceback
錯誤重新編譯爲追溯到這一行
allocate(lats(latlen))
可以在運行時修改內存嗎?我正在使用Fortran,編譯器是ifort
。
這裏是我的代碼
integer retval,reason,i,in_ndim,ierr
integer ncid, lat_dimid,lat_varid, latlen
integer lon_varid,lonlen
character*(*) LAT_NAME, LON_NAME
parameter (LAT_NAME='lat', LON_NAME='lon')
real lats[allocatable](:)
real lons[allocatable](:)
call system('ls hgt_*.nc > hgtFiles.txt')
open(10,file='hgtFiles.txt',action="read")
varname = "hgt"
do
read(10,*,IOSTAT=reason) in_cfn
if (reason/=0) EXIT
print *,in_cfn
retval = nf_open(in_cfn,NF_NOWRITE,ncid)
if (retval .ne. nf_noerr) call handle_err(retval)
retval = nf_inq_dimid(ncid,LAT_NAME,lat_dimid)
if (retval .ne. nf_noerr) call handle_err(retval)
retval = nf_inq_dimlen(ncid,lat_dimid,latlen)
if (retval .ne. nf_noerr) call handle_err(retval)
print *,latlen
allocate(lats(latlen))
retval = nf_inq_varid(ncid,LAT_NAME,lat_varid)
if (retval .ne. nf_noerr) call handle_err(retval)
retval = nf_get_var_real(ncid,lat_varid,lats)
if (retval .ne. nf_noerr) call handle_err(retval)
print *,lats
end do
close(10)
謝謝!解決了我的問題! – gansub