Я выделяю несколько массивов ранга 3, чтобы они были в точности одинаковой формы, и мне интересно, возможно ли указать форму только один раз.Например, в настоящее время я делаю:
program main
implicit none
integer :: long_name_dimension_1 = 3
integer :: long_name_dimension_2 = 5
integer :: long_name_dimension_3 = 8
real, allocatable, dimension(:,:,:) :: A, B, C
allocate(A(long_name_dimension_1,long_name_dimension_2,long_name_dimension_3), &
B(long_name_dimension_1,long_name_dimension_2,long_name_dimension_3), &
C(long_name_dimension_1,long_name_dimension_2,long_name_dimension_3))
end program main
Это неудобно печатать, и сложно сразу увидеть, что эти массивы имеют одинаковую форму.Я мог бы использовать mold или source после выделения первого массива, например:
allocate(A(long_name_dimension_1,long_name_dimension_2,long_name_dimension_3))
allocate(B, source=A)
allocate(C, mold=A)
, но мне это тоже не очень нравится - возможно, потому что, на мой взгляд, это должен быть один оператор allocate
.
Я ищу синтаксис, такой как:
allocate( SHAPE :: (long_name_dimension_1,long_name_dimension_2,long_name_dimension_3), &
A, B, C)
, который мне не удалось найти.Существует ли такой синтаксис (или что-то подобное)?