Introduction to ATK

Table of Contents

Preface

The strength of ATK and VNL lies in their flexibility to describe systems of different symmetries. It can describe isolated systems (molecules), periodic systems (crystals), and systems of the type bulk-nanodevice-bulk (two-probe systems). The most unique feature of ATK is its ability to calculate the electronic transport properties of two-probe systems under a finite bias.

In this manual, you will find several tutorials for learning how to use ATK to handle these three different system types, using NanoLanguage. A detailed summary of all input and output parameters and available NanoLanguage commands can be found in the alphabetically ordered Reference manual index.

The background material, describing the underlying physics and algorithms, is described in a number of research papers listed under Bibliography. The electron transport part is mainly described in the papers [2], [12], and [14].

The proper citation to ATK should include a reference to the most important methodology papers. We recommend users to cite the references [1], [2], [12], and [14].

Introduction

ATK is capable of modeling isolated, periodic, and open systems using very accurate first principle modeling methods.

Figure 1: ATK is capable of modeling isolated, periodic, and open systems using very accurate first principle modeling methods.


QuantumWise provides two different interfaces for performing electronic transport calculations: Virtual NanoLab (VNL), which is a graphical user interface (GUI), and Atomistix ToolKit (ATK), the script-based interface described in this manual. Which of the interfaces to use, is sometimes a matter of taste, and sometimes determined by the task at hand. Most users will probably find that VNL is the most appealing option, because of its intuitive ease of use. Some prefer ATK because it gives more control and flexibility through scripting.

A modeling study generally consists of three parts: setting up the calculation, running the calculation and finally analyzing the output of the calculation. The purpose of this tutorial is to help the user getting control of these steps using ATK, often in combination with VNL.

When setting up a calculation, the first thing to consider is the symmetry of the system. ATK provides methods for describing three different system types; molecular, bulk, and two-probe systems. A two-probe system consists of a nanoscale region coupled to two macroscopic bulk systems, or electrodes. The nanoscale region can be a molecule, nanotube, cluster of atoms, a piece of a semiconductor or an interface between the electrodes. An example two-probe system, consisting of a carbon nanotube between two metal electrodes is shown in figure 2.

A typical two-probe system, consisting of a carbon nanotube between two metal surfaces. The unique capability of ATK is its ability to study the electron transport through such types of systems.

Figure 2: A typical two-probe system, consisting of a carbon nanotube between two metal surfaces. The unique capability of ATK is its ability to study the electron transport through such types of systems.


Once the system to be studied is defined, the method of calculation must be specified. The description of the electronic structure in ATK is based on density functional theory (DFT) [6], and an important ingredient in the calculations is the approximation used for the exchange-correlation functionals. In the current version of ATK, the local density approximation (LDA) [9] and the generalized gradient approximation (GGA), in the form of the Perdew-Burke-Ernzerhof (PBE) exchange-correlation functional [8], are implemented. The analogous spin-dependent exchange-correlation functional are implemented as well, which make it possible to perform spin-polarized calculations. For most applications, the PBE functional will be the more accurate option.

Other sources of errors arise from the use of pseudo-potentials to describe the effect of the core electrons, the finite size of the basis set and the numerical integration routines. These errors can in most cases be systematically reduced at the expense of the computational time. The default parameters for ATK are chosen such that the approximation for the exchange-correlation potential usually is the largest source of error. In this tutorial, we will describe the other sources of errors, and explain how the default parameters can be changed in order to reduce the computational cost or increase the accuracy.

Finally, the output of the calculation must be analyzed to gain new insight from the streams of data produced by the program. ATK can be used to calculate many different properties of the system, including electronic current, voltage drop, transmission coefficients, electron density, etc. The results can then be exported to standard file formats so that they can be visualized in two or three dimensions, e.g. in VNL.

How to read this manual

This manual contains several ATK script examples, as well as in-line text references to ATK and Python objects and functions. To ease the reading of these, we use the following style and link conventions

  • All ATK objects and functions are type set as links in bold face monospace. For example, the object “KohnShamMethod” will appear as KohnShamMethod. Click on the link, and you will be taken to the relevant section of the reference manual, where a detailed description of the object “KohnShamMethod” is provided.

  • More information for using basic Python constructions are provided in the separate document Python basics. References to this document, for example regarding Python for loops and tuples, are given directly in the manual pages.

  • In the HTML version of this manual, all script examples are syntax highlighted, for example

# Import the KohnSham module from ATK
from ATK.KohnSham import *

# Set up elements and positions
elm = [ Oxygen, Hydrogen, Hydrogen ]
pos = [ ( 0.000, 0.000, 0.0)*Angstrom,
        ( 0.757, 0.586, 0.0)*Angstrom,
        (-0.757, 0.586, 0.0)*Angstrom ]

# Add them to a configuration
h2o = MoleculeConfiguration(elm,pos)

# Open a VNL file and add the molecule to it
vnl_file = VNLFile('h2o.vnl')
vnl_file.addToSample(h2o, 'h2o')

water-viz.py

All ATK elements are color highlighted as in

MoleculeConfiguration

Python structures are type set as in

from and import

whereas script comments are displayed as

# This is a comment

Beneath each script example, a link is provided in the right margin. Use this to download your own copy of the displayed script.

Moving on

The release of ATK introduces a major advance in the way electronic structure calculations are performed on a computer. By introducing NanoLanguage in ATK 2.1 and further improvements in ATK 2.2, ATK is laying the foundation of a new architecture on which you will be able to build new functionality into your ATK scripts at a faster pace, with better transparency, and in a much more flexible way. NanoLanguage combines the power of the advanced quantum-chemical methods implemented in ATK with the flexibility of a full programming language, namely Python.

Before you start using ATK, we suggest that you consult the section Introduction to NanoLanguage for a presentation of all the novel concepts and features available in NanoLanguage.

After Installing ATK, a good starting point for getting hands-on experience with practical NanoLanguage usage will be the tutorial Geometry of a water molecule.

Once you feel up to learning more advanced techniques for handling molecular, bulk, and two-probe structures, you may dive into to the respective tutorials

Remember to visit our website for updates both to the manual and the software!