Skip to content


This tutorial provides a step-by-step guide on how to use FHI-aims code with ASE Python package, a powerful library for setting up, manipulating, running, visualizing, and analyzing atomistic simulations.

ASE, short for Atomic Simulation Environment, is a one of the de-facto standard libraries for atomistic data manipulation, supporting a large variety of atomistic simulation codes and making it easy to set up, run and analyze atomistic calculations in an unified fashion. FHI-aims has a broad support in ASE, and we can advise using it for carrying out series of calculations in an automated way. This tutorial will consist of several parts:


At the time of writing, the most recent version of ASE is 3.23.0, released on May 31, 2024. This version is to some extent backwards incompatible with the previous version, 3.22.1, released on December 1, 2021. However, given that the previous version was around for quite some time, it's also being used quite extensively. Hence, in this tutorial, designed with FHI-aims version 240507 and ASE version 3.23, we will outline the differences between the current version of ASE and the previous one.

ASE offers a lot more functionality than presented in this tutorial. E.g. creating supercells, creating crystals by spacegroup, get a path through Brillouin zone for band structure calculations, getting a list of nearest neighbors, running optimizations, running MD, etc. pp. They are described in detail in the original documentation of ASE. We will not address them here since they are not specific to FHI-aims.

This tutorial is an updated and expanded version of this wiki page, created by Andrei Sobolev.