我使用fortran创建netcdf文件。我有这个问题:我别无选择,只能使用循环来定义我的一些变量(并分配属性值)。然后,当我想提供变量的值(即nf90_put_var)时,它只回忆已经定义的最后一个变量...我已经尝试了很多东西来解决问题,但我没有成功。有人可以帮帮我吗?
以下是我脚本的一小部分:
DO IP=1,N(PTS)
Param_name='var1'
params(I,IPTS)=INT(I,IPTS,IP)
! Define Netcdf Variable
IERREU = nf90_def_var(ncid, Param_name, nf90_real, dimid, ParVarID)
IF (IERREU.NE.0) THEN
CALL check_err (IERREU)
STOP
ENDIF
ENDDO
! End define mode
IERREU = nf90_enddef(ncid)
IF (IERREU.NE.0) THEN
CALL check_err (IERREU)
STOP
ENDIF
! Write the data in netcdf
IERREU = nf90_put_var(ncid,parvarID, params)
IF (IERREU.NE.0) THEN
CALL check_err (IERREU)
STOP
ENDIF
答案 0 :(得分:3)
您必须分别为每个变量存储parVarId
。也许将它存储在一个数组中。现在,您每次调用nf90_def_var
都会覆盖它。
integer ParVarIds(N(PTS))
DO IP=1,N(PTS)
...
IERREU = nf90_def_var(ncid, Param_name, nf90_real, dimid, ParVarIds(IP))
...
ENDDO
DO IP=1,N(PTS)
...
IERREU = nf90_put_var(ncid,parVarIds(IP), something)
...
ENDDO