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