Intel Fortran: использование элементного встроенного в параметризованном определении типа - PullRequest
0 голосов
/ 09 октября 2018

Я использую параметризованный тип grid_f(g_size), у которого массив real равен dimension(max0(something_1,something_2)).Каким-то образом компилятору ifort это не нравится, что приводит к внутренней ошибке.

module mdl
implicit none

save

  integer, parameter ::  ng=10, dp=8

  type grid_f(g_size)
    integer, len                                      ::  g_size
      real(dp), dimension(max0(2*g_size+10, g_size))  ::  val
  end type

contains

  subroutine grid_reset(func)
  implicit none
  type(grid_f(ng))  ::  func
    func%val=0d0
  end subroutine grid_reset_orb

end module mdl

Компиляция:

ifort -c check.f90
check.f90(10): error #7974: An elemental intrinsic function here must be of type integer and each argument must be an initialization expression of type integer or character.   [MAX0]
      real(dp), dimension(max0(2*g_size+10, g_size))  ::  val
--------------------------^
check.f90(17): internal error: Please visit 'http://www.intel.com/software/products/support' for assistance.
  type(grid_f(ng))  ::  func
^
[ Aborting due to internal error. ]
compilation aborted for check.f90 (code 1)

Использование max или jmax0 вместо этого не помогает.Любые предложения?

Редактировать: Тема теперь на сайте Intel, нажмите .Кажется, это ошибка в ifort16 и ifort17, приводящая к сбою компилятора и приводящая к ошибке в 18 и 19m, хотя она должна быть стандартной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...