mirror of
https://github.com/pfloos/quack
synced 2024-12-22 20:34:46 +01:00
cleaning prints and fix bug in regularization
This commit is contained in:
parent
e02624c646
commit
9e65d4a090
@ -11,9 +11,9 @@
|
||||
# phRPA* phRPAx* crRPA ppRPA
|
||||
F F F F
|
||||
# G0F2* evGF2* qsGF2* G0F3 evGF3
|
||||
F F F F F
|
||||
F F T F F
|
||||
# G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW
|
||||
F F F F F F
|
||||
# G0T0pp* evGTpp* qsGTpp* G0T0eh evGTeh qsGTeh
|
||||
F F F F F T
|
||||
F F F F F F
|
||||
# * unrestricted version available
|
||||
|
@ -9,9 +9,9 @@
|
||||
# GF: maxSCF thresh DIIS n_diis lin eta renorm reg
|
||||
256 0.00001 T 5 T 0.0 0 F
|
||||
# GW: maxSCF thresh DIIS n_diis lin eta TDA_W reg
|
||||
256 0.00001 T 5 T 0.0 F F
|
||||
256 0.00001 T 5 F 0.0 F T
|
||||
# GT: maxSCF thresh DIIS n_diis lin eta TDA_T reg
|
||||
256 0.00001 T 5 T 0.1 T F
|
||||
256 0.00001 T 5 T 0.0 F F
|
||||
# ACFDT: AC Kx XBS
|
||||
F F T
|
||||
# BSE: phBSE phBSE2 ppBSE dBSE dTDA
|
||||
|
@ -54,7 +54,7 @@ subroutine GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
do a=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j)
|
||||
|
||||
SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2)
|
||||
@ -73,7 +73,7 @@ subroutine GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
do b=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b)
|
||||
|
||||
SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2)
|
||||
|
@ -53,7 +53,7 @@ subroutine GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
do a=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j)
|
||||
|
||||
SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2)
|
||||
@ -70,7 +70,7 @@ subroutine GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
do b=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b)
|
||||
|
||||
SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2)
|
||||
|
@ -63,7 +63,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
eps = eGF2(p,1) + eHF(i,1) - eHF(a,1) - eHF(b,1)
|
||||
num = ERI_aa(i,q,a,b)*ERI_aa(a,b,i,p) &
|
||||
- ERI_aa(i,q,a,b)*ERI_aa(a,b,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -81,7 +81,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
|
||||
eps = eGF2(p,1) + eHF(i,2) - eHF(a,2) - eHF(b,1)
|
||||
num = ERI_ab(q,i,b,a)*ERI_ab(b,a,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -100,7 +100,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
eps = eGF2(p,1) + eHF(a,1) - eHF(i,1) - eHF(j,1)
|
||||
num = ERI_aa(a,q,i,j)*ERI_aa(i,j,a,p) &
|
||||
- ERI_aa(a,q,i,j)*ERI_aa(i,j,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -118,7 +118,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
|
||||
eps = eGF2(p,1) + eHF(a,2) - eHF(i,2) - eHF(j,1)
|
||||
num = ERI_ab(q,a,j,i)*ERI_ab(j,i,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -147,7 +147,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
eps = eGF2(p,2) + eHF(i,2) - eHF(a,2) - eHF(b,2)
|
||||
num = ERI_bb(i,q,a,b)*ERI_bb(a,b,i,p) &
|
||||
- ERI_bb(i,q,a,b)*ERI_bb(a,b,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -165,7 +165,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
|
||||
eps = eGF2(p,2) + eHF(i,1) - eHF(a,1) - eHF(b,2)
|
||||
num = ERI_ab(i,q,a,b)*ERI_ab(a,b,i,p)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -184,7 +184,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
eps = eGF2(p,2) + eHF(a,2) - eHF(i,2) - eHF(j,2)
|
||||
num = ERI_bb(a,q,i,j)*ERI_bb(i,j,a,p) &
|
||||
- ERI_bb(a,q,i,j)*ERI_bb(i,j,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -202,7 +202,7 @@ subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eG
|
||||
|
||||
eps = eGF2(p,2) + eHF(a,1) - eHF(i,1) - eHF(j,2)
|
||||
num = ERI_ab(a,q,i,j)*ERI_ab(i,j,a,p)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
|
@ -61,7 +61,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
eps = eGF2(p,1) + eHF(i,1) - eHF(a,1) - eHF(b,1)
|
||||
num = ERI_aa(i,p,a,b)*ERI_aa(a,b,i,p) &
|
||||
- ERI_aa(i,p,a,b)*ERI_aa(a,b,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -79,7 +79,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
|
||||
eps = eGF2(p,1) + eHF(i,2) - eHF(a,2) - eHF(b,1)
|
||||
num = ERI_ab(p,i,b,a)*ERI_ab(b,a,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -98,7 +98,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
eps = eGF2(p,1) + eHF(a,1) - eHF(i,1) - eHF(j,1)
|
||||
num = ERI_aa(a,p,i,j)*ERI_aa(i,j,a,p) &
|
||||
- ERI_aa(a,p,i,j)*ERI_aa(i,j,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -116,7 +116,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
|
||||
eps = eGF2(p,1) + eHF(a,2) - eHF(i,2) - eHF(j,1)
|
||||
num = ERI_ab(p,a,j,i)*ERI_ab(j,i,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
@ -143,7 +143,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
eps = eGF2(p,2) + eHF(i,2) - eHF(a,2) - eHF(b,2)
|
||||
num = ERI_bb(i,p,a,b)*ERI_bb(a,b,i,p) &
|
||||
- ERI_bb(i,p,a,b)*ERI_bb(a,b,p,i)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -161,7 +161,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
|
||||
eps = eGF2(p,2) + eHF(i,1) - eHF(a,1) - eHF(b,2)
|
||||
num = ERI_ab(i,p,a,b)*ERI_ab(a,b,i,p)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -180,7 +180,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
eps = eGF2(p,2) + eHF(a,2) - eHF(i,2) - eHF(j,2)
|
||||
num = ERI_bb(a,p,i,j)*ERI_bb(i,j,a,p) &
|
||||
- ERI_bb(a,p,i,j)*ERI_bb(i,j,p,a)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
@ -198,7 +198,7 @@ subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,e
|
||||
|
||||
eps = eGF2(p,2) + eHF(a,1) - eHF(i,1) - eHF(j,2)
|
||||
num = ERI_ab(a,p,i,j)*ERI_ab(i,j,a,p)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
kappa = 1d0 - exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec)
|
||||
subroutine print_G0F2(nBas,nO,eHF,Sig,eGF,Z,ENuc,ERHF,Ec)
|
||||
|
||||
! Print one-electron energies and other stuff for G0F2
|
||||
|
||||
@ -9,7 +9,7 @@ subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec)
|
||||
integer,intent(in) :: nO
|
||||
double precision,intent(in) :: eHF(nBas)
|
||||
double precision,intent(in) :: Sig(nBas)
|
||||
double precision,intent(in) :: eGF2(nBas)
|
||||
double precision,intent(in) :: eGF(nBas)
|
||||
double precision,intent(in) :: Z(nBas)
|
||||
double precision,intent(in) :: ENuc
|
||||
double precision,intent(in) :: ERHF
|
||||
@ -24,29 +24,29 @@ subroutine print_G0F2(nBas,nO,eHF,Sig,eGF2,Z,ENuc,ERHF,Ec)
|
||||
|
||||
HOMO = nO
|
||||
LUMO = HOMO + 1
|
||||
Gap = eGF2(LUMO) - eGF2(HOMO)
|
||||
Gap = eGF(LUMO) - eGF(HOMO)
|
||||
|
||||
! Dump results
|
||||
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,*)' Frequency-dependent G0F2 calculation'
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A10,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma (eV)','|','e_G0F2 (eV)','|','Z','|'
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)' One-shot G0F2 calculation'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_GF2 (eV)','|','Z','|','e_GF2 (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F10.6,1X,A1,1X)') &
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',eGF2(p)*HaToeV,'|',Z(p),'|'
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',Z(p),'|',eGF(p)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6)') 'G0F2 HOMO energy (eV):',eGF2(HOMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'G0F2 LUMO energy (eV):',eGF2(LUMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'G0F2 HOMO-LUMO gap (eV):',Gap*HaToeV
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0F2 total energy :',ENuc + ERHF + Ec,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0F2 correlation energy:',Ec,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0F2 HOMO energy =',eGF(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0F2 LUMO energy =',eGF(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0F2 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0F2 total energy =',ENuc + ERHF + Ec,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0F2 correlation energy =',Ec,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec)
|
||||
subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF,ENuc,ERHF,Ec)
|
||||
|
||||
! Print one-electron energies and other stuff for G0F2
|
||||
|
||||
@ -11,7 +11,7 @@ subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec)
|
||||
double precision,intent(in) :: Conv
|
||||
double precision,intent(in) :: eHF(nBas)
|
||||
double precision,intent(in) :: Sig(nBas)
|
||||
double precision,intent(in) :: eGF2(nBas)
|
||||
double precision,intent(in) :: eGF(nBas)
|
||||
double precision,intent(in) :: Z(nBas)
|
||||
double precision,intent(in) :: ENuc
|
||||
double precision,intent(in) :: ERHF
|
||||
@ -26,34 +26,35 @@ subroutine print_evGF2(nBas,nO,nSCF,Conv,eHF,Sig,Z,eGF2,ENuc,ERHF,Ec)
|
||||
|
||||
HOMO = nO
|
||||
LUMO = HOMO + 1
|
||||
Gap = eGF2(LUMO) - eGF2(HOMO)
|
||||
Gap = eGF(LUMO) - eGF(HOMO)
|
||||
|
||||
! Dump results
|
||||
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,*)' Frequency-dependent evGF2 calculation'
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A10,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma (eV)','|','e_evGF2 (eV)','|','Z','|'
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)' Self-consistent evGF2 calculation'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_GF2 (eV)','|','Z','|','e_GF2 (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F10.6,1X,A1,1X)') &
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',eGF2(p)*HaToeV,'|',Z(p),'|'
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',Sig(p)*HaToeV,'|',Z(p),'|',eGF(p)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6)') 'evGF2 HOMO energy (eV):',eGF2(HOMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'evGF2 LUMO energy (eV):',eGF2(LUMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'evGF2 HOMO-LUMO gap (eV):',Gap*HaToeV
|
||||
write(*,*)'--------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGF2 total energy :',ENuc + ERHF + Ec,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGF2 correlation energy:',Ec,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGF2 total energy =',ENuc + ERHF + Ec,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGF2 correlation energy =',Ec,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
||||
end subroutine
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,Ex,Ec,EqsGF2,dipole)
|
||||
subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF,c,SigC,Z,ENuc,ET,EV,EJ,Ex,Ec,EqsGF,dipole)
|
||||
|
||||
! Print one-electron energies and other stuff for qsGF2
|
||||
|
||||
@ -14,7 +14,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
double precision,intent(in) :: Conv
|
||||
double precision,intent(in) :: thresh
|
||||
double precision,intent(in) :: eHF(nBas)
|
||||
double precision,intent(in) :: eGF2(nBas)
|
||||
double precision,intent(in) :: eGF(nBas)
|
||||
double precision,intent(in) :: c(nBas)
|
||||
double precision,intent(in) :: SigC(nBas,nBas)
|
||||
double precision,intent(in) :: Z(nBas)
|
||||
@ -23,7 +23,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
double precision,intent(in) :: EJ
|
||||
double precision,intent(in) :: Ex
|
||||
double precision,intent(in) :: Ec
|
||||
double precision,intent(in) :: EqsGF2
|
||||
double precision,intent(in) :: EqsGF
|
||||
double precision,intent(in) :: dipole(ncart)
|
||||
|
||||
! Local variables
|
||||
@ -38,7 +38,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
|
||||
HOMO = nO
|
||||
LUMO = HOMO + 1
|
||||
Gap = eGF2(LUMO)-eGF2(HOMO)
|
||||
Gap = eGF(LUMO)-eGF(HOMO)
|
||||
|
||||
! Dump results
|
||||
|
||||
@ -55,21 +55,21 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
|
||||
do q=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',q,'|',eHF(q)*HaToeV,'|',SigC(q,q)*HaToeV,'|',Z(q),'|',eGF2(q)*HaToeV,'|'
|
||||
'|',q,'|',eHF(q)*HaToeV,'|',SigC(q,q)*HaToeV,'|',Z(q),'|',eGF(q)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGF2 HOMO energy:',eGF2(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGF2 LUMO energy:',eGF2(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGF2 HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGF2 total energy:',ENuc + EqsGF2,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGF2 exchange energy:',Ex,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGF2 correlation energy:',Ec,' au'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGF2 HOMO energy =',eGF(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGF2 LUMO energy =',eGF(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGF2 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGF2 total energy =',ENuc + EqsGF,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGF2 exchange energy =',Ex,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGF2 correlation energy =',Ec,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
! Dump results for final iteration
|
||||
@ -89,9 +89,9 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Exchange energy: ',Ex,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Correlation energy: ',Ec,' au'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGF2,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGF,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' qsGF2 energy: ',ENuc + EqsGF2,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' qsGF2 energy: ',ENuc + EqsGF,' au'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A35)') ' Dipole moment (Debye) '
|
||||
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
||||
@ -107,7 +107,7 @@ subroutine print_qsGF2(nBas,nO,nSCF,Conv,thresh,eHF,eGF2,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A32)') ' qsGF2 MO energies'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
call matout(nBas,1,eGF2)
|
||||
call matout(nBas,1,eGF)
|
||||
write(*,*)
|
||||
|
||||
endif
|
||||
|
@ -56,8 +56,8 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
|
||||
double precision,allocatable :: Om(:)
|
||||
double precision,allocatable :: XpY(:,:)
|
||||
double precision,allocatable :: XmY(:,:)
|
||||
double precision,allocatable :: rhoL(:,:,:,:)
|
||||
double precision,allocatable :: rhoR(:,:,:,:)
|
||||
double precision,allocatable :: rhoL(:,:,:)
|
||||
double precision,allocatable :: rhoR(:,:,:)
|
||||
|
||||
double precision,allocatable :: eGT(:)
|
||||
|
||||
@ -99,7 +99,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
|
||||
! Memory allocation
|
||||
|
||||
allocate(Aph(nS,nS),Bph(nS,nS),Sig(nBas),Z(nBas),Om(nS),XpY(nS,nS),XmY(nS,nS), &
|
||||
rhoL(nBas,nBas,nS,2),rhoR(nBas,nBas,nS,2),eGT(nBas))
|
||||
rhoL(nBas,nBas,nS),rhoR(nBas,nBas,nS),eGT(nBas))
|
||||
|
||||
!---------------------------------
|
||||
! Compute (triplet) RPA screening
|
||||
@ -124,7 +124,7 @@ subroutine G0T0eh(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_T,TDA,dBSE,
|
||||
! Compute GW self-energy !
|
||||
!------------------------!
|
||||
|
||||
if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR)
|
||||
if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR)
|
||||
|
||||
call GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,EcGM,Sig,Z)
|
||||
|
||||
|
@ -154,8 +154,8 @@ subroutine G0T0pp(doACFDT,exchange_kernel,doXBS,dophBSE,TDA_T,TDA,dBSE,dTDA,dopp
|
||||
!----------------------------------------------
|
||||
|
||||
if(regularize) then
|
||||
call GTpp_regularization(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,eHF,Om1s,rho1s,Om2s,rho2s)
|
||||
call GTpp_regularization(eta,nBas,nC,nO,nV,nR,nOOt,nVVt,eHF,Om1t,rho1t,Om2t,rho2t)
|
||||
call GTpp_regularization(nBas,nC,nO,nV,nR,nOOs,nVVs,eHF,Om1s,rho1s,Om2s,rho2s)
|
||||
call GTpp_regularization(nBas,nC,nO,nV,nR,nOOt,nVVt,eHF,Om1t,rho1t,Om2t,rho2t)
|
||||
end if
|
||||
|
||||
call GTpp_self_energy_diag(eta,nBas,nC,nO,nV,nR,nOOs,nVVs,nOOt,nVVt,eHF,Om1s,rho1s,Om2s,rho2s, &
|
||||
|
@ -14,8 +14,8 @@ subroutine GTeh_QP_graph(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rhoL,rhoR,eGTlin,eGT,Z)
|
||||
double precision,intent(in) :: eta
|
||||
double precision,intent(in) :: eHF(nBas)
|
||||
double precision,intent(in) :: Om(nS)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS)
|
||||
|
||||
double precision,intent(in) :: eGTlin(nBas)
|
||||
|
||||
|
@ -18,8 +18,8 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
integer,intent(in) :: nS
|
||||
double precision,intent(in) :: e(nBas)
|
||||
double precision,intent(in) :: Om(nS)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS)
|
||||
|
||||
! Local variables
|
||||
|
||||
@ -35,7 +35,7 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
do i=nC+1,nO
|
||||
do m=1,nS
|
||||
eps = w - e(i) + Om(m)
|
||||
num = rhoL(i,p,m,1)*rhoR(i,p,m,1)
|
||||
num = rhoL(i,p,m)*rhoR(i,p,m)
|
||||
GTeh_SigC = GTeh_SigC + num*eps/(eps**2 + eta**2)
|
||||
enddo
|
||||
enddo
|
||||
@ -45,7 +45,7 @@ double precision function GTeh_SigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
do a=nO+1,nBas-nR
|
||||
do m=1,nS
|
||||
eps = w - e(a) - Om(m)
|
||||
num = rhoL(p,a,m,1)*rhoR(p,a,m,1)
|
||||
num = rhoL(p,a,m)*rhoR(p,a,m)
|
||||
GTeh_SigC = GTeh_SigC + num*eps/(eps**2 + eta**2)
|
||||
enddo
|
||||
enddo
|
||||
|
@ -18,8 +18,8 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
integer,intent(in) :: nS
|
||||
double precision,intent(in) :: e(nBas)
|
||||
double precision,intent(in) :: Om(nS)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS)
|
||||
|
||||
! Local variables
|
||||
|
||||
@ -35,7 +35,7 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
do i=nC+1,nO
|
||||
do m=1,nS
|
||||
eps = w - e(i) + Om(m)
|
||||
num = rhoL(i,p,m,1)*rhoR(i,p,m,1)
|
||||
num = rhoL(i,p,m)*rhoR(i,p,m)
|
||||
GTeh_dSigC = GTeh_dSigC - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
enddo
|
||||
enddo
|
||||
@ -45,7 +45,7 @@ double precision function GTeh_dSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
do a=nO+1,nBas-nR
|
||||
do m=1,nS
|
||||
eps = w - e(a) - Om(m)
|
||||
num = rhoL(p,a,m,1)*rhoR(p,a,m,1)
|
||||
num = rhoL(p,a,m)*rhoR(p,a,m)
|
||||
GTeh_dSigC = GTeh_dSigC - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
enddo
|
||||
enddo
|
||||
|
@ -18,13 +18,13 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR)
|
||||
|
||||
! Output variables
|
||||
|
||||
double precision,intent(out) :: rhoL(nBas,nBas,nS,2)
|
||||
double precision,intent(out) :: rhoR(nBas,nBas,nS,2)
|
||||
double precision,intent(out) :: rhoL(nBas,nBas,nS)
|
||||
double precision,intent(out) :: rhoR(nBas,nBas,nS)
|
||||
|
||||
! Initialization
|
||||
|
||||
rhoL(:,:,:,:) = 0d0
|
||||
rhoR(:,:,:,:) = 0d0
|
||||
rhoL(:,:,:) = 0d0
|
||||
rhoR(:,:,:) = 0d0
|
||||
|
||||
allocate(X(nS,nS),Y(nS,nS))
|
||||
|
||||
@ -50,13 +50,13 @@ subroutine GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI,XpY,XmY,rhoL,rhoR)
|
||||
jb = jb + 1
|
||||
do m=1,nS
|
||||
|
||||
rhoL(p,q,m,1) = rhoL(p,q,m,1) + ERI(p,j,b,q)*X(jb,m) + ERI(p,b,j,q)*Y(jb,m)
|
||||
rhoL(p,q,m,2) = rhoL(p,q,m,2) + ERI(p,j,b,q)*Y(jb,m) + ERI(p,b,j,q)*X(jb,m)
|
||||
rhoL(p,q,m) = rhoL(p,q,m) + ERI(p,j,b,q)*X(jb,m) + ERI(p,b,j,q)*Y(jb,m)
|
||||
! rhoL(p,q,m,2) = rhoL(p,q,m,2) + ERI(p,j,b,q)*Y(jb,m) + ERI(p,b,j,q)*X(jb,m)
|
||||
|
||||
rhoR(p,q,m,1) = rhoR(p,q,m,1) &
|
||||
rhoR(p,q,m) = rhoR(p,q,m) &
|
||||
+ (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*X(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*Y(jb,m)
|
||||
rhoR(p,q,m,2) = rhoR(p,q,m,2) &
|
||||
+ (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*Y(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*X(jb,m)
|
||||
! rhoR(p,q,m,2) = rhoR(p,q,m,2) &
|
||||
! + (2d0*ERI(p,j,b,q) - ERI(p,j,q,b))*Y(jb,m) + (2d0*ERI(p,b,j,q) - ERI(p,b,q,j))*X(jb,m)
|
||||
|
||||
enddo
|
||||
enddo
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR)
|
||||
subroutine GTeh_regularization(nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR)
|
||||
|
||||
! Regularize GTeh excitation densities via SRG
|
||||
|
||||
@ -9,6 +9,7 @@ subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR)
|
||||
integer,intent(in) :: nBas
|
||||
integer,intent(in) :: nC
|
||||
integer,intent(in) :: nO
|
||||
integer,intent(in) :: nV
|
||||
integer,intent(in) :: nR
|
||||
integer,intent(in) :: nS
|
||||
integer,intent(in) :: e(nBas)
|
||||
@ -37,14 +38,14 @@ subroutine GTeh_regularization(nBas,nC,nO,nR,nS,e,Om,rhoL,rhoR)
|
||||
|
||||
do i=nC+1,nO
|
||||
Dpim = e(p) - e(i) + Om(m)
|
||||
kappa = exp(-Dpim*Dpim*s)
|
||||
kappa = 1d0 - exp(-Dpim*Dpim*s)
|
||||
rhoL(i,p,m) = kappa*rhoL(i,p,m)
|
||||
rhoR(i,p,m) = kappa*rhoR(i,p,m)
|
||||
enddo
|
||||
|
||||
do a=nO+1,nBas-nR
|
||||
Dpam = e(p) - e(a) - Om(m)
|
||||
kappa = exp(-Dpam*Dpam*s)
|
||||
kappa = 1d0 - exp(-Dpam*Dpam*s)
|
||||
rhoL(p,a,m) = kappa*rhoL(p,a,m)
|
||||
rhoR(p,a,m) = kappa*rhoR(p,a,m)
|
||||
enddo
|
||||
|
@ -16,8 +16,8 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig
|
||||
integer,intent(in) :: nS
|
||||
double precision,intent(in) :: e(nBas)
|
||||
double precision,intent(in) :: Om(nS)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS,2)
|
||||
double precision,intent(in) :: rhoL(nBas,nBas,nS)
|
||||
double precision,intent(in) :: rhoR(nBas,nBas,nS)
|
||||
|
||||
! Local variables
|
||||
|
||||
@ -46,7 +46,7 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig
|
||||
do m=1,nS
|
||||
|
||||
eps = e(p) - e(i) + Om(m)
|
||||
num = rhoL(i,p,m,1)*rhoR(i,p,m,1)
|
||||
num = rhoL(i,p,m)*rhoR(i,p,m)
|
||||
Sig(p) = Sig(p) + num*eps/(eps**2 + eta**2)
|
||||
Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
@ -61,7 +61,7 @@ subroutine GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,e,Om,rhoL,rhoR,EcGM,Sig
|
||||
do m=1,nS
|
||||
|
||||
eps = e(p) - e(a) - Om(m)
|
||||
num = rhoL(p,a,m,1)*rhoR(p,a,m,1)
|
||||
num = rhoL(p,a,m)*rhoR(p,a,m)
|
||||
Sig(p) = Sig(p) + num*eps/(eps**2 + eta**2)
|
||||
Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine GTpp_regularization(nBas,nC,nO,nR,nOO,nVV,e,Om1,rho1,Om2,rho2)
|
||||
subroutine GTpp_regularization(nBas,nC,nO,nV,nR,nOO,nVV,e,Om1,rho1,Om2,rho2)
|
||||
|
||||
! Regularize GTpp excitation densities via SRG
|
||||
|
||||
@ -9,6 +9,7 @@ subroutine GTpp_regularization(nBas,nC,nO,nR,nOO,nVV,e,Om1,rho1,Om2,rho2)
|
||||
integer,intent(in) :: nBas
|
||||
integer,intent(in) :: nC
|
||||
integer,intent(in) :: nO
|
||||
integer,intent(in) :: nV
|
||||
integer,intent(in) :: nR
|
||||
integer,intent(in) :: nOO
|
||||
integer,intent(in) :: nVV
|
||||
|
@ -130,7 +130,7 @@ subroutine evGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,d
|
||||
|
||||
! Compute correlation part of the self-energy
|
||||
|
||||
if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR)
|
||||
if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR)
|
||||
|
||||
call GTeh_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR,EcGM,Sig,Z)
|
||||
|
||||
|
@ -30,7 +30,7 @@ subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM)
|
||||
write(*,*)' One-shot G0T0eh calculation'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -39,14 +39,14 @@ subroutine print_G0T0eh(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM)
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0T0eh HOMO energy:',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0T0eh LUMO energy:',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0T0eh HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO energy:',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0eh LUMO energy:',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0eh HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@G0T0eh total energy :',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@G0T0eh correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@G0T0eh total energy :',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@G0T0eh correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh total energy :',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0T0eh correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh total energy :',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0eh correlation energy:',EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -36,10 +36,10 @@ subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA)
|
||||
! Dump results
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)' One-shot G0T0 calculation (T-matrix self-energy) '
|
||||
write(*,*)' One-shot G0T0pp calculation '
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma_T (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -48,16 +48,16 @@ subroutine print_G0T0pp(nBas,nO,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA)
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'G0T0 HOMO energy (eV) =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'G0T0 LUMO energy (eV) =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'G0T0 HOMO-LUMO gap (eV) =',Gap*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO energy (eV) =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0pp LUMO energy (eV) =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0T0pp HOMO-LUMO gap (eV) =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (singlet) =',EcRPA(1),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (triplet) =',EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy =',EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (singlet) =',EcRPA(1),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy (triplet) =',EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp correlation energy =',EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@G0T0pp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0T0pp total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -35,7 +35,7 @@ subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM)
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma_c (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -47,14 +47,14 @@ subroutine print_evGTeh(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGT,EcRPA,EcGM)
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGTeh HOMO energy:',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGTeh LUMO energy:',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGTeh HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGTeh total energy :',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGTeh correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@evGTeh total energy :',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@evGTeh correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh total energy =',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGTeh correlation energy =',EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTeh correlation energy =',EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -18,7 +18,7 @@ subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA)
|
||||
double precision,intent(in) :: Z(nBas)
|
||||
double precision,intent(in) :: eGT(nBas)
|
||||
|
||||
integer :: x,HOMO,LUMO
|
||||
integer :: p,HOMO,LUMO
|
||||
double precision :: Gap
|
||||
|
||||
! HOMO and LUMO
|
||||
@ -31,34 +31,34 @@ subroutine print_evGTpp(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigT,Z,eGT,EcGM,EcRPA)
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
if(nSCF < 10) then
|
||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent evG',nSCF,'T',nSCF,' calculation'
|
||||
write(*,'(1X,A21,I1,A3,I1,A12)')' Self-consistent evG',nSCF,'Tpp',nSCF,' calculation'
|
||||
else
|
||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent evG',nSCF,'T',nSCF,' calculation'
|
||||
write(*,'(1X,A21,I2,A3,I2,A12)')' Self-consistent evG',nSCF,'Tpp',nSCF,' calculation'
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma_T (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do x=1,nBas
|
||||
do p=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',x,'|',eHF(x)*HaToeV,'|',SigT(x)*HaToeV,'|',Z(x),'|',eGT(x)*HaToeV,'|'
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',SigT(p)*HaToeV,'|',Z(p),'|',eGT(p)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6)') 'evGT HOMO energy (eV):',eGT(HOMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'evGT LUMO energy (eV):',eGT(LUMO)*HaToeV
|
||||
write(*,'(2X,A30,F15.6)') 'evGT HOMO-LUMO gap (eV):',Gap*HaToeV
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (singlet) =',EcRPA(1),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy (triplet) =',EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 correlation energy =',EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' Tr@ppRPA@G0T0 total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A50,F20.10,A3)') ' GM@G0T0 total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (singlet) =',EcRPA(1),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy (triplet) =',EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp correlation energy =',EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@evGTpp total energy =',ENuc + ERHF + EcRPA(1) + EcRPA(2),' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGTpp total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -54,7 +54,7 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_T (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTeh (eV)','|','Z','|','e_GTeh (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -65,16 +65,16 @@ subroutine print_qsGTeh(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGTeh HOMO energy:',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGTeh LUMO energy:',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGTeh HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGTeh total energy:',ENuc + EqsGT,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGTeh exchange energy:',Ex,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' GM@qsGTeh correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'ppRPA@qsGTeh correlation energy:',sum(EcRPA(:)),' au'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO energy =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTeh LUMO energy =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTeh HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGTeh total energy =',ENuc + EqsGT,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGTeh exchange energy =',Ex,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTeh correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTeh correlation energy =',sum(EcRPA(:)),' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
! Dump results for final iteration
|
||||
|
@ -28,7 +28,7 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
|
||||
! Local variables
|
||||
|
||||
integer :: x,ixyz,HOMO,LUMO
|
||||
integer :: p,ixyz,HOMO,LUMO
|
||||
double precision :: Gap
|
||||
double precision,external :: trace_matrix
|
||||
|
||||
@ -48,33 +48,33 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
if(nSCF < 10) then
|
||||
write(*,'(1X,A21,I1,A1,I1,A12)')' Self-consistent qsG',nSCF,'T',nSCF,' calculation'
|
||||
write(*,'(1X,A21,I1,A3,I1,A12)')' Self-consistent qsG',nSCF,'Tpp',nSCF,' calculation'
|
||||
else
|
||||
write(*,'(1X,A21,I2,A1,I2,A12)')' Self-consistent qsG',nSCF,'T',nSCF,' calculation'
|
||||
write(*,'(1X,A21,I2,A3,I2,A12)')' Self-consistent qsG',nSCF,'Tpp',nSCF,' calculation'
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_T (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GTpp (eV)','|','Z','|','e_GTpp (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do x=1,nBas
|
||||
do p=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',x,'|',eHF(x)*HaToeV,'|',SigC(x,x)*HaToeV,'|',Z(x),'|',eGT(x)*HaToeV,'|'
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',SigC(p,p)*HaToeV,'|',Z(p),'|',eGT(p)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGT HOMO energy:',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGT LUMO energy:',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGT HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGT total energy:',ENuc + EqsGT,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGT exchange energy:',Ex,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' GM@qsGT correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'ppRPA@qsGT correlation energy:',sum(EcRPA(:)),' au'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO energy =',eGT(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTpp LUMO energy =',eGT(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGTpp HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGTpp total energy =',ENuc + EqsGT,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGTpp exchange energy =',Ex,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGTpp correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'ppRPA@qsGTpp correlation energy =',sum(EcRPA(:)),' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
! Dump results for final iteration
|
||||
@ -96,7 +96,7 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Electronic energy: ',EqsGT,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' Nuclear repulsion: ',ENuc,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' qsGT energy: ',ENuc + EqsGT,' au'
|
||||
write(*,'(A32,1X,F16.10,A3)') ' qsGTpp energy: ',ENuc + EqsGT,' au'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A35)') ' Dipole moment (Debye) '
|
||||
write(*,'(10X,4A10)') 'X','Y','Z','Tot.'
|
||||
@ -105,12 +105,12 @@ subroutine print_qsGTpp(nBas,nO,nSCF,Conv,thresh,eHF,eGT,c,SigC,Z,ENuc,ET,EV,EJ,
|
||||
write(*,*)
|
||||
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A32)') ' qsGT MO coefficients'
|
||||
write(*,'(A32)') ' qsGTpp MO coefficients'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
call matout(nBas,nBas,c)
|
||||
write(*,*)
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
write(*,'(A32)') ' qsGT MO energies'
|
||||
write(*,'(A32)') ' qsGTpp MO energies'
|
||||
write(*,'(A50)') '---------------------------------------'
|
||||
call matout(nBas,1,eGT)
|
||||
write(*,*)
|
||||
|
@ -183,7 +183,7 @@ subroutine qsGTeh(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,BSE,BSE2,
|
||||
|
||||
call GTeh_excitation_density(nBas,nC,nO,nR,nS,ERI_MO,XpY,XmY,rhoL,rhoR)
|
||||
|
||||
if(regularize) call GTeh_regularization(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR)
|
||||
if(regularize) call GTeh_regularization(nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR)
|
||||
|
||||
call GTeh_self_energy(eta,nBas,nC,nO,nV,nR,nS,eGT,Om,rhoL,rhoR,EcGM,Sig,Z)
|
||||
|
||||
|
@ -114,7 +114,7 @@ subroutine G0W0(doACFDT,exchange_kernel,doXBS,dophBSE,dophBSE2,TDA_W,TDA,dBSE,dT
|
||||
! Compute GW self-energy !
|
||||
!------------------------!
|
||||
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eHF,Om,rho)
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eHF,Om,rho)
|
||||
|
||||
call GW_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eHF,Om,rho,EcGM,SigC,Z)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho)
|
||||
subroutine GW_regularization(nBas,nC,nO,nV,nR,nS,e,Om,rho)
|
||||
|
||||
! Regularize GW excitation densities via SRG
|
||||
|
||||
@ -9,6 +9,7 @@ subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho)
|
||||
integer,intent(in) :: nBas
|
||||
integer,intent(in) :: nC
|
||||
integer,intent(in) :: nO
|
||||
integer,intent(in) :: nV
|
||||
integer,intent(in) :: nR
|
||||
integer,intent(in) :: nS
|
||||
integer,intent(in) :: e(nBas)
|
||||
@ -36,13 +37,13 @@ subroutine GW_regularization(nBas,nC,nO,nR,nS,e,Om,rho)
|
||||
|
||||
do i=nC+1,nO
|
||||
Dpim = e(p) - e(i) + Om(m)
|
||||
kappa = exp(-Dpim*Dpim*s)
|
||||
kappa = 1d0 - exp(-Dpim*Dpim*s)
|
||||
rho(p,i,m) = kappa*rho(p,i,m)
|
||||
enddo
|
||||
|
||||
do a=nO+1,nBas-nR
|
||||
Dpam = e(p) - e(a) - Om(m)
|
||||
kappa = exp(-Dpam*Dpam*s)
|
||||
kappa = 1d0 - exp(-Dpam*Dpam*s)
|
||||
rho(p,a,m) = kappa*rho(p,a,m)
|
||||
enddo
|
||||
|
||||
|
@ -129,7 +129,7 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,dop
|
||||
|
||||
! Compute correlation part of the self-energy
|
||||
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eGW,Om,rho)
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eGW,Om,rho)
|
||||
|
||||
call GW_self_energy_diag(eta,nBas,nC,nO,nV,nR,nS,eGW,Om,rho,EcGM,SigC,Z)
|
||||
|
||||
|
@ -30,7 +30,7 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||
write(*,*)' One-shot G0W0 calculation'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -39,14 +39,14 @@ subroutine print_G0W0(nBas,nO,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0W0 HOMO energy:',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0W0 LUMO energy:',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'G0W0 HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'G0W0 HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@G0W0 total energy :',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@G0W0 correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@G0W0 total energy :',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@G0W0 correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 total energy =',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@G0W0 correlation energy =',EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@G0W0 correlation energy =',EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -58,15 +58,15 @@ subroutine print_UG0W0(nBas,nO,eHF,ENuc,EUHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------&
|
||||
-------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'UG0W0 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'UG0W0 LUMO energy:',minval(LUMO(:))*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'UG0W0 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO energy:',maxval(HOMO(:))*HaToeV,' eV'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'UG0W0 LUMO energy:',minval(LUMO(:))*HaToeV,' eV'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'UG0W0 HOMO-LUMO gap :',(minval(LUMO(:))-maxval(HOMO(:)))*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------&
|
||||
-------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@UG0W0 total energy :',ENuc + EUHF + EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@UG0W0 correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' GM@UG0W0 total energy :',ENuc + EUHF + sum(EcGM(:)),' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' GM@UG0W0 correlation energy:',sum(EcGM(:)),' au'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 total energy :',ENuc + EUHF + EcRPA,' au'
|
||||
write(*,'(2X,A50,F15.6,A3)') 'phRPA@UG0W0 correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 total energy :',ENuc + EUHF + sum(EcGM(:)),' au'
|
||||
write(*,'(2X,A50,F15.6,A3)') ' GM@UG0W0 correlation energy:',sum(EcGM(:)),' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------&
|
||||
-------------------------------------------------'
|
||||
write(*,*)
|
||||
|
@ -35,7 +35,7 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sigma_c (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do p=1,nBas
|
||||
@ -47,14 +47,14 @@ subroutine print_evGW(nBas,nO,nSCF,Conv,eHF,ENuc,ERHF,SigC,Z,eGW,EcRPA,EcGM)
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO energy:',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGW LUMO energy:',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'evGW HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'evGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW total energy :',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@evGW correlation energy:',EcRPA,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@evGW total energy :',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'GM@evGW correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW total energy =',ENuc + ERHF + EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@evGW correlation energy =',EcRPA,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGW total energy =',ENuc + ERHF + EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@evGW correlation energy =',EcGM,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
|
@ -28,7 +28,7 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
||||
|
||||
! Local variables
|
||||
|
||||
integer :: x,ixyz,HOMO,LUMO
|
||||
integer :: p,ixyz,HOMO,LUMO
|
||||
double precision :: Gap
|
||||
double precision,external :: trace_matrix
|
||||
|
||||
@ -54,27 +54,27 @@ subroutine print_qsGW(nBas,nO,nSCF,Conv,thresh,eHF,eGW,c,SigC,Z,ENuc,ET,EV,EJ,Ex
|
||||
endif
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(1X,A1,1X,A3,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X,A15,1X,A1,1X)') &
|
||||
'|','#','|','e_HF (eV)','|','Sig_c (eV)','|','Z','|','e_QP (eV)','|'
|
||||
'|','#','|','e_HF (eV)','|','Sig_GW (eV)','|','Z','|','e_GW (eV)','|'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
|
||||
do x=1,nBas
|
||||
do p=1,nBas
|
||||
write(*,'(1X,A1,1X,I3,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X,F15.6,1X,A1,1X)') &
|
||||
'|',x,'|',eHF(x)*HaToeV,'|',SigC(x,x)*HaToeV,'|',Z(x),'|',eGW(x)*HaToeV,'|'
|
||||
'|',p,'|',eHF(p)*HaToeV,'|',SigC(p,p)*HaToeV,'|',Z(p),'|',eGW(p)*HaToeV,'|'
|
||||
enddo
|
||||
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A10,I3)') 'Iteration ',nSCF
|
||||
write(*,'(2X,A14,F15.5)')'Convergence = ',Conv
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGW HOMO energy:',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGW LUMO energy:',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'qsGW HOMO-LUMO gap :',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGW total energy:',ENuc + EqsGW,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' qsGW exchange energy:',Ex,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') ' GM@qsGW correlation energy:',EcGM,' au'
|
||||
write(*,'(2X,A30,F15.6,A3)') 'RPA@qsGW correlation energy:',EcRPA,' au'
|
||||
write(*,*)'-------------------------------------------'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW HOMO energy =',eGW(HOMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW LUMO energy =',eGW(LUMO)*HaToeV,' eV'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'qsGW HOMO-LUMO gap =',Gap*HaToeV,' eV'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW total energy =',ENuc + EqsGW,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' qsGW exchange energy =',Ex,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') ' GM@qsGW correlation energy =',EcGM,' au'
|
||||
write(*,'(2X,A60,F15.6,A3)') 'phRPA@qsGW correlation energy =',EcRPA,' au'
|
||||
write(*,*)'-------------------------------------------------------------------------------'
|
||||
write(*,*)
|
||||
|
||||
! Dump results for final iteration
|
||||
|
@ -182,7 +182,7 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,dophBSE,dop
|
||||
|
||||
call GW_excitation_density(nBas,nC,nO,nR,nS,ERI_MO,XpY,rho)
|
||||
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nR,nS,eGW,Om,rho)
|
||||
if(regularize) call GW_regularization(nBas,nC,nO,nV,nR,nS,eGW,Om,rho)
|
||||
|
||||
call GW_self_energy(eta,nBas,nC,nO,nV,nR,nS,eGW,Om,rho,EcGM,SigC,Z)
|
||||
|
||||
|
@ -69,7 +69,7 @@ program QuAcK
|
||||
double precision :: thresh_HF,level_shift
|
||||
logical :: DIIS_HF,guess_type,ortho_type,mix
|
||||
|
||||
logical :: regMP
|
||||
logical :: reg_MP
|
||||
|
||||
integer :: maxSCF_CC,max_diis_CC
|
||||
double precision :: thresh_CC
|
||||
@ -81,19 +81,19 @@ program QuAcK
|
||||
logical :: spin_flip
|
||||
logical :: TDA
|
||||
|
||||
integer :: maxSCF_GF,max_diis_GF,renormGF
|
||||
integer :: maxSCF_GF,max_diis_GF,renorm_GF
|
||||
double precision :: thresh_GF
|
||||
logical :: DIIS_GF,linGF,regGF
|
||||
logical :: DIIS_GF,lin_GF,reg_GF
|
||||
double precision :: eta_GF
|
||||
|
||||
integer :: maxSCF_GW,max_diis_GW
|
||||
double precision :: thresh_GW
|
||||
logical :: DIIS_GW,TDA_W,linGW,regGW
|
||||
logical :: DIIS_GW,TDA_W,lin_GW,reg_GW
|
||||
double precision :: eta_GW
|
||||
|
||||
integer :: maxSCF_GT,max_diis_GT
|
||||
double precision :: thresh_GT
|
||||
logical :: DIIS_GT,TDA_T,linGT,regGT
|
||||
logical :: DIIS_GT,TDA_T,lin_GT,reg_GT
|
||||
double precision :: eta_GT
|
||||
|
||||
logical :: dophBSE,dophBSE2,doppBSE,dBSE,dTDA
|
||||
@ -141,13 +141,13 @@ program QuAcK
|
||||
!--------------------------!
|
||||
|
||||
call read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
||||
regMP, &
|
||||
reg_MP, &
|
||||
maxSCF_CC,thresh_CC,DIIS_CC,max_diis_CC, &
|
||||
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||
maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
||||
maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,linGW,eta_GW,regGW,TDA_W, &
|
||||
maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,linGT,eta_GT,regGT,TDA_T, &
|
||||
doACFDT,exchange_kernel,doXBS, &
|
||||
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||
maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,lin_GF,eta_GF,renorm_GF,reg_GF, &
|
||||
maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, &
|
||||
maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, &
|
||||
doACFDT,exchange_kernel,doXBS, &
|
||||
dophBSE,dophBSE2,doppBSE,dBSE,dTDA)
|
||||
|
||||
!------------------------------------------------!
|
||||
@ -344,7 +344,7 @@ program QuAcK
|
||||
if(doMP) then
|
||||
|
||||
call wall_time(start_MP)
|
||||
call MP(doMP2,doMP3,unrestricted,regMP,nBas,nC,nO,nV,nR,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ENuc,EHF,epsHF)
|
||||
call MP(doMP2,doMP3,unrestricted,reg_MP,nBas,nC,nO,nV,nR,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,ENuc,EHF,epsHF)
|
||||
call wall_time(end_MP)
|
||||
|
||||
t_MP = end_MP - start_MP
|
||||
@ -423,8 +423,8 @@ program QuAcK
|
||||
if(doGF) then
|
||||
|
||||
call wall_time(start_GF)
|
||||
call GF(doG0F2,doevGF2,doqsGF2,doG0F3,doevGF3,unrestricted,renormGF,maxSCF_GF,thresh_GF,max_diis_GF, &
|
||||
dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip,linGF,eta_GF,regGF, &
|
||||
call GF(doG0F2,doevGF2,doqsGF2,doG0F3,doevGF3,unrestricted,renorm_GF,maxSCF_GF,thresh_GF,max_diis_GF, &
|
||||
dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip,lin_GF,eta_GF,reg_GF, &
|
||||
nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc,ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb, &
|
||||
dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb,PHF,cHF,epsHF)
|
||||
call wall_time(end_GF)
|
||||
@ -446,7 +446,7 @@ program QuAcK
|
||||
call wall_time(start_GW)
|
||||
call GW(doG0W0,doevGW,doqsGW,doufG0W0,doufGW,doSRGqsGW,unrestricted,maxSCF_GW,thresh_GW,max_diis_GW,doACFDT, &
|
||||
exchange_kernel,doXBS,dophBSE,dophBSE2,doppBSE,TDA_W,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||
linGW,eta_GW,regGW,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, &
|
||||
lin_GW,eta_GW,reg_GW,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, &
|
||||
ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb, &
|
||||
PHF,cHF,epsHF)
|
||||
call wall_time(end_GW)
|
||||
@ -468,7 +468,7 @@ program QuAcK
|
||||
call wall_time(start_GT)
|
||||
call GT(doG0T0pp,doevGTpp,doqsGTpp,doG0T0eh,doevGTeh,doqsGTeh,unrestricted,maxSCF_GT,thresh_GT,max_diis_GT,doACFDT, &
|
||||
exchange_kernel,doXBS,dophBSE,dophBSE2,doppBSE,TDA_T,TDA,dBSE,dTDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||
linGT,eta_GT,regGT,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, &
|
||||
lin_GT,eta_GT,reg_GT,nNuc,ZNuc,rNuc,ENuc,nBas,nC,nO,nV,nR,nS,EHF,S,X,T,V,Hc, &
|
||||
ERI_AO,ERI_MO,ERI_MO_aaaa,ERI_MO_aabb,ERI_MO_bbbb,dipole_int_AO,dipole_int_MO,dipole_int_aa,dipole_int_bb, &
|
||||
PHF,cHF,epsHF)
|
||||
call wall_time(end_GT)
|
||||
|
@ -1,10 +1,10 @@
|
||||
subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho_type,mix,level_shift,dostab, &
|
||||
regMP, &
|
||||
reg_MP, &
|
||||
maxSCF_CC,thresh_CC,DIIS_CC,max_diis_CC, &
|
||||
TDA,singlet,triplet,spin_conserved,spin_flip, &
|
||||
maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,linGF,eta_GF,renormGF,regGF, &
|
||||
maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,linGW,eta_GW,regGW,TDA_W, &
|
||||
maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,linGT,eta_GT,regGT,TDA_T, &
|
||||
maxSCF_GF,thresh_GF,DIIS_GF,max_diis_GF,lin_GF,eta_GF,renorm_GF,reg_GF, &
|
||||
maxSCF_GW,thresh_GW,DIIS_GW,max_diis_GW,lin_GW,eta_GW,reg_GW,TDA_W, &
|
||||
maxSCF_GT,thresh_GT,DIIS_GT,max_diis_GT,lin_GT,eta_GT,reg_GT,TDA_T, &
|
||||
doACFDT,exchange_kernel,doXBS, &
|
||||
dophBSE,dophBSE2,doppBSE,dBSE,dTDA)
|
||||
|
||||
@ -24,7 +24,7 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho
|
||||
double precision,intent(out) :: level_shift
|
||||
logical,intent(out) :: dostab
|
||||
|
||||
logical,intent(out) :: regMP
|
||||
logical,intent(out) :: reg_MP
|
||||
|
||||
integer,intent(out) :: maxSCF_CC
|
||||
double precision,intent(out) :: thresh_CC
|
||||
@ -41,28 +41,28 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho
|
||||
double precision,intent(out) :: thresh_GF
|
||||
logical,intent(out) :: DIIS_GF
|
||||
integer,intent(out) :: max_diis_GF
|
||||
logical,intent(out) :: linGF
|
||||
integer,intent(out) :: renormGF
|
||||
logical,intent(out) :: lin_GF
|
||||
integer,intent(out) :: renorm_GF
|
||||
double precision,intent(out) :: eta_GF
|
||||
logical,intent(out) :: regGF
|
||||
logical,intent(out) :: reg_GF
|
||||
|
||||
integer,intent(out) :: maxSCF_GW
|
||||
double precision,intent(out) :: thresh_GW
|
||||
logical,intent(out) :: DIIS_GW
|
||||
integer,intent(out) :: max_diis_GW
|
||||
logical,intent(out) :: TDA_W
|
||||
logical,intent(out) :: linGW
|
||||
logical,intent(out) :: lin_GW
|
||||
double precision,intent(out) :: eta_GW
|
||||
logical,intent(out) :: regGW
|
||||
logical,intent(out) :: reg_GW
|
||||
|
||||
integer,intent(out) :: maxSCF_GT
|
||||
double precision,intent(out) :: thresh_GT
|
||||
logical,intent(out) :: DIIS_GT
|
||||
integer,intent(out) :: max_diis_GT
|
||||
logical,intent(out) :: TDA_T
|
||||
logical,intent(out) :: linGT
|
||||
logical,intent(out) :: lin_GT
|
||||
double precision,intent(out) :: eta_GT
|
||||
logical,intent(out) :: regGT
|
||||
logical,intent(out) :: reg_GT
|
||||
|
||||
logical,intent(out) :: doACFDT
|
||||
logical,intent(out) :: exchange_kernel
|
||||
@ -105,11 +105,11 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho
|
||||
|
||||
! Read MPn options
|
||||
|
||||
regMP = .false.
|
||||
reg_MP = .false.
|
||||
read(1,*)
|
||||
read(1,*) ans1
|
||||
|
||||
if(ans1 == 'T') regMP = .true.
|
||||
if(ans1 == 'T') reg_MP = .true.
|
||||
|
||||
! Read CC options
|
||||
|
||||
@ -144,63 +144,61 @@ subroutine read_options(maxSCF_HF,thresh_HF,DIIS_HF,max_diis_HF,guess_type,ortho
|
||||
|
||||
! Read GF options
|
||||
|
||||
maxSCF_GF = 64
|
||||
thresh_GF = 1d-5
|
||||
DIIS_GF = .false.
|
||||
maxSCF_GF = 64
|
||||
thresh_GF = 1d-5
|
||||
DIIS_GF = .false.
|
||||
max_diis_GF = 5
|
||||
linGF = .false.
|
||||
eta_GF = 0d0
|
||||
renormGF = 0
|
||||
regGF = .false.
|
||||
lin_GF = .false.
|
||||
eta_GF = 0d0
|
||||
renorm_GF = 0
|
||||
reg_GF = .false.
|
||||
|
||||
read(1,*)
|
||||
read(1,*) maxSCF_GF,thresh_GF,ans1,max_diis_GF,ans2,eta_GF,renormGF,ans3
|
||||
read(1,*) maxSCF_GF,thresh_GF,ans1,max_diis_GF,ans2,eta_GF,renorm_GF,ans3
|
||||
|
||||
if(ans1 == 'T') DIIS_GF = .true.
|
||||
if(ans2 == 'T') linGF = .true.
|
||||
if(ans3 == 'T') regGF = .true.
|
||||
if(ans2 == 'T') lin_GF = .true.
|
||||
if(ans3 == 'T') reg_GF = .true.
|
||||
if(.not.DIIS_GF) max_diis_GF = 1
|
||||
|
||||
! Read GW options
|
||||
|
||||
maxSCF_GW = 64
|
||||
thresh_GW = 1d-5
|
||||
DIIS_GW = .false.
|
||||
maxSCF_GW = 64
|
||||
thresh_GW = 1d-5
|
||||
DIIS_GW = .false.
|
||||
max_diis_GW = 5
|
||||
linGW = .false.
|
||||
eta_GW = 0d0
|
||||
regGW = .false.
|
||||
TDA_W = .false.
|
||||
lin_GW = .false.
|
||||
eta_GW = 0d0
|
||||
reg_GW = .false.
|
||||
TDA_W = .false.
|
||||
|
||||
read(1,*)
|
||||
read(1,*) maxSCF_GW,thresh_GW,ans1,max_diis_GW,ans2,eta_GW, &
|
||||
ans3,ans4
|
||||
read(1,*) maxSCF_GW,thresh_GW,ans1,max_diis_GW,ans2,eta_GW,ans3,ans4
|
||||
|
||||
if(ans1 == 'T') DIIS_GW = .true.
|
||||
if(ans2 == 'T') linGW = .true.
|
||||
if(ans2 == 'T') lin_GW = .true.
|
||||
if(ans3 == 'T') TDA_W = .true.
|
||||
if(ans4 == 'T') regGW = .true.
|
||||
if(ans4 == 'T') reg_GW = .true.
|
||||
if(.not.DIIS_GW) max_diis_GW = 1
|
||||
|
||||
! Read GT options
|
||||
|
||||
maxSCF_GT = 64
|
||||
thresh_GT = 1d-5
|
||||
DIIS_GT = .false.
|
||||
maxSCF_GT = 64
|
||||
thresh_GT = 1d-5
|
||||
DIIS_GT = .false.
|
||||
max_diis_GT = 5
|
||||
linGT = .false.
|
||||
eta_GT = 0d0
|
||||
regGT = .false.
|
||||
TDA_T = .false.
|
||||
lin_GT = .false.
|
||||
eta_GT = 0d0
|
||||
reg_GT = .false.
|
||||
TDA_T = .false.
|
||||
|
||||
read(1,*)
|
||||
read(1,*) maxSCF_GT,thresh_GT,ans1,max_diis_GT,ans2,eta_GT, &
|
||||
ans3,ans4
|
||||
read(1,*) maxSCF_GT,thresh_GT,ans1,max_diis_GT,ans2,eta_GT,ans3,ans4
|
||||
|
||||
if(ans1 == 'T') DIIS_GT = .true.
|
||||
if(ans2 == 'T') linGT = .true.
|
||||
if(ans2 == 'T') lin_GT = .true.
|
||||
if(ans3 == 'T') TDA_T = .true.
|
||||
if(ans4 == 'T') regGT = .true.
|
||||
if(ans4 == 'T') reg_GT = .true.
|
||||
if(.not.DIIS_GT) max_diis_GT = 1
|
||||
|
||||
! Options for adiabatic connection
|
||||
|
Loading…
Reference in New Issue
Block a user