Caesar; a utility for calculating the vibrational free energy of periodic crystals

Caesar calculates the vibrational free energy, and a number of related vibrational properties, of periodic crystals.

Purpose of Module

Caesar is intended to provide a vibrational method which is more accurate than the widely-used harmonic approximation [Hoja_ea] and the more sophisticated effective harmonic approximation [Errea_ea], but which is computationally inexpensive enough to be integrated into high-throughput workflows.

Caesar can calculate vibrational properties using several vibrational methods. The Caesar Harmonic Calculation Library performs calculations under the harmonic approximation [Hoja_ea]. The Caesar Anharmonic Calculation Library performs calculations under the vibrational self-consistent harmonic approximation (VSCHA) [Errea_ea] or using vibrational self-consistent field theory (VSCF) [Christiansen].

In order to perform vibrational calculations, Caesar must interface with an electronic structure code. A wide range of electronic structure codes can be used, via the Caesar electronic structure interface.

[Hoja_ea](1, 2) First-principles modelling of molecular crystals: structures and stabilities, temperature and pressure.
[Errea_ea](1, 2) Anharmonic free energies and phonon dispersions from the stochastic self-consistent harmomic approximation: Application to platinum and palladium hydrides.
[Christiansen]Vibrational structure theory: new vibrational wave function methods for calculation of anharmonic vibrational energies and vibrational contributions to molecular properties.

Building and Testing

The details of how to build and testing Caesar are given in the Caesar README.txt file.

Details of how the documentation and unit tests were written are presented in Caesar - Documentation and Testing.


An out-of-source build is recommended. For this, a clean build directory should be made, and then CMake and Make should be run from the build directory, e.g. as

mkdir build
cd build
cmake [options] path_to_src

where [options] are the desired CMake configuration options, and path_to_src is the path to the caesar/src directory.

Caesar has been tested using version 10.1 of the gfortran compiler.


Caesar requires the spglib crystal symmetry library. CMake will search LIB for spglib’s lib directory, and will search PATH for spglib’s include directory.

Caesar also requires the BLAS and LAPACK linear algebra libraries. These are located using CMake’s FindLAPACK utility, which searches a range of standard install locations and can be configured using additional CMake configuration options.

These dependencies can be suppressed by setting the CMake options LINK_TO_SPGLIB and LINK_TO_LAPACK to false, although this will disable many of Caesar’s features.

Documentation and Helptext

The software documentation for Caesar can be generated using Ford. This should be generated in the doc directory, by calling


Documentation will be generated in the doc/ford directory, and doc/ford/index.html can be viewed by using an html reader (e.g. a web browser).

Caesar also has its own helptext system, which can be accessed through the caesar executable by calling caesar --help. This system includes helptext for each of the modes in which Caesar can be called, including details of the input settings for each mode.

Unit Tests

The unit tests for Caesar are generated using pFUnit. When building with tests, pFUnit becomes a dependency of Caesar, and CMake will search PATH for pFUnit’s bin directory.

Unit tests can be run by calling


from the build directory where CMake was run.

Unit tests are built by default, but can be suppressed by setting the CMake option ENABLE_TESTS to false.

Output Visualisation

Caesar uses python scripts to visualise output data. These can be run using Caesar, or can be run directly. When Caesar is built, the python scripts will be written to the python directory within the build directory.

Performing Calculations

Caesar is a command line utility. The behaviour of Caesar can be controlled using command line options, a configuration file, interactive input, or a combination of these. Detailed usage information can be obtained by calling

caesar --help

Source Code

The source code for Caesar is available from the Caesar repository