У меня есть два типа данных, производных от Фортрана, и один из них вложен как
type particle
real :: x
real :: v
end type particle
type species
real :: m
real :: q
type(particle), allocatable, dimension(:) :: p
end type species
type(species) :: sp
Теперь предположим, что я определяю другой реальный массив z(1:20)
и назначаю свой производный тип данных species
с помощью allocate(sp%p(1:20))
так что размерность z
и массив p
совпадают.
Теперь операторы (после правильной инициализации, конечно)
z = sp%p%x
и один
z(1:20) = sp%p(1:20)%x
компилируется без ошибок по gfortran
.Но хотя первый из них в порядке во время выполнения, второй выдает ошибку SIGSEGV
.Кто-нибудь может указать, если я делаю что-то явно неправильно?