Table of Contents











Phonons are collective atomic motions in solids (either crystaline or amorphous). They are normally described in reciprocal space using wave vectors. Due to the periodic boundary conditions, the Hessian is in principle a matrix of infinite size. The finite-displacement supercell approach is a common method to calculate phonon related properties. If long-range vibrations are important, a large supercell is needed.

     Error in routine phq_readin (1):
     The phonon code with hybrid functionals is not yet available


Theory of direct method to calculate phonons from Hellmann-Feynman forces is documented in details in Phys. Rev. Lett. 78(21), 4063–4066 (1997) with cubic ZrO2 as an example

IR and Raman spectroscopy

Energies for differnt objects are

Some important gradients for computing IR spectra of solids are


A workflow to do phonon calculations at q=0 is (do everything in the same directory) 1. Optimize structure with very low fmax and convert it to POSCAR 2. Generate displacements via phonopy -d --dim="1 1 1" (add -v if you want more structure/symmetry information printed) and the outputs are POSCAR-001 POSCAR-002 ... and phonopy_disp.yaml 3. Compute atomic force for each POSCAR-XXX with any DFT code (e.g. GPAW) 4. Prepare the force constant file FORCE_SETS - Construct by hand (use eV/Å as the force unit) - phonopy -f OUT1 OUT2 ... OUT3 depending on the DFT calculator

  1. Get dynamical matrix
  2. Command line tool: phonopy --qpoints="0 0 0" --writedm -c phonopy_disp.yaml or rename POSCAR to soemthing else and run phonopy --qpoints="0 0 0" --writedm
  3. Python API
import phonopy

# force constants will be loaded from FORCE_SETs by default
phonon = phonopy.load('phonopy_disp.yaml')
q = [0, 0, 0]

# already mass-weighted, with a unit of eV/Å^2/amu
dynamical_matrix = phonon.get_dynamical_matrix_at_q(q)

# harmonic frequencies in THz
freqs = phonon.get_frequencies(q)

Practical accuracy

Dielectric property

The static dielectric tensor $\epsilon_{ij}$ (a 3x3 matrix) is computed as a sum over the ionic $\epsilon^0_{ij}$ and electronic high frequency $\epsilon^\infty_{ij}$ contributions $$ \epsilon_{ij} = \epsilon^0_{ij} + \epsilon^\infty_{ij} $$