Skip to content

16: Silicon — Boltzmann transport

  • Outline: Obtain MLWFs for the valence and low-lying conduction states of Si. Calculate the electrical conductivity, the Seebeck coefficient and the thermal conductivity in the constant relaxation time approximation using the BoltzWann module.

If you want to use Quantum ESPRESSO

  • Directory: tutorials/tutorial16-withqe/ Files can be downloaded from here

  • Input Files

    • Si.scf The pwscf input file for ground state calculation

    • Si.nscf The pwscf input file to obtain Bloch states on a uniform grid

    • Si.pw2wan Input file for pw2wannier90

    • Si.win The wannier90 and postw90 input file

If you do not want to use Quantum ESPRESSO

  • Directory: tutorials/tutorial16-noqe/ Files can be downloaded from here

  • Input Files

    • Si.win The wannier90 and postw90 input file

    • Si.mmn The overlap matrices \(\mathbf{M}^{(\mathbf{k},\mathbf{b})}\)

    • Si.amn Projection \(\mathbf{A}^{(\mathbf{k})}\) of the Bloch states onto a set of trial localised orbitals

    • Si.eig The Bloch eigenvalues at each k-point. For interpolation only

Note the first five steps in the following are the same of Tutorial 11, and are needed only if you want to use the PWscf code of Quantum ESPRESSO. Otherwise, if you have already run Tutorial 11 with Quantum ESPRESSSO (in particular, the section "Valence + Conduction States") you can start from those files and continue from point 6, after having added the BoltzWann flags to the input file.

If instead you do not have Quantum ESPRESSO installed, or you do not want to use it, you can start from step 5 using the files in the tutorials/tutorial16-noqe/ folder.

  1. Run pwscf to obtain the ground state of silicon

    Terminal
    pw.x < Si.scf > scf.out
    
  2. Run pwscf to obtain the Bloch states on a uniform k-point grid. Details on the disentanglement procedure are discussed in Tutorial 11.

    Terminal
    pw.x < Si.nscf > nscf.out
    
  3. Run wannier90 to generate a list of the required overlaps (written into the Si.nnkp file).

    Terminal
    wannier90.x -pp Si
    
  4. Run pw2wannier90 to compute the overlap between Bloch states and the projections for the starting guess (written in the Si.mmn and Si.amn files).

    Terminal
    pw2wannier90.x < Si.pw2wan > pw2wan.out
    
  5. Run wannier90 to compute the MLWFs.\

    Terminal
    wannier90.x Si
    

    Inspect the output file Si.wout and check if the convergence was reached both in the disentanglement and in the wannierisation steps (as discussed in further detail in Tutorial 11). You may also want to plot the Wannier functions and the interpolated band structure.

  6. Run postw90 to calculate the transport coefficients.\ postw90.x Si (serial execution)\ mpirun -np 8 postw90.x Si (example of parallel execution with 8 MPI processes)

Inspect the output file Si.wpout. It summarizes the main details of the calculation (more details can be obtained by setting a larger value of the iprint flag). Check if no warnings are issued. Note that if no special flags are passed to BoltzWann, it assumes that the ab-initio calculation did not include magnetization effects, and thus it sets to 2 the number of electrons per state.

Note also that the value of the relaxation time \(\tau=10\) fs in the example is set only as a representative value; note also that only the electrical and thermal conductivity depend on \(\tau\), while the Seebeck coefficient is independent of \(\tau\).

Using your favourite plotting program, plot the Si_boltzdos.dat file to inspect the DOS.

Using your favourite plotting program, plot columns 1 and 3 of the Si_seebeck.dat file to inspect the \(S_{xx}\) component of the Seebeck coefficient as a function of the chemical potential \(\mu\), at \(T=300\) K.

Further ideas

  • Change the interpolation to a \(60\times 60\times 60\) mesh and run again postw90 to check if the results for the transport properties are converged.

  • Change the Si.win input file so that it calculates the transport coefficients for temperatures from 300 to 700 K, with steps of 200 K. Rerun postw90 and verify that the increase in execution time is neglibile (in fact, most of the time is spent to interpolate the band structure on the \(k\) mesh).

    Plot the Seebeck coefficient for the three temperatures \(T=300\) K, \(T=500\) K and \(T=700\) K. To do this, you have to filter the Si_seebeck.dat to select only those lines where the second column is equal to the required temperature. A possible script to select the \(S_{xx}\) component of the Seebeck coefficient for \(T=500\) K using the awk/gawk command line program is the following:

    Terminal
    awk `{if ($2 == 500) {print $1, $3;}}' < Si_seebeck.dat > Si_seebeck_xx_500K.dat
    

    Then, you can plot columns 1 and 2 of the output file Si_seebeck_xx_500K.dat.

  • Try to calculate the Seebeck coefficient as a function of the temperature, for a \(n-\)doped sample with, e.g., \(n=10^{18}\) cm\(^{-3}\). Note that to this aim, you need to calculate consistently the value \(\mu(T)\) of the chemical potential as a function of the temperature, so as to reproduce the given value of \(n\). Then, you have to write a small program/script to interpolate the output of BoltzWann, that you should have run on a suitable grid of \((\mu,T)\) points.