Non self-consistent calculations: Band structures and Density Of States
Prev: LabQSM#Lecture 1: Basic DFT calculations and Convergences
Non self-consistent calculations: Intro
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
Some comments:
bands
is also a nscf-calculation strictly speaking (i.e. the charge density is clearly not updated).- It differs from
calculation="nscf"
since there is not even the requirement of a uniform k-sampling (k-points can be computed along special directions, or just at any place in the BZ). - In this perspective,
nscf
runs can evaluate integrated quantities like an update of the Fermi energy. - During nscf (as well as bands) KS eigenvalues are diagonal to full accuracy (
diago_full_acc=.true.
by default), at variance with scf calculations, where accuracy is lowered for empty states (not relevant to compute the density not the total energy). - While one could set
diago_full_acc=.true.
in scf runs, it is anyway highly recommended to run a second nscf calculation to perform BZ refinements or increase the number of state for plotting or inspection. - 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.
Once the KS data have been produced by using pw.x
, we can take advantage of a post-processing utility of QE,
dos.x
to compute the actual DOS
$> dos.x < dos.in > dos.out
where a typical input file contains the following information:
$> cat dos.in
&DOS prefix = 'diamond' outdir = './SCRATCH/' degauss=0.01 ! [Ry] broadening parameter [ Emin=val ! min/max/step of the energy grid Emax=val deltaE=val ] fildos = 'dos.diamond.dat' /
The output file can then be visualised using some standard tools as described in Plotting and visualization tools.
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