Phonons, Bandstructure and Thermoelectrics


The purpose of this tutorial is to illustrate the use of the ATK phonon module. The tutorial is applied to small toy problems such that the calculations are very fast. In the first chapter you will calculate the phonon bandstructure and density of states, and learn about how these modules work. In the second chapter you will study a device system and calculate the electronic and phonon thermal transport coefficients, as well as the electrical transport coefficients. From those coefficients you obtain the thermoelectric figure of merit ZT.


You will primarily use the graphical user interface Virtual NanoLab (VNL) for setting up and analyzing the results. To familiarize yourself with VNL, it is recommended to go through the VNL Tutorial.

The underlying calculation engines for this tutorial is ATK-ForceField and ATK-SE. A complete description of all the parameters, and in many cases a longer discussion about their physical relevance, can be found in the ATK Reference Manual..

In order to run this tutorial, you must have a license for ATK-SE. If you do not have one, you may obtain a time-limited demo license by contacting us via our website: Contact QuantumWise.

Phonon Bandstructure of a Graphene Nanoribbon

Setting up the geometry

Start VNL and create a new project. Launch the Builder by clicking the builder_icon icon on the toolbar.

In the builder, click Add ‣ From Plugin ‣ Nanoribbon.

  • Uncheck the Passivate dangling bonds with hydrogen checkbox.
  • Select Armchair edge.
  • Select the structure 8 atoms wide.

Press the Build button to build the structure.

In order to make sure that the phonon module can detect that the structure is one dimensional, you need to have ~ 7 Å vacuum on both sides of the structure. To this end open Bulk Tools ‣ Lattice Parameters.

  • Increase A-x to 20 Å.
  • Increase B-y to 30 Å.

and close the widget.

Next, open Coordinate Tools ‣ Center, and press Apply to center the nanoribbon in the unit cell. Send the structure to the Script Generator, by using the Send To icon sendto_icon in the lower right-hand corner of the Builder window.

Defining the phonon calculation

In the following you will optimize the geometry and calculate the Phonon bandstructure and DOS of the nanoribbon using a Tersoff potential.

In the Script Generator

  • Add a New Calculator
  • Add an Optimization > OptimizeGeometry
  • Add an Analysis > PhononBandstructure
  • Add an Analysis > PhononDensityOfStates
  • Change the output file to

If you take a look at the blocks in the Script Generator, you will notice that a DyamicalMatrix block has automatically been added as the selected phonon analysis functions require the calculation of the dynamical matrix.


Adjusting script components

To set up the calculation parameters, make the following changes:

  • Double-click the New Calculator block and select the ATK-ForceField calculator and the Tersoff_C_2010 potential.

    Note that depending on the elements present in your configuration you will be able to choose among several potentials. A literature reference is also shown, giving you the possibility to check exactly how the potentials have been generated. It is very important that the potential you will use has been generated for a similar system or for similar conditions as your system.


    In this case you can immediately see that the Tersoff_C_2010 potential is potentially well suited for your phonon analysis: “Optimized Tersoff and Brenner empirical potential parameters for lattice dynamics and phonon thermal transport in carbon nanotubes and graphene”.


For ATK-versions older than 2017, the ATK-ForceField calculator can be found under the name ATK-Classical.

  • Double-click the OptimizeGeometry and set maximum force to 0.01 eV/Å.
  • Double-click the PhononBandstructure and set Points pr. segment to 100.
  • Double-click the PhononDensityOfStates, uncheck sync, and set nC to 51.

Transfer the script to the Job Manager (again using the “Send To” icon sendto_icon) and run the calculation.

Analyzing the Results

The generated output file, visible on the LabFloor, now contains a PhononBandstructure object. Select this PhononBandstructure object on the LabFloor and press 2D Plot in the plugin panel. Zoom into the low frequency area to get the figure below.


Note the negative bands arising from stress in the nanoribbon which makes it unstable perpendicular to the plane.

Origin of negative phonon bands

The negative bands seen in the phonon spectrum indicate that the structure is at a saddle point and can gain energy by further relaxing. The problem is that you only performed a force optimization and not a stress optimization, thus there is a large stress in the structure and it would like to release the stress by relaxing perpendicular to the graphene plane.

Relaxing the stress in the configuration

