K-Points

Periodic Quickstep calculations approximate Brillouin-zone integrals with a finite, weighted set of k-points. The sampling set used for the self-consistent-field (SCF) calculation is defined in &DFT%KPOINTS.

This page introduces k-point sampling in CP2K, explains the available sampling schemes, and summarizes the experimental atomic-symmetry reduction path. A band-structure path is a different object from the SCF integration mesh; it is defined through &DFT%PRINT%BAND_STRUCTURE, not through an arbitrary SCHEME GENERAL list.

Why k-points are needed

Brillouin-zone integration

For a periodic system, Bloch’s theorem labels the one-electron states by a crystal momentum \(\mathbf{k}\) in the Brillouin zone. Quantities such as the electronic density, total energy, and occupations contain integrals over this zone. In a numerical calculation, CP2K replaces such an integral by a weighted sum over a finite set of k-points,

\[ \frac{1}{\Omega_\mathrm{BZ}}\int_\mathrm{BZ} f(\mathbf{k})\,d\mathbf{k} \approx \sum_{\mathbf{k}} w_{\mathbf{k}} f(\mathbf{k}), \]

where \(w_{\mathbf{k}}\) are normalized k-point weights.

A Gamma-only calculation samples only \(\mathbf{k}=0\). It is often appropriate for isolated systems, large supercells, or other cases where the Brillouin zone is sufficiently small. Smaller primitive cells, metals, and systems with strongly dispersive bands usually need a converged k-point mesh.

K-points in CP2K

For every sampled k-point, CP2K solves a k-dependent Kohn–Sham problem and combines the resulting quantities with the k-point weights. The &KPOINTS section therefore describes the sampling used during the SCF calculation, rather than a post-processing path through selected high-symmetry points.

Omitting &KPOINTS gives the usual Gamma-only calculation (SCHEME NONE). SCHEME GAMMA instead creates an explicit one-point k-point set at Gamma. The physical sampling is the same in most cases, but the two inputs use different implementation paths.

Complex wavefunctions are the default for k-point calculations; see WAVEFUNCTIONS. Real wavefunctions are only valid for Gamma and special k-points whose Bloch phases can be represented as real. Use complex wavefunctions for a general mesh or for atomic k-point symmetry reduction.

Feature compatibility

Compatibility with k-point sampling depends on the selected CP2K feature and implementation path. The following table summarizes selected common cases for DFT%KPOINTS; it is not exhaustive. Refer to the documentation of the relevant feature for detailed requirements and limitations or see issue #4854 which tracks the current status of k-points support.

Feature

Compatibility and limitations

Standard diagonalization

Supported.

Orbital transformation (OT)

Unsupported. No k-point path available.

Atomic symmetry reduction

Experimental. Validate against an equivalent unreduced calculation.

WFN extrapolation

Supported.

Other diagonalization methods

Unsupported. No k-point path available.

Hybrid functionals

Supported via RI-HFXk.

DFT+U

Limited. Mulliken populations only.

SCCS

Not validated. Use with caution.

Constrained DFT (CDFT)

Unsupported. No k-point path available.

TDDFPT

Limited. Independent-particle response only (KERNEL NONE).

XAS and RIXS

Unsupported. No k-point path available.

Linear response / DFPT

Unsupported. No k-point path available.

GW

Support with separate workflow. Does not rely on DFT%KPOINTS.

Periodic electric field

Unsupported. Requires OT first.

Active-space calculations

Unsupported. Only SCHEME NONE and SCHEME GAMMA available.

The reason why a specialized feature does not have support for k-point sampling is twofold: it is possible that code implementation in CP2K is not present, complete, or verified yet, but it is also possible that the underlying theories and algorithms do not have an updated k-point version (compared with an isolated, non-periodic formalism) to begin with. In the latter case it is not a far stretch to think that a novel k-point generalization to existing methods is worthy of academic publications and takes serious collaboration and devoted efforts to investigate. It is therefore strongly suggested that reference implementation of k-point formalism in other softwares be provided whenever making a feature request of this kind.

Note that a successful calculation does not by itself establish that a feature–k-point combination is reliable for a particular system or property. For a new workflow, converge the k-point mesh and, where appropriate, compare with an equivalent real-space supercell calculation.

Choosing and converging a mesh

