# General¶

## Introduction¶

Atomistix ToolKit (ATK) packages a powerful set of tools for calculating properties of nano-scale systems. These atomic-scale simulators, in ATK 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 ATK; 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 NanoLanguage, which is an extension to the well-established Python scripting language. Setting up and executing ATK calculations is therefore done in an ATK Python script or directly from the command line in an interactive Python shell.

The main purpose of this manual is to document all NanoLanguage functionality. The NanoLanguage 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 NanoLanguage.

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

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

## ATK 2017¶

The 2017 release of ATK introduces a range of new features and performance improvements. The list below provides direct links to the documentation for some of the most significant new features.

Calculators

Analysis

• Electron-phonon coupling

Noncollinear spin and spin-orbit coupling can be included when calculating the electron-phonon coupling matrix. New options are added for increased computational speed and for controlling the memory footprint. See ElectronPhononCoupling.

• Inelastic transmission spectrum

Noncollinear spin and spin-orbit coupling can be included when calculating the inelastic transmission spectrum for a device configuration. Significantly faster calculations using a spectral representation. See InelasticTransmissionSpectrum.

• Mobility

More quantities can be obtained from a mobility calculation: Seebeck coefficient, thermal conductivity, and the Hall-coefficient and Hall-conductivity tensors. See Mobility.

Dynamics

• Constrain the Bravais lattice

Now possible (and often default) to maintain a specific Bravais lattice during stress optimization of a bulk configuration. See OptimizeGeometry().

• Martyna–Tobias–Klein barostat

State-of-the-art barostat algorithm. Replaces the NPTMelchionna method. See NPTMartynaTobiasKlein.

• General MD improvements

All thermostats and barostats support linear heating and cooling (see e.g. NVTBerendsen), and all barostats both isotropic and anisotropic pressure coupling (see e.g. NPTBerendsen). All MD methods are improved wrt. performance and flexibility, and offer more powerful hook functions and constraints.

• MEAM potential

New potential for ATK-Classical. Applicable to both metallic and covalent systems. See MeamPairPotential.

ATK Python

## Installing and running the software¶

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

When ATK 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 ATK Python script (written in NanoLanguage):

$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. Further details are available in an online guide: MPI setup for running ATK 2016 in parallel. ## How to read this manual¶ This manual is typeset using in-line references to ATK Python objects and functions, and contains several script examples. The following style conventions are used: • All ATK objects and functions appear as links, e.g. MoleculeConfiguration. The link will take you to the relevant section of the NanoLanguage 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 ATK. • 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


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

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


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)
5