Phonon calculation is presently a two-step process: First, you have to find the ground-state atomic and electronic configuration; Second, you can calculate phonons using Density-Functional Perturbation Theory. Further processing to calculate Interatomic Force Constants, to add macroscopic electric field and impose Acoustic Sum Rules at q=0 may be needed.
Since version 4 it is possible to safely stop execution of the phonon code using the same mechanism of the pw.x code, i.e. by creating a file prefix.EXIT in the working directory. Execution can be resumed by setting 'recover=.true.' in the subsequent input data.
The phonon code ph.x calculates normal modes at a given q-vector, starting
from data files produced by pw.x with a simple SCF calculation.
NOTE: the alternative procedure in which a band-structure calculation
with calculation='phonon' was performed as an intermediate step is no
longer implemented since version 4.1. It is also no longer needed to
specify lnscf=.true. for q
The output data file appear in the directory specified by variables outdir,
with names specified by variable prefix. After the output file(s) has been
produced (do not remove any of the files, unless you know which are used
and which are not), you can run ph.x.
The first input line of ph.x is a job identifier. At the second line the
namelist &INPUTPH starts. The meaning of the variables in the namelist
(most of them having a default value) is described in file INPUT PH. Variables
outdir and prefix must be the same as in the input data of pw.x. Presently
you must also specify amass (real, dimension ntyp): the atomic mass of each
atomic type.
After the namelist you must specify the q-vector of the phonon mode.
This must be the same q-vector given in the input of pw.x.
Notice that the dynamical matrix calculated by ph.x at q = 0 does not
contain the non-analytic term occuring in polar materials, i.e. there is no
LO-TO splitting in insulators. Moreover no Acoustic Sum Rule (ASR) is
applied. In order to have the complete dynamical matrix at q = 0 including
the non-analytic terms, you need to calculate effective charges by specifying
option epsil=.true. to ph.x.
Use program dynmat.x to calculate the correct LO-TO splitting, IR cross
sections, and to impose various forms of ASR. If ph.x was instructed to
calculate Raman coefficients, dynmat.x will also calculate Raman cross sections
for a typical experimental setup.
A sample phonon calculation is performed in Example 02.
First, dynamical matrices D(q) are calculated and saved for a suitable uniform
grid of q-vectors (only those in the Irreducible Brillouin Zone of the
crystal are needed). Although this can be done one q-vector at the time, a
simpler procedure is to specify variable ldisp=.true. and to set variables
nq1,nq2,nq3 to some suitable Monkhorst-Pack grid, that will be automatically
generated, centered at q = 0. Do not forget to specify epsil=.true.
in the input data of ph.x if you want the correct TO-LO splitting in polar
materials.
Second, code q2r.x reads the D(q) dynamical matrices produced in the
preceding step and Fourier-transform them, writing a file of Interatomic Force
Constants in real space, up to a distance that depends on the size of the grid
of q-vectors. Program matdyn.x may be used to produce phonon modes and
frequencies at any q using the Interatomic Force Constants file as input.
See Example 06.
The calculation of electron-phonon coefficients in metals is made difficult by
the slow convergence of the sum at the Fermi energy. It is convenient to
calculate phonons, for each q-vector of a suitable grid, using a
smaller k-point
grid, saving the dynamical matrix and the self-consistent first-order variation
of the potential (variable fildvscf). Then a non-SCF calculation with
a larger k-point grid is performed. Finally the electron-phonon calculation is
performed by specifying elph=.true., trans=.false., and the input files
fildvscf, fildyn. The electron-phonon coefficients are calculated using several
values of gaussian broadening (see PH/elphon.f90) because this quickly
shows whether results are converged or not with respect to the k-point grid
and Gaussian broadening. See Example 07.
All of the above must be repeated for all desired q-vectors and the final
result is summed over all q-vectors, using pwtools/lambda.x. The input
data for the latter is described in the header of pwtools/lambda.f90.
0
4.2.0.2 Calculation of interatomic force constants in real space
4.2.0.3 Calculation of electron-phonon interaction coefficients
Next: 4.3 Post-processing
Up: 4 Using PWscf
Previous: 4.1 Electronic and ionic
Contents
Paolo Giannozzi
2010-04-08