4 Calculating the band structure

Once the orbital population (charges) for the system had been obtained, the band structure can be calculated at any chosen k-points. The following input calculates the GaAs band structure along the line L-$ \Gamma$-X.

Geometry = {
  Periodic = Yes
  LatticeVectors [Angstrom] = {
    2.80  2.80  0.00
    2.80  0.00  2.80
    0.00  2.80  2.80
  }
 TypeNames = { "Ga" "As" }
 TypesAndCoordinates [relative] = {
   1  0.00  0.00  0.00
   2  0.25  0.25  0.25
 }
}

Driver = {}

Hamiltonian = DFTB {
  SCC = Yes
  SCCTolerance = 1e-5
  MaxSCCIterations = 1
  Mixer = Broyden {}
  MaxAngularMomentum = {
    Ga = "d"; As = "d"
  }
  SlaterKosterFiles = Type2FileNames {
    Prefix = "./hyb-0-1/"
    Separator = "-"
    Suffix = ".skf"
  }
  KPointsAndWeights = KLines {
    1   0.5  0.0  0.0   # L (11-1)
    20  0.0  0.0  0.0   # Gamma (000)
    20  0.5  0.5  0.0   # X (100)
  }
  ReadInitialCharges = Yes
}

Options = {
  RestartFrequency = 0
}

Some notes on the input:

Running DFTB+ with the input above, the eigenlevel spectrum is calculated at the required k-points. The results are written to the file detailed.out and in more readable format to band.out. You can again use the script band2dat to extract the data from it, which can be then directly plotted by some data visualisation tool (like xmgrace):

  band2dat band.out bandstruct.dat
If you import the data file bandstruct.dat into xmgrace as NXY set, you should obtain a band structure similar to Fig. [*].

Figure: Band structure of GaAs calculated with DFTB+ along the L-$ \Gamma$-X line using the parametrisation hyb-0-1.
Image bandstruct