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 1-D quantum wire) on xy-plane and the external field's direction is upward(in the direction of positive z-axis). The lead input is from x=-infinity to x=0(in the negative y-axis) ,then from x=0 the wire starts to curve(in a perfect semicircle manner) with radius R towards the positive y-axis, 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: +63-2-981-8500 Mobile: +63-927-4033966
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 non-parabolicity [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 non-adiabatic 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 Pauli-matrices 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(-r1-1) #### 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 on-site 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/ThesisMSc-CsabaD.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 1-D quantum wire) on xy-plane and the external field's direction is upward(in the direction of positive z-axis). The lead input is from x=-infinity to x=0(in the negative y-axis) ,then from x=0 the wire starts to curve(in a perfect semicircle manner) with radius R towards the positive y-axis, 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: +63-2-981-8500 Mobile: +63-927-4033966
-- Abbout Adel
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: 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 non-parabolicity [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 non-adiabatic 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 Pauli-matrices 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(-r1-1) #### 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 on-site 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/ThesisMSc-CsabaD.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 1-D quantum wire) on xy-plane and the external field's direction is upward(in the direction of positive z-axis). The lead input is from x=-infinity to x=0(in the negative y-axis) ,then from x=0 the wire starts to curve(in a perfect semicircle manner) with radius R towards the positive y-axis, 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: +63-2-981-8500 Mobile: +63-927-4033966
-- Abbout Adel
-- Oliver B. Generalao M.S. Physics student Structure and Dynamics Group National Institue of Physics University of the Philippines Diliman, Quezon City Trunkline: +63-2-981-8500 Mobile: +63-927-4033966
participants (2)
-
Abbout Adel
-
Oliver Generalao