Transport Properties using the Boltzmann Equation

by Maria Troppenz, Patrick Dieu, & Santiago Rigamonti for exciting nitrogen

Purpose: In this tutorial you will learn how to calculate electronic transport coefficients with exciting. The coefficients are obtained by solving the linearized Boltzmann equation in the constant relaxation time approximation. They are calculated for bulk silicon.


0. Theoretical background


1. Define relevant environment variables

Read the following paragraphs before starting with the rest of this tutorial!

Before starting, be sure that relevant environment variables are already defined as specified in How to set environment variables for tutorials scripts. The following script is used in this tutorial:

  • PLOT-transport.py: Python script for visualizating the transport coefficients.

From now on the symbol $ will indicate the shell prompt.

Important note: All input parameters are in atomic units!


2. Transport coefficients of Bulk Silicon

To start the tutorial, create a new, empty directory named BE-Si and move into it.

$ mkdir BE-Si
$ cd BE-Si
i) Preparation of the calculation

Save the following lines as input.xml:

<input>
   <title>Bulk Silicon</title>
   <structure speciespath="$EXCITINGROOT/species/">
      <crystal scale="10.26">
         <basevect>0.0   0.5   0.5</basevect>
         <basevect>0.5   0.0   0.5</basevect>
         <basevect>0.5   0.5   0.0</basevect>
      </crystal>
      <species speciesfile="Si.xml">
         <atom coord="0.00  0.00  0.00"></atom>
         <atom coord="0.25  0.25  0.25"></atom>
      </species>
   </structure>
   <groundstate
      do="fromscratch"
      xctype="GGA_PBE_SOL"
      ngridk="4 4 4"
      rgkmax="8.0"
      gmaxvr="14.0"
      maxscl="100">
   </groundstate>
</input>

Set up $EXCITINGROOT to the correct root directory in speciespath and execute excitingser with the commands

$ SETUP-excitingroot.sh
$ time excitingser

To gain a better understanding of the later calculated transport coefficients of silicon, you may want to look at the band structure. For this, please expand the link below and follow the instructions.

ii) Calculation of the transport coefficients at room temperature

In the following, we calculate the transport coefficients with respect to the chemical potential at a constant temperature (here 300K). The equations of the transport coefficients (see 0.Theoretical Background) contain the derivative of the Fermi distribution function $f_0$. That means that only k-points with eigenenergies near the Fermi surface contribute to the coefficients. In order to achieve a sufficient representation of the energy bands in this area, a fine k-grid is needed.

To obtain eigenenergies for a fine k-grid, we perform a single self-consistency loop on top of the previous ground-state calculation by changing in input.xml

  • the attribute do = "fromfile";
  • the attribute ngridk = "40 40 40";
  • the attribute maxscl = "1";

in the element groundstate (for more details see Input Reference).

The element groundstate in input.xml should now look like this:

...
   <groundstate
      do="fromfile"
      xctype="GGA_PBE_SOL"
      ngridk="40 40 40"
      rgkmax="8.0"
      gmaxvr="14.0"
      maxscl="1">
   </groundstate>
...

The transport coefficients are calculated by adding the following lines in the element properties of your input.xml

...
   <properties>
      <momentummatrix/>
      <boltzequ
         windtdf="-1.0 0.5"
         nwtdf="1500"
         windtemp="300 300"
         tgrid="1"
         windmu="0.1691 0.2491"
         mugrid="200"
         tevout="true"
         tsiout="true">
         <condcomp>1 1</condcomp>
         <condcomp>2 2</condcomp>
         <condcomp>3 3</condcomp>
      </boltzequ>
   </properties>
...

With inserting the element momentummatrix, the momentum matrix elements are calculated. Inside the element boltzequ, you define the attributes needed for the calculation of the transport coefficients.

An explanation of the attributes can be found by expanding the link below or in Input Reference.

By executing excitingser

$ time excitingser

