In this page, we will discuss the calculation modes of PERTURBO related to the interpolation. Here are the value of calc_mode for the interpolation modes:

  • 'bands': interpolate electronic band structures using Wannier functions.
  • 'phdisp': interpolate phonon dispersion by Fourier transforming real-space interatomic force constants.
  • 'ephmat': interpolate e-ph matrix elements using Wannier functions.

Electronic bands
calc_mode = ‘bands’

Users specify three variables in the input file (pert.in)

  • prefix: the same prefix used in ‘prefix’_epwan.h5
  • calc_mode: set to 'bands'
  • fklist: the filename of a file containing the high-symmetry crystal momentum path or k list

Here is the input file or namelist (pert.in):

&perturbo
 prefix = 'si'
 calc_mode = 'bands'
 fklist = 'si_band.kpt'
/

In this example, fklist='si_band.kpt', the file si_band.kpt containing the \(\mathbf{k}\) point list:

6
0.500   0.500   0.500   50
0.000   0.000   0.000   50
0.500   0.000   0.500   20
0.500   0.250   0.750   20
0.375   0.375   0.750   50
0.000   0.000   0.000   1

The first line specifies how many lines there are below the first line. Columns 1-3 give, respectively, the \(x\), \(y\), and \(z\) coordinates of a crystal momentum in crystal coordinates. The last column is the number of points from the current crystal momentum to the next crystal momentum. One can also provide an explicit \(\mathbf{k}\) point list, rather than specifying the path, by providing the number of \(\mathbf{k}\) points in the first line, the coordinates of each \(\mathbf{k}\) point, and setting the values in the last column to 1.

Before running perturbo.x, remember to put si_epwan.h5 in the current directory “pert-band” since perturbo.x needs to read si_epwan.h5. You may choose to copy the HDF5 file using

$ cp ../../qe2pert/si_epwan.h5 .

But the size of the HDF5 file is usually quite large, creating a soft link that point to the original HDF5 file is strongly recommended:

$ ln -sf ../../qe2pert/si_epwan.h5

Run perturbo.x:

$ mpirun -n 1 perturbo.x -npools 1 -i pert.in > pert.out 

It takes just a few seconds to obtain the interpolated band structure. We obtain an output file called ‘prefix’.bands (in this case, si.bands) with the following format:

 0.0000000      0.50000    0.50000    0.50000     -3.4658249872
 ......
 3.7802390      0.00000    0.00000    0.00000     -5.8116812661
 
 ......
 ......
 
 0.0000000      0.50000    0.50000    0.50000     13.6984850767
 ......
 3.7802390      0.00000    0.00000    0.00000      9.4608102223

Note that there are 8 blocks in this example, one for each of the 8 bands, because we use 8 Wannier functions in the Wannierization procedure in this example. The 1st column is an irrelevant coordinate used to plot the band structure. The 2nd to 4th columns are the \(x\), \(y\), and \(z\) coordinates of the crystal momenta in crystal coordinates. The 5th column is the energy, in eV units, of each electronic state.

Phonon dispersion
calc_mode = ‘phdisp’

Users specify three variables in the input file (pert.in):

  • prefix: the same prefix used in ‘prefix’_epwan.h5
  • calc_mode: set to ‘phdisp’
  • fqlist: the filename of a file containing the high-symmetry crystal momentum path or q list

Here is the input file (pert.in):

&perturbo
 prefix = 'si'
 calc_mode = 'phdisp'
 fqlist = 'si_phdisp.qpt'
/

In this example, fqlist='si_phdisp.qpt', and the file si_phdisp.qpt contains a crystal momentum path or list with the same format as the file specified in fklist (in the previous section).

Remember to link (or copy) si_epwan.h5 in the current directory using

ln -sf ../../qe2pert/si_epwan.h5.


Run perturbo.x:

$ mpirun -n 1 perturbo.x -npools 1 -i pert.in > pert.out 