In order to relax the stress in the configuration, open the Script Generator again.


All open tools are available from the Windows menu at the top of each VNL tool.

Next open the OptimizeGeometry block.

  • Set Maximum stress to 0.0001 eV/Å 3.
  • Remove check from z in Constrain cell to allow optimization of the z-component of the cell.

Press OK to close the widget, transfer the script to the Job Manager and run the calculation. When you open the phonon bandstructure you will see that the the negative bands are now gone.


The density of states

The file also contains the phonon density of state (DOS) of the armchair nanoribbon with and without stress relaxation. Below the phonon DOS of the fully (i.e. forces- and stress-) optimized system is shown.


From the phonon DOS it is possible to calculate the entropy of the system. In ATK this is implemented in the entropy() method of the PhononDensityOfStates object. The script below shows how to evaluate the entropy:

# Read the last configuration in the output file
configuration = nlread('', BulkConfiguration)[-1]
# Read the last phonon DOS in the output file
phonon_dos = nlread('', PhononDensityOfStates)[-1]

# Define the temperature
t = 300*Kelvin

# Calculate the entropy
s = phonon_dos.entropy(t)

# Print results
print 'Entropy = ', s

Execute the script by dropping it on the Job Manager, and in the Log you will get the output:

Entropy =  4.36888578559 meV/K

Algorithmic Details of the Phonon Calculator

The phonons are calculated from the dynamical matrix of the system. The dynamical matrix is the second derivative of the system, corresponding to the first derivative of the forces. The first derivative of the forces are calculated using a finite difference scheme, where the system is displaced along each degree of freedom in the system, also called frozen phonon calculations.

When you add a new phonon analysis in the Script Generator, it checks if a dynamical matrix is already present. If this is not the case, a DynamicalMatrix analysis object will automatically be added to calculate the dynamical matrix. The DynamicalMatrix analysis object of a configuration can be stored in an .nc file and read again to be used in another calculation.

The details of the calculation of the dynamical matrix is controlled by the parameters in the DynamicalMatrix object.


The Repetitions parameter allows you to specifiy how many repetitions of the central cell are employed to calculate forces when the atoms in the central region are displaced. Setting it to Automatic will make sure that enough repetitions are used, to fit around each atom in the central region a buffer zone of four times its covalent radius, in which the force derivatives are taken into account. For the current system the Log file reports:

| Phonon: Automatically detected repetitions = [1 1 5]                         |

The size of this buffer region can be changed either by using Custom repetitions or by enabling and setting the Max interaction range parameter, which replaces the default buffer radius of four times the covalent radius. Furthermore, you can change some other parameters, that determine e.g. whether the acoustic sum rule or symmetries are enforced, as well as numerical parameters, e.g. the finitie difference method or the displacement magnitude of the atoms in the central cell.


In most cases the default values should work well. However, if you are using classical potentials with a long interaction range (e.g. potentials which include coulomb interactions), then it might be necessary to increase the Max interaction range to a value somewhat larger than the largest cutoff-radius of the potential. You can normally tell if this is necessary by unchecking Acoustic sum rule and inspecting the acoustic bands at the gamma point. If these bands are not zero, in most cases the maximum interaction range is too low.

K-points used for ATK-DFT and ATK-SE

It is also possible to use the phonon module with ATK-DFT and ATK-SE. In this case be aware that the k-point sampling of the calculator will be used for the repeated cell that is used for calculating the dynamical matrix. I.e. in the above example let us say a k-point sampling of (1, 1, 21) is used for optimization of the geometry. For the dynamical matrix calculation you will use a geometry that is repeated 5 times in the z direction. Thus, to obtain the same accuracy for the dynamical matrix calculation, use fewer k-points in the z-direction and thereby save time. The following script shows how to change the k-point sampling of the calculator:

# Change k-point sampling of a calculator
calculator = bulk_configuration.calculator()
numerical_accuracy_parameters = calculator.numericalAccuracyParameters()
new_numerical_accuracy_parameters = numerical_accuracy_parameters(k_point_sampling = (1, 1, 5))
new_calculator = calculator(numerical_accuracy_parameters=new_numerical_accuracy_parameters)

Calculating Electrical and Heat Transport for a Graphene Nanoribbon

