For materials with strong lattice anharmonicity, it is critical to incorporate anharmonic phonons in electron-phonon calculations, take SrTiO3 for example (see this paper). PERTURBO provide interface to the TDEP package for finite temperature lattice dynamics.

## Compilation

**Note:**The TDEP version we tested and recommend is the version committed on Jun 14, 2018. Newer versions might also work, but their compatibility with PERTURBO have not been extensively tested.

To turn on TDEP interface in PERTURBO, one needs to **compile** PERTURBO with a flag `-D__TDEP`

and link with the TDEP library, which can be done by adding the following lines to `make.sys`

of PERTURBO.

```
#For TDEP interface
TDEP_root= ## top directory of TDEP ##
FFLAGS += -D__TDEP
IFLAGS += -I${TDEP_root}/inc/libolle
LIBOBJS += ${TDEP_root}/lib/libolle.a
```

## Usage

To incorporate TDEP interatomic force constants in PERTURBO, one needs to prepare two key files from TDEP, namely *infile.ucposcar* and *infile.forceconstant*, and set `tdep = .true.`

in *qe2pert.in* (the main input file for `qe2pert.x`

).

Here is an example of the input file for `qe2pert.x`

with the TDEP force constants:

```
&qe2pert
prefix = 'sto'
outdir = './tmp'
phdir = './phonon/References/save'
nk1 = 4
nk2 = 4
nk3 = 4
num_wann = 3
dft_band_min = 21
dft_band_max = 23
lwannier = .true.
tdep = .true. ! flag to turn on tdep
/
```

Once the TDEP force constants are employed in *‘prefix’_epr.h5*, `perturbo.x`

will use them automatically, there is no need to modify the input file for `perturbo.x`

.

In the PERTURBO-TDEP interface, `qe2pert.x`

reads data from *infile.ucposcar* and *infile.forceconstant*, maps the TDEP force contants to the Wigner Seitz Supercell (WS) generated by PERTURBO, and then writes them to *‘prefix’_epr.h5*. If any pair of force constants in *infile.forceconstant* cannot be mapped to WS, `qe2pert.x`

will issue a runtime error. To solve this issue, one needs to either increase the coarse \(\mathbf{q}\)-grid or decrease the `rc2`

parameter (the cutoff for the 2nd force constants) in TDEP.

## Technical details

### Treatment of long-range dipole-dipole corrections in TDEP and PERTURBO

For more details of the dipole-dipole corrections for polar materials, we refer the users to this paper and its Supplemental Material.

In both TDEP and PERTURBO, only the short-ranged forceconstants are stored in the form of interatomic force constants (IFC) for polar materials, while the long-ranged dipole-dipole contributions to the dynamical matrices are computed on the fly, using the dielectric tensor, Born effective charges, and Ewald parameters.

There are several types of dipole-dipole corrections implemeneted in TDEP. PERTURBO uses the polar correction method proposed in this paper, which is implemented in TDEP as the correction type `3`

.

Here is an example to run TDEP:

```
extract_forceconstants -rc2 5 --polar -pc 3
```

Here, `--polar`

means the dipole-dipole correction is on for polar materials, and `-pc 3`

indicates using the polar correction scheme introduced in our 2018 PRL paper.

The *infile.forceconstant* file from TDEP contains the short-ranged forceconstants extracted by fitting the displacement and subtracted forces and the quantities to compute the long-ranged (dipole-dipole) forceconstant, such as the polar correction type, dielectric tensor, the Born effective charges, and so on.

This is an example of the *infile.forceconstant* file:

```
3 # This is a forceconstant for a polar material.
6.255018086086 0.000000000000 0.000000000000 Dielectric tensor xx xy xz
0.000000000000 6.255018086086 0.000000000000 Dielectric tensor yx yy yz
0.000000000000 0.000000000000 6.255018086086 Dielectric tensor zx zy zz
0.99826965332031237 # Coupling parameter in Ewald summation
4 # number of irreducible components in the Born charges
```

The number `3`

in the first line indicates the polar correction type. The fifth line shows the Ewald summation parameters.

`qe2pert.x`

will check the polar correction type. If PC is `0`

, then the polar correction is turned off. If the correction type is `3`

, polar correction is turned on, otherwise, `qe2pert.x`

will issue a runtime error. If correction type is `3`

, dielectric tensor, Born effective charnges, and Ewald parameter will be written to the *‘prefix’_epr.h5* file.

For more details, including running TDEP with VASP and Quantum Espresso, the issue with Born effective charge, etc., please refer to this document.