【问题标题】:Netcdf files created with fortran使用 fortran 创建的 Netcdf 文件
【发布时间】:2015-12-16 23:44:29
【问题描述】:

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

【问题讨论】:

    标签: fortran netcdf


    【解决方案1】:

    您必须为每个变量分别存储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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-07
      • 2020-04-17
      • 1970-01-01
      • 2016-04-27
      • 2020-03-13
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      相关资源
      最近更新 更多