add_peierls_phaseon the Builder twice it will add the peierls phase twice
So a system would have to be extended and copied in order to then make add_peierls_phase, in order to then always extend against the copy. But which probably has the same performance as creating a new system.
With dask I create the systems in parallel so it's not that bad either.
qsymm.kwant. Of course we'd do it in a backwards-compatible way, i.e. if qsymm is available kwant would expose it as
The next logical step is implementing the n-dimensional vectorized systems, #316.
Right now the format already groups the Hamiltonian terms by symmetry element, so the current system format already supports ND systems. The graph attributes are right now present in all systems, those we will have to make optional and only generate if dimensionality is less than 2.
k-vector by adding extra parameters to the
paramsdictionary expected by the
syst.hamiltonian_submatrix. This effectively makes those systems work as if they are produced with wraparound.
Related to that, we could generalize
inter_cell_hopping to allow querying general inter-cell hoppings in a system by adding a new argument to it—symmetry element corresponding to the hopping. So it would have a signature
inter_cell_hopping(args=(), sparse=False, which=(1,), *, params=None) (here
params would not have the extra
This idea is by @dvarjas .
argsfrom vectorized systems.
graph, but decided to postpone this until after finalized systems are implemented.