Le couteau suisse pour les simulations atomiques
Ce tutoriel explique comment utiliser Atomsk pour préparer des fichiers de positions atomiques pour VASP, et comment importer des fichiers de sortie de VASP. Il est recommandé d'être déjà familier avec VASP pour suivre ce tutoriel.
▶ Pour plus d'information, référez-vous à la page de documentation correspondante.
VASP est un code pour effectuer des calculs basés sur la théorie de la fonctionnelle de la densité (en anglais, density functional theory ou DFT). Un calcul avec VASP ne requiert pas moins de quatre fichiers d'entrée :
Atomsk ne traite que ce dernier type de fichiers, c'est-à-dire le fichier POSCAR contenant les positions atomiques. Si vous souhaitez effectuer un calcul avec VASP, il vous appartient de générer les trois autres fichiers selon vos besoins.
ⓘ Atomsk ne manipule que les vecteurs de boîte et les positions des atomes. Il ne peut pas manipuler d'information volumétrique comme la densité électronique, ni les paramètres pour quelque type de calcul que ce soit, ni d'autres types d'informations.
Pour les besoins de ce tutoriel, générons une maille élémentaire d'aluminium cubique à faces centrées (cfc), et écrivons-la au format POSCAR de VASP :
atomsk --create fcc 4.046 Al POSCAR
Alternativement, vous pouvez simplement écrire "vasp" comme format de sortie, et Atomsk comprendra qu'il faut écrire un fichier POSCAR :
atomsk --create fcc 4.046 Al vasp
Dans les deux cas, Atomsk va écrire un fichier POSCAR ressemblant à cela :
# Fcc Al oriented X=[100], Y=[010], Z=[001].
1.000000
4.04600000 0.00000000 0.00000000
0.00000000 4.04600000 0.00000000
0.00000000 0.00000000 4.04600000
4
Cartesian
0.00000000 0.00000000 0.00000000
2.02300000 2.02300000 0.00000000
0.00000000 2.02300000 2.02300000
2.02300000 0.00000000 2.02300000
Ce fichier peut être utilisé tel quel en vue d'une simulation. Bien sûr, vous devrez d'abord préparer les autres fichiers (INCAR, KPOINTS, POTCAR) nécessaires au calcul.
Si vous préférez travailler en coordonnées réduites, il est possible de le demander à Atomsk, avec l'option "-fractional" :
atomsk --create fcc 4.046 Al -fractional vasp
Dans ce cas, le fichier POSCAR contiendra le mot-clé "Direct" et les positions des atomes seront en coordonnées réduites :
# Fcc Al oriented X=[100], Y=[010], Z=[001].
1.000000
4.04600000 0.00000000 0.00000000
0.00000000 4.04600000 0.00000000
0.00000000 0.00000000 4.04600000
4
Direct
0.00000000 0.00000000 0.00000000
0.50000000 0.50000000 0.00000000
0.00000000 0.50000000 0.50000000
0.50000000 0.00000000 0.50000000
VASP requiert que les atomes du même type soient contigus, et dans un ordre cohérent avec celui du fichier de pseudo-potentiels POTCAR. Cela n'est pas un problème lorsque le système ne contient qu'un seul type d'atomes, mais devient un point d'attention lorsque le système contient deux ou plusieurs types d'atomes.
Pour illustrer ce problème, créons une maille cfc de cuivre et nickel, et dupliquons-la le long de la direction Z :
atomsk --create fcc 3.6 Cu Ni -duplicate 1 1 2 xsf
Si vous ouvrez le fichier "CuNi.xsf" produit par Atomsk, vous remarquerez qu'il contient alternativement des atomes de cuivre (numéro atomique 29) et de nickel(28) :
# Fcc CuNi alloy oriented X=[100], Y=[010], Z=[001].
CRYSTAL
PRIMVEC
3.60000000 0.00000000 0.00000000
0.00000000 3.60000000 0.00000000
0.00000000 0.00000000 7.20000000
CONVVEC
3.60000000 0.00000000 0.00000000
0.00000000 3.60000000 0.00000000
0.00000000 0.00000000 7.20000000
PRIMCOORD
8 1
29 0.00000000 0.00000000 0.00000000
29 1.80000000 1.80000000 0.00000000
28 0.00000000 1.80000000 1.80000000
28 1.80000000 0.00000000 1.80000000
29 0.00000000 0.00000000 3.60000000
29 1.80000000 1.80000000 3.60000000
28 0.00000000 1.80000000 5.40000000
28 1.80000000 0.00000000 5.40000000
Cela n'est pas un problème pour la visualisation, mais ça l'est pour VASP. Si nous utilisons la commande précédente pour produire un fichier POSCAR, alors celui-ci ne sera pas adapté pour un calcul avec VASP, parce que les atomes de même espèce chimique ne sont pas contigus.
Atomsk peut compacter les atomes de sorte à respecter les pré-requis de VASP, grâce à l'option "-sort species pack". Lorsque vous produisez des fichiers pour VASP, il est recommandé de toujours utiliser cette option pour vous assurer que les atomes de même espèce soient contigus :
atomsk --create fcc 3.6 Cu Ni -duplicate 1 1 2 -sort species pack vasp
Avec cette commande les atomes seront bien contigus : d'abord tous les atomes de cuivre, et ensuite tous les atomes de nickel. En plus de cela, vous devrez vous assurer que cet ordre suit bien celui des définitions de pseudo-potentiels dans le fichier POTCAR.
Le fichier POSCAR peut contenir des colonnes supplémentaires, indiquant si les atomes sont "figés" suivant chaque direction cartésienne. Il est possible de choisir les atomes à figer avec Atomsk, en utilisant l'option "-fix". Par exemple, en reprenant le système en aluminium construit plus haut, nous pouvons figer complètement les atomes dont la coordonnée Z est inférieure à 4.05 Å :
atomsk --create fcc 4.046 Al -duplicate 1 1 2 -fix all below 4.05 Z vasp
Alternativement, si nous voulons figer les atomes uniquement suivant Y (et les laisser librement relaxer suivant X et Z), nous pouvons utiliser :
atomsk --create fcc 4.046 Al -duplicate 1 1 2 -fix Y below 4.05 Z vasp
Cette fois, Atomsk écrit les colonnes supplémentaires ("T" ou "F") après chaque atome :
# Fcc Al oriented X=[100], Y=[010], Z=[001].
1.000000
4.04600000 0.00000000 0.00000000
0.00000000 4.04600000 0.00000000
0.00000000 0.00000000 8.09200000
8
Selective dynamics
Cartesian
0.00000000 0.00000000 0.00000000 T F T
2.02300000 2.02300000 0.00000000 T F T
0.00000000 2.02300000 2.02300000 T F T
2.02300000 0.00000000 2.02300000 T F T
0.00000000 0.00000000 4.04600000 T F T
2.02300000 2.02300000 4.04600000 T F T
0.00000000 2.02300000 6.06900000 T T T
2.02300000 0.00000000 6.06900000 T T T
Il est aussi possible d'utiliser l'option "-select" pour sélectionner les atomes suivant différents critères. Par exemple, cette option permet de sélectionner les atomes avec des indices donnés, ou les atomes à l'intérieur d'une boîte ou d'une sphère, et ainsi de suite. Apr-s avoir sélectionné des atomes, l'option "-fix" ne s'appliquera qu'aux atomes sélectionnés.
Comme exemple, supposons un système initial "Al.xsf", sélectionnons les atomes à l'intérieur d'un cylindre aligé suivant Z et de rayon 20 Å, et figeons les coordonnées de ces atomes suivant Y :
atomsk Al.xsf -select in cylinder Z 0.5*box 0.5*box 20 -fix Y POSCAR
Ainsi, il est possible de sélectionner et de figer des atomes suivant des motifs plus complexes.
Au cours d'un calcul, VASP écrit les positions des atomes dans un fichier nommé CONTCAR. Ce fichier répond exactement au même format que le fichier d'entrée POSCAR. Il est relativement simple de convertir un fichier CONTCAR vers un autre format avec Atomsk, par exemple avec la commande suivante :
atomsk CONTCAR cfg
Cette commande va produire un fichier nommé "CONTCAR.cfg", au format CFG adapté pour visualisation avec Atomeye ou OVITO. Si certains atomes sont figés, alors Atomsk enregistre aussi cette information comme propriété auxiliaire, de sorte qu'elle est transmise aux autres formats (si possible) et peut être visualisée.
Un point important point est qu'un fichier CONTCAR ne contient aucune information sur les espèces chimiques (dans VASP 4.x). Cependant, si le dossier où se trouve le fichier CONTCAR contient aussi un fichier de pseudo-potentiel nommé POTCAR (ce qui devrait être le cas si le calcul a été réalisé dans ce dossier), alors Atomsk utiliser ce fichier POTCAR pour reconnaîtreles espèces chimiques.
S'il n'existe aucun fichier POTCAR dans le dossier, alors Atomsk supposera par défaut que le premier type d'atomes est de l'hydrogène (H), le second de l'hélium (He), et ainsi de suite. Il est possible de modifier les espèces chimiques, grâce à l'option "-substitute". Par exemple, si le fichier CONTCAR contient des atomes de cuivre (Cu) et de nickel (Ni), alors en l'absence de fichier POTCAR Atomsk les interprètera comme H et He. Vous pouvez utiliser l'option "-substitute" pour remplacer H par Cu, et He par Ni :
atomsk CONTCAR -substitute 1 Cu -substitute 2 Ni cfg