• Aucun résultat trouvé

4.2 Méthodologie Monte Carlo cinétique et le package kmc.kernel : concep-

4.2.1 Monte Carlo Cinétique sur réseau

4.2.1.1 Organisation du code, agencement des idées

Le code STEAM est un outil de simulation utilisant une méthodologie de type Monte Carlo cinétique sur réseau. Cela signifie que le système reproduit correspond à un réseau d’une structure cristalline CFC, le réseau d’Al(111) selon un empilement ABCABC. Ici, l’utilisation de la programmation orientée objet est particulièrement bien adaptée à la représentation du système que nous simulons : chaque site est une entité individuelle et autonome qui va évoluer dans un environnement 3D qui lui est propre. Une telle représentation permet de simuler des adsorptions sur les même positions observées avec la DFT, c’est-à-dire les sites fcc et hcp, mais aussi des positions subtituées aux atomes d’aluminium du réseau.

Tout au long des simulations, le système va évoluer en faisant changer l’occupation des sites au fur et à mesure de la simulation. Les arrivées correspondent à l’ajout d’un atome dans le systeme, sur un site donné. Les migrations elles, correspondent à des « bonds » d’atomes qui vont passer d’un site à un autre. L’utilisation d’une

Figure 4.4 – Représentation Schématique de la boite de simulation où chaque parallélépipède symbolise un objetSite

telle représentation nécessite donc des configurations définies au préalable, que nous avons identifiées avec la DFT. Cependant, ce travail d’importation de données vers le simulateur a fait l’objet de beaucoup de simplifications. Il faut donc garder à l’esprit que seules quelques configurations sont prises en compte et que cela constitue une limite à notre outil de simulation kMC sur réseau. De plus, en suivant ce modèle, nous sommes incapables de prendre en compte des effets élastiques induits par la surface ou l’épaisseur du substrat.

4.2.1.2 L’implémentation La classe Site

La classeSitepermet d’instancier les objetssitequi forment la boite de simulation. Chacun de ces objets contient deux tableaux qui rassemblent tous les premiers voisins en 3D (Neighbors[3][3][3]) ainsi que les coordonnées du site (coordinates[3]). Le premier tableau est initialisé lors de la phase d’initialisation de la simulation avec la méthode initializeData(). Le second tableau est uniquement initialisé avec la méthode initializeSurface(), tout comme l’attribut id. Le nombre de sites défini dans le fichier d’entrée correspond à la taille de la boite de simulation (voir Figure 4.4), il n’évoluera pas au cours de la simulation. Un objet site ne contient que trois attributs lors de sa création. Cependant, lors de l’exécution du programme, d’autres attributs déclarés dans la classe pourront être ajoutés dans les objetssite, tels que la

configuration, les événements et le temps associé à l’événement. Un exemple de site

situé au niveau de la surface est illustré dans la Figure 4.5, où l’id et les coordonnées sont des valeurs prises aléatoirement.

4.2. Méthodologie Monte Carlo cinétique et le package kmc.kernel : conception et programmation en JAVA

Figure 4.5 – Schématisation de la classeSite, avec ses attributs.

fois que les site ont été instancié au début de la simulation, la méthode initialize Neighborhood(), que nous décrirons mieux plus loin, va associer à chaque site des sites voisins afin d’ordonner tous les site entre eux et recréer l’espace de simulation. La classe Point3D

Cet objet est utilisé pour représenter une position dans un espace 3D. Chaque site

possède un attribut point3D qui lui permet de mémoriser sa position dans l’espace. Cet attribut est initialisé lors de la création de la boite de la simulation. Chaque

configuration(nous décrivons cette classe en détail dans le paragraphe suivant) pos-sède un attribut qui est un tableau contenant des Point3D permettant de définir les positions des différents atomes de cetteconfiguration(et donc dusitecar les atomes d’Aluminium y sont placés à l’origine (0,0,0)) dans l’espace total de simulation. Cette classe est instanciée lors de la création de la boîte de simulation pendant la phase d’ini-tialisation des objets site, puis modifiée lors des changements de configuration d’un ou plusieurs sites.

La classe Configuration

Il s’agit d’une classe de typeEnumqui est un type de données dans lequel un attribut ne peut prendre qu’un nombre restreint de valeurs elles-mêmes étant des constantes nommées. Ici ces constantes sont les noms des configurations, qui sont associées à un chiffre (position dans une liste). Les configurations implémentées sont directement issues de résultats DFT et sont présentées dans le tableau 4.2.

Chaqueconfigurationpossède quatre attributs permettant de les différencier entre elles :

• color : pour la représentation sur l’interface graphique (voir Chapitre 5)

• atoms : un tableau de TypeAtom[], contenant les types d’atomes présents dans le site. La longueur du tableau renseigne sur le nombre d’atomes.

• positions: un tableau dePoint3D[]contenant la position de chacun des atomes dans le site. Point3D permet de rajouter les coordonnées globales du site à la position locale des atomes dans le site.

• acceptArrival : un booléen dont la valeur estfalse pour les sites dont la confi-guration estVoidettruepour tous les autres. Si le booléen esttrue, l’événement Arrivée pourra se produire.

4.2. Méthodologie Monte Carlo cinétique et le package kmc.kernel : conception et programmation en JAVA

Tableau 4.2 – Configurations implémentées dans le code STEAM.

Nom atomes Descrition Représentation

Void - l’espace dans la boite au-dessusSites vides, ils représentent de la surface

Void_free - Sites vides, parfois formés lorsdes extractions

Free 1Al Site de la surface d’aluminium,non occupé, capable d’accepter l’arrivée d’un O ou d’un Cu Ofcc 1Al, 1O Site avec un O placé en fcc Ofcc_extr 1Al, 1O Site contenant un O en bas d’uneextraction, sous le site contenant

le sommet de l’extraction Ohcp 1Al, 1O Site avec un O placé en hcp Ohcp_oxide_up 1Al, 1O d’une extraction, placé au dessusSite contenant un O au sommet

de Ofcc_extr Ofcc_oxide_

bottom 1O Site contenant un O en basd’une extraction O_growth 1O Site au dessus d’un site occupé,contenant un O participant à

une extraction Cu_isolated 1Al, 1Cu Site avec un Cu isolé

CuGroup 1Al, 1Cu Site avec un Cu voisin d’un autresite contenant un Cu ou d’un O participant à une extraction CuIserted 1Cu Site contenant un Cu sous lasurface d’Al Cu_trapped 1Cu Site contenant un Cu piégé

Cu_growth 1Cu Site au dessus d’un site occupé,contenant un Cu La classe TypeAtom

C’est une classe de type Enum contenant les différents types d’atomes présents dans la simulation. Pour le moment, nous avons implémenté Al, O et Cu.