У меня возникает ошибка сегментации при вводе подпрограммы. В отладчике я могу сделать шаг до первого call RK_sub_step
в следующем сегменте кода. Как только я нахожусь в подпрограмме, это происходит.Segfault при вводе функции Fortran
module RK_mod
type(MyType), dimension(1:2) :: q0, q1, q2
contains
subroutine RK_sub_step(src, alpha, dest)
real(8), dimension(:) :: alpha
type(MyType), dimension(1:2,size(alpha)) :: src
type(MyType), dimension(1:2), intent(inout) :: dest
! compute dest from alpha and src
end subroutine
subroutine RK()
real(8) alpha(3)
call RK_sub_step((/q0/), (/alpha(1)/), q1) ! <- Segfault here
call RK_sub_step((/q0, q1/), alpha(2:3), q2)
end subroutine
end module
Любые идеи, что я могу делать неправильно?
Edit:
Теперь мне удалось обойти Segfault путем создания отдельных подпрограмм, которые я могу назвать, как
call RK_sub_step1(q0, alpha(1), q1)
call RK_sub_step2(q0, q1, alpha(2:3), q2)
call RK_sub_step4(q0, q1, q2, q3, alpha(4:8), q0)
Но я до сих пор интересно, если это возможно иметь только один подпрограмму, как дальше выше , или почему это невозможно.