Non self-consistent calculations: Band structures and Density Of States

From Wiki Max
Jump to navigation Jump to search

Prev: LabQSM#Lecture 1: Basic DFT calculations and Convergences


Non self-consistent calculations: Intro

Silicon band structure. Originals from [https://www.tf.uni-kiel.de/matwis/amat/td_kin_ii/index.html Thermodynamics and Kinetics II, Dr. J. Carstensen, Univ. Kiel]

Once the charge density has been obtained in a scf run, more calculations can be performed at fixed density (non-scf). Among these:

  • calculations of Kohn-Sham energies and orbitals on any given set of k-points (i.e. without specific aim of represent a reasonable sampling of the BZ);
  • calculations as above, also increasing the number of computed (= diagonalized) bands (incl the calculation of empty Kohn-Sham states);
  • Importantly, nscf calculations are typically done to plot KS bands or compute the DOS,
  • but also as a preliminary step to other calculations (e.g. uniform k-point samplings and large amounts of empty states are using in GW and other many-body perturbation theory algorithms implemented with sum-over-states techniques)

In the Quantum ESPRESSO input file one has to set:

   calculation="nscf"     # kpts sampling BZ

or

   calculation="bands"   # kpts along lines

K-points (and number of bands if relevant) need to be specified according to the specific needs. See below for bands and DOS.

DOS

In this case a uniform k-point sampling is needed, similarly to scf calculations.

A proper sampling of the BZ is then performed, but the density is not updated.

Input example (pw.x executable) to prepare for DOS calculations:

 [...]
 K_POINTS {automatic}
 20 20 20   0 0 0

By doing this we are de fact performing a refinement of the BZ sampling.

Setting calculation="nscf" is a good choice.

Band structure

Input example (pw.x) to obtain band data:

K_POINTS {crystal_b} 6

 0.500  0.500  0.000   40    # X 
 0.000  0.000  0.000   40    # G 
 0.500  0.500  0.500   40    # L 
 0.750  0.500  0.250   40    # W 
 0.750  0.375  0.375   40    # K 
 0.000  0.000  0.000    1    # G 

Input example (pw.x) to obtain dos data: K_POINTS {automatic} 20 20 20 0 0 0