mirror of
https://github.com/pfloos/quack
synced 2024-12-22 20:34:46 +01:00
regularized GW
This commit is contained in:
parent
a64bdce3c4
commit
d24b729fc3
@ -1,7 +1,7 @@
|
|||||||
# RHF UHF KS MOM
|
# RHF UHF KS MOM
|
||||||
F T F F
|
T F F F
|
||||||
# MP2* MP3 MP2-F12
|
# MP2* MP3 MP2-F12
|
||||||
T F F
|
F F F
|
||||||
# CCD pCCD DCD CCSD CCSD(T)
|
# CCD pCCD DCD CCSD CCSD(T)
|
||||||
F F F F F
|
F F F F F
|
||||||
# drCCD rCCD crCCD lCCD
|
# drCCD rCCD crCCD lCCD
|
||||||
@ -9,11 +9,11 @@
|
|||||||
# CIS* CIS(D) CID CISD FCI
|
# CIS* CIS(D) CID CISD FCI
|
||||||
F F F F F
|
F F F F F
|
||||||
# RPA* RPAx* crRPA ppRPA
|
# RPA* RPAx* crRPA ppRPA
|
||||||
F F F T
|
F F F F
|
||||||
# G0F2* evGF2* qsGF2* G0F3 evGF3
|
# G0F2* evGF2* qsGF2* G0F3 evGF3
|
||||||
F F F F F
|
F F F F F
|
||||||
# G0W0* evGW* qsGW* ufG0W0 ufGW
|
# G0W0* evGW* qsGW* ufG0W0 ufGW
|
||||||
F F F F F
|
F F T F F
|
||||||
# G0T0 evGT qsGT
|
# G0T0 evGT qsGT
|
||||||
F F F
|
F F F
|
||||||
# MCMP2
|
# MCMP2
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
# GF: maxSCF thresh DIIS n_diis lin eta renorm
|
# GF: maxSCF thresh DIIS n_diis lin eta renorm
|
||||||
256 0.00001 T 5 T 0.00367493 3
|
256 0.00001 T 5 T 0.00367493 3
|
||||||
# GW/GT: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0
|
# GW/GT: maxSCF thresh DIIS n_diis lin eta COHSEX SOSEX TDA_W G0W GW0
|
||||||
256 0.00001 T 15 T 0.00367493 F F F F F
|
256 0.00001 T 5 T 0.0 F F F F F
|
||||||
# ACFDT: AC Kx XBS
|
# ACFDT: AC Kx XBS
|
||||||
F F F
|
F F F
|
||||||
# BSE: BSE dBSE dTDA evDyn
|
# BSE: BSE dBSE dTDA evDyn
|
||||||
|
@ -161,11 +161,13 @@ subroutine evGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,
|
|||||||
|
|
||||||
if(G0W) then
|
if(G0W) then
|
||||||
|
|
||||||
|
! call regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
call self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,Z)
|
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,Z)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
! call regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
call self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,Z)
|
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,Z)
|
||||||
|
|
||||||
|
@ -192,11 +192,13 @@ subroutine qsGW(maxSCF,thresh,max_diis,doACFDT,exchange_kernel,doXBS,COHSEX,BSE,
|
|||||||
|
|
||||||
if(G0W) then
|
if(G0W) then
|
||||||
|
|
||||||
|
! call regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
call self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,Z)
|
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eHF,OmRPA,rho_RPA,Z)
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
! call regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
call self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,EcGM,SigC)
|
||||||
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,Z)
|
call renormalization_factor(COHSEX,eta,nBas,nC,nO,nV,nR,nS,eGW,OmRPA,rho_RPA,Z)
|
||||||
|
|
||||||
|
126
src/MBPT/regularized_self_energy_correlation.f90
Normal file
126
src/MBPT/regularized_self_energy_correlation.f90
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
subroutine regularized_self_energy_correlation(COHSEX,eta,nBas,nC,nO,nV,nR,nS,e,Omega,rho,EcGM,SigC)
|
||||||
|
|
||||||
|
! Compute correlation part of the regularized self-energy
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
include 'parameters.h'
|
||||||
|
|
||||||
|
! Input variables
|
||||||
|
|
||||||
|
logical,intent(in) :: COHSEX
|
||||||
|
double precision,intent(in) :: eta
|
||||||
|
integer,intent(in) :: nBas,nC,nO,nV,nR,nS
|
||||||
|
double precision,intent(in) :: e(nBas)
|
||||||
|
double precision,intent(in) :: Omega(nS)
|
||||||
|
double precision,intent(in) :: rho(nBas,nBas,nS)
|
||||||
|
|
||||||
|
! Local variables
|
||||||
|
|
||||||
|
integer :: i,j,a,b
|
||||||
|
integer :: p,q,r
|
||||||
|
integer :: jb
|
||||||
|
double precision :: eps
|
||||||
|
|
||||||
|
double precision :: kappa
|
||||||
|
double precision :: fk
|
||||||
|
|
||||||
|
! Output variables
|
||||||
|
|
||||||
|
double precision,intent(out) :: SigC(nBas,nBas)
|
||||||
|
double precision,intent(out) :: EcGM
|
||||||
|
|
||||||
|
! Initialize
|
||||||
|
|
||||||
|
SigC(:,:) = 0d0
|
||||||
|
|
||||||
|
!---------------------------------------------!
|
||||||
|
! Parameters for regularized MP2 calculations !
|
||||||
|
!---------------------------------------------!
|
||||||
|
|
||||||
|
kappa = 1.1d0
|
||||||
|
|
||||||
|
!-----------------------------!
|
||||||
|
! COHSEX static approximation !
|
||||||
|
!-----------------------------!
|
||||||
|
|
||||||
|
if(COHSEX) then
|
||||||
|
|
||||||
|
! COHSEX: SEX of the COHSEX correlation self-energy
|
||||||
|
|
||||||
|
do p=nC+1,nBas-nR
|
||||||
|
do q=nC+1,nBas-nR
|
||||||
|
do i=nC+1,nO
|
||||||
|
do jb=1,nS
|
||||||
|
SigC(p,q) = SigC(p,q) + 4d0*rho(p,i,jb)*rho(q,i,jb)/Omega(jb)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
! COHSEX: COH part of the COHSEX correlation self-energy
|
||||||
|
|
||||||
|
do p=nC+1,nBas-nR
|
||||||
|
do q=nC+1,nBas-nR
|
||||||
|
do r=nC+1,nBas-nR
|
||||||
|
do jb=1,nS
|
||||||
|
SigC(p,q) = SigC(p,q) - 2d0*rho(p,r,jb)*rho(q,r,jb)/Omega(jb)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
EcGM = 0d0
|
||||||
|
do i=nC+1,nO
|
||||||
|
EcGM = EcGM + 0.5d0*SigC(i,i)
|
||||||
|
end do
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
!----------------!
|
||||||
|
! GW self-energy !
|
||||||
|
!----------------!
|
||||||
|
|
||||||
|
! Occupied part of the correlation self-energy
|
||||||
|
|
||||||
|
do p=nC+1,nBas-nR
|
||||||
|
do q=nC+1,nBas-nR
|
||||||
|
do i=nC+1,nO
|
||||||
|
do jb=1,nS
|
||||||
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
|
SigC(p,q) = SigC(p,q) + 2d0*rho(p,i,jb)*rho(q,i,jb)*fk
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
! Virtual part of the correlation self-energy
|
||||||
|
|
||||||
|
do p=nC+1,nBas-nR
|
||||||
|
do q=nC+1,nBas-nR
|
||||||
|
do a=nO+1,nBas-nR
|
||||||
|
do jb=1,nS
|
||||||
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
|
SigC(p,q) = SigC(p,q) + 2d0*rho(p,a,jb)*rho(q,a,jb)*fk
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
! GM correlation energy
|
||||||
|
|
||||||
|
EcGM = 0d0
|
||||||
|
do i=nC+1,nO
|
||||||
|
do a=nO+1,nBas-nR
|
||||||
|
do jb=1,nS
|
||||||
|
eps = e(a) - e(i) + Omega(jb)
|
||||||
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
|
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
end if
|
||||||
|
|
||||||
|
end subroutine regularized_self_energy_correlation
|
@ -88,7 +88,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do i=nC+1,nO
|
do i=nC+1,nO
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(i) + Omega(jb)
|
eps = e(p) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*eps))**2/eps
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
SigC(p) = SigC(p) + 2d0*rho(p,i,jb)**2*fk
|
SigC(p) = SigC(p) + 2d0*rho(p,i,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -100,7 +100,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(p) - e(a) - Omega(jb)
|
eps = e(p) - e(a) - Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*eps))**2/eps
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
SigC(p) = SigC(p) + 2d0*rho(p,a,jb)**2*fk
|
SigC(p) = SigC(p) + 2d0*rho(p,a,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
@ -113,7 +113,7 @@ subroutine regularized_self_energy_correlation_diag(COHSEX,eta,nBas,nC,nO,nV,nR,
|
|||||||
do a=nO+1,nBas-nR
|
do a=nO+1,nBas-nR
|
||||||
do jb=1,nS
|
do jb=1,nS
|
||||||
eps = e(a) - e(i) + Omega(jb)
|
eps = e(a) - e(i) + Omega(jb)
|
||||||
fk = (1d0 - exp(-kappa*eps))**2/eps
|
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||||
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
EcGM = EcGM - 4d0*rho(a,i,jb)**2*fk
|
||||||
end do
|
end do
|
||||||
end do
|
end do
|
||||||
|
Loading…
Reference in New Issue
Block a user