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
Thepwscf
input file for ground state calculation -
Si.nscf
Thepwscf
input file to obtain Bloch states on a uniform grid -
Si.pw2wan
Input file forpw2wannier90
-
Si.win
Thewannier90
andpostw90
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
Thewannier90
andpostw90
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.
-
Run
pwscf
to obtain the ground state of silicon -
Run
pwscf
to obtain the Bloch states on a uniform k-point grid. Details on the disentanglement procedure are discussed in Tutorial 11. -
Run
wannier90
to generate a list of the required overlaps (written into theSi.nnkp
file). -
Run
pw2wannier90
to compute the overlap between Bloch states and the projections for the starting guess (written in theSi.mmn
andSi.amn
files). -
Run
wannier90
to compute the MLWFs.\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. -
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. Rerunpostw90
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 theawk/gawk
command line program is the following: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.