QuantumATK packages a powerful set of tools for calculating properties of nano-scale systems. These atomic-scale simulators, in QuantumATK denoted calculators, are based on density functional theory, semi-empirical tight binding, and classical potentials. The non-equilibrium Green’s function method is a unique feature of QuantumATK; it allows simulations on nano-scale devices and interfaces, including support for non-zero bias between the electrode leads and device components such as electrostatic gates and dielectrics.


Fig. 101 A typical device system, consisting of a z-shaped graphene nanoribbon on top of a dielectric and controlled by three metallic gates. The contour plot illustrates the electrostatic potential through the system. One unique capability of QuantumATK is its ability to simulate the electron transport through such two-probe systems. Gate electrodes are included as non-current-carrying electrostatic gates. One-probe systems with only a single electrode are also supported.

ATK is controlled using QuantumATK, which is an extension to the well-established Python scripting language. Setting up and executing QuantumATK calculations is therefore done in an QuantumATK Python script or directly from the command line in an interactive Python shell.

The main purpose of this manual is to document all QuantumATK functionality. The referencemanual therefore gives a detailed summary of all input and output parameters, as well as notes on relevant theory and usage examples. The section Classes gives a full list of available commands in QuantumATK.

We also provide a thorough exposition of the theoretical background for the electronic structure methods implemented in QuantumATK (see Atomic-scale Simulators), and a detailed introduction to Python scripting and using QuantumATK to control QuantumATK (see Python in QuantumATK).

For tutorials on how to use QuantumATK we refer to the Tutorials website.

New in QuantumATK P-2019.03

The P-2019.03 release of QuantumATK introduces a range of new features and performance improvements. The list below provides an introduction and, in most cases, direct links to the documentation for some of the most significant new features.


  • Updates to the plane-wave DFT simulation engine

    The QuantumATK PlaneWaveCalculator is nearly feature-complete for norm-conserving pseudopotentials. Analysis objects that are newly supported includes optical spectrum, effective band structure, fat band structure and projected density of states.

  • QuantumATK PlaneWave calculator introduces PAW in a beta version

    The QuantumATK PlaneWaveCalculator now includes the projector-augmented wave (PAW) method for describing the core electrons, supplementing the main pseudopotential functionality. The PAW implementation provides limited functionality at this stage, and is therefore included as a beta version. For example, it does not yet support calculation of stress, and some post-SCF analyses are disabled.

  • SCAN meta-GGA density functional

    QuantumATK now includes the SCAN meta-GGA type density functional for both the LCAO and PW calculators (with norm-conserving pseudopotentials).

Study objects

  • Magnetic Anisotropy Energy study object

    The complex and long-running calculations required for studying the magnetic anisotropy energy (MAE) are now performed in a study object. The MagneticAnisotropyEnergy study object allows easy studies of a range of values for the theta and phi angles.


  • Partial Electron Density

    The PartialElectronDensity analysis module is introduced. It is used to study and visualize specific parts of the electron density in real space. Band indices and energy ranges can be used to specify which part of the electron density to include.

  • Surface Bandstructure

    The SurfaceBandstructure analysis module is introduced, allowing detailed studies of surface bandstructures. Technically, it is the calculation of a device density of states evaluated along a particular route in the surface Brillouin zone.

  • Eigenvalues analysis module expanded

    The Eigenvalues analysis module can now calculate eigenvalues at specified k-points and include also bands above the Fermi level.

Dynamics and Optimization

  • New force-field potentials

    Newly available potentials are Moliere (for etching simulations, see MolierePotential), Brenner (see BrennerCalculator), and REBO (see TersoffBrennerPairPotential).

  • Space group symmetry constraints for OptimizeGeometry

    OptimizeGeometry() now allows optimization while keeping the space group fixed.

  • MPI parallelization of most force-field methods

    QuantumATK now provides MPI parallelization for force field calculations using real-space domain decomposition if the system is large enough for this to be efficient (ca. 1000 atoms or more).

  • Time-stamped force-bias Monte Carlo

    QuantumATK now supports the time-stamped force-bias Monte Carlo (TFMC) method. Accessible simulation times can be increased by a factor of 5-100 compared to conventional molecular dynamics. The method is similar to MD, but atomic displacements are sampled using Monte Carlo methods. See TimeStampedForceBiasMonteCarlo().


  • ParallelDevicePerformanceProfile

    The ParallelDevicePerformanceProfile module helps users decide what the best parallelization strategy is for device simulations, and which self-energy calculators to use. It can be run with specific equilibrium/non-equilibrium methods for contour point integration, and estimates required CPU time and memory consumption.

  • Performance improvements

    Performance of calculator engines has been generally improved, both with respect to speed and memory consumption. For example, some simulations will need significantly less memory for evaluating forces as compared to previous releases.

ATK Python

  • Python 3

    With the release of QuantumATK P-2019.03, we have now upgraded from Python 2 to 3.

Installing and running the software

The software is distributed as a binary installer containing both QuantumATK and the graphical user interface QuantumATK. The installer is retrieved from the QuantumATK website: Download QuantumATK. You will also need to obtain a license (trial licenses are available, see Trial license). Detailed instructions are given in the Installation Guide.

When QuantumATK has been installed on your machine you can run it from the command line using the atkpython executable, which should be in your PATH, and a properly prepared QuantumATK Python script (written in QuantumATK):

$ atkpython

You can download and use to test this – the script defines a water molecule and relaxes the atomic coordinates using the BFGS algorithm to minimize the forces.

Parallel execution

ATK supports multi-level parallelism, using the Message Passing Interface (MPI) available on most supercomputing clusters for distributed memory parallelism, and OpenMP for shared memory parallelism.

How to read this manual

This manual is typeset using in-line references to QuantumATK Python objects and functions, and contains several script examples. The following style conventions are used:

  • All QuantumATK objects and functions appear as links, e.g. MoleculeConfiguration. The link will take you to the relevant section of the referencemanual, where a detailed description of the object “MoleculeConfiguration” is provided.

  • References to particular chapters and sections are also links. For example, the links For-loops and Tuples direct you to specific sections in the chapter Python in QuantumATK.

  • Boldface letters are used to highlight specific words, e.g. atkpython, while in-line names of Python variables, functions, parameters, and methods are in general typeset using a monospace serif, e.g. list_of_atoms for a Python variable and cartesianCoordinates() for a method of the MoleculeConfiguration object.

  • In-line names of files and directories are also typeset using a monospace serif, e.g. file.txt and $HOME/QuantumATK/.

  • Python structures are visually enclosed in a box and typeset using a monospaced serif:

    # This is a comment
    for i in range(3):

    Scripts can often be downloaded by following a link, e.g.

  • Instructions for using the command line are indicated by the $ prefix:

    $ atkpython

    while instructions for using an interactive Python session is indicated by the >>> prefix:

    >>> myList = [1, 2, 3, 4, 5]
    >>> print(myList)
    [1, 2, 3, 4, 5]
    >>> print(len(myList))