10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-06-01 19:05:29 +02:00
QuantumPackage/src/tc_bi_ortho/drpa_matrix.irp.f
2023-10-28 21:53:04 +02:00

117 lines
2.0 KiB
Fortran

BEGIN_PROVIDER [double precision, M_RPA, (2*nS_exc, 2*nS_exc)]
BEGIN_DOC
!
! full matrix for direct RPA calculation
! with the TC-Hamiltonian
!
END_DOC
implicit none
integer :: ia, i, a, jb, j, b
double precision :: e(mo_num)
double precision, external :: Kronecker_delta
PROVIDE mo_tc_effec2e_int
PROVIDE Fock_matrix_tc_diag_mo_tot
e(1:mo_num) = Fock_matrix_tc_diag_mo_tot(1:mo_num)
! --- --- ---
! block A
ia = 0
do i = nC_orb+1, nO_orb
do a = nO_orb+1, mo_num-nR_orb
ia = ia + 1
jb = 0
do j = nC_orb+1, nO_orb
do b = nO_orb+1, mo_num-nR_orb
jb = jb + 1
M_RPA(ia,jb) = (e(a) - e(i)) * Kronecker_delta(i,j) * Kronecker_delta(a,b) + 2.d0 * mo_tc_effec2e_int(a,j,i,b)
enddo
enddo
enddo
enddo
!
! --- --- ---
! --- --- ---
! block B
ia = 0
do i = nC_orb+1, nO_orb
do a = nO_orb+1, mo_num-nR_orb
ia = ia + 1
jb = nS_exc
do j = nC_orb+1, nO_orb
do b = nO_orb+1, mo_num-nR_orb
jb = jb + 1
M_RPA(ia,jb) = 2.d0 * mo_tc_effec2e_int(a,b,i,j)
enddo
enddo
enddo
enddo
!
! --- --- ---
! --- --- ---
! block C
ia = nS_exc
do i = nC_orb+1, nO_orb
do a = nO_orb+1, mo_num-nR_orb
ia = ia + 1
jb = 0
do j = nC_orb+1, nO_orb
do b = nO_orb+1, mo_num-nR_orb
jb = jb + 1
M_RPA(ia,jb) = 2.d0 * mo_tc_effec2e_int(i,j,a,b)
enddo
enddo
enddo
enddo
!
! --- --- ---
! --- --- ---
! block D
ia = nS_exc
do i = nC_orb+1, nO_orb
do a = nO_orb+1, mo_num-nR_orb
ia = ia + 1
jb = nS_exc
do j = nC_orb+1, nO_orb
do b = nO_orb+1, mo_num-nR_orb
jb = jb + 1
M_RPA(ia,jb) = (e(a) - e(i)) * Kronecker_delta(i,j) * Kronecker_delta(a,b) + 2.d0 * mo_tc_effec2e_int(i,b,a,j)
enddo
enddo
enddo
enddo
!
! --- --- ---
END_PROVIDER