Dear professionals, I am a beginner and I have encountered a problem with my
Haldane model. The band structure I obtained with this parameter is different
from the ones obtained by others. I am not sure where the error lies and I
would appreciate it if you could help me look into it. Thank you for your time
and assistance. I am looking forward to hearing from you.
my codes are as follows:
import kwant
import numpy as np
from math import pi, sqrt, tanh
from matplotlib import pyplot
#HIDDEN_BEGIN_makesyst
Haldane = kwant.lattice.honeycomb()
a, b = Haldane.sublattices
L=10
W=20
M=2/3
t=1
t2=1/3
phi=np.pi/4
def rec(pos):
x, y = pos
return 0<=x<=L and 0<=y<=W
syst = kwant.Builder()
syst[Haldane.shape(rec, (0, 0))] = M
syst[Haldane.neighbors()] = t
# add second neighbours hoppings
syst[Haldane.a.neighbors()] = t2*np.exp(1j*phi)
syst[Haldane.b.neighbors()] = t2*np.exp(-1j*phi)
syst.eradicate_dangling()
sym0 = kwant.TranslationalSymmetry(Haldane.vec((-1, 0)))
def lead0_shape(pos):
x, y = pos
return (0<y<W)
sym0.add_site_family(Haldane.sublattices[0] , other_vectors=[(1,-2)])
sym0.add_site_family(Haldane.sublattices[1] , other_vectors=[(1,-2)])
lead0 = kwant.Builder(sym0)
lead0[Haldane.shape(lead0_shape, (0, 0))] = M
lead0[Haldane.neighbors()] = t
# add second neighbours hoppings
lead0[Haldane.a.neighbors()] = t2*np.exp(-1j*phi)
lead0[Haldane.b.neighbors()] = t2*np.exp(1j*phi)
lead0.eradicate_dangling()
syst.attach_lead(lead0)
syst.attach_lead(lead0.reversed())
#kwant.plot(syst)
syst = syst.finalized()
bands = kwant.physics.Bands(syst.leads[0])
j=np.linspace(0, 5, 101)
energies = [bands(k) for k in j]
pyplot.figure()
pyplot.plot(j, energies)
pyplot.xlabel("momentum [(lattice constant)^-1]")
pyplot.ylabel("energy [t]")
pyplot.show()