9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 14:03:37 +01:00
qp2/src/mo_one_e_ints/mo_one_e_ints.irp.f
2020-06-16 10:38:27 -05:00

47 lines
1.3 KiB
Fortran

BEGIN_PROVIDER [ double precision, mo_one_e_integrals,(mo_num,mo_num)]
implicit none
integer :: i,j,n,l
BEGIN_DOC
! array of the one-electron Hamiltonian on the |MO| basis :
! sum of the kinetic and nuclear electronic potentials (and pseudo potential if needed)
END_DOC
print*,'Providing the one-electron integrals'
IF (read_mo_one_e_integrals) THEN
call ezfio_get_mo_one_e_ints_mo_one_e_integrals(mo_one_e_integrals)
ELSE
mo_one_e_integrals = mo_integrals_n_e + mo_kinetic_integrals
ENDIF
IF (write_mo_one_e_integrals) THEN
call ezfio_set_mo_one_e_ints_mo_one_e_integrals(mo_one_e_integrals)
print *, 'MO one-e integrals written to disk'
ENDIF
END_PROVIDER
BEGIN_PROVIDER [ double precision, mo_one_e_integrals_diag,(mo_num)]
implicit none
integer :: i
BEGIN_DOC
! diagonal elements of mo_one_e_integrals or mo_one_e_integrals_complex
END_DOC
if (is_complex) then
integer :: k,i_shft
PROVIDE mo_one_e_integrals_kpts
do k=1,kpt_num
i_shft = (k-1)*mo_num_per_kpt
do i=1,mo_num_per_kpt
mo_one_e_integrals_diag(i+i_shft) = dble(mo_one_e_integrals_kpts(i,i,k))
enddo
enddo
else
PROVIDE mo_one_e_integrals
do i=1,mo_num
mo_one_e_integrals_diag(i) = mo_one_e_integrals(i,i)
enddo
endif
END_PROVIDER