Sampling of the BZ with k-points

Author

Miguel Pruneda (ICN2) and Alberto Garcia (ICMAB-CSIC).

In this exercise we will explore the convergence with k-point sampling for a (semi)metalic system, and compare with an insulator. We have selected three carbon-structures that are particularly easy to converge in terms of basis and real-space mesh. You will work in the directories graphene, graphite, and diamond.

Hint

Enter the graphene directory

Here we will focus on a well-known 2D crystalline system: graphene

In the input file graphene.fdf a 4x4x1 grid is used:

%block kgrid_Monkhorst_Pack
4  0  0    0.5
0  4  0    0.5
0  0  1    0.0
%endblock kgrid_Monkhorst_Pack

As we will see, this is insufficient for a good description of graphene.

To plot the DOS we will use the utility program ‘Eig2DOS’. For the broadening for each state in eV (a value of the order of the default (0.2 eV) is usually reasonable, but if you want to reproduce the smooth V-shape close to graphene´s Dirac cone you will probably have to decrease that value). We can try:

Eig2DOS -f -s 0.1 -n 400 -m -12.0 -M 2.0 -k graphene.KP  graphene.EIG > dos

which will compute the DOS in the (12 eV ,2 eV) range around the Fermi level (-f option), using a grid of 400 points and a broadening of 0.1 eV.

The content of the ‘dos’ file can be plotted using gnuplot:

gnuplot
plot "dos" u 1:4 with lines

We get a set of spikes, with just some inkling that there might be a V-shaped feature near the Fermi level. Obviously the sampling is not good enough.

The file graphene.fdf will also produce a file graphene.bands containing the band structure along the several lines in the Brillouin zone (BZ) as specified using the block:

%block Bandlines
  1   0.5000000000   0.000000000   0.0000   M
 30   0.0000000000   0.000000000   0.0000   \Gamma
 45   0.3333333333   0.333333333   0.0000   K
 30   0.5000000000   0.500000000   0.0000   M
%endblock BandLines

To plot the band structure we use the utility program ‘gnubands’, taking advantage of some new features (type gnubands -h for a list of options):

gnubands -F -G -o bandstructure -E 10 -e -20 *.bands

that will shift the origin of energy to the Fermi level. With the above command we will get a window between -20 eV and 10 eV with respect to Ef. Also, a ‘bandstructure.gplot’ driver file is created automatically (which has extra information to place and label the ‘ticks’ for each symmetry point in the BZ). Now we plot:

gnuplot --persist -e "set grid" bandstructure.gplot

The position of the Dirac cone is highlighted by the gridline passing by the high-symmetry K point). It is obvious, however, by looking at the Ef gridline, that the Fermi level does not fall exactly at the Dirac cone, as it should (see Fig. 3).

Graphene band structure

Fig. 3 Graphene band structure

The position of the Fermi level in (semi)metals is very sensitive to the k-point mesh used. In this case, the 4x4x1 sampling originally set in the input file is clearly not appropriate. You can increase the Monkhorst-Pack parameters and check the convergence. Notice also that in graphene (and other hexagonal lattices) the K-point (1/3,1/3,0) is particularly relevant, and it is advisable that it is explicitly included in the discretization. In fact, in this case including the K-point makes all the difference, as can be seen by using this block:

%block kgrid_Monkhorst_Pack
 6  0  0    0.0
 0  6  0    0.0
 0  0  1    0.0
%endblock kgrid_Monkhorst_Pack

The Fermi level is now exactly at the vertex of the Dirac cone. But this is not really a consequence of having increased the density of k-points, but of including the K-point in the sampling (check the graphene.KP file, but note that the k-points are given in cartesian coordinates, not relative to the reciprocal basis vectors; can you see it?). In fact, if we use the block:

%block kgrid_Monkhorst_Pack
 3  0  0    0.0
 0  3  0    0.0
 0  0  1    0.0
%endblock kgrid_Monkhorst_Pack

leading to a much coarser sampling, we still get the Fermi level correctly aligned. The presence of the K point in the sampling set pins the Fermi level at the Dirac cone.

It is also instructive to see the behavior of the DOS when the k-point sampling gets more dense. For coarse samplings, it does not look at all like the “free-electron-like” curve we see in textbooks. This is due to the very simple method used to construct the DOS (just broadening a collection of discrete energy levels). You probably have to increase the mesh beyond 60x60x1 to have good plots for the DOS.

Note

You do not need to run again a full scf cycle to get the DOS with more k-points. You could re-use the converged density-matrix to shorten the cycle (option DM.use-save-dm). There is an alternative route that does not use the .EIG file, but the computation of the partial density of states. Just include the blocks:

%block ProjectedDensityOfStates
  EF -20.00  10.00  0.100  500  eV
%endblock ProjectedDensityOfStates

%block PDOS.kgrid_Monkhorst_Pack
 60  0  0    0.0
 0  60  0    0.0
 0   0  1    0.0
%endblock PDOS.kgrid_Monkhorst_Pack

and the program will compute the pDOS (and the DOS) in a finer grid. The DOS is in graphene.DOS, which can be plotted as:

gnuplot> plot "graphene.DOS" u 1:2 with lines

to get a figure similar to Fig. 4. (Note that the scf sampling was set to 6x6x1, as above). The pDOS information might be useful also.

Graphene DOS (60x60)

Fig. 4 Graphene DOS (60x60x1 k-sampling)

Hint

Enter the graphite directory

Graphite is the 3D version of graphene. It is a semimetal, and similar caveats than graphene apply. Now, however, the k-point sampling along the three spatial directions must be considered.

The input “graphite.fdf” includes the bandlines required to plot the bands. Notice that there is a flat band right at the Fermi level (compare with Fig. 5). Check the convergence of the Fermi level, and the DOS as a function of the k-sampling.

Graphite bands

Fig. 5 Graphite bands

Hint

Enter the diamond directory

Finally, another 3D example is diamond. It has the same fcc structure as silicon, and the high-symmetry K points are included in the input file “diamond.fdf”. Unlike graphene and graphite, diamond is non-metallic, and the k-point convergence is easier. Plot bands, and DOS and check the results.