Blocked-Davidson algorithm

From VASP Wiki

The workflow of the blocked-Davidson iterative matrix diagonalization scheme implemented in VASP is as follows:[1][2]

  • Take a subset (block) of orbitals out of the total set of NBANDS orbitals:
.
  • Extend the subspace spanned by by adding the preconditioned residual vectors of :
  • Rayleigh-Ritz optimization ("subspace rotation") within the -dimensional space spanned by , to determine the lowest eigenvectors:
  • Extend the subspace with the residuals of :
  • Rayleigh-Ritz optimization ("subspace rotation") within the -dimensional space spanned by :
  • If need be the subspace may be extended by repetition of this cycle of adding residual vectors and Rayleigh-Ritz optimization of the resulting subspace:
Per default VASP will not iterate deeper than , though it may break off even sooner when certain criteria that measure the convergence of the orbitals have been met.
  • When the iteration is finished, store the optimized block of orbitals back into the set:
.
  • Move on to the next block .
  • When LDIAG=.TRUE. (default), a Rayleigh-Ritz optimization in the complete subspace is performed after all orbitals have been optimized.


The blocksize used in the blocked-Davidson algorithm can be set by means of the NSIM tag. In principle NSIM, but for technical reasons it needs to be dividable by an integer N:

where is the "number of band groups per k-point group":

(see the section on parallelization basics).

As mentioned before, the optimization of a block of orbitals is stopped when either the maximum iteration depth (NRMM), or a certain convergence threshold has been reached. The latter may be fine-tuned by means of the EBREAK, DEPER, and WEIMIN tags. Note: we do not recommend you to do so! Rather rely on the defaults instead.

The blocked-Davidson algorithm is approximately a factor of 1.5-2 slower than the RMM-DIIS, but more robust.

References