# Implementation

PERTURBO is written in modern Fortran95 with hybrid parallelization (MPI and OpenMP). The main output formats are HDF5 and YAML, which are portable from one machine to another and are convenient for postprocessing using high-level languauges (e.g., Python). PERTURBO has a core software, called `perturbo.x`

, for the electron transport calculations and an interface software, called `qe2pert.x`

, to read output files of Quantum Espresso (QE, version 7.0) and Wannier90 (W90, version >= 3.0.0). The `qe2pert.x`

interface software generates an HDF5 file, which is then read from the core `perturbo.x`

software. In principle, any other third-party density functional theory (DFT) codes (e.g., VASP) can use PERTURBO as long as the interface of the DFT codes can prepare an HDF5 output file (called *prefix*_epr.h5) for PERTURBO to read.

# Supported Features

The public version of PERTURBO has the following stable features:

- Phonon-limited carrier mobility, electrical conductivity and Seebeck coefficient
- Imaginary part of e-ph self-energy and e-ph scattering rates
- Phonon-limited carrier mean free path and relaxation times
- Magnetotransport calculations
- Ultrafast carrier dynamics with fixed phonon occupation
- Electron transport in the presence of high electric fields
- Calculations on magnetic systems with collinear spin
- Interpolated electronic band structure and phonon dispersion
- e-ph matrix elements for nonpolar and polar materials, and their Wannier interpolation
- Interface to TDEP for anharmonic phonons

All the calculations above can be done as a function of temperature and doping, for nonpolar and polar materials.

**Note:**The current PERTURBO version supports both norm-conserving and ultrasoft pseudopotentials. Currently, the PAW pseudopotentials are not supported.

# Code Performance and Scaling / Parallelization

This section discusses the scaling performance of the publicly available version of PERTURBO. Since its inception, PERTURBO implemented a hybrid MPI / OpenMP parallelization that allows for outstanding scaling on high-performance computing (HPC) platforms. To showcase the scaling performance, we present a calculation of the imaginary part of the electron-phonon self energy (calculation mode imsigma) in silicon using 72x72x72 electron **k**- and phonon **q**-point grids. The scaling test was performed using the Intel Xeon Phi 7250 Processors at the National Energy Research Scientific Computing Center (NERSC). As seen from this figure, PERTURBO shows an almost linear scaling up to **500,000 cores** (the deviation from the linear scaling at 500,000 cores is less than 5%). This result, together with our ongoing work on the OpenACC GPU parallelization, shows the preparedness of PERTURBO for the future HPC architectures and for the Exascale computing. We also plan to make Perturbo available as a module on NERSC in the near future.

# Research Team

The PERTURBO code is developed in Prof. Marco Bernardi’s research group at Caltech. For more information, we invite you to visit the group website.