mirror of
https://github.com/pfloos/quack
synced 2024-08-30 16:13:45 +02:00
DIP- and DEA-EOM-CCD
This commit is contained in:
parent
68008e5738
commit
1f2f6634bb
@ -3,7 +3,7 @@
|
||||
# MP2* MP3 MP2-F12
|
||||
F F F
|
||||
# CCD pCCD DCD CCSD CCSD(T)
|
||||
F F F F F
|
||||
T F F F F
|
||||
# drCCD rCCD crCCD lCCD
|
||||
F F F F
|
||||
# CIS* CIS(D) CID CISD FCI
|
||||
@ -15,7 +15,7 @@
|
||||
# G0W0* evGW* qsGW* ufG0W0 ufGW
|
||||
F F F F F
|
||||
# G0T0 evGT qsGT
|
||||
T F F
|
||||
F F F
|
||||
# MCMP2
|
||||
F
|
||||
# * unrestricted version available
|
||||
|
@ -5,7 +5,7 @@
|
||||
# CC: maxSCF thresh DIIS n_diis
|
||||
64 0.00001 T 5
|
||||
# spin: TDA singlet triplet spin_conserved spin_flip
|
||||
T T F T T
|
||||
T T T T T
|
||||
# GF: maxSCF thresh DIIS n_diis lin eta renorm reg
|
||||
256 0.00001 T 5 T 0.0 3 F
|
||||
# GW: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0 reg
|
||||
@ -15,6 +15,6 @@
|
||||
# ACFDT: AC Kx XBS
|
||||
F F T
|
||||
# BSE: BSE dBSE dTDA evDyn ppBSE
|
||||
F F T F T
|
||||
T F T F F
|
||||
# MCMP2: nMC nEq nWalk dt nPrint iSeed doDrift
|
||||
1000000 100000 10 0.3 10000 1234 T
|
||||
|
@ -52,14 +52,20 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
double precision,allocatable :: u(:,:,:,:)
|
||||
double precision,allocatable :: v(:,:,:,:)
|
||||
|
||||
double precision,allocatable :: r2(:,:,:,:)
|
||||
double precision,allocatable :: t2(:,:,:,:)
|
||||
double precision,allocatable :: r(:,:,:,:)
|
||||
double precision,allocatable :: t(:,:,:,:)
|
||||
|
||||
integer :: n_diis,i,j,a,b
|
||||
double precision :: rcond
|
||||
double precision,allocatable :: error_diis(:,:)
|
||||
double precision,allocatable :: t_diis(:,:)
|
||||
|
||||
logical :: do_EE_EOM_CC_1h1p = .false.
|
||||
logical :: do_EA_EOM_CC_1p = .false.
|
||||
logical :: do_IP_EOM_CC_1h = .false.
|
||||
logical :: do_DEA_EOM_CC_2p = .true.
|
||||
logical :: do_DIP_EOM_CC_2h = .true.
|
||||
|
||||
! Hello world
|
||||
|
||||
write(*,*)
|
||||
@ -123,11 +129,11 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
|
||||
! MP2 guess amplitudes
|
||||
|
||||
allocate(t2(nO-nC,nO-nC,nV-nR,nV-nR))
|
||||
allocate(t(nO-nC,nO-nC,nV-nR,nV-nR))
|
||||
|
||||
t2(:,:,:,:) = -OOVV(:,:,:,:)/delta_OOVV(:,:,:,:)
|
||||
t(:,:,:,:) = -OOVV(:,:,:,:)/delta_OOVV(:,:,:,:)
|
||||
|
||||
call CCD_correlation_energy(nC,nO,nV,nR,OOVV,t2,EcMP2)
|
||||
call CCD_correlation_energy(nC,nO,nV,nR,OOVV,t,EcMP2)
|
||||
EcMP4 = 0d0
|
||||
|
||||
! Memory allocation for DIIS
|
||||
@ -136,7 +142,7 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
|
||||
! Initialization
|
||||
|
||||
allocate(r2(nO-nC,nO-nC,nV-nR,nV-nR),u(nO-nC,nO-nC,nV-nR,nV-nR),v(nO-nC,nO-nC,nV-nR,nV-nR))
|
||||
allocate(r(nO-nC,nO-nC,nV-nR,nV-nR),u(nO-nC,nO-nC,nV-nR,nV-nR),v(nO-nC,nO-nC,nV-nR,nV-nR))
|
||||
allocate(X1(nO-nC,nO-nC,nO-nC,nO-nC),X2(nV-nR,nV-nR),X3(nO-nC,nO-nC),X4(nO-nC,nO-nC,nV-nR,nV-nR))
|
||||
|
||||
Conv = 1d0
|
||||
@ -165,33 +171,33 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
|
||||
! Form linear array
|
||||
|
||||
call form_u(nC,nO,nV,nR,OOOO,VVVV,OVOV,t2,u)
|
||||
call form_u(nC,nO,nV,nR,OOOO,VVVV,OVOV,t,u)
|
||||
|
||||
! Form interemediate arrays
|
||||
|
||||
call form_X(nC,nO,nV,nR,OOVV,t2,X1,X2,X3,X4)
|
||||
call form_X(nC,nO,nV,nR,OOVV,t,X1,X2,X3,X4)
|
||||
|
||||
! Form quadratic array
|
||||
|
||||
call form_v(nC,nO,nV,nR,X1,X2,X3,X4,t2,v)
|
||||
call form_v(nC,nO,nV,nR,X1,X2,X3,X4,t,v)
|
||||
|
||||
! Compute residual
|
||||
|
||||
r2(:,:,:,:) = OOVV(:,:,:,:) + delta_OOVV(:,:,:,:)*t2(:,:,:,:) + u(:,:,:,:) + v(:,:,:,:)
|
||||
r(:,:,:,:) = OOVV(:,:,:,:) + delta_OOVV(:,:,:,:)*t(:,:,:,:) + u(:,:,:,:) + v(:,:,:,:)
|
||||
|
||||
! Check convergence
|
||||
|
||||
Conv = maxval(abs(r2(:,:,:,:)))
|
||||
Conv = maxval(abs(r(:,:,:,:)))
|
||||
|
||||
! Update amplitudes
|
||||
|
||||
t2(:,:,:,:) = t2(:,:,:,:) - r2(:,:,:,:)/delta_OOVV(:,:,:,:)
|
||||
t(:,:,:,:) = t(:,:,:,:) - r(:,:,:,:)/delta_OOVV(:,:,:,:)
|
||||
|
||||
! Compute correlation energy
|
||||
|
||||
call CCD_correlation_energy(nC,nO,nV,nR,OOVV,t2,EcCCD)
|
||||
call CCD_correlation_energy(nC,nO,nV,nR,OOVV,t,EcCCD)
|
||||
|
||||
if(nSCF == 1) call MP3_correlation_energy(nC,nO,nV,nR,OOVV,t2,v,delta_OOVV,EcMP3)
|
||||
if(nSCF == 1) call MP3_correlation_energy(nC,nO,nV,nR,OOVV,t,v,delta_OOVV,EcMP3)
|
||||
|
||||
! Dump results
|
||||
|
||||
@ -200,7 +206,7 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
! DIIS extrapolation
|
||||
|
||||
n_diis = min(n_diis+1,max_diis)
|
||||
call DIIS_extrapolation(rcond,(nO-nC)**2*(nV-nR)**2,(nO-nC)**2*(nV-nR)**2,n_diis,error_diis,t_diis,-r2/delta_OOVV,t2)
|
||||
call DIIS_extrapolation(rcond,(nO-nC)**2*(nV-nR)**2,(nO-nC)**2*(nV-nR)**2,n_diis,error_diis,t_diis,-r/delta_OOVV,t)
|
||||
|
||||
! Reset DIIS if required
|
||||
|
||||
@ -246,4 +252,28 @@ subroutine CCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ER
|
||||
write(*,'(1X,A15,1X,F10.6)') 'Ec(MP4-SDQ) = ',EcMP4
|
||||
write(*,*)
|
||||
|
||||
!------------------------------------------------------------------------
|
||||
! EOM section
|
||||
!------------------------------------------------------------------------
|
||||
|
||||
! EE-EOM-CCD (1h1p)
|
||||
|
||||
! if(do_EE-EOM-CC_1h1p) call EE-EOM-CCD_1h1p()
|
||||
|
||||
! EA-EOM (1p)
|
||||
|
||||
! if(do_EA-EOM-CC_1p) call EA-EOM-CCD_1p()
|
||||
|
||||
! IP-EOM-CCD(1h)
|
||||
|
||||
! if(do_IP-EOM-CC_1h) call IP-EOM-CCD_1h()
|
||||
|
||||
! DEA-EOM (2p)
|
||||
|
||||
if(do_DEA_EOM_CC_2p) call DEA_EOM_CCD_2p(nC,nO,nV,nR,eV,OOVV,VVVV,t)
|
||||
|
||||
! DIP-EOM-CCD(2h)
|
||||
|
||||
if(do_DIP_EOM_CC_2h) call DIP_EOM_CCD_2h(nC,nO,nV,nR,eO,OOVV,OOOO,t)
|
||||
|
||||
end subroutine CCD
|
||||
|
116
src/CC/DEA_EOM_CCD_2p.f90
Normal file
116
src/CC/DEA_EOM_CCD_2p.f90
Normal file
@ -0,0 +1,116 @@
|
||||
subroutine DEA_EOM_CCD_2p(nC,nO,nV,nR,eV,OOVV,VVVV,t)
|
||||
|
||||
! DEA-EOM-CCD calculation up to 2p
|
||||
|
||||
implicit none
|
||||
|
||||
! Input variables
|
||||
|
||||
integer,intent(in) :: nC
|
||||
integer,intent(in) :: nO
|
||||
integer,intent(in) :: nV
|
||||
integer,intent(in) :: nR
|
||||
double precision,intent(in) :: eV(nV)
|
||||
double precision,intent(in) :: OOVV(nO,nO,nV,nV)
|
||||
double precision,intent(in) :: VVVV(nV,nV,nV,nV)
|
||||
double precision,intent(in) :: t(nO,nO,nV,nV)
|
||||
|
||||
! Local variables
|
||||
|
||||
integer :: a,b,c,d,ab,cd
|
||||
integer :: i,j
|
||||
integer :: nVV
|
||||
double precision,external :: Kronecker_delta
|
||||
double precision,allocatable :: F(:,:)
|
||||
double precision,allocatable :: W(:,:,:,:)
|
||||
double precision,allocatable :: H(:,:)
|
||||
double precision,allocatable :: Om(:)
|
||||
|
||||
|
||||
! Hello world
|
||||
|
||||
write(*,*)
|
||||
write(*,*)'********************'
|
||||
write(*,*)'| DEA-EOM-CCD (2p) |'
|
||||
write(*,*)'********************'
|
||||
write(*,*)
|
||||
|
||||
! Size of the EOM Hamiltonian
|
||||
|
||||
nVV = nV*(nV-1)/2
|
||||
|
||||
! Memory allocation
|
||||
|
||||
allocate(F(nV,nV),W(nV,nV,nV,nV),H(nVV,nVV),Om(nVV))
|
||||
|
||||
! Form one-body terms
|
||||
|
||||
do a=1,nV-nR
|
||||
do b=1,nV-nR
|
||||
|
||||
F(a,b) = eV(a)*Kronecker_delta(a,b)
|
||||
|
||||
do i=1,nO-nR
|
||||
do j=1,nO-nR
|
||||
do c=1,nV-nC
|
||||
|
||||
F(a,b) = F(a,b) - 0.5d0*OOVV(i,j,b,c)*t(i,j,a,c)
|
||||
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
! Form two-body terms
|
||||
|
||||
do a=1,nV-nR
|
||||
do b=1,nV-nR
|
||||
do c=1,nV-nR
|
||||
do d=1,nV-nR
|
||||
|
||||
W(a,b,c,d) = VVVV(a,b,c,d)
|
||||
|
||||
do i=1,nO-nC
|
||||
do j=i+1,nO-nC
|
||||
|
||||
W(a,b,c,d) = W(a,b,c,d) + OOVV(i,j,a,b)*t(i,j,a,b)
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! Form EOM Hamiltonian
|
||||
|
||||
ab = 0
|
||||
do a=1,nV-nR
|
||||
do b=a+1,nV-nR
|
||||
ab = ab + 1
|
||||
|
||||
cd = 0
|
||||
do c=1,nV-nR
|
||||
do d=c+1,nV-nR
|
||||
cd = cd + 1
|
||||
|
||||
H(ab,cd) = F(a,c)*Kronecker_delta(b,d) + Kronecker_delta(a,c)*F(b,d) + W(a,b,c,d)
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
! Diagonalize EOM Hamiltonian
|
||||
|
||||
if(nVV > 0) call diagonalize_matrix(nVV,H,Om)
|
||||
|
||||
! Dump results
|
||||
|
||||
call print_excitation('DEA-EOM-CCD ',3,nVV,Om)
|
||||
|
||||
end subroutine DEA_EOM_CCD_2p
|
116
src/CC/DIP_EOM_CCD_2h.f90
Normal file
116
src/CC/DIP_EOM_CCD_2h.f90
Normal file
@ -0,0 +1,116 @@
|
||||
subroutine DIP_EOM_CCD_2h(nC,nO,nV,nR,eO,OOVV,OOOO,t)
|
||||
|
||||
! DIP-EOM-CCD calculation up to 2h
|
||||
|
||||
implicit none
|
||||
|
||||
! Input variables
|
||||
|
||||
integer,intent(in) :: nC
|
||||
integer,intent(in) :: nO
|
||||
integer,intent(in) :: nV
|
||||
integer,intent(in) :: nR
|
||||
double precision,intent(in) :: eO(nO)
|
||||
double precision,intent(in) :: OOVV(nO,nO,nV,nV)
|
||||
double precision,intent(in) :: OOOO(nO,nO,nO,nO)
|
||||
double precision,intent(in) :: t(nO,nO,nV,nV)
|
||||
|
||||
! Local variables
|
||||
|
||||
integer :: i,j,k,l,ij,kl
|
||||
integer :: a,b
|
||||
integer :: nOO
|
||||
double precision,external :: Kronecker_delta
|
||||
double precision,allocatable :: F(:,:)
|
||||
double precision,allocatable :: W(:,:,:,:)
|
||||
double precision,allocatable :: H(:,:)
|
||||
double precision,allocatable :: Om(:)
|
||||
|
||||
|
||||
! Hello world
|
||||
|
||||
write(*,*)
|
||||
write(*,*)'********************'
|
||||
write(*,*)'| DIP-EOM-CCD (2h) |'
|
||||
write(*,*)'********************'
|
||||
write(*,*)
|
||||
|
||||
! Size of the EOM Hamiltonian
|
||||
|
||||
nOO = nO*(nO-1)/2
|
||||
|
||||
! Memory allocation
|
||||
|
||||
allocate(F(nO,nO),W(nO,nO,nO,nO),H(nOO,nOO),Om(nOO))
|
||||
|
||||
! Form one-body terms
|
||||
|
||||
do i=1,nO-nR
|
||||
do j=1,nO-nR
|
||||
|
||||
F(i,j) = eO(i)*Kronecker_delta(i,j)
|
||||
|
||||
do k=1,nO-nR
|
||||
do a=1,nV-nC
|
||||
do b=1,nV-nC
|
||||
|
||||
F(i,j) = F(i,j) + 0.5d0*OOVV(i,k,a,b)*t(j,k,a,b)
|
||||
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
! Form two-body terms
|
||||
|
||||
do i=1,nO-nC
|
||||
do j=1,nO-nC
|
||||
do k=1,nO-nC
|
||||
do l=1,nO-nC
|
||||
|
||||
W(i,j,k,l) = OOOO(i,j,k,l)
|
||||
|
||||
do a=1,nV-nR
|
||||
do b=a+1,nV-nR
|
||||
|
||||
W(i,j,k,l) = W(i,j,k,l) + OOVV(i,j,a,b)*t(i,j,a,b)
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! Form EOM Hamiltonian
|
||||
|
||||
ij = 0
|
||||
do i=1,nO-nC
|
||||
do j=i+1,nO-nC
|
||||
ij = ij + 1
|
||||
|
||||
kl = 0
|
||||
do k=1,nO-nC
|
||||
do l=k+1,nO-nC
|
||||
kl = kl + 1
|
||||
|
||||
H(ij,kl) = - F(i,k)*Kronecker_delta(j,l) - Kronecker_delta(i,k)*F(j,l) + W(i,j,k,l)
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
end do
|
||||
end do
|
||||
|
||||
! Diagonalize EOM Hamiltonian
|
||||
|
||||
if(nOO > 0) call diagonalize_matrix(nOO,H,Om)
|
||||
|
||||
! Dump results
|
||||
|
||||
call print_excitation('DIP-EOM-CCD ',3,nOO,Om)
|
||||
|
||||
end subroutine DIP_EOM_CCD_2h
|
@ -1,4 +1,4 @@
|
||||
subroutine rCCD(maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ERHF,eHF)
|
||||
subroutine rCCD(BSE,maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ERHF,eHF)
|
||||
|
||||
! Ring CCD module
|
||||
|
||||
@ -6,6 +6,7 @@ subroutine rCCD(maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ERHF,
|
||||
|
||||
! Input variables
|
||||
|
||||
logical,intent(in) :: BSE
|
||||
integer,intent(in) :: maxSCF
|
||||
integer,intent(in) :: max_diis
|
||||
double precision,intent(in) :: thresh
|
||||
@ -74,7 +75,15 @@ subroutine rCCD(maxSCF,thresh,max_diis,nBasin,nCin,nOin,nVin,nRin,ERI,ENuc,ERHF,
|
||||
|
||||
allocate(dbERI(nBas,nBas,nBas,nBas))
|
||||
|
||||
call antisymmetrize_ERI(2,nBas,sERI,dbERI)
|
||||
if(BSE) then
|
||||
|
||||
call static_screening(nBas,nC,nO,nV,nR,seHF,sERI,dbERI)
|
||||
|
||||
else
|
||||
|
||||
call antisymmetrize_ERI(2,nBas,sERI,dbERI)
|
||||
|
||||
end if
|
||||
|
||||
deallocate(sERI)
|
||||
|
||||
|
@ -55,15 +55,17 @@ subroutine static_Tmatrix_C_pp(ispin,eta,nBas,nC,nO,nV,nR,nOO,nVV,nOOx,nVVx,lamb
|
||||
|
||||
do ef=1,nVV
|
||||
eps = + Om1(ef)
|
||||
chi = chi + rho1(a,b,ef)*rho1(c,d,ef)*eps/(eps**2 + eta**2)
|
||||
chi = chi + rho1(a,b,ef)*rho1(c,d,ef)*eps/(eps**2 + eta**2) &
|
||||
+ rho1(a,b,ef)*rho1(d,c,ef)*eps/(eps**2 + eta**2)
|
||||
end do
|
||||
|
||||
do mn=1,nOO
|
||||
eps = - Om2(mn)
|
||||
chi = chi + rho2(a,b,mn)*rho2(c,d,mn)*eps/(eps**2 + eta**2)
|
||||
chi = chi + rho2(a,b,mn)*rho2(c,d,mn)*eps/(eps**2 + eta**2) &
|
||||
+ rho2(a,b,mn)*rho2(d,c,mn)*eps/(eps**2 + eta**2)
|
||||
end do
|
||||
|
||||
TC(ab,cd) = lambda*chi/sqrt((1d0 + Kronecker_delta(a,b))*(1d0 + Kronecker_delta(c,d)))
|
||||
TC(ab,cd) = 0.5d0*lambda*chi/sqrt((1d0 + Kronecker_delta(a,b))*(1d0 + Kronecker_delta(c,d)))
|
||||
|
||||
end do
|
||||
end do
|
||||
|
@ -56,7 +56,7 @@ subroutine static_screening_WC_pp(ispin,eta,nBas,nC,nO,nV,nR,nS,nOO,nVV,lambda,E
|
||||
do m=1,nS
|
||||
eps = Omega(m)**2 + eta**2
|
||||
chi = chi + rho(a,c,m)*rho(b,d,m)*Omega(m)/eps &
|
||||
- rho(a,d,m)*rho(b,c,m)*Omega(m)/eps
|
||||
+ rho(a,d,m)*rho(b,c,m)*Omega(m)/eps
|
||||
enddo
|
||||
|
||||
WC(ab,cd) = + 4d0*lambda*chi/sqrt((1d0 + Kronecker_delta(a,b))*(1d0 + Kronecker_delta(c,d)))
|
||||
|
@ -33,7 +33,7 @@ subroutine print_excitation(method,ispin,nS,Omega)
|
||||
'|','State','|',' Excitation energy (au) ','|',' Excitation energy (eV) ','|'
|
||||
write(*,*)'-------------------------------------------------------------'
|
||||
|
||||
do ia=1,maxS
|
||||
do ia=1,min(maxS,nS)
|
||||
write(*,'(1X,A1,1X,I5,1X,A1,1X,F23.6,1X,A1,1X,F23.6,1X,A1,1X)') &
|
||||
'|',ia,'|',Omega(ia),'|',Omega(ia)*HaToeV,'|'
|
||||
enddo
|
||||
|
@ -582,15 +582,15 @@ program QuAcK
|
||||
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCD = ',t_CCD,' seconds'
|
||||
write(*,*)
|
||||
|
||||
call cpu_time(start_CCD)
|
||||
call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,ppBSE,singlet,triplet, &
|
||||
linGW,eta_GW,regGW,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_AO,ERI_MO,dipole_int_MO,PHF,cHF,eHF,Vxc,eG0W0)
|
||||
call CCD(.true.,maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eG0W0)
|
||||
call cpu_time(end_CCD)
|
||||
! call cpu_time(start_CCD)
|
||||
! call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,ppBSE,singlet,triplet, &
|
||||
! linGW,eta_GW,regGW,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_AO,ERI_MO,dipole_int_MO,PHF,cHF,eHF,Vxc,eG0W0)
|
||||
! call CCD(.true.,maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eG0W0)
|
||||
! call cpu_time(end_CCD)
|
||||
|
||||
t_CCD = end_CCD - start_CCD
|
||||
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCD@BSE = ',t_CCD,' seconds'
|
||||
write(*,*)
|
||||
! t_CCD = end_CCD - start_CCD
|
||||
! write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCD@BSE = ',t_CCD,' seconds'
|
||||
! write(*,*)
|
||||
|
||||
end if
|
||||
|
||||
@ -627,16 +627,16 @@ program QuAcK
|
||||
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCSD or CCSD(T)= ',t_CCSD,' seconds'
|
||||
write(*,*)
|
||||
|
||||
call cpu_time(start_CCSD)
|
||||
call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,ppBSE,singlet,triplet, &
|
||||
linGW,eta_GW,regGW,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_AO,ERI_MO,dipole_int_MO,PHF,cHF,eHF,Vxc,eG0W0)
|
||||
! call cpu_time(start_CCSD)
|
||||
! call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,ppBSE,singlet,triplet, &
|
||||
! linGW,eta_GW,regGW,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_AO,ERI_MO,dipole_int_MO,PHF,cHF,eHF,Vxc,eG0W0)
|
||||
|
||||
call CCSD(.true.,maxSCF_CC,thresh_CC,n_diis_CC,doCCSDT,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eG0W0)
|
||||
call cpu_time(end_CCSD)
|
||||
! call CCSD(.true.,maxSCF_CC,thresh_CC,n_diis_CC,doCCSDT,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eG0W0)
|
||||
! call cpu_time(end_CCSD)
|
||||
|
||||
t_CCSD = end_CCSD - start_CCSD
|
||||
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCSD or CCSD(T)= ',t_CCSD,' seconds'
|
||||
write(*,*)
|
||||
! t_CCSD = end_CCSD - start_CCSD
|
||||
! write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for CCSD or CCSD(T)= ',t_CCSD,' seconds'
|
||||
! write(*,*)
|
||||
|
||||
end if
|
||||
|
||||
@ -647,8 +647,7 @@ program QuAcK
|
||||
if(do_drCCD) then
|
||||
|
||||
call cpu_time(start_CCD)
|
||||
call drCCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR, &
|
||||
ERI_MO,ENuc,ERHF,eHF)
|
||||
call drCCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eHF)
|
||||
call cpu_time(end_CCD)
|
||||
|
||||
t_CCD = end_CCD - start_CCD
|
||||
@ -664,8 +663,16 @@ program QuAcK
|
||||
if(do_rCCD) then
|
||||
|
||||
call cpu_time(start_CCD)
|
||||
call rCCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR, &
|
||||
ERI_MO,ENuc,ERHF,eHF)
|
||||
call rCCD(.false.,maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eHF)
|
||||
call cpu_time(end_CCD)
|
||||
|
||||
t_CCD = end_CCD - start_CCD
|
||||
write(*,'(A65,1X,F9.3,A8)') 'Total CPU time for ring CCD = ',t_CCD,' seconds'
|
||||
write(*,*)
|
||||
call cpu_time(start_CCD)
|
||||
call G0W0(doACFDT,exchange_kernel,doXBS,COHSEX,BSE,TDA_W,TDA,dBSE,dTDA,evDyn,ppBSE,singlet,triplet, &
|
||||
linGW,eta_GW,regGW,nBas,nC,nO,nV,nR,nS,ENuc,ERHF,ERI_AO,ERI_MO,dipole_int_MO,PHF,cHF,eHF,Vxc,eG0W0)
|
||||
call rCCD(.true.,maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eG0W0)
|
||||
call cpu_time(end_CCD)
|
||||
|
||||
t_CCD = end_CCD - start_CCD
|
||||
@ -681,8 +688,7 @@ program QuAcK
|
||||
if(do_crCCD) then
|
||||
|
||||
call cpu_time(start_CCD)
|
||||
call crCCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR, &
|
||||
ERI_MO,ENuc,ERHF,eHF)
|
||||
call crCCD(maxSCF_CC,thresh_CC,n_diis_CC,nBas,nC,nO,nV,nR,ERI_MO,ENuc,ERHF,eHF)
|
||||
|
||||
call cpu_time(end_CCD)
|
||||
|
||||
|
@ -74,10 +74,10 @@ subroutine ppRPA(TDA,doACFDT,singlet,triplet,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,dipo
|
||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI, &
|
||||
Omega1,X1,Y1,Omega2,X2,Y2,Ec_ppRPA(ispin))
|
||||
|
||||
call print_transition_vectors_pp(.true.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
! call print_transition_vectors_pp(.true.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
|
||||
! call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
||||
! call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
||||
call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
||||
call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
||||
|
||||
deallocate(Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
|
||||
@ -102,10 +102,10 @@ subroutine ppRPA(TDA,doACFDT,singlet,triplet,nBas,nC,nO,nV,nR,ENuc,ERHF,ERI,dipo
|
||||
call linear_response_pp(ispin,TDA,nBas,nC,nO,nV,nR,nOO,nVV,1d0,e,ERI, &
|
||||
Omega1,X1,Y1,Omega2,X2,Y2,Ec_ppRPA(ispin))
|
||||
|
||||
call print_transition_vectors_pp(.false.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
! call print_transition_vectors_pp(.false.,nBas,nC,nO,nV,nR,nOO,nVV,dipole_int,Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
|
||||
! call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
||||
! call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
||||
call print_excitation('pp-BSE (N+2)',ispin,nVV,Omega1)
|
||||
call print_excitation('pp-BSE (N-2)',ispin,nOO,Omega2)
|
||||
|
||||
deallocate(Omega1,X1,Y1,Omega2,X2,Y2)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user