Monkhorst-Pack k-points

The term "Monkhorst-Pack k-point set" is used to describe a regular grid of k-points. It arises from two papers in Phys Rev B by HJ Monkhorst and JD Pack which describe such a technique: PRB 13 pg 5188 (1976) and PRB 16 pg 1748 (1977). An MP grid is thus specified by just three numbers, the number of points along each axis, although conventionally there is also an optional rigid shift of the whole grid to specify.

Unfortunately these papers have given rise to some confusion in the precise specification of MP grids. The two areas of concern are whether the grid includes the origin, or is positioned so that the origin lies symmetrically between grid points, and, if the grid is further shifted, whether that shift is specified as a fraction of the k-space unit cell or of a grid unit cell.

In other words, in one dimension is a MP grid of size four the points 0, 0.25, 0.5, 0.75 (or, equivalently given the periodicity of k-space, -0.25, 0, 0.25, 0.5), or is it -0.375, -0.125, 0.125, 0.375? And are these two possibilities related by a shift of 0.5 (of a grid cell) or 0.125 (of a k-space cell)?

The convention used by Abinit is that the unshifted grid always includes the origin, and any shift is in units of grid cells.

Quantum Espresso uses the convention that the unshifted grid always includes the origin, but the only permitted shift is of half a grid cell.

The convention used by Castep is that odd grids include the origin, even grids do not, and the shift is in k-space cells.

The 1976 paper by Monkhorst and Pack describes the points as being generated by


where q is the number of points in the mesh, and r varies from 1 to q to generate them. It can be seen that if q=3 this gives -1/3, 0, 1/3, and if q=4 this gives -3/8, -1/8, 1/8 and 3/8. In other words, Castep's convention, not Abinit's.

But their 1977 paper proposes a modification. It suggests that in hexagonal systems the generation formula should be simply (r-1)/q except along the c* axis where it remains as above. It leaves open the possibility of other systems also requiring different shifts, noting that the 1976 paper specifically analysed bcc systems. This modification Castep does not follow.

C2x attempts to convert correctly between these two conventions. The resultant shift is always either zero or 0.5 in Abinit's terminology, but in Castep's terminology it can be an awkward fraction such as 1/12 (from a grid size of 6). In this case c2x uses the periodicity of k-space to express the shift as 1/4, which is equivalent as 1/12+1/6=1/4, but has no truncation error when written as a decimal.