Dear professionals,
I am a beginner and I have encountered a problem with my Kane-Mele 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
import cmath
from matplotlib import pyplot
# Pauli matrices
s0 = np.identity(2)
sz = np.diag([1, -1])
graphene = kwant.lattice.honeycomb()
a, b = graphene.sublattices
nnn_hoppings_a = (((-1, 0), a, a), ((0, 1), a, a), ((1, -1), a, a))
nnn_hoppings_b = (((1, 0), b, b), ((0, -1), b, b), ((-1, 1), b, b))
nnn_hoppings = nnn_hoppings_a + nnn_hoppings_b
W=10
M=0
t1=1
t2=-0.06
phi=np.pi/2
spin_orbit = 1j *t2*cmath.exp(1j*phi)* sz
def graphene_shape(pos):
x, y = pos
return (0<y<W)
def onsite(site):
return s0 * M
bulk_kane_mele = kwant.Builder(kwant.TranslationalSymmetry([1, 0]))
bulk_kane_mele[graphene.shape(graphene_shape, (0, 0))] = onsite
bulk_kane_mele[graphene.neighbors(1)] = s0*t1
bulk_kane_mele[[kwant.builder.HoppingKind(*hopping) for hopping in
nnn_hoppings]] = spin_orbit
syst = bulk_kane_mele.finalized()
bands = kwant.physics.Bands(syst)
j=np.linspace(0, 6, 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()