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()

##################################################################

Reply via email to