10
1
mirror of https://github.com/pfloos/quack synced 2024-12-24 21:33:45 +01:00
QuAcK/src/GW/excitation_density_SOSEX.f90

68 lines
1.4 KiB
Fortran

subroutine excitation_density_SOSEX(nBas,nC,nO,nR,nS,ERI,XpY,rho)
! Compute excitation densities for SOSEX
implicit none
include 'parameters.h'
! Input variables
integer,intent(in) :: nBas
integer,intent(in) :: nC
integer,intent(in) :: nO
integer,intent(in) :: nR
integer,intent(in) :: nS
double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas)
double precision,intent(in) :: XpY(nS,nS,nspin)
! Local variables
integer :: ispin
integer :: p,q
integer :: i,a,j,b
integer :: ia,jb
! Output variables
double precision,intent(out) :: rho(nBas,nBas,nS,nspin)
rho(:,:,:,:) = 0d0
! Singlet part
ispin = 1
do ia=1,nS
do p=nC+1,nBas-nR
do q=nC+1,nBas-nR
jb = 0
do j=nC+1,nO
do b=nO+1,nBas-nR
jb = jb + 1
rho(p,q,ia,ispin) = rho(p,q,ia,ispin) + ERI(p,j,q,b)*XpY(ia,jb,ispin)
enddo
enddo
enddo
enddo
enddo
! Triplet part
ispin = 2
do ia=1,nS
do p=nC+1,nBas-nR
do q=nC+1,nBas-nR
jb = 0
do j=nC+1,nO
do b=nO+1,nBas-nR
jb = jb + 1
rho(p,q,ia,ispin) = rho(p,q,ia,ispin) + (ERI(p,j,q,b) - ERI(p,j,b,q))*XpY(ia,jb,ispin)
enddo
enddo
enddo
enddo
enddo
end subroutine excitation_density_SOSEX