The idea is to find a matrix that multiplied with the residual vector gives the
exact error in the wavefunction. Formally this matrix (the Greens function) can be written
down and is given by

where
is the exact eigenvalue for the band in interest.
Actually the evaluation of this matrix is not possible, recognizing that the
kinetic energy dominates the Hamiltonian for large
-vectors
(i.e.
), it
is a good idea to approximate the matrix by a diagonal
function which converges to
for large
vectors, and possess
a constant value for small
vectors.
We actually use the preconditioning function proposed by Teter et. al[1]

with
being the kinetic energy of the residual vector.
The preconditioned residual vector is then simply

References