【发布时间】:2016-08-23 22:32:34
【问题描述】:
我有下面给出的两个子程序:
SUBROUTINE DENSITYMATRIXNEW(X,C,A,B,RHONEW)
IMPLICIT NONE
COMPLEX*16, DIMENSION(DIMMAT,1),INTENT(IN)::X
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS) :: RHO
COMPLEX(KIND = DBL), DIMENSION(DIMSYS,DIMSYS), INTENT(OUT) :: RHONEW
REAL(KIND = DBL) :: ENERGYGAP, DELTA
REAL(KIND = DBL) :: ALPHA = SQRT(ENERGYGAP**2.0D0 + DELTA**2.0D0)
COMPLEX(KIND = DBL), DIMENSION(2,2), INTENT(IN) :: A, B
REAL(KIND=DBL), DIMENSION(2,2), INTENT(IN) :: C
REAL(KIND=DBL), DIMENSION(2,2) :: TEMP1
COMPLEX(KIND = DBL), DIMENSION(2,2) :: TEMP2
COMPLEX(KIND = DBL), DIMENSION(2,2) :: UNITARY, UNITARTCONJ
REAL(KIND = DBL) :: T
TEMP1 = COS((ALPHA*T)/2) * C
TEMP2 = ((ENERGYGAP/ALPHA)*A + (DELTA/ALPHA)*B)*SIN((ALPHA*T)/2)
UNITARY = TEMP1 - IMU * TEMP2
UNITARTCONJ = TEMP1 + IMU * TEMP2
CALL DENSITYMATRIX(X,RHO)
RHONEW = UNITARTCONJ*RHO*UNITARY
END SUBROUTINE DENSITYMATRIXNEW
SUBROUTINE EXPECTATION(X,C,A,B,D,ANS)
IMPLICIT NONE
COMPLEX*16, DIMENSION(DIMMAT,1),INTENT(IN) :: X
REAL(KIND = DBL), DIMENSION(2,2),INTENT(IN) :: C
COMPLEX(KIND = DBL), DIMENSION(2,2), INTENT(IN) :: A, B
COMPLEX(KIND = DBL),DIMENSION(DIMSYS,DIMSYS),INTENT(IN)::D
REAL(KIND = DBL), INTENT(OUT) :: ANS
COMPLEX(KIND = DBL), DIMENSION(DIMSYS, DIMSYS):: RHONEW
COMPLEX*16, DIMENSION(DIMSYS, DIMSYS) :: TEMP
INTEGER :: J
REAL(KIND = DBL)::SUMM
SUMM = 0.0D0
!CALL DENSITYMATRIX(X,RHO)
CALL DENSITYMATRIXNEW(X,C,A,B,D,RHONEW)
TEMP = MATMUL(D,RHONEW)
DO J = 1, DIMSYS
SUMM = SUMM + DREAL(TEMP(J,J))
END DO
ANS = SUMM
END SUBROUTINE EXPECTATION
当我将它们作为更大程序的一部分运行时,我得到了错误:
可能是什么问题?我想我已经定义了所有变量。我似乎无法调试代码。
【问题讨论】:
标签: debugging fortran subroutine