exercise 04 :: Density of states and band structure calculations

DFT allows to calculate density of states (DOS) and energy band dispersion for crystalline solids. In the following exercise we show in detail the procedure for Al FCC crystal. We consider FCC Aluminium as introduced in exercise 02 and use converged self-consistent field (SCF) calculations parameters as the number of k-points and the ecutwfc parameter, see exercise 03. The pseudopotential file can be downloaded here: Al.pz-vbc.UPF.

TASK 01

Calculation flow for DOS is as follows:

  1. perform calculation = 'scf' (for converged set of parameters) using pw.x program. Replace the ? in the following input file with the converged values found in previous exercise.

    &control
        calculation = 'scf'
        restart_mode = 'from_scratch',
        pseudo_dir = './',
        outdir = './tmp',
        prefix = 'al'
    /
    &system
        ibrav = 2, celldm(1) = 7.652446, nat = 1, ntyp = 1, 
        ecutwfc = ?, occupations = 'smearing',
        smearing = 'marzari-vanderbilt', degauss = 0.05
    /
    &electrons
        diagonalization = 'david'
        mixing_beta = 0.7
        conv_thr = 1.D-6
    /
    ATOMIC_SPECIES
        Al  26.98 Al.pz-vbc.UPF
    ATOMIC_POSITIONS
        Al 0.00 0.00 0.00
    K_POINTS (automatic)
        ?  ?  ?  0 0 0
    

    Save the file as pw-scf.in and run the SCF calculations invoking pw.x < pw-scf.in > out.pw-scf.

  2. perform calculation = 'nscf', i.e., non-selfconsistent calculations for larger number of k-point sampling of Brillouin zone. Remember to set also the ecutwfc parameter in the following input:

    &control
        calculation = 'nscf'
        restart_mode = 'from_scratch',
        pseudo_dir = './',
        outdir = './tmp',
        prefix = 'al'
    /
    &system
        ibrav = 2, celldm(1) = 7.652446, nat = 1, ntyp = 1, 
        ecutwfc = ?, occupations = 'smearing',
        smearing = 'marzari-vanderbilt', degauss = 0.001
    /
    &electrons
        diagonalization = 'david'
        mixing_beta = 0.7
        conv_thr = 1.D-6
    /
    ATOMIC_SPECIES
        Al  26.98 Al.pz-vbc.UPF
    ATOMIC_POSITIONS
        Al 0.00 0.00 0.00
    K_POINTS (automatic)
        36 36 36  0 0 0
    

    Save the file as pw-nscf.in and run pw.x < pw-nscf.in > out.pw-nscf

  3. save the following file as dos.in and perform the DOS calculations using dos.x < dos.in > out.dos

    &DOS
       prefix = 'al'
       outdir = './tmp'
       bz_sum = 'smearing'
       emin = -5.0
       emax = 15.0
       degauss = 0.01
       deltaE = 0.01
       fildos = 'K36_smear0.01_de0.01.dos'
    /
    

To improve on DOS calculation one might use larger number of k-points or consider tetrahedron method. For the tetrahedron method one needs to perform nscf calculations with occupations = 'tetrahedra' without setting smearing and degauss variables in the input for pw.x. Similarly for dos.in file one omits the degauss and sets bz_sum = 'tetrahedra'. Set also fildos = 'K36_tetra_de0.01.dos' Obtained results for both the integration schemes as well as the sqrt(E) fit are show in the following figure produced by the following gnuplot script

set term x11
set title "Density of states of FCC Al"
set ylabel "DOS (1/eV)"
set xlabel "E - E_F (eV)"
EF_nscf=7.6609  #read from out.pw-nscf
EF_tetra=7.6759 #read from out.pw-nscf_tetra
set key left
set grid
f(x) = a*sqrt(x-b)
a = 0.120294   #  +/- 2.747e-05    (0.02283%)
b = -11.0382   #  +/- 0.0006437    (0.005832%)
p [-12:7] \
  'K36_smear0.01_de0.001.dos' u ($1-EF_nscf):2 t "Gauss broadening" w l lw 2,\
  'K36_tetra_de0.01.dos' u ($1-EF_tetra):2 t"tetrahedron" w l lt 3 lw 2,\
  f(x) t"sqrt(E) fit" w l lt 4

enter image description here

TASK 02

For band structure calculations one can proceed as follow:

  1. perform calculation = 'scf' (for converged set of parameters) using pw.x program

  2. perform calculation = 'bands' of eigenvalues along a k-path in the Brillouin zone using pw.x program. The input might look like

    &control
        title = 'Al bands: L - G - K - W - X - U - L'
        calculation = 'bands'
        restart_mode = 'from_scratch',
        pseudo_dir = './',
        outdir = './tmp',
        prefix = 'al'
    /
    &system
        ibrav = 2, celldm(1) = 7.652446, nat = 1, ntyp = 1, 
        ecutwfc = 50, occupations = 'smearing',
        smearing = 'marzari-vanderbilt', degauss = 0.001
    /
    &electrons
        diagonalization = 'david'
        mixing_beta = 0.7
        conv_thr = 1.D-6
    /
    ATOMIC_SPECIES
        Al  26.98 Al.pz-vbc.UPF
    ATOMIC_POSITIONS
        Al 0.00 0.00 0.00
    K_POINTS crystal_b
      7
    0.5   0.5   0.5   24
    0.0   0.0   0.0   30
    0.75  0.375 0.375 10
    0.75  0.5   0.25  10
    0.5   0.5   0.0   10
    0.625 0.625 0.25  24
    0.5   0.5   0.5   1
    

    To set coordinates of the high symmetry points for the k-path see video tutorial using XCrySDen or check the file or http://lamp.tu-graz.ac.at/~hadley/ss1/bzones/fcc.php

  3. to collect the eigenvalues of the bands invoke bands.x < bands.in where the bands.in is as follows:

     &bands
        prefix  = 'al'
        outdir = './tmp'
        filband = 'bands.dat'
        lsym = .false.
     /
    

    The generated file bands.dat.gnu can be plot using gnuplot script:

    set term x11
    set title "Bandstructure of FCC Al"
    EF = 7.6599  #read from out.pw-scf
    set grid xtics
    set xtics ("L" 0, "{/Symbol G}" 0.82994101, "K" 1.89133024, "W" 2.24488363, "X" 2.73023897, "U" 3.09843702, "L" 3.74616479)
    set ylabel "E - E_F (eV)"
    p [:][-12:15] 'bands.dat.gnu' u 1:($2 - EF) t"" w l lw 2, 0 t"" lw 0.1 lt 
    

enter image description here
Compare the calculated band structure with the empty lattice approximation.


Martin Gmitra :: martin.gmitra@upjs.sk
Creative Commons License This work is licensed under a Creative Commons Attribution 4.0 International License.