Atomsk est un programme en ligne de commandes conçu pour les personnes qui réalisent des simulations numériques dans les domaines de la physique ou la chimie des matériaux, ainsi que pour ceux qui souhaitent réaliser des illustrations dans ces domaines. Atomsk permet de manipuler et construire des systèmes atomiques, et de générer des fichiers pour une large variété de programmes à des fins de calculs ab initio, de simulations en dynamique moléculaire, de simulation d'images de microscopie électronique, ou bien de visualisation.
Atomsk signifie Atom, Molecule, Material Software Kit. C'est un nom assez court, ce qui est pratique quand on le tape régulièrement en ligne de commandes, et la présence du mot "atome" suggère que ce programme sert à manipuler des systèmes atomiques.
Le nom du programme s'écrit avec une première lettre majuscule, suivie de lettres minuscules, comme suit : Atomsk. Les variantes comme "atomsk" ou "ATOMSK" sont à proscrire.
Après avoir passé quelque temps à écrire des bouts de code pour construire des systèmes atomiques, on réalise très vite que l'on doit re-programmer les mêmes opérations : construire des super-cellules, remettre les atomes dans la boîte, déformer la boîte, etc. On se retrouve ainsi à copier-coller (ou pire, ré-écrire en partant de rien) les mêmes routines pour différents systèmes (cfc, bcc, diamant...). Par ailleurs, si l'on souhaite utiliser un code de simulation ou de visualisation différent, il est aussi nécessaire de ré-écrire ses programmes pour produire des fichiers respectant le bon format.
J'ai pensé qu'il serait plus efficace d'écrire un code assez général pour réaliser ces opérations basiques dans n'importe quel système, peu importe les espèces chimiques ou le type de réseau, et peu importe les formats des fichiers d'entrée et de sortie. Tel est le but d'Atomsk.
Atomsk suit deux principes. Le premier stipule que lorsque vous voulez effectuer une tâche simple, elle devrait être simple à effectuer. Un exemple de tâche "simple" est la conversion de fichiers : personne n'a envie de lire une documentation pendant des heures pour comprendre comment convertir un fichier d'un format à un autre. C'est pourquoi dans Atomsk il n'y a que les deux informations essentielles à entrer : le nom du fichier à convertir, et le format de fichier de sortie, par exemple :
atomsk fichier.xsf cfg
Un corollaire à ce principe est que si vous voulez faire quelque chose de plus élaboré (construire un système complexe, calculer une certaine propriété...) alors ça ne sera sans doute pas simple à faire. Certains programmes permettent de réaliser des tâches compliquées simplement, mais souvent ce sont des programmes très spécialisés -alors qu'Atomsk a pour vocation d'être général et applicable à de nombreux types de systèmes atomiques.
Le second principe est que lorsqu'on lit une commande d'Atomsk, ce qu'elle fait devrait être évident et non-ambigu. Par exemple la commande suivante :
atomsk --create fcc 4.02 Al -duplicate 10 10 4 supercell.xsf
va manifestement construire une super-cellule de taille 10x10x4 d'aluminium cfc, et écrira le résultat dans supercell.xsf
. Ce principe garantit que si vous écrivez de telles commandes dans des fichiers de script (bash par exemple) et les re-lisez des mois ou des années plus tard, alors vous serez capable de comprendre rapidement ce que vous aviez fait.
Il est recommandé de visiter le site Web officiel: http://atomsk.univ-lille.fr/fr/
Téléchargez la version exécutable correspondant à votre plate-forme. Vous pouvez aussi télécharger le code source si vous désirez compiler le programme vous-même ou y jeter un œil.
Si vous utilisez Atomsk dans votre travail, merci de citer l'article suivant :
Atomsk a été conçu pour construire et manipuler des systèmes atomiques pour la physique des matériaux. Il propose des outils pour créer des super-cellules, insérer des défauts (lacunes, interstitiels, dislocations, fracture...), et pour lire et écrire des formats de fichiers utilisés couramment dans ce domaine.
Bien qu'Atomsk supporte des formats de fichiers utilisés couramment dans les domaines de la chimie et de la biologie (DL_POLY, PDB, XYZ...), il n'a pas été conçu pour construire des systèmes moléculaires. Atomsk ne comprend pas les concepts de molécule, de liaison chimique, et il lui manque des outils élémentaires pour construire de tels systèmes (par ex. la solvation).
En interne tous les nombres réels sont enregistrés avec une précision de 64 bits. Dans les fichiers de sortie les coordonnées des atomes sont écrites avec une précision de 8 digits. Ceci devrait être suffisant pour la plupart des applications.
En principe la limite est celle des entiers codés sur 32 bits (4 octets), soit environ 2 milliards (231), mais dans la pratique il est fort probable que la quantité de mémoire virtuelle disponible sur la machine sera le facteur limitant. Chaque atome est caractérisé par sa position x, y, z, et son numéro atomique, ce qui fait un total de quatre nombres qui sont enregistrés comme des réels 64 bits : au final chaque atome utilise 256 bits, soit 32 octets, de mémoire. Les atomes sont stockés dans un tableau de taille Nx4, où N est le nombre d'atomes. Un système composé d'un million d'atomes occupera donc environ 32 Mo (ou 30,5 Mio) de mémoire, un de 10 millions d'atomes environ 320 Mo, et ainsi de suite. Ainsi pour atteindre les 2 milliards d'atomes vous auriez besoin d'environ 64 Go de mémoire.
De plus, si le système inclut des coquilles (dans le cadre d'un modèle ionique cœur-coquille), celles-ci nécessitent un second tableau de réels de taille Nx4. Enfin si les atomes ont des propriétés auxiliaires (comme les forces, vitesses...), ces propriétés sont aussi enregistrées dans un tableau de réels 64 bits de taille NxM où M est le nombre de propriétés associées à chaque atome.
Par défaut des angströms, bien que dans la pratique Atomsk transfère les nombres d'un fichier à l'autre sans se soucier du système d'unités.
Notez que Atomsk n'opère absolument aucune transformation implicite des unités. Par exemple, si vous lisez un fichier contenant des positions atomiques en Bohrs, alors dans le fichier de sortie elles apparaîtront également en Bohrs. Pour changer explicitement les unités il est possible d'utiliser l'option -unit
.
atomsk>
) et je ne sais pas quoi faire.Cela veut dire que vous avez lancé Atomsk sans argument, soit en entrant juste "atomsk" dans votre ligne de commandes, soit en double-cliquant sur l'exécutable ou un lien. Ceci lance Atomsk en mode interactif. Dans ce mode Atomsk attend vos commandes, et les éxécute en temps-réel (si elles sont valides). Dans ce mode tapez "help" pour voir une liste des commandes disponibles.
Si vous ne souhaitez pas utiliser Atomsk de façon interactive, alors vous devez l'exécuter avec des arguments, par exemple :
atomsk initial.xsf -duplicate 2 2 2 final.cfg
Atomsk écrit les fichiers dans le répertoire courant, c'est-à-dire le répertoire où vous vous trouvez au moment où vous exécutez Atomsk. Entrez "pwd" pour connaître le chemin du dossier, et "ls" pour afficher la liste des fichiers de ce dossier.
Atomsk essaye de parler votre langue, s'il le peut ; sinon par défaut il écrit ses messages en anglais. Si vous souhaitez qu'il utilise une langue spécifique, vous pouvez ajouter à votre commande l'option "-lang", suivie du code à deux lettres de votre langue. Veuillez vous référer à la liste des langues supportées.
Pour rendre le changement permanent, vous pouvez créer votre propre fichier de configuration pour Atomsk. Veuillez vous référer à cette page pour savoir comment configurer votre fichier de configuration.
Il n'y a virtuellement aucune limitation, autre que celle de votre environnement. Sous UNIX/Linux vous pouvez taper "getconf ARG_MAX
" pour connaître la longueur maximale de ligne de commande que votre shell supporte.
Atomsk peut générer des cellules élémentaires pour certains réseaux cristallins simples grâce au mode create. Par exemple pour créer une cellule élémentaire d'aluminium cubique à faces centrées (paramètre de maille 4.02 Å) et l'écrire dans le fichier aluminium.xsf
:
atomsk --create fcc 4.02 Al aluminium.xsf
Cependant cette méthode est assez limitée, puisque beaucoup de types de réseau ne peuvent tout simplement pas être générés. Si vous connaissez le groupe d'espace et les positions de Wyckoff du cristal que vous voulez générer, alors le Bilbao Crystallographic server peut être extrêmement utile. Certains codes permettent également de générer des structures cristallines, comme VESTA, ASE, ou certains codes de simulation comme XMD ou GULP.
Il est possible que Atomsk intègre ce genre de fonctionnalité dans le futur, mais aucun plan précis n'est prévu pour l'instant.
Ceci peut être fait grâce à l'option option -duplicate
. Si votre cellule unité est dans le fichier cellule.xsf
, et que vous voulez créer une super-cellule de taille 4x4x2, alors la commande serait :
atomsk cellule.xsf -duplicate 4 4 2 supercellule.xsf
et la supercellule sera écrite dans le fichier supercellule.xsf
.
Exécutez Atomsk avec le nom du fichier d'entrée et le format de fichier de sortie que vous désirez (voir cette page pour une liste des formats de fichiers supportés par Atomsk). Par exemple, pour convertir le fichier "file.xsf" au format CFG pour Atomeye, exécutez :
atomsk file.xsf cfg
Plusieurs formats de fichiers peuvent être spécifiés en sortie, par exemple la commande suivante produira les fichiers aux formats CFG (Atomeye) et LAMMPS :
atomsk file.xsf cfg lmp
Bien que l'un des buts de Atomsk soit effectivement d'aider à la préparation de fichiers à des fins de simulations, il n'est pas conçu pour préparer tous les fichiers ni tous les paramètres de votre simulation. La plupart du temps Atomsk préparera seulement un brouillon que vous devrez éditer avant de lancer une simulation. Éditer un tel fichier signifie que vous devez savoir ce que vous voulez faire et comment le faire avec le code de simulation que vous utilisez. Si ce n'est pas le cas, alors Atomsk ne peut pas vous aider : référez-vous à la documentation du code que vous voulez utiliser.
Oui, il y a trois façons de travailler avec des scripts avec Atomsk.
La première et la plus naturelle est d'utiliser des scripts bash (ou batch sous Windows). Les variables définies dans le script bash peuvent être utilisées dans les arguments d'Atomsk, puisqu'ils sont interprétés par le shell avant l'exécution du programme. Tous les exemples fournis avec le code dans le dossier "examples" utilisent des scripts bash.
Deuxièmement, il est aussi possible d'écrire des options dans un fichier texte, par exemple :
# options pour Atomsk
duplicate 40 30 1
deform x 3% 0.33
puis d'exécuter le programme avec l'option -options
, par exemple :
atomsk unitcell.xsf -options mes_options.txt final.xsf
Enfin, il est aussi possible d'écrire des "scripts Atomsk" et de les faire interpréter par le programme. Cette possibilité est détaillée dans le mode interactif.
L'affichage d'informations est le comportement par défaut, une manière pour le programme d'indiquer ce qu'il fait. Ce comportement par défaut peut être changé grâce au paramètre de ligne de commande -verbosity
. Par exemple pour rendre le programme complètement silencieux, appelez-le avec -v 0
.
Pour rendre ce changement plus permanent, il est aussi possible de créer un fichier de configuration personnel. Si vous utilisez un système GNU/Linux, créez un fichier ~/.config/atomsk.conf
et écrivez-y la ligne : verbosity 0
.
Notez que même si la verbosité est égale à zéro, les messages d'alerte et d'erreur seront toujours affichés à l'écran. Pour éviter cela, utilisez la redirection standard : >/dev/null 2>&1
.
Le programme est censé détecter les causes possibles d'erreurs et se fermer proprement, mais dans certains cas il est possible qu'il se termine brutalement avec une erreur de segmentation ou toute autre forme d'erreur ou de plantage. Dans la plupart des cas cela signifie qu'il y a un bug dans le programme, et ce bug peut être n'importe quoi. La meilleure chose à faire est d'envoyer un email à l'auteur, avec votre fichier d'entrée et la ligne de commande complète que vous avez utilisée pour exécuter Atomsk. Le bug pourra alors être corrigé dans une future version du programme.
Veuillez notez que si vous pestez contre le programme (ou contre son auteur) mais n'envoyez pas de rapport de bug, il est très improbable que le bug soit jamais corrigé.
De nombreux efforts ont été faits pour tester le programme avec différents compilateurs (GNU Fortran, g95, Intel Fortran) et sur différentes plates-formes (différentes variantes de Linux et Windows), référez-vous à la page d'installation pour une liste des compilateurs testés. Cependant pour des raisons évidentes de temps et de ressources, tous les environnements possibles et imaginables n'ont pas été testés -il est donc possible que, dans des cas particuliers, la compilation échoue.
Certaines vieilles versions des compilateurs ne permettent pas de compiler le présent code. Par exemple Atomsk ne compilera pas avec GNU Fortran 4.1, mais compile parfaitement avec GNU Fortran 4.4 et supérieur. Il est donc recommandé d'utiliser une version à jour de votre compilateur. Si cela ne fonctionne toujours pas, essayez avec un compilateur différent.
Cela signifie que le compilateur n'a pas réussi à lier Atomsk à la bibliothèque LAPACK. Tout d'abord assurez-vous que LAPACK est installé sur votre système, et compilé avec le même compilateur que celui que vous utilisez pour compiler Atomsk. Ensuite, assurez-vous que la variable LAPACK
(dans le Makefile que vous utilisez) pointe bien vers la bibliothèque LAPACK.
Oui, Atomsk fonctionne nativement sur les systèmes Microsoft® Windows®. Le plus simple est de télécharger l'exécutable pour Windows depuis la page de téléchargement, puis d'exécuter le programme.
Si vous avez le courage de compiler le programme sous Microsoft® Windows®, suivez les instructions d'installation. Il est nécessaire d'installer le programme GNU Make pour pouvoir utiliser la commande "make
", ainsi qu'un compilateur Fortran 95 (MinGW est recommandé). La bibliothèque LAPACK doit aussi être installée, référez-vous à cette page (GNU Fortran) et/ou cette page (Intel® Fortran). Un Makefile pour Windows est fourni dans le dossier src (Makefile.windows
), vous pouvez l'éditer pour l'adapter à votre système. Ensuite exécutez GNU make :
make.exe -f Makefile.windows atomsk
De manière non-native, Atomsk devrait également fonctionner sous Windows dans un environnement Linux tel que Cygwin, bien que cela n'a pas été testé.
Non. J'admets qu'il serait très utile d'avoir un paquet Atomsk, mais n'ai pas le temps ni le savoir-faire pour en créer. Mais si des volontaires veulent packager Atomsk, ils sont bienvenus.
La plus simple alternative est sans doute d'utiliser la version binaire pour Linux proposée sur la page Web d'Atomsk.
Les gestionnaires de paquets de la plupart des distributions GNU/Linux travaillent dans le dossier /usr/bin. Il est donc recommandé de ne pas modifier manuellement le contenu de ce dossier -c'est pourquoi Atomsk n'y touche pas. Le dossier /usr/local/bin est prévu pour recevoir des programmes ajoutés par l'utilisateur (comme Atomsk).
Une autre possibilité serait d'installer Atomsk dans le dossier /opt/bin, qui est aussi réservé pour des programmes non gérés par le système. Pour cela vous pouvez modifier la variable INSTPATH
dans le Makefile
que vous utilisez, avant d'utiliser la commande "make install
".
Si vous n'êtes pas sûr de la meilleure solution pour votre système, utilisez les paramètres par défaut fournis avec Atomsk ou demandez à votre administrateur système.
Dans sa version Beta 0.12 Atomsk comporte environ 52 000 lignes de code, et 27 000 lignes de commentaires, répartis dans environ 160 fichiers source.
Certaines personnes sont plus enclines à utiliser une interface avec des fenêtres et des menus déroulants, au lieu d'un terminal austère. Ils seront sans doute déçus par Atomsk. Ce programme est conçu pour être utilisé en ligne de commande, ce qui signifie qu'il doit être léger et rapide, doit pouvoir être utilisé sur des machines distantes, et pouvoir être appelé depuis des scripts bash. Il est difficile de remplir ce cahier des charges avec une interface graphique. Donc la réponse courte est non : il n'y a aucune interface graphique de prévue pour Atomsk. Si vous n'aimez pas les lignes de commandes et recherchez un programme avec une interface graphique, alors Atomsk n'est probablement pas ce que vous cherchez.
Si j'en ai besoin ou si je suis d'humeur excessivement joviale j'ajouterai le support de nouveaux formats de fichiers et de nouvelles transformations. Mais si vous avez besoin de quelque chose de particulier il sera sans doute plus rapide de le développer vous-même. Lisez les informations pour les développeurs.
En premier lieu parce que Fortran est le langage de programmation que je connais le mieux. A posteriori je ne regrette pas ce choix : Fortran peut manipuler des nombres complexes de manière simple, et s'interface naturellement avec LAPACK (une bibliothèque également écrite en Fortran). Mais puisque Atomsk est un logiciel libre, le ré-écrire dans un autre langage fait partie de vos droits.