the Seebeck coefficient $S$, the electrical conductivity over the relaxation time $\sigma /\tau$, and the thermal conductivity over the relaxation time $\kappa_0 / \tau$ are calculated for the temperature values and chemical potential values defined in input.xml. The calculated transport coefficients are in the files SEEBECK_COMP.OUT, ELECTCOND_COMP.OUT, and THERMALCOND_COMP.OUT, respectively, while COMP denotes the tensor component specified by the integer pair given in condcomp. Furthermore, the figure of merit estimated by $ZT = ( \sigma S^2/\kappa_0) \,T$ can be found in file ZT_COMP.OUT.

Please note: $\sigma$ and $\kappa_0$ are not directly given, but the output files contain the coefficients $\sigma /\tau$ and $\kappa_0 / \tau$. $\tau$ itself is constant (does not depend on electronic structure with $\pmb{k}$ and $n$), and can be multiplied afterwards.

Now, the transport coefficients are calculated and you can plot them by using PLOT-transport.py.

The Seebeck coefficient, the electrical conductivity over $\tau$ and the power factor for the temperature of 300K can be visualized with the following commands:

$ PLOT-transport.py single[S] T=300.0K
$ PLOT-transport.py single[sigma] T=300.0K
$ PLOT-transport.py single[PF] T=300.0K,t=1e-14s
The output looks as follows:

seebeck.png

sigma-over-tau.png

powerfactor.png

A detailed description of the plot script is given in the link below.

iii) Calculation of the transport coefficients at different doping concentrations

In the following, we look at the transport coefficients with respect to the temperature at a constant chemical potential.

We can use the fine k-grid obtained in part ii) and skip the ground-state calculation by changing in input.xml

  • the attribute do = "skip";

in the element groundstate. Moreover, the momentum matrix elements does not need to be calculated again and, e.g., can be removed or commented.

The element properties of your input.xml can be changed to

...
   <properties>
     <!--momentummatrix/-->
      <boltzequ
         windtdf="-1.0 0.5" 
         nwtdf="1500" 
         windtemp="300 1200" 
         tgrid="90" 
         windmu="0.2026 0.2107" 
         mugrid="3" 
         tevout="true" 
         tsiout="true">
         <condcomp>1 1</condcomp>
         <condcomp>2 2</condcomp>
         <condcomp>3 3</condcomp>
      </boltzequ>
   </properties>
...

With the modified input.xml, we can rerun excitingser

$ time excitingser

The Fermi level of the ground state for silicon is at around 5.6231 eV and represents the charge neutrality level (value can be extracted from EFERMI.OUT). The chemical potential can be set to values below this energy (hole-doped silicon), or to values above this energy (electron-doped silicon), in order to simulate different doping concentrations for bulk silicon.

In the transport output files, there are different values of the chemical potential.

We can look at some transport coefficients for the hole-doped silicon with these commands:

$ PLOT-transport.py single[S] mu=5.6231eV
$ PLOT-transport.py single[sigma] mu=5.6231eV
$ PLOT-transport.py single[PF] mu=5.6231eV,t=1e-14s
The output looks as follows:

seebeck-hole-doped.png

sigma-over-tau-hole-doped.png

powerfactor-hole-doped.png

Results for transport coefficients of silicon alloys calculated with Boltzmann's equation are published in Ref.4, and can be compare to your calculation.


Bibliography
1. Method described in detail in: B. R. Nag, "Electron Transport in Compound Semiconductors" (Springer Verlag, Berlin, 1996).
2. G. D. Mahan and J. O. Sofo, "The best thermoelectric", Proc. Natl. Aad. Sci. USA 93, 7436 (1996).
3. T. J. Scheidemantel, C. Ambrosch-Draxl, T. Thonhauser, H. V. Badding, and J. O. Sofo, "Transport coefficients from first-principles calculations", Phys. Rev. B 68, 125210 (2003).
4. S. Nakajima, J. Phys. Chem. Solids 24, 479 (1963).
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License