Besides the band structure, the density of states (DOS) also provides a direct view on the electronic structure of a material. It is easy to construct it from a DFT calculation. The difference is that while in a band structure the displayed data is k-point dependent and provided along a predefined k-point path, in a DOS an integration over the whole Brillouin zone took place.
We perform our first DOS calculations for Si. The basic input files for this are present in the Si subdirectory. Change into that directory.
export MY_HOME=$PWD ; echo $MY_HOME ; cd Si ; ls
Calculations of a DOS typically have a self-consistent density as a starting point. Run fleur to get one.
fleur_MPI
The quality of a DOS depends on several parameters. One is the choice of the k-point set for which we first choose the default $8 \times 8 \times 8$ mesh. Another one is the smearing parameter $\sigma$ used to define a broadening of each state to obtain a smooth result. It is specified in output/bandDOS/@sigma
. By default sigma is 0.015. We perform three DOS calculations with different values for sigma: 0.015, 0.005, 0.0015. Besides sigma two more parameters can be specified in the output/bandDOS
XML tag: With minEnergy and maxEnergy the energy window for the DOS is specified.
But first we switch on the DOS calculation mode in the inp.xml
. For this set output/@dos
to "T"
.
Now create directories for the three DOS calculations and copy all files to them.
mkdir sigma-0-015 ; cp *.* sigma-0-015
mkdir sigma-0-005 ; cp *.* sigma-0-005
mkdir sigma-0-0015 ; cp *.* sigma-0-0015
Modify in each of the directories the sigma parameter as indicated by the directorie's name. Afterwards perform the three DOS calculations by calling fleur in each of the directories.
cd $MY_HOME/Si/sigma-0-015 ; fleur_MPI ; cd ..
cd $MY_HOME/Si/sigma-0-005 ; fleur_MPI ; cd ..
cd $MY_HOME/Si/sigma-0-0015 ; fleur_MPI ; cd ..
The calculations will generate a Local.1
file, where the "1" relates to the spin. In spin-polarized calculations also a Local.2
file will be generated (and for bandstructure calculations a bands.2
file). The Local.1
file is a readable text file with several columns. The first column defines an energy mesh. The second column is the total DOS and afterwards there are multiple columns for the projection of the DOS onto certain regions in the unit cell and onto certain orbital characters around each atom. We are interested in the energy mesh, the total DOS, and the $s$ (column 5) and $p$ (column 6) projections at the Si atoms. It may also be interesting to plot the DOS in the interstitial region (column 3).
Generate for each of the three calculations plots showing the total DOS, $s$-, and $p$-projected DOS, each. The plots should feature on the y axis the energy and on the x axis the DOS. They should look similar to what is displayed in the following figure.
As an alternative you can also use the data stored in the banddos.hdf
file to plot the DOS. Example Python scripts for extracting this data are provided in the respective section of the Fleur user guide. If you want to use these scripts you have to adapt them to your use case.
Comparing the plots with each other you can observe results strongly varying with respect to the local Gaussian averaging according to the specified sigma parameter. Obviously it is crucial to find a sigma that provides a good balance between the smoothing of the curves and the resolution of the features of the electronic structure.
the smoothness of the curves also depends on the $\vec{k}$-point set. After all the density of states is obtained on the basis of the eigenstates at each $\vec{k}$ point. The Gaussian averaging is needed because the $\vec{k}$-point mesh is not infinitely dense. For the smallest sigma (0.0015) we will therefore also test other $\vec{k}$-point sets. It should be enough if this is performed on top of the already obtained self-consistent density for the coarser $\vec{k}$-point mesh. Create the additional k-point sets with
inpgen -inp.xml -kpt grid=23,23,23
and (it may take a while to generate the latter k-point list)
inpgen -inp.xml -kpt grid=47,47,47
Create directories for the two additional k-point sets and copy all files to them.
mkdir sigma-0-0015-k-23 ; cp *.* sigma-0-0015-k-23/
mkdir sigma-0-0015-k-47 ; cp *.* sigma-0-0015-k-47/
Select in the two directories the respective k-point lists and also adjust the sigma parameter.
Afterwards generate the DOS in the two directories.
cd $MY_HOME/Si/sigma-0-0015-k-23 ; fleur_MPI ; cd ..
cd $MY_HOME/Si/sigma-0-0015-k-47 ; fleur_MPI ; cd ..
Plot the DOS for the two calculations. How do the different k-point sets affect the results? How do they affect the computational demands? Your results should be similar to what is sketched in the following figure.
For the finest $\vec{k}$-point mesh: Do you think that we still see artifacts of the sigma parameter and the finiteness of the $\vec{k}$-point mesh in the plot? If so: Where in the plot is this most visible and why is it most visible in that region of the plot?
Note: There also is another mode to calculate a DOS with less demands on the k-point set. This is the tetrahedron method that introduces an interpolation scheme for the bands in the Brillouin zone. We will not investigate this approach here, but one should be aware that it also has shortcomings: For the interpolation the approach needs to know to which state at a given k-point some state at another k-point is connected. The naive assumption here is that the i-th state is connected to the i-th state, i.e., the possibility of band crossings is neglected. The approach can thus lead to artificial gaps.
Experimentalists are capable of producing monatomic wires of certain chemical elements, either on some substrate or free standing wires obtained with break junctions or by pulling scanning tunneling microscope (STM) tips out of a sample. For each energy the conductivity along such a wire is limited by the conductance quantum $G_0 = \frac{2e^2}{h}$ times the number of bands at the respective energy. Calculating the band structure of such a system therefore provides direct information on its ballistic electron transport properties.
We perform band structure and density of states calculations for a monatomic Cu wire. For this we set up a tetragonal unit cell with lattice parameters that provide a wide vacuum in two dimensions and the nearest neighbor distance between adjacent Cu atoms in the third dimension. Use $a=12.5~a_0$ and $c=4.82247~a_0$. For the self-consistent density calculation use a $\vec{k}$-point set generated with
inpgen -inp.xml -kpt grid=1,1,201
Note: Band structure calculations and DOS calculations are two different calculations. Even though both related flags can be set to 'T' in a single calculation without complaints of the code, most of the time it is not reasonable to do this. These calculations require $\vec{k}$-point sets with different properties. While a band structure calculation needs a $\vec{k}$-point path, a DOS calculation needs a $\vec{k}$-point set that nicely samples the whole volume of the (irreducible wedge of the) Brillouin zone.
For the band-structure calculation we explicitly generate the $\vec{k}$-point path by specifying "special k points" along the path:
inpgen -inp.xml -kpt band=100 -kptsPath "gamma=0,0,0;x=0.0,0.0,0.5"
Don't forget to select the hereby generated k-point list for the band structure calculation.
For the DOS calculation we use a very fine $\vec{k}$-point mesh such that the expected van Hove singularities at the band edges can easily be identified:
inpgen -inp.xml -kpt grid=1,1,7001
The number of energy mesh points for the DOS is fixed. As a consequence it is a good idea to refine the upper and lower limits of this mesh such that the mesh is not too coarse for our needs. Find out the Fermi energy obtained for the self-consistent density (grep -i fermi out.xml) and adjust the energy window such that it only covers the interesting part of the band structure, e.g., from 0.1 Htr below the Fermi energy to 0.2 Htr above the Fermi energy. The energy window is specified by the parameters in 'output/bandDOS/@minEnergy' and 'output/bandDOS/@maxEnergy'. The sigma parameter should also be very small. Choose 0.0003.
Hint: Because of the large amount of k points this calculations takes a while. It may be advisable to employ some OpenMP parallelization to speed it up, but only if your workstation has enough CPU cores. For this execute in the terminal for example
export OMP_NUM_THREADS=4
before starting the calculation. In this Docker container this environment variable is set to 2 by default, in other setups the default typically is 1 or it is not set at all.
Plot the "total DOS" (column 2), the $s$- (column 5), and the $d$-projected (column 7) DOS. The van Hove singularities schould nicely be visible on every lower and upper band edge. Why is the $s$-projected DOS so much smaller than the $d$-projected DOS?
Results to be delivered: 1. The plot of the band structure, 2. The plot with the DOS.