Phonon dispersions with Density-Functional Perturbation Theory

These examples illustrate the applications of Density-Functional Perturbation Theory (DFPT) to the the calculation of phonon dispersions and Interatomic Force Constants in simple semiconductors (Silicon).

Getting ready

  1. A short reminder of the relevant theory can be found here
  2. Download the exercise file examples_disp.tgz in a directory of your choice. Uncompress and unpack the file and enter in the resulting directory:
            tar -zxvf examples_disp.tgz
            cd examples_disp
            
  3. The following "make" targets (or equivalents) must have been executed:
    make ph pp tools
    
In the following, $espresso_dir stands for the root directory of the Quantum-ESPRESSO distribution.

Interatomic Force Constants in Real Space

Whenever the entire phonon dispersion is needed, it is convenient to calculate Interatomic Force Constants (IFC) in real space. This calculation involves three steps:
  1. the usual scf step for the unperturbed system
  2. the calculation of phonons and dynamical matrices on a grid of q-vectors (this can be done in a single step)
  3. the transformation of the dynamical matrices from G- to R-space
Since the range of IFC's in real space is short for nonpolar materials, only a relatively coarse grid of q-vectors in the Irreducible Brillouin Zone is needed. For polar materials, a suitable dipolar term is subtracted out from the IFC's; the remaining analytic term is short-ranged and undergoes the same procedure as in the nonpolar case; finally the non-analytic contribution is added back to the dynamical matrices when needed. Once the IFC's are calculated, it is possible to calculate phonon frequencies and eigenvalues at any wavevector, by just reconstructing the dynamical matrix. If the grid of q-vectors is dense enough, the "reconstructed" dynamical matrix is very close to what one gets by direct calculation, also for a q-vector that was not in the grid of q used to calculate the IFC's in real space. Let us call this a "Fourier interpolation". Coming back to our three steps:
  1. scf step as usual:
    $espresso_dir/bin/pw.x < si.scf.in > si.scf.out
    
  2. Sample input file: "si.ph.in". One has to specify the grid of q-vectors as in a Monkhorst-Pack grid, with variables "nq1", "nq2", "nq3". The grid must contain Gamma and it must be a subdivision of the reciprocal lattice (i.e. it must correspond to a supercell in R-space). It is automatically generated. One has also to specify "ldisp=.true." to instruct the code to loop over all q-vectors.
    $espresso_dir/bin/ph.x < si.ph.in > si.ph.out
    
    Note that for each q-vector the dynamical matrices are saved with a different name ("fildyn" + 1-8), while "fildyn" + 0 contains the information on the q-vector grid (type of grid and number of points)
  3. Call auxiliary program "q2r.x" to calculate IFC's in real space. All dynamical matrices are read and Fourier-transformed. Sample input file: "q2r.in"
    $espresso_dir/bin/q2r.x < q2r.in > q2r.out
    
    The output file containing the force constants in a format suitable for further processing is specified in variable "flfrc".

Phonon Dispersions from Interatomic Force Constants

Once the IFC's in real space are available, one can calculate phonons at any value of q using code "matdyn.x". It can calculate phonon Density Of States (DOS) as well. Before starting more serious calculations, it is wise to check whether the quality of the Fourier interpolation performed in the previous step is sufficiently good, i.e. if you need a denser q-vector grid (i.e. a longer range for the IFC's) or not. This can be easily checked by comparing the results of matdyn.x and of ph.x for a q-vector that was not in the grid used in the Fourier interpolation. Once you are convinced that your IFC set is ok, let us proceed to two different types of calculations;
  1. A plot of the phonon dispersions along selected high-symmetry lines. Sample file: "matdyn.in". You must specify the data file ("flfrc") containing the IFC's, and a list of q-points for which the frequencies are to be calculated. You may specify various forms of ASR ('simple' or 'crystal' is ok in this case), where to write the frequencies ("flfrq").
    $espresso_dir/bin/matdyn.x < matdyn.in > matdyn.out
    
    The file selected in flfrc, "si.freq", contains a list of frequencies in a format that can be further processed by another auxiliary code, "plotband.x":
    $espresso_dir/bin/plotband.x si.freq
    
    Answer something sensible for Emin and Emax (0 530 for instance; units are cm-1) and for the file in "xmgr" format (for instance, "siph.xmgr"); nothing (carriage return) to the following question. The file siph.xmgr can be easily plotted using xmgr, xmgrace, or gnuplot plotting programs (see the "plot.gnu" script). Does it look like you expected it?
  2. A plot of the phonon DOS Sample file: "phdos.in". If you choose option "dos=.true." you must specify the grid of q-vectors used to calculate the DOS (variables "nk1", "nk2, "nk3", using the Monkhorst-Pack logic). You should also specify where you want the DOS written ("fldos")
    $espresso_dir/bin/matdyn.x < phdos.in > phdos.out
    
    The file selected in fldos, "si.phdos", contains the DOS in a format tha can immediately be plotted using xmgr, xmgrace, or gnuplot.