RMM-DIIS

From VASP Wiki
Revision as of 10:28, 20 October 2023 by Vaspmaster (talk | contribs)

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 some selected orbital [math]\displaystyle{ \psi^0_m }[/math]:
[math]\displaystyle{ K \vert R^0_m \rangle = K \vert R(\psi^0_m) \rangle }[/math]
where [math]\displaystyle{ K }[/math] is the preconditioning function, and the residual is computed as:
[math]\displaystyle{ \vert R(\psi) \rangle = (H-\epsilon_{\rm app}) \vert \psi \rangle }[/math]
with
[math]\displaystyle{ \epsilon_{\rm app} = \frac{\langle \psi \vert H \vert \psi \rangle}{\langle \psi \vert S \vert \psi \rangle} }[/math]
  • Then a Jacobi-like trial step is taken in the direction of the vector:
[math]\displaystyle{ \vert \psi^1_m \rangle = \vert \psi^0_m \rangle + \lambda K \vert R^0_m \rangle }[/math]
and a new residual vector is determined:
[math]\displaystyle{ \vert R^1_m \rangle = \vert R(\psi^1_m) \rangle }[/math]
  • Next a linear combination of the initial orbital [math]\displaystyle{ \psi^0_m }[/math] and the trial orbital [math]\displaystyle{ \psi^1_m }[/math]
[math]\displaystyle{ \vert \bar{\psi}^M \rangle = \sum^M_{i=0} \alpha_i \vert \psi^i_m \rangle, \,\, M=1 }[/math]
is sought, such that the norm of the residual vector is minimized. Assuming linearity in the residual vector:
[math]\displaystyle{ \vert \bar{R}^M \rangle = \vert R(\bar{\psi}^M) \rangle = \sum^M_{i=0} \alpha_i \vert R^i_m \rangle }[/math]
this requires the minimization of:
[math]\displaystyle{ \frac{\sum_{ij} \alpha_i^* \alpha_j \langle R^i_m \vert R^j_m \rangle}{\sum_{ij}\alpha_i^* \alpha_j \langle \psi^i_m \vert S \vert \psi^j_m \rangle} }[/math]
with respect to [math]\displaystyle{ {\{\alpha_i | i=0,..,M\}} }[/math].
This step is usually called direct inversion of the iterative subspace (DIIS).
  • The next trial step ([math]\displaystyle{ M=2 }[/math]) starts from [math]\displaystyle{ \bar{\psi}^1 }[/math], along the direction [math]\displaystyle{ K \bar{R}^1 }[/math]. In each iteration [math]\displaystyle{ M }[/math] is increased by 1, and a new trial orbital:
[math]\displaystyle{ \vert \psi^M_m \rangle = \vert \bar{\psi}^{M-1} \rangle + \lambda K \vert \bar{R}^{M-1} \rangle }[/math]
and its corresponding residual vector [math]\displaystyle{ R(\psi^M_m) }[/math] are added to the iterative subspace, that is subsequently inverted to yield [math]\displaystyle{ \bar{\psi}^M }[/math].
The algorithm keeps iterating until the norm of the residual [math]\displaystyle{ R(\psi^M_m) }[/math] has dropped below a certain threshold, or the maximum number of iterations per orbital has been reached (NRMM).
  • Replace [math]\displaystyle{ \psi^0_m }[/math] by [math]\displaystyle{ \bar{\psi}^M }[/math] and move on to start work on the next orbital, e.g. [math]\displaystyle{ \psi^0_{m+1} }[/math].

References