For tiny samples and nr_processors > 1 tipsi can become unresponsive. For ~1e9 hops and nr_processors > 1 we get mp.Pipe integer overflow.
Check hopping matrix row/col ordering (also in fortran). Are the hopping matrix indices ordered correctly? Do we need to use csc_matrix instead?
Rescale value finding is quite slow.
Adding a magnetic field is quite slow.
All the momentum based functions could be moved to a new file (hop_dict_ft, interpolate_k_points, band_structure), as this has nothing to do with building a sample.