gen_ab_cum_list_ueg Subroutine

private subroutine gen_ab_cum_list_ueg(ilut, csf_i, occ_orbs, cum_arr, excit_arr, orb_arr)

Arguments

Type IntentOptional Attributes Name
integer(kind=n_int), intent(in) :: ilut(0:nifguga)
type(CSF_Info_t), intent(in) :: csf_i
integer, intent(in) :: occ_orbs(2)
real(kind=dp), intent(out) :: cum_arr(nSpatOrbs)
type(ExcitationInformation_t), intent(out) :: excit_arr(nBasis)
integer, intent(out) :: orb_arr(nSpatOrbs)

Contents

Source Code


Source Code

    subroutine gen_ab_cum_list_ueg(ilut, csf_i, occ_orbs, cum_arr, excit_arr, orb_arr)
        ! create the cummulative probability array for (ab) orbital pairs
        ! in the hubbard/UEG case with k-point symmetry
        integer(n_int), intent(in) :: ilut(0:nifguga)
        type(CSF_Info_t), intent(in) :: csf_i
        integer, intent(in) :: occ_orbs(2)
        real(dp), intent(out) :: cum_arr(nSpatOrbs)
        integer, intent(out) :: orb_arr(nSpatOrbs)
        type(ExcitationInformation_t), intent(out) :: excit_arr(nBasis)

        ! determine the GUGA restrictions:
        if (is_in_pair(occ_orbs(1), occ_orbs(2))) then
            call gen_ab_cum_list_3(csf_i, occ_orbs, cum_arr, excit_arr, orb_arr)

        else
            ! determine the different types
            ! actually, due to ki + kj = ka + kb k-point symmetry the
            ! 3 3, 3 1, and 1 3 cases are actually the same!
            ! and no pesky full-stop mixed or full-start mixed are allowed in
            ! the hubbard model!
            ! not sure about this assumption above anymore! have to check that!
            if ((.not. IsDoub(ilut, occ_orbs(1))) .and. (.not. IsDoub(ilut, occ_orbs(2)))) then
                call gen_ab_cum_list_1_1(csf_i, occ_orbs, cum_arr, excit_arr, orb_arr)

            else
                call gen_ab_cum_list_3_3(csf_i, occ_orbs, cum_arr, excit_arr, orb_arr)

            end if
        end if

    end subroutine gen_ab_cum_list_ueg