Atomsk

Le couteau suisse pour les simulations atomiques

Tutoriel : Utiliser des Scripts Bash

Dans ce tutoriel, vous allez apprendre à utiliser Atomsk à l'intérieur de scripts bash. Il est recommandé d'être déjà familier avec bash pour suivre ce tutoriel.

Conserver une trace de son travail est souvent considéré comme une bonne pratique. Dans le cadre de simulations à l'échelle atomique, vous pouvez vouloir écrire la faon dont vous avez construit votre système, comment vous l'avez conçu et ainsi de suite, surtout si c'est un système très compliqué ou qui demande plusieurs étapes. Ainsi, si vous-même ou quelqu'un d'autre souhaite re-construire le même système atomique, vous pouvez à nouveau exécuter le même script.

Ceci peut être accompli en écrivant vos commandes dans des scripts. Bash est un interpréteur puissant, capable de manipuler des variables, des conditions, des boucles, et bien plus encore.

NOTE : ce tutoriel n'a pas vocation à vous enseigner à utiliser bash, mais simplement comment tirer parti de bash lorsque vous contruisez des systèmes atomiques avec Atomsk. Si vous voulez apprendre bas ou avez des questions sur bash, alors recherchez ces informations ailleurs avant de suivre ce tutoriel.

1. Écrire des commandes dans un script bash

Un script bash n'est rien d'autre qu'un fichier texte, qui contient des commandes qui peuvent être exécutées par l'interpréteur bash. Lorsque vous écrivez un script bash, au moins deux choses devraient être respectées :

À titre d'exemple, vous pouvez créer une maille élémentaire d'aluminium en écrivant les lignes suivantes dans un fichier texte nommé "aluminium.sh" :

aluminium.sh

#!/bin/bash

atomsk --create fcc 4.046 Al xsf

Ensuite, exécutez ce script en invoquant bash :

bash aluminium.sh

Bash va alors exécuter les commandes contenues dans le script séquentiellement, c'est-à-dire l'une après l'autre. Dans le script ci-dessus, il n'y a qu'une seule commande à exécuter (qui est atomsk).

Vous pouvez (ou pas, selon vos préférences) rendre ce script bash exécutable avec la commande :

chmod +x aluminium.sh

Si vous le faites, alors ce script devient exécutable directement avec :

./aluminium.sh

2. Utiliser des variables bash

Dans un script bash, il est possible de définir des variables, et ensuite de les utiliser dans les commandes suivantes. Par exemple, nous pouvons modifier le script précédent pour y définir une variable a, et y enregistrer la valeur du paramètre de maille. Ensuite, dans la commande "atomsk", nous pouvons utiliser cette variable à la place d'une valeur numérique :

aluminium.sh

#!/bin/bash

a=4.046
atomsk --create fcc $a Al xsf

Lorsque vous exécutez ce script, l'interpréteur bash va automatiquement remplacer le symbole $a par la valeur de la variable, avant même d'exécuter Atomsk. Donc, au moment où Atomsk va s'exécuter, il ne saura même pas qu'une variable a été utilisée, il recevra juste un nombre.

Les variables peuvent être utilisées comme substituts dans tous les modes et options de Atomsk. Elles peuvent remplacer des paramètres de maille, une position, un vecteur de Burgers lorsqu'on construit une dislocation, et ainsi de suite. L'avantage est que vous pouvez exécuter exactement le même script, en changeant uniquement la valeur de la variable pertinente, au lieu de modifier la ligne de commande de Atomsk.

3. Utiliser des boucles bash

Une autre fonctionnalité très utile en bash est sa capacité à répéter des opérations avec des boucles.

Par exemple, imaginons que vous vouliez construire plusieurs mailles d'aluminium avec différentes valeurs du paramètre de maille. Vous pouvez écrire une boucle, dans laquelle vous augmentez le paramètre de maille de 3,5 à 4,5 Å :

aluminium.sh

#!/bin/bash

for i in {0..10..1} ; do
  a=$(echo "3.5 + 0.1*$i" | bc -l)
  atomsk --create fcc $a Al Al_${a}.xsf
done

Cette fois, les noms des fichiers d'entrée contiendront aussi le paramètre de maille, afin de les distinguer ce script va générer des fichiers nommés "Al_3.5.xsf", "Al_3.6.xsf", et ainsi de suite jusqu'à "Al_4.5.xsf".

4. Autres possibilités

Bash est beaucoup plus versatile que ne le montrent les quelques exemples simples ci-dessus. Vous pouvez concevoir des systèmes très complexes, exécuter des simulations, réaliser des analyses, tout cela dans le même script bash. À titre d'exemple, vous pouvez inspecter le script nommé "sto.sh" contenu dans le dossier "/examples/SrTiO3_gamma_surface/" fourni avec Atomsk. Ce script construit des systèmes atomiques de titanate de strontium avec différents défauts d'empilement, effectue des simulations avec LAMMPS pour chacun d'entre eux, et finit par écrire la γ-surface dans un fichier de données.

Bien sûr, il est aussi possible de faire tout cela avec d'autres outils que bash, comme zsh, Python, ou d'autres langages. Les utilisateurs de systèmes Microsoft® Windows® peuvent utiliser le langage batch. Tout ceci relève des préférences de chaque utilisateur.