子程序调用另一个子程序(在我的情况下是dsyev)

时间:2014-10-01 22:37:32

标签: fortran gfortran lapack fortran95

我有一个主程序,它需要一个子程序(比如说1)来执行,但是同一个子程序(1)需要另一个子程序(比如说2),在我的例子中它是dsyev(标准矩阵对角化,通过LAPACK )。

现在,我遇到了一个问题,每当我将矩阵传递给我的子程序1时,它将相应的哈密顿矩阵写入其中,然后它调用子程序1中的子程序2,用于对齐哈密顿量;结果我将在我的主程序中获得能量特征值。我得到***************而不是能量特征值。

PROGRAM MAIN
! Variable intialization
!................
do i=1, N
  call subroutine1(n, Matrix1 ,EIG )

   write(3,'(100G5.5)')(EIG(K),K=1,siz)

    !
    !
    !
    !
enddo

end program

subroutine subroutine1(n, Matrix2, EIG )

  CALL init_random_seed()

!  body of the function

! writing Matrix2 to a Hamiltonian(which is done fruitfully)

! Diagonilizing Hamiltonian

  CALL DSYEV('Vectors', 'Upper', SIZ, HAMIL, LDA, EIG, WORK, LWORK, INFO)

end subroutine

subroutine init_random_seed()

! Standard random no. generator

end subroutine

0 个答案:

没有答案