Although rules of thumb can provide a useful starting point, reliable results require converging the k-point mesh for the specific system and property of interest. Total energies, forces, stresses, metallic occupations, density of states, and band edges can converge at different rates. Increase the mesh density until the relevant quantity no longer changes at the accuracy required for the calculation.

For slabs, wires, and other low-dimensional systems, sample the periodic directions and normally use one k-point in a non-periodic or vacuum direction. Enlarging a real-space supercell reduces the Brillouin zone and can reduce the required k-point density, but does not by itself remove finite-size effects.

Important

Electronic smearing and DOS broadening do not replace k-point convergence. In particular, a smooth DOS obtained from a sparse mesh may still be physically unconverged. See Broadening, k-points, and gaps.

For a conventional band structure, first converge the SCF calculation on an appropriate integration mesh. Then use &BAND_STRUCTURE and &KPOINT_SET to define the path.

Sampling schemes

SCHEME selects one of the schemes described below. Regular meshes are evaluated as full meshes by default: atomic symmetry reduction is only requested when SYMMETRY is explicitly enabled.

Gamma-only sampling

For the conventional Gamma-only calculation, omit &KPOINTS entirely:

&DFT
  ...
&END DFT

An explicit Gamma-point set can be requested when a k-point calculation path is required by the workflow:

&DFT
  &KPOINTS
    SCHEME GAMMA
  &END KPOINTS
&END DFT

Monkhorst–Pack meshes

A Monkhorst–Pack mesh is the usual regular sampling scheme for periodic calculations:

&DFT
  &KPOINTS
    SCHEME MONKHORST-PACK 6 6 6
  &END KPOINTS
&END DFT

The three integers specify the mesh dimensions along the reciprocal lattice vectors. Use GAMMA_CENTERED to generate a Gamma-centered variant:

&KPOINTS
  SCHEME MONKHORST-PACK 6 6 6
  GAMMA_CENTERED T
&END KPOINTS

Gamma centering is supported for Monkhorst–Pack meshes. It is most useful when an even number of subdivisions is used and the mesh is required to include Gamma point.

MacDonald meshes

A MacDonald mesh specifies both the mesh dimensions and an explicit shift:

&KPOINTS
  SCHEME MACDONALD 4 4 4 0.25 0.25 0.25
&END KPOINTS

The first three values define the mesh dimensions; the final three define the shift.

Explicit k-point sets

SCHEME GENERAL accepts an explicitly supplied weighted set of k-points:

&KPOINTS
  SCHEME GENERAL
  KPOINT 0.0 0.0 0.0 1.0
  KPOINT 0.5 0.0 0.0 1.0
&END KPOINTS

Each KPOINT line contains three coordinates and one weight. CP2K normalizes the supplied weights internally.

By default, UNITS is B_VECTOR, so the coordinates are expressed in reciprocal-lattice-vector coordinates. Cartesian coordinates can instead be selected with CART_BOHR or CART_ANGSTROM; their units are \(2\pi/\mathrm{Bohr}\) and \(2\pi/\mathrm{\AA}\), respectively.

Note

SCHEME GENERAL defines an integration set for the SCF calculation. It is not the usual interface for a high-symmetry band path. Use &DFT%PRINT%BAND_STRUCTURE for that purpose.

Parallelization over k-points

PARALLEL_GROUP_SIZE controls how MPI processes are grouped for a k-point calculation. Its value is the number of MPI processes assigned to one k-point group. The group size must divide the total number of MPI processes, and the resulting number of groups must divide the number of k-points.

The default -1 selects the smallest valid number of processes per group. 0 uses all processes for each k-point, while a positive value requests that exact group size. This setting is a parallelization choice and does not change the physical k-point mesh.

K-point symmetry reduction

For regular Monkhorst–Pack and MacDonald meshes, CP2K distinguishes two levels of k-point reduction:

  1. k-space inversion (time-reversal) reduction, which pairs \(\mathbf{k}\) and \(-\mathbf{k}\) and is used by default for regular meshes; and

  2. atomic (space-group) symmetry reduction, which uses additional operations that map the current periodic structure onto itself.

The SYMMETRY keyword controls the second level. It is off by default; this does not disable the default time-reversal reduction for regular meshes.

Time-reversal reduction

For a regular Monkhorst–Pack or MacDonald mesh, CP2K normally combines inversion-related \(\mathbf{k}\) and \(-\mathbf{k}\) points. This is the standard reduction path when both SYMMETRY F (the default) and FULL_GRID F (the default) are used:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
&END KPOINTS

