On-site potential only at the edge of the sample in Kwant
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.
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 <godw2718@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
Dear Dongwook, It is the easiest to achieve what you want while you are defining your scattering region, specifically by using the Builder.degree method. So if you have a builder syst with all the hoppings already added, your desired result would be achieved by syst[(site for site in syst.sites() if syst.degree(site))) != 4)] = boundary_potential Best, Anton On Tue, Jan 3, 2017 at 4:08 AM, Dongwook Go <godw2718@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.
participants (3)
-
Abbout Adel
-
Anton Akhmerov
-
Dongwook Go