I am a PhD student of Hong Kong University of Science and Technology. I
want to use KWANT to caculate Hall resistance of a Hall bar structure.We
can get the conductance between 6 electrodes, but how to get hall
resistance? Can you give me some help? Thank you very much.
I am trying to reproduce the QHE bar device calculations
However, I am having difficulty with the onsite and hopping values as
I am using TBModels
and therefore the values are not the same for all sites.
The problem is that after the scalar values have been passed on to the
Builder, these will then be overriden when using functions for the
I tried making a deep copy of the model, which would then serve as a
data structure where to draw the scalar values from when calling the
Onsite and Hopping functions. The problem with this is
a) I am getting a KeyError which I am still not sure why it happens
b) It does not feel very memory-efficient.
I am wondering if there is another way that this could be done on the
Kwant side that I have not been able to think of.
Dr. Eleni Chatzikyriakou
Computational Physics lab
Aristotle University of Thessaloniki
elchatz(a)auth.gr - tel:+30 2310 998109
I am trying to calculate the band structure of my system in the presence of
an external electric field. From what I understand, I need to add the
electric field as a potential in the onsite energy for the Hamiltonian.
Now when I calculate the band structure, I have to use
kwant.plotter.bands(sys.leads) to avoid the code throwing up an error.
Whereas what I want to be plotting is kwant.plotter.bands(sys), i.e. the
band structure of the system and not the leads. The latter method gives an
error (code pasted below) of the following kind.
TypeError: Expecting an instance of InfiniteSystem.
I have also gone through the answer at
That code by Anton changes the band structure for different values of
electric fields (which is what one would expect), whereas the band
structure of sys.leads (in my code) does not change at all even on
significantly changing the field.
I have a few questions if someone can help me with them.
1) What is the difference between plotting a band structure for sys and
2) How can I plot the band structure of my system (and not its leads) from
the code below? Where am I going wrong? How do I avoid the error?
*a = 2.46*
*lat = kwant.lattice.honeycomb(a = a)*
*p, q = lat.sublattices*
*def hopping(sitei, sitej):*
* return -2.8*
* x, y = site.pos*
* return -0 + 1*(y)*
* x, y = pos*
* return abs(x) < 5*a + 1e-8 and abs(y) < 5*a + 1e-8*
*sys = kwant.Builder()*
*sys[lat.shape(central_region, (0, 0))] = onsite*
*sys[lat.neighbors()] = hopping*
*sym = kwant.TranslationalSymmetry((-a, 0))*
*lead = kwant.Builder(sym)*
*lead[lat.shape(lambda s: abs(s) < 5*a + 1e-8, (0, 0))] = 0*
*lead[lat.neighbors()] = hopping*
*kwant.plotter.bands(sys.finalized().leads) # This works fine*
*#kwant.plotter.bands(sys.finalized()) # This throws up an error*
Any help would be greatly appreciated!
Dear Kwant Developers,
I understand that a symmetry operator (the conservation law) can be used to block diagonalize the lead hamiltonian, as in the separation of the electrons and holes in superconductors. In the electron-hole case, the symmetry operator is [[-1,0],[0,1]]. There are two eigenvalues (+1, -1) and the eigenvalues are different. Can the kwant code be used to handle a symmetry operator like [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,1]]. There are four eigenvalues in two degenerate pairs. This is like a system with four orbitals in a unit cell and each pair of orbitals have the same energy. There are two possible scenario. With this symmetry operator, the lead Hamiltonian is block diagonalized into two blocks. Can the conservation law function handle this case? What would happen if the hopping can split the degenerate eigenvalues within a single block? Can the conservation law function handle this case too?
Disclaimer: This email (including any attachments) is for the use of the intended recipient only and may contain confidential information and/or copyright material. If you are not the intended recipient, please notify the sender immediately and delete this email and all copies from your system. Any unauthorized use, disclosure, reproduction, copying, distribution, or other form of unauthorized dissemination of the contents is expressly prohibited.
I'm trying to use Kwant to investigate behavior of a lattice between two superconductors, namely trying to figure out the Josephson current. The task is basically to diagonalize the related Bogoliubov-de Gennes Hamiltonian and use the eigenvectors and eigenvalues to calculate the current in the lattice. I basically follow the example 2.6. in Kwant documentation to build up the Hamiltonian but let the both leads be superconductors and establish the system in between. I introduce the phase difference between the leads by multiplying the Delta parameter of the other lead by e^(i phi). However, I'm a bit stuck there as I don't know how to utilize the obtained eigenvectors to make wave functions which I could input to t current operator in Kwant.
I would really appreciate some help with this or, perhaps, some example code if readily available.
Thanks in advance!
I am looking to plot the wavefunction (both magnitude and phase on separate
The kwant.plotter.map method doesn't give a very appealing look as it plots
only in large sized triangles. The kwant.plotter.plot method seems better
but I get stuck in one part. There is a piece of code that reads:
site = sys.site(i)
return ('p', 3, 180) if site.family == a else ('p', 3, 0)
However, it gives the following error:
AttributeError: 'FiniteSystem' object has no attribute 'site'
This snippet was taken from online kwant tutorials itself. I am unable to
get to the bottom of this error message because the tutorial uses the exact
same code. Is there an update to some library of kwant that solves this? Or
is there any other way to get better plots for wavefunctions on a system
without using the sys.site(i) command?
I would like the wave functions to look smooth and continuous.
Any help would be appreciated.
Discipline of Electrical Engineering
I am trying to perform an eigenchannel analysis of a graphene nanoribbon.
For that I will be using the formula :
*T(E) = ГL(E)½ GC†(E) ГR(E) GC(E) ГL(E)½ *
where *ГL(E)* is the coupling matrix between the left lead and the
conductor, *GC(E)* is the greens function matrix of the conductor (system)
and '†' is the dagger operator. The equation is from the following paper:
(1) Now as far as I know, Kwant allows us to calculate transmission as a
number T(E). What I need for my code is 't' where Trace(t*†*t) = T(E).
Could somebody let me know how can I get the desired quantity 't'?. But I
don't know how I can get the coupling matrix *ГL(E) between the left (or
right) lead and the conductor*
(2) Also, we know that t = *ГL(E)½ GC(E) ГR(E)½ .But I don't know how I can
get the coupling matrix ГL(E) between the left (or right) lead and the
conductor. Is it possible to get too?*
*PS - My aim is to find the wavefunctions inside the nanoribbon (which
Kwant can do very conveniently) and also their phases! I have found the
wavefunctions but am unable to find their phases. If there's any other way
to find it that would also be extremely helpful.*
*Any help would be greatly appreciated.*
*Thanks and Regards,*
Discipline of Electrical Engineering