# Fermi Surfaces with Castep

Two systems are considered, copper and magnesium boride.

Castep's definition of the Monkhorst-Pack grid means that odd-numbered grids will include the gamma point, as XCrysden requires. Otherwise one must specify a shift.

## Copper

`copper.cell`

%block LATTICE_CART -1.7669227 0.0000000 1.7669227 0.0000000 1.7669227 1.7669227 -1.7669227 1.7669227 0.0000000 %endblock LATTICE_CART %block POSITIONS_FRAC Cu 0.000000 0.000000 0.000000 %endblock POSITIONS_FRAC KPOINT_MP_GRID 9 9 9 KPOINT_MP_OFFSET 0 0 0 BS_KPOINT_MP_GRID 45 45 45 BS_KPOINT_MP_OFFSET 0 0 0 symmetry_generate

`copper.param`

task : bandstructure bs_nextra_bands : 0

This example will use a 9x9x9 grid for the electronic minimisation, which symmetry will reduce to 35 k-points. It then uses a 45x45x45 grid for calculating the band structure, which symmetry reduces to 2300 k-points.

Note that Castep assumes that more bands are wanted in a
bandstructure calculations. Extra unoccupied bands are not needed
for the visualisation of the Fermi surface. Castep's default is to
add 5√nbands bands, so this calculation which uses ten bands
for the electronic minimisation will default to 26 for the band
structure calculation unless `bs_nextra_bands`

is
set. Failure to set `bs_nextra_bands`

merely increases
the run-time and disk space required by a factor of about 2.5.

The above calculation requires about 1GB of memory, 100MB of disk space, and takes around 5 minutes on a quad core 3GHz Ivy Bridge desktop. It can be run with

$ castep copper

The results include a `.check`

file which contains the
wavefunctions from just the 35 kpoints used in the electronic
minimisation, and a `.bands`

file which contains
eigenvalues from the 2300 kpoints used in the band structure
calculation.

Either can be used as input to c2x. If run as:

$ c2x --bxsf copper.check copper.bxsf

it will use the eigenvalues from the electronic minimisation and
the symmetry operations also found in the `.check`

file
and generate a `.bxsf`

file with a 9x9x9 grid (729
points).

If run as:

$ c2x --bxsf copper.bands copper.bxsf

it will use the eigenvalues from the band structure calculation,
and will additionally read the `.cell`

file. On finding
no symmetry operations explicitly listed in the `.cell`

file it will call spglib (if compiled with spglib support) in order
to obtain the symmetry operations required to expand the k-points
back to the unreduced grid.

Finally one can run XCrysDen as:

$ xcrysden --bxsf copper.bxsf &

The bands will be listed twice, once for each spin, as Castep defaults to treating this system as spin-polarised. The bands which cross the Fermi surface are numbers 6, and 6+nbands.

## MgB_{2}

This example is inspired by the documentation for Fermisurfer.

`MgB2.cell`

%block LATTICE_CART 3.0737596 0.0000000 0.0000000 -1.5368798 2.6619539 0.0000000 0.0000000 0.0000000 3.5199867 %endblock LATTICE_CART %block POSITIONS_FRAC Mg 0.000000000 0.000000000 0.000000000 B 0.333333333 0.666666667 0.500000000 B 0.666666667 0.333333333 0.500000000 %endblock POSITIONS_FRAC KPOINT_MP_GRID 16 16 12 KPOINT_MP_OFFSET 0.031250000 0.031250000 0.125000000 symmetry_generate

This time extra k-points are not generated with a band structure
calculation, so no `.param`

file is required, and an even
grid with a shift to move it back to including the gamma point is
used.

So now (almost) identical results are produced whether one uses
the `.check`

or `.bands`

file for
analysis:

$ c2x --bxsf MgB2.check MgB2.check.bxsf $ c2x --bxsf MgB2.bands MgB2.bands.bxsf

Three bands (7,8 and 9) cross the Fermi level in this system, and Castep does not perform a spin-polarised calculation by default as there is an even number of electrons in the system.

The result is coarser than for the copper surface, but far fewer k-points are being used.

## ScB_{2}

This example has its own page.