Out of all the features that the Kwant developers and Kwant users miss, there
are only two that require changes in the low-level structure as opposed to
extending what is there already. These are:
Higher-dimensional band structures
Speed of evaluating the system Hamiltonian or applying it to a vector
(useful for the real time evolution calculations in t-kwant).
Accordingly the main change in Kwant 2 is going to be the rewrite of the low
level system format that would allow these improvements to be made.
Here we outline the proposed new functionality, new low level system format,
and the corresponding rewrite of the Builder.
The low-level system format will support translational symmetries with multiple directions as well as any other spatial symmetries.
More system types
It will be possible to define a more general coupling between systems with different symmetries. See examples here.
Vectorized evaluation of the Hamiltonian
The low-level system will know about vectorized value functions, which take an
"array of sites" (probably implemented as a site family and an array of tags)
or a pair of such arrays and returns an array of values. This will mean that a
given value function only has to be called once.
Indexing wavefunctions by Site
wave_function and ldos should return objects which can be used like an
array, but which can also be indexed with Site objects.
The builder will need to be modified so that it supports it supports vectorized
system construction (e.g. vectorized shape functions). In addition it should
be in a format that is easy to finalize to the new low-level format.
Another page here will hold the specification for the new builder.
The low-level system format is rather involved, and so is described in a
separate document, here. Roughly, instead of having
a single graph with values associated with each node/edge, in Kwant-2 there
will be multiple graphs, one for each set of site families, values, and
symmetry group elements represented in the system. This will allow for
efficient building of the Hamiltonian.
The isolated systems are useful mostly for analysis of band structure, spectrum, density of states, and any kind of basic properties. Kwant 2 should allow defining various interfaces between systems with higher symmetry and lower symmetry. The main feature of Kwant 1, a scattering region with 1D leads is the most commonly used and the simplest example of such an interface.