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.
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.
Back to visualising Fermi surfaces.