Dear Naveen,
if you want to use a 2d system to represent local properties of a 3d system,
the former shouldn’t be considered as a physical system. Therefore, its onsite
and hopping values are not relevant and shouldn’t alter your calculations in
any sens. Even attaching leads for the 2d system may not be necessary.
However, you have to be sure that the 2d system represents well the 2d plane of
the underlying 3d geometry. This would concern mainly the number of sites and
links.
You may have a look to the illustration below.
Happy kwanting,
Ousmane,
############################################################
import kwant
def make_3d(L=5,W=5,H=5):
# make a 3d system
sys=kwant.Builder()
lat=kwant.lattice.cubic(norbs=1)
sys[(lat(x,y,z) for x in range(L) for y in range(W) for z in
range(H))]=0
sys[lat.neighbors()]=-1
lead=kwant.Builder(kwant.TranslationalSymmetry((-1,0,0)))
lead[(lat(0,y,z) for y in range(W) for z in range(H))] = -1
lead[lat.neighbors()]=-1
sys.attach_lead(lead)
return sys.finalized()
def make_2d(W=5,H=5):
# make an auxiliary 2d system
sys=kwant.Builder()
lat=kwant.lattice.square()
sys[(lat(y,z) for y in range(W) for z in range(H) )]= " "
sys[lat.neighbors()]= " "
return sys.finalized()
def main():
# calculate the current at a given (y,z) plane
given_x=0 # e.g
def where(site1,site2):
return site1.pos[0]==given_x and site2.pos[0]==given_x
psi=kwant.wave_function(make_3d(),energy=0)(0)[0] # lowest mode of lead 0
current=kwant.operator.Current(make_3d(), where=where)(psi)
# plot the current using the auxiliary 2d system
kwant.plotter.current(make_2d(), current)
if __name__=='__main__':
main()
##################################################################