Dear Xing,
you were correct that ADDED_MOS was required by the CP2K development
version used for the output attached to your message.
This behavior has since changed. Starting with commit
https://github.com/cp2k/cp2k/commit/983a8784de08474e9a2886adc0c8e52bba168087which is included in CP2K 2026.2, an explicit positive MO_INDEX_RANGE
automatically makes the requested orbitals available. Using -1 as the
last index requests all orbitals available in the AO basis.
I reran your attached input unchanged with a current CP2K 2026.2
development build. With
MO_INDEX_RANGE 0 -1
and without ADDED_MOS, CP2K reported 4 occupied and 18 total molecular
orbitals at each of the 8 k-points.
If you need to use the older executable from your original calculation,
you can instead add
ADDED_MOS -1
to request all available orbitals, or specify a positive number if only
that many additional virtual orbitals are required.
Regarding your question about ALGORITHM STANDARD: for this k-point
calculation, it does not diagonalize the Hamiltonian only in the
occupied-MO subspace. CP2K constructs the Kohn-Sham matrix H(k) and
overlap matrix S(k) in the atomic-orbital basis and solves
H(k) C(k) = S(k) C(k) epsilon(k)
separately for every k-point and spin channel.
ADDED_MOS controls how many of the lowest eigenpairs are requested and
stored in addition to those needed for the occupied states. Depending on
the selected eigensolver backend, it may calculate only this requested
part of the spectrum, or calculate the full spectrum and retain the
requested part. At zero electronic temperature, the unoccupied orbitals
do not contribute to the density matrix.
DIAG_SUB_SCF is a separate optional inner SCF loop. It keeps the molecular
orbitals fixed while refining occupations and is not available with
k-points. For Gamma-point calculations, STANDARD can also switch to a
block-Jacobi pseudo-diagonalization sweep close to convergence.
The documentation clarification is available here:
https://github.com/cp2k/cp2k/pull/5712Best regards,
Thomas