2020-06-22 17:51:33 +02:00
|
|
|
!BEGIN_PROVIDER [ integer, ao_num_per_kpt ]
|
|
|
|
! implicit none
|
|
|
|
! BEGIN_DOC
|
|
|
|
! ! number of aos per kpt.
|
|
|
|
! END_DOC
|
|
|
|
! ao_num_per_kpt = ao_num/kpt_num
|
|
|
|
!END_PROVIDER
|
2020-07-13 17:52:09 +02:00
|
|
|
|
|
|
|
subroutine get_kpt_idx_ao(idx_full,k,i)
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! idx_full is ao index in full range (up to ao_num)
|
|
|
|
! k is index of the k-point for this ao
|
|
|
|
! i is index of this ao within k-point k
|
|
|
|
! this assumes that all kpts have the same number of aos
|
|
|
|
END_DOC
|
|
|
|
|
|
|
|
integer, intent(in) :: idx_full
|
|
|
|
integer, intent(out) :: i,k
|
|
|
|
i = mod(idx_full-1,ao_num_per_kpt)+1
|
|
|
|
k = (idx_full-1)/ao_num_per_kpt+1
|
|
|
|
ASSERT (k <= kpt_num)
|
|
|
|
end
|