Skip to content

Commit d93b237

Browse files
author
lburth
committed
SRG for MOM U self energy
1 parent 144cc6d commit d93b237

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

src/GW/CVS_UGW_SRG_self_energy_diag.f90

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
subroutine CVS_UGW_SRG_self_energy_diag(flow,nBas,nC,nO,nV,nR,nSt,nCVS,nFC,occupations,virtuals,e,Om,rho,EcGM,Sig,Z)
1+
subroutine CVS_UGW_SRG_self_energy_diag(flow,nBas,nC,nO,nV,nR,nSt,nCVS,nFC,occupations,virtuals,e,Om,rho,EcGM,SigC,Z)
22

33
! Compute diagonal of the correlation part of the self-energy
44

@@ -24,24 +24,65 @@ subroutine CVS_UGW_SRG_self_energy_diag(flow,nBas,nC,nO,nV,nR,nSt,nCVS,nFC,occup
2424

2525
! Local variables
2626

27-
integer :: i,a,p,m
27+
integer :: i,a,p,m,ispin
2828
double precision :: num,eps
2929
double precision :: s
3030
double precision :: Dpim,Dpam,Diam
3131

3232
! Output variables
3333

34-
double precision,intent(out) :: Sig(nBas,nspin)
34+
double precision,intent(out) :: SigC(nBas,nspin)
3535
double precision,intent(out) :: Z(nBas,nspin)
3636
double precision :: EcGM(nspin)
3737

3838
! Initialize
3939

40-
Sig(:,:) = 0d0
40+
SigC(:,:) = 0d0
4141
Z(:,:) = 0d0
4242
EcGM(:) = 0d0
4343
s = flow
4444

45-
print *, "SRG not implemented for CVS/MOM yet"
4645

46+
do ispin=1,nspin
47+
! Occupied part of the correlation self-energy
48+
49+
do p=1,nBas
50+
do i=1,nO(ispin)-nFC(ispin)
51+
do m=1,nSt
52+
Dpim = e(p,ispin) - e(occupations(i,ispin),ispin) + Om(m)
53+
SigC(p,ispin) = SigC(p,ispin) + rho(p,occupations(i,ispin),m,ispin)**2&
54+
* (1d0-exp(-2d0*s*Dpim*Dpim))/Dpim
55+
end do
56+
end do
57+
end do
58+
59+
! Virtual part of the correlation self-energy
60+
61+
do p=1,nBas
62+
do a=1+nCVS(ispin),nBas - nO(ispin)
63+
do m=1,nSt
64+
Dpam = e(p,ispin) - e(virtuals(a,ispin),ispin) - Om(m)
65+
SigC(p,ispin) = SigC(p,ispin) + rho(p,virtuals(a,ispin),m,ispin)**2&
66+
* (1d0-exp(-2d0*s*Dpam*Dpam))/Dpam
67+
end do
68+
end do
69+
end do
70+
71+
! GM correlation energy
72+
73+
do i=1,nO(ispin)-nFC(ispin)
74+
do a=nCVS(ispin)+1,nBas-nO(ispin)
75+
do m=1,nSt
76+
Diam = e(virtuals(a,ispin),ispin) - e(occupations(i,ispin),ispin) + Om(m)
77+
EcGM = EcGM - rho(virtuals(a,ispin),occupations(i,ispin),m,ispin)&
78+
* rho(virtuals(a,ispin),occupations(i,ispin),m,ispin)&
79+
* (1d0-exp(-2d0*s*Diam*Diam))/Diam
80+
end do
81+
end do
82+
end do
83+
end do
84+
85+
! Compute renormalization factor from derivative
86+
87+
Z(:,:) = 1d0/(1d0 - Z(:,:))
4788
end subroutine

0 commit comments

Comments
 (0)