Band-structure calculation using density-functional theory
Calculating the band structure for density-functional theory (DFT) requires multiple steps. On this page, you will find step-by-step instructions, as well as references to some practical examples to explore.
Obtaining the band structure requires solving the Hamiltonian to get eigenvalues and eigenvectors, which can then be plotted to obtain the band structure. In DFT, you need at least the density (charge and magnetization) and possibly higher derivatives depending on the XC functional.
The unified approach presented on this page applies to LDA (needs density), GGA (needs density and gradient) and deorbitalized meta-GGA (needs density, gradient and Laplacian) functionals. In contrast, meta-GGAs need the kinetic energy density and follow a different approach. A different approach is also required when using hybrid functionals.
Step-by-step instructions
For DFT, the Hamiltonian can be expressed in terms of the electronic charge and magnetization density. Both are written to the CHGCAR file during an initial self-consistent-field (SCF) run. A converged CHGCAR file is a prerequisite for computing the band structure. With it, we can obtain the eigenvalues at the desired high-symmetry path from a subsequent NSCF (= fixed density) run.
If you want to compute a DFT (LDA/GGA/deorbitalized meta-GGA) band structure, please adhere to the following steps:
1. Perform a self-consistent field calculation
If you already have a converged CHGCAR file of a self-consistent (SCF) calculation, you can skip this step.
Otherwise, in order to obtain a converged CHGCAR, perform a static (NSW=0, IBRION=-1) self-consistent-field (SCF) calculation for DFT. To achieve this, you will need:
- POSCAR containing structure information,
- KPOINTS containing a regular k mesh, using e.g. Γ-centered mesh or Monkhorst-Pack mesh,
- POTCAR containing the required pseudopotentials.
Once everything has been set up, start VASP and wait for the calculation to converge.
| Warning: For the initial SCF run to obtain the converged CHGCAR file, do not specify the ICHARG tag. You may find mentions of the ICHARG tag related to DFT band-structure calculations: This is specific to later steps. |
| Mind: As of VASP 6.3.0, you may write k points of high-symmetry paths to a KPOINTS_OPT file. This allows you to combine steps 1 & 3 into one single VASP run. If all you want to do is compute the band structure, this might be preferable, although the SCF run (step 1) is typically the expensive task and splitting them up is generally recommended.
However, if you still want to do it all in one go:
|
2. Set the high-symmetry path
Band-structure calculations generally compute the Kohn-Sham orbitals and eigenenergies along a path in reciprocal space which usually connects high-symmetry points in the first Brillouin zone. Which k points are high-symmetry points depends on the space group of your structure.
Some external tools[1][2] can be employed to find the space group and plot the Brillouin zone to pick a k path. Extract the coordinates corresponding to the desired k path to your KPOINTS file (they replace the previous regular k mesh from step 1). You may wish to preserve the SCF run from step 1 in a separate folder, then copy INCAR, POSCAR, POTCAR, CHGCAR and KPOINTS to a new folder before making edits to KPOINTS.
The tools provide the coordinates and the labels for a given structure. Because these paths depend on the symmetry, take special care that the analysis is not tainted by finite precision or rounding. Also, keep in mind that the primitive and the conventional unit cell have different reciprocal coordinate systems.
An example for what such a KPOINTS file might look like (example for face-centered-cubic silicon):
k points for band structure 10 ! intersections line Fractional 0.50000 0.50000 0.50000 L 0.00000 0.00000 0.00000 G 0.00000 0.00000 0.00000 G 0.00000 0.50000 0.50000 X 0.00000 0.50000 0.50000 X 0.25000 0.62500 0.62500 U 0.37500 0.7500 0.37500 K 0.00000 0.00000 0.00000 G
The empty lines and labels are optional and meant for readability. The labels will be used by py4vasp. VASP produces equidistant k points for each segment. In the example above, we would get 10 points from L to G, 10 points from G to X, 10 from X to U, and 10 from K to G, including endpoints. For further instructions on how to set up this file and what else to consider, please consult the KPOINTS documentation.
3. Calculate the band structure
Please follow the next steps exactly:
- You may wish to copy your INCAR, POSCAR, POTCAR, KPOINTS and CHGCAR from step 1 to a new folder before proceeding, as suggested in step 2. If you decide to do so, navigate to the new folder.
- Make sure the KPOINTS file now holds the high-symmetry path determined in step 2.
- We also need to add the ICHARG=11 tag to the INCAR file. Setting ICHARG=11 allows the DFT calculation to pick up from the CHGCAR at the same densities. Notice that the computed Fermi energy for this case will no longer be correct once a k path has been declared and the k mesh is no longer regular.
- Then, start another VASP run. This will restart the DFT calculation from the CHGCAR file. This run is non-self-consistent (NSCF), and the densities will remain fixed.
4. Visualization using py4vasp (optional)
Plot the band structure, e.g., using py4vasp. In a python notebook in the directory of the calculation, you can run the following code:
import py4vasp
calc = p4vasp.Calculation.from_path(".")
calc.band.plot()
# calc.band.plot("kpoints_opt") # if the high-symmetry path is in KPOINTS_OPT
Mind: If you are using KPOINTS_OPT for the high-symmetry path as outlined in the side note in step 2 for VASP>6.3.0, you need to pass "kpoints_opt" as an argument to calc.band.plot: calc.band.plot("kpoints_opt")
|
Recommendations and advice
In case a KPOINTS_OPT file is present, VASP computes the band energies for the k points of the KPOINTS_OPT file after SCF is reached within the same submitted job. Therefore, there is no computational advantage to splitting the run into two steps (one for SCF, and one for computing the band structure at fixed density). However, reaching convergence for the SCF run and obtaining the converged CHGCAR file is typically more expensive, and storing these results might be beneficial for subsequent calculations.
Importantly, the main advantage of the KPOINTS_OPT file in this context concerns its use for computing the band structure using hybrid functionals or using meta-GGA functionals.
Practical examples
We offer additional tutorials for calculating and visualizing DFT band structures:
- Bulk systems, Part 1: band structure of face-centered-cubic silicon.
- Bulk systems, Part 2: band structure of cubic-diamond silicon.
- Bulk systems, Part 3: band structure of face-centered-cubic nickel.
Related tags and articles
KPOINTS, KPOINTS_OPT, KPOINTS_WAN, ICHARG, LDA, GGA