Hi all,

I am working on trying to create a system where there is a lead which wraps 
around the edge of a sample.


For example, I have included a code which generates a square scattering region 
with two contacts, one extending vertically and the other extending 
horizontally.  What I would like to do is combine these two contacts into a 
single contact, so this might represent a system where there is a contact that 
has been etched surrounding a central region.


I think that the way to approach this would be to generate one wide contact, 
whose width is equal to the combined with of the contacts in my code (40 in my 
example). This contact would then be attached to the channel and its interface 
would be wrapped around the channel. Unfortunately, I am at a bit of a loss as 
to how I would code this.


My main reason for wanting to do this rather than treat the problem with two 
separate leads is that the modes are going to be different between the two. 
Ultimately, it would be nice to be able to do this in a way that wraps the lead 
completely around the outer edge of the channel to simulate some sort of open 
boundary condition. Additionally, it would be nice to do something similar with 
a hole in the middle of the scattering region, to construct a Corbino disk.


If anyone as any advice, I would love to hear it!


Thanks,


Sam LaGasse


Here is the code:


import kwant
import matplotlib.pyplot as plt

lat = kwant.lattice.square(a=1)

s = 20.0
t = 1
def square(pos):
    x, y = pos
    return x <= s/2 and x >= -s/2 and y <= s/2 and y >= -s/2

y_min = -10.
y_max = +10.

x_min = -10.
x_max = +10.

def y_contact(pos):
    x, y = pos
    return x >= y_min and x <= y_max
def x_contact(pos):
    x, y = pos
    return y >= y_min and y <= y_max

sys = kwant.Builder()
sys[lat.shape(square, (0,0))] = 4*t
sys[lat.neighbors()] = -t

sym0 = kwant.TranslationalSymmetry((-1,0))
sym_down = kwant.TranslationalSymmetry((0,1))

lead0 = kwant.Builder(sym_down)
lead0[lat.shape(y_contact, (0, 0))] = 0
lead0[lat.neighbors()] = -t

lead1 = kwant.Builder(sym0)
lead1[lat.shape(x_contact, (0, 0))] = 0
lead1[lat.neighbors()] = -t

sys.attach_lead(lead0) # top
sys.attach_lead(lead1) # left
kwant.plot(sys)
plt.show()

Reply via email to