10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-07-17 00:20:41 +02:00
QuantumPackage/src/mo_one_e_ints/kin_mo_ints.irp.f

48 lines
1.5 KiB
Fortran
Raw Normal View History

2020-01-29 21:15:48 +01:00
BEGIN_PROVIDER [double precision, mo_kinetic_integrals, (mo_num,mo_num)]
2019-01-25 11:39:31 +01:00
implicit none
BEGIN_DOC
! Kinetic energy integrals in the MO basis
END_DOC
2020-01-29 21:15:48 +01:00
if (read_mo_integrals_kinetic) then
call ezfio_get_mo_one_e_ints_mo_integrals_kinetic(mo_kinetic_integrals)
print *, 'MO kinetic integrals read from disk'
2019-01-25 11:39:31 +01:00
else
2020-01-29 21:15:48 +01:00
call ao_to_mo( &
ao_kinetic_integrals, &
size(ao_kinetic_integrals,1), &
mo_kinetic_integrals, &
size(mo_kinetic_integrals,1) &
)
endif
if (write_mo_integrals_kinetic) then
call ezfio_set_mo_one_e_ints_mo_integrals_kinetic(mo_kinetic_integrals)
print *, 'MO kinetic integrals written to disk'
2019-01-25 11:39:31 +01:00
endif
END_PROVIDER
2020-02-20 22:22:03 +01:00
BEGIN_PROVIDER [ double precision, mo_kinetic_integrals_diag,(mo_num)]
implicit none
integer :: i
BEGIN_DOC
! diagonal elements of mo_kinetic_integrals or mo_kinetic_integrals_complex
END_DOC
if (is_complex) then
2020-03-20 20:20:04 +01:00
integer :: k,i_shft
PROVIDE mo_kinetic_integrals_kpts
do k=1,kpt_num
i_shft = (k-1)*mo_num_per_kpt
do i=1,mo_num_per_kpt
mo_kinetic_integrals_diag(i+i_shft) = dble(mo_kinetic_integrals_kpts(i,i,k))
enddo
2020-02-20 22:22:03 +01:00
enddo
else
PROVIDE mo_kinetic_integrals
do i=1,mo_num
mo_kinetic_integrals_diag(i) = mo_kinetic_integrals(i,i)
enddo
endif
END_PROVIDER