Goal

Compute the silicon band structure along the high-symmetry path L–Γ–X–W–K–Γ and read the indirect gap yourself. Learn tpiba_b path input and the bands.x post-processor.

scf ─→ calculation='bands' (K_POINTS tpiba_b) ─→ bands.x ─→ plot

New cards and variables

Item Role
calculation='bands' Eigenvalues along an arbitrary k-path on a frozen density
K_POINTS (tpiba_b) The path in Cartesian 2π/a units
bands.x (&BANDS) Reorders bands, writes the .gnu file and symmetry labels

Input files

si.bands.in · si.bandspp.in (the preceding scf is E1's si.scf.in)

The bands run in full:

! E08 step 2: eigenvalues along a high-symmetry path.
! 'bands' is an nscf variant: it reads the scf density of prefix 'si'
! (run E01's si.scf.in first in this directory).

&CONTROL
  calculation = 'bands'
  prefix      = 'si'          ! must match the preceding scf
  outdir      = './tmp/'
  pseudo_dir  = './pseudo/'
  verbosity   = 'high'
/
&SYSTEM
  ibrav       = 2
  celldm(1)   = 10.26
  nat         = 2
  ntyp        = 1
  ecutwfc     = 30
  ecutrho     = 240
  nbnd        = 12            ! bands above the gap, so the conduction bands are plotted
  occupations = 'fixed'
/
&ELECTRONS
  conv_thr    = 1.0d-8
/

ATOMIC_SPECIES
  Si  28.0855  Si.pbe-n-kjpaw_psl.1.0.0.UPF

ATOMIC_POSITIONS (alat)
  Si  0.00  0.00  0.00
  Si  0.25  0.25  0.25

! band path in 'tpiba_b': Cartesian coordinates in units of 2*pi/a.
! each line: k-point, then the number of divisions to the NEXT point
! (the last point gets 0). Path: L - Gamma - X - W - K - Gamma.
K_POINTS (tpiba_b)
6
  0.500 0.500 0.500  30   ! L
  0.000 0.000 0.000  30   ! Gamma
  0.000 1.000 0.000  20   ! X
  0.500 1.000 0.000  20   ! W
  0.750 0.750 0.000  30   ! K
  0.000 0.000 0.000   0   ! Gamma

tpiba_b is Cartesian in 2π/a. QE's primitive-vector convention for ibrav=2 can differ from the textbook fcc setting, so literature fractional coordinates pasted into crystal_b produce a wrong path. When unsure, tpiba_b is the safe choice (Chapter 10).

The post-processor input:

! E08 step 3: bands.x reorders the raw eigenvalues into continuous bands.
! Products: si.bands.dat (+ .gnu for plotting, .rap with symmetry labels),
! and 'high-symmetry point' lines on stdout that give the x-axis ticks.
&BANDS
  prefix  = 'si'
  outdir  = './tmp/'
  filband = 'si.bands.dat'   ! output basename
  lsym    = .true.           ! classify states by symmetry (writes the .rap file)
/

Run

pw.x    -in si.scf.in     > si.scf.out      # the prerequisite scf (prefix='si')
pw.x    -in si.bands.in   > si.bands.out
bands.x -in si.bandspp.in > si.bandspp.out

The high-symmetry point lines in si.bandspp.out give the tick positions along the path. Measured: 0.000 (L), 0.866 (Γ), 1.866 (X), 2.366 (W), 2.720 (K), 3.780 (Γ).

Output and figure: measured

Si band structure along L-Gamma-X-W-K-Gamma
Measured silicon band structure (QE 7.5, PBE). The valence maximum sits at Γ and the conduction minimum on the Γ–X line (at about 0.85 of the way to X): an indirect-gap semiconductor.
  • The zero is the VBM (the scf highest occupied level, measured 6.212 eV).
  • Measured indirect gap: 0.57 eV (VBM at Γ, CBM at 0.83 of Γ–X), and a direct gap at Γ of 2.56 eV. The experimental indirect gap is 1.12 eV: the systematic PBE underestimate, on display.

Exercises

  1. Read both the direct gap at Γ and the indirect gap, and compare.
  2. Put a nonzero division count on the last path point. What warning do you get?
  3. Rewrite the same path in crystal_b and check whether the result changes. What is the crystal_b coordinate of the L point in QE's fcc convention?
  4. Raise nbnd to 20 and plot the higher conduction bands.
Common mistakes

Launching calculation='bands' without the scf: a bands run builds no density and needs the scf products under the same prefix/outdir. And a PBE gap below experiment does not mean your run is broken; it is a known limitation of the functional. If the gap itself is the target, move to hybrids or GW.

10 DOS and band structure · 08 SCF and NSCF