Calculation of electronic band structures

In this tutorial we calculate the electronic band structure of Si along high symmetry directions in the Brillouin zone.

First, a standard ground state calculations is performed and the results are saved to a .gpw file. As we are dealing with small bulk system, plane wave mode is the most appropriate here.

from import bulk
from gpaw import GPAW, PW, FermiDirac

# Perform standard ground state calculation (with plane wave basis)
si = bulk('Si', 'diamond', 5.43)
calc = GPAW(mode=PW(200),
            kpts=(8, 8, 8),
            random=True,  # random guess (needed if many empty bands required)
si.calc = calc

Next, we calculate eigenvalues along a high symmetry path in the Brillouin zone kpts={'path': 'GXWKL', 'npoints': 60}. See ase.dft.kpoints.special_points for the definition of the special points for an FCC lattice.

For the band structure calculation, density is fixed to the previously calculated ground state density (fixdensity=True), and as we want to calculate all k-points, symmetry is not used (symmetry='off'). The unoccupied states can be sometimes converged faster with the conjugate gradient eigensolver.

# Restart from ground state and fix potential:
calc = GPAW('Si_gs.gpw',
            kpts={'path': 'GXWKL', 'npoints': 60},
            convergence={'bands': 8})


Finally, the bandstructure can be plotted (using ASE’s band-structure tool ase.dft.band_structure.BandStructure):

bs = calc.band_structure()
bs.plot(filename='bandstructure.png', show=True, emax=10.0)

The full script: