3D Current Density
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() ##################################################################
Thank you for the clarification. Best Regards Naveen Yadav Research Scholar Department of Physics & Astrophysics University of Delhi New Delhi-110007 On Wed, Mar 25, 2020, 18:50 Ousmane LY <ousmanebouneoumar@gmail.com> wrote:
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()
##################################################################
participants (2)
-
Naveen Yadav
-
Ousmane LY