Bands with Castep

The c2x logo is the π bond in ethene. Here we reproduce it using CASTEP.

ethene.cell
%block LATTICE_ABC
ang
8.000000 8.000000 7.000000
90.000000 90.000000 90.000000
%endblock LATTICE_ABC

%block POSITIONS_ABS
  C 4.698560 4.000000 3.500000
  C 3.301440 4.000000 3.500000
  H 5.270880 4.923920 3.500000
  H 2.729120 3.076080 3.500000
  H 2.729120 4.923920 3.500000
  H 5.270880 3.076080 3.500000
%endblock POSITIONS_ABS

kpoints_mp_grid 1 1 1
kpoints_mp_offset 0.25 0.25 0.25

Castep should generate its own pseudopotentials, and run that calculation in about a minute. Note that the k-point chosen will minimise interactions between the neighbouring periodic images.

Wavefunction

Ethene has a famously pretty pi bond. A little basic chemistry suggests that this will be the highest energy band, and there are clearly six bands in total, so it can be extracted with:

$ c2x -v -b=6 ethene.check ethene.pi.xsf
$ xcrysden --xsf ethene.pi.xsf &

(C2x will complain about a few thousand imaginary components. As long as this is very much less than the size of the FFT grid, it probably isn't important. Using a larger box, and tigher electronic minimisation convergence criteria, would reduce this number.)

Ethene pi bond

For the sigma bonds, it is possible to create a single xsf file containing all the sigma bands, using -b=1-5. Unfortunately, XCrysDen insists on rewriting its input file on start-up, and rewriting this file can take several seconds. It does then allow one to choose any linear combination of the bands to plot, but one cannot change one's choice without restarting XCrysDen.

A naive chemist might assume that there was one C-C sigma bond, and four degenerate C-H sigma bonds. This is not so: these bonds will interact, and the sigma-like bands found by CASTEP are as shown below (after stitching together with the Gimp):

Ethene sigma MOs

Densities from bands

If one wishes to view charge densities arising from a band, rather than psi, then specifying B rather than b should achieve this. One can also cause check2xsf to sum (accumulate) bands, rather than relying on the visualisation software to do so.

-B=2,3,5 -A
will sum the densities from bands 2,3 and 5. It is not possible to specify prefactors. If one is using norm-conserving potentials, so that the charge density is simply the sum of the contributions from the individual wavefunctions, then this can be reconstructed with

  -BAW -k=-

where the W weights the individual contributions by k-point weight and band occupancy, and -k=- ensures that all k-points are included (not necessary with this example).

Evalues and Occupancies

Finally it is possible to extract eigenvalues and occupancies with c2x:

$ c2x -O --null ethene.check 
                   kpoint              band spin  occupancy      evalue (eV)
  1: (  0.250000  0.250000  0.250000 )    1  0    1.000000       -17.892322
  1: (  0.250000  0.250000  0.250000 )    2  0    1.000000       -13.850732
  1: (  0.250000  0.250000  0.250000 )    3  0    1.000000       -10.848030
  1: (  0.250000  0.250000  0.250000 )    4  0    1.000000        -9.637790
  1: (  0.250000  0.250000  0.250000 )    5  0    1.000000        -8.183431
  1: (  0.250000  0.250000  0.250000 )    6  0    1.000000        -6.205907
  1: (  0.250000  0.250000  0.250000 )    7  0    0.000000        -1.124846
  1: (  0.250000  0.250000  0.250000 )    8  0    0.000000         0.013991
  1: (  0.250000  0.250000  0.250000 )    9  0    0.000000         0.883623
  1: (  0.250000  0.250000  0.250000 )   10  0    0.000000         1.156311
                                       Total:     6.000000