Caesar Harmonic Calculation Library¶
Purpose of Module¶
The Caesar harmonic calculation library aims to provide an efficient method for calculating vibrational properties under the harmonic approximation [Hoja_ea1]. This can be done using a range of electronic structure codes, using the Caesar electronic structure interface.
| [Hoja_ea1] | (1, 2, 3) First-principles modelling of molecular crystals: structures and stabilities, temperature and pressure. https://doi.org/10.1002/wcms.1294 |
Theory¶
The Harmonic Approximation¶
The nuclear potential energy surface
is a function of the
-dimensional nuclear coordinate
. Under the harmonic
approximation [Hoja_ea1], this function is approximated as quadratic in the difference
between
and the value of
for the undisplaced
structure,
. Formally, this is

where
is the Hessian matrix.
By making a coordinate transform from
to
, the Hessian matrix can be
diagonalised, to give

where each
is a normal mode of the system, each
is the
corresponding frequency of that mode, and
is the size of the supercell
(defined as the ratio of the volume of the supercell to the volume of the primitive
cell).
Provided that every value of
is real, the simple form of
means that the Hamiltonian can be diagonalised analytically, and so the free energy
and other properties can be calculated analytically [Hoja_ea1].
Calculating the Hessian Matrix¶
Caesar calculates the Hessian matrix using a finite difference
method. This involves calculating the forces on the atoms in atomic configurations
where the atomic displacement
is small. Forces
must be calculated by an electronic structure code, via the
Caesar electronic structure interface.
Caesar minimises the total computational cost of these electronic structure calculations by exploiting crystal symmetry, as calculated by the spglib crystal symmetry library, and by using the non-diagonal supercell method [Lloyd-Williams_Monserrat].
| [Lloyd-Williams_Monserrat] | Lattice dynamics and electron-phonon coupling calculations using nondiagonal supercells. https://doi.org/10.1103/PhysRevB.92.184301 |
Supercells¶
Most vibrations in crystals cause atoms to move in ways which break translational symmetry. This means that it is not sufficient to calculate vibrational properties in the primitive unit cell alone. Instead, properties must be calculated in a supercell containing multiple copies of the primitive unit cell. Properties should be calculated in a number of different supercells, and the size of the supercell should be increased until the results of the calculations converge.
Performing Calculations¶
Running the Caesar Harmonic Calculation Library is a four-stage process.
- Firstly,
caesar setup_harmonicparses the input data, calls spglib to calculate the crystal symmetries, and generates a directory structure containing directories in which all the necessary electronic structure calculations must be run.- Secondly,
caesar run_harmonicperforms the electronic structure calculations, using the Caesar electronic structure interface. There is no connection between the separate electronic structure calculations, so they can be run sequentially, in parallel, or across multiple computers as desired.- Thirdly,
caesar calculate_normal_modesuses the results of the electronic structure calculations to calculate the Hessian matrix and the normal modes of the crystal.- Finally,
caesar calculate_harmonic_observablescalculates the vibrational properties of the crystal under the harmonic approximation.
The stages are separated so that the potentially computationally costly
run_harmonic can be run on a separate computer or computers as needed, and so
that calculate_harmonic_observables can be run repeatedly to calculate different
observables as required.
The calculated properties are written to a harmonic_observables directory. These
can be visualised using the various caesar plot_ utilities.
Each stage of the calculation has its own helptext, which can be accessed through
the caesar executable by calling caesar --help.
Source Code¶
The source code for the Caesar harmonic library is available from the src/harmonic
directory of the Caesar repository