gfortran编译错误:'random_seed'内在的'put'参数的大小(1)太小

时间:2015-05-01 13:33:32

标签: fortran fortran90

我正在尝试使用gfortran

编译以下代码
program perm_field


implicit double precision(a-h,o-z)
parameter (pi=3.14159)

allocatable :: perm(:),alog_perm_all(:),u(:),xi(:),&
               perm_zone(:),alog_perm(:)
integer :: seed(2)
external    dgemm

open(unit=1,file='input.dat')
open(unit=3,file='random_log_perm.dat',access='append')
open(unit=31,file='random_log_perm_initial.dat',access='append')
open(unit=4,file='isim.dat')
open(unit=7,file='random_log_perm_updated.dat')
open(unit=5,file='kalman_index.dat')
open(unit=6,file='nsim.dat')
open(unit=8,file='perm_zone.dat')
open(unit=111,file='perm.dat')

read(4,*) isim
   seed(1)=isim;
   call random_seed(put=seed(1:2))
   call random_number(u)

但是这给了我错误

   call random_seed(put=seed(1:2))
                        1
Error: Size of 'put' argument of 'random_seed' intrinsic at (1) too small (2/8)

它曾使用ifort,但我现在需要使用gfortran编译它。 可能是什么问题以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

阅读random_seed()上的文档。它声明put必须大于或等于size返回的数字。

因此,在我的系统上,一个非常快速的测试表明seed应该至少为12。

program seed_test

        implicit none
        integer n

        n = 0

        call random_seed(size=n)
        write(*,*) 'n = ', n
end program seed_test

当我编译并运行它时:

$ gfortran -o seed_test seed_test.f90
$ ./seed_test
 n =           12
$

根据您的错误,它必须至少 8