check_orbital_location Function

public function check_orbital_location(src, ic, part_type) result(loc)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: src(2)
integer, intent(in) :: ic
integer, intent(in) :: part_type

Return Value integer


Contents


Source Code

    function check_orbital_location(src, ic, part_type) result(loc)
        ! same function as above, but checks if a picked orbital is in the
        ! virtual space of the reference determinant
        integer, intent(in) :: src(2), ic, part_type
        integer :: loc
        character(*), parameter :: this_routine = "check_orbital_location"

        integer :: i

        ! the output:
        ! 0 ... both holes are in the occupied space of the reference
        ! 1 ... the holes are mixed in the occupied and virtual space
        ! 2 ... both holes are in the virtual space of the reference

        if (ic == 1) then
            if (is_in_virt_mask(src(1), part_type)) then
                loc = 2
            else
                loc = 0
            end if
        else if (ic == 2) then
            loc = 0
            do i = 1, 2
                if (is_in_virt_mask(src(i), part_type)) then
                    loc = loc + 1
                end if
            end do
        end if
        ASSERT(loc >= 0)
        ASSERT(loc <= 2)

    end function check_orbital_location