Atomsk

Le couteau suisse pour les simulations atomiques

Tutoriel : Combiner Plusieurs Sélections

Ce tutoriel explique comment combiner plusieurs sélections ayant des critères différents.

▶ Pour plus d'information, référez-vous à la page de documentation correspondante.

Pour ce tutoriel, créons une super-cellule d'aluminium cfc :

atomsk --create fcc 4.046 Al -duplicate 40 30 1 Al.cfg

1. L'option "-select"

Les tutoriels précédents ont fourni plusieurs exemples de l'option "-select". Par exemple, la commande suivante sélectionne les atomes à l'intérieur d'une sphère, puis inverse la sélection (de sorte que les atomes à l'extérieur de la sphère deviennent sélectionnés), et enfin, l'option "-remove-atoms select" supprime les atomes sélectionnés :

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select invert -rmatom select groupA.cfg

Appelons le groupe d'atomes restants, les atomes du "groupe A". Le résultat peut être visualisé :

Cette sphère est placée légèrement sur la gauche del aboîte, car nous avons placé son centre en "0.35*box" suivant la direction X (c'est-à-dire à 35% de la longueur du premier vecteur de boîte) dans l'option "-select". De façon similaire, nous pouvons sélectionner les atomes dans une sphère placée à 65% de la longueur de boîte, afin que les atomes restants soient légèrement sur la droite :

atomsk Al.cfg -select in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select groupB.cfg

Appelons le groupe d'atomes restants, les atomes du "groupe B" :

Maintenant, que se passe-t-il si nous utilisons les deux options "-select" ci-dessus dans la même commande ? Essayons :

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select test.cfg

Le résultat est exactement le même que ci-dessus, c'est-à-dire qu'il ne reste que les atomes du groupe B. C'est parce que, quand on invoque l'option "-select", elle définit une nouvelle sélection, et remplace (écrase) toute sélection précédente. Ainsi dans la commande précédente, le premier appel à l'option "-select" est complètement perdu et remplacé par le second appel, de sorte que seule la seconde sphère est sélectionnée.

Afin de combiner plusieurs sélection, il faut utiliser un mot-clé supplémentaire, à placer directement après le nom de l'option "-select".

2. Ajouter des atomes à la sélection : (A) OU (B)

Tout d'abord, supposons que nous voulions sélectionner tous les atomes qui appartiennent au groupe A ou au groupe B. Autrement dit, nous voulons sélectionner les atomes du groupe A, puis y ajouter les atomes du groupe B. Pour y parvenir, sélectionnons les atomes du groupe A "normalement", comme dans la première commande ci-dessus. Ensuite, appelons l'option une seconde fois avec "-select add", pour ajouter les atomes qui appartiennent à la seconde sphère (groupe B) :

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select add in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select add.cfg

Cette commande sélectionne d'abord les atomes à l'intérieur de la première sphère (groupe A), puis y ajoute les atomes qui appartiennent à la deuxième sphère (groupe B), en utilisant les paramètres que nous avons fournis. Ensuite, comme précédemment, on inverse la sélection, puis on supprime les atomes. La visualisation confirme que les atomes des deux groupes d'atomes ont bien été sélectionnés et n'ont pas été supprimés :

Notez que les atomes qui appartiennent au groupe A, et aussi au groupe B, sont restés sélectionnés, et n'ont pas été supprimés. Gardez aussi en tête que cette opération ne fait que modifier la sélection : l'option "-select" en elle-même ne supprime pas d'atome, elle n fait que changer leur statut entre "sélectionn" et "non sélectionné". Dans la commande ci-dessus, les atomes ne sont véritablement supprimés qu'au moment où l'option "-rmatom" est invoquée.

3. Retirer des atomes de la sélection  (A) ET NON(B)

Maintenant, supposons qu'après avoir sélectionné les atomes du groupe A, nous voulions retirer les atomes qui appartiennent au groupe B. Cela peut être réalisé avec "-select rm" :

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select rm in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select rm.cfg

Cette commande sélectionne les atomes qui appartiennent à la première sphère (groupe A), puis retire de cette sélection les atomes qui appartiennent à la seconde sphère (groupe B) :

4. Sélectionner uniquement les atomes qui appartiennent aux deux groupes : (A) ET (B)

Maintenant, supposons que nous ne voulions conserver que les atomes qui appartiennent aux deux groupes à la fois. Cette fois, utilisez le mot-clé "intersect":

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select intersect in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select intersect.cfg

Cette commande sélectionne les atomes de la première sphère (groupe A), puis ne conserve que les atomes qui appartiennent aussi à la seconde sphère (groupe B) :

5. Sélectionner les atomes qui appartiennent à l'un ou l'autre groupe, mais pas les deux : (A) XOR (B)

Enfin, il est aussi possible de sélectionner les atomes qui appartiennent soit au groupe A, soit au groupe B, mais pas ceux qui appartiennent aux deux groupes (ceci est l'équivalent de l'opérateur "ou exclusif", ou XOR) :

atomsk Al.cfg -select in sphere 0.35*box 0.5*box 0.5*box 50 \
-select xor in sphere 0.65*box 0.5*box 0.5*box 50 \
-select invert -rmatom select xor.cfg

Cette commande sélectionne les atomes de la première sphère (groupe A), puis y ajoute les atomes qui appartiennent à la seconde sphère (groupe B), en retirant de la sélection les atomes qui appartiennent aux deux sphères :

6. Utiliser davantage de combinaisons

Les exemples ci-dessus sont simplistes, ils ont pour but d'expliquer le sens de chaque mot-clé. Cependant il est possible d'utiliser l'option "-select" plusieurs fois avec ces mots-clés, pour ajouter ou supprimer des atomes à une sélection, et construire des formes plus ou moins compliquées. Chaque fois que l'option "-select" est appelée avec l'un de ces mots-clés, elle conservera la sélection précédente, et la modifiera en appliquant les nouveaux critères.

Par exemple, supposons que nous voulions construire une surface d'aluminium couverte de petites sphères. Cela peut être obtenu en sélectionnant les atomes situés en-dessous d'un certain plan, puis en ajoutant des petites sphères à la sélection, avant de supprimer les atomes :

atomsk Al.cfg -dup 1 1 10 \
-select below 0.5*box Y \
-select add in sphere 0.15*box 0.5*box 0.25*box 20 \
-select add in sphere 0.45*box 0.5*box 0.75*box 20 \
-select add in sphere 0.75*box 0.5*box 0.15*box 20 \
-select invert -rmatom select test.cfg

Encore une fois, gardez en tête que la séquence d'options "-select" n'ajoute pas et ne supprime pas d'atome du système. Elles ne font que sélectionner ou dé-sélectionner des atomes en fonction des critères donnés -et donc, un même atome peut être sélectionné, puis dé-sélectionné, puis re-sélectionné par ces options. Pour véritablement supprimer des atomes, il faut appeler une option faite pour supprimer des atomes, comme l'option "-remove-atoms" ou l'option "-cut". Vous pouvez modifier la commande ci-dessus, pour placer d'autres sphères à la surface, ou pour y placer des cubes par exemple.

Comme dernier exemple, supposons que nous voulions construire un nanopilier au fond d'une cavité sphérique. Pour faire cela, sélectionnons les atomes en-dessous d'un certain plan (cela sera le substrat) ; puis retirons de cette sélection les atomes qui appartiennent à une sphère placée au-dessus du substrat ; puis, ajoutons à la sélection les atomes appartenant à un cylindre (cela sera le nanopilier). En plus, nous pouvons supprimer les atomes proches du bord de la boîte suivant Y. À ce stade, les atomes appartenant au substrat et au nanopilier sont sélectionnés. Il ne nous reste plus qu'à inverser la sélection, puis à supprimer les atomes restants : seuls le substrat et le nanopilier resteront.

atomsk Al.cfg -dup 2 1 20 \
-select below 0.5*box Y \
-select rm in sphere 0.5*box box 0.5*box 100 \
-select add in cylinder Y 0.5*box 0.5*box 30 \
-select rm above 0.9*box Y \
-select invert -rmatom select test.cfg

Là encore, vous pouvez modifier cet exemple pour former des cavités de différents rayons, ou des nanopiliers de rayons différents.

En résumé, l'option "-select" combinée aux mots-clés "add", "rm", "intersect", et "xor", est un outil puissant pour manipuler des sélections, avant d'appliquer une véritable transformation aux atomes sélectionnés. Les exemples ci-dessus suppriment les atomes, mais à la place, vous pouvez aussi les déplacer, les substituer par des atomes d'une autre espèce chimique, et ainsi de suite.