• Aucun résultat trouvé

2.2 BKL en domaines

2.2.3 La gestion des conflits

Nous venons de voir un algorithme BKL synchrone en domaines, grâce à l’ajout d’un événement nul. Cependant, si les particules interagissent, il peut

46 CHAPITRE 2. COMMENT PARALLÉLISER UN MONTE-CARLO ? exister des conflits aux bordures des domaines.

Un conflit apparaît quand deux particules ont un mouvement qui, dans le même pas de Monte-Carlo, vont finir leur mouvement dans le même voisinage. Ces deux particules peuvent alors interagir de plusieurs façon différentes.

S’il n’y a pas d’interaction, il ne peut pas y avoir de conflit. Une autre pos- sibilité est qu’il y ait effectivement une interaction, mais qui ne modifie pas la barrière énergétique des deux mouvements. C’est le cas si les particules sont stabilisées quand elles sont à proximité l’une de l’autre. Une autre possibilité est qu’il y ait une énergie de répulsion. Dans ce cas, l’un des deux mouvements deviendrait moins probable. Enfin, il est possible que réaliser les deux mouve- ments soient impossibles. Ce cas peut se produire quand deux atomes occupent la même lacune par exemple.

Le seul cas nécessitant un traitement impératif est celui du mouvement im- possible. Dans le cas de mouvements rendus moins probables, il est possible que les mouvements se soient opérés simultanément. Le prochain pas du BKL va alors éloigner ces particules avec une probabilité très élevée, donc sans créer d’erreur notable dans la simulation.

Un des premiers traitements proposés est de créer une priorité selon les domaines. Dans ce cas, chaque domaine se voit à tour de rôle proposé une priorité plus ou moins élevée. Dans le cas d’un conflit, le mouvement issu du domaine avec la plus haute priorité est réalisé, le second est annulé.

Cette solution pose deux problèmes. Le premier est qu’elle n’est pas rigou- reuse : chaque mouvement a une chance sur deux d’être annulé en cas de conflit, ce qui ne permet pas de remplir les conditions de la balance détaillée dans le cas général.

Le second cas peut être plus problématique : dans certains cas particulier, il est possible de créer une boucle infinie qui va déplacer un défaut d’un domaine à l’autre, en fonction de l’alternance de priorité.

Ces cas sont illustrés par la figure 2.3. Les deux premiers cas comparent les algorithmes BKL et en domaines, dans le cas d’un système 1D à quatre sites. L’arbre des possibilités est présenté avec les probabilités associées. Le troisième cas est celui d’une boucle infinie. L’alternance des priorités entraîne la suppression automatique d’un des deux mouvements possibles. La lacune ne fait alors plus que des aller-retours autour de la frontière des domaines.

Le système est un système 1D, périodique, avec quatres sites et contient trois particules :

— deux particules noires, de taux de mouvement p ; — une particule grise, de taux de mouvement p’.

Le seule interaction entre les particule est qu’elles ne peuvent pas être plus d’une par site.

Dans le cas du BKL, l’ensemble des mouvements possible donne un taux de réaction de p + p0. La probabilité de mouvement de la sphère grise est de p+pp00,

celle de la sphère noire de p+pp 0.

Dans le cas des domaines, supposons que p > p0. On a alors un taux de réaction de p pour tous les domaines. La probabilité de déplacer la sphère noire est de 1, celle de déplacer la sphère grise de pp0. Si la sphère grise est déplacée par le domaine rouge, il y a conflit : les deux particules ne peuvent pas se superposer. Pour gérer le conflit, nous donnons la priorité à la sphère grise avec une probabilité x.

2.2. BKL EN DOMAINES 47

Algorithme BKL

Algorithme en domaines

(p-p')/p

p'/p

? ? ?

Conflit

x

1-x

p'/(p+p')

p/(p+p')

Domaine 1

Domaine 2

Domaines avec priorités :

Priorité

Priorité

Priorité

Figure 2.3 – Schéma d’un système 1D, avec deux types de particules : deux noires, avec des probabilités de mouvement de p, et une grise avec une probabilité de mou- vement de p’. Deux algorithme sont présentés : un BKL et un en domaines avec deux domaines. L’ensemble des mouvements possibles ainsi que les probabilités associées sont présentés. Le troisième schéma présente une boîte avec deux domaines, trois par- ticules noires et une lacune. La priorité alterne entre les deux domaines, créant une boucle infinie.

Calculons la probabilité de déplacer la sphère grise : p(grise) = p

0

p ∗ x

Or p(grise) = p+pp00 d’après le BKL. Il faut donc donner la priorité à la sphère

grise avec une probabilité de x = p+pp 0. Si le mouvement de la sphère grise

est peu probable relativement à la sphère noire, l’algorithme en domaine avec priorité va grandement sous-estimer la diffusion de la sphère grise.

Il a été montré que, pour des domaines de taille suffisante, l’erreur générée par une gestion des conflits par priorité par domaine tend vers 0[65]. Cepen-

48 CHAPITRE 2. COMMENT PARALLÉLISER UN MONTE-CARLO ? dant les problèmes de boucles, ainsi que la dispersion importante de l’erreur en fonction de la disparité des probabilités n’ont pas été traités, et la méthode proposée n’est pas rigoureuse. C’est pourquoi nous proposons un système de priorité aléatoire.

Donner la priorité de façon aléatoire permet de résoudre le problème de boucle infinie. Avec un système à trois sphères noires, la lacune va effectuer des aller-retours autour de la frontière entre les domaines. Choisir la priorité de façon aléatoire permet de résoudre ce problème. La lacune aura une chance sur deux de se déplacer à gauche à chaque pas, quelle que soit sa position. On retrouve bien les résultats du BKL.

Ce résultat peut être étendu au cas général. Soit un système avec deux domaines A et B, avec chacun un taux de réaction totale de TAet TB. Chacun

contient un atome aA et aB, avec des probabilité de se déplacer vers un site

conflictuel pA et pB. L’algorithme BKL donne les probabilités de transition

suivantes : particule aA p(mouvement de aA) =T pA A+TB particule aB p(mouvement de aB) =T pB A+TB Supposons TA> TB. On obtient : p(mouvement de aA) = pA TA ∗  1 − pB TA 

La probabilité de mouvement de l’atome A est donc celle du mouvement de A s’il n’y avait pas d’interaction, minorée par la probabilité d’un conflit avec B.

p(mouvement de aB) = pB TA ∗  1 − pA TA  p(conflit) =pApB T2 A

En cas de conflit, on donne la priorité à l’atome aB avec une probabilité x. On

obtient : p(mouvement de aB) = pB TA ∗  1 − pA TA  +pApB T2 A × x

Or p(mouvement de aB) = TAp+TBB dans un BKL, soit : x = pATBp+pA(TAATAT+TB)ATB

Cette probabilité résout le conflit avec les mêmes résultats que l’algorithme BKL. On retrouve également le résultat du cas particulier énoncé ci-dessus, avec pA= TA= p et pB= TB= p0.

Nous venons de présenter ici une méthode de résolution des conflits qui permet d’obtenir un algorithme BKL parallélisable en utilisant les domaines. Cette version est de plus rigoureuse avec une erreur nulle, quelles que soient la variabilité des probabilités de mouvement et la taille des domaines. Cepen- dant, implémenter cette méthode est coûteux en temps de développement, et nous avons choisi d’utiliser une autre méthode. La partie suivante présente cette méthode : celle de l’échantillonnage.