Le couteau suisse pour les simulations atomiques
Ce tutoriel explique la logique interne de Atomsk, et la signification des "options" et "modes".
Atomsk est un programme qui manipule des données concernant un système d'atomes. Ceci étant dit, il ne manipule pas n'importe quel type de données, et il a sa propre logique interne.
Avant tout, explicitons clairement les données que Atomsk ne traite pas : les liaisons, les molécules, les potentiels inter-atomiques, ou tout type de paramètre lié à un type de simulation en particulier.
ⓘ Lorsque vous convertissez des fichiers avec Atomsk, ne soyez pas étonné si certains paramètres sont perdus. Cela veut simplement dire que Atomsk ne peut pas manipuler ce type d'information.
Les données que Atomsk peut réellement traiter, pour un système de N atomes :
Les tableaux suivants résument les données manipulées par Atomsk :
id | Positions atomiques | |||
---|---|---|---|---|
1 | x1 | y1 | z1 | Z1 |
2 | x2 | y2 | z2 | Z2 |
3 | x3 | y3 | z3 | Z3 |
⁞ | ⁞ | ⁞ | ⁞ | ⁞ |
N | xN | yN | zN | ZN |
id | Positions des coquilles | |||
---|---|---|---|---|
1 | x1 | y1 | z1 | Z1 |
2 | x2 | y2 | z2 | Z2 |
3 | x3 | y3 | z3 | Z3 |
⁞ | ⁞ | ⁞ | ⁞ | ⁞ |
N | xN | yN | zN | ZN |
id | Propriétés | ||
---|---|---|---|
1 | a1 | b1 | c1 |
2 | a2 | b2 | c2 |
3 | a3 | b3 | c3 |
⁞ | ⁞ | ⁞ | ⁞ |
N | aN | bN | cN |
Le tableau P contient les positions (x,y,z) de chaque atome ; la quatrième colonne contient le numéro atomique Z. Ce tableau est toujours alloué, avec une taille qui correspond au nombre d'atomes.
Le tableau S contenant les positions des coquilles n'est utilisé que dans le cadre d'un modèle ionique cœur-coquille (voir ce tutoriel). Si un atome a une coquille, alors le numéro atomique Z dans S est égal au numéro atomique Z dans P ; sinon (c'est-à-dire si un atome n'a pas de coquille, ou si c'est un ion rigide), alors la valeur de Z dans S est zéro. Si aucun modèle cœur-coquille n'est utilisé (ou si aucun atome n'a de coquille), alors le tableau S reste non-alloué, afin de ne pas utiliser de mémoire.
Enfin, le tableau AUX est utilisé seulement si des propriétés sont définies avec une valeur pour chaque atome, comme les charges électriques, forces, vitesses, et ainsi de suite. Le tableau AUX est alloué avec une taille qui correspond au nombre de propriétés. Par exemple, si trois propriétés nommées A, B, C sont définies, alors elles prennent les valeurs a1, b1, c1 pour le premier atome, a2, b2, c2 pour le deuxième atome, et ainsi de suite. Sinon, si aucune propriété n'est définie, alors AUX reste non-alloué, et n'utilise pas de mémoire.
Lorsqu'il lit un fichier, Atomsk charge les données du fichier dans les tableaux définis ci-dessus. Tout autre type de données (comme les définitions de liaisons, molécules, potentiels interatomique, etc.) sont ignorées, elles ne sont pas chargées par Atomsk et sont simplement perdues.
Lorsqu'il écrit un fichier, Atomsk écrit les données des tableaux ci-dessus dans le fichier, en respectant le format de ce type de fichier. Notez que tous les types de données ne peuvent pas forcément être écrits dans tous les formats de fichiers. Pour en savoir plus, lisez notre tutoriel sur les propriétés auxiliaires.
Atomsk a été d'abord conçu comme un outil pour convertir des fichiers de positions atomiques. Si vous voulez pratiquer les commandes ci-dessous, vous pouvez télécharger le fichier d'exemple Al_unitcell.xsf. C'est un fichier texte contenant les positions des atomes d'une maille élémentaire d'aluminium, dans le format XSF :
# Fcc Al oriented X=[100], Y=[010], Z=[001].
CRYSTAL
PRIMVEC
4.02000000 0.00000000 0.00000000
0.00000000 4.02000000 0.00000000
0.00000000 0.00000000 4.02000000
CONVVEC
4.02000000 0.00000000 0.00000000
0.00000000 4.02000000 0.00000000
0.00000000 0.00000000 4.02000000
PRIMCOORD
4 1
13 0.00000000 0.00000000 0.00000000
13 2.01000000 2.01000000 0.00000000
13 0.00000000 2.01000000 2.01000000
13 2.01000000 0.00000000 2.01000000
Ce type de fichier peut être visualisé avec XCrySDen ou avec VESTA, comme expliqué dans le tutoriel suivant.
Convertir un fichier se fait facilement avec Atoms, en donnant simplement le nom du fichier d'entrée et le nom du fichier de sortie comme arguments en ligne de commande. Par exemple :
atomsk Al_unitcell.xsf Al_final.cfg
La commande ci-dessus va lire le fichier "Al_unitcell.xsf", et créera un fichier appelé "Al_final.cfg" au format CFG, qui peut être visualisé avec AtomEye ou OVITO.
Si vous souhaitez garder le même nom de fichier et changer uniquement le format, alors vous pouvez simplement spécifier le format de sortie au lieu du nom complet du fichier de sortie. Par exemple, la commande suivante produira un fichier au format CFG qui s'appelle "Al_unitcell.cfg" :
atomsk Al_unitcell.xsf cfg
Il est aussi possible de donner plusieurs formats de sortie, et Atomsk va générer tous les fichiers correspondants avec les formats appropriés. Par exemple, cette commande :
atomsk Al_unitcell.xsf cfg lammps vasp
générera le fichier "Al_unitcell.cfg" pour visualisation avec Atomeye, le fichier "Al_unitcell.lmp" pour une simulation avec LAMMPS, et le fichier "POSCAR" pour une simulation avec VASP.
Les "options" dans Atomsk sont des transformations qui peuvent être appliquées au système atomique. Les options permettent de transformer les positions des atomes (P), des coquilles (S), les propriétés auxiliaires (AUX), et/ou les vecteurs de boîte. Par exemple, des options sont disponibles pour dupliquer un système atomique, pour introduire des défauts, et ainsi de suite. Plusieurs options peuvent être appelées dans la même ligne de commande. Chaque option commence avec un tiret (-), et doit être suivie de ses paramètres.
Par exemple, l'option "-duplicate", suivi par le nombre de répliques suivant X, Y et Z, peut être utilisée pour multiplier le système initial :
atomsk Al_unitcell.xsf -duplicate 2 2 3 Al_supercell.cfg
La séquence est la suivante : Atomsk va lire le fichier "Al_unitcell.xsf", puis il va dupliquer le système deux fois suivant X, deux fois suivant Y, et trois fois suivant Z, et enfin il va écrire le système dupliqué dans le fichier "Al_supercell.cfg". Encore une fois, ce système peut être visualisé avec Atomeye ou OVITO.
Si vous voulez appliquer plusieurs transformations à votre système, alors vous pouvez appeler les options correspondantes. Par exemple, si vous voulez dupliquer le système, puis le déformer de 2% suivant X, alors écrivez d'abord l'option "-duplicate" puis l'option "-deform", comme suit :
atomsk Al_unitcell.xsf -duplicate 2 2 3 -deform X 2 0.33 Al_supercell.cfg
Atomsk appliquera chaque option, l'une après l'autre, dans l'ordre donné dans la ligne de commande. Ici, le système sera d'abord dupliqué, et ensuite il sera déformé. Notez que l'ordre des options a une importance, toutes les options ne sont pas interchangeables. Vous pouvez utiliser autant d'options que vous le souhaitez dans la même ligne de commande. Le système final, après que toutes les options auront été appliquées, sera écrit dans le fichier de sortie demandé (ici, "Al_supercell.cfg").
Par défaut, Atomsk lit un seul fichier d'entrée, et peut écrire un ou plusieurs fichiers de sortie. Un "mode" modifie ce comportement par défaut.
Les "modes" de Atomsk permettent d'exécuter des opérations spécifiques, des constructions, de l'analyse, ou de manipuler plusieurs fichiers d'entrée. Par exemple, le mode "--create" ne prend aucun fichier d'entrée, il permet de créer un système atomique en partant de zéro le mode "--polycrystal" peut former des bicristaux ou des polycristaux, et ainsi de suite. Des exemples sont donnés dans les tutoriels suivants. Un mode doit être donné avec un double tiret (--), et doit être suivi de ses paramètres. Un seul mode peut être exécuté à la fois.
Par exemple, vous pourriez avoir envie de convertir plusieurs fichiers d'un coup. Le mode par défaut ne le permet pas, car il n'accepte qu'un seul fichier d'entrée. Pour convertir plusieurs fichiers, il faut utiliser le mode "--list", comme expliqué dans ce tutoriel.
Autre exemple, vous pourriez vouloir charger plusieurs fichiers pour les unir en un seul système. Cela n'est pas possible non plus avec le mode par défaut, vous devez alors utiliser le mode "--merge". Ce mode accepte plusieurs fichiers d'entrée, et les unit ou les empile les uns sur les autres.
Encore un autre exemple : le mode "--create" permet de générer un nouveau système atomique à partir de zéro, donc il n'a pas besoin de fichier d'entrée. Vous en apprendrez plus sur ce mode, et la visualisation des systèmes atomiques avec différents logiciels, dans le tutoriel suivant.
Dans des tutoriels plus avancés vous apprendrez à utiliser d'autres modes, comme le mode "--polycrystal".