2020-01-29 21:15:48 +01:00
|
|
|
BEGIN_PROVIDER [double precision, mo_pseudo_integrals, (mo_num,mo_num)]
|
2019-01-25 11:39:31 +01:00
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Pseudopotential integrals in |MO| basis
|
|
|
|
END_DOC
|
|
|
|
|
2020-01-29 21:15:48 +01:00
|
|
|
if (read_mo_integrals_pseudo) then
|
|
|
|
call ezfio_get_mo_one_e_ints_mo_integrals_pseudo(mo_pseudo_integrals)
|
|
|
|
print *, 'MO pseudopotential integrals read from disk'
|
|
|
|
else if (do_pseudo) then
|
|
|
|
call ao_to_mo( &
|
|
|
|
ao_pseudo_integrals, &
|
|
|
|
size(ao_pseudo_integrals,1), &
|
|
|
|
mo_pseudo_integrals, &
|
|
|
|
size(mo_pseudo_integrals,1) &
|
|
|
|
)
|
2020-01-28 23:37:30 +01:00
|
|
|
else
|
2020-01-29 21:15:48 +01:00
|
|
|
mo_pseudo_integrals = 0.d0
|
|
|
|
endif
|
2019-01-25 11:39:31 +01:00
|
|
|
|
2020-01-29 21:15:48 +01:00
|
|
|
if (write_mo_integrals_pseudo) then
|
|
|
|
call ezfio_set_mo_one_e_ints_mo_integrals_pseudo(mo_pseudo_integrals)
|
|
|
|
print *, 'MO pseudopotential 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_pseudo_integrals_diag,(mo_num)]
|
|
|
|
implicit none
|
|
|
|
integer :: i
|
|
|
|
BEGIN_DOC
|
|
|
|
! diagonal elements of mo_pseudo_integrals or mo_pseudo_integrals_complex
|
|
|
|
END_DOC
|
|
|
|
|
|
|
|
if (is_complex) then
|
2020-03-20 20:20:04 +01:00
|
|
|
integer :: k,i_shft
|
|
|
|
PROVIDE mo_pseudo_integrals_kpts
|
|
|
|
do k=1,kpt_num
|
|
|
|
i_shft = (k-1)*mo_num_per_kpt
|
|
|
|
do i=1,mo_num_per_kpt
|
|
|
|
mo_pseudo_integrals_diag(i+i_shft) = dble(mo_pseudo_integrals_kpts(i,i,k))
|
|
|
|
enddo
|
2020-02-20 22:22:03 +01:00
|
|
|
enddo
|
|
|
|
else
|
|
|
|
PROVIDE mo_pseudo_integrals
|
|
|
|
do i=1,mo_num
|
|
|
|
mo_pseudo_integrals_diag(i) = mo_pseudo_integrals(i,i)
|
|
|
|
enddo
|
|
|
|
endif
|
|
|
|
END_PROVIDER
|
2019-01-25 11:39:31 +01:00
|
|
|
|