Atomsk

Le couteau suisse pour les simulations atomiques

Tutoriel : Atomsk et VASP

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 :

  1. un fichier nommé INCAR qui contient les paramètres de la simulation (type de calcul, rayons de coupure, etc.) ;
  2. un fichier nommé KPOINTS où est définie la grille de points k ;
  3. un fichier nommé POTCAR contenant l'information sur les pseudo-potentiels ;
  4. enfin, un fichier nommé POSCAR contenant les vecteurs de la boîte de simulation et les positions des atomes.

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.

1. Produire un fichier POSCAR

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 :

POSCAR

# 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.

2. Utiliser des coordonnées réduites

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 :

POSCAR

# 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

3. Compacter les atomes du même type

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) :

CuNi.xsf

# 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.

4. Figer certains atomes

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 :

POSCAR

# 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.

5. Convertir un fichier CONTCAR

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