subroutine initialize_lu_table(this)
implicit none
class(lattice) :: this
! first, get the dimension of the lookup tables
call this%get_lu_table_size()
call this%init_basis_vecs()
! and allocate the lookup tables accordingly
allocate(this%lu_table(this%kmin(1):this%kmax(1), this%kmin(2):this%kmax(2) &
, this%kmin(3):this%kmax(3)))
allocate(this%bz_table(this%kmin(1):this%kmax(1), this%kmin(2):this%kmax(2), &
this%kmin(3):this%kmax(3)))
! write(stdout, *) "Lookup table size is ", 2 * (this%kmax(1) - this%kmin(1) + 1) &
! * (this%kmax(2) - this%kmin(2) + 1) * 8 / 1024, " kB"
! and fill thee lookup table with the bz vectors
call this%fill_bz_table()
! now, fill the lookup table with the indices of the states
call this%fill_lu_table()
end subroutine initialize_lu_table