KPOINTS
The KPOINTS file is used to specify the Bloch vectors (k-points) that will be used to sample the Brillouin zone in your calculation. There are several different ways one may specify the k-points in the KPOINTS file: (1) as an automatically generated (shifted) regular mesh of points, (2) by means of the beginning and end-points of line segments, or (3) as an explicit list of points and weights.
N.B.: As of VASP version >= 5.2.12, you are not required to provide a KPOINTS file. In case VASP does not find a KPOINTS file, the k-point sampling is determined by the KSPACING tag in the INCAR file (or by its default value) instead.
Automatic k-mesh generation
The most convenient way to specify the k-point sampling of the first Brillouin zone is to have VASP automatically generate a (shifted) regular mesh of points. This mode of k-point generation comes in three different flavours: Rk length, Monkhorst-Pack, and generalized regular grids.
Rk length
The following KPOINTS file suffices to fully automatically generate a regular mesh of k-points, centered on the -point, with , , and subdivisions along the reciprocal lattice vectors , , and , respectively.
Automatic mesh 0 ! number of k-points = 0 -> automatic generation scheme Auto ! fully automatic 10 ! length (R_k)
- The first line is treated as a comment line.
- The '0' on the second line signifies that you request an automatically generated grid of k-points
- To select the fully automatic flavor of grid generation the first non-blank character in the third line must be A or a.
- On the fourth and last line you need to specify a length parameter () that determines , , and (the number of subdivisions along the reciprocal lattice vectors , , and ) in the following manner:
- where is the norm of the reciprocal lattice vector .
The fully automatic scheme then generates an -centered Monkhorst-Pack grid of k-points:
Useful values for the length vary between Rk=10 (large gap insulators) and 100 (d-metals). Note, the aforementioned values are just a rule of thumb: the actual length parameter will have to be chosen such that some relevant output quantity of the calculation is converged w.r.t. to this parameter.
N.B.: an almost identical flavor of automatic mesh generation is offered by the KSPACING tag.
Monkhorst-Pack
A slightly more flexible (and probably the most commonly used) flavour of the automatic grid generation mode, allows the user to supply the numbers for the subdivisions , and manually:
Automatic mesh 0 ! number of k-points = 0 -> automatic generation scheme Gamma ! generate a Gamma centered grid 4 4 4 ! subdivisions N_1, N_2 and N_3 along recipr. latt. vectors 0. 0. 0. ! optional shift of the mesh (s_1, s_2, s_3)
- In this case, the first non-blank character on the third line (again, only the first character is significant) should be a G or g, to generate Monkhorts-Pack meshes centered at the point (as above) or M or m, to select the original Monkhorst-Pack scheme.[1]
- While these choices are identical for an odd number of subdivisions, in the original Monkhorst-Pack scheme with an even number of subdivisions, i.e., , the k-point grids are shifted away from the origin ():
- The fifth line is optional, and supplies an additional shift of the k-mesh (with respect to the origin). Usually the shift is zero, since the two most important cases are covered by the flags M or m, G or g. The shift must be given in coordinates of the reciprocal lattice, i.e., expressed in the basis of the reciprocal lattice.
- The resulting grid in the G or g case is given by:
- and in the M or m case:
- with (in both cases):
- N.B.: As one can easily see above, the selection M without shift, is equivalent to G with a shift of , and vice versa.
This leaves the obvious question: how to choose , , and ?
Commonly the following rule of thumb applies: , , and are chosen such that
where are the reciprocal lattice vectors. Note that this is in the spirit of the specification of the Rk length parameter.
For many lattices, e.g. cubic, tetragonal, and simple orthorhombic, this is identical to:
where are the Bravais lattice vectors of the unit cell.
Of course, this only provides a guide w.r.t. the ratios between . The actual density of the k-points grid has to be chosen such that some relevant output quantity of the calculation is converged w.r.t. the sampling density.
N.B.: please read the subsection on symmetry considerations connected to your choice of Monkhorst-Pack grids carefully!
Generalized regular grids
Automatic generation 0 Cartesian 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00
- If the first non-blank character on the third line of the KPOINTS file is not an A, a, M, m, G or g the third flavour of automatic mesh generation is selected: the mesh of k-points is defined by the specification of its generating basis vectors.
- These generating vectors may be specified in Cartesian coordinates or in coordinates of the reciprocal lattice: if the first non-blank character is a C, c, K or k the generating vectors are assumed to be specified in Cartesian coordinates. Any other character (than a, m, g, c, or k) implies the use of coordinates w.r.t. the reciprocal lattice vectors (reciprocal mode). We advise everyone to write reciprocal, r, or R to select reciprocal coordinates, since future versions of VASP might require that the first letter agrees with r for the recipocal mode.
- On lines 4-6 one should specify the generating vectors , , and , respectively.
- In the reciprocal mode the generating vectors are specified as:
- where are the three reciprocal basis vectors, and are the values you supply.
- In the cartesian input format the generating vectors are given by:
- where is the scaling parameter you have specified on the second line of the POSCAR file.
- These generating vectors then define a grid of k-points given by:
- where VASP will automatically choose , , and such that all possible points of the generating grid in the first Brillouin zone of the reciprocal lattice will be included.
- N.B.: The generating k-lattice defined by the vectors , , and and the reciprocal lattice must be commensurate. This means it must be possible to express the reciprocal lattice vectors as sums of integer multiples of the generating lattice vectors. If this is not the case the code will exit in error.
- On the seventh line one has to specify a shift of the k-point lattice w.r.t. the origin, in coordinates (, , ) w.r.t. the generating lattice vectors , , and .
The resulting shifted mesh of k-points is given by:
From this definition and the definition of the Monkhorst-Pack grids above it may be clear that Monkhorst-Pack grids are a particular subset of generalized regular grids, for which:
(i.e., the generating lattice vectors are integer subdivisions of the reciprocal lattice vectors).
For instance, the generalized regular grid given by
Automatic generation 0 Reciprocal 0.25 0.00 0.00 0.00 0.25 0.00 0.00 0.00 0.25 0.50 0.50 0.50
is equivalent to the Monkhorst-Pack grid specified by
Automatic generation 0 Monkhorst-pack 4 4 4 0 0 0
A typical use-case for generalized regular grids: to generate a mesh of k-points based on the conventional cell of a particular Bravais lattice, to be used with for instance the primitive cell of that lattice (see the subsection on symmetry considerations).
As an example, consider the primitive cell of a body-centered orthorhombic lattice:
where the rows of represent the lattice vector of the primitive cell. The corresponding conventional cell is given by
and its reciprocal lattice by
Then the following generating lattice based on the reciprocal lattice of the conventional cell
yields a roughly uniform sampling of the Brillouin zone when , , and are chosen such that:
For instance, for a body-centered orthorhombic primitive cell with , here given in POSCAR file format:
body-centered orthorhombic primitive cell 5.0 -0.500000 0.600000 0.250000 0.500000 -0.600000 0.250000 0.500000 0.600000 -0.250000 1 direct 0.000000 0.000000 0.000000
this following KPOINTS file
Generalized regular grid 0 Cartesian 0.50000000 0.00000000 0.00000000 0.00000000 0.41666667 0.00000000 0.00000000 0.00000000 0.50000000 0.00000000 0.00000000 0.00000000
corresponds to the aforementioned generating lattice for , , and .
Furthermore, the use of generalized regular grids has been shown to be potentially superior to the use of Monkhorst-Pack grids in terms of the convergence of total energy calculations with respect to the number of k-points in the irreducible part of the Brillouin zone (i.e., the resulting number of k-points after symmetry reduction).[2][3]
For the moment, however, VASP is not able to automatically construct optimal generalized regular k-points grids with a certain target sampling density (in the spirit of the aforementioned publications).
Symmetry reduction of the mesh
For the automatically generated k-point meshes mentioned above, symmetry is used (for ISYM≥0) to reduce the number of k-points to the irreducible subset of symmetry inequivalent k-points and to set the weights in accordance with their symmetry multiplicity. This can reduce the total number of k-points significantly.
To enable an efficient symmetry reduction of the automatically generated k-point grids, the (shifted) regular grid of k-points should conserve the point group symmetry of the reciprocal lattice.
For the most common use-case of automatic grid generation, i.e., Monkhorst-Pack grids, this dictates that:
- For face-centered cubic (fcc), hexagonal, and fcc-orthorhombic crystalline lattices one should only use -centered Monkhorst-Pack grids.
- The reciprocal lattice and generating lattice (defined by the generating vectors ) should belong to the same class of Bravais lattices.
- This is almost always ensured when one chooses the grid dimensions in accordance with the common rule of thumb:
- where are the reciprocal lattice vectors.
- Sadly, this is not completely foolproof. For instance, for the primitive cells of the body-centered tetragonal and body-centered orthorhombic lattices this criterion will not yield an appropriate generating lattice (this affects the use of automatically generated grids defined by the length parameter and grids defined by means of the KSPACING-tag as well).
- For the primitive cells of body-centered tetragonal, body-centered orthorhombic, and most other Bravais lattices one might alternatively choose the grid dimensions in a accordance with:
- where are the lattice vectors of the crystalline unit cell.
- Unfortunately, this is not guaranteed to always work either: this criterion will, for instance, fail to define an appropriate generating lattice for the primitive cells of face-centered orthorhombic crystal structures.
- The problems with the primitive cells of the body-centered tetragonal, and body/face-centered orthorhombic Bravais lattices can be solved in three different ways:
- Choose . For Monkhorst-Pack grids the reciprocal lattice and the generating lattice are guaranteed to be of the same Bravais lattice type. For body-centered tetragonal and face-centered orthorhombic primitive cells this is a good solution since their reciprocal lattices are body-centered tetragonal (!) and body-centered orthorhombic, respectively, i.e.: .
- A simple but computationally expensive option for body-centered tetragonal/orthorhombic cells: change the representation of your structure from the primitive cell to the conventional tetragonal/orthorhombic cell. The latter is a supercell containing two primitive cells.
- Stick to the primitive cell representation of your structure but define your k-mesh w.r.t. the reciprocal lattice of the corresponding conventional cell, using the generalized regular grid format. An example, the construction of a generalized regular grid of k-points based on the conventional cell of the body-centered orthorhombic lattice, is given near the end of the subsection on generalized regular grids.
Strings of k-points for bandstructure calculations
To facilitate the calculation of (DFT) band structure, there is a mode that generates strings of k-points connecting specific points in the Brillouin zone:
k-points along high symmetry lines 40 ! 40 intersections Line-mode reciprocal 0 0 0 gamma 0.5 0.5 0 X 0.5 0.5 0 X 0.5 0.75 0.25 W 0.5 0.75 0.25 W 0 0 0 gamma
- The first line is treated as a comment line.
- On the second line, you specify the number of points per line-segment
- To generate strings of k-points connecting specific points of the Brillouin zone, the first non-blank character on the third line must be an L or l (for line-mode):
- The coordinates of the k-points to be connected can be supplied in Cartesian coordinates (first non-blank character on the 4th line is either C, c, K, or k) or in coordinates w.r.t. the reciprocal lattice vectors (the first non-blank character on the 4th line is any character other than the aforementioned).
- The following lines have to specify the begin and end points of the line segments that are to be connected by strings of k-points.
- In the reciprocal mode the k-points are specified as:
- where are the three reciprocal basis vectors, and are the values you supply.
- In the cartesian input format the k-points are given by:
- where is the scaling parameter you have specified on the second line of the POSCAR file.
The example above will generate 40 k-points between the first and the second supplied point, 40 k-points between the third and the fourth, and another 40 points between the final two points.
In the case above the coordinates of the k-points are supplied in coordinates (w.r.t. the reciprocal lattice).
Alternatively one may specify these points in Cartesian coordinates:
k-points along high symmetry lines 40 ! 40 intersections Line-mode Cartesian 0 0 0 gamma 0 0 1 X 0 0 1 X 0.5 0 1 W 0.5 0 1 W 0 0 1 gamma
The choice of points and their labels, in the example above, correspond to (several of) the high-symmetry points in the Brillouin zone of a face-centered cubic (fcc) lattice.
Here is another example, a KPOINTS file for hexagonal structures:
k-points along high symmetry lines for hexagonal str. 40 line rec 0.000 0.000 0.500 A 0.000 0.000 0.000 Gamma 0.000 0.000 0.000 Gamma 0.500 0.000 0.000 M 0.500 0.000 0.000 M 0.333333 0.333333 0.000 K 0.333333 0.333333 0.000 K 0.000 0.000 0.000 Gamma
N.B.: As mentioned above, this particular mode of k-points generation is primarily used for the calculation of DFT band structures.
This is a two-step procedure: first, you have to perform a fully self-consistent calculation with a regular k-point grid (e.g. a Monkhorst-Pack grid), and in the second step one does the actual band structure calculation with the line-mode KPOINTS file.
The second step is a non-selfconsistent calculation (set ICHARG=11) that needs to start from the self-consistent charge density (CHGCAR file) you have obtained in the first step. There are several examples of this in the tutorial on simple bulk systems.
Entering all k-points explicitly
In this format, one has to supply an explicit list of all k-point coordinates and their respective (relative) weight in the sampling. In case one wants to use the tetrahedron integration methods (ISMEAR=-4|-5) one furthermore has to supply the connection table for the tetrahedra. (The latter can be omitted for finite temperature-smearing methods.)
The most general format is:
Example file 4 Cartesian 0.0 0.0 0.0 1. 0.0 0.0 0.5 1. 0.0 0.5 0.5 2. 0.5 0.5 0.5 4. Tetrahedra
1 0.183333333333333 6 1 2 3 4
- The first line is treated as a comment line.
- On the second line, you must provide the number of k-points.
- On the third line, you have to specify whether the coordinates are given in Cartesian or reciprocal coordinates. Only the first character of the third line is significant, and the only characters recognized by VASP are C, c, K or k that signify the use of Cartesian coordinates. Any other character implies the use of coordinates w.r.t. the reciprocal lattice vectors. We advise everybody to write reciprocal to switch to reciprocal coordinates to make clear what you want to use.
- Next, the three coordinates and the (symmetry degeneration) weight for each k-points follow (one line for each k-point). The sum of all weights must not be one (VASP will renormalize the weights internally), only the relative ratios of the weights are significant.
- In the reciprocal mode the k-points are specified as:
- where are the three reciprocal basis vectors, and are the values you supply.
- In the cartesian input format the k-points are given by:
- where is the scaling parameter you have specified on the second line of the POSCAR file.
- Let us take the face-centered cubic lattice as an example. Its unit cell is spanned by the following basis vectors (rows of ):
- e.g. as specified for fcc-Si by the following POSCAR file:
fcc Si 3.9 0.5 0.5 0.0 0.0 0.5 0.5 0.5 0.0 0.5 Si 1 Direct 0 0 0
- The corresponding reciprocal lattice is:
- .
- The following table shows you how several of the common high-symmetry points in the first Brillouin zone of the fcc lattice are expressed in Cartesian and reciprocal coordinates, respectively:
Point Cartesian coordinates Reciprocal coordinates (units of 2pi/a) (units of b1,b2,b3) ------------------------------------------------------ G ( 0 0 0 ) ( 0 0 0 ) X ( 0 0 1 ) ( 1/2 1/2 0 ) W ( 1/2 0 1 ) ( 1/2 3/4 1/4 ) K ( 3/4 3/4 0 ) ( 3/8 3/8 3/4 ) L ( 1/2 1/2 1/2 ) ( 1/2 1/2 1/2 )
- If the tetrahedron method is not used the KPOINTS file ends after the list of coordinates and weights. When the tetrahedron method is used (ISMEAR=-4|-5), an additional connection list for the tetrahedra has to be specified: in this case, the next line after the list of k-point coordinates and weights must start with 'T' or 't' signaling that this connection list is supplied.
- On the next line after this 'control line' one must enter the number of tetrahedra and the volume weight for a single tetrahedron (all tetrahedra must have the same volume). The volume weight is simply the ratio between the tetrahedron volume and the volume of the first Brillouin zone.
- Then a list with the (symmetry degeneration) weight and the four corner points of each tetrahedron follows (four integers which represent the indices to the points in the k-point list given above, where '1' corresponds to the first entry in the list, etc etc.).
- N.B.: In contrast to the weighting factors for each k-point you must provide the correct 'volume weight' and (symmetry degeneration) weight for each tetrahedron, no internal renormalization will be done by VASP!
There are several use-cases for this particular mode of k-point generation:
- If one wants to use (a small) number of k-points that do not form a regular mesh.
- For the calculation of band structure using hybrid DFT/HF functionals (see for instance the tutorial example on the HSE band structure of Si).
- To use the explicit lists of k-points that represent the irreducible part of the optimal genereralized regular grids generated for a particular target sampling density.[2][3]
- The corresponding KPOINTS files can be generated by means of the tools of the Mueller Research Group at Johns Hopkins University,[2] or by means of the the autoGR utility developed by Gus Hart et al. at the Brigham Young University.[3]
N.B.: The manual construction of KPOINTS files using the explicit list format is not very convenient, especially if one needs to provide the connection table for the tetrahedron method as well. In this context, it comes in use that the list of irreducible k-points, generated by one of the automatic k-point generation flavors above, is written to the IBZKPT file in the explicit list format. This IBZKPT file can be copied to KPOINTS (possibly amended) and read in by VASP.