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

Reply via email to