encode_excit_info_scalar Function

private function encode_excit_info_scalar(typ, a, i, b, j) result(excit_info_int)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: typ
integer, intent(in) :: a
integer, intent(in) :: i
integer, intent(in) :: b
integer, intent(in) :: j

Return Value integer(kind=int64)


Contents


Source Code

    function encode_excit_info_scalar(typ, a, i, b, j) 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_scalar")
        integer, intent(in) :: typ, a, i, b, j
        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(a > 0 .and. a <= nSpatOrbs)
        ASSERT(i > 0 .and. i <= nSpatOrbs)
        ASSERT(b > 0 .and. b <= nSpatOrbs)
        ASSERT(j > 0 .and. j <= nSpatOrbs)

        excit_info_int = encode_excit_info_vec(typ, [a,i,b,j])

    end function encode_excit_info_scalar