Band structure calculations


In the previous tutorial, we calculated the total energy of silicon and explored its Brillouin zone convergence. This tutorial illustrates calculations of the electronic band structure, specifically, the variation of the Kohn-Sham eigenvalues along a special kpoint path in the Brillouin zone.

First lets specify the bulk silicon energy calculation in Si.yaml, or reuse the file from the Brillouin-zone sampling:

  system: cubic
  modification: face-centered
  a: 10.263

    - SG15/$ID_ONCV_PBE.upf
    - [Si, 0, 0, 0]
    - [Si, 0.25, 0.25, 0.25]

    offset: [0.5, 0.5, 0.5] #Monkhorst-Pack
    size: [8, 8, 8]

  ke-cutoff: 100 #Hartree

checkpoint_out: Si_out.h5

which can be run with

(qimpy) $ python -m qimpy.dft -i Si.yaml -o Si.out

Next, we list high-symmetry points in the Brillouin zone laying out a path along which we want the band structure, which can be put in kpoints.yaml:

include: Si.yaml


    n-bands: 10
    n-bands-extra: 5

  fixed-H: Si_out.h5 #fixed Hamiltonian so there's no more SCF

  k-mesh: null #de-specify the k-mesh from Si.yaml

    dk: 0.05
      - [0, 0, 0, $\Gamma$]
      - [0, 0.5, 0.5, X]
      - [0.25, 0.75, 0.5, W]
      - [0.5, 0.5, 0.5, L]
      - [0, 0, 0, $\Gamma$]
      - [0.375, 0.75, 0.375, K]

checkpoint-out: null #de-specify the checkpoint file creation from Si.yaml

Note that you can overwrite previously specified values when using include. The high symmetry points for many structures can be found easily online, such as this course website . Or you can use the more complete Bilbao database but you’ll need to know the point group of your crystal.

Then you can calculate the band structure along the k-point path with

(qimpy) $ python -m qimpy.dft -i kpoints.yaml -o kpoints.out

and if you investigate the electron fillings using h5dump -g electrons/fillings kpoints.h5 then you can see that half of the bands are filled completely, while the other half are completely empty, in line with what is expected for a semiconductor.

And to generate the band structure plot, run

(qimpy) $ python -m qimpy.interfaces.bandstructure -c kpoints.h5 -o Si_bandstructure.png

which should produce


Notice that at the Gamma point, the lowest band is single while the next three higher bands are degenerate: these line up with the s and p valence orbitals on the Silicon atoms. These degeneracies change in different parts of the Brillouin zone: the XW segment has two pairs of degenerate bands, while the WL and Gamma-K segments have no degeneracies.