About Orbital Projected Transmission

Asked by Yuefei Huang on 2019-07-27

Hello Nick,
I am trying to calculate the transmission of a 2D lateral heterojunction. I am wondering if we can calculate the transmission projected on different orbitals?

If I have bulk electrode as every part of my system, using the output SystemLabel.TBT.TRANS_<1>_<2> file, I can get the transmission value at each k and Energy point T(E,k). Can I get the transmission value that each orbital contribute? Say px orbital, py orbital etc. Does the whole matrix of (Γ_L G Γ_R G), whose trace appears in the Landauer formula, contain such information?

If I have a heterojunction, can I get the probability of electron transmission from the each channel on one side to each channel on the other side? Like from px orbital on the Left Electrode to py orbital on the Right Electrode? Like the T_i_j and R_i_j model in
M. Büttiker, Y. Imry, R. Landauer, and S. Pinhas, Phys. Rev. B 31, 6207.

I guess these could be done using TBT.Projs section in TBtrans. But I I am having a hard time understanding this part of TBtrans manual. Is there any recipe or example fdf file for that? I checked ts-tbt-sisl-tutorial/A_05 written by you but I could not run sisl on my server(it always come with a segmentation fault when imported). Does sisl generate the fdf file for A_05? Because I do not find a fdf file for it. Is sisl required for this analysis?

Thank you very much Nick!


Question information

English Edit question
Siesta Edit question
No assignee Edit question
Last query:
Last reply:
Nick Papior (nickpapior) said : #1

1) "If I have bulk electrode". No, it does not.

2) "If I have a heterojunction". The discussion in the referenced article discusses "channels" which are not necessarily adhering to a single px orbital. In practice a "channel" is equivalent to a propagating bulk eigenstate which is then transferred across the junction. I.e. it does not belong to *only* px orbitals per see.

3) "I guess" yes and no. The projection section (TBT.Projs) projects the scattering matrices onto specific eigenstates in a predefined device region. As such one can figure out how much of the transmission goes through a specific eigenstate of say a molecule in the junction. In this sense it could be used like the article you referenced since one can figure out if a particular ring eigenstate carries 100% of the current. However, the projection section implemented in TBtrans works best in the limit of weak electrode coupling to the projection region. I.e. weakly coupled molecules.

Lastly, if you want the local transmission probability ("bond-currents") you may simply do: TBT.Current.Orb true
which tells tbtrans to calculate the local transmissions going from one orbital to another. However this will only give you local information and not whether an electron comes from the px of a particular atom in the left lead and the probability it arrives at a py orbital of another atom in the right lead. The bond-currents can however tell you how the current flows in your device and this is probably what you are looking for.

Yuefei Huang (yh46) said : #2

Thank you Nick!
1) For bulk electrode, I have done the following to extract orbital transmission. By pure SIESTA calculation of bulk electrode, I got eigenstate energy in the whole brillouin zone and the projection of each state on different orbitals. Then by counting number of band crossing each energy and transverse k and assign that G0 conductance to each orbital according to the their weight. I can get the transmission of each orbital. But this only works for bulk electrode.

2),Can I get the probability of a left bulk eigenstate phi_L(n,ky,E) jumping into a right bulk eigenstate phi_R(n',ky,E), n and n' is band index, x is vacuum direction and z is transport? It would be great. Combined with orbital projected DOS of these bulk eigenstates, should be valuable.

3) Does 'weakly coupled molecules' mean that VL and VR are non-zero in only atoms close to the Electrode? Does it work only for molecule, i.e. non-periodic in the transverse direction?

About the projected transmission, I did a test using graphene. Following is the part of .fdf file that is related to projection.
%block TBT.Projs

%block TBT.Proj.M-L
atom from 17 plus 16
Gamma .false.
proj L-5
level -5
proj L-4
level -4
proj L-3
level -3
proj L-2
level -2
proj L-1
level -1
proj L1
level 1
proj L2
level 2
proj L3
level 3
proj L4
level 4
proj L5
level 5

%block TBT.Projs.T
 from Left.M-L to

TBT.T.Eig 10
TBT.T.Out .true.
TBT.Current.Orb .true.
TBT.Atoms.Device [ 17 -- 72]
TBT.Projs.Current.Orb .true.
TBT.Projs.T.Out .true.