The reduction can also be requested explicitly with INVERSION_SYMMETRY_ONLY. This is useful when SYMMETRY T is present in a shared input template, but only time-reversal reduction is desired:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
  SYMMETRY T
  INVERSION_SYMMETRY_ONLY T
&END KPOINTS

SCHEME GENERAL preserves the supplied list by default. When inversion-only reduction is requested for an explicit list, each \(\mathbf{k}\)/\(-\mathbf{k}\) pair must be present with equal weights.

To calculate every point of a regular mesh explicitly, disable atomic symmetry and request the full mesh:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
  SYMMETRY F
  FULL_GRID T
&END KPOINTS

Note

For Monkhorst–Pack and MacDonald meshes, FULL_GRID T together with SYMMETRY T disables atomic symmetry reduction but retains k-space inversion (time-reversal) reduction. Use both SYMMETRY F and FULL_GRID T to obtain a strict full-mesh reference calculation.

Atomic (space-group) symmetry reduction

Warning

Atomic k-point symmetry reduction is experimental. Validate the energy, forces, stress, and any other target property against an equivalent full-mesh calculation before using it for production.

Atomic symmetry reduction further groups regular-grid k-points that are related by operations of the current atomic structure. Enable it with SYMMETRY T:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
  SYMMETRY T
  WAVEFUNCTIONS COMPLEX
&END KPOINTS

This combines the default time-reversal reduction with the additional atomic symmetry operations. Complex wavefunctions are required for general atomic symmetry operations with nontrivial Bloch phases.

Compatible sampling sets

Atomic symmetry reduction applies to regular Monkhorst–Pack and MacDonald meshes. It can also be used with SCHEME GENERAL, provided that all explicit weights are equal and that the complete set is closed under every requested symmetry operation. A nonuniform GENERAL list, including a band path, should keep SYMMETRY F.

Cell requirements

For regular Monkhorst–Pack and MacDonald meshes, full atomic reduction currently requires a cell matrix in the standard CP2K lower-triangular convention. If a full atomic reduction is requested for a non-orthogonal cell or for a cell matrix outside that convention, CP2K warns and falls back to INVERSION_SYMMETRY_ONLY.

Defining the cell through ABC and ALPHA_BETA_GAMMA, or reading a suitable CIF structure, lets CP2K construct the standard cell orientation from orientation-independent lattice parameters.

Symmetry backends

K290 is the established default backend. The optional SPGLIB backend uses symmetry operations returned by spglib, including fractional translations:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
  SYMMETRY T
  SYMMETRY_BACKEND SPGLIB
  WAVEFUNCTIONS COMPLEX
&END KPOINTS

This option requires CP2K to be built with spglib. If SYMMETRY_BACKEND is specified and SYMMETRY_REDUCTION_METHOD is omitted, the reduction method follows the selected backend.

SYMMETRY_REDUCTION_METHOD SPGLIB together with SYMMETRY_BACKEND K290 is a comparison mode: SPGLIB proposes the k-point orbits, while K290 operations are used for the actual transformations. It is primarily useful for validation and development rather than as a default production setup.

Moving geometries

For GEO_OPT, CELL_OPT, molecular dynamics, and related calculations, CP2K determines atomic k-point symmetry from the current cell and coordinates rather than assuming that the initial operations remain valid. The irreducible k-point set can consequently change as the geometry evolves. A SCHEME GENERAL list must remain symmetry-closed at every step or it is rejected.

When a geometry or cell optimization is intended to preserve the full space group, use the relevant KEEP_SPACE_GROUP setting. For CELL_OPT, see also the discussion of KEEP_SYMMETRY in Constraints, cell degrees of freedom, and symmetry.

Validation and troubleshooting

For every new system or workflow, compare an atomic-symmetry-reduced calculation with the strict full-mesh reference:

&KPOINTS
  SCHEME MONKHORST-PACK 8 8 8
  SYMMETRY F
  FULL_GRID T
  WAVEFUNCTIONS COMPLEX
&END KPOINTS

&DFT%PRINT%KPOINTS prints k-point information and is useful for checking the generated set. For further diagnostics, use VERBOSE and, where necessary, adjust EPS_SYMMETRY. The DEBUG_FULL_KPOINT_SYMMETRY option is intended for expert finite-difference debugging.