In this section we will calculate the phonon transmission coefficient for the armchair nanoribbon from which the phonon thermal conductance can be obtained. This will be combined with a calculation of the electron transmission coefficient from which the conductance, Peltier coefficient and electron thermal conductance can be obtained. The different parameters are combined for calculating the thermoelectric figure of merit, ZT. The methodology for the calculations are described in Ref. [1].

Setting up the graphene nanoribbon device

The first step is to build a device geometry from the relaxed armchair nanoribbon. In the VNL main window select the last configuration in the file and drag and drop the configuration onto the Builder.

In the builder perform the following operations:

  • Bulk Tools ‣ Repeat: Repeat 5 times in C-direction.
  • Device Tools ‣ Device From Bulk: Default values are fine, press OK to create the device.

Send the resulting device configuration to the Script Generator.

Defining the transmission calculations

In the following you will setup the phonon and electron transmission calculations. For the phonon calculation you will use the Tersoff potential while using a carbon \(pi\) tight-binding model for the electron transmission calculation.

  • Add a New Calculator.
  • Add an Analysis > PhononTransmissionSpectrum.
  • Add a New Calculator.
  • Add an Analysis > TransmissionSpectrum.
  • Change the output file to

Adjusting script components

To set up calculation parameters, make the following changes:

  • Double-click the first New Calculator and select the ATK-ForceField calculator and the Tersoff_C_2010 potential. Uncheck the Save and Print boxes.
  • Double-click the PhononTransmissionSpectrum and set the energy range to 0 eV to 0.5 eV
  • Double-click the second New Calculator and select the ATK-SE: Slater-Koster calculator and choose the Hancock.C ppPi basis set.
  • No changes need to be made to the TransmissionSpectrum.

Transfer the script to the Job Manager and run the calculation.

Analyzing the results

Now inspect the result file in the VNL main window. You may select the PhononTransmissionSpectrum and the electron TransmissionSpectrum and plot them using the Transmission Analyzer or the 2D Plot analysis plugin.


The phonon transmission spectrum of the armchair nanoribbon.


The electron transmission spectrum of the armchair nanoribbon, zoomed into the energy range from -1 to 1 eV.

The thermo-electric figure of merit

In this section you will calculate the linear response transport coefficients of an applied voltage difference (dU) or temperature difference (dT) between the two electrodes. The coefficients are:

The conductance,

\[G_e = \left. \frac{dI}{dU} \right|_{dT=0} \, .\]

The Peltier coefficient,

\[\Pi = \left. \frac{I_Q}{I} \right|_{dT=0} \, .\]

The Seebeck coefficient,

\[S = - \left. \frac{dU}{dT} \right|_{I=0} = \frac{\Pi}{U} \, .\]

The heat transport coeficient of electrons, \(\kappa_e\), and phonons \(\kappa_{ph}\),

\[\kappa = \left. \frac{dI_Q}{dT} \right|_{I=0} \, ,\]

where \(I_Q = dQ/dT\) is the heat current.

From these coefficients ypu can obtain the thermoelectric figure of merit

\[ZT = \frac{G_e S^2T}{\kappa} \, ,\]

which quantifies how efficient a temperature difference can be converted into a voltage difference in a thermoelectric material.

These linear response coefficients are calculated by the Thermoelectric Coefficients plugin. To perform the calculation, select the PhononTransmissionSpectrum and the electron TransmissionSpectrum objects simultanously and press the Calculate button of the plugin.

For an undoped nanoribbon, the Fermi level is in the middle of the band gap. To get a significant Peltier coefficient the Fermi level must be at a band edge, corresponding to a doped nanoribbon. The plugin allows for shifting the Fermi level, and the following shows the result for \(\Delta E_F = 0.08 eV\), corresponding to an n-doped nanoribbon.


The Thermoelectric Coefficients plugin allows you to plot the different thermoelectric coefficients as a function of the energy. For example, the figure below reports the figure of merit ZT at 300K as a function of the energy. The peaks corresponding to the band edges are clearly visible.



[1]T. Markussen, A.-P. Jauho , M. Brandbyge: Surface-Decorated Silicon Nanowires: A Route to High-ZT Thermoelectrics Phys. Rev. Lett 103, 055502 (2009)