Hello all,
I’m interested in simulating a tight-binding system with matrix elements beyond nearest neighbor hopping (which I’ll call extended hopping, for short).
I initially realized that the InfiniteSystem finalizer did not allow this construction when I tried to plot the band structure of an infinite lead. It is not clear to me why this restriction exists; I can see that the code in physics/dispersion.py only accounts for nearest neighbor hopping anyway (which could easily be changed), but since the error I encountered occurs in builder.py, I suspect that there’s a deeper reason for disallowing extended hopping terms.
Forging ahead, it occurred to me that I could simply enlarge the unit cell so that all of my hopping terms only extended by a single unit cell away. Unfortunately, this also has the effect of band folding (quite a lot in my case), so the dispersion plot generated by Kwant is somewhat useless for me. But that’s of little consequence, because I’m more interested in transport.
Now, since the error I encountered happens during finalization, I imagine I cannot even attach a lead with extended hopping to my finite sample. I *could* enlarge the unit cell (i.e. enlarge the translational symmetry vector) like I did for the band structure calculation, and I suspect that Kwant would happily (i.e. without runtime errors) carry out the calculation in this case.
However, I worry that my artificial restriction of the leads’ translational symmetry could have some unintended consequences in the transport calculation.
I’d appreciate any comments on the codebase or from experience that might suggest whether this is a safe manipulation to make or not. I’m also somewhat curious why this restriction exists, if anyone has insight to that.
Thanks!
Cheers,
Matthew Daniels