mirror_orb Function

public function mirror_orb(in_orb, mirror_axis) result(out_orb)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: in_orb
character(len=1), intent(in) :: mirror_axis

Return Value integer


Contents

Source Code


Source Code

    function mirror_orb(in_orb, mirror_axis) result(out_orb)
        ! function to actually apply the mirroring to an orbital
        integer, intent(in) :: in_orb
        character(1), intent(in) :: mirror_axis
        integer :: out_orb
#ifdef DEBUG_
        character(*), parameter :: this_routine = "mirror_orb"
#endif
        integer :: vec(3), mir_vec(3)

        ASSERT(associated(lat))

        if (mirror_axis == '0') then
            out_orb = in_orb
            return
        end if

        if (lat%is_k_space()) then
            vec = lat%get_k_vec(in_orb)
        else
            vec = lat%get_r_vec(in_orb)
        end if

        mir_vec = mirror(vec, mirror_axis)

        out_orb = lat%get_orb_from_k_vec(mir_vec)

    end function mirror_orb