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 QuantumATK for setting up and analyzing the results. To familiarize yourself with QuantumATK, it is recommended to go through the Basic QuantumATK 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 QuantumATK 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 ForceFieldCalculator
  • Add an Optimization > OptimizeGeometry
  • Add an Analysis > PhononBandstructure
  • Add an Analysis > PhononDensityOfStates
  • Change the output file to armchair.hdf5.

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 ForceFieldCalculator block and select 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 QuantumATK-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 per segment to 100.
  • Double-click the PhononDensityOfStates. In the q-point Sampling box select Sampling, uncheck the Sync box, and set qc 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 armchair.hdf5, 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 QuantumATK 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 armchair.hdf5 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 free energy, entropy, and zero point energy of the system. In QuantumATK this is implemented in the methods freeEnergy(), entropy(), and zeroPointEnergy() of the PhononDensityOfStates object. The script below shows how to evaluate the entropy:

# Read the last configuration in the output file
configuration = nlread('armchair.hdf5', BulkConfiguration)[-1]
# Read the last phonon DOS in the output file
phonon_dos = nlread('armchair.hdf5', 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 study object will automatically be added to calculate the dynamical matrix. The DynamicalMatrix object of a configuration can be stored in an .hdf5 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 specify 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

From QuantumATK-2019.03 onwards, the k-point sampling and density-mesh-cutoff will be automatically adapted to the given number of repetitions when setting up the super cell inside DynamicalMatrix. That means you can specify the calculator settings for the unit cell and use it with any desired number of repetitions in dynamical matrix calculations.

In previous versions of the code the number of k-points had to be adapted for the dynamical matrix calculation. This is now handled automatically, so the k-points used for phonon calculations do not need to be modified.

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 QuantumATK main window select the last configuration in the armchair.hdf5 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 ForceFieldCalculator.
  • Add an Analysis > PhononTransmissionSpectrum.
  • Add a SemiEmpiricalCalculator.
  • Add an Analysis > TransmissionSpectrum.
  • Change the output file to armchair_device.hdf5.

Adjusting script components

To set up calculation parameters, make the following changes:

  • Double-click the ForceFieldCalculator and select the Tersoff_C_2010 potential. In the results box select Do not save and uncheck the Print results summary to log box.
  • No changes need to be made to the PhononTransmissionSpectrum.
  • Double-click the second SemiEmpiricalCalculator and select the Hamiltonian settings. In the Basis Set box select 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 armchair_device.hdf5 in the QuantumATK 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)