# Band Structure¶

BAND can calculate the band structure for the standard k-path in the Brillouin zone 1 and saves the corresponding data to the binary file RUNKF.

The band structure is best examined with the GUI module **BandStructure** see:

Advanced BAND tutorial: Calculation of Band Structure and COOP of CsPbBr3 with BAND

```
BandStructure
Enabled Yes/No
Automatic Yes/No
DeltaK float
FatBands Yes/No
UseSymmetry Yes/No
EnergyAboveFermi float
EnergyBelowFermi float
End
```

`BandStructure`

- Type
Block

- Description
Options for the calculation of the band structure.

`Enabled`

- Type
Bool

- Default value
No

- GUI name
Calculate band structure

- Description
If True, Band will calculate the band structure and save it to file for visualization.

`Automatic`

- Type
Bool

- Default value
Yes

- GUI name
Automatic generate path

- Description
If True, BAND will automatically generate the standard path through the Brillouin zone. If False BAND will use the user-defined path in BZPath.

`DeltaK`

- Type
Float

- Default value
0.1

- Unit
1/Bohr

- GUI name
Interpolation delta-K

- Description
Step (in reciprocal space) for band structure interpolation. Using a smaller number (e.g. 0.03) will result in smoother band curves at the cost of an increased computation time.

`FatBands`

- Type
Bool

- Default value
Yes

- GUI name
Calculate fatbands

- Description
If True, BAND will compute the fat bands (only if BandStructure%Enabled is True). The Fat Bands are the periodic equivalent of the Mulliken population analysis.

`UseSymmetry`

- Type
Bool

- Default value
Yes

- GUI name
Use symmetry

- Description
If True, only the irreducible wedge of the Wigner-Seitz cell is sampled. If False, the whole (inversion-unique) Wigner-Seitz cell is sampled. Note: The Symmetry key does not influence the symmetry of the band structure sampling.

`EnergyAboveFermi`

- Type
Float

- Default value
0.75

- Unit
Hartree

- GUI name
Energy above Fermi level

- Description
Bands with minimum energy larger then FermiEnergy + EnergyAboveFermi are not saved to file. Increasing the value of EnergyAboveFermi will result in more unoccupied bands to be saved to file for visualization.

`EnergyBelowFermi`

- Type
Float

- Default value
10.0

- Unit
Hartree

- GUI name
Energy below Fermi level

- Description
Bands with maximum energy smaller then FermiEnergy - EnergyBelowFermi are not saved to file. Increasing the value of EnergyBelowFermi will result in more occupied core bands to be saved to file for visualization. Note: EnergyBelowFermi should be a positive number!

Information on the k-path used for band structure plotting (including the fractional coordinates of high-symmetry k-points) can be found in the section `KPath`

of the output file.

## User-defined path in the Brillouin zone¶

If `BZStruct%Automatic`

is `False`

, BAND will compute the band structure for the user-defined path in the `BZPath`

block.

```
BZPath
path # Non-standard block. See details.
...
End
End
```

`BZPath`

- Type
Block

- Description
Definition of the user-defined path in the Brillouin zone for band structure plotting.

`path`

- Type
Non-standard block

- Recurring
True

- Description
Definition of the k-points in a path. The vertices of your path should be defined in fractional coordinates (wrt the reciprocal lattice vectors)

You should define the vertices of your path in fractional coordinates (wrt the reciprocal lattice vectors) in the `Path`

sub-block.
If you want to make a *jump* in your path, you need to specify a new `Path`

sub-block.

In the following example we define the path `Gamma-X-W-K|U-X`

for a FCC lattice:

```
BZPath
Path
0.000 0.000 0.000
0.500 0.000 0.500
0.500 0.250 0.750
0.375 0.375 0.750
End
Path
0.625 0.250 0.625
0.500 0.000 0.500
End
End
```

## Definition of the Fat Bands¶

The fat bands \(F_{i,n,\sigma,\vec{k}}\) are the periodic equivalent of the Mulliken population. They are defined as:

where \(C_{i,n,\sigma,\vec{k}}\) and \(S_{i,j,\vec{k}}\) are the orbital coefficients and the overlap matrix elements respectively. The indices \(i\) and \(j\) denote basis functions, \(n\) is the band index, \(\sigma\) is the spin index and \(\vec{k}\) is a reciprocal vector in the Brillouin zone.

## Band Gap¶

The band gap (if any) is printed in the output. Here is an example for the NaCl crystal:

```
----------------------------------------
Band gap information
----------------------------------------
Number of valence electrons 16
Valence Band index 8
Top of valence Band (a.u.) -0.192
Bottom of conduction Band (a.u.) -0.039
Band gap (a.u.) 0.153
Band gap (eV) 4.173
Band gap (kcal) 96.235
```

References

- 1
W. Setyawan and S. Curtarolo,

*High-throughput electronic band structure calculations: Challenges and tools*, Computational Materials Science 49 (2010) 299–312.

## Calculation of the Fermi Surface¶

If the system has no band gap it is a metal, and that means that the Fermi surface is a complex shape in the Brillouin zone. As multiple bands may be crossing the fermi energy there may be multiple surfaces. In case of a spin unrestricted calculation both spins have a fermi surfrace of their own. For 2D systems the “surface” consists of one or more lines. The result can be viewed with the GUI module amsbands.

Advanced BAND tutorial: Bands, dos and Fermi surface with BAND

```
FermiSurface
Enabled Yes/No
KIntegForSymmetricKGrid integer
NMesh integer
End
```

`FermiSurface`

- Type
Block

- Description
Calculation of the Fermi surface for metals

`Enabled`

- Type
Bool

- Default value
No

- GUI name
Calculate Fermi surface

- Description
Calculate the Fermi surface if the system has no band gap (i.e. is a metal). The result can be visualized with amsbands.

`KIntegForSymmetricKGrid`

- Type
Integer

- Default value
-1

- Description
If the (default) regular k-grid is used, a symmetric one is created to determine the Fermi surface. If this key is not specified an automatic value of kInteg is used. Odd values trigger quadratic interpolation.

`NMesh`

- Type
Integer

- Default value
7

- Description
Improves the matching of the interpolated quadratic surface. For better results it makes more sense to increaes KIntegForSymmetricKGrid.