Hello,
I want to create a graphene-like system with periodic BC at transverse
direction. I'm following
the discussion at
https://www.mail-archive.com/kwant-discuss@kwant-project.org/msg00036.html.
For nearest-neighbor hopping, it works. There is hopping between the upper
and lower side.
But when I add NNN hopping using:
A,B=graphene.sublattices
sys[A.neighbors()]=hopp_qsvh
sys[B.neighbors()]=hopp_qsvh
The NNN hopping doesn't exist between the upper and lower side.
Is there any way to solve it?
Thank you,
Yuhao
Attached is the code:
import numpy as np
import kwant
X,Y = 4, 4
s0=np.identity(2)
sz=np.array([[1,0],[0,-1]])
graphene = kwant.lattice.honeycomb(1,'b')
A,B=graphene.sublattices
def rectangle(pos):
x, y = pos
return -X/2 < x < X/2
def onsite_qsvh(site):
x,y=site.pos
if y<0:
onsite_a = .4*s0
onsite_b = -.4*s0
return onsite_a if site.family == A else onsite_b
else:
return np.zeros([2,2])
def hopp_qsvh(site1,site2):
x1,y1=site1.pos
x2,y2=site2.pos
hop_a = .4*1j*sz
hop_b = -.4*1j*sz
if (y1+0.1)*(y2+0.1)>0 and y1+0.1>0:
return hop_a if site1.family == A else hop_b
else:
return np.zeros([2,2])
sym = kwant.TranslationalSymmetry(graphene.vec((-Y/2,Y)))
anc = kwant.Builder(sym)
anc[graphene.shape(rectangle,(0, 0))] = None
anc[graphene.neighbors()] = None
sys = kwant.Builder()
sys[anc.sites()] = onsite_qsvh
sys[((a, sym.to_fd(b)) for a, b in anc.hoppings())] = -s0
sys[A.neighbors()]=hopp_qsvh
sys[B.neighbors()]=hopp_qsvh
sys = sys.finalized()
kwant.plot(sys,fig_size=(20, 10))