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
BoltzWannmodule.
If you want to use Quantum ESPRESSO¶
-
Directory:
tutorials/tutorial16-withqe/Files can be downloaded from here -
Input Files
-
Si.scfThepwscfinput file for ground state calculation -
Si.nscfThepwscfinput file to obtain Bloch states on a uniform grid -
Si.pw2wanInput file forpw2wannier90 -
Si.winThewannier90andpostw90input file
-
If you do not want to use Quantum ESPRESSO¶
-
Directory:
tutorials/tutorial16-noqe/Files can be downloaded from here -
Input Files
-
Si.winThewannier90andpostw90input file -
Si.mmnThe overlap matrices \(\mathbf{M}^{(\mathbf{k},\mathbf{b})}\) -
Si.amnProjection \(\mathbf{A}^{(\mathbf{k})}\) of the Bloch states onto a set of trial localised orbitals -
Si.eigThe 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
pwscfto obtain the ground state of silicon -
Run
pwscfto obtain the Bloch states on a uniform k-point grid. Details on the disentanglement procedure are discussed in Tutorial 11. -
Run
wannier90to generate a list of the required overlaps (written into theSi.nnkpfile). -
Run
pw2wannier90to compute the overlap between Bloch states and the projections for the starting guess (written in theSi.mmnandSi.amnfiles). -
Run
wannier90to compute the MLWFs.\Inspect the output file
Si.woutand 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
postw90to 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
postw90to check if the results for the transport properties are converged. -
Change the
Si.wininput file so that it calculates the transport coefficients for temperatures from 300 to 700 K, with steps of 200 K. Rerunpostw90and 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.datto 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/gawkcommand 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.