encode_excit_info_vec Function

private function encode_excit_info_vec(typ, inds) result(excit_info_int)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: typ
integer, intent(in) :: inds(4)

Return Value integer(kind=int64)


Contents

Source Code


Source Code

    function encode_excit_info_vec(typ, inds) result(excit_info_int)
        ! function to encode the minimal information of an excit-info
        ! object into a single 64bit integer. used in the PCHB excitation
        ! generation.
        debug_function_name("encode_excit_info_vec")
        integer, intent(in) :: typ, inds(4)
        integer(int64) :: excit_info_int

#ifdef DEBUG_
        select case(typ)
        case( excit_type%single_overlap_L_to_R)
        case( excit_type%single_overlap_R_to_L )
        case( excit_type%double_lowering )
        case( excit_type%double_raising )
        case( excit_type%double_L_to_R_to_L)
        case( excit_type%double_R_to_L_to_R )
        case( excit_type%double_L_to_R )
        case( excit_type%double_R_to_L )
        case( excit_type%fullstop_lowering )
        case( excit_type%fullstop_raising )
        case( excit_type%fullstop_L_to_R )
        case( excit_type%fullstop_R_to_L )
        case( excit_type%fullstart_lowering)
        case( excit_type%fullstart_raising)
        case( excit_type%fullstart_L_to_R)
        case( excit_type%fullstart_R_to_L)
        case( excit_type%fullstart_stop_alike)
        case( excit_type%fullstart_stop_mixed)
        case default
            print *, "incorrect typ: ", excit_names(typ)
            call stop_all(this_routine, "see above")
        end select
#endif

        ASSERT(all(inds > 0) .and. all(inds <= nSpatOrbs))

        excit_info_int = 0_int64

        call encode_excit_info_type(excit_info_int, typ)
        call encode_excit_info_indices(excit_info_int, inds)

    end function encode_excit_info_vec