
Dear Christoph, Maybe it is not exactly what you had in mind, but I use the low-level system interface to average a wavefunction over a site and its neigbors. This requires the functions syst.graph.num_nodes and syst.graph.out_neighbors, both of which are also used in plotter.py, to iterate over all sites within the graph and to directly access the neighbors of any given site. It seems to me that it should be rather easy to use similar functions within a new system interface (if anything will change for them at all), but I might be wrong there. I hope that this information is helpful to you. Best regards, Koen Reijnders On 01/04/16 18:07, Christoph Groth wrote:
Dear all,
With Kwant, we strive to keep backwards compatibility across major versions: a script that only uses the documented API and works with Kwant 1.x should continue to work unchanged with Kwant 1.y, for any y
= x.
Still, we have a bunch of ideas that require breaking strict compatibility. That’s why they have been going under “Kwant 2”:
• A new low-level system format that supports more general symmetries and vectorization of value functions.
• Composite systems that combine systems with various degrees of commensurate symmetries in a general way. (That’s a generalization of quasi-1-d leads attached to quasi-0-d scattering regions that we have now.)
• Various small changes and fixes to the interface.
These things pull in other changes (e.g. in the solvers) which means that “Kwant 2” is quite a big project.
Recently, I asked myself whether we really have to interpret backwards compatibility in such a strict way. Perhaps a better way would be “if it does not hurt >98% of the users, it’s OK to change things in a backwards-incompatible (but well documented) way”.
I believe that there is virtually no one who uses the low level system interface [1] directly in non-trivial ways (e.g. doing something with system.graph and not just calling system.hamiltonian_submatrix() for a finite system). Is this actually true? Can people who do things with low-level systems directly please chime in and tell us what their most involved usage cases are?
If it turns out that a weak interpretation of backwards compatibility is indeed OK, we could tackle the new low-level system format already for Kwant 1.3. This would make the development of Kwant more evolutionary and should make it more dynamic.
What do you think?
Christoph