Tkwant is a Python package for simulating the dynamics of nanoelectronic devices which are driven out-of-equilibrium by external perturbations. It is an extension of the Kwant package and focusses on similar problems, involving semiconductors, graphene, topological materials, superconductors, metals and magnets, that can be described by tight-binding Hamiltonians. A simulated device consists of a scattering region of arbitrary dimension and shape, which is coupled to a number of semi-infinite electrodes in thermal equilibrium. Tkwant is typically used to obtain time-dependent manybody observables, such as currents and densities, when such a system is perturbed. It is simple to use and consists in writing a small Python script that comes close to physical intuition. The different steps are:

1. Define the system

The system typically consists of a central scattering region which is connected to several leads. Each lead represents a translationally invariant, semi-infinite system in thermal equilibrium. Arbitrary time-dependent potentials can be applied to perturb the system.

2. Write a small Python script

A small Python script must be written. In the first part, the scattering system and the observables are defined with Kwant. In a second part, the time evolution of the observables is studied with Tkwant. The high-level interface of Tkwant is designed to work almost automatically by using adaptive numerical algorithms with sensible default values.

3. Run the simulation

The actual simulation can be run on a desktop computer or also cluster on several hundred cores. Tkwant provides the result in standard (NumPy) array format, which can be plotted or stored by common Python tools.


To get started with Tkwant, we recommend the documentation which includes a tutorial and examples. Another good reference is the article, which contains the conceptual part and provides the basic theory of quantum transport.

Tkwant is free (open source) software and distributed under a BSD license.