Band-structure calculation using density-functional theory: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
[[:Category:Band structure |DFT band-structure calculations]] require multiple steps. On this page, you will find step-by-step instructions, some common pitfalls and pointers on avoiding them, and references to some practical examples to explore. | |||
== Step-by-step instructions == | == Step-by-step instructions == | ||
A regular '''k''' mesh must first be supplied in the {{FILE|KPOINTS}} file. For [[GGA|density-functional theory]] (DFT) band-structure calculations, the electronic charge density written to the {{FILE|CHGCAR}} file suffices to restart a DFT calculation. In total, the following 4 files are required initially: | |||
:;- {{FILE|POSCAR}} | |||
::containing structure information, | |||
:;- {{FILE|INCAR}} | |||
::containing any required tags, | |||
:;- {{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 desired potentials. | |||
'''Step 1 (optional):''' Obtain a converged {{FILE|CHGCAR}} file from a self-consistent DFT calculation. | |||
[[:Category:Band structure |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{{cite|bilbao:kvec}}{{cite|seekpath}} help to identify the high-symmetry points and '''k''' points along a high-symmetry path for materials of any symmetry. | |||
'''Step 2:''' Determine the high-symmetry path along which VASP should compute the band structure. | |||
There are two options to simultaneously supply a regular '''k''' mesh ''and'' '''k''' points along a high-symmetry path to VASP. | |||
:;1. Provide an [[KPOINTS#Explicit_k-point_mesh|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 {{FILE|IBZKPT}} file of a previous run to the {{FILE|KPOINTS}} file. For instance, use the {{FILE|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 {{FILE|KPOINTS}} file with the value of all weights set to zero. | |||
:;2. Provide an additional {{FILE|KPOINTS_OPT}} file that can specify the [[KPOINTS#Band-structure_calculations|high-symmetry path in line mode]]. | |||
::Generally, the {{FILE|KPOINTS}} file and the {{FILE|KPOINTS_OPT}} file accept the same format. But again, the regular '''k''' mesh needs to be supplied in the {{FILE|KPOINTS}} file and the high-symmetry path in the {{FILE|KPOINTS_OPT}} file. We therefore recommend using the [[KPOINTS#Regular_k-point_mesh|Γ-centered mesh or Monkhorst-Pack mesh]], and [[KPOINTS#Band-structure_calculations|line mode]], respectively. | |||
The {{FILE|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. | |||
'''Step 3:''' Supply a regular '''k''' mesh and '''k''' points along a high-symmetry path either using the explicit list including zero-weighted '''k''' points or using a {{FILE|KPOINTS_OPT}} file. | |||
Setting {{TAG|ICHARG}} = 11 allows the DFT calculation to pick up from the {{FILE|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. | |||
'''Step 4:''' Set {{TAG|ICHARG}} = 11 in the {{FILE|INCAR}} file and restart the DFT calculation from the {{FILE|CHGCAR}} file. | |||
'''Step 5:''' Plot the band structure, e.g., using {{py4vasp|url=calculation/band/#py4vasp.calculation._band.Band.to_graph}}. In a python notebook in the directory of the calculation, you can execute | |||
<syntaxhighlight lang="python"> | |||
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 | |||
</syntaxhighlight> | |||
== Recommendations and advice == | == Recommendations and advice == | ||
| Line 9: | Line 51: | ||
== Practical examples == | == Practical examples == | ||
The bulk-systems tutorials [[fcc Si bandstructure]] and [[cd Si]] feature calculating and visualizing DFT band-structure for face-centered and cubic-diamond Si, respectively. | The bulk-systems tutorials [[fcc Si bandstructure |here]] and [[cd Si |here]] feature calculating and visualizing DFT band-structure for face-centered and cubic-diamond Si, respectively. | ||
==Related tags and articles== | ==Related tags and articles== | ||
Revision as of 13:21, 19 May 2025
DFT band-structure calculations require multiple steps. On this page, you will find step-by-step instructions, some common pitfalls and pointers on avoiding them, and references to some practical examples to explore.
Step-by-step instructions
A regular k mesh must first be supplied in the KPOINTS file. For density-functional theory (DFT) band-structure calculations, the electronic charge density written to the CHGCAR file suffices to restart a DFT calculation. In total, the following 4 files are required initially:
- - POSCAR
- containing structure information,
- - INCAR
- containing any required tags,
- - KPOINTS
- containing a regular k mesh, using e.g. Γ-centered mesh or Monkhorst-Pack mesh.
- - POTCAR
- containing the desired potentials.
Step 1 (optional): Obtain a converged CHGCAR file from a self-consistent DFT calculation.
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.
Step 2: Determine the high-symmetry path along which VASP should compute the band structure.
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.
Step 3: Supply a regular k mesh and k points along a high-symmetry path either using the explicit list including zero-weighted k points or using a KPOINTS_OPT 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.
Step 4: Set ICHARG = 11 in the INCAR file and restart the DFT calculation from the CHGCAR file.
Step 5: Plot the band structure, e.g., using py4vasp. In a python notebook in the directory of the calculation, you can execute
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
Practical examples
The bulk-systems tutorials here and here feature calculating and visualizing DFT band-structure for face-centered and cubic-diamond Si, respectively.