переменные меняют значение в фортране после вызова random_seed - PullRequest
0 голосов
/ 18 октября 2018

Моя проблема заключается в следующем ... У меня есть целое число, которое меняет значение после вызова функции случайного семени.Значение передается как параметр и должно быть 20. Это соответствующие части кода:

 implicit none
 extrenal masres
 integer  :: i, j, k, n, nc, nr, irch, ncor, ierr, nfil21

...

 write(*,*) 'n = ', n
 del = 0.d+0
 del1 = 0.d+0
 call random_seed(size=n)
 write(*,*) 'n = ', n

И мой вывод:

 n =           20
 n =           33 

Я пробовал обходной путь, который тоже не удался:

 write(*,*) 'n = ', n
 k = n
 del = 0.d+0
 del1 = 0.d+0
 call random_seed(size=k)
 write(*,*) 'k = ', k
 allocate(seed(n))
 call system_clock(COUNT=clock)
 if(info.eq.1) then
     seed = clock+37*[(1-i**2/1+i**2,i=1,n)]
 else
     seed = into+37*[(i+24)**2,i=1,n]
 endif
 call random_seed(put=seed)

То, что я получаю:

 n =           20
 k =           33

 Fortran runtime error: Array size of PUT is too small.

Это очевидно, поскольку случайное начальное число, очевидно, инициализируется с помощью 33вместо 20, поэтому выделенный начальный массив будет слишком маленьким.

Я не знаю, имеет ли это значение, но я использую компилятор gfortran.Спасибо заранее за вашу помощь.Скажите, если я должен опубликовать больше кода или загрузить файл.

...