Retour au menu principal

## Option : select

#### Syntaxe

`-select all`

`-select invert`

`-select <espèce>`

`-select <indice>`

`-select <indice1>,<indice2>,<indice3>:<indice4>,...`

`-select list <fichier>`

`-select random <N> <espèce>`

`-select <above|below> <d> <dir>`

`-select <in|out> cell`

`-select <in|out> box <x> <y> <z> <x'> <y'> <z'>`

`-select <in|out> sphere <x> <y> <z> <R>`

`-select <in|out> cylinder <axe> <x1> <x2> <R>`

`-select <in|out> cone <axe> <x> <y> <z> <α>`

`-select <in|out> torus <axe> <x> <y> <z> <R> <r>`

`-select prop <propriété> <valeur1[:valeur2]>`

`-select <NNN> <espèce> neighbors <indice>`

`-select grid <fichier>`

`-select stl [center] [rescale|fill] <fichier>`

`-select <i> modulo <j>`

`-select [add|rm|intersect|xor|among] <n'importe quel critère ci-dessus>`

#### Description

Cette option permet de sélectionner des atomes en fonction des critères donnés. La sélection peut inclure tous les atomes d'une espèce donnée, les atomes au-dessus ou en-dessous d'un plan donné, ceux à l'intérieur ou à l'extérieur d'une région géométrique, ou un certain nombre d'atomes pris au hasard.

Lorsque -select all est utilisé, toute sélection est détruite. Tous les atomes seront alors traités de la même façon, cela revient donc à sélectionner tous les atomes.

Lorsque -select invert est utilisé la sélection est inversée (tout atome précédemment sélectionné est dé-sélectionné, et tout atome non sélectionné est sélectionné). Si aucune sélection n'était définie précédemment (donc tous les atomes étaient sélectionnés) alors rien n'est fait, car cela n'a pas de sens de ne sélectionner aucun atome.

Lorsque -select <espèce> est utilisé tous les atomes de l'espèce donnée sont sélectionnés. L'espèce chimique doit être désignée par son symbole chimique (e.g. Al, Si, C, Cu...).

Lorsque -select <indice> est utilisé (où <indice> est un entier), seul l'atome ayant l'indice correspondant est sélectionné. Plusieurs indices peuvent être donnés en les séparant par des virgules. Une plage d'indices peut être définie par deux entiers séparés par deux-points.

Lorsque -select list <fichier> est utilisé, la liste d'atomes à sélectionner est lue depuis le <fichier>. Le <fichier> doit être un fichier texte contenant un indice atomique (nombre entier) par ligne.

En utilisant -select random, N atomes de l'<espèce> donnée sont sélectionnés au hasard (où N est un nombre entier). Si N est un nombre réel suivi du symbole "%" alors ce pourcentage d'atomes sera sélectionné. Si <espèce> vaut "any" ou "all" alors N atomes sont sélectionnés au hasard quelle que soit leur espèce chimique. Notez que cette option tente de définir des indices au hasard, elle est donc largement non-reproductible, c-à-d. qu'en partant du même système et en appliquant cette option il est très probable d'obtenir des résultats différents.

En utilisant -select above (respectivement, -select below), tous les atomes situés à une distance supérieure (respectivement inférieure) à la distance <d> par rapport à l'origine cartésienne (0,0,0) le long de la direction <dir> donné sont sélectionnés. La direction <dir> peut être "X", "Y", "Z" (indiquant les axes cartésiens), ou une direction cristallographique définie par ses indices de Miller [hkl], ou [hkil] pour les systèmes hexagonaux (voir comment spécifier les indices de Miller). Si l'orientation cristallograpĥique du système est définie (par exemple grâce à l'option `-properties`) alors les indices de Miller se réfèrent à cette orientation. Sinon il est supposé que l'orientation est X=[100], Y=[010], Z=[001].

Utiliser -select in (ou out) permet de sélectionner des atomes à l'intérieur (respectivement à l'extérieur) d'une région géométrique. Seules quelques formes géométriques simples sont supportées, comme le parallélépipède, la sphère, etc. Les paramètres dépendent de la géométrie de la région :

