Jump to content

Requests for technical support from the VASP team should be posted in the VASP Forum.

Band-structure calculation using density-functional theory

From VASP Wiki

The step-by-step instructions below cover calculating the band structure within density-functional theory (DFT), including references to practical examples.

Obtaining the band structure involves first solving the Hamiltonian to get eigenvalues and eigenvectors, then plotting them as electronic energy levels versus crystal momentum. The Kohn-Sham (KS) Hamiltonian requires at least the density (charge and possibly magnetization) and may contain higher derivatives depending on the exchange-correlation (XC) functional.

Step-by-step instructions

Option A: Single run

Step 1: Prepare SCF settings

Follow the steps to create input files on the instructions for setting up an electronic minimization. Typically, this involves defining the input settings using the INCAR, POSCAR, KPOINTS, and POTCAR files.

Step 2: High-symmetry path

Choose a high-symmetry path and set it in the KPOINTS_OPT file. Both KPOINTS and KPOINTS_OPT define crystal momenta: The KPOINTS file holds the regular k mesh for the initial SCF computation, while the KPOINTS_OPT file holds the high-symmetry path usually in line mode along which the band structure will be evaluated.

Step 3: Run the calculation

Start the VASP run, which will internally perform an SCF run to obtain the converged KS orbitals and densities, and then perform the NSCF run at fixed density to evaluate the eigenvalues along the high-symmetry path. The progress is written to stdout. For more detailed suggestions on optimizing your settings and running the calculation check the article on setting up an electronic minimization.

Step 4: Plot the band structure

py4vasp provides utilities for plotting the band structure. Run the following in a Python notebook in the directory of the calculation:
import py4vasp
calc = py4vasp.Calculation.from_path(".")
ef = calc.dos.read()["fermi_energy"]
calc.band.plot("kpoints_opt", fermi_energy=ef)

Option B: Split run

In a nutshell, the KS Hamiltonian within DFT can be expressed in terms of the electronic charge and possibly the magnetization density. Both are written to the CHGCAR file during an initial self-consistent-field (SCF) run. From this converged CHGCAR file, we can obtain the eigenvalues at the desired high-symmetry path via a subsequent non-self-consistent-field (NSCF) run at fixed density.

Step 1: Set up and perform a full SCF calculation

Follow the steps described in setting up an electronic minimization.

Step 2 (optionally): Create a backup

The simplest procedure is to create a new directory for the band-structure calculation and copy the input files of the SCF calculation (usually the INCAR file, POSCAR file, and the POTCAR file) as well as the CHGCAR file to the new directory.
mkdir -f bands
cp INCAR POSCAR POTCAR CHGCAR bands/.
Alternatively, backup the OUTCAR file, KPOINTS file and possibly the OSZICAR file and vaspout.h5 to be able to reconstruct the SCF calculation, if needed.

Step 3: High-symmetry path

Choose a high-symmetry path and set it in the KPOINTS file.

Step 4: Prepare a restart with fixed density

Adjust the INCAR file:
  • Remove any of the following tags, if present: NSW, IBRION and ISTART.
  • Add ICHARG = 11. This restarts from the converged charge density read from the CHGCAR file and continues with the density held fixed.
  • Add additional relevant tags as needed, i.e., LORBIT=11.

Step 5: Run the NSCF calculation

Perform the NSCF calculation with the prepared files. This will read the CHGCAR file and keep the density fixed.

Step 6: Plot the band structure

py4vasp provides utilities for plotting the band structure. Run the following in a Python notebook in the directory of the calculation:
import py4vasp
calc = py4vasp.Calculation.from_path(".")
calc.band.plot()

Choosing a 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 the structure.

Use external tools[1][2] to find the space group, plot the Brillouin zone, and pick a high-symmetry k path. Extract the corresponding coordinates and provide them in KPOINTS-file format, either as a list of explicit coordinates or (more commonly) using line mode.

Example high-symmetry path 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   Γ
   
   0.00000  0.00000  0.00000   Γ
   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   Γ

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. The example above would yield 10 points from L to Γ, 10 points from Γ to X, 10 from X to U, and 10 from K to Γ, including endpoints. For further details and instructions, please consult the section on band-structure calculations in the KPOINTS documentation.

Recommendations and advice

In case a KPOINTS_OPT file is present (Option A), VASP computes the band energies for the k points of the KPOINTS_OPT file after SCF convergence is reached within the same submitted job. There may, however, be a computational advantage to splitting the run (Option B) because of different optimal batching options for the k mesh.

There are additional advantages to using the KPOINTS_OPT file for computing the band structure using hybrid functionals or using meta-GGA functionals. Refer to these references for details.

A number of post-processing options for the Kohn-Sham (KS) orbitals can affect the computation of the band structure. Usually, these options are set directly in the INCAR file: See, for example, LORBIT=11 or constructing Wannier orbitals.

Practical examples

We offer additional tutorials for calculating and visualizing DFT band structures:

Related tags and articles

KPOINTS, KPOINTS_OPT,

ICHARG, LMAXMIX

XC functionals, Setting up an electronic minimization

Band-structure calculation using meta-GGA functionals, Band-structure calculation using hybrid functionals

References