Skip to content

Phonons with FHI-aims and FHI-vibes

The tutorial is prepared by Nikita Rybin, Florian Knoop, and Christian Carbogno


This tutorial is about phonons and basics of the electron-phonon coupling. For most exercises, we will use the FHI-vibes -- a Python package for calculating, analyzing, and understanding the vibrational properties of solids from first principles.

It is build on the top of the atomic-simulation environment (ASE) and utilizes Phonopy  functionality for the vibrational analysis of periodic systems, and FHI-aims as the DFT calculator.

You can find all data and scripts required for this tutorial here:

Please first clone this repository to your local machine or compute cluster (please read the Preparations section for more details).


This tutorial consists of two parts:

  1. Phonons: Harmonic Vibrations in Solids

    1. Using FHI-vibes to run FHI-aims

    2. Geometry Relaxations via FHI-vibes

    3. Using Phonopy via FHI-vibes 

    4. Supercell Size Convergence

    5. Lattice Expansion: The Quasi-Harmonic Approximation

    6. Polarization, Born Effective Charges, and Non-analytical term correction

  2. Electron-Phonon Coupling: Band Gap Renormalization

    1. The Role of the Lattice Expansion

    2. The Role of the Atomic Motion

In part I, we will compute the vibrational properties of a solid using the harmonic approximation. In particular, we will discuss and investigate the convergence with respect to the supercell size used in the calculations. Furthermore, we will learn how the harmonic approximation can be extended in a straightforward fashion to approximatively account for a certain degree of anharmonic effects (quasi-harmonic approximation) and how this technique can be used to compute the thermal lattice expansion.

In part II, we will then go back to electronic structure theory and investigate how the fact that the nuclei are not immobile affects the electronic band structure. Both the role of the lattice expansion and of the atomic motion will be discussed and analyzed.


The current version of the tutorial was designed by Nikita Rybin and Sebastian Kokott, based on the previous tutorials prepared by Florian Knoop, Maja Lenz, Christian Carbogno, Martin Fuchs, Felix Hahnke, Jörg Meyer, Karsten Rasim, Manuel Schöttler, Amrita Bhattacharya, Honghui Shang, and Johannes Hoja. Eugen Moerman, Jakob Filser, Hagen-Henrik Kowalski, and Konstantin Lion
extensively tested the tutorial exercises. Christian Carbogno and Volker Blum supervised the work.