subroutine setupMomIndexTable() implicit none integer :: li(3), i, kx, ky, kz, s ! fill the table containing the index of a given momentum ! such that knowing q allows for direct lookup of the matrix element do i = 1, 3 li(i) = nBasisMax(i, 2) - nBasisMax(i, 1) + 1 end do allocate(momIndexTable(li(1), li(2), li(3), 2), stat=i) do s = 1, 2 do kz = 1, li(3) do ky = 1, li(2) do kx = 1, li(1) momIndexTable(kx, ky, kz, s) = kx + (ky - 1) * li(1) + & (kz - 1) * li(1) * li(2) + (s - 1) * li(1) * li(2) * li(3) end do end do end do end do end subroutine setupMomIndexTable