mirror of
https://github.com/pfloos/quack
synced 2024-11-03 12:43:48 +01:00
GW_ImSigC.f90
This commit is contained in:
parent
a1286af824
commit
7f4268a185
52
src/GW/GW_ImSigC.f90
Normal file
52
src/GW/GW_ImSigC.f90
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
double precision function GW_ImSigC(p,w,eta,nBas,nC,nO,nV,nR,nS,e,Om,rho)
|
||||||
|
|
||||||
|
! Compute diagonal of the correlation part of the self-energy
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
include 'parameters.h'
|
||||||
|
|
||||||
|
! Input variables
|
||||||
|
|
||||||
|
integer,intent(in) :: p
|
||||||
|
double precision,intent(in) :: w
|
||||||
|
double precision,intent(in) :: eta
|
||||||
|
integer,intent(in) :: nBas
|
||||||
|
integer,intent(in) :: nC
|
||||||
|
integer,intent(in) :: nO
|
||||||
|
integer,intent(in) :: nV
|
||||||
|
integer,intent(in) :: nR
|
||||||
|
integer,intent(in) :: nS
|
||||||
|
double precision,intent(in) :: e(nBas)
|
||||||
|
double precision,intent(in) :: Om(nS)
|
||||||
|
double precision,intent(in) :: rho(nBas,nBas,nS)
|
||||||
|
|
||||||
|
! Local variables
|
||||||
|
|
||||||
|
integer :: i,a,m
|
||||||
|
double precision :: num,eps
|
||||||
|
|
||||||
|
! Initialize
|
||||||
|
|
||||||
|
GW_ImSigC = 0d0
|
||||||
|
|
||||||
|
! Occupied part of the correlation self-energy
|
||||||
|
|
||||||
|
do i=nC+1,nO
|
||||||
|
do m=1,nS
|
||||||
|
eps = w - e(i) + Om(m)
|
||||||
|
num = 2d0*rho(p,i,m)**2
|
||||||
|
GW_ImSigC = GW_ImSigC + num*eta/(eps**2 + eta**2)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
! Virtual part of the correlation self-energy
|
||||||
|
|
||||||
|
do a=nO+1,nBas-nR
|
||||||
|
do m=1,nS
|
||||||
|
eps = w - e(a) - Om(m)
|
||||||
|
num = 2d0*rho(p,a,m)**2
|
||||||
|
GW_ImSigC = GW_ImSigC - num*eta/(eps**2 + eta**2)
|
||||||
|
end do
|
||||||
|
end do
|
||||||
|
|
||||||
|
end function
|
@ -120,6 +120,12 @@ subroutine GW_phBSE(dophBSE2,TDA_W,TDA,dBSE,dTDA,singlet,triplet,eta,nBas,nC,nO,
|
|||||||
call print_excitation_energies('phBSE@GW@RHF','singlet',nS,OmBSE)
|
call print_excitation_energies('phBSE@GW@RHF','singlet',nS,OmBSE)
|
||||||
call phLR_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,OmBSE,XpY_BSE,XmY_BSE)
|
call phLR_transition_vectors(.true.,nBas,nC,nO,nV,nR,nS,dipole_int,OmBSE,XpY_BSE,XmY_BSE)
|
||||||
|
|
||||||
|
!--------------------!
|
||||||
|
! Cumulant expansion !
|
||||||
|
!--------------------!
|
||||||
|
|
||||||
|
call RGWC(.false.,nBas,nC,nO,nR,nS,OmBSE,rho_RPA,eGW)
|
||||||
|
|
||||||
!----------------------------------------------------!
|
!----------------------------------------------------!
|
||||||
! Compute the dynamical screening at the phBSE level !
|
! Compute the dynamical screening at the phBSE level !
|
||||||
!----------------------------------------------------!
|
!----------------------------------------------------!
|
||||||
|
Loading…
Reference in New Issue
Block a user