I know that the band diagram for the SSH can be easily obtained
analytically, but I was wondering how one would go about it using
kwant.
If I understand correctly we require a translational symmetry
such as to have an infinite lattice, so I defined a lead and tried
to get the band structure from there. Unfortunately my code does
not work and stops with a TypeError:
Expecting an instance of SiteFamily. I thought that I implemented
the hopping similar to the one from the graphene tutorial.
Furthermore, I am wondering whether the definition of the lattice
correct actually? To me it seems that the lattice vector [1,0]
leaves us on the site of the b-sublattice. If I change it to [2,0]
however I get a commensurate error
The code that I have so far is below.
Thank you,
Steffen
import numpy as np
import kwant
t = 1
SSH = kwant.lattice.general([[1, 0]], # lattice vectors
[[0,0], [1,0]]) # Coordinates of
the sites)
a,b = SSH.sublattices
SSH_lead = kwant.Builder(kwant.TranslationalSymmetry([-1, 0]))
SSH_lead[a.shape((lambda pos: abs(pos[0]) == 0), (0, 0))] = 1
SSH_lead[b.shape((lambda pos: abs(pos[0]) == 1), (0, 0))] = 1
LongBond = (((1, 0), a, b))
ShortBond = (((-1, 0), a, b))
SSH_lead[[kwant.builder.HoppingKind(*hopping) for hopping in
LongBond]] = 2
SSH_lead[[kwant.builder.HoppingKind(*hopping) for hopping in
ShortBond]] = 1
kwant.plot(SSH_lead)
kwant.plotter.bands(SSH_lead.finalized())