Fermi Surfaces with Abinit

Here we consider just the Fermi surface of copper.

copper.in

ndtset 2

# Dataset 1: SCF calculation

kptopt1 1
ngkpt1 9 9 9
nshiftk1 1
shiftk1 0 0 0
prtden1 1
toldfe1 1.0d-6 eV

# Dataset 2: band energies

iscf2 -2
getden2 -1
kptopt2 1
ngkpt2 45 45 45
nshiftk2 1
shiftk2 0 0 0
tolwfr2 1.0d-18
enunit2 1

# Common parameters

acell 6.67799997571 6.67799997571 6.67799997571
rprim
     -0.500000000  0.000000000  0.500000000
      0.000000000  0.500000000  0.500000000
     -0.500000000  0.500000000  0.000000000

ntypat 1
znucl  29
ecut 550 eV
occopt 3


natom 1
typat  1
xred
  0  0  0

The use of two datasets in the same input file causes Abinit to first perform a self-consistent calculation using a 9x9x9 k-point grid, and then to perform a non self-consistent (iscf=2) calculation on a 45x45x45 k-point grid using the density calculated in the first calculation. Note that Abinit defaults to treating all systems as insulators, so occopt must be set for a calculation on a metal.

copper.files

copper.in
copper.out
none
copper
tmp
Cu.psp8

And the pseudopotential may be obtained with:

$ curl -O http://www.pseudo-dojo.org/pseudos/nc-sr-04_pbe_standard/Cu.psp8.gz
$ gunzip Cu.psp8.gz

Then Abinit can be run as usual:

$ abinit < copper.files > copper.log

Note that Abinit will produce two sets of output files. Those with DS1 in their names correspond to the "dataset 1" calculation, i.e the self-consistent calculation with a 9x9x9 k-point grid, and those with DS2 in their names correspond to the "dataset 2" calculation, i.e the non self-consistent calculation with a 45x45x45 k-point grid.

Version 2.34 of c2x cannot read the EIG files, but it can read the WFK files, so one can proceed with:

$ c2x --bxsf copper_DS2_WFK copper.bxsf
$ xcrysden --bxsf copper.bxsf &

Abinit does not treat this system as spin-polarised, but the pseudopotential includes fewer core states than in the other examples, so here the band which crosses the Fermi surface is number ten.

Cu Fermi surface

The slight roughness on the surface might be reduced with a higher cut-off energy.

The Simple Way

And to those who have read this far is revealed that all this can be done without c2x. Simply change iscf2 from -2 to -3, and add prtfsurf2 1 after it, and Abinit will generate the bxsf file directly as copper_DS2_BXSF.

There is one, small, advantage of the c2x route. Having determined that band ten is the only one which crosses the Fermi level, one could choose to run c2x as:

$ c2x --bxsf -b=10 copper_DS2_WFK copper.b10.bxsf

This does make the bxsf file a lot smaller, as it then omits the uninteresting bands.