Phononlimited mobility¶
This tutorial discusses how to compute phononlimited carrier mobilities in semiconductors within the selfenergy relaxation time approximation (SERTA) and the momentum relaxation time approximation (MRTA), taking the specific case of AlAs as an example.
It is assumed the user has already completed the two tutorials RF1 and RF2, and that he/she is familiar with the calculation of ground state and response properties, in particular phonons, Born effective charges and dielectric tensor. The user should have read the introduction tutorial for the EPH code before running these examples.
This lesson should take about 1.5 hour.
Formalism¶
Before starting, it is worth summarizing the most important equations implemented in the code. For a more detailed description of the ABINIT implementation, please consult [Brunin2020b].
Our goal is to find an approximated solution to the linearized Boltzmann transport equation (BTE) [Ashcroft1976] within the SERTA/MRTA approximation [Giustino2017]. SERTA/MRTA are more accurate than the constant relaxation time approximation (CRTA) as the microscopic eph scattering mechanism is now included thus leading to carrier lifetimes \tau that depend on the band index n and the wavevector \kk. Keep in mind, however, that both SERTA and MRTA are still a approximated solutions to the BTE and that a more rigorous approach would require to solve the BTE iteratively and/or the inclusion of manybody effects at different levels. For a review of the different possible approaches see the review paper [Ponce2020].
In the SERTA, the transport linewidth is given by the imaginary part of the electronphonon (eph) selfenergy evaluated at the KS energy [Giustino2017]. The linewidth of the electron state n\kk due to the scattering with phonons is given by
where \nu is the phonon mode, m the final electron state (after the scattering), n_\qnu(T) is the BoseEinstein occupation number, f_{m\kk+\qq}(T, \ef) is the FermiDirac occupation function, \enk is the energy of the electron state, and \wqnu is the phonon frequency for the phonon wavevector \qq. The integration is performed over the BZ for the phonon wavectors and \gkkp is the eph matrix element. Only the FanMigdal (FM) part contributes to the linewidth as the DebyeWaller term is Hermitian.
In the SERTA, the transport lifetime \tau_{n\mathbf{k}} is inversely proportional to the eph selfenergy linewidth:
In the MRTA, the backscattering is included by expressing the transport lifetime as:
where \vnka is the \alphath Cartesian component of the velocity operator
that can be computed with DFPT.
Important
Note that the present formalism does not take into account contributions to the transport lifetime given by other scattering processes such as defects, ionized impurities in doped semiconductors, ee interaction, grain boundary scattering etc. These effects may be relevant depending on the system and/or the temperature under investigation but they are not treated in this tutorial as here we are mainly focusing on room temperature and nondegenerate semiconductors, conditions in which eph scattering is one of the most important contributions.
Last but not least, we are assuming that carriers can be described by Bloch states with a welldefined excitation energy (band picture). Polaronic effects such as those discussed in this tutorial are not captured by the present approach.
The generalized transport coefficients are defined by:
These quantities can be used to obtain different transport tensors such as the electrical conductivity \sigma, Peltier (\Pi) and Seebeck coefficient (S), and charge carrier contribution to the thermal conductivity tensors [Madsen2018]. The electrical conductivity tensor, for instance, is given by
and can be divided into hole and electron contributions
where n_e and n_h are the electron and hole concentrations in the conduction and valence bands respectively, and \mu_e and \mu_h are the electron and hole mobilities, which can be obtained by selecting the conduction or valences states n in Eq. \eqref{eq:transport_lc}.
For electrons, we have
where n\in\text{CB} denotes states in the conduction bands. Similar expressions hold for holes. At zero total carrier concentration, the Fermi level \ef is located inside the band gap so that n_e = n_h.
A typical computation of mobilities requires different steps that are summarized in the introduction page for the EPH code. Here we only describe the eph related part, i.e the bluebox in the workflow presented in the previous page. For this purpose, we use eph_task 4 to compute only the imaginary part of the SE at the KS energy and explain other important aspects related to this kind of calculation.
All the results of the calculation are saved in netcdf format in the SIGPEPH.nc file, while the main output file is used to output selected quantities, mainly for testing purposes. Postprocessing and visualisation tools are provided by AbiPy. See e.g. the README of AbiPy and the AbiPy tutorials.
Note
Supposing you made your own install of ABINIT, the input files to run the examples are in the ~abinit/tests/ directory where ~abinit is the absolute path of the abinit toplevel directory. If you have NOT made your own install, ask your system administrator where to find the package, especially the executable and test files.
To execute the tutorials, create a working directory (Work*
) and
copy there the input files and the files file of the lesson. This will be explicitly mentioned in the first lessons,
that will tell you more about the files file (see also section 1.1).
The files file ending with _x (e.g. tbase1_x.files) must be edited every time you start to use a new input file.
Most of the tutorials do not rely on parallelism (except specific tutorials on parallelism). However you can run most of the tutorial examples in parallel, see the topic on parallelism.
In case you work on your own PC or workstation, to make things easier, we suggest you define some handy environment variables by executing the following lines in the terminal:
export ABI_HOME=Replace_with_the_absolute_path_to_the_abinit_top_level_dir export PATH=$ABI_HOME/src/98_main/:$PATH export ABI_TESTS=$ABI_HOME/tests/ export ABI_PSPDIR=$ABI_TESTS/Psps_for_tests/ # Pseudopotentials used in examples.
Examples in this tutorial use these shell variables: copy and paste the code snippets into the terminal (remember to set ABI_HOME first!). The ‘export PATH’ line adds the directory containing the executables to your PATH so that you can invoke the code by simply typing abinit in the terminal instead of providing the absolute path.
Ground state and phonons of fcc AlAs¶
Before beginning, you might consider creating a different subdirectory to work in. Why not create Work_eph4mob ?
The file teph4mob_1.in is the input file for the first step (GS + DFPT perturbations for all the \qqpoints in the IBZ). Copy it to the working directory with:
cd $ABI_TUTORESPFN/Input mkdir Work_eph4mob cd Work_eph4mob cp ../teph4mob_1.in .
# Crystalline AlAs: computation of the phonon spectrum ndtset 10 # Set 1: ground state selfconsistency getwfk1 0 # Cancel default kptopt1 1 # Automatic generation of k points, taking # into account the symmetry nqpt1 0 # Cancel default tolvrs1 1.0d18 # SCF stopping criterion (modify default) rfphon1 0 # Cancel default # Q vectors for all datasets # Complete set of symmetryinequivalent qpt chosen to be commensurate # with the kpt mesh so that only one set of GS wave functions is needed. # Generated automatically by running GS calculation with # # kptopt = 1 # nshift = 0 # shiftk = 0 0 0 # # (to include gamma) and taking output kpt set file. # Set nstep=1 so that only one iteration is performed or use `abinit ... dryrun` command line option. nqpt 1 # One qpt for each dataset (only 0 or 1 allowed) # This is the default for all datasets and must # be explicitly turned off for dataset 1. qpt2 0.00000000E+00 0.00000000E+00 0.00000000E+00 qpt3 0.00000000E+00 0.00000000E+00 0.00000000E+00 qpt4 2.50000000E01 0.00000000E+00 0.00000000E+00 qpt5 5.00000000E01 0.00000000E+00 0.00000000E+00 qpt6 2.50000000E01 2.50000000E01 0.00000000E+00 qpt7 5.00000000E01 2.50000000E01 0.00000000E+00 qpt8 2.50000000E01 2.50000000E01 0.00000000E+00 qpt9 5.00000000E01 5.00000000E01 0.00000000E+00 qpt10 2.50000000E01 5.00000000E01 2.50000000E01 # Set 2: Response function calculation of d/dk wave function iscf2 3 # Need this nonselfconsistent option for d/dk kptopt2 2 # Modify default to use timereversal symmetry rfphon2 0 # Cancel default rfelfd2 2 # Calculate d/dk wave function only tolwfr2 1.0d22 # Use wave function residual criterion instead # Set 3: Response function calculation of Q=0 phonons and electric field perturbation. getddk3 2 # Take d/dk wave functions from last dataset kptopt3 2 # Modify default to use timereversal symmetry rfelfd3 3 # Electricfield perturbation response only # Sets 410: Finitewavevector phonon calculations (defaults for all datasets) getwfk 1 # Use GS wave functions from dataset 1 kptopt 3 # Need full kpoint set for finiteQ response rfphon 1 # Do phonon response rfatpol 1 2 # Treat displacements of all atoms rfdir 1 1 1 # Do all directions (symmetry will be used) tolvrs 1.0d8 # This default is active for sets 310 ####################################################################### # Common input variables # Definition of the unit cell acell 3*10.61 # This is equivalent to 10.61 10.61 10.61 rprim 0.0 0.5 0.5 # In tutorials 1 and 2, these primitive vectors 0.5 0.0 0.5 # (to be scaled by acell) were 1 0 0 0 1 0 0 0 1 0.5 0.5 0.0 # that is, the default. # Definition of the atom types ntypat 2 # There are two types of atom znucl 13 33 # The keyword "znucl" refers to the atomic number of the # possible type(s) of atom. The pseudopotential(s) # mentioned in the "files" file must correspond # to the type(s) of atom. Here, type 1 is the Aluminum, # type 2 is the Arsenic. # Definition of the atoms natom 2 # There are two atoms typat 1 2 # The first is of type 1 (Al), the second is of type 2 (As). xred 0.0 0.0 0.0 0.25 0.25 0.25 # Gives the number of band, explicitly (do not take the default) nband 4 # Exchangecorrelation functional ixc 1 # LDA Teter Pade parametrization # Definition of the planewave basis set ecut 3.0 # Maximal kinetic energy cutoff, in Hartree # This is way too low!! # Definition of the kpoint grid ngkpt 4 4 4 nshiftk 4 # Use one copy of grid only (default) shiftk 0.0 0.0 0.5 # This gives the usual fcc MonkhorstPack grid 0.0 0.5 0.0 0.5 0.0 0.0 0.5 0.5 0.5 # Definition of the SCF procedure nstep 25 # Maximal number of SCF cycles diemac 9.0 # Although this is not mandatory, it is worth to # precondition the SCF cycle. The model dielectric # function used as the standard preconditioner # is described in the "dielng" input variable section. # The dielectric constant of AlAs is smaller that the one of Si (=12). pp_dirpath "$ABI_PSPDIR" pseudos "13al.981214.fhi, PseudosTM_pwteter/33as.pspnc" #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = abinit #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in, #%% [files] #%% files_to_test = #%% teph4mob_1.out, tolnlines= 90, tolabs= 3.000e02, tolrel= 6.000e03 #%% [paral_info] #%% max_nprocs = 2 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH #%% description = #%% Preparatory steps for computing phononlimited mobility in semiconductors #%%<END TEST_INFO>
This step might be quite timeconsuming so you may want to immediately start the job in background with:
abinit teph4mob_1.in > teph4mob_1.log 2> err &
The calculation is done for AlAs, the same crystalline material as in the first two DFPT tutorials. For further details about this first step, please refer to the first and second tutorials on DFPT.
Important
Since AlAs is a polar semiconductor, we need to compute with DFPT the Born effective charges \bm{Z}^* as well and the static dielectric tensor \bm{\ee}^\infty. These quantities are then used to treat the longrange (LR) part of the dynamical matrix in the Fourier interpolation of the phonon frequencies as well as in the Fourier interpolation of the DFPT potentials, as discussed in the EPH introduction.
Merging the derivative databases and potentials¶
Once the DFPT calculation is completed, use the mrgddb tool to merge the eight partial DDB files corresponding to datasets 310 of teph4mob_1. These partial DDB files contain the dynamical matrices for the 8 \qqpoints in the IBZ, as well as the dielectric tensor and the Born effective charges. Name the new DDB file teph4mob_2_DDB.
File $ABI_TUTORESPFN/Input/teph4mob_2.in is an example of input file for mrgddb.
teph4mob_2_DDB AlAs phonons on 4 4 4 mesh 8 teph4mob_1o_DS3_DDB teph4mob_1o_DS4_DDB teph4mob_1o_DS5_DDB teph4mob_1o_DS6_DDB teph4mob_1o_DS7_DDB teph4mob_1o_DS8_DDB teph4mob_1o_DS9_DDB teph4mob_1o_DS10_DDB #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = mrgddb #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in, #%% [files] #%% files_to_test = #%% teph4mob_2.stdout, tolnlines= 57, tolabs= 3.000e02, tolrel= 6.000e03 #%% [paral_info] #%% max_nprocs = 1 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH #%% description = Merge DDB files #%%<END TEST_INFO>
Copy the file in the Work_eph4mob directory, and run mrgddb using:
mrgddb < teph4mob_2.in
Tip
Alternatively, one can specify the name of the output DDB and the list of input DDB files to be merged directly via the command line. This approach is quite handy especially if used in conjuction with shell globbing and the “star” syntax:
mrgddb teph4mob_2_DDB teph4mob_1o_DS*_DDB
Use mrgddb –help to access the documentation.
Now use the mrgdv tool to merge the 29 DFPT POT files corresponding to datasets 310 of teph4mob_1. Name the new file teph4mob_3_DVDB.
File $ABI_TUTORESPFN/Input/teph4mob_3.in is an example of input file for mrgdv.
teph4mob_3_DVDB 29 teph4mob_1o_DS3_POT1 teph4mob_1o_DS3_POT4 teph4mob_1o_DS3_POT10 teph4mob_1o_DS4_POT1 teph4mob_1o_DS4_POT2 teph4mob_1o_DS4_POT4 teph4mob_1o_DS4_POT5 teph4mob_1o_DS5_POT1 teph4mob_1o_DS5_POT2 teph4mob_1o_DS5_POT4 teph4mob_1o_DS5_POT5 teph4mob_1o_DS6_POT1 teph4mob_1o_DS6_POT4 teph4mob_1o_DS7_POT1 teph4mob_1o_DS7_POT2 teph4mob_1o_DS7_POT3 teph4mob_1o_DS7_POT4 teph4mob_1o_DS7_POT5 teph4mob_1o_DS7_POT6 teph4mob_1o_DS8_POT1 teph4mob_1o_DS8_POT3 teph4mob_1o_DS8_POT4 teph4mob_1o_DS8_POT6 teph4mob_1o_DS9_POT1 teph4mob_1o_DS9_POT4 teph4mob_1o_DS10_POT1 teph4mob_1o_DS10_POT2 teph4mob_1o_DS10_POT4 teph4mob_1o_DS10_POT5 #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = mrgdv #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in #%% [files] #%% files_to_test = #%% teph4mob_3.stdout, tolnlines= 57, tolabs= 3.000e02, tolrel= 6.000e03 #%% [paral_info] #%% max_nprocs = 1 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH #%% description = Merge DFPT potentials to generate DVDB database. #%%<END TEST_INFO>
You can copy it in the Work_eph4mob directory, and then merge the files with:
mrgdv < teph4mob_3.in
Tip
Alternatively, one can use the command line.
mrgdv merge teph4mob_3_DVDB teph4mob_1o_DS*_POT*
Use mrgdv –help to access the documentation.
We now have all the phononrelated files needed to compute the mobility. The DDB will be used to Fourier interpolate the phonon frequencies on an arbitrarily dense \qqmesh while the DVDB will be used to Fourier interpolate the DFPT scattering potentials [Brunin2020b]. The only ingredient that is still missing is the WFK file with the GS wavefunctions on the dense \kkmesh.
Warning
In real computations, you should always compute the electronic band structure along a \kkpath to have a qualitative understanding of the band dispersion, the position of the band edges, and the value of the band gap(s). Note also that there are several parts of the EPH code in which it is assumed that no vibrational instability is present so you should always look at the phonon spectrum computed by the code. Do not expect to obtain meaningful results if purely imaginary phonon frequencies (a.k.a negative frequencies) are present.
Calculation of the dense WFK file¶
Converging transport properties requires careful convergence tests both for \kkpoints and \qqpoints. A dense \qqmesh is needed to obtain highquality lifetimes, whereas a dense \kksampling is needed to have a good sampling of the electron (hole) pockets. All these studies are explained later and left as an additional excercise. In this tutorial, indeed, we need to find some compromise between accuracy and computational cost hence a single \kkmesh is used in all our examples.
The computation of the dense WFK file is similar to a NSCF band structure computation. The main difference is that we need wavefunctions on a \kkmesh instead of a \kkpath because these wavevectors are needed to evaluate integrals in the BZ. The file $ABI_TUTORESPFN/Input/teph4mob_4.in is an example of such computation.
# Crystalline AlAs : computation of the dense WFK ndtset 3 # General input data for GS and WFK ecut 3 nband 8 # Ground state ngkpt1 4 4 4 nshiftk 1 shiftk 0.0 0.0 0.0 tolvrs1 1.0d18 prtwf 1 # need GS wavefunctions for further runs kptopt 1 prtden1 1 kptopt1 1 # Automatic generation of k points, taking # into account the symmetry # Dense WFK iscf2 2 getden2 1 ngkpt2 24 24 24 tolwfr2 1.0d20 # Denser WFK for the doublegrid iscf3 2 getden3 1 ngkpt3 48 48 48 tolwfr3 1.0d20 ####################################################################### # Common input variables # Definition of the unit cell acell 3*10.61 # This is equivalent to 10.61 10.61 10.61 rprim 0.0 0.5 0.5 # In tutorials 1 and 2, these primitive vectors 0.5 0.0 0.5 # (to be scaled by acell) were 1 0 0 0 1 0 0 0 1 0.5 0.5 0.0 # that is, the default. # Definition of the atom types ntypat 2 # There are two types of atom znucl 13 33 # The keyword "znucl" refers to the atomic number of the # possible type(s) of atom. The pseudopotential(s) # mentioned in the "files" file must correspond # to the type(s) of atom. Here, type 1 is the Aluminum, # type 2 is the Arsenic. # Definition of the atoms natom 2 # There are two atoms typat 1 2 # The first is of type 1 (Al), the second is of type 2 (As). xred 0.0 0.0 0.0 0.25 0.25 0.25 # Exchangecorrelation functional ixc 1 # LDA Teter Pade parametrization # Definition of the SCF procedure nstep 25 # Maximal number of SCF cycles diemac 9.0 # Although this is not mandatory, it is worth to # precondition the SCF cycle. The model dielectric # function used as the standard preconditioner # is described in the "dielng" input variable section. # The dielectric constant of AlAs is smaller that the one of Si (=12). pp_dirpath "$ABI_PSPDIR" pseudos "13al.981214.fhi, PseudosTM_pwteter/33as.pspnc" #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = abinit #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in #%% [files] #%% files_to_test = #%% teph4mob_4.out, tolnlines= 57, tolabs= 3.000e02, tolrel= 6.000e03 #%% [paral_info] #%% max_nprocs = 4 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH #%% description = Generation of WFK files on dense kmeshes to prepare mobility calculations #%%<END TEST_INFO>
It consists of two parts:
 the first one (dataset 1) computes the GS wavefunctions,
 the second one (datasets 23) computes the dense WFK that will be used to compute mobilities. We also compute another (denser) WFK file that will be used with the doublegrid method explained later. As we are mainly interested in electron mobilities (conduction bands) we need to include enough empty bands in the NSCF WFK computation (nband = 8).
