使用fortran创建的Netcdf文件

时间:2015-12-16 14:59:30

标签: fortran netcdf

我使用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

1 个答案:

答案 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