###############################################################################
# First-principles predictions of Hall and drift mobilities in semiconductors #
###############################################################################
# S. Ponce, F. Macheda, E.R. Margine, N. Marzari, N. Bonini, and F. Giustino

The folders are arranged as follow:

1) Pseudo
Contains all the pseudopotential used in this work.

2) Software
Contains the EPW codes used which includes the implementation of finite magnetic field and optimized fine grid points selection.
  * src ==> standard code to compute drift and Hall mobilities.
  * src-crta-adi ==> code to compute the mobility in the constant relaxation time approximation (CRTA), see Eq. 8 of the paper.
  * src-crta-DFT-adi ==> same as above but the eigenvalues and velocities are directly computed with DFT and read by EPW.
  * src-crta-DFT-mass ==> used to compute the mobility in the mobility effective mass approximation, see Eq. 6 of the paper.
  * src-quadD ==> Quadrupole are only included in the dynamical matrix and not in the electron-phonon matrix element.
                  Used to produce the third column of Fig. 1.
  * src-spectral ==> Used to get the spectral decomposition and mode decomposition of the scattering rates.
                     Used to produce Fig. 12 and 13 of the paper.
  * src-spectral-gaas ==> Same as above but used for the special case of the electron mobility of GaAs
                          whereby we use a parabolic approximation and the experimental effective mass.
Note: the codes include a primitive version of the Quadrupole whereby the quadrupole values are provided with Q1 and Q2
      in the input and correspond to the only two non-equivalent quadrupole components in our material set.
      This will be generalized in the future to support the full quadrupole tensor.

Also contains a hacked version of the PHonon code [PH-prtgkk] to be able to print the electron-phonon matrix elements and phase factor (used for quadrupole fitting).


3) Calculations
Contains the input and output of the calculations for each of the 10 materials. For each materials, each folder contains
  * bands: DFT bandstructure
  * effects: Contains all the input/output for the following investigated effects:
    * epw-dip-e: effect of using only dipoles.
    * epw-lda-e: effect of using LDA psp instead of PBE.
    * epw-no-e: effect of using no dipole and no quadrupoles.
    * epw-noSOC-e: effect of neglecting SOC.
    * epw-pbe-e: effect of using PBE relaxed lattice parameters instead of experimental one.
    * epw-pbeSG-e: effect of using SG parametrization of PBE pseudopotential.
    * epw-quadD-e: effect of using quadrupoles on the dynamical matrix only.
    * epw-quadG-e: effect of using quadrupoles on the el-ph matrix elements only.
    * epw-vel-e: effect of using the local velocity approximation.
  * eff_mass-h or eff_mass-e: Inputs to compute the DFT effective mass tensor
  * epwXX-crta-h or epwXX-crta-e: Inputs to compute the mobility in the CRTA
  * epwXX-PBE-noWS-h: Coarse grid calculation of the mobility
  * epwXX-PBE-noWS-hfinal: Fine grid calculation of the mobility with temperature reading the PREFIX.epmatwp from epwXX-PBE-noWS-h
  * epwXX-PBE-noWS-h-mode: Mode resolved scattering rates calculations
  * epwXX-PBE-noWS-e-fixed-smearing: Test with fixing smearing for c-BN and GaAs.
  * gkk: DFPT calculation of the reference deformation potential points.
         This requires a modified version of the PHonon code, provided in the EPW folder.
  * phonon-X: phonon calculation for the converged coarse electron and phonon grids.
  * Quadrupoles: Random q-points close to Gamma used for Quadrupoles fitting.
  * w90-XX-h: Wannier90 calculation for the isosurface display of Fig. 2 of the paper
where XX corresponds to the coarse k-point grid used.

4) Scripts
Contains useful python scripts.
  * Quadrupole: Contains the data and scripts to fit the quadrupoles for all materials.

Important note: in the version of the code provided here as well as in all the EPW input files, there is a
--------------- factor (2*pi/a)*sqrt(2) error. This does not affect the results in any way except the reported value of quadrupoles.
                To obtain the values reported in Table IV of the manuscript, you just take (Q_old/sqrt(2)) * (a/(2*pi)) = Q_correct.