Ошибка Fortran: функция 'nf90_def_var_deflate' не имеет неявного типа - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь скомпилировать прогон модели, используя модель CESM 2.1.0, и я столкнулся с ошибкой компилятора, связанной с настройками netcdf, но я не знаю, какие настройки мне следует изменить.Ошибка:Ошибка: функция 'nf90_def_var_deflate' не имеет неявного типа.Функция определенно определена, и код должен работать, так как это модель научного исследования, используемая большим сообществом.

Я читал другой вопрос, где у человека такая же проблема, но пока нет решения.

Ошибка 'nf90_def_var_deflate не имеет типа IMPLICIT' только на одном компьютере

Я проверил конфигурацию netcdf, как рекомендовано в приведенном выше вопросе, и это вывод:

$ nc-config --all

This netCDF 4.6.3 has been built with the following features:

  --cc            -> mpicc
  --cflags        -> -I/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include
  --libs          -> -L/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/lib -lnetcdf

  --has-c++       -> no
  --cxx           ->

  --has-c++4      -> no
  --cxx4          ->

  --has-fortran   -> yes
  --fc            -> mpifort
  --fflags        -> -I/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include
  --flibs         -> -L/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/lib -lnetcdff -L/apps/hdf5/1.10.5/parallel/lib -lnetcdf -lcurl -lm -lnetcdf -lhdf5_hl -lhdf5 -lz -ldl
  --has-f90       -> no
  --has-f03       -> yes

  --has-dap       -> yes
  --has-dap2      -> yes
  --has-dap4      -> yes
  --has-nc2       -> yes
  --has-nc4       -> yes
  --has-hdf5      -> yes
  --has-hdf4      -> no
  --has-logging   -> no
  --has-pnetcdf   -> no
  --has-szlib     -> no
  --has-cdf5      -> yes
  --has-parallel4 -> yes
  --has-parallel  -> yes

  --prefix        -> /apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel
  --includedir    -> /apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include
  --libdir        -> /apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/lib
  --version       -> netCDF 4.6.3

Редактировать:Вот конфигурация netcdf-fortran:

 nf-config --all

This netCDF-Fortran 4.4.5 has been built with the following features:

  --cc        -> gcc
  --cflags    ->  -I/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include

  --fc        -> mpifort
  --fflags    -> -I/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include
  --flibs     -> -L/apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/lib -lnetcdff -L/apps/hdf5/1.10.5/parallel/lib -lnetcdf -lcurl -lm -lnetcdf -lhdf5_hl -lhdf5 -lz -ldl
  --has-f90   -> no
  --has-f03   -> yes

  --has-nc2   -> yes
  --has-nc4   -> no

  --prefix    -> /apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel
  --includedir-> /apps/netcdf/netcdf-4.6.0_gcc-4.8.5/parallel/include
  --version   -> netCDF-Fortran 4.4.5

Edit # 2: Вот фрагмент кода, где вызывается функция:

if(iotype==pio_iotype_netcdf4c) then
                if(vardesc%ndims>0 .and. ierr==PIO_NOERR) then
                   ierr = nf90_def_var_deflate(File%fh,vardesc%varid,0,1,1)
                end if
             endif

Причина, по которой я считаю, что CESMмодель использует правильную версию netcdf, потому что в выводе журнала говорится: Checking NetCDF version - 4.6.3./*!<

...