4.)From Dataset['M-L']['Restate'] and Dataset['M-L']['Imstate'] we can get the projection of 'molecule eigenstate' onto each atomic orbital. And we can use Dataset['M-L'][<project level name>]['Left']['Right.T'] to get the transmission on molecule eigenstate. I met a problem about this. For some molecule eigenstate, they have projection on orbitals other than px(x is out of plane), but have contribution to transmission near Dirac points. I cannot understand this because states near Dirac points should be pure px. Is my interpretation incorrect?

5) From Dataset['M-L']['L-1']['Left']['J'], I get an array: float32 J(nkpt, ne, nnzs). How can I use this orbital current array? I guess the last dimension size nnzs corresponds to orbital pairs? But I cannot find how this last index could be interpreted.

6) From your lecture video, https://vimeo.com/218938151/07b01aaaf7, at time about 59:00, you mentioned transmission eigenvalue is calculated by TBTrans but need some other program to calculate and visualize the transmission eigenchannel. Could you give me some idea on how the eigenchannel can be calculated? Is there tutorial on this part?

Thank you very much! You are very kind and helpful!


Nick Papior (nickpapior) said : #3

1) I only think this makes sense for a bulk calculation.

2) Yes. You can add another layer of the electrode to the device region for each of the electrodes and define a projection region on those layers. Then you can do two projections (one per electrode). Then simply follow what you do in 3 to get a projected transmission from eigenstates to other eigenstates.
Note that here you basically need to do some manual labor by pre-creating the Projection file (TBT.Projs.Init true), then edit the file to contain the correct eigenstates from the electrodes.

3) No it means that VL/VR are *small*. And no, you can also do projections for k-points.

4) Restate + 1j Imstate is the projection eigenstate (i.e. S^(1/2) | psi >). To only get |psi>, you need to do "TBT.Proj.M-L.States true" and then search Restates + 1j Imstates. Also whether there are values on specific orbitals depends on your orientation and how much atoms are out-of-plane etc. But again, when using the Lowdin transformation you can't be sure of their *physical* meaning.

5) You need to use sisl to get that information out. See here: http://zerothi.github.io/sisl/docs/latest/api-generated/sisl.io.tbtrans.tbtprojncSileTBtrans.html#sisl.io.tbtrans.tbtprojncSileTBtrans

6) Currently you can use Inelastica to get the real-space representation of the eigenchannels.

Yuefei Huang (yh46) said : #4

Hello Nick,
Thank you for answering!

In your tbtrans manual, I guess there is some formatting problem with Eqn 13~17, I think they should be similar to Eqn 35 in paper "Improvements on non-equilibrium and transport Green function techniques: The next-generation transiesta". But ther might be some typo in the manual.

I have compiled Inelastica and it works well, thank you! I got some new questions these days.

1. About plotting eigenchannel, I am asked to provide the SIESTA numbering of Device atoms. If I do not specify this, it plots the eigenchannel wavefunction on all atoms including the two electrodes. What is the meaning of this wave function if it is plotted on all atoms?

2. As I mentioned in previously I am doing a lateral junction of 2D material. The eigenchannel wavefunction plotted for all atoms, looks symmetric, as if the two ends of the Left-Device-Right system are connected periodically. Is it because the Hamiltonian and DM are solved periodically in transport direction? Is it possible to get the eigenchannel wavefunction like propagating bloch wave of Left + extension of left bloch wave in left side of junction in Device + transmitted wave on right side of junction in Device + transmitted wave in Right?

3. I am confused about relation between NEGF transmission and Landauer Buttiker picture. In NEGF Tr[Γ_L G Γ_R G] is used, while in Landauer it is Tr[tt], where t is the transmission matrix, hermitian sign not typed. In the paper 'Density-functional method for nonequilibrium electron transport' it is said t=sqrt(Γ)Gsqrt(Γ). My question is how these two matrices are related? t has a dimension of n_L X n_R, where n_L /n_R is the number of bloch states in left/right electrode. But sqrt(Γ)Gsqrt(Γ) has the dimension of n_D X n_D, n_D is the number of orbitals in Device region. They have different dimensions. How do understand their equality?

Thank you very much!

Nick Papior (nickpapior) said : #5


0. Thanks for catching this, indeed this was a typo! :)

1. Please direct any Inelastica questions to the Inelastica developers. :)

2. See 1. I don't fully know your system.

3. All equations are the same. All matrices has dimension n_D, however, Gamma matrices are just zero a lot of places and are thus typically only retained in a dimension n_L/n_R.

Can you help with this problem?

Provide an answer of your own, or ask Yuefei Huang for more information if necessary.

To post a message you must log in.