Integrate wraparound in Kwant
Updated description, original below:
A big limitation of Kwant is its inability to finalize systems with more than 1D translational symmetry. While the new format of low level systems #38 (closed) should resolve this issue, @cwg implemented a workaround that replaces a Builder
with a higher-dimensional translational symmetry by a `Builder where the extra symmetries are "baked in" and momenta along these directions become extra arguments to the new builder. See wraparound module for implementation details.
While this is a temporary solution, it is nonetheless relatively clean and very useful, especially in view of the introduction of template builders (!58 (merged) and !41 (merged)), and therefore it is useful to add it to Kwant. The implementation would need to be modified in order to produce wrapped functions compatible with #77 (closed) (we'd need to preserve the names of original arguments in addition to their order). Additionally, it would be good to implement a bit of linear algebra that translates from the real space momenta to lattice momenta to enable plotting unsheared band structures.
Also when implemented, this issue should change the error message returned from trying to finalize a system with >1 translational directions to suggest using wraparound. BTW we might also consider changing the name from wraparound
to something else.
*Original description:"
Currently one can only finalize system that has 1D translational symmetry. For higher dimensional translational symmetries there is Christoph's wraparound that is extremely useful. I think it would be a nice thing to have it integrate with kwant, even if this is only an temporarily solution.