mirror of
https://github.com/pfloos/quack
synced 2024-11-19 04:22:39 +01:00
regularization in GF2
This commit is contained in:
parent
f3f97a1daf
commit
e02624c646
@ -61,7 +61,7 @@ subroutine G0F2(dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,triplet,linearize,eta,regu
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eHF,ERI,SigC,Z)
|
||||
call GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eHF,ERI,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
subroutine GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
|
||||
! Compute GF2 self-energy and its renormalization factor
|
||||
|
||||
@ -24,8 +24,8 @@ subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
double precision :: eps
|
||||
double precision :: num
|
||||
|
||||
double precision :: s
|
||||
double precision :: kappa
|
||||
double precision :: fk,dfk
|
||||
|
||||
! Output variables
|
||||
|
||||
@ -41,7 +41,7 @@ subroutine regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
! Parameters for regularized calculations !
|
||||
!-----------------------------------------!
|
||||
|
||||
kappa = 1d0
|
||||
s = 100d0
|
||||
|
||||
!----------------------------------------------------!
|
||||
! Compute GF2 self-energy and renormalization factor !
|
||||
@ -54,13 +54,11 @@ subroutine regularized_self_energy_GF2(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)
|
||||
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(q,a,i,j)
|
||||
|
||||
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||
|
||||
SigC(p,q) = SigC(p,q) + num*fk
|
||||
if(p == q) Z(p) = Z(p) - num*dfk
|
||||
SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
end do
|
||||
end do
|
||||
@ -75,13 +73,11 @@ subroutine regularized_self_energy_GF2(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)
|
||||
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(q,i,a,b)
|
||||
|
||||
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||
|
||||
SigC(p,q) = SigC(p,q) + num*fk
|
||||
if(p == q) Z(p) = Z(p) - num*dfk
|
||||
SigC(p,q) = SigC(p,q) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
end do
|
||||
end do
|
@ -1,4 +1,4 @@
|
||||
subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
subroutine GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,SigC,Z)
|
||||
|
||||
! Compute diagonal part of the GF2 self-energy and its renormalization factor
|
||||
|
||||
@ -24,8 +24,8 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,Si
|
||||
double precision :: eps
|
||||
double precision :: num
|
||||
|
||||
double precision :: s
|
||||
double precision :: kappa
|
||||
double precision :: fk,dfk
|
||||
|
||||
! Output variables
|
||||
|
||||
@ -41,7 +41,7 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,Si
|
||||
! Parameters for regularized calculations !
|
||||
!-----------------------------------------!
|
||||
|
||||
kappa = 1d0
|
||||
s = 100d0
|
||||
|
||||
!----------------------------------------------------!
|
||||
! Compute GF2 self-energy and renormalization factor !
|
||||
@ -53,13 +53,11 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,Si
|
||||
do a=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(a) - eHF(i) - eHF(j)
|
||||
num = (2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,a,i,j) - ERI(p,a,j,i))*ERI(p,a,i,j)
|
||||
|
||||
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||
|
||||
SigC(p) = SigC(p) + num*fk
|
||||
Z(p) = Z(p) - num*dfk
|
||||
SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2)
|
||||
Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
end do
|
||||
end do
|
||||
@ -72,13 +70,11 @@ subroutine regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF2,ERI,Si
|
||||
do b=nO+1,nBas-nR
|
||||
|
||||
eps = eGF2(p) + eHF(i) - eHF(a) - eHF(b)
|
||||
num = (2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b)
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
num = kappa*(2d0*ERI(p,i,a,b) - ERI(p,i,b,a))*ERI(p,i,a,b)
|
||||
|
||||
fk = (1d0 - exp(-2d0*eps**2/kappa**2))/eps
|
||||
dfk = - fk/eps + 4d0*kappa**2*exp(-2d0*eps**2/kappa**2)
|
||||
|
||||
SigC(p) = SigC(p) + num*fk
|
||||
Z(p) = Z(p) - num*dfk
|
||||
SigC(p) = SigC(p) + num*eps/(eps**2 + eta**2)
|
||||
Z(p) = Z(p) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
end do
|
||||
end do
|
@ -79,7 +79,7 @@ subroutine UG0F2(BSE,TDA,dBSE,dTDA,spin_conserved,spin_flip,linearize,eta,regula
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eHF,SigC,Z)
|
||||
call UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eHF,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eGF2,SigC,Z)
|
||||
subroutine UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eGF2,SigC,Z)
|
||||
|
||||
! Perform unrestricted GF2 self-energy and its renormalization factor
|
||||
|
||||
@ -26,8 +26,8 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
integer :: i,j,a,b
|
||||
double precision :: eps,num
|
||||
|
||||
double precision :: s
|
||||
double precision :: kappa
|
||||
double precision :: fk,dfk
|
||||
|
||||
! Output variables
|
||||
|
||||
@ -45,7 +45,7 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
! Parameters for regularized calculations !
|
||||
!-----------------------------------------!
|
||||
|
||||
kappa = 1.1d0
|
||||
s = 100d0
|
||||
|
||||
!----------------!
|
||||
! Spin-up sector
|
||||
@ -63,13 +63,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*fk
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -83,13 +81,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*fk
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -104,13 +100,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*fk
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -124,13 +118,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*fk
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,q,1) = SigC(p,q,1) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -155,10 +147,8 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
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)
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
kappa = exp(-2d0*eps**2*s)
|
||||
num = kappa*num
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
@ -175,13 +165,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*fk
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -196,13 +184,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*fk
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -216,13 +202,11 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*fk
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,q,2) = SigC(p,q,2) + num*eps/(eps**2 + eta**2)
|
||||
if(p == q) Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -233,4 +217,4 @@ subroutine unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aa,
|
||||
|
||||
Z(:,:) = 1d0/(1d0 - Z(:,:))
|
||||
|
||||
end subroutine unrestricted_regularized_self_energy_GF2
|
||||
end subroutine
|
@ -1,4 +1,4 @@
|
||||
subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eGF2,SigC,Z)
|
||||
subroutine UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aa,ERI_ab,ERI_bb,eHF,eGF2,SigC,Z)
|
||||
|
||||
! Perform unrestricted GF2 self-energy and its renormalization factor
|
||||
|
||||
@ -26,8 +26,8 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
integer :: i,j,a,b
|
||||
double precision :: eps,num
|
||||
|
||||
double precision :: s
|
||||
double precision :: kappa
|
||||
double precision :: fk,dfk
|
||||
|
||||
! Output variables
|
||||
|
||||
@ -44,7 +44,7 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
! Parameters for regularized calculations !
|
||||
!-----------------------------------------!
|
||||
|
||||
kappa = 1.1d0
|
||||
s = 100d0
|
||||
|
||||
!----------------!
|
||||
! Spin-up sector
|
||||
@ -61,13 +61,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*fk
|
||||
Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -81,13 +79,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*fk
|
||||
Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -102,13 +98,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*fk
|
||||
Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -122,13 +116,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,1) = SigC(p,1) + num*fk
|
||||
Z(p,1) = Z(p,1) - num*dfk
|
||||
SigC(p,1) = SigC(p,1) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,1) = Z(p,1) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -151,13 +143,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*fk
|
||||
Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -171,13 +161,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*fk
|
||||
Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -192,13 +180,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*fk
|
||||
Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -212,13 +198,11 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
|
||||
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)
|
||||
num = kappa*num
|
||||
|
||||
fk = (1d0 - exp(-kappa*abs(eps)))**2/eps
|
||||
dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps)))
|
||||
dfk = dfk*fk
|
||||
|
||||
SigC(p,2) = SigC(p,2) + num*fk
|
||||
Z(p,2) = Z(p,2) - num*dfk
|
||||
SigC(p,2) = SigC(p,2) + num*eps/(eps**2 + eta**2)
|
||||
Z(p,2) = Z(p,2) - num*(eps**2 - eta**2)/(eps**2 + eta**2)**2
|
||||
|
||||
enddo
|
||||
enddo
|
||||
@ -228,4 +212,4 @@ subroutine unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ER
|
||||
|
||||
Z(:,:) = 1d0/(1d0 - Z(:,:))
|
||||
|
||||
end subroutine unrestricted_regularized_self_energy_GF2_diag
|
||||
end subroutine
|
@ -82,7 +82,7 @@ subroutine evGF2(dophBSE,doppBSE,TDA,dBSE,dTDA,maxSCF,thresh,max_diis,singlet,tr
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call regularized_self_energy_GF2_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF,ERI,SigC,Z)
|
||||
call GF2_reg_self_energy_diag(eta,nBas,nC,nO,nV,nR,eHF,eGF,ERI,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
@ -113,7 +113,7 @@ subroutine evUGF2(maxSCF,thresh,max_diis,BSE,TDA,dBSE,dTDA,spin_conserved,spin_f
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call unrestricted_regularized_self_energy_GF2_diag(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eGF2,SigC,Z)
|
||||
call UGF2_reg_self_energy_diag(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eGF2,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
@ -147,7 +147,7 @@ subroutine qsGF2(maxSCF,thresh,max_diis,dophBSE,doppBSE,TDA,dBSE,dTDA,singlet,tr
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call regularized_self_energy_GF2(eta,nBas,nC,nO,nV,nR,eHF,eGF,ERI_MO,SigC,Z)
|
||||
call GF2_reg_self_energy(eta,nBas,nC,nO,nV,nR,eHF,eGF,ERI_MO,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
@ -180,7 +180,7 @@ subroutine qsUGF2(maxSCF,thresh,max_diis,BSE,TDA,dBSE,dTDA,spin_conserved,spin_f
|
||||
|
||||
if(regularize) then
|
||||
|
||||
call unrestricted_regularized_self_energy_GF2(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eGF2,SigC,Z)
|
||||
call UGF2_reg_self_energy(nBas,nC,nO,nV,nR,eta,ERI_aaaa,ERI_aabb,ERI_bbbb,eHF,eGF2,SigC,Z)
|
||||
|
||||
else
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user