The file KPOINTS must contain the k-point coordinates and weights or the mesh size for creating the k-point grid. In VASP.5.2.12 and higher the KPOINTS file may be missing, and the k-point spacing can be supplied in the INCAR file instead.
Entering all k-points explicitly
In this format an explicit listing of all coordinates and of the connection tables for the tetrahedra --- if one wants to use the tetrahedron integration methods --- is supplied (the latter part 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. In the second line you must provide the number of k-points and in 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. The only key characters recognized by VASP are 'C', 'c', 'K' or 'k' for switching to cartesian coordinates. Any other character will switch to reciprocal coordinates. 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 them internally, only the relative ratios of all weights have to be correct.
In the reciprocal mode the k-points are given by where are the three reciprocal basis vectors, and are the supplied values. In the cartesian input format the k-points are given by
The following example illustrates how to specify the k-points.
The unit cell of the fcc lattice is spanned by the following
and the reciprocal lattice is defined as
The following input is required in order to specify the high symmetry k-points
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 may end after the list of coordinates. The tetrahedron method requires an additional connection list for the tetrahedra: In this case, the next line 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 (total) 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, 1 corresponds to the first entry in the list).
Warning: In contrast tTwo different formats exist: o 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!
This method is normally used if one has only a small number of k-points or if one wants to select some specific k-points which do not form a regular mesh (e.g. for calculating the bandstructure along some special lines within the Brillouin zone. Tetrahedron connection tables will rarely be given 'by hand'. Nevertheless this method for providing all k-point coordinates and weights (and possibly the connection lists) is also important if the mesh contains a very large number of k-points: VASP (or an external tool called 'k-points') can calculate regular k-meshes automatically generating an output file IBZKPT which has a valid KPOINTS-format. For very large meshes it takes a lot of CPU-time to generate the mesh. Therefore, if you want to use the same k-mesh very frequently, do the automatic generation only once and copy the file IBZKPT to the file KPOINTS. In subsequent runs, VASP can avoid a new generation by reading the explicit list given in this file.
Strings of k-points for bandstructure calculations
To generate strings of k-points connecting specific points of the Brillouin zone, the third line of the KPOINTS file must start with an L for line-mode:
k-points along high symmetry lines 40 ! 40 intersections Line-mode cart 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
VASP will generate 10 k-points, between the first and the second supplied point, 10 k-points between the third and the fourth, and another 10 points between the final two points. The coordinates of the k-points can be supplied in cartesian (4th line starts with c or k) or in reciprocal coordinates (4th line starts with r):
k-points along high symmetry lines 40 ! 40 intersectons Line-mode rec 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
This particular mode is useful for the calculation of band-structures. When band structures are calculated, it is required to perform a fully selfconsistent calculation with a full k-point grid first, and to perform a non-selfconsistent calculation next (with using e.g. ICHARG=11).
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
Automatic k-mesh generation
There is also a method which generates k-meshes automatically, requires only the input of subdivisions of the Brillouin zone in each direction and the origin ('shift') for the k-mesh. There are three possible input formats. The simplest one is only supported by VASP.4.5 and newer versions:
Automatic mesh 0 ! number of k-points = 0 ->automatic generation scheme Auto ! fully automatic 10 ! length (l)
As before, the first line is treated as a comment. On the second line a number smaller or equal 0 must be specified. In the previous section, this value supplied the number of k-points, a zero in this line activates the automatic generation scheme. The fully automatic scheme, selected by the first character in the third line (a), generates centered Monkhorst-Pack grids, where the numbers of subdivisions along each reciprocal lattice vector are given by
are the reciprocal lattice vectors, and is their norm. VASP generates an equally spaced k-point grid with the coordinates:
Symmetry is used to map equivalent k-points to each other, which can reduce the total number of k-points significantly. Useful values for the length vary between 10 (large gap insulators) and 100 (d-metals).
A slightly enhanced version, allows 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. l. vectors 0. 0. 0. ! optional shift of the mesh (s_1, s_2, s_3)
In this case, the third line (again, only the first character is significant) might start with G or g, for generating meshes with their origin at the point (as above) or M or m, which selects the original Monkhorst-Pack scheme. In the latter case k-point grids, with even subdivisions are shifted off :
The fifth line is optional, and supplies an additional shift of the k-mesh (compared to the origin used in the Gamma centered or Monkhorst-Pack case). 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 multiples of the length of the reciprocal lattice vectors and the generated grids are then (G case):
and (M case):
The selection M without shift, is obviously equivalent to G with a shift of 0.5 0.5 0.5, and vice versa.
If the third line does not start with M, m, G or g an alternative input mode is selected. This mode is mainly for experts, and should not be used for casual VASP users. Here one can provide directly the generating basis vectors for the k-point mesh (in cartesian or reciprocal coordinates). The input file has the following format:
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
The entry in the third line switches between cartesian and reciprocal coordinates (as in the explicit input format described first, where key characters C, c, K or k switch to cartesian coordinates). On the fifth, sixth and seventh line the generating basis vectors must be given and the eighth line supplies the shift (if one likes to shift the k-mesh off , default is to take the origin at , the shift is given in multiples of the generating basis vectors, only (0,0,0) and (1/2,1/2,1/2) and arbitrary combinations are usually useful). This method can always be replaced by an appropriate Monkhorst-Pack setting. For instance for a fcc lattice the setting
cart 0.25 0 0 0 0.25 0 0 0 0.25 0.5 0.5 0.5
is equivalent to
Monkhorst-pack 4 4 4 0 0 0
This input scheme is especially interesting to build meshes, which are based on the conventional cell (for instance sc for fcc and bcc), or the primitive cell if a large super cell is used. In the example above the k-point mesh is based on the sc-cell. (for the second input file the tetrahedron method can not be used because the shift breaks the symmetry (see below), whereas the first input file can be used together with the tetrahedron method).
Mind: The division scheme (or the generating basis of the k-mesh) must lead to a k-mesh which belongs to the same class of Bravais lattice as the reciprocal unit cell (Brillouin zone). Any symmetry-breaking set-up of the mesh cannot be handled by VASP. Hence such set-ups are not allowed,if one uses meshes which do not have their origin at (for certain lower symmetric types of Bravais lattices or certain non-symmetry conserving shifts). If you break this rule an error message will be displayed. Furthermore the symmetrization of the k-mesh can lead to meshes which can not be divided into tetrahedrons (at least not by the tetrahedron division scheme implemented in VASP). Therefore only very special shifts are allowed. If a shift is selected which can not be handled you get an error message. For reasons of safety it might be a good choice to use only meshes with their origin at (switch G or g on third line or odd divisions) if the tetrahedron method is used.
We strongly recommend to use only Gamma centered grids for hexagonal lattices. Many tests we have performed indicate that the energy converges significantly faster with centered grids than with standard Monkhorst Pack grids. Grids generated with the M setting in the third line, in fact do not have full hexagonal symmerty.