HI,
I was trying to implement the paper http://link.springer.com/article/10.1134%2FS0021364006080042 in kwant, however I have trouble creating the geometry of the wire. I tried some tutorials, I got confused since I am a novice to kwant. It is a 3D setup with the wire(ideally close to a 1D quantum wire) on xyplane and the external field's direction is upward(in the direction of positive zaxis). The lead input is from x=infinity to x=0(in the negative yaxis) ,then from x=0 the wire starts to curve(in a perfect semicircle manner) with radius R towards the positive yaxis, and the output lead starts from x=0 to x=infinity.
Herein is the figure attached as well.
Any guidance and help in creating the code will be greatly appreciated. Thank you.
Dear Olivier,
I see two options: 1) you can mix the two examples [1] [2] of kwant tutorial and work with a quasi 1D system. In this case, you need to choose an energy for which you will have only one conducting mode in the leads. You need also a spin orbit coupling small enough to have a precession length much larger than the width of your lead to avoid the nonparabolicity [3] in your dispersion relation (ie: in order to obtain results close to the exact 1D system ). So as you see, with this system, you can only study the nonadiabatic situation of the article by Trushin and Chudnovskiy. a small program is included below.
2) You can work with an exact 1D system (ie with a line ) . In this case, you need to handle the circular part of your system.(kwant does not have a lattice suitable for the cylindrical discritization ) The tip is to do the discritization of your Hamiltonian in the cylindrical coordinates[4][5], then, you need to know that your discrete system is a graph, and the position of the sites is not important anymore: only the potential on the sites and the hoppings between them are pertinent. So you will put the sites of your ring in a straight line and put the hoppings you obtain from the discritization (the hoppings will be site dependent ) and therefore you will finally get a simple 1D system that can be studied by kwant. You will need to use a hopping of the form : $i\alpha \frac{\sigma_r}{R}$ with $\sigma_r= \sigma_x \cos(\theta)+\sigma_y \sin(\theta)$ [5] (appendix)
######################### from cmath import exp from math import pi
import kwant
# For plotting from matplotlib import pyplot %matplotlib inline
import tinyarray
# define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]])
def make_system(a=1, t=1.0, W=10, r1=10, r2=20 ,alpha=0.5):
lat = kwant.lattice.square(a) sys = kwant.Builder()
def ring(pos): (x, y) = pos rsq = x ** 2 + y ** 2 return (r1 ** 2 < rsq < r2 ** 2) and x>=0
sys[lat.shape(ring, (0, r1 + 1))] = 4 * t * sigma_0 sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x
sym_lead = kwant.TranslationalSymmetry((a, 0))
def lead_shape(pos): (x, y) = pos return (r1 < abs(y) < r2)
def createLead(r): lead=kwant.Builder(sym_lead) lead[lat.shape(lead_shape, (0, r))] = 4 * t * sigma_0 lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y lead[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x return lead
lead1=createLead(r1+1) lead2=createLead(r11) #### Attach the leads and return the system. #### sys.attach_lead(lead1) sys.attach_lead(lead2)
return sys
def main(): sys = make_system(alpha=.2)
# Check that the system looks as intended. kwant.plot(sys)
# Finalize the system. sys = sys.finalized() data=[] energies=[0.001*i for i in range(400)] for energy in energies: smatrix=kwant.smatrix(sys,energy) data.append(smatrix.transmission(0,1)) pyplot.plot(energies,data)
if __name__ == '__main__': main()
[1] nontrival shapes (kwant tutorial) [2] Matrix structure of onsite and hopping elements Nontrivial shapes (kwant tutorial ) [3]https://arxiv.org/pdf/0907.4122v1.pdf [4]http://journals.aps.org/prb/abstract/10.1103/PhysRevB.70.195346 [5]http://skemman.is/stream/get/1946/10141/25310/1/ThesisMScCsabaD.pdf
Hi,
I appreciate the reply. I was impressed by the details you have given considering that you have to read the paper that I referenced to and you cross referenced some literatures in your response to help me understand better.
Kudos and I am looking forward to keep in touch with this group in the future
Oliver
On 12/8/16, Abbout Adel abbout.adel@gmail.com wrote:
Dear Olivier,
I see two options:
 you can mix the two examples [1] [2] of kwant tutorial and work with a
quasi 1D system. In this case, you need to choose an energy for which you will have only one conducting mode in the leads. You need also a spin orbit coupling small enough to have a precession length much larger than the width of your lead to avoid the nonparabolicity [3] in your dispersion relation (ie: in order to obtain results close to the exact 1D system ). So as you see, with this system, you can only study the nonadiabatic situation of the article by Trushin and Chudnovskiy. a small program is included below.
 You can work with an exact 1D system (ie with a line ) . In this case,
you need to handle the circular part of your system.(kwant does not have a lattice suitable for the cylindrical discritization ) The tip is to do the discritization of your Hamiltonian in the cylindrical coordinates[4][5], then, you need to know that your discrete system is a graph, and the position of the sites is not important anymore: only the potential on the sites and the hoppings between them are pertinent. So you will put the sites of your ring in a straight line and put the hoppings you obtain from the discritization (the hoppings will be site dependent ) and therefore you will finally get a simple 1D system that can be studied by kwant. You will need to use a hopping of the form : $i\alpha \frac{\sigma_r}{R}$ with $\sigma_r= \sigma_x \cos(\theta)+\sigma_y \sin(\theta)$ [5] (appendix)
######################### from cmath import exp from math import pi
import kwant
# For plotting from matplotlib import pyplot %matplotlib inline
import tinyarray
# define Paulimatrices for convenience sigma_0 = tinyarray.array([[1, 0], [0, 1]]) sigma_x = tinyarray.array([[0, 1], [1, 0]]) sigma_y = tinyarray.array([[0, 1j], [1j, 0]]) sigma_z = tinyarray.array([[1, 0], [0, 1]])
def make_system(a=1, t=1.0, W=10, r1=10, r2=20 ,alpha=0.5):
lat = kwant.lattice.square(a) sys = kwant.Builder() def ring(pos): (x, y) = pos rsq = x ** 2 + y ** 2 return (r1 ** 2 < rsq < r2 ** 2) and x>=0 sys[lat.shape(ring, (0, r1 + 1))] = 4 * t * sigma_0 sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x sym_lead = kwant.TranslationalSymmetry((a, 0)) def lead_shape(pos): (x, y) = pos return (r1 < abs(y) < r2) def createLead(r): lead=kwant.Builder(sym_lead) lead[lat.shape(lead_shape, (0, r))] = 4 * t * sigma_0 lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y lead[kwant.builder.HoppingKind((0, 1), lat, lat)] = \ t * sigma_0 + 1j * alpha * sigma_x return lead lead1=createLead(r1+1) lead2=createLead(r11) #### Attach the leads and return the system. #### sys.attach_lead(lead1) sys.attach_lead(lead2) return sys
def main(): sys = make_system(alpha=.2)
# Check that the system looks as intended. kwant.plot(sys) # Finalize the system. sys = sys.finalized() data=[] energies=[0.001*i for i in range(400)] for energy in energies: smatrix=kwant.smatrix(sys,energy) data.append(smatrix.transmission(0,1)) pyplot.plot(energies,data)
if __name__ == '__main__': main()
[1] nontrival shapes (kwant tutorial) [2] Matrix structure of onsite and hopping elements Nontrivial shapes (kwant tutorial ) [3]https://arxiv.org/pdf/0907.4122v1.pdf [4]http://journals.aps.org/prb/abstract/10.1103/PhysRevB.70.195346 [5]http://skemman.is/stream/get/1946/10141/25310/1/ThesisMScCsabaD.pdf

I hope that this helps.
Adel
On Wed, Dec 7, 2016 at 6:22 PM, Oliver Generalao < oliver.b.generalao@gmail.com> wrote:
HI,
I was trying to implement the paper http://link.springer.com/article/10.1134%2FS0021364006080042 in kwant, however I have trouble creating the geometry of the wire. I tried some tutorials, I got confused since I am a novice to kwant. It is a 3D setup with the wire(ideally close to a 1D quantum wire) on xyplane and the external field's direction is upward(in the direction of positive zaxis). The lead input is from x=infinity to x=0(in the negative yaxis) ,then from x=0 the wire starts to curve(in a perfect semicircle manner) with radius R towards the positive yaxis, and the output lead starts from x=0 to x=infinity.
Herein is the figure attached as well.
Any guidance and help in creating the code will be greatly appreciated. Thank you.
 Oliver B. Generalao
M.S. Physics student Structure and Dynamics Group National Institue of Physics University of the Philippines Diliman, Quezon City Trunkline: +6329818500 Mobile: +639274033966
 Abbout Adel
participants (2)

Abbout Adel

Oliver Generalao