mirror of
https://github.com/pfloos/quack
synced 2024-11-07 06:33:55 +01:00
pp-RPA starting to be OK
This commit is contained in:
parent
870e4defaf
commit
f8a9321cf0
@ -1,11 +1,11 @@
|
|||||||
# RHF UHF MOM
|
# RHF UHF MOM
|
||||||
T F F
|
T F F
|
||||||
# MP2 MP3 MP2-F12
|
# MP2 MP3 MP2-F12
|
||||||
T F F
|
F F F
|
||||||
# CCD CCSD CCSD(T)
|
# CCD CCSD CCSD(T)
|
||||||
F F F
|
F F F
|
||||||
# CIS TDHF ppRPA ADC
|
# CIS TDHF ppRPA ADC
|
||||||
F T T F
|
F F T F
|
||||||
# GF2 GF3
|
# GF2 GF3
|
||||||
F F
|
F F
|
||||||
# G0W0 evGW qsGW
|
# G0W0 evGW qsGW
|
||||||
|
@ -344,7 +344,9 @@ program QuAcK
|
|||||||
if(doCCD) then
|
if(doCCD) then
|
||||||
|
|
||||||
call cpu_time(start_CCD)
|
call cpu_time(start_CCD)
|
||||||
call CCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nEl,ERI_MO_basis,ENuc,ERHF,eHF)
|
! call ring_CCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nEl,ERI_MO_basis,ENuc,ERHF,eHF)
|
||||||
|
call ladder_CCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nEl,ERI_MO_basis,ENuc,ERHF,eHF)
|
||||||
|
! call CCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nEl,ERI_MO_basis,ENuc,ERHF,eHF)
|
||||||
call cpu_time(end_CCD)
|
call cpu_time(end_CCD)
|
||||||
|
|
||||||
t_CCD = end_CCD - start_CCD
|
t_CCD = end_CCD - start_CCD
|
||||||
|
@ -69,11 +69,11 @@ subroutine linear_response_pp(ispin,BSE,nBas,nC,nO,nV,nR,nOO,nVV,e,ERI,Omega1,X1
|
|||||||
! Diagonalize the p-h matrix
|
! Diagonalize the p-h matrix
|
||||||
|
|
||||||
Z(:,:) = M(:,:)
|
Z(:,:) = M(:,:)
|
||||||
call diagonalize_matrix(nOO+nVV,Z(:,:),Omega(:))
|
call diagonalize_general_matrix(nOO+nVV,M(:,:),Omega(:),Z(:,:))
|
||||||
|
|
||||||
! write(*,*) 'pp-RPA excitation energies'
|
write(*,*) 'pp-RPA excitation energies'
|
||||||
! call matout(nOO+nVV,1,Omega(:))
|
call matout(nOO+nVV,1,Omega(:))
|
||||||
! write(*,*)
|
write(*,*)
|
||||||
|
|
||||||
! Split the various quantities in p-p and h-h parts
|
! Split the various quantities in p-p and h-h parts
|
||||||
|
|
||||||
|
@ -1,34 +1,3 @@
|
|||||||
!subroutine eigenvalues_non_symmetric_matrix(N,A,e)
|
|
||||||
!
|
|
||||||
!! Diagonalize a square matrix
|
|
||||||
!
|
|
||||||
! implicit none
|
|
||||||
!
|
|
||||||
!! Input variables
|
|
||||||
!
|
|
||||||
! integer,intent(in) :: N
|
|
||||||
! double precision,intent(inout):: A(N,N)
|
|
||||||
! double precision,intent(out) :: e(N)
|
|
||||||
!
|
|
||||||
!! Local variables
|
|
||||||
!
|
|
||||||
! integer :: lwork,info
|
|
||||||
! double precision,allocatable :: work(:)
|
|
||||||
!
|
|
||||||
!! Memory allocation
|
|
||||||
!
|
|
||||||
! allocate(eRe(N),eIm(N),work(3*N))
|
|
||||||
! lwork = size(work)
|
|
||||||
!
|
|
||||||
! call DGEEV('N','N',N,A,N, eRe, eIm, 0d0,1, VR,LDVR, WORK, LWORK, INFO )
|
|
||||||
!
|
|
||||||
! if(info /= 0) then
|
|
||||||
! print*,'Problem in diagonalize_matrix (dseev)!!'
|
|
||||||
! stop
|
|
||||||
! endif
|
|
||||||
!
|
|
||||||
!end subroutine eigenvalues_non_symmetric_matrix
|
|
||||||
|
|
||||||
!subroutine diagonalize_matrix_lowest(N,M,A,e)
|
!subroutine diagonalize_matrix_lowest(N,M,A,e)
|
||||||
!
|
!
|
||||||
!! Diagonalize a square matrix but only provide the M lowest eigenvalues/eigenvectors
|
!! Diagonalize a square matrix but only provide the M lowest eigenvalues/eigenvectors
|
||||||
@ -61,6 +30,37 @@
|
|||||||
!
|
!
|
||||||
!end subroutine diagonalize_matrix_lowest
|
!end subroutine diagonalize_matrix_lowest
|
||||||
|
|
||||||
|
subroutine diagonalize_general_matrix(N,A,e,X)
|
||||||
|
|
||||||
|
! Diagonalize a non-symmetric square matrix
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
! Input variables
|
||||||
|
|
||||||
|
integer,intent(in) :: N
|
||||||
|
double precision,intent(inout):: A(N,N)
|
||||||
|
double precision,intent(out) :: X(N,N)
|
||||||
|
double precision,intent(out) :: e(N)
|
||||||
|
|
||||||
|
! Local variables
|
||||||
|
|
||||||
|
integer :: lwork,info
|
||||||
|
double precision,allocatable :: work(:),WI(:),VL(:,:)
|
||||||
|
|
||||||
|
! Memory allocation
|
||||||
|
|
||||||
|
lwork = 4*N
|
||||||
|
allocate(WI(N),VL(N,N),work(lwork))
|
||||||
|
|
||||||
|
call dgeev('V','V',N,A,N,e,WI,VL,N,X,N,work,lwork,info)
|
||||||
|
|
||||||
|
if(info /= 0) then
|
||||||
|
print*,'Problem in diagonalize_matrix (dgeev)!!'
|
||||||
|
endif
|
||||||
|
|
||||||
|
end subroutine diagonalize_general_matrix
|
||||||
|
|
||||||
subroutine diagonalize_matrix(N,A,e)
|
subroutine diagonalize_matrix(N,A,e)
|
||||||
|
|
||||||
! Diagonalize a square matrix
|
! Diagonalize a square matrix
|
||||||
|
Loading…
Reference in New Issue
Block a user