156
6 Simulation numérique des modèles
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
F (
D n )C n+1 = SC n+1 E n+1
C
T
n+1 SC n+1 = I Np
D n+1 = C n+1 C
T
n+1
D n+1 = arg inf
E
HF (
D),
D =
n+1
i=0
c i D i , 0 ≤ c i ≤ 1,
n+1
i=0
c i = 1
.
(6.23)
Cet algorithme s’inspire de l’algorithme DIIS dont il a été fait mention cidessus à ceci près que dans DIIS les coefficients
c
opt
i
sont obtenus en minimisant le résidu
n+1
i=0
c i [F (D i ), D i ]
2
sous la contrainte
n+1
i=0
c i = 1 (dans l’algorithme DIIS, l’extrapolation - i.e. les
combinaisons linéaires non convexes des D i - est théoriquement autorisée mais
on constate en pratique que DIIS n’est efficace que lorsque les combinaisons
linéaires sont convexes).
Les tests numériques montrent que l’algorithme EDIIS converge plus vite
que ODA mais souvent moins vite que DIIS. En revanche, il arrive fréquemment que DIIS converge vers une mauvaise solution (un minimum local non
global, voire un point selle) ou ne converge pas, alors que EDIIS converge
inconditionnellement vers un minimum local. Notons que l’analyse numérique
de l’algorithme DIIS (défaut de convergence dans certains cas, rapidité dans
d’autres cas) reste à faire.
Quand on résout numériquement un problème de Hartree-Fock, l’étape limitante réside comme on l’a dit précédemment dans l’assemblage de la matrice
de Fock à chaque itération. On peut choisir, ou bien de calculer une fois pour
toutes les intégrales biélectroniques (6.12) et de les stocker (sur disque pour les
systèmes moléculaires de grande taille), ou bien de ne pas les stocker et de les
recalculer chaque fois qu’on en a besoin (on parle dans ce cas de méthode
directe). Dès que la taille du système est assez importante (typiquement
quelques dizaines ou quelques centaines d’atomes selon les machines), on choisit en général la deuxième solution qui s’avère plus économique en termes de
temps de calcul : il est en effet plus rapide de calculer une intégrale biélectronique pour des gaussiennes-polynômes que d’effectuer une lecture sur disque.
La diagonalisation de la matrice de Fock s’effectue en général par une méthode
QR [79] mais des méthodes de Krylov sont implémentées dans certains codes.
La complexité algorithmique d’un calcul Hartree-Fock est donc théoriquement
en N I × N
4
b (N b désignant le nombre d’OA prises en compte dans le calcul,
et N I le nombre d’itérations SCF, de l’ordre de la dizaine pour les calculs
courants). Notons cependant que pour les systèmes de grande taille, la complexité algorithmique de l’assemblage de la matrice de Fock n’est pas en N
4
b
mais plutôt en N
2
b asymptotiquement : du fait du caractère localisé des OA
6 Simulation numérique des modèles
⎧
⎪ ⎪ ⎪ ⎪ ⎪ ⎨
⎪ ⎪ ⎪ ⎪ ⎪ ⎩
F (
D n )C n+1 = SC n+1 E n+1
C
T
n+1 SC n+1 = I Np
D n+1 = C n+1 C
T
n+1
D n+1 = arg inf
E
HF (
D),
D =
n+1
i=0
c i D i , 0 ≤ c i ≤ 1,
n+1
i=0
c i = 1
.
(6.23)
Cet algorithme s’inspire de l’algorithme DIIS dont il a été fait mention cidessus à ceci près que dans DIIS les coefficients
c
opt
i
sont obtenus en minimisant le résidu
n+1
i=0
c i [F (D i ), D i ]
2
sous la contrainte
n+1
i=0
c i = 1 (dans l’algorithme DIIS, l’extrapolation - i.e. les
combinaisons linéaires non convexes des D i - est théoriquement autorisée mais
on constate en pratique que DIIS n’est efficace que lorsque les combinaisons
linéaires sont convexes).
Les tests numériques montrent que l’algorithme EDIIS converge plus vite
que ODA mais souvent moins vite que DIIS. En revanche, il arrive fréquemment que DIIS converge vers une mauvaise solution (un minimum local non
global, voire un point selle) ou ne converge pas, alors que EDIIS converge
inconditionnellement vers un minimum local. Notons que l’analyse numérique
de l’algorithme DIIS (défaut de convergence dans certains cas, rapidité dans
d’autres cas) reste à faire.
Quand on résout numériquement un problème de Hartree-Fock, l’étape limitante réside comme on l’a dit précédemment dans l’assemblage de la matrice
de Fock à chaque itération. On peut choisir, ou bien de calculer une fois pour
toutes les intégrales biélectroniques (6.12) et de les stocker (sur disque pour les
systèmes moléculaires de grande taille), ou bien de ne pas les stocker et de les
recalculer chaque fois qu’on en a besoin (on parle dans ce cas de méthode
directe). Dès que la taille du système est assez importante (typiquement
quelques dizaines ou quelques centaines d’atomes selon les machines), on choisit en général la deuxième solution qui s’avère plus économique en termes de
temps de calcul : il est en effet plus rapide de calculer une intégrale biélectronique pour des gaussiennes-polynômes que d’effectuer une lecture sur disque.
La diagonalisation de la matrice de Fock s’effectue en général par une méthode
QR [79] mais des méthodes de Krylov sont implémentées dans certains codes.
La complexité algorithmique d’un calcul Hartree-Fock est donc théoriquement
en N I × N
4
b (N b désignant le nombre d’OA prises en compte dans le calcul,
et N I le nombre d’itérations SCF, de l’ordre de la dizaine pour les calculs
courants). Notons cependant que pour les systèmes de grande taille, la complexité algorithmique de l’assemblage de la matrice de Fock n’est pas en N
4
b
mais plutôt en N
2
b asymptotiquement : du fait du caractère localisé des OA