It takes a few seconds to obtain the phonon dispersion. We obtain an output file called ‘prefix’.phdisp (in this case, si.phdisp) with the following format:

0.0000000      0.50000    0.50000    0.50000     12.9198400723
......
3.7802390      0.00000    0.00000    0.00000     -0.0000024786

......
......

0.0000000      0.50000    0.50000    0.50000     45.6922098051
......
3.7802390      0.00000    0.00000    0.00000      0.0000014170

Note that there are 6 blocks, one for each of the to 6 phonon modes in silicon. The 1st column an irrelevant coordinate used to plot the phonon dispersion. The 2nd to 4th columns are the \(x\), \(y\), and \(z\) coordinates of the crystal momenta, in crystal coordinate. The 5th column is the phonon energy in meV units.

E-ph matrix elements
calc_mode = ‘ephmat’

Requires to specify at least 7 variables:

  • prefix: the same prefix as in ‘prefix’_epwan.h5
  • calc_mode: set to ‘ephmat’
  • fklist: the file containing a list of \(\mathbf{k}\) points (for the format of the list, please see the section on calc_mode='bands')
  • fqlist: the file containing a list of \(\mathbf{q}\) points (for the format of the list, please see the section on calc_mode='bands')
  • band_min, band_max: bands used for the band summation in computing e-ph matrix elements
  • phfreq_cutoff: phonon energy (meV) smaller than the cutoff will be ignored

In a typical scenario, the user wants to check if the interpolated e-ph matrix elements match with the density functional perturbation theory (DFPT) result. Here we assume that users know how to obtain the DFPT e-ph matrix elements from the PHONON package in QE.

Here is the input file (pert.in):

&perturbo
 prefix = 'si'
 calc_mode = 'ephmat'
 fklist = 'eph.kpt'
 fqlist = 'eph.qpt'

 band_min = 2
 band_max = 4

 phfreq_cutoff = 1   !meV
/

In this example, we compute the e-ph matrix elements summed over the bands from 2 to 4. The band index here refers to the band index of the Wannier functions, and it may not be the same as the band index in the DFT output from QE because sometimes bands are excluded in the Wannierization procedure. Make sure you know band range appropriate for your calculation, and provide accordingly band_min and band_max.

The variable phfreq_cutoff is used to avoid numerical instabilities in the phonon calculations, and we recommend using a value between 0.5 and 2 meV (unless you know that phonons in that energy range play a critical role). Do not set phfreq_cutoff to a large value, otherwise too many phonon modes will be excluded from the calculations.

For the format of fklist or fqlist files, please refer to the section on calc_mode=’bands’.

Before running perturbo.x, ensure that three files exist in the current directory “pert-ephmat”:

  • ‘prefix’_epwan.h5: here si_epwan.h5
  • fklist: here eph.kpt
  • fqlist: here eph.qpt

Run perturbo.x:

$ mpirun -n 1 perturbo.x -npools 1 -i pert.in > pert.out 

The calculation typically takes a few minutes. The output file, called ‘prefix’.ephmat, contains the absolute values of the e-ph matrix elements summed over bands from band_min to band_max. In our example, we obtain the output file si.ephmat, which is shown next:

# ik    xk     iq     xq     imod   omega(meV)    deform. pot.(eV/A)     |g|(meV)
  1   0.00000   1   0.00000  001    12.919840     0.219927308382E+00   0.118026594146E+02
  ......
  ......

The 1st column is a dummy index for the \(\mathbf{k}\) point. The 2nd column is the \(\mathbf{k}\) point coordinate used for plotting. The 3rd and 4th columns are the dummy index and the \(\mathbf{q}\) point coordinate used for plotting, respectively. The 5th column is the phonon mode index. The 6th column is the phonon energy (in meV). The 7th column is the deformation potential (in eV/Å units), namely the expectation value of the phonon perturbation potential with respect to the initial and final electronic states. The 8th column is the absolute values of the e-ph matrix elements (meV units) summed over the number of bands specified by the user.