About leads for transmission calculation
hello everyone, I am calculating transmission using smatrix.transmission() function .my system has four leads in a square lattice structure.Please tell me about the matrix entries in this function.like smatrix.transmission(1,2) and smatrix.transmission(2,1) are showing differrent spectrum.How this transmission function is reading these lead numbers.My code is this: # -*- coding: utf-8 -*- # <nbformat>3.0</nbformat> # <codecell> import kwant from matplotlib import pyplot from cmath import exp import numpy as np # <codecell> def hopping(sitei, sitej, phi, salt): xi, yi = sitei.pos xj, yj = sitej.pos return exp (-0.5j*phi*(xi-xj)*(yi + yj)) a=1 lat =kwant.lattice.square(a) def make(a=60,b=20,t=1): def square(pos): x,y =pos return 0<=x<=a and 0<=y<=b #def hop(sit1,site2,B=1): #y = sit1.pos[1] #print y #return -t * exp(-1j * B * y) sys = kwant.Builder() sys[lat.shape(square,(0,0))] = 4*t #sys[kwant.builder.HoppingKind((1,0),lat,lat)] = hopping #sys[kwant.builder.HoppingKind((0,1),lat,lat)] = -t sys[lat.neighbors()] = hopping #del sys[lat(12,9)] sym1 = kwant.lattice.TranslationalSymmetry(lat.vec((0,1))) def shape1(pos): x,y = pos return 0<=x<=a lead0 = kwant.Builder(sym1) lead0[lat.shape(shape1,(0,0))] = 4*t lead0[lat.neighbors()] = hopping sys.attach_lead(lead0) sys.attach_lead(lead0.reversed()) sym0 = kwant.lattice.TranslationalSymmetry(lat.vec((-1, 0))) def shape(pos): x,y = pos return 0<=y<=b lead1 = kwant.Builder(sym0) lead1[lat.shape(shape,(0,0))] = 4*t lead1[lat.neighbors()] = hopping sys.attach_lead(lead1) sys.attach_lead(lead1.reversed()) return sys.finalized() energy = .16 def plot_condu(sys,phis): data = [] for phi in 1/phis: print phi smatrix = kwant.smatrix(sys, energy,args=[phi, ""]) data.append(smatrix.transmission(2,1)) pyplot.figure() pyplot.plot(phis,data) pyplot.show() # <codecell> def main(): sys = make() #kwant.plot(sys) plot_condu(sys ,phis = np.linspace(1,100,100)) # <codecell> if __name__ == '__main__': main() # <codecell>
Dear Anant, The matrix of transmittances is not symmetric in absence of time reversal symmetry (so in finite magnetic field). Best, Anton On Mon, Dec 1, 2014 at 12:25 PM, ANANT <avterminator@gmail.com> wrote:
hello everyone, I am calculating transmission using smatrix.transmission() function .my system has four leads in a square lattice structure.Please tell me about the matrix entries in this function.like smatrix.transmission(1,2) and smatrix.transmission(2,1) are showing differrent spectrum.How this transmission function is reading these lead numbers.My code is this:
# -*- coding: utf-8 -*- # <nbformat>3.0</nbformat>
# <codecell>
import kwant from matplotlib import pyplot from cmath import exp import numpy as np
# <codecell>
def hopping(sitei, sitej, phi, salt): xi, yi = sitei.pos xj, yj = sitej.pos return exp (-0.5j*phi*(xi-xj)*(yi + yj))
a=1 lat =kwant.lattice.square(a) def make(a=60,b=20,t=1): def square(pos): x,y =pos return 0<=x<=a and 0<=y<=b #def hop(sit1,site2,B=1): #y = sit1.pos[1] #print y #return -t * exp(-1j * B * y) sys = kwant.Builder() sys[lat.shape(square,(0,0))] = 4*t #sys[kwant.builder.HoppingKind((1,0),lat,lat)] = hopping #sys[kwant.builder.HoppingKind((0,1),lat,lat)] = -t sys[lat.neighbors()] = hopping #del sys[lat(12,9)] sym1 = kwant.lattice.TranslationalSymmetry(lat.vec((0,1))) def shape1(pos): x,y = pos return 0<=x<=a lead0 = kwant.Builder(sym1) lead0[lat.shape(shape1,(0,0))] = 4*t lead0[lat.neighbors()] = hopping sys.attach_lead(lead0) sys.attach_lead(lead0.reversed()) sym0 = kwant.lattice.TranslationalSymmetry(lat.vec((-1, 0))) def shape(pos): x,y = pos return 0<=y<=b lead1 = kwant.Builder(sym0) lead1[lat.shape(shape,(0,0))] = 4*t lead1[lat.neighbors()] = hopping sys.attach_lead(lead1) sys.attach_lead(lead1.reversed()) return sys.finalized() energy = .16 def plot_condu(sys,phis): data = [] for phi in 1/phis: print phi smatrix = kwant.smatrix(sys, energy,args=[phi, ""]) data.append(smatrix.transmission(2,1)) pyplot.figure() pyplot.plot(phis,data) pyplot.show()
# <codecell>
def main(): sys = make() #kwant.plot(sys) plot_condu(sys ,phis = np.linspace(1,100,100))
# <codecell> if __name__ == '__main__': main()
# <codecell>
participants (2)
-
ANANT
-
Anton Akhmerov