Dear Abbout,

Many thanks for your response and advice. 

I have made the changes you've suggested. However, I am unsure of your last point. I get that the output is a transmission and that change in units would not affect the units on that quantity. 

However, how would I know that I am applying the correct voltage/energy to the leads? 

I understand that there is a scaling of the energies applied to the system that can be calculated like:
Would it therefore be correct to take this approach? i.e.:
1) to use a = 1, t = 1 (as the default example code does) and then 
2) acknowledge this solution, if applied to a system with a_real, m_electron_real and hbar in SI units, corresponds to applying lead energies in the range [(0 * t_actual,1*t_actual)]?


Also if other people wish to please feel welcome to add to this discussion.


Many thanks again for your help.


From: Abbout Adel <abbout.adel@gmail.com>
Sent: Monday, July 27, 2020 2:32 AM
To: Nathaniel Gregory Seil <nsei7246@uni.sydney.edu.au>
Cc: kwant-discuss@python.org <kwant-discuss@python.org>
Subject: Re: [Kwant] Migrating spin_orbit.py to real unit system
 
Dear Nathaniel,

If you check your band, you will see that the maximum of your energy is of the order  1E-34  !
kwant.plotter.bands(syst.leads[0])
This means that you have a problem in your definitions.
First of all, do not define the Pauli matrices with hbar: You can see that your onsite potential is (as you defined it) t*hbar*sigma0. It should be t*sigma0.
For the spin orbit term, it depends how you define the constant alpha. if you check the reference [1], you will see that there is no hbar.
In your code, (after you eliminate hbar from the definition of the Pauli matrices), alpha becomes an energy, so you need to put a fraction of "t"
alpha=0.1*t.

Check also the value of e_z and verify that it is consistent with the values of "t" and alpha.

I want just to stress that the transmission you are calculating is a number, so it will not depend on the change of units you did.
I hope this helps


[1] https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.256601

On Sat, Jul 25, 2020 at 3:05 PM Nathaniel Gregory Seil <nsei7246@uni.sydney.edu.au> wrote:
Hello,

I would like to model a 2DEG under a magnetic field and have been investigating the spin_orbit.py code.

I would like to modify this code so that it utilises real units and models upon a to-scale lattice. However, I am a little bit unclear as to how to progress.

I noticed in the base code we have a = 1, t = 1 and hbar = 2 (seen from the Pauli spin matrices which normally have hbar/2 as a coefficient in front). To represent the real life scenario of a lattice with constant a = 5E-10 m, would we do the following:
  • a = 5E-10 m
  • hbar =  1.05457E-34 J s (standard SI units)
  • m_electron = 9.109E-31 kg (standard SI units)
  • t = hbar ^ 2 / (2 * m_electron * a^2)
and then just substitute these values into the rest of the code?

I get the result of 0 conductivity for the lead voltages -0.046 to 0.105V (code shows "energies=[0.01 * i*t - 0.3*t for i in range(100)]"). I also get this for -0.0046 to 0.0105V and for -0.46 - 1.05V. Do these results seem right?

I have attached my code with these substitutions and the results.

Many thanks,
Nathaniel Seil



--
Abbout Adel