Dear James, If you replace lead3[lat.shape(lead3_shape, (1,1))] = 0 by lead3[lat.shape(lead3_shape, (1,8))] = 0 it should work. The second argument of the shape function is a site that belongs to the shape you are considering (see the documentation of lat.shape) Best regards, Xavier
Le 17 juin 2016 à 05:41, james edward hernandez
a écrit : Hi. I tried to add leads on the rectangular honeycomb scattering region. I was able to add two leads (the first one is from the left from 0 < y < 10, and the second one is from the right 0 < y < 4). But when I tried add another lead on the right from 7 < y < 10, it gives an error: ValueError: No sites close to (1, 1) are inside the desired shape.
Here is the code for the setup:
import matplotlib.pyplot import kwant
lat = kwant.lattice.honeycomb() sys = kwant.Builder()
def rectangle(pos): x, y = pos return 0 < x < 20 and 0 < y < 10
sys[lat.shape(rectangle, (1, 1))] = 0 #next nearest sys[lat.neighbors()] = -1 #nearest
sym = kwant.TranslationalSymmetry((-1, 0)) #from the left sym.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)]) sym.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)])
lead = kwant.Builder(sym)
def lead1_shape(pos): x, y = pos return 0 < y < 10
lead[lat.shape(lead1_shape, (1,1))] = 0 lead[lat.neighbors()] = -1
sym2 = kwant.TranslationalSymmetry((1, 0)) #to the right, botttom sym2.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)]) sym2.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)])
def lead2_shape(pos): x, y = pos return 0 < y < 4 # bottom
lead2 = kwant.Builder(sym2) lead2[lat.shape(lead2_shape, (1,1))] = 0 lead2[lat.neighbors()] = -1
sym3 = kwant.TranslationalSymmetry(lat.vec((1, 0))) #to the right, top sym3.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)]) sym3.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)])
def lead3_shape(pos): #tried to add this lead and gives an error x, y = pos return 7 < y < 10 # top
lead3 = kwant.Builder(sym3) lead3[lat.shape(lead3_shape, (1,1))] = 0 lead3[lat.neighbors()] = -1
sys.attach_lead(lead) sys.attach_lead(lead2) sys.attach_lead(lead3)
kwant.plot(sys);
Thanks,
James