The implementation of the Residual Minimization Method with Direct Inversion in the Iterative Subspace (RMM-DIIS) in VASP[1][2] is based on the original work of Pulay:[3]
- The procedure starts with the evaluation of the preconditioned residual vector for a selected orbital
:

- where
is the preconditioning function, and the residual is computed as:

- with

- Then a Jacobi-like trial step is taken in the direction of the vector:

- and a new residual vector is determined:

- Next a linear combination of the initial orbital
and the trial orbital 

- is sought, such that the norm of the residual vector is minimized. Assuming linearity in the residual vector:

- this requires the minimization of:

- with respect to
.
- This step is usually called direct inversion of the iterative subspace (DIIS).
- The next trial step (
) starts from
, along the direction
. In each iteration
is increased by 1, and a new trial orbital:

- and its corresponding residual vector
are added to the iterative subspace, that is subsequently inverted to yield
.
- The algorithm keeps iterating until the norm of the residual has dropped below a certain threshold, or the maximum number of iterations per orbital has been reached (NRMM).
- Replace
by
, and move on to start work on the next orbital
.
References