To calculate the fermi surface of Copper, we need to use the C2X code ( to install the code C2X code click here) and the XCRYSDEN code. To install the XCRYSDEN code we proceed as follows:

$ sudo apt install xcrysden


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

SPECTRAL_KPOINT_MP_GRID 45 45 45
SPECTRAL_KPOINT_MP_OFFSET 0 0 0

symmetry_generate

 

copper.param

task : spectral
spectral_task : bandstructure
spectral_nextra_bands : 0
spectral_restart : F

 

and for Castep version 24.1 onwards one may also add

spectral_restart : F

to save some .spec files being written.

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, 10MB of disk space, and takes around 5 minutes on a quad core 3GHz Ivy Bridge desktop. It can be run with

 

Execution

For serial calculation

$ castep.serial copper

For parallel calculation

$ mpirun -np 4 castep.mpi 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 45x45x45 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.

Cu Fermi surface 

 

Reference: https://www.c2x.org.uk/fermi/castep.html