Copy the file in the Work_eph4mob directory, and run ABINIT:
abinit teph4mob_4.in > teph4mob_4.log 2> err &
Important
In the last part of the tutorial, we explain how to avoid the NSCF computation for all the \kkpoints in the IBZ and produce a partial WFK file containing only the wavevectors relevant for transport properties. This trick is crucial to reach dense meshes but can also be used for coarser meshes if you want to accelerate the NSCF part and reduced the size of the WFK file.
Calculation of the mobility¶
We begin by explaining how to specify the basic input variables required for a standard mobility calculation. The file $ABI_TUTORESPFN/Input/teph4mob_5.in is an example of such computation.
# Crystalline AlAs: computation of the intrinsic mobility # General input for eph computations optdriver 7 # Enter eph code eph_task 4 # Compute only the imaginary part of the selfenergy occopt 3 # FermiDirac occupation function # This corresponds to the physical temperature for electrons # Definition of the meshes ngkpt 24 24 24 # kmesh used to generate the WFK nshiftk 1 shiftk 0.0 0.0 0.0 ddb_ngqpt 4 4 4 # qmesh used for the phonons (from DDB) eph_ngqpt_fine 24 24 24 # Interpolate eph matrix elements in qspace # on the same mesh as the kgrid getwfk_filepath "teph4mob_4o_DS2_WFK" # Read the dense WFK file getddb_filepath "teph4mob_2_DDB" # We need the DDB and DVDB getdvdb_filepath "teph4mob_3_DVDB" ############################################ # Variables related to transport properties ############################################ tmesh 5.0 59.0 6 # List of Temperatures for which the mobility will be computed # Change this depending on the concentration you want eph_doping 1e+15 # in e cm^3 sigma_erange 0 0.15 eV # We compute the lifetimes of electrons only, # in an energy window of 0.15 eV from the CBM mixprec 1 # We use single precision in some parts. # It does not affect the precision of the result # but helps decreasing the memory requirements. boxcutmin 1.1 # Use boxcutmin 1.1 to decrease the memory # requirements. Check that it does not affect # your results by increasing this (up to 2 max). #eph_intmeth 2 # Use of the tetrahedron method (default) ####################################################################### # Common input variables # Definition of the planewave basis set ecut 3 nband 8 # Definition of the unit cell acell 3*10.61 # This is equivalent to 10.61 10.61 10.61 rprim 0.0 0.5 0.5 # In tutorials 1 and 2, these primitive vectors 0.5 0.0 0.5 # (to be scaled by acell) were 1 0 0 0 1 0 0 0 1 0.5 0.5 0.0 # that is, the default. # Definition of the atom types ntypat 2 # There are two types of atom znucl 13 33 # The keyword "znucl" refers to the atomic number of the # possible type(s) of atom. The pseudopotential(s) # mentioned in the "files" file must correspond # to the type(s) of atom. Here, type 1 is the Aluminum, # type 2 is the Arsenic. # Definition of the atoms natom 2 # There are two atoms typat 1 2 # The first is of type 1 (Al), the second is of type 2 (As). xred 0.0 0.0 0.0 0.25 0.25 0.25 pp_dirpath "$ABI_PSPDIR" pseudos "13al.981214.fhi, PseudosTM_pwteter/33as.pspnc" #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = abinit #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in #%% [files] #%% files_to_test = #%% teph4mob_5.out, tolnlines= 80, tolabs= 600, tolrel= 6.000e03 #%% [paral_info] #%% max_nprocs = 4 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH, RTA #%% description = #%% Eph for mobility in semiconductors #%%<END TEST_INFO>
First of all, we need to read the WFK, the DDB and the DVDB files produced previously. Since it is not possible to run mobility calculations with a single input file and datasets, we use strings to specify the path of the input files:
getwfk_filepath "teph4mob_4o_DS2_WFK" getddb_filepath "teph4mob_2_DDB" getdvdb_filepath "teph4mob_3_DVDB"
Now copy the input file in the Work_eph4mob directory, and run the code with:
abinit teph4mob_5.in > teph4mob_5.log 2> err &
The job should take \sim15 seconds on a recent CPU.
We now discuss the meaning of the eph variables in more detail:

