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(:,:))
4788end subroutine
0 commit comments