Я распределяю размерность некоторых массивов после вычисления шагов, затем отправляю выделенные массивы в функцию, но у меня есть ошибка Несоответствие типа / ранга в аргументе 'a'.
Что такоеЯ делаю неправильно?
Cheers
integer i, steps, noutput, savestep
double integrationtime, outputstep, timestep, deltat, ain, ein
real, dimension(:), allocatable :: a, e, time
steps=int(integrationtime/timestep)
allocate(time(steps), a(steps), e(steps))
time(0)=0.0d0
a(0)=ain*1.49597870691d11
e(0)=ein
call calc (steps, a, e, time)
stop
contains
subroutine calc (steps, a, e, time)
integer i, steps
double precision time(steps), a(steps), e(steps)
do i=1, steps
time(i)=..
a(i)=...
e(i)=...
end subroutine calc
Я также пытался объявить a, e и time как реальные, выделяемые в calc подпрограммы, но я получаю следующие ошибки: В файле tidalevolution.f90: 84
real, dimension (:), allocatable :: a, e, time 1 Ошибка: атрибут ALLOCATABLE конфликтует с атрибутом DUMMY в (1) в файле tidalevolution.f90: 86
allocate (время (шаги), a (шаги), e (шаги)) 1 Ошибка: синтаксическая ошибка в операторе ALLOCATE при (1)