optdriver 7 activates the EPH driver

eph_task 4 tells ABINIT that we only need the imaginary part of the eph selfenergy at the KS energy.

The homogeneous \kkmesh corresponding to the WFK file is specified by ngkpt 24 24 24. The code aborts with an error if ngkpt is not the same as the one found in the input WFK file. At present, multiple shifts (nshiftk > 1) are not supported.

ddb_ngqpt defines the initial \qqgrid used for the DFPT computation (4×4×4 in this example)

eph_ngqpt_fine defines the dense \qqmesh where the scattering potentials are interpolated and the eph matrix elements are computed.
Warning
ngkpt and eph_ngqpt_fine should be commensurate. More specifically, ngkpt must be a multiple of the \qqmesh (eph_ngqpt_fine) because the WFK should contain all the \kk and \kqpoints. In most cases, ngkpt == eph_ngqpt_fine. It is however possible to use fewer \qqpoints. Note also that ngkpt does not necessarily correspond to the \kkmesh used for the computation of transport quantities, see the following discussion.

We work within the rigid band approximation and introduce a small electron doping: eph_doping = 1e+15 that corresponds to 1e+15 electrons per cm^3. To obtain results that are representative of the intrinsic mobility, we suggest to use a very small value, for instance 10^{15} to 10^{18} electrons per cm^3. Alternatively, one can specify the doping via eph_extrael or eph_fermie. We also set occopt to 3 to correctly compute the location of the Fermi level using the FermiDirac occupation function as we are dealing with the physical temperature and not a fictitious broadening for numerical integration purposes.

The list of physical temperatures is specified by tmesh.
Note
The computational cost increases with the number of temperatures although not necessarily in a linear fashion. For the initial convergence studies, we suggest to start from a relatively small number of temperatures covering the range of interest. The Tmesh can be densified aftwerwards while keeping the same Trange once converged parameters are found.
Note that transport properties at low temperatures are more difficult to converge as the derivative of the FermiDirac distribution is strongly peaked around the Fermi level hence a very dense sampling is needed to converge the BZ integrals. In a nutshell, avoid low temperatures unless you are really interested in this regime.

By default, the code use the tetrahedron method [Blochl1994] to perform the integration in \qqmesh. This allows to efficiently filter out the \qqpoints that do not contribute to the lifetimes since these transitions are not compatible with energy and crystallinemomentum conservation. The use of the tetrahedron method is automatically activated when eph_task is set to 4. It is possible to change this behaviour by using eph_intmeth albeit not recommended as the calculation will become significantly slower.

The sigma_erange variable defines the energy window, below the VBM and above the CBM, where the lifetimes will be computed. Since the mobility integrals involve the derivative of the FermiDirac occupation function centered on the Fermi level, it is possible to restrict the computation to those \kkpoints that contribute to the mobility integral. The value of the derivative, indeed, decreases rapidly as we go further from the Fermi level hence only the states close to the band edges contribute. This variable should be subject to a convergence study as explained in the next section.

boxcutmin and mixprec are used to accelerate the computation, see the introductory tutorial.
We now examine the log file in detail. After the standard output of the input variables, the code reports the different parameters used for the treatment of the longrange part of the DFPT potentials: the Born effective charges, the highfrequency dielectric constant and the dynamical quadrupole tensor. Make sure to have all of them in order to obtain an accurate interpolation of the scattering potentials, see discussion in [Brunin2020].
Important
At present (September 30, 2020 ), the inclusion of the dynamical quadrupoles in the EPH code is not available in the public version so you should have the following in the log file:
Have dielectric tensor: yes Have Born effective charges: yes Have quadrupoles: no Have electric field: no
The code then outputs different quantities. For instance, ABINIT finds the list of \kkpoints belonging to the dense mesh that are located within the energy window (sigma_erange):
Found 3 kpoints within erange: 0.000 0.150 (eV)
The value of the Fermi level (a.k.a electronic chemical potential \mu_e(T)) as a function of T is computed and printed afterwards. Make sure that \mu_e is far enough from the band edges so that the computed mobility can be considered as intrinsic: the values of D_v and D_c should be large compared to ~3 kT else you enter the degenerate regime or the highlydegenerate case (when the Fermi level is inside the bands) and additional physical phenomena start to play a role.
Position of CBM/VBM with respect to the Fermi level: Notations: mu_e = Fermi level, D_v = (mu_e  VBM), D_c = (CBM  mu_e) T(K) kT (eV) mu_e (eV) D_v (eV) D_c (eV) 5.0 0.000 3.521 1.165 0.004 64.0 0.006 3.475 1.118 0.051 123.0 0.011 3.428 1.071 0.098 182.0 0.016 3.379 1.023 0.146 241.0 0.021 3.328 0.972 0.197 300.0 0.026 3.274 0.918 0.251
ABINIT then reads the WFK file and interpolates the scattering potentials to obtain the eph matrix elements. The use of the tetrahedron method allows to significantly reduce the \qqpoints:
qpoints_oracle: calculation of tau_nk will need: 15 qpoints in the IBZ. (nqibz_eff / nqibz): 3.6 [%]
Once this is done, the code starts looping over the 3 \kkpoints for which the lifetimes are needed.
Computing selfenergy matrix elements for kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00] [ 1 / 3 ]
You can find various information for each \kkpoint, such as:

the total number of \qqpoints in the irreducible zone defined by the little group of \kk (called IBZ(k) in the code),

the number of \qqpoint in the \text{IBZ}_k contributing to the imaginary part of \Sigma_\nk (in most cases, this number will be much smaller than the total number of \qqpoints in the \text{IBZ}_k)

