# General¶

## Introduction¶

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.

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 QuantumATK Reference Manual 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 O-2018.06¶

The O-2018.06 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.

Calculators

• ATK-DFT: Plane-wave calculator - including HSE06

The QuantumATK plane-wave calculator is now a finished product, with performance comparable to other reputable PW codes and including most of the functionality known from the LCAO calculator, plus some unique features, such as the HSE06 exchange-correlation functional. See PlaneWaveCalculator, Introducing the QuantumATK plane-wave DFT calculator and Hybrid Functionals for more information.

• New default pseudopotentials for GGA

PseudoDojo pseudopotentials are now default for GGA calculations; they are as accurate as SG15, and significantly softer in most cases. The SG15 pseudopotentials are now also available for LDA calculations. For more information, see the note here: Pseudopotentials and basis sets available in QuantumATK.

• Pseudopotential-dependent mesh cut-offs for each element

QuantumATK now includes element-specific default density mesh cut-offs for the FHI, SG15 and PseudoDojo pseudopotentials. For calculations involving several different elements, the largest element-specific cut-off energy is automatically chosen for the calculation.

• Unified SemiEmpirical calculator

The SlaterKoster and Huckel calculators have been combined into a single SemiEmpirical framework, making it easier to optimize the performance of the semiempirical calculators, and introduce new features. Notably, QuantumATK O-2018.06 will include the Boykin model for strained systems and the NRL model. For more information, see the manual page: SemiEmpiricalCalculator.

• Minimal electrode concept for NEGF

The electrode electronic structure is automatically repeated along the transport direction when computing NEGF self-energies. This allows for using small electrodes while maintaining sufficiently long (repeated) electrode extensions.

• Fixed magnetic moment

New option, fixed_spin_moment, for the LCAOCalculator makes it possible to fix the total magnetic moment in bulk or molecular calculations.

• Significant memory improvements

The memory usage in both bulk and device calculations is significantly reduced, e.g., up to 50% reduction for gated devices.

QuantumATK will now, by default, use threading to fill up any available CPU resources not already used for processes (in both serial and with MPI parallelization). For instance, if running 12 MPI processes on a 24-core node, QuantumATK will by default use 2 threads per process, which should in general improve performance without using more memory. Note that threading is not always advantageous for very small systems, in which case it is automatically disabled.

Study objects

• New concept: The study object

QuantumATK O-2018.06 introduces the concept of a Study Object, which is designed to automate well-defined workflows that includes several calculations and analysis objects, and re-start the execution if necessary. The five current study objects are highlighted below. See here for more information on the concept: Study objects.

• ChargedPointDefect

A notable study object included in this release is the ChargedPointDefect. It allows you to study a specific defect type in a specific host material, by setting up all the separate calculations required for a comprehensive study of this defect. See also the tutorial Formation energies and transition levels of charged defects.

• IVCharacteristics

For easier analysis of transistor-like devices, QuantumATK O-2018.06 contains a study object called IVCharacteristics. It has some similarities to the existing analysis module IVCurve, but uses the study object framework for better management of the individual calculations, and offers advanced analysis of results. See also the tutorial Electrical characteristics of devices using the IVCharacteristics study object.

• OptimizeDeviceConfiguration

The complex workflow of full structural optimization of a device is now condensed into a study object, making this task much easier. For more information, see the manual page OptimizeDeviceConfiguration and the tutorial Relaxation of devices using the OptimizeDeviceConfiguration study object.

• DynamicalMatrix and HamiltonianDerivatives

The DynamicalMatrix and HamiltonianDerivatives analysis modules have become study objects, to improve restart functionality and management of the many separate calculations.

Analysis

• Photocurrent

The Photocurrent analysis module is introduced. It is used to compute the photocurrent through a device under illumination. See also the tutorial Photocurrent in a silicon p-n junction.

• HeisenbergExchange

The HeisenbergExchange analysis module is introduced. It computes the exchange coupling constants between any pair of atoms, for use in a Heisenberg model Hamiltonian.

• Tetrahedron integration available for Mobility

The Mobility analysis module now supports Brillouin-zone integration using the tetrahedron method, which converges faster in the number of q-points than Gaussian broadening.

• Deprecated analysis objects

DynamicalMatrix and HamiltonianDerivatives are now study objects, as explained above, and are no longer available as analysis modules.

• Spin life time

Compute the phonon-limited spin life time using the ElectronPhononCoupling analysis module. Note that spin life time studies require a calculator with noncollinear spin and spin-orbit coupling.

Dynamics and Optimization

• More MD analysis options

The methods available for analyzing MD simulations has expanded. For example, it is now possible to compute the MeanSquareDisplacement for separate cartesian directions, and calculate the RadialDistribution with a cutoff larger than the cell dimension. For a full overview, see the manual section on Molecular Dynamics.

• Special Quasi-random Structure (SQS)

Create quasi-random alloy structures using the Special Quasi-random Structure (SQS) method. For more information, see the manual page on EvolutionarySQS.

ATK Python

A few high-level functions have changed name. Specifically:

• For import statements in scripts, NanoLanguage has changed to QuantumATK, for example from QuantumATK import *.
• For launching the NanoLab graphical user interface from a terminal, use the command quantumatk instead of vnl.
• Running atkpython interactively in a terminal is unchanged.

## 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 QuantumWise 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 script.py You can download and use script.py 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 QuantumATK Reference Manual, 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/QuantumWise/.

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

# This is a comment

for i in range(3):
print i

• Instructions for using the command line are indicated by the $prefix:$ atkpython script.py