Dear Dongwook, In order to select the sites at the edge, you can use the function 'degree' as follows : sys.degree(site)<=3
So you will have in your code something like: for site in sys.expand(lat.shape(ring, (0, r1 + 1))): if sys.degree(site)<=3 and abs(site.pos[0])!=19: sys[site]=edge_potential Just becareful about the sites connected to the leads. I guess that you do not want to put them at the potential you chose for the edge. Here, I added the condition 'abs(site.pos[0])!=19' to deselect them as an example. I strongly suggest for you to plot your system with a different color for the sites you put at that potential to check if you really selected only those you wanted. An example is provided below. I hope that this helps Adel from cmath import exp from math import pi import kwant from matplotlib import pyplot def make_system(a=1, t=1.0, W=10, r1=10, r2=20,edge_potential=0): lat = kwant.lattice.square(a) sys = kwant.Builder() #### Define the scattering region. #### # Now, we aim for a more complex shape, namely a ring (or annulus) def ring(pos): (x, y) = pos rsq = x ** 2 + y ** 2 return (r1 ** 2 < rsq < r2 ** 2) # and add the corresponding lattice points using the `shape`-function sys[lat.shape(ring, (0, r1 + 1))]=4*t sys[lat.neighbors()] = -t #change the values of the potential at the edge for site in sys.expand(lat.shape(ring, (0, r1 + 1))): if sys.degree(site)<=3 and abs(site.pos[0])!=19: #abs(site.pos[0])!=19 execludes the interfaces with the leads sys[site]=edge_potential sym_lead = kwant.TranslationalSymmetry((-a, 0)) lead = kwant.Builder(sym_lead) def lead_shape(pos): (x, y) = pos return (-W / 2 < y < W / 2) lead[lat.shape(lead_shape, (0, 0))] = 4 * t lead[lat.neighbors()] = -t #### Attach the leads and return the system. #### sys.attach_lead(lead) sys.attach_lead(lead.reversed()) return sys edge_potential=10 sys = make_system(edge_potential=edge_potential) def family_color(site): #print(sys[site]) if sys[site]==edge_potential: return 'green' else: return 'black' def site_size(site): if sys[site]==edge_potential: return 0.35 else:return 0.2 # Check that the system looks as intended. kwant.plot(sys,site_color=family_color,site_size=site_size) On Tue, Jan 3, 2017 at 6:08 AM, Dongwook Go <godw2...@gmail.com> wrote: > Dear developers, > > I’m interested in investigating the influence of the edge potential of the > sample. > For example, in an example by tutorial “quantum_wire.py”, I would like to > put on-site potential only at the edge atoms. > > One could determine whether the site is edge or not by reading the number > of neighbors of the site by using “degree”. > For example, if the degree is 3 there is an on-site potentials , else 0. > Is there any example code from which I can learn to use this function? > > > Best, > Dongwook. -- Abbout Adel