Я использую параметризованный тип 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, хотя она должна быть стандартной.