- in|out : décide si ce sont les atomes à l'intérieur (in) ou à l'extérieur (out) de la région qui sont sélectionnés.
- x, y, z : pour la boîte ("box"), les coordonnées du premier coin ; pour la sphère ("sphere") et le tore ("torus"), coordonnées du centre ; pour le cylindre ("cylinder") seules deux coordonnées doivent être fournies, indiquant la position du centre du cylindre dans le plan normal à son <axe> (voir ci-dessous).
- x', y', z' : seulement pour la boîte ("box"), coordonnées du dernier coin.
- R : seulement pour la sphère, le cylindre, et le tore, leur rayon (en Å).
- axe : pour le cylindre, le tore ou le cône, la direction de l'axe principal, doit être "X", "Y" ou "Z".
- r : seulement pour le tore, son rayon secondaire (en Å).
- α : seulement pour le cône, son angle d'ouverture (en degrés).

En utilisant -select in cell (ou -select out cell), les atomes situés à l'intérieur (respectivement à l'extérieur) de la boîte de simulation sont sélectionnés. Cette option ne prend aucun paramètre supplémentaire.

La boîte ("box") est une boîte parallélépipédique définie par deux points de coordonnées (x,y,z) et (x',y',z').

La sphère est définie par son centre (x,y,z) et son rayon R.

Le cylindre est défini par son centre (x1,x2) dans le plan normal à son <axe>, et par son rayon R. Les directions x1 and y2 sont définies d'après la direction de l'<axe> par permutation X, Y, Z (par ex. si <axe>=Y alors x1 sera la position selon l'axe cartésien Z, et x2 la position suivant X).

Le cône est défini par son axe (X, Y ou Z), la position de sa pointe (x,y,z), et son angle d'ouverture par rapport à son axe (α en degrés).

Le tore est défini par son axe (X, Y ou Z), sa position (x,y,z), son rayon principal R, et son rayon secondaire r.

Les positions <x>, <y>, <z> sont généralement données en Å. Il est également possible de spécifier une distance relative aux dimensions de la boîte avec le mot-clé BOX et une opération (voir cette page). Notez que ces mots-clé ne peuvent être employés que pour les positions : le rayon <R> de la sphère ou du cylindre doit toujours être donné en Å.

L'option -select prop permet de sélectionner les atomes si leur <propriété> a la valeur donnée. Si une seule valeur est donnée, alors seuls les atomes dont la <propriété> a exactement cette valeur sont sélectionnés. Si deux valeurs sont données, séparées par un double point (:), alors tous les atomes dont la <propriété> a une valeur dans cette fourchette sont sélectionnés.

En utilisant -select <NNN> <espèce> neighbors <indice>, les voisins de l'atome ayant l'<indice> donné sont sélectionnés. Si <NNN> est un entier positif alors les <NNN> voisins les plus proches sont sélectionnés, peu importe leur distance (<NNN> doit alors être inférieur à 100). Si <NNN> est un nombre réel négatif alors tous les voisins dans un rayon |<NNN>| sont sélectionnés, peu importe leur nombre. Si <NNN> est égal à zero, alors les premiers voisins sont sélectionnés. Notez que si certains atomes se trouvent hors de la boîte, la recherche de voisins peut donner des résultats erronés (l'option `-wrap` peut être utilisée pour replacer les atomes dans la boîte). Si <espèce> est le symbole chimique d'une espèce alors seuls les atomes de cette espèce sont sélectionnés. Si <espèce> est "all" ou "any" alors les atomes sont sélectionnés sans tenir compte de leur espèce chimique.

L'option -select <i> modulo <j> sélectionne les atomes dont l'indice est égal à <i> modulo <j>, c'est-à-dire égal à i±nj où n est un nombre entier.

En utilisant -select grid, une grille d'éléments finis est lue depuis le <fichier>. Le <fichier> doit être un fichier texte respectant l'un des trois formats suivants :

- Le <fichier> peut contenir une première ligne contenant trois entiers NX, NY, NZ, définissant le nombre d'éléments suivant chaque direction cartésienne. Dans ce cas tous les éléments sont des parallélépipèdes de mêmes dimensions. Ensuite, le fichier doit contenir NXxNYxNZ nombres 0 ou 1, contigus ou séparés par des espaces, sur une ou plusieurs lignes (dans la limite de 4096 caractères par ligne). Chaque nombre correspond à un élément de la grille, en se déplaçant d'abord suivant X, puis suivant Y, puis suivant Z. Un 0 indique que les atomes à l'intérieur d'un élément ne doivent pas être sélectionnés, et un 1 qu'ils doivent l'être.
- Ou, le <fichier> peut commencer par une ligne contenant le mot-clé "Finite element", puis contenir des lignes donnant la position (x,y,z) d'éléments de la grille (soit en Å soit en coordonnées réduites), suivies par un nombre entier 0 ou 1. Ces éléments forment alors les nœuds d'un maillage de Voronoï, qui peut être régulier ou non.
- Enfin, le <fichier> peut contenir des lignes de caractères ASCII formant une représentation 2-D d'une grille. Les espaces et le caractère 0 sont interprétés comme des 0 (représentant des endroits où les atomes ne sont pas sélectionnés), et tout autre caractère est interprété comme un 1 (marquant les endroits où les atomes sont sélectionnés). Ceci peut être utile pour sélectionner des formes géométriques simples, comme des lettres ou de l'art ASCII. Vous pouvez utiliser des programmes comme figlet pour convertir du texte en art ASCII, ou bien jp2a pour convertir une image JPG en un fichier texte. Ensuite, Atomsk peut utiliser de tels fichiers textes comme grilles pour sélectionner des atomes.

Les deux premiers formats permettent de manipuler des grilles en 2-D ou en 3-D ; le dernier format, uniquement des grilles bidimensionnelles (voir les exemples ci-dessous). Cette option permet de sélectionner des formes complexes.

En utilisant -select stl, les atomes sont sélectionnés selon le modèle 3-D défini dans le <fichier>. Le <fichier> doit être au format STL, ASCII ou binaire. Ce format de fichier est très utilisé pour l'impression 3-D et dans d'autres applications 3-D, et peut être généré à l'aide de nombreux logiciels de modélisation 3-D, parmi lesquels Tinkercad, Blender, ou Google Sketchup; ou bien, des modèles prédéfinis peuvent être obtenus depuis une grande variété de sources, par exemple Cults, Pinshape, ou bien Thingiverse. Si le mot-clé "center" apparaît avant le nom du <fichier>, alors le modèle 3-D est déplacé au centre de la boîte de simulation. Si le mot-clé "rescale" est utilisé, Atomsk redimensionne (agrandit ou rétrécit) le modèle pour qu'il rentre dans la boîte de simulation, tout en préservant son facteur de forme. Si le mot-clé "fill" est utilisé, alors le modèle 3-D est déformé pour remplir la boîte de simulation (dans ce cas il est automatiquement centré). Les mots-clés "rescale" et "fill" sont mututllement exclusifs. Les atomes qui se trouvent à l'intérieur du modèle 3-D model sont selectionnés ; pour sélectionner les atomes qui se trouvent à l'extérieur, utilisez simplement "-select invert". Notez que, si le modèle 3-D contient un très grand nombre de triangles (plus de 100 000), alors la sélection peut prendre du temps.

Pour tous les cas ci-dessus (sauf "-select all" et "-select invert"), il est possible d'utiliser l'un des mots-clés optionnels "add", "rm", "intersect", ou "xor", juste après le mot-clé "-select". Ces mots-clés permettent de modifier une sélection précédente, en la combinant avec de nouveaux critères. Supposons que l'option "-select" ait déjà été appelée et ait sélectionné un groupe d'atomes A ; supposons qu'un nouvel appel sélectionne les atomes d'un groupe B ; alors les mots clés correspondent aux opérations logiques suivantes :

- add : les atomes appartenant au groupe A ou au groupe B sont sélectionnés (opération OU) ;
- rm : les atomes appartenant au groupe A, mais pas au groupe B, sont sélectionnés (A ou non-B) ;
- intersect : les atomes appartenant à la fois au groupe A et au groupe B sont sélectionnés (opérateur ET) ;
- xor : les atomes appartenant soit au groupe A, soit au groupe B, mais pas aux deux, sont sélectionnés (opération OU exclusif, ou XOR).
- among : les atomes à sélectionner sont choisis parmi la sélection précédente. Ce mot-clé n'est utile que pour les sélections de types "prop" et "random" ; pour les autres types de sélection, cela revient à utiliser le mot-clé "intersect".

Les autres options invoquées après l'option `-select` ne seront appliquées qu'aux atomes sélectionnés, référez-vous à la page de chaque option pour savoir comment elles traitent les atomes sélectionnés. Attention : certaines options peuvent produire des résultats étranges (c-à-d. non physiques) lorsqu'elles ne sont appliquées qu'à certains atomes.

À chaque fois que cette option est invoquée, elle oublie toute sélection précédente et en définit une nouvelle.

Notez que cette option n'a aucun effet sur les fichiers de sortie : peu importe quels atomes sont sélectionnés ou non, leurs coordonnées seront écrites dans le ou les fichiers de sortie.

#### Défaut

Par défaut aucune sélection n'est définie, donc tous les atomes sont sélectionnés. Si une sélection est définie et que tous les atomes de la sélection sont supprimés (autrement dit, si la sélection ne contient plus aucun atome), alors la sélection est réinitialisée, autrement dit tous les atomes restants sont sélectionnés.

#### Exemples

- `atomsk initial.cfg -select Si -remove-atom select final.xyz`

  Ceci lira le fichier `initial.cfg`, sélectionnera tous les atomes de silicium et les supprimera. Le résultat final sera écrit dans `final.xyz`.

- `atomsk initial.cfg -select 340,432,126:190,809 -rmatom select final.xyz`

  Ceci va sélectionner les atomes numéros 340, 432, de 126 à 190, et 809.

- `atomsk initial.cfg -select above 40 y -rot z 45 final.xyz`

  Ceci sélectionnera tous les atomes ayant une coordonnée Y supérieure à 40 Å. Puis l'option `-rotate` sera appliquée seulement aux atomes sélectionnés.

- `atomsk initial.cfg -select above 40 [111] -cut above 30 x final.xyz`

  Ceci sélectionnera les atomes qui sont situés, par rapport à l'origine cartésienne, à une distance supérieure à 40 Å suivant la direction [111]. Ensuite, l'option `-cut` supprimera les atomes sélectionnés, mais seulement si leur coordonnée X est supérieure à 30 Å.

- `atomsk initial.cfg -select in box 0 0 0 20 10 3 -shift -10 0 0 final.xyz`

  Ceci sélectionnera les atomes situés dans la boîte rectangulaire définie par les points (0,0,0) et (20,10,3). Puis l'option `-shift` translatera tous ces atomes sélectionnés d'un vecteur (-10,0,0).

- `atomsk initial.cfg -select out box 10 20 -INF BOX-10 BOX-20 INF -fix all final.xyz`

  Ceci sélectionnera tous les atomes à l'extérieur de la boîte située entre 10 Å et 10 Å avant le bord de boîte suivant X ("BOX-10"), entre 20 Å et 20 Å avant le bord de boîte suivant Y ("BOX-20"), et entre -∞ et +∞ suivant Z. Puis l'option `-fix` sera appliquée aux atomes sélectionnés.

- `atomsk initial.cfg -select out sphere 0.5*BOX 0.5*BOX 0.5*BOX 10.0 -rmatom select final.xyz`

  Ceci sélectionnera les atomes qui sont en-dehors de la sphère dont le centre est au milieu de la boîte et de rayon 10 Å. Puis l'option `-rmatom` sera appliquée à ces atomes, de sorte qu'il ne reste que les atomes à l'intérieur de la sphère.

- `atomsk initial.cfg -select out cylinder y 40 30 20 -fix all final.xyz`

  Ceci sélectionnera les atomes qui sont à l'extérieur du cylindre dont l'axe principal est suivant Y, le centre est en Z=40 Å et X=30 Å, et de rayon 20 Å. Puis ces atomes seront figés.

- `atomsk initial.cfg -select random 20 Fe -rmatom select final.xyz`

  Ceci va sélectionner 20 atomes de fer au hasard dans le système. Puis l'option `-rmatom` supprimera ces atomes.

- `atomsk initial.cfg -select random 5% Si -substitute Si C final.xyz`

  Ceci va sélectionner 5% des atomes de silicium au hasard dans le système. Puis les atomes de silicium sélectionnés seront substitués par des atomes de carbone.

- `atomsk initial.cfg -select random 150 any -substitute Fe C final.xyz`

  Ceci sélectionnera 150 atomes au hasard dans le système (peu importe leur espèce). Puis les atomes de fer sélectionnés seront substitués par des atomes de carbone.

- `atomsk initial.cfg -select 6 any neighbors 9578 final.xyz`

  Ceci va sélectionner les 6 voisins les plus proches de l'atome #9578.

- `atomsk initial.cfg -select 12 Si neighbors 1245 -rmatom select final.xyz`

  Ceci va sélectionner les 12 atomes de silicium les plus proches de l'atome #1245, et va ensuite supprimer ces atomes.

- `atomsk initial.cfg -select -8.5 any neighbors 566 final.xyz`

  Ceci va sélectionner tous les atomes se trouvant dans un rayon de 8.5 Å autour de l'atome #566.

- `atomsk initial.cfg -select prop vx 1e5:1e6 final.xyz`

  Ceci va sélectionner les atomes dont la vitesse suivant X (vx) est comprise entre 1e5 et 1e6 (selon l'unité de vitesse employée dans le fichier d'entrée).

- ##### grille.txt

  `4 4 3
  # Premier plan XY
  1 0 0 0
  0 1 0 0
  0 0 1 0
  0 0 0 1
  # Second plan XY
  0 0 0 1
  0 0 1 0
  0 1 0 0
  1 0 0 0
  # Troisième plan XY
  0 0 0 0
  0 1 1 0
  0 1 1 0
  0 0 0 0
  `

  `atomsk initial.cfg -select grid grille.txt -rmatom select final.xyz`

  Le fichier "grille.txt" contient une première ligne donnant le nombre d'éléments suivant chaque direction : ici, le système atomique sera découpé selon une grille de taille 4x4x3. Les lignes suivantes donnent l'état (0 ou 1) de chacun des 48 éléments de la grille (les lignes vides ou commençant par un signe # sont ignorées). Une valeur de 1 indique que les atomes à l'intérieur d'un élément seront sélectionnés, et 0 qu'ils ne le seront pas. Dans ce fichier, chaque groupement de 4x4 chiffres représente une grille dans un plan XY, et il y a trois de ces plans suivant Z. En résumé, Atomsk va lire le fichier "initial.cfg", mettra automatiquement la grille à l'échelle du système atomique, sélectionnera les atomes situés dans des éléments marqués d'un "1", et supprimera les atomes sélectionnés. Le résultat final sera écrit dans le fichier "final.xyz".

- ##### grille.txt

  `Finite element
  0.2354 0.2 0.4013540 1
  0.196874 0.5354 0.541 0
  0.9432587 0.651 0.3554 1
  0.68354 0.2189 0.35 0
  0.4568 0.2367 0.920 1
  0.87413356 0.543254 0.357401 0
  0.367744 0.5485 0.548 1
  0.1289 0.855354 0.36871 0
  0.354 0.9870 0.5688 1
  0.75432 0.98700 0.10753 0
  `

  `atomsk initial.cfg -select grid grille.txt -rmatom select final.xyz`

  Le fichier "grille.txt" contient des lignes donnant la position (x,y,z) d'éléments d'une grille d'éléments finis, suivie par un entier (0 ou 1). Atomsk va lire le fichier "initial.cfg", mettra automatiquement la grille aux dimensions de la boîte, sélectionnera les atomes situés à l'intérieur des éléments marqués d'un "1", et supprimera les atomes sélectionnés. Le resultat sera écrit dans "final.xyz".

- ##### A.txt

  `00000000000000
  00000011000000
  00001111110000
  00001100110000
  00001111110000
  00001100110000
  00000000000000
  `

  `atomsk initial.cfg -select grid A.txt -rmatom select final.xyz`

  Le fichier "A.txt" contient des lignes de 0 et de 1, qui forment une représentation graphique de la lettre "A". Atomsk va lire le fichier "initial.cfg", mettra automatiquement la grille aux dimensions de la boîte, sélectionnera les atomes situés à l'intérieur des éléments marqués d'un "1", et supprimera les atomes sélectionnés. Le resultat sera écrit dans "final.xyz".

- `atomsk initial.cfg -select stl 3d-model.stl -remove-atoms select final.xyz`

  Ceci va lire un modèle 3-D depuis un fichier STL, sélectionner les atomes à l'intérieur de cette forme 3-D, et les supprimer.

- `atomsk initial.cfg -select stl center rescale 3d-model.stl -remove-atoms select final.xyz`

  Ceci va lire un modèle 3-D depuis un fichier STL, centrer et redimensionner ce modèle pour qu'il rentre dans la boîte, puis sélectionner les atomes à l'intérieur de cette forme 3-D, et les supprimer.

- `atomsk initial.cfg -select stl fill 3d-model.stl -remove-atoms select final.xyz`

  Ceci va lire un modèle 3-D depuis un fichier STL, le déformer pour qu'il remplisse toute la boîte de simulation, puis sélectionner les atomes à l'intérieur de cette forme 3-D, et les supprimer.

Retour au menu principal