Band-structure calculation using density-functional theory: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
[[:Category:Band structure | | Calculating the [[:Category:Band structure |band structure]] for [[GGA|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 [[:Category:Exchange-correlation functionals|XC]] functional. | |||
The unified approach presented on this page applies to [[GGA#Available functionals|LDA]] (needs density), [[GGA|GGA]] (needs density and gradient) and deorbitalized meta-GGA (needs density, gradient and LaPlacian) functionals. In contrast, [[METAGGA|meta-GGAs]] need the kinetic energy density and follow a [[Band-structure calculation using meta-GGA functionals|different approach]]. A different approach is also required when using [[Band-structure calculation using hybrid functionals|hybrid functionals]]. | |||
For DFT, the Hamiltonian can be expressed in terms of the electronic charge and magnetization density. Both are written to to the {{FILE|CHGCAR}} file during an initial, self-consistent-field (SCF) run. The {{FILE|CHGCAR}} file obtained in such a run is required to restart a DFT calculation or compute the band structure. It allows to then perform an NSCF (=fixed density) calculation to obtain the eigenvalues at the desired high-symmetry path. | |||
== Step-by-step instructions == | == Step-by-step instructions == | ||
If you want to compute a DFT ([[GGA#Available functionals|LDA]]/[[GGA|GGA]]/deorbitalized meta-GGA) band structure, please adhere to the following steps: | |||
=== 1. Perform a self-consistent field calculation === | === 1. Perform a self-consistent field calculation === | ||
If you already have a converged {{FILE|CHGCAR}} file of a self-consistent (SCF) calculation, you can skip this step. | |||
Otherwise, in order to obtain a converged {{FILE|CHGCAR}}, perform a static ({{TAG|NSW}}=0, {{TAG|IBRION}}=-1) self-consistent-field (SCF) calculation for DFT. To achieve this, you will need: | |||
* {{FILE|POSCAR}} containing structure information, | * {{FILE|POSCAR}} containing structure information, | ||
| Line 13: | Line 21: | ||
* {{FILE|INCAR}} containing any required tags ({{TAG|NSW}}=0, {{TAG|IBRION}}=-1, plus other tags as needed), | * {{FILE|INCAR}} containing any required tags ({{TAG|NSW}}=0, {{TAG|IBRION}}=-1, plus other tags as needed), | ||
* {{FILE|KPOINTS}} containing a regular '''k''' mesh, using e.g. [[KPOINTS#Regular_k-point_mesh|Γ-centered mesh or Monkhorst-Pack mesh]], | * {{FILE|KPOINTS}} containing a regular '''k''' mesh, using e.g. [[KPOINTS#Regular_k-point_mesh|Γ-centered mesh or Monkhorst-Pack mesh]], | ||
* {{FILE|POTCAR}} containing the | * {{FILE|POTCAR}} containing the required pseudopotentials. | ||
{{NB|mind|You may find mentions of the {{TAG|ICHARG}} tag related to DFT band-structure calculations. This is specific to *later steps*. For the initial SCF run to obtain the converged {{FILE|CHGCAR}} file, *do not* specify the {{TAG|ICHARG}} tag.}} | |||
=== 2. Determine the high-symmetry path === | === 2. Determine the high-symmetry path === | ||
Revision as of 09:03, 15 October 2025
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.
For DFT, the Hamiltonian can be expressed in terms of the electronic charge and magnetization density. Both are written to to the CHGCAR file during an initial, self-consistent-field (SCF) run. The CHGCAR file obtained in such a run is required to restart a DFT calculation or compute the band structure. It allows to then perform an NSCF (=fixed density) calculation to obtain the eigenvalues at the desired high-symmetry path.
Step-by-step instructions
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.
| Mind: You may find mentions of the ICHARG tag related to DFT band-structure calculations. This is specific to *later steps*. For the initial SCF run to obtain the converged CHGCAR file, *do not* specify the ICHARG tag. |
2. Determine 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. Some external tools[1][2] help to identify the high-symmetry points and k points along a high-symmetry path for materials of any symmetry.
In any event, we need to determine the high-symmetry path along which VASP should compute the band structure. Once that path is known, we proceed to set it in step 3.
3. Supply a regular k mesh and k points along the high-symmetry path
There are two options to simultaneously supply a regular k mesh and k points along a high-symmetry path to VASP.
- 1. Provide an explicit list of k points with zero-weighted k points.
- Here, the explicit list of the irreducible k points of the regular k mesh can be copied from the IBZKPT file of a previous run to the KPOINTS file. For instance, use the IBZKPT file of Step 1. These irreducible k points must be weighted by their multiplicity according to the system's symmetry. Additionally, the k points along a high-symmetry path must be added to the KPOINTS file with the value of all weights set to zero.
- 2. Provide an additional KPOINTS_OPT file that can specify the high-symmetry path in line mode.
- Generally, the KPOINTS file and the KPOINTS_OPT file accept the same format. But again, the regular k mesh needs to be supplied in the KPOINTS file and the high-symmetry path in the KPOINTS_OPT file. We therefore recommend using the Γ-centered mesh or Monkhorst-Pack mesh, and line mode, respectively.
The KPOINTS_OPT method is more convenient because it allows using the automatic generation modes for the k points. The computational cost and memory requirement can vary for the two methods due to the scaling behaviour with the number of k points.
4. Edit INCAR
Setting ICHARG = 11 in the INCAR file 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.
5. Restart the calculation
Lastly, we restart the DFT calculation from the CHGCAR file using the new setup defined in steps 2-4.
6. 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 as pv
calc = pv.Calculation.from_path(".")
calc.band.plot()
# calc.band.plot("kpoints_opt") # if the high-symmetry path is in 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. Their convergence is checked independently by requiring the sum over occupied band energies not to change in two successive iterations. Hence, for the computational time, there is no advantage to restart from a converged hybrid calculation, but in principle it is possible.
In contrast, the method using an explicit list including zero-weighted k points computes the band energies for all k points at each SCF step. The convergence criterion considers the total energy and, thus, does not account for convergence of KS orbitals at zero-weighted k points. Taking the KS orbitals of the zero-weighted k points along the entire SCF run makes their convergence highly likely. However, restarting from a converged hybrid calculation can result in premature stopping. This can be counteracted by setting the NELMIN tag to a higher value. Especially if the hybrid calculation needs many SCF steps to reach convergence and each SCF step is very expensive when including zero-weighted k points, one may consider to restart from a converged hybrid calculation with NELMIN set to a large number. We recommend carefully checking the convergence of the band structure in this case.
| Tip: For a band-structure calculation with an explicit list including zero-weighted k points, avoid restarting from a converged hybrid WAVECAR file. |
It is possible to achieve very fine sampling along the k path with both methods, but there are some aspects to take into account. As mentioned, the computational cost and memory requirement can vary for the two methods due to the scaling with the number of k points. For the KPOINTS_OPT method, the number of k points treated simultaneously can be controlled by means of the KPOINTS_OPT_NKBATCH tag. For the explicit list including zero-weighted k points, VASP may exceed the available memory if the number of zero-weighted k points is large. In that case, split the hybrid band-structure calculation into multiple calculations. For each calculation, add part of the zero-weighted k points.
| Tip: Make fine sampling computationally feasible using the KPOINTS_OPT_NKBATCH tag or splitting the calculation with part of the zero-weighted k points. |
Let us stress a significant difference between hybrid band-structure calculations and DFT band-structure calculations. The electronic charge density suffices for density functionals to define the Hamiltonian, and no regular k mesh is required during DFT band-structure calculations. However, if no regular k mesh is provided, the electronic charge density must be fixed during the DFT band-structure calculation by setting ICHARG=11 in the INCAR file.
| Warning: The electronic charge density must not be fixed for any hybrid calculation, i.e., never set ICHARG=11! |
| Tip: To understand how the two methods work in practice, try using them with a DFT calculation as if it were a hybrid calculation. |
If you forgot setting HFRCUT you may be able to mitigate the band structure. Semi-core states can be assumed to be dispersionless but you will see the same discontinuities featured on the semi core states. By subtracting the faulty dispersion of the semi-core state from all bands, you can recover the true dispersion of the conduction bands.
Practical examples
We offer additional tutorials for calculating and visualizing the DFT band-structure of bulk systems:
- fcc Si: band structure of face-centered Si, and
- cd Si: band structure of cubic-diamond Si.
Related tags and articles
KPOINTS, KPOINTS_OPT, Band-structure calculation using hybrid functionals, Band-structure calculation using meta-GGA functionals