Skip to content
Snippets Groups Projects
Forked from kwant / kwant
1746 commits behind the upstream repository.
tutorial3.rst 4.77 KiB

Beyond transport: Band structures and closed systems

Band structure calculations

When doing transport simulations, one also often needs to know the band structure of the leads, i.e. the energies of the propagating plane waves in the leads as a function of momentum. This band structure contains information about the number of modes, the velocities, ...

In this example, we aim to compute the bandstructure of a simple tight-binding wire.

Computing band structures in kwant is easy. Just define a lead in the usual way:

"Usual way" means defining a translational symmetry vector, as well as one unit cell of the lead, and the hoppings to neighboring unit cells. This information is enough to make the infinite, translationally invariant system needed for band structure calculations.

In contrast to previous usage however, you have to finalize the lead. A finalized lead has a method/attribute ~kwant.system.InfiniteSystem.energies that allows to compute the eigenenergies of the translational invariant system for a given momentum k. Computing these eigenenergies for different momenta k then yields the bandstructure:

This gives the result:

../images/tutorial3a_result.*

where we observe the cosine-like dispersion of the square lattice. Close to k=0 this agrees well with the quadratic dispersion this tight-binding Hamiltonian is approximating.

Closed systems

Although kwant is (currently) mainly aimed towards transport problem, it can also easily be used to compute properties of closed systems -- after all, a closed system is nothing more than a scattering region without leads!

In this example, we compute the spectrum of a closed, (approximately) circular quantum dot as a function of magnetic field (Fock-Darwin spectrum).

To compute the eigenenergies, we will make use of the linear algebra functionality of scipy:

We set up the system using the shape-function as in :ref:`tutorial-abring`, but do not add any leads:

We add the magnetic field using a function and a global variable as we did in the two previous examples. (Here, the gauge is chosen such that A_x(y) = - B y and A_y=0.)

The spectrum can be obtained by diagonalizing the Hamiltonian of the system, which in turn can be obtained from the finalized system using ~kwant.system.System.hamiltonian_submatrix:

In this toy model we use dense matrices and dense matrix algebra since the system is very small. (In a real application one would probably want to use sparse matrix methods.) Finally, we obtain the result:

../images/tutorial3b_result.*

At zero magnetic field several energy levels are degenerate (since our quantum dot is rather symmetric). These degeneracies are split by the magnetic field, and the eigenenergies flow towards the Landau level energies at higher magnetic fields [#]

Footnotes

[1] Again, in this tutorial example no care was taken into choosing appropriate material parameters or units. For this reason, magnetic field is given only in "arbitrary units"