2021-02-15 17:27:06 +01:00
|
|
|
subroutine self_energy_exchange(nBas,c,P,ERI,SigX)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Compute exchange part of the self-energy
|
|
|
|
|
|
|
|
implicit none
|
|
|
|
include 'parameters.h'
|
|
|
|
|
|
|
|
! Input variables
|
|
|
|
|
|
|
|
integer,intent(in) :: nBas
|
2021-02-15 17:27:06 +01:00
|
|
|
double precision,intent(in) :: c(nBas,nBas),P(nBas,nBas),ERI(nBas,nBas,nBas,nBas)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Output variables
|
|
|
|
|
2021-02-15 17:27:06 +01:00
|
|
|
double precision,intent(out) :: SigX(nBas,nBas)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Compute exchange part of the self-energy in the AO basis
|
|
|
|
|
2021-02-15 17:27:06 +01:00
|
|
|
call exchange_matrix_AO_basis(nBas,P,ERI,SigX)
|
2019-03-19 10:13:33 +01:00
|
|
|
|
|
|
|
! Compute exchange part of the self-energy in the MO basis
|
|
|
|
|
2021-02-15 17:27:06 +01:00
|
|
|
SigX = matmul(transpose(c),matmul(SigX,c))
|
2019-03-19 10:13:33 +01:00
|
|
|
|
2023-07-28 15:00:17 +02:00
|
|
|
end subroutine
|