2015-12-16 2 views
0

Я использую fortran для создания файлов netcdf. У меня есть эта проблема: у меня нет выбора, кроме как использовать цикл для определения некоторых из моих переменных (и присваивать значения атрибутов). Затем, когда я хочу предоставить значения переменных (т. Е. Nf90_put_var), он возвращает только последнюю переменную, которая была определена ... Я пробовал много вещей для решения проблемы, но мне это не удалось. Кто-то может мне помочь?Файлы Netcdf, созданные с помощью fortran

Вот небольшая часть моего сценария:

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 

ответ

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 
+0

Как я могу сделать это (с точки зрения кодирования .... Я действительно новый пользователь фортраном) – user5276228

+0

@ user5276228 См редактирования. –