the walltime each step takes.
Finally, we have the results for the lifetimes (TAU) in the teph4mob_5.out file:
Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 5.0 [K], mu_e: 3.521 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.000 36639.9 0.000
.Version 9.2.1 of ABINIT .(MPI version, prepared for a x86_64_linux_gnu9.2 computer) .Copyright (C) 19982020 ABINIT group . ABINIT comes with ABSOLUTELY NO WARRANTY. It is free software, and you are welcome to redistribute it under certain conditions (GNU General Public License, see ~abinit/COPYING or http://www.gnu.org/copyleft/gpl.txt). ABINIT is a project of the Universite Catholique de Louvain, Corning Inc. and other collaborators, see ~abinit/doc/developers/contributors.txt . Please read https://docs.abinit.org/theory/acknowledgments for suggested acknowledgments of the ABINIT effort. For more information, see https://www.abinit.org . .Starting date : Thu 24 Sep 2020.  ( at 20h46 )  input file > /home/gmatteo/git_repos/abinit/_abiref_gnu9.2_openmpi/tests/Test_suite/tutorespfn_teph4mob_1teph4mob_2teph4mob_3teph4mob_4teph4mob_5teph4mob_6teph4mob_7/teph4mob_5.in  output file > teph4mob_5.out  root for input files > teph4mob_5i  root for output files > teph4mob_5o Symmetries : space group F4 3 m (#216); Bravais cF (facecenter cubic) ================================================================================ Values of the parameters that define the memory need of the present run intxc = 0 ionmov = 0 iscf = 7 lmnmax = 3 lnmax = 3 mgfft = 8 mpssoang = 3 mqgrid = 3001 natom = 2 nloc_mem = 1 nspden = 1 nspinor = 1 nsppol = 1 nsym = 24 n1xccc = 2501 ntypat = 2 occopt = 3 xclevel = 1  mband = 8 mffmem = 1 mkmem = 413 mpw = 79 nfft = 512 nkpt = 413 ================================================================================ P This job should need less than 6.683 Mbytes of memory. Rough estimation (10% accuracy) of disk space for files : _ WF disk file : 3.985 Mbytes ; DEN or POT disk file : 0.006 Mbytes. ================================================================================   Echo of variables that govern the present computation     outvars: echo of selected default values  iomode0 = 0 , fftalg0 =312 , wfoptalg0 = 0   outvars: echo of global parameters not present in the input file  max_nthreads = 0  outvars: echo values of preprocessed input variables  acell 1.0610000000E+01 1.0610000000E+01 1.0610000000E+01 Bohr amu 2.69815390E+01 7.49215900E+01 boxcutmin 1.10000000E+00 ddb_ngqpt 4 4 4 ecut 3.00000000E+00 Hartree eph_extrael 4.42475831E08 eph_ngqpt_fine 24 24 24 eph_task 4  fftalg 312 istwfk 2 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 outvar_i_n : Printing only first 50 kpoints. ixc 7 kpt 0.00000000E+00 0.00000000E+00 0.00000000E+00 4.16666667E02 0.00000000E+00 0.00000000E+00 8.33333333E02 0.00000000E+00 0.00000000E+00 1.25000000E01 0.00000000E+00 0.00000000E+00 1.66666667E01 0.00000000E+00 0.00000000E+00 2.08333333E01 0.00000000E+00 0.00000000E+00 2.50000000E01 0.00000000E+00 0.00000000E+00 2.91666667E01 0.00000000E+00 0.00000000E+00 3.33333333E01 0.00000000E+00 0.00000000E+00 3.75000000E01 0.00000000E+00 0.00000000E+00 4.16666667E01 0.00000000E+00 0.00000000E+00 4.58333333E01 0.00000000E+00 0.00000000E+00 5.00000000E01 0.00000000E+00 0.00000000E+00 4.16666667E02 4.16666667E02 0.00000000E+00 8.33333333E02 4.16666667E02 0.00000000E+00 1.25000000E01 4.16666667E02 0.00000000E+00 1.66666667E01 4.16666667E02 0.00000000E+00 2.08333333E01 4.16666667E02 0.00000000E+00 2.50000000E01 4.16666667E02 0.00000000E+00 2.91666667E01 4.16666667E02 0.00000000E+00 3.33333333E01 4.16666667E02 0.00000000E+00 3.75000000E01 4.16666667E02 0.00000000E+00 4.16666667E01 4.16666667E02 0.00000000E+00 4.58333333E01 4.16666667E02 0.00000000E+00 5.00000000E01 4.16666667E02 0.00000000E+00 4.58333333E01 4.16666667E02 0.00000000E+00 4.16666667E01 4.16666667E02 0.00000000E+00 3.75000000E01 4.16666667E02 0.00000000E+00 3.33333333E01 4.16666667E02 0.00000000E+00 2.91666667E01 4.16666667E02 0.00000000E+00 2.50000000E01 4.16666667E02 0.00000000E+00 2.08333333E01 4.16666667E02 0.00000000E+00 1.66666667E01 4.16666667E02 0.00000000E+00 1.25000000E01 4.16666667E02 0.00000000E+00 8.33333333E02 4.16666667E02 0.00000000E+00 4.16666667E02 4.16666667E02 0.00000000E+00 8.33333333E02 8.33333333E02 0.00000000E+00 1.25000000E01 8.33333333E02 0.00000000E+00 1.66666667E01 8.33333333E02 0.00000000E+00 2.08333333E01 8.33333333E02 0.00000000E+00 2.50000000E01 8.33333333E02 0.00000000E+00 2.91666667E01 8.33333333E02 0.00000000E+00 3.33333333E01 8.33333333E02 0.00000000E+00 3.75000000E01 8.33333333E02 0.00000000E+00 4.16666667E01 8.33333333E02 0.00000000E+00 4.58333333E01 8.33333333E02 0.00000000E+00 5.00000000E01 8.33333333E02 0.00000000E+00 4.58333333E01 8.33333333E02 0.00000000E+00 4.16666667E01 8.33333333E02 0.00000000E+00 3.75000000E01 8.33333333E02 0.00000000E+00 outvar_i_n : Printing only first 50 kpoints. kptrlatt 24 0 0 0 24 0 0 0 24 kptrlen 1.80057671E+02 mixprec 1 P mkmem 413 natom 2 nband 8 ngfft 8 8 8 nkpt 413 nsym 24 ntypat 2 occ 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 prtocc : prtvol=0, do not print more kpoints. occopt 3 optdriver 7 rprim 0.0000000000E+00 5.0000000000E01 5.0000000000E01 5.0000000000E01 0.0000000000E+00 5.0000000000E01 5.0000000000E01 5.0000000000E01 0.0000000000E+00 sigma_erange 0.00000000E+00 5.51239881E03 Hartree spgroup 216 symrel 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 0 typat 1 2 wtk 0.00007 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00058 0.00029 0.00043 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00087 0.00043 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 0.00174 outvars : Printing only first 50 kpoints. xangst 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 1.4036425458E+00 1.4036425458E+00 1.4036425458E+00 xcart 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 2.6525000000E+00 2.6525000000E+00 2.6525000000E+00 xred 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 2.5000000000E01 2.5000000000E01 2.5000000000E01 znucl 13.00000 33.00000 ================================================================================ chkinp: Checking input parameters for consistency. ================================================================================ == DATASET 1 ==================================================================  mpi_nproc: 1, omp_nthreads: 1 (1 if OMP is not activated)  !DatasetInfo iteration_state: {dtset: 1, } dimensions: {natom: 2, nkpt: 413, mband: 8, nsppol: 1, nspinor: 1, nspden: 1, mpw: 79, } cutoff_energies: {ecut: 3.0, pawecutdg: 1.0, } electrons: {nelect: 8.00000000E+00, charge: 0.00000000E+00, occopt: 3.00000000E+00, tsmear: 1.00000000E02, } meta: {optdriver: 7, eph_task: 4, } ... mkfilename: getwfk from: teph4mob_4o_DS2_WFK mkfilename: getddb from: teph4mob_2_DDB mkfilename: getdvdb from: teph4mob_3_DVDB Exchangecorrelation functional for the present dataset will be: LDA: PerdewWang 92 LSD fit to CeperleyAlder data  ixc=7 Citation for XC functional: J.P.Perdew and Y.Wang, PRB 45, 13244 (1992)  Reading GS states from WFK file: teph4mob_4o_DS2_WFK  Reading DDB from file: teph4mob_2_DDB  Reading DVDB from file: teph4mob_3_DVDB Changing occupation scheme as input occopt and tsmear differ from those read from WFK file. From WFK file: occopt = 1, tsmear = 0.010000 From input: occopt = 3, tsmear = 0.010000 Adding eph_extrael: 4.424758E08 to input nelect: 8.000000E+00 Old fermi level: 1.134753E01, with nelect: 8.000000E+00 New fermi level: 1.134753E01, with nelect: 8.000000E+00 Real(R)+Recip(G) space primitive vectors, cartesian coordinates (Bohr,Bohr^1): R(1)= 0.0000000 5.3050000 5.3050000 G(1)= 0.0942507 0.0942507 0.0942507 R(2)= 5.3050000 0.0000000 5.3050000 G(2)= 0.0942507 0.0942507 0.0942507 R(3)= 5.3050000 5.3050000 0.0000000 G(3)= 0.0942507 0.0942507 0.0942507 Unit cell volume ucvol= 2.9859750E+02 bohr^3 Angles (23,13,12)= 6.00000000E+01 6.00000000E+01 6.00000000E+01 degrees Now the whole DDB is in central memory ================================================================================ Dielectric Tensor and Effective Charges anaddb : Zero the imaginary part of the Dynamical Matrix at Gamma, and impose the ASR on the effective charges The violation of the charge neutrality conditions by the effective charges is as follows : atom electric field displacement direction 1 1 0.022872 0.000000 1 2 0.000000 0.000000 1 3 0.000000 0.000000 2 1 0.000000 0.000000 2 2 0.022872 0.000000 2 3 0.000000 0.000000 3 1 0.000000 0.000000 3 2 0.000000 0.000000 3 3 0.022872 0.000000 Effective charge tensors after imposition of the charge neutrality, and eventual restriction to some part : atom displacement 1 1 2.115792E+00 9.041670E17 9.045344E17 1 2 9.041670E17 2.115792E+00 9.037996E17 1 3 9.041670E17 9.041670E17 2.115792E+00 2 1 2.115792E+00 9.041670E17 9.045344E17 2 2 9.041670E17 2.115792E+00 9.037996E17 2 3 9.041670E17 9.041670E17 2.115792E+00 Now, the imaginary part of the dynamical matrix is zeroed  Found dielectric tensor and Born effective charges in DDB file: teph4mob_2_DDB  Cannot find quadrupole tensor in DDB file: teph4mob_2_DDB Values initialized with zeros. Homogeneous q point set in the B.Z. Grid q points : 64 1) 0.00000000E+00 0.00000000E+00 0.00000000E+00 2) 2.50000000E01 0.00000000E+00 0.00000000E+00 3) 5.00000000E01 0.00000000E+00 0.00000000E+00 4) 2.50000000E01 0.00000000E+00 0.00000000E+00 5) 0.00000000E+00 2.50000000E01 0.00000000E+00 6) 2.50000000E01 2.50000000E01 0.00000000E+00 7) 5.00000000E01 2.50000000E01 0.00000000E+00 8) 2.50000000E01 2.50000000E01 0.00000000E+00 9) 0.00000000E+00 5.00000000E01 0.00000000E+00 10) 2.50000000E01 5.00000000E01 0.00000000E+00 11) 5.00000000E01 5.00000000E01 0.00000000E+00 12) 2.50000000E01 5.00000000E01 0.00000000E+00 13) 0.00000000E+00 2.50000000E01 0.00000000E+00 14) 2.50000000E01 2.50000000E01 0.00000000E+00 15) 5.00000000E01 2.50000000E01 0.00000000E+00 16) 2.50000000E01 2.50000000E01 0.00000000E+00 17) 0.00000000E+00 0.00000000E+00 2.50000000E01 18) 2.50000000E01 0.00000000E+00 2.50000000E01 19) 5.00000000E01 0.00000000E+00 2.50000000E01 20) 2.50000000E01 0.00000000E+00 2.50000000E01 21) 0.00000000E+00 2.50000000E01 2.50000000E01 22) 2.50000000E01 2.50000000E01 2.50000000E01 23) 5.00000000E01 2.50000000E01 2.50000000E01 24) 2.50000000E01 2.50000000E01 2.50000000E01 25) 0.00000000E+00 5.00000000E01 2.50000000E01 26) 2.50000000E01 5.00000000E01 2.50000000E01 27) 5.00000000E01 5.00000000E01 2.50000000E01 28) 2.50000000E01 5.00000000E01 2.50000000E01 29) 0.00000000E+00 2.50000000E01 2.50000000E01 30) 2.50000000E01 2.50000000E01 2.50000000E01 31) 5.00000000E01 2.50000000E01 2.50000000E01 32) 2.50000000E01 2.50000000E01 2.50000000E01 33) 0.00000000E+00 0.00000000E+00 5.00000000E01 34) 2.50000000E01 0.00000000E+00 5.00000000E01 35) 5.00000000E01 0.00000000E+00 5.00000000E01 36) 2.50000000E01 0.00000000E+00 5.00000000E01 37) 0.00000000E+00 2.50000000E01 5.00000000E01 38) 2.50000000E01 2.50000000E01 5.00000000E01 39) 5.00000000E01 2.50000000E01 5.00000000E01 40) 2.50000000E01 2.50000000E01 5.00000000E01 41) 0.00000000E+00 5.00000000E01 5.00000000E01 42) 2.50000000E01 5.00000000E01 5.00000000E01 43) 5.00000000E01 5.00000000E01 5.00000000E01 44) 2.50000000E01 5.00000000E01 5.00000000E01 45) 0.00000000E+00 2.50000000E01 5.00000000E01 46) 2.50000000E01 2.50000000E01 5.00000000E01 47) 5.00000000E01 2.50000000E01 5.00000000E01 48) 2.50000000E01 2.50000000E01 5.00000000E01 49) 0.00000000E+00 0.00000000E+00 2.50000000E01 50) 2.50000000E01 0.00000000E+00 2.50000000E01 51) 5.00000000E01 0.00000000E+00 2.50000000E01 52) 2.50000000E01 0.00000000E+00 2.50000000E01 53) 0.00000000E+00 2.50000000E01 2.50000000E01 54) 2.50000000E01 2.50000000E01 2.50000000E01 55) 5.00000000E01 2.50000000E01 2.50000000E01 56) 2.50000000E01 2.50000000E01 2.50000000E01 57) 0.00000000E+00 5.00000000E01 2.50000000E01 58) 2.50000000E01 5.00000000E01 2.50000000E01 59) 5.00000000E01 5.00000000E01 2.50000000E01 60) 2.50000000E01 5.00000000E01 2.50000000E01 61) 0.00000000E+00 2.50000000E01 2.50000000E01 62) 2.50000000E01 2.50000000E01 2.50000000E01 63) 5.00000000E01 2.50000000E01 2.50000000E01 64) 2.50000000E01 2.50000000E01 2.50000000E01 The interatomic forces have been obtained Average speed of sound partial sums: 0.1673176170E02 (at units)  = 3.6604 [km/s] Debye frequency from partial sums: 0.9757306381E03 (Ha)  = 0.6419999190E+01 (THz) Debye temperature from partial sums: 0.3081110007E+03 (K)  Writing phonon DOS to netcdf file: teph4mob_5o_PHDOS.nc  Pseudopotential description   pspini: atom type 1 psp file is /home/gmatteo/git_repos/abinit/tests/Psps_for_tests/13al.981214.fhi  pspatm: opening atomic psp file /home/gmatteo/git_repos/abinit/tests/Psps_for_tests/13al.981214.fhi  Aluminum, fhi98PP : Hamanntype, LDA CA PerdewWang, l=2 local  13.00000 3.00000 981214 znucl, zion, pspdat 6 7 2 2 493 0.00000 pspcod,pspxc,lmax,lloc,mmax,r2well No XC core correction. 1.024700 amesh (Hamman grid) pspatm : epsatm= 1.36305739  l ekb(1:nproj) > 0 1.768744 1 0.900554 pspatm: atomic psp has been read and splines computed  pspini: atom type 2 psp file is /home/gmatteo/git_repos/abinit/tests/Psps_for_tests/PseudosTM_pwteter/33as.pspnc  pspatm: opening atomic psp file /home/gmatteo/git_repos/abinit/tests/Psps_for_tests/PseudosTM_pwteter/33as.pspnc  TroullierMartins psp for element As Thu Oct 27 17:37:14 EDT 1994  33.00000 5.00000 940714 znucl, zion, pspdat 1 1 1 1 2001 0.00000 pspcod,pspxc,lmax,lloc,mmax,r2well 0 4.772 10.829 1 2.5306160 l,e99.0,e99.9,nproj,rcpsp 0.00000000 0.00000000 0.00000000 0.00000000 rms, ekb1, ekb2, epsatm 1 2.745 5.580 0 2.5306160 l,e99.0,e99.9,nproj,rcpsp 0.00000000 0.00000000 0.00000000 0.00000000 rms, ekb1, ekb2, epsatm 2.05731715564010 0.36322996461007 2.76014815959125 rchrg,fchrg,qchrg pspatm : epsatm= 27.20579911  l ekb(1:nproj) > 0 0.838751 pspatm: atomic psp has been read and splines computed 2.28550852E+02 ecore*ucvol(ha*bohr**3)  === Gaps, band edges and relative position wrt Fermi level === Indirect band gap semiconductor Fundamental gap: 1.169 (eV) VBM: 2.356 (eV) at k: [ 0.0000E+00, 0.0000E+00, 0.0000E+00] CBM: 3.525 (eV) at k: [ 5.0000E01, 5.0000E01, 0.0000E+00] Direct gap: 2.355 (eV) at k: [ 0.0000E+00, 0.0000E+00, 0.0000E+00] Position of CBM/VBM with respect to the Fermi level: Notations: mu_e = Fermi level, D_v = (mu_e  VBM), D_c = (CBM  mu_e) T(K) kT (eV) mu_e (eV) D_v (eV) D_c (eV) 5.0 0.000 3.521 1.165 0.004 64.0 0.006 3.475 1.118 0.051 123.0 0.011 3.428 1.071 0.098 182.0 0.016 3.379 1.023 0.146 241.0 0.021 3.328 0.972 0.197 300.0 0.026 3.274 0.918 0.251 Number of bands in eph selfenergy sum: 1 From bsum_start: 5 to bsum_stop: 5 Symsigma: 1 Timrev: 1 Method for qspace integration: Tetrahedron method Tolerance for integration weights < 1.000000E12 1.000000E12 eph_phwinfact: 1.10 Only the Imaginary part of Sigma will be computed. Number of frequencies along the real axis: 0 , Step: 0.000 [eV] Number of frequency in generalized Eliashberg functions: 0 Number of temperatures: 6 From: 5.000000E+00 to 3.000000E+02 [K] Abinitio qmesh from DDB file: [4, 4, 4] Qmesh used for selfenergy integration [ngqpt]: [24, 24, 24] Number of qpoints in the IBZ: 413 asr: 1 chneut: 1 dipdip: 1 symdynmat: 1 Number of kpoints for selfenergy corrections: 3 sigma_erange: 0.000 0.150 (eV) Including all final {mk+q} states inside energy window: [3.470 3.664 ] [eV] List of kpoints for selfenergy corrections: 1 1 [ 4.5833E01, 4.5833E01, 0.0000E+00] 5 5 2 1 [ 5.0000E01, 4.5833E01, 0.0000E+00] 5 5 3 1 [ 5.0000E01, 5.0000E01, 0.0000E+00] 5 5 === MPI parallelism === P Allocating and summing bands from my_bsum_start: 5 up to my_bsum_stop: 5 P Number of CPUs for parallelism over perturbations: 1 P Number of perturbations treated by this CPU: 6 P Number of CPUs for parallelism over qpoints: 1 P Number of qpoints in the IBZ treated by this proc: 413 of 413 P Number of CPUs for parallelism over bands: 1 P Number of CPUs for parallelism over spins: 1 P Number of CPUs for parallelism over kpoints: 1 P Number of kpoint in Sigma_nk treated by this proc: 3 of 3 Cannot find eph_ngqpt_fine qpoints in DVDB > Activating Fourier interpolation. ================================================================================ Final results in eV. Notations: eKS: KohnSham energy. eQP: quasiparticle energy. eQP  eKS: Difference between the QP and the KS energy. SE1(eKS): Real part of the selfenergy computed at the KS energy, SE2 for imaginary part. Z(eKS): Renormalization factor. FAN: Real part of the Fan term at eKS. DW: DebyeWaller term. DeKS: KS energy difference between this band and band1, DeQP same meaning but for eQP. OTMS: Onthemassshell approximation with eQP ~= eKS + Sigma(omega=eKS) TAU(eKS): Lifetime in femtoseconds computed at the KS energy. mu_e: Fermi level for given (T, nelect) Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 5.0 [K], mu_e: 3.521 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.000 36510.9 0.000 ============================================================================================ Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 64.0 [K], mu_e: 3.475 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.000 11039.7 0.000 ============================================================================================ Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 123.0 [K], mu_e: 3.428 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.000 2811.1 0.000 ============================================================================================ Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 182.0 [K], mu_e: 3.379 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.000 940.8 0.000 ============================================================================================ Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 241.0 [K], mu_e: 3.328 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.001 472.1 0.000 ============================================================================================ Kpoint: [ 4.5833E01, 4.5833E01, 0.0000E+00], T: 300.0 [K], mu_e: 3.274 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.573 0.001 295.2 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 5.0 [K], mu_e: 3.521 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.001 487.8 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 64.0 [K], mu_e: 3.475 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.001 412.1 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 123.0 [K], mu_e: 3.428 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.001 316.7 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 182.0 [K], mu_e: 3.379 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.001 222.5 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 241.0 [K], mu_e: 3.328 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.002 158.6 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 4.5833E01, 0.0000E+00], T: 300.0 [K], mu_e: 3.274 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.608 0.003 119.0 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 5.0 [K], mu_e: 3.521 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 999999.0 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 64.0 [K], mu_e: 3.475 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 999999.0 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 123.0 [K], mu_e: 3.428 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 39519.0 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 182.0 [K], mu_e: 3.379 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 9124.8 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 241.0 [K], mu_e: 3.328 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 4150.1 0.000 ============================================================================================ Kpoint: [ 5.0000E01, 5.0000E01, 0.0000E+00], T: 300.0 [K], mu_e: 3.274 B eKS SE2(eKS) TAU(eKS) DeKS 5 3.525 0.000 2492.0 0.000 ============================================================================================ Entering transport RTA computation driver.  Reading carrier lifetimes from: teph4mob_5o_SIGEPH.nc Indirect band gap semiconductor Fundamental gap: 1.169 (eV) VBM: 2.356 (eV) at k: [ 0.0000E+00, 0.0000E+00, 0.0000E+00] CBM: 3.525 (eV) at k: [ 5.0000E01, 5.0000E01, 0.0000E+00] Direct gap: 2.355 (eV) at k: [ 0.0000E+00, 0.0000E+00, 0.0000E+00] === Computation of DOS, VV_DOS and VVTAU_DOS === Linear tetrahedron method. Mesh step: 27.2 (meV) with npts: 49 From emin: 2.4 to emax: 3.7 (eV) Number of kpoints in the IBZ: 413 edos%ief == 0 > Cannot print quantities at the Fermi level. Transport (RTA) calculation results: Cartesian component of SERTA mobility tensor: xx Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 40.54 0.00 123.00 0.10E+16 0.00E+00 355.38 0.00 182.00 0.10E+16 0.00E+00 435.25 0.00 241.00 0.10E+16 0.00E+00 433.92 0.00 300.00 0.10E+16 0.25E+05 379.16 0.00 Cartesian component of SERTA mobility tensor: yy Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 40.54 0.00 123.00 0.10E+16 0.00E+00 355.38 0.00 182.00 0.10E+16 0.00E+00 435.25 0.00 241.00 0.10E+16 0.00E+00 433.92 0.00 300.00 0.10E+16 0.25E+05 379.16 0.00 Cartesian component of SERTA mobility tensor: zz Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 40.54 0.00 123.00 0.10E+16 0.00E+00 355.38 0.00 182.00 0.10E+16 0.00E+00 435.25 0.00 241.00 0.10E+16 0.00E+00 433.92 0.00 300.00 0.10E+16 0.25E+05 379.16 0.00 Cartesian component of MRTA mobility tensor: xx Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 39.49 0.00 123.00 0.10E+16 0.00E+00 374.08 0.00 182.00 0.10E+16 0.00E+00 470.50 0.00 241.00 0.10E+16 0.00E+00 469.67 0.00 300.00 0.10E+16 0.25E+05 411.46 0.00 Cartesian component of MRTA mobility tensor: yy Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 39.49 0.00 123.00 0.10E+16 0.00E+00 374.08 0.00 182.00 0.10E+16 0.00E+00 470.50 0.00 241.00 0.10E+16 0.00E+00 469.67 0.00 300.00 0.10E+16 0.25E+05 411.46 0.00 Cartesian component of MRTA mobility tensor: zz Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 39.49 0.00 123.00 0.10E+16 0.00E+00 374.08 0.00 182.00 0.10E+16 0.00E+00 470.50 0.00 241.00 0.10E+16 0.00E+00 469.67 0.00 300.00 0.10E+16 0.25E+05 411.46 0.00  Writing RTA transport results to: teph4mob_5o_RTA.nc == END DATASET(S) ============================================================== ================================================================================ outvars: echo values of variables after computation  acell 1.0610000000E+01 1.0610000000E+01 1.0610000000E+01 Bohr amu 2.69815390E+01 7.49215900E+01 boxcutmin 1.10000000E+00 ddb_ngqpt 4 4 4 ecut 3.00000000E+00 Hartree eph_extrael 4.42475831E08 eph_ngqpt_fine 24 24 24 eph_task 4 etotal 0.0000000000E+00 fcart 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00  fftalg 312 ixc 7 kptrlatt 24 0 0 0 24 0 0 0 24 kptrlen 1.80057671E+02 mixprec 1 P mkmem 413 natom 2 nband 8 ngfft 8 8 8 nkpt 413 nsym 24 ntypat 2 occ 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 2.000000 2.000000 2.000000 2.000000 0.000000 0.000000 0.000000 0.000000 prtocc : prtvol=0, do not print more kpoints. occopt 3 optdriver 7 rprim 0.0000000000E+00 5.0000000000E01 5.0000000000E01 5.0000000000E01 0.0000000000E+00 5.0000000000E01 5.0000000000E01 5.0000000000E01 0.0000000000E+00 sigma_erange 0.00000000E+00 5.51239881E03 Hartree spgroup 216 strten 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 symrel 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 0 typat 1 2 xangst 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 1.4036425458E+00 1.4036425458E+00 1.4036425458E+00 xcart 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 2.6525000000E+00 2.6525000000E+00 2.6525000000E+00 xred 0.0000000000E+00 0.0000000000E+00 0.0000000000E+00 2.5000000000E01 2.5000000000E01 2.5000000000E01 znucl 13.00000 33.00000 ================================================================================  Timing analysis has been suppressed with timopt=0 ================================================================================ Suggested references for the acknowledgment of ABINIT usage. The users of ABINIT have little formal obligations with respect to the ABINIT group (those specified in the GNU General Public License, http://www.gnu.org/copyleft/gpl.txt). However, it is common practice in the scientific literature, to acknowledge the efforts of people that have made the research possible. In this spirit, please find below suggested citations of work written by ABINIT developers, corresponding to implementations inside of ABINIT that you have used in the present run. Note also that it will be of great value to readers of publications presenting these results, to read papers enabling them to understand the theoretical formalism and details of the ABINIT implementation. For information on why they are suggested, see also https://docs.abinit.org/theory/acknowledgments.   [1] The Abinit project: Impact, environment and recent developments.  Computer Phys. Comm. 248, 107042 (2020).  X.Gonze, B. Amadon, G. Antonius, F.Arnardi, L.Baguet, J.M.Beuken,  J.Bieder, F.Bottin, J.Bouchet, E.Bousquet, N.Brouwer, F.Bruneval,  G.Brunin, T.Cavignac, J.B. Charraud, Wei Chen, M.Cote, S.Cottenier,  J.Denier, G.Geneste, Ph.Ghosez, M.Giantomassi, Y.Gillet, O.Gingras,  D.R.Hamann, G.Hautier, Xu He, N.Helbig, N.Holzwarth, Y.Jia, F.Jollet,  W.LafargueDitHauret, K.Lejaeghere, M.A.L.Marques, A.Martin, C.Martins,  H.P.C. Miranda, F.Naccarato, K. Persson, G.Petretto, V.Planes, Y.Pouillon,  S.Prokhorenko, F.Ricci, G.M.Rignanese, A.H.Romero, M.M.Schmitt, M.Torrent,  M.J.van Setten, B.Van Troeye, M.J.Verstraete, G.Zerah and J.W.Zwanzig  Comment: the fifth generic paper describing the ABINIT project.  Note that a version of this paper, that is not formatted for Computer Phys. Comm.  is available at https://www.abinit.org/sites/default/files/ABINIT20.pdf .  The licence allows the authors to put it on the Web.  DOI and bibtex: see https://docs.abinit.org/theory/bibliography/#gonze2020   [2] Ab initio pseudopotentials for electronic structure calculations of polyatomic systems,  using densityfunctional theory.  M. Fuchs, M. Scheffler, Comput. Phys. Commun. 119, 67 (1999).  Comment: Some pseudopotential generated using the FHI code were used.  DOI and bibtex: see https://docs.abinit.org/theory/bibliography/#fuchs1999   [3] Recent developments in the ABINIT software package.  Computer Phys. Comm. 205, 106 (2016).  X.Gonze, F.Jollet, F.Abreu Araujo, D.Adams, B.Amadon, T.Applencourt,  C.Audouze, J.M.Beuken, J.Bieder, A.Bokhanchuk, E.Bousquet, F.Bruneval  D.Caliste, M.Cote, F.Dahm, F.Da Pieve, M.Delaveau, M.Di Gennaro,  B.Dorado, C.Espejo, G.Geneste, L.Genovese, A.Gerossier, M.Giantomassi,  Y.Gillet, D.R.Hamann, L.He, G.Jomard, J.Laflamme Janssen, S.Le Roux,  A.Levitt, A.Lherbier, F.Liu, I.Lukacevic, A.Martin, C.Martins,  M.J.T.Oliveira, S.Ponce, Y.Pouillon, T.Rangel, G.M.Rignanese,  A.H.Romero, B.Rousseau, O.Rubel, A.A.Shukri, M.Stankovski, M.Torrent,  M.J.Van Setten, B.Van Troeye, M.J.Verstraete, D.Waroquier, J.Wiktor,  B.Xu, A.Zhou, J.W.Zwanziger.  Comment: the fourth generic paper describing the ABINIT project.  Note that a version of this paper, that is not formatted for Computer Phys. Comm.  is available at https://www.abinit.org/sites/default/files/ABINIT16.pdf .  The licence allows the authors to put it on the Web.  DOI and bibtex: see https://docs.abinit.org/theory/bibliography/#gonze2016   [4] ABINIT: Firstprinciples approach of materials and nanosystem properties.  Computer Phys. Comm. 180, 25822615 (2009).  X. Gonze, B. Amadon, P.M. Anglade, J.M. Beuken, F. Bottin, P. Boulanger, F. Bruneval,  D. Caliste, R. Caracas, M. Cote, T. Deutsch, L. Genovese, Ph. Ghosez, M. Giantomassi  S. Goedecker, D.R. Hamann, P. Hermet, F. Jollet, G. Jomard, S. Leroux, M. Mancini, S. Mazevet,  M.J.T. Oliveira, G. Onida, Y. Pouillon, T. Rangel, G.M. Rignanese, D. Sangalli, R. Shaltaf,  M. Torrent, M.J. Verstraete, G. Zerah, J.W. Zwanziger  Comment: the third generic paper describing the ABINIT project.  Note that a version of this paper, that is not formatted for Computer Phys. Comm.  is available at https://www.abinit.org/sites/default/files/ABINIT_CPC_v10.pdf .  The licence allows the authors to put it on the Web.  DOI and bibtex: see https://docs.abinit.org/theory/bibliography/#gonze2009   And optionally:   [5] A brief introduction to the ABINIT software package.  Z. Kristallogr. 220, 558562 (2005).  X. Gonze, G.M. Rignanese, M. Verstraete, J.M. Beuken, Y. Pouillon, R. Caracas, F. Jollet,  M. Torrent, G. Zerah, M. Mikami, Ph. Ghosez, M. Veithen, J.Y. Raty, V. Olevano, F. Bruneval,  L. Reining, R. Godby, G. Onida, D.R. Hamann, and D.C. Allan.  Comment: the second generic paper describing the ABINIT project. Note that this paper  should be cited especially if you are using the GW part of ABINIT, as several authors  of this part are not in the list of authors of the first or third paper.  The .pdf of the latter paper is available at https://www.abinit.org/sites/default/files/zfk_050506_558562.pdf.  Note that it should not redistributed (Copyright by Oldenburg Wissenschaftverlag,  the licence allows the authors to put it on the Web).  DOI and bibtex: see https://docs.abinit.org/theory/bibliography/#gonze2005   Proc. 0 individual time (sec): cpu= 22.5 wall= 24.8 ================================================================================ Calculation completed. .Delivered 5 WARNINGs and 4 COMMENTs to log file. +Overall time at end (sec) : cpu= 22.5 wall= 24.8
Tip
As already mentioned in the introduction, all the results are stored in the SIGEPH.nc file. With AbiPy , one can easily access to all the data of the computation. For instance, one can plot the electron linewidths as a function of the KS energy using the abiopen script:
abiopen.py teph4mob_5o_SIGEPH.nc expose
Well, the figure is not so impressive but this is normal as we are computing only 3 \kkwavevectors still there are some points that are worth discussing. Note how the linewidths at the CBM are very small at low temperature. For the CBM, indeed, only phonon absorption is allowed and there are few vibrational states populated at low T. The linewidth at the CBM increses with T since high energy phonon states starts to be populated and more scattering channels become available.
At the end of the main output file, the diagonal elements of the SERTA/MRTA mobility tensor \sigma_{ij} are reported for the three Cartesian directions and all temperatures.
Cartesian component of SERTA mobility tensor: xx Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 40.76 0.00 123.00 0.10E+16 0.00E+00 356.24 0.00 182.00 0.10E+16 0.00E+00 435.51 0.00 241.00 0.10E+16 0.00E+00 433.89 0.00 300.00 0.10E+16 0.25E+05 379.06 0.00 Cartesian component of MRTA mobility tensor: xx Temperature [K] e/h density [cm^3] e/h mobility [cm^2/Vs] 5.00 0.10E+16 0.00E+00 0.00 0.00 64.00 0.10E+16 0.00E+00 39.67 0.00 123.00 0.10E+16 0.00E+00 374.94 0.00 182.00 0.10E+16 0.00E+00 470.73 0.00 241.00 0.10E+16 0.00E+00 469.55 0.00 300.00 0.10E+16 0.25E+05 411.23 0.00
The temperature is first given then the electron (e) and hole (h) densities followed by the corresponding (SERTA/MRTA) mobilities. In our input file, we considered only electrons and this explains why the values for holes are zero. In this particular case, the difference between SERTA and MRTA is not very large but the two approximation may give significantly different results in other systems. According to recent works the MRTA results are expected to be closer to ones obtained by iteratively solving the BTE.
Tip
You can also run the transport driver in standalone mode by setting eph_task 7, provided you already have the lifetimes in an external SIGEPH.nc file specified via getsigeph_filepath. This task is relatively fast even in serial execution although some parts (in particular the computation of DOSlike quantities) can benefit from MPI.
Now that we know how to obtain the mobility in a semiconductor for given \kk and \qqmeshes, we can give additional details about convergence studies and discuss extra tricks to significantly decrease the computational cost.
Convergence w.r.t. the energy range¶
The first convergence study consists in determining the energy range around the band edge to be used for the computation of \tau_{n\kk}. We can do that by performing mobility computations with fixed \kk and \qqmeshes and increasing values of sigma_erange.
Tip
The code can compute both electron and hole mobilities in a single run but this is not the recommended procedure as the \qqpoint filtering is expected to be less efficient. Moreover electrons and holes may require a different \kksampling to convergence depending on the dispersion of the bands. As a consequence, we suggest to compute electrons and holes with different input files.
The file \ABI_TUTORESPFN/Input/teph4mob_6.in is an example of such computation.
# Crystalline AlAs: computation of the intrinsic mobility ndtset 6 # General input for eph computations optdriver 7 # Enter eph code eph_task 4 # Compute only the imaginary part of the selfenergy occopt 3 # FermiDirac occupation function (physical T) # Definition of the meshes ngkpt 24 24 24 # kmesh nshiftk 1 shiftk 0.0 0.0 0.0 ddb_ngqpt 4 4 4 # qmesh for phonons (from DDB file) eph_ngqpt_fine 24 24 24 # Interpolate eph matrix elements on the same # qmesh as the kgrid getwfk_filepath "teph4mob_4o_DS2_WFK" # Read the dense WFK file getddb_filepath "teph4mob_2_DDB" # We need the DDB and DVDB getdvdb_filepath "teph4mob_3_DVDB" # Definition of the variables related to transport properties tmesh 5.0 59.0 6 # Temperature array at which the mobility will be computed # Change this depending on the concentration you want eph_doping 1e+15 # in e cm^3 sigma_erange1 0 0.10 eV # We compute the lifetimes of electrons only, sigma_erange2 0 0.12 eV # in an energy window of 0.15 eV from the CBM sigma_erange3 0 0.14 eV sigma_erange4 0 0.16 eV sigma_erange5 0 0.18 eV sigma_erange6 0 0.20 eV mixprec 1 # We use single precision in some parts. # It does not affect the precision of the result # but helps decreasing the memory requirements. # boxcutmin 1.1 # Use boxcutmin 1.1 to decrease the memory # requirements. Check that it does not affect # your results by increasing this (up to 2 max). #eph_intmeth 2 # Use of the tetrahedron method ####################################################################### #Common input variables # Definition of the planewave basis set ecut 3 nband 8 #Definition of the unit cell acell 3*10.61 # This is equivalent to 10.61 10.61 10.61 rprim 0.0 0.5 0.5 # In tutorials 1 and 2, these primitive vectors 0.5 0.0 0.5 # (to be scaled by acell) were 1 0 0 0 1 0 0 0 1 0.5 0.5 0.0 # that is, the default. #Definition of the atom types ntypat 2 # There are two types of atom znucl 13 33 # The keyword "znucl" refers to the atomic number of the # possible type(s) of atom. The pseudopotential(s) # mentioned in the "files" file must correspond # to the type(s) of atom. Here, type 1 is the Aluminum, # type 2 is the Arsenic. #Definition of the atoms natom 2 # There are two atoms typat 1 2 # The first is of type 1 (Al), the second is of type 2 (As). xred 0.0 0.0 0.0 0.25 0.25 0.25 pp_dirpath "$ABI_PSPDIR" pseudos "13al.981214.fhi, PseudosTM_pwteter/33as.pspnc" #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = abinit #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in #%% [files] #%% files_to_test = #%% teph4mob_6.out, tolnlines= 350, tolabs= 220, tolrel= 1.500e02 #%% [paral_info] #%% max_nprocs = 4 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH, RTA #%% description = #%% Eph for mobility in semiconductors #%%<END TEST_INFO>
Copy the input file in the Work_eph4mob directory, and run ABINIT:
abinit teph4mob_6.in > teph4mob_6.log 2> err &
This run should take a few minutes.
We can now analyze the variation of the mobility with respect to sigma_erange.
TODO: Add script to analyze convergence wrt sigma_erange
This study shows that an energy window of ~0.15 above the CBM is enough to converge so we use this value in the subsequent calculations.
Warning
One should perform this convergence study with a \kkmesh that is already dense enough to capture the band dispersion correctly. In this case, we are using a 24×24×24 mesh, which is not very dense for such computations. This means that, when increasing sigma_erange, no additional \kkpoint is included as the sampling is too coarse. This is the case for the first three datasets (3 \kkpoints), and the last two datasets (6 \kkpoints). If a finer mesh was used, the number of \kkpoints would have increased in a more monotonic way. For instance, in Silicon, a 45×45×45 \kkmesh could be used to determine sigma_erange.
Convergence w.r.t. the k/q meshes¶
Once the energy window is set, we can start to converge the mobility with respect to the dense \kk and \qqmeshes. The previous computations used 24×24×24 \kk and \qqmeshes. This is quite far from convergence. Just to give you an idea, silicon requires a 45×45×45 \kkmesh and 90×90×90 \qqmesh to reach convergence within 5%.
Tip
As a rule of thumb, a \qqmesh twice as dense in each direction as the \kkmesh, is needed to obtain accurate values for the linewidth and achieve fast convergence of the integrals in \kkspace [Brunin2020b]. Possible exceptions are systems with very small effective masses (e.g. GaAs) in which a very dense \kksampling is needed to sample the electron (hole) pockets. In this case, using the same sampling for electrons and phonons may be enough to converge.
To compute the mobility with a \qqmesh twice as dense as the \kkmesh, there are two possible approaches:

Run a computation with:
 ngkpt 90 90 90 (nshiftk 1 and shiftk 0 0 0)
 eph_ngqpt_fine 90 90 90,
 sigma_ngkpt 45 45 45.
using sigma_ngkpt to select the \kkpoints in \Sigma_\nk belonging to the 45×45×45 mesh, but now each lifetime is computed with a 90×90×90 \qqmesh.

Run a computation with:
 ngkpt 90 90 90, (nshiftk 1 and shiftk 0 0 0)
 eph_ngqpt_fine 90 90 90,
 sigma_ngkpt 90 90 90.
Following this approach, we compute lifetimes on a 90×90×90 \kk and the integration is perfomed on the same \qqmesh. You can then run again the transport driver only, by setting eph_task 7 and transport_ngkpt 45 45 45 to downsample the \kkmesh used to integrate the mobility in \kkspace. This second option has the advantage that it delivers two mobilities in oneshot but it would be overkilling if a 45×45×45/90×90×90 k/q sampling is already enough.
You can run again the previous input files by densifying the different meshes. For the densest grids, you might need to run with multiple MPI processes. You should obtain something like this for T = 300 K:
Sorry for repeating it again but, the inputs of this tutorial have been tuned to make the computations quite fast, but the final results are far from convergence. In order to get sensible results, one should use a denser DFPT \qqmesh (around 9×9×9), and a larger cutoff energy ecut. Obviously, these parameters depend on the system under investigation.
Doublegrid technique¶
Another possibility to improve the results without increasing the computation time significantly is the doublegrid (DG) technique [Brunin2020b]. In this method, a coarse sampling is used for the \kk and the \qqmesh for the eph matrix elements, but a finer mesh is used to interpolate the weights for the delta functions associated to phonon absorption/emission. This technique allows one to accelerate the convergence while keeping the computational cost and the memory requirements at a reasonable level.
Important
The efficiency of the DG approach depends on the strength of the polar Frohlich divergence: if the divergence is difficult to integrate numerically, the coarse \qqmesh for the eph matrix elements will have to be densified.
The DG technique requires a second WFK file, containing the KS eigenvalues on the fine mesh. You can specify the path to the fine WFK file using getwfkfine_filepath as in:
getwfkfine_filepath "teph4mob_4o_DS3_WFK"
The file \ABI_TUTORESPFN/Input/teph4mob_7.in (first dataset) is an example of such computation.
# Crystalline AlAs: computation of the intrinsic mobility ndtset 2 ############### # First dataset ############### # Compute only the imaginary part of the selfenergy # Followed by mobility computation. eph_task1 4 ############### # Second dataset ############### # This just to show how to compute mobility from SIGEPH.nc file with a k submesh eph_task2 7 getsigeph_filepath2 "teph4mob_7o_DS1_SIGEPH.nc" transport_ngkpt2 12 12 12 #sigma_ngkpt2 12 12 12 ######################### # Common to all datasets ######################### # General input for eph computations optdriver 7 # Enter EPH code occopt 3 # FermiDirac occupation function (physical T) # Definition of the meshes ngkpt 24 24 24 # kmesh from WFK file nshiftk 1 shiftk 0.0 0.0 0.0 ddb_ngqpt 4 4 4 # qmesh used for the phonons eph_ngqpt_fine 24 24 24 # Interpolate eph matrix elements on the same # dense mesh as the kgrid getwfk_filepath "teph4mob_4o_DS2_WFK" # Read the dense WFK file getddb_filepath "teph4mob_2_DDB" # We need the ddb and dvdb getdvdb_filepath "teph4mob_3_DVDB" getwfkfine_filepath "teph4mob_4o_DS3_WFK" # Path to the dense 48x48x48 WFK # Definition of the variables related to transport properties tmesh 5.0 59.0 6 # Temperature array at which the mobility will be computed # Change this depending on the concentration you want eph_doping 1e+15 # in e cm^3 sigma_erange 0 0.15 eV # We compute the lifetimes of electrons only, # in an energy window of 0.15 eV from the CBM # Input variables related to the eph run mixprec 1 # We use single precision in some parts. # It does not affect the precision of the result but accelerates the calculation # boxcutmin 1.1 # Use boxcutmin 1.1 to decrease the memory # requirements. Check that it does not affect # your results by increasing this (up to 2 max). ####################################################################### #Common input variables # Definition of the planewave basis set ecut 3 nband 8 # Definition of the unit cell acell 3*10.61 # This is equivalent to 10.61 10.61 10.61 rprim 0.0 0.5 0.5 # In tutorials 1 and 2, these primitive vectors 0.5 0.0 0.5 # (to be scaled by acell) were 1 0 0 0 1 0 0 0 1 0.5 0.5 0.0 # that is, the default. # Definition of the atom types ntypat 2 # There are two types of atom znucl 13 33 # The keyword "znucl" refers to the atomic number of the # possible type(s) of atom. The pseudopotential(s) # mentioned in the "files" file must correspond # to the type(s) of atom. Here, type 1 is the Aluminum, # type 2 is the Arsenic. #Definition of the atoms natom 2 # There are two atoms typat 1 2 # The first is of type 1 (Al), the second is of type 2 (As). xred 0.0 0.0 0.0 0.25 0.25 0.25 pp_dirpath "$ABI_PSPDIR" pseudos "13al.981214.fhi, PseudosTM_pwteter/33as.pspnc" #%%<BEGIN TEST_INFO> #%% [setup] #%% executable = abinit #%% test_chain = teph4mob_1.in, teph4mob_2.in, teph4mob_3.in, teph4mob_4.in, teph4mob_5.in, teph4mob_6.in, teph4mob_7.in #%% [files] #%% files_to_test = #%% teph4mob_7.out, tolnlines= 57, tolabs= 80, tolrel= 0.05; #%% teph4mob_7o_DS1_SERTA_KAPPA, tolnlines= 50, tolabs= 1.1e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_MRTA_KAPPA, tolnlines= 50, tolabs= 1.5e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_SERTA_PI, tolnlines= 50, tolabs= 1.1e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_MRTA_PI, tolnlines= 50, tolabs= 1.1e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_SERTA_SBK, tolnlines= 50, tolabs= 1.1e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_MRTA_SBK, tolnlines= 50, tolabs= 1.1e2, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_SERTA_SIGMA, tolnlines= 50, tolabs= 4e+3, tolrel= 5.0e2, fld_options = ridiculous; #%% teph4mob_7o_DS1_MRTA_SIGMA, tolnlines= 50, tolabs= 100, tolrel= 5.0e2, fld_options = ridiculous; #%% [paral_info] #%% max_nprocs = 4 #%% [extra_info] #%% authors = G. Brunin, M. Giantomassi #%% keywords = NC, DFPT, EPH, RTA #%% description = #%% Eph for mobility in semiconductors #%%<END TEST_INFO>
Copy the input file in the Work_eph4mob directory, and run ABINIT:
abinit teph4mob_7.in > teph4mob_7.log 2> err &
In the log file, you will now find information about the doublegrid method:
coarse: 24 24 24 fine: 48 48 48
The SERTA mobility obtained at 300 K is 163.84 cm^2/V/s. Using a 48×48×48 \qqmesh for the matrix elements as well would give 96.97 (using sigma_ngkpt 24 24 24). The result is indeed improved, since using a 24×24×24 mesh both for electrons and phonons gives 379.06. You can also use a finer mesh, but always multiple of the initial coarse mesh (in this case, 72×72×72, 96×96×96, etc). It is worth noticing that, according to our tests, there is very little use to go beyond a mesh three times as dense as the coarse one. Using a 72×72×72 fine mesh for the energies gives a mobility of 152.30 cm^2/V/s, and a 96×96×96 mesh leads to 149.38 cm^2/V/s: the improvement is indeed rather limited.
Important
As a rule of thumb, consider to use the DG method for systems in which the tetrahedron filter is not able to reduce the number of \qqpoints in the integrals below 5% for a significant fraction of the \kkpoints in the sigma_erange energy window. This may happen if there are multiple equivalent pockets and thus many intravalley scattering channels. In this case, the computation of \tau_\nk may require several minutes (210) per \kkpoint and calculations performed with the same \kk and \qqmesh start to be expensive when the BZ sampling gets denser.
Inplace restart¶
All the results of the calculation are stored in a single SIGEPH.nc file for all the \kkpoints (and spins) considered. The list of \kkpoints is initialized at the beginning of the calculation and an internal table in the netcdf file stores the status of each \kkpoint (whether it has been computed or not). This means that calculations that are killed by the resource manager due to time limit can reuse the SIGEPH file to perform an automatic inplace restart. Just set eph_restart to 1 in the input file and rerun the job
Important
There is no harm in setting eph_restart to 1 from the begining but keep in mind that the code will restart the calculation from scratch if all the \kkpoints in the SIGEPH.nc have been computed (a backup copy is kept). So we do not recommended the use of this option in MultiDataset mode. Again, MultiDataset are evil when it comes to highperformance!
Transport calculation from SIGEPH.nc¶
The routine that computes carrier mobilites is automatically invoked when eph_task 4 is used and a RTA.nc file with the final results is produced. There are however cases in which one would like to compute mobilities starting from a preexistent SIGEPH.nc without performing a full calculation from scratch. In this case, use eph_task 7 and specify the name of the SIGEPH.nc file with getsigeph_filepath. The advanced input variable transport_ngkpt can be used to downsample the \kkmesh used in the mobility integrals.
MPI parallelism and memory requirements¶
There are five different MPI levels that can be used to distribute the workload and the most memorydemanding data structures. By default, the code tries to reach some compromise between memory requirements and time to solution by activating the parallelism over perturbations and then the \qqpoint parallelism if no input is provided by the user. You can however specify manually the MPI distribution across the five different levels by using eph_np_pqbks (a list of 5 integers). The product of these five numbers must be equal to the total number of MPI processes.
The first entry defines the number of processes for the parallelization over perturbations. The allowed value range between 1 and 3 × natom, and should be a divisor of 3 × natom to distribute the work equally. The higher this number, the lower the memory requirements at the price of increased MPI communication. The second entry determines the parallelization over the \qqpoints in the IBZ. This parallelization level allows one to decrease both the computational time as well as memory although it’s not always possible to distribute the load equally among the processes. The parallelization over bands is usually not relevant for mobility computations as only a few states close to the VBM or CBM are usually included. The MPI parallelism over \kkpoints and spins is very efficient but it requires HDF5 with MPIIO support and, besides, memory won’t scale. Use these additional two levels if the memory requirements are under control and you want to boost the calculation.
How to reduce the memory requirements¶
As mentioned above, the memory will scale with the number of MPI processors used for the \qqpoint and the perturbation communicators. However, there might be tricky systems in which you start to experience memory shortage that prevents you from running with many MPI processes. This problem should show up for very dense \kk/\qq meshes. As a rule of thumb, mobility calculations with meshes denser than e.g 200x200x200 start to be very memory demanding and the execution will slow down because several algorithms and internal tables for the BZ sampling and the tetrahedron method start to dominate. The double grid technique helps mitigate this bottleneck. In some cases, you may try to reduce slightly the value of sigma_erange to reduce the memory requirements.
Note also that the EPH code allocates a relatively small buffer to store the Bloch states involved
in transport calculations but unfortunately the \kkpoints are not easy to distribute with MPI.
Moreover the size of this array depends on the electronic dispersion:
systems with several relatively flat bands around the band edges require more memory.
To reduce the memory for the wavefunctions, the code uses internal buffers in single precision.
This option is enabled at configure time by using enable_gw_dpc="no"
(this is the default behaviour).
If these tricks do not solve your problem, consider using OpenMP threads. The code is not highlyoptimized for OpenMP but a couple of threads may be useful to avoid replicating memory at the MPI level. As a rule of thumb, 24 OpenMP threads should be OK provided you link with threaded FFT and BLAS libraries. To compile ABINIT with OpenMP support and link with a threaded library see the corresponding section in the compilation tutorial.
Warning
Last but not least, do not use datasets: split the calculation into different input files and optimize the number of MPI processes according to the dimension of the problem. You have been warned!
How to compute the WFK only for kpoints close to the band edges¶
As we have already seen in the previous sections, a relatively small number of \kkpoints close to the band edges is usually sufficient to converge mobilities. Yet, in the NSCF run, we computed a WFK file for all the \kkpoints in the IBZ hence we spent a lot of resources to compute and store states that are not needed for phononlimited mobilities.
In principle, it is possible to restrict the NSCF calculation to the relevant \kkpoints provided we have a cheap and goodenough method to predict whether the wavevector is inside the energy window without solving the KS eigevalue problem exactly. For example, one can use the starfunction interpolation by ShanklandKoellingWood (SKW) [Shankland1971], [Koelling1986], [Madsen2006], [Madsen2018] which requires as input a set of eigenvalues in the IBZ and a single parameter defining the basis set for the interpolation.
There are several technical problems that should be addressed at the level of the internal implementation but the idea is relatively simple and goes as follows:
 Compute the KS eigenvalues on a relatively coarse \kkmesh in the IBZ
 Use this coarse WFK file to interpolate the eigenvalues on a much denser \kkmesh specified by the user.
 Find the wavevectors of the dense mesh inside an energy window specified by the user and store the list of \kkpoints in a external file (KERANGE.nc).
 Use this external file to run a NSCF calculation only for these \kkpoints. At the end of the NSCF job, ABINIT will produce a customized WFK file on the dense mesh that can be used to run calculations for phononlimited mobilities
An example will help clarify.
Suppose we have computed a WFK file with a NSCF run using a 16x16x16 \kkmesh (let’s call it 161616_WFK) and we want to compute mobilites with the much denser 64x64x64 \kkmesh. In this case, use
to read the WFK file specified by getwfk_filepath, find the wavevectors belonging to the sigma_ngkpt \kkmesh inside the energy window defined by sigma_erange and produce a KERANGE.nc file. The parameters defining the SKW interpolation are specified by einterp.
A typical input file for this step looks like:
optdriver 8 wfk_task "wfk_kpts_erange" getwfk_filepath "161616_WFK" # Define fine kmesh for the interpolation sigma_ngkpt 64 64 64 sigma_nshiftk 1 sigma_shiftk 0 0 0 sigma_erange 0.0 0.2 eV # Select kpts in fine mesh within this energy window. einterp 1 5 0 0 # Parameters for starfunction interpolation
This input produces a KERANGE.nc file (let’s call it out_KERANGE) that can be used via the getkerange_filepath variable as a starting point to perfom a NSCF run with the following variables:
getkerange_filepath "out_KERANGE.nc" getden_filepath "161616_DEN" # Read DEN file to initialize NSCF run getwfk_filepath "161616_WFK" # Init GS wavefunctions from this file (optional) iscf 2 tolwfr 1e18 kptopt 0 # Important! # These variables must be consistent with the values of # sigma_ngkpt, sigma_shiftk used in the previous step ngkpt 64 64 64 nshiftk 1 shiftk 0.0 0.0 0.0
This part will produce a customized Fortran WFK file with ngkpt = 64 64 64 in which only the states listed in the KERANGE.nc netcdf file have been computed. This WKF file can then be used in the EPH code to compute mobilites. For further examples see v9[57], and v9[61].
Note that the two tests cannot be executed in multidataset mode with a single input file. Also, keep in mind that the quality of the interpolation depends on the initial coarse \kkmesh so we recommended to look at the interpolant, see discussion at the end of the introductory tutorial.
Important
It is also a good idea to use an energy window that is larger than the one that will be employed to compute the mobility in the EPH code. As a rule of thumb, increase sigma_erange by 0.15 eV when computing the KERANGE.nc file. This should be however tested in each case.