logical pure function inside_bz(this, k_vec)
class(lattice), intent(in) :: this
integer, intent(in) :: k_vec(3)
! this function should also be deferred!
! i think with Kais new BZ implementation we can write this function
! generally.
! I think this should be the approach for most lattices
! do a check if we have the bz-ishness of this vector stored
if (all(k_vec <= this%kmax) .and. all(k_vec >= this%kmin)) then
inside_bz = this%bz_table(k_vec(1), k_vec(2), k_vec(3))
else
! if not, do the explicit check
inside_bz = this%inside_bz_explicit(k_vec)
end if
end function inside_bz