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 <[email protected]> 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