next up previous contents index
Next: Simple Davidson iteration scheme Up: Algorithms used in VASP Previous: Algorithms used in VASP   Contents   Index


The idea is to find a matrix which 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

$\displaystyle \frac{1}{{\bf H} - \epsilon_n},

where $ \epsilon_n$ 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 $ G$-vectors (i.e. $ H_{G,G'} \to \delta_{G,G'} \frac{\hbar^2}{2m} G^2$), it is a good idea to approximate the matrix by a diagonal function which converges to $ \frac{2m}{\hbar^2 G^2}$ for large G vectors, and possess a constant value for small G vectors. We actually use the preconditioning function proposed by Teter et. al.[20]

$\displaystyle \vspace*{1mm}
\langle {\bf G}\vert {\bf K} \vert {\bf G}'\rangle... G}{\bf G}'} \frac{ 27 + 18 x+12 x^2 + 8x^3}
{27 + 18x + 12x^2+8x^3 +16x^4}$   und$\displaystyle \quad
x = \frac{\hbar^2}{2m}\frac{G^2} {1.5 E^{\rm kin}( {\bf R}) },

with $ E^{\rm kin}({\bf R}) $ being the kinetic energy of the residual vector. The preconditioned residual vector is then simply

$\displaystyle \vert p_n \rangle = {\bf K} \vert R_n \rangle.

N.B. Requests for support are to be addressed to: