gen_cum_list_real_hub_3 Subroutine

private subroutine gen_cum_list_real_hub_3(csf_i, orb_i, cum_arr)

Arguments

Type IntentOptional Attributes Name
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: orb_i
real(kind=dp), intent(out) :: cum_arr(nSpatOrbs)

Contents


Source Code

    subroutine gen_cum_list_real_hub_3(csf_i, orb_i, cum_arr)
        type(CSF_Info_t), intent(in) :: csf_i
        integer, intent(in) :: orb_i
        real(dp), intent(out) :: cum_arr(nSpatOrbs)

        real(dp) :: cum_sum
        integer :: i
        ! no real restrictions here..
        ! notice change to similar molecular routines: here the input is
        ! already in spatial orbitals!

        cum_sum = 0.0_dp

        do i = 1, nSpatOrbs

            ! actually this case is also excluded already since i know it
            ! is d(i) = 3..

            ! actually the matrix element is also always the same ...
            ! i dont actually need this weighting here..

            ! actually i only need to cycle if the stepvector is 3 otherwise
            ! just give it the same pgen increment
            ! no wait a minute.. i know the matrix element.. or?
            ! i have and should check if those are connected through a
            ! hopping possibility.. otherwise it would not make much sense..
            ! but remember: only spin-parallel hops allowed: so access TMAT
            ! always with the same spin-orbital index
            if (csf_i%stepvector(i) == 3) then
                cum_arr(i) = cum_sum
            else
                cum_sum = cum_sum + abs(GetTMatEl(2 * orb_i, 2 * i))
                cum_arr(i) = cum_sum
            end if
        end do

    end subroutine gen_cum_list_real_hub_3