5.2 Optimization of thermoelectric properties

Finding materials with high thermoelectric efficiency is an important problem. Therefore, it is necessary to enable the optimization of it.

The figure of merit ($ZT$) measures the thermoelectric efficiency of a material, and it is defined as

  \begin{equation}  \label{eq:figure-of-merit} ZT = \frac{\sigma S^{2} T}{\kappa _{\textsc{e}} + \kappa _{\textsc{ph}}}, \end{equation}   (7)

where $\sigma $ is the electrical conductivity, $S$ is the Seebeck coefficient, $T$ is temperature, and $\kappa _{\textsc{e}}$ and $\kappa _{\textsc{ph}}$ are electronic and phonon parts of thermal conductivity, respectively. These values (except for $\kappa _{\textsc{ph}}$) can be calculated, within a constant relaxation time approximation, using the code BoltzTraP 27 on fully relaxed structures, from the electronic structure obtained by VASP. We strongly suggest to do Pareto optimization of both ZT and stability.

Installation of supporting software

To run optimization of thermoelectric figure of merit ZT using USPEX, some additional software is required.

  1. Source code of BoltzTraP 27. It can be downloaded from http://www.icams.de/content/departments/cmat/boltztrap/. Please, follow the manual attached to its source distribution for installation.

  2. Python and python libraries. The interface of USPEX, VASP and BoltzTraP 27 has been tested on the Anaconda Python 2.7.10, which can be downloaded from https://www.continuum.io/downloads. In addition to the standard libraries, the following are also required:

    • numpy, version 1.4.1 or later.

    • scipy, version 0.11.0 or later.

    • ase, version 3.8.1 or later.

    • pyspglib (optional)

    • matplotlib (optional)

    With Anaconda Python, there is a large volume of stocked libraries that can be installed with the command conda. The following command lines are an example for installing libraries required for running a thermoelectric optimization.

    $ conda install numpy scipy matplotlib
    $ pip install ase pyspglib
    

    Under a normal Python distribution with pip installed, one can install required packages by typing the following command line.

    $ pip install numpy scipy matplotlib ase pyspglib
    

Specifying optimization of thermoelectric efficiency in INPUT.txt

For a thermoelectric efficiency optimization, the flag optType should be set to 14 as:

% optType
14
% EndOptType

Since the calculation of thermoelectric properties is performed on relaxed structures, a series of well-designed relaxation steps is necessary. Currently, the only implemented way to do this within USPEX is by combining VASP and BoltzTraP 27. This is specified as follows:

% abinitioCode
1 1 1 (1 14)
% ENDabinit

% KresolStart
0.12 0.10 0.07 0.05 0.05
% Kresolend
In the above example, structure relaxation is performed by a series of VASP executions (four in total) with finer and finer k-point grid. Note that the last value of KresolStart in this example is not used, it is given only as a placeholder.

Optimization of thermoelectric efficiency is enabled only for calculationType 300 and 301. The following flags are also expected to be set. For a deeper understanding of them, the user is referred to the original BoltzTrap paper 27.

800.0    : BoltzTraP_T_max
50.0     : BoltzTraP_T_delta
0.15     : BoltzTraP_efcut
300.0    : TE_T_interest
0.45     : TE_threshold
ZT       : TE_goal

$\triangleright $ variable BoltzTraP_T_max

Meaning: Maximum temperature (K) for calculations by BoltzTraP.

Default: 800.0

Format:

800.0 : BoltzTraP_T_max

$\triangleright $ variable BoltzTraP_T_delta

Meaning: Temperature (K) increments used by BoltzTraP.

Default: 50

Format:

50.0 : BoltzTraP_T_delta

$\triangleright $ variable BoltzTraP_T_efcut

Meaning: This variable specifies the interval of the chemical potential $\mu $ (eV) for BoltzTraP calculations.

Default: 0.15

Format:

0.2 : BoltzTraP_efcut

$\triangleright $ variable TE_T_interest

Meaning: Target temperature (K) at which you want to optimize thermoelectric efficiency.

Default: 300.0

Format:

300.0 : TE_T_interest

$\triangleright $ variable TE_threshold

Meaning: This flag is used for reducing the amount of storage space required by the optimization and it sets a lower limit for $ZT$. Saving all information generated by BoltzTraP for a large number of structures could occupy a vast amount of disk space. Structures with a $ZT$ value below TE_threshold are discarded.

Default: 0.5

Format:

0.45 : TE_threshold

$\triangleright $ variable TE_goal

Meaning: The component of $ZT$ to be optimized. Since the quantities defining $ZT$ are tensorial, the user is expected to select a component of $ZT$ to carry out the optimization. The options currently supported are the orientation-averaged ZT, or the diagonal components ZT_xx, ZT_yy, and ZT_zz.

Default: ZT

Format:

ZT : TE_goal

Output

The output of a thermoelectric efficiency optimization can be found in the sub-folder TEproperties under the appropriate results-folder. The maxima of $ZT$ and their corresponding $\mu $ are listed in the summary file summary.txt. The first column is the ID of the structure. With the ID, its structure can be found in the file gatheredPOSCARS. Structures created by the keepBest operation are not listed in the summary file, as each of them is a copy of another structure listed. A sample part of the summary file is as follows:

#                 trace
# ID   mu_max_1  ZT_max_1  mu_max_2  ZT_max_2
    1  0.019900  0.314997 -0.186600  0.294976
    2  0.152270  0.913590  0.002270  0.864951
    3 -0.021300  4.951155  0.152200  3.244481
    4 -0.194630  0.677683  0.054370  0.628948
    6  0.024120  6.144226  0.053620  0.914606
    7  0.030460  0.887808  0.041960  0.831734
    9  0.167860  0.479234  0.159360  0.446431
   10  0.133260  0.893694  0.144760  0.822560
   12  0.063250  0.903193  0.075750  0.843479
   13  0.044820  1.793899  0.004820  1.026578

Individual thermoelectric properties (such as $\sigma $, $S$, $\kappa _{\textsc{e}}$ and power factor $\sigma S^2$) can also be found in the folder TEproperties with corresponding structure ID number appended in the file name.

Note that, due to numerical instabilities in the computation of thermoelectric properties, some of the results might be incorrect, in which case the values of $ZT$ can be tens or hundreds of thousands times a normal value. USPEX makes sure that such values are discarded. To reduce frequency of occurence of such numerical instabilities, we recommend to symmetrize relaxed structures when their band structures (necessary for $ZT$ calculations) are computed.