Preconditioning: Difference between revisions
No edit summary |
mNo edit summary |
||
| (6 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
The idea is to find a matrix | 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 | exact error in the wavefunction. Formally this matrix (the Greens function) can be written | ||
down and is given by | down and is given by | ||
<math> | ::<math> | ||
\frac{1}{{\bf H} - \epsilon_n}, | \frac{1}{{\bf H} - \epsilon_n}, | ||
</math> | </math> | ||
where | where <math> \epsilon_n</math> is the exact eigenvalue for the band in interest. | ||
Actually the evaluation of this matrix is not possible, recognizing that the | Actually the evaluation of this matrix is not possible, recognizing that the | ||
kinetic energy dominates the Hamiltonian for large <math>G</math>-vectors | kinetic energy dominates the Hamiltonian for large <math>\mathbf{G}</math>-vectors | ||
(i.e. <math>H_{G,G'} \to \delta_{G,G'} \frac{\hbar^2}{2m} G^2</math>), it | (i.e. <math>H_{\mathbf{G},\mathbf{G'}} \to \delta_{\mathbf{G},\mathbf{G'}} \frac{\hbar^2}{2m} \mathbf{G}^2</math>), it | ||
is a good idea to approximate the matrix by a diagonal | is a good idea to approximate the matrix by a diagonal | ||
function which converges to <math>\frac{2m}{\hbar^2 G^2}</math> for large <math>G</math> vectors, and possess | function which converges to <math>\frac{2m}{\hbar^2 \mathbf{G}^2}</math> for large <math>\mathbf{G}</math> vectors, and possess | ||
a constant value for small <math>G</math> vectors. | a constant value for small <math>\mathbf{G}</math> vectors. | ||
We actually use the preconditioning function proposed by Teter et. al{{cite|teter:prb:1989}} | We actually use the preconditioning function proposed by Teter et. al{{cite|teter:prb:1989}} | ||
<math> | ::<math> | ||
\langle \ | \langle \mathbf{G} | {\bf K} | \mathbf{G'}\rangle = \delta_{\mathbf{G} \mathbf{G'}} \frac{ 27 + 18 x+12 x^2 + 8x^3} | ||
{27 + 18x + 12x^2+8x^3 +16x^4} \quad \mbox{ | {27 + 18x + 12x^2+8x^3 +16x^4} \quad \mbox{and} \quad | ||
x = \ | x = \frac{\hbar^2}{2m} \frac{G^2} {1.5 E^{\rm kin}( \mathbf{R}) }, | ||
</math> | </math> | ||
with <math>E^{\rm kin}(\ | with <math>E^{\rm kin}(\mathbf{R})</math> being the kinetic energy of the residual vector. | ||
The preconditioned residual vector is then simply | The preconditioned residual vector is then simply | ||
<math> | ::<math> | ||
| p_n \rangle = {\bf K} | R_n \rangle. | | p_n \rangle = {\bf K} | R_n \rangle. | ||
</math> | </math> | ||
| Line 32: | Line 32: | ||
<references/> | <references/> | ||
---- | ---- | ||
[[Category:Electronic | [[Category:Electronic minimization]][[Category:Theory]] | ||
Latest revision as of 14:31, 14 October 2025
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
- [math]\displaystyle{ \frac{1}{{\bf H} - \epsilon_n}, }[/math]
where [math]\displaystyle{ \epsilon_n }[/math] 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 [math]\displaystyle{ \mathbf{G} }[/math]-vectors (i.e. [math]\displaystyle{ H_{\mathbf{G},\mathbf{G'}} \to \delta_{\mathbf{G},\mathbf{G'}} \frac{\hbar^2}{2m} \mathbf{G}^2 }[/math]), it is a good idea to approximate the matrix by a diagonal function which converges to [math]\displaystyle{ \frac{2m}{\hbar^2 \mathbf{G}^2} }[/math] for large [math]\displaystyle{ \mathbf{G} }[/math] vectors, and possess a constant value for small [math]\displaystyle{ \mathbf{G} }[/math] vectors. We actually use the preconditioning function proposed by Teter et. al[1]
- [math]\displaystyle{ \langle \mathbf{G} | {\bf K} | \mathbf{G'}\rangle = \delta_{\mathbf{G} \mathbf{G'}} \frac{ 27 + 18 x+12 x^2 + 8x^3} {27 + 18x + 12x^2+8x^3 +16x^4} \quad \mbox{and} \quad x = \frac{\hbar^2}{2m} \frac{G^2} {1.5 E^{\rm kin}( \mathbf{R}) }, }[/math]
with [math]\displaystyle{ E^{\rm kin}(\mathbf{R}) }[/math] being the kinetic energy of the residual vector. The preconditioned residual vector is then simply
- [math]\displaystyle{ | p_n \rangle = {\bf K} | R_n \rangle. }[/math]