Retour au menu principal

## Option : properties

#### Syntaxe

`-properties <fichier>`

#### Description

Cette option permet de lire certaines propriétés du système depuis un fichier.

Le <fichier> est un fichier texte qui doit contenir des mots-clés, suivis des valeurs correspondantes. Les lignes vides, et les lignes commençant avec un croisillon (#), sont ignorées. Si une propriété est définie plusieurs fois, la dernière occurence écrase les précédentes.

Les propriétés individuelles des atomes sont définies pour chaque atome, c'est le cas par ex. de l'énergie, des déplacements, ou des vitesses des atomes. Si elles ne modifient pas la position des atomes alors on parle de "propriétés auxiliaires" (par exemple l'énergie, les vitesses, charges électriques...), et elles sont écrites dans certains formats de fichiers comme les fichiers CFG (voir cette page pour plus d'informations).

Les propriétés globales du système ne s'appliquent pas à chaque atome individuellement, mais au système dans son ensemble, comme les vecteurs de boîte ou le tenseur élastique. Ces propriétés peuvent affecter certaines options appelées après l'option `-properties`, ainsi que les fichiers de sortie.

Voici la liste des propriétés atomiques individuelles, ou "propriétés auxiliaires", qui peuvent être définies ou s'appliquer à chaque atome :

- Des vecteurs de déplacement peuvent être définis grâce au mot-clé "displacement", suivi de lignes contenant l'indice d'un atome et son vecteur de déplacement `u` (in Å). Au besoin, le vecteur de déplacement `s` des coquilles (dans le cadre d'un modèle ionique cœur-coquille) peut aussi être donné:

  `displacement
  <id1> <ux1> <uy1> <uz1> [<sx1> <sy1> <sz1>]
  <id2> <ux2> <uy2> <uz2> [<sx2> <sy2> <sz2>]
  ...`

  Les déplacements peuvent être donnés pour tous les atomes, ou seulement certains d'entre eux. S'il existe des coquilles dans le système, mais qu'aucun vecteur de déplacement n'est donné pour elles, alors elles seront déplacées du même vecteur que leur cœur. Ces déplacements seront immédiatement appliqués aux positions des atomes (et des coquilles s'il y en a).

- Des déplacements sous forme de fonctions peuvent être définies grâce au mo-clé "displacement functions", suivi de trois lignes donnant les fonctions `ux`, `uy`, `uz`:

  `displacement functions
  ux = <fonction>
  uy = <fonction>
  uz = <fonction>
  `

  La syntaxe pour écrire des fonctions est détaillée sur cette page.

  Pour chaque atome, les fonctions ux, uy et uz sont évaluées en utilisant ses coordonnées x, y, z, et l'atome est immédiatement déplacé de la quantité calculée. Des exemples sont donnés ci-dessous.

- Les charges des ions peuvent être définies grâce au mot-clé "charge", suivi de lignes contenant le symbole chimique de l'ion et sa charge (généralement en unités de charges élémentaires e, bien que Atomsk travaillera quel que soit le nombre donné). Dans le cas d'un modèle ionique cœur-coquille, la charge Q du cœur et la charge q de la coquille peuvent être données :

  `charge
  <espèce1> <Q1> [<q1>]
  <espèce2> <Q2> [<q2>]
  ...`

  Tous les atomes appartenant à l'<espèce1> se verront assigner la charge électrique Q1 (et leurs coquilles la charge q1 s'il y a lieu). Si des charges avaient été définies auparavant, elles seront remplacées par celles-ci. Ces charges sont utilisées par exemple dans le mode `--edm`, ou encore pour calculer la polarisation électronique.

- Les types d'atomes peuvent être définis grâce au mot-clé "type":

  `type
  <espèce1> <type1>
  <espèce2> <type2>
  ...`

  Cette option va assigner un <type> à chaque <espèce>. Notez que le <type> est enregistré comme propriété auxiliaire pour chaque atome, et est utilisé lors de l'écriture de certains formats de fichiers (par ex. les fichiers de données de LAMMPS ou les fichiers IMD).

  Pour l'opération inverse (c-à-d. remplacer les types d'atomes par des espèces chimiques) il est possible d'utiliser l'option `-substitute`.

- Les vitesses des atomes peuvent être définis grâce au mot-clé "velocity":

  `velocity
  <id1> <vx1> <vy1> <vz1>
  <id2> <vx2> <vy2> <vz2>
  ...`

  Les vitesses peuvent être données pour tous les atomes, ou seulement certains d'entre eux. Les atomes dont la vitesse n'est pas donnée conserveront leur vitesse si elle était précédemment définie, ou le cas échéant se verront attribuer une vitesse nulle. Afin de générer des vitesses avec une distribution de Maxwell-Boltzmann, il est possible d'utiliser l'option `-velocity`.

- N'importe quelle propriété auxiliaire peut être définie grâce au mot-clé "auxiliary" suivi du nom de la propriété, les lignes suivantes contenant chacune l'indice d'un atome et la valeur de la propriété pour cet atome :

  `auxiliary <propriété>
  <id1> <valeur1>
  <id2> <valeur2>
  ...`

  Ceci associera donnera la <value1> à l'atome <id1>, etc. Il est aussi possible d'assigner la même valeur de la propriété à tous les atomes d'une espèce donnée, en donnant un symbole d'espèce chimique au lieu d'un indice :

  `auxiliary <propriété>
  <espèce1> <valeur1>
  <espèce2> <valeur2>
  ...`

  De cette façon, la <propriété> prendra la <valeur1> pour tous les atomes de l'<espèce1>. Les valeurs peuvent être données pour tous les atomes, ou seulement pour certains atomes. Les atomes pour lesquels aucune valeur n'est donnée conservent toute valeur définie précédemment, ou le cas échéant seront attribués une valeur de zéro.

Et voici la liste des propriétés globales :

- Les vecteurs de boîte peuvent être définis grâce au mot-clé "supercell" :

  `supercell
  H(1,1) H(1,2) H(1,3)
  H(2,1) H(2,2) H(2,3)
  H(3,1) H(3,2) H(3,3)
  `

  Il est également possible de les définir en notation conventionnelle grâce au mot-clé "conventional" (angles en degrés):

  `conventional
  a b c
  α β γ`

  Notez que les coordonnées (cartésiennes) des atomes ne sont pas affectées, seuls les vecteurs de boîte sont modifiés.

- L'orientation cristallographique peut être définie grâce au mot-clé "orientation", suivi des orientations des axes cartésiens X,Y,Z en notation de Miller (voir comment spécifier les indices de Miller) :

  `orientation
  (hkl)X
  (hkl)Y
  (hkl)Z`

  Ces valeurs n'appliquent pas de rotation au système, elles ne font que définir l'orientation actuelle du système, quelle qu'ait été son orientation précédente (et sans vérifier si l'orientation donnée ici est correcte ou pas). Si le tenseur élastique a été défini avant cette orientation cristallographique (voir ci-dessous), alors il est pivoté pour correspondre à cette orientation.

- Le tenseur élastique peut être défini grâce au mot-clé "elastic" suivi des valeurs (6x6 array) des constantes élastiques en GPa:

  `elastic
  C11 C12 ... C16
  C21 C22 ... C26
  ... ... ...
  C61 C62 ... C66
  `

  Si le matériau est orthotrope il est également possible d'utiliser la notation de Voigt en ajoutant le mot-clé "Voigt" après "elastic":

  `elastic Voigt
  C11 C22 C33
  need not be present in the list C23 C31 C12
  C44 C55 C66
  `

  Attention : au moment où il est lu par Atomsk, ce tenseur élastique est toujours considéré comme le tenseur correspondant à l'orientation actuelle du système. Le tenseur élastique est lu sans tenir compte d'une quelconque définition précédente de l'orientation du système. Autrement dit les coefficients Cij' doivent toujours être fournis. Au contraire, si l'orientation du système est définie ou modifiée après avoir lu le tenseur élastique, alors le tenseur élastique sera pivoté pour correspondre à cette orientation.

  De façon similaire, si une option de rotation (telle que `-alignx`, `-rotate` ou `-orient`) est utilisée avant que le tenseur élastique ne soit lu, alors le tenseur élastique fourni doit correspondre au système déjà pivoté. Si une option de rotation est appelée après avoir lu le tenseur élastique, alors celui-ci sera pivoté en conséquence.

  Ces constantes élastiques sont utilisées dans l'option `-stress`, et affectent l'option `-dislocation` en activant l'utilisation de l'élasticité anisotrope pour construire des dislocations.

- De façon similaire le tenseur de complaisance peut être donné grâce au mot-clé "compliance" (valeurs en GPa-1) :

  `compliance
  S11 S12 ... S16
  S21 S22 ... S26
  ... ... ...
  S61 S62 ... S66
  `

  Il est aussi possible d'utiliser la notation de Voigt en ajoutant le mot-clé "Voigt" :

  `compliance Voigt
  S11 S22 S33
  S23 S31 S12
  S44 S55 S66
  `

  Le tenseur de complaisance sera immédiatement inversé pour obtenir le tenseur élastique. Les considérations de transformation du tenseur élastique expliquées ci-avant s'appliquent alors.

#### Défaut

Par défaut aucune propriété du système n'est définie.

#### Exemples

- `atomsk Fe.xsf -properties fer.txt cfg`

  Ceci lira le fichier `Fe.xsf` et lira les propriétés du système depuis `fer.txt`. Le résultat final sera écrit dans `Fe.cfg`.

- L'exemple ci-dessous montre comment définir les vecteurs de boîte :

  ##### nouveaux_vecteurs.txt

  `#Ceci est un commentaire
  #Définition des nouveaux vecteurs de boîte
  #a, b, c en Angstroms, angles en degrés
  conventional
  145.2 160.6 20.19
  90.0 90.0 120.0
  `

- L'exemple ci-dessous illustre comment définir des charges et des types d'atomes. Notez que deux charges sont données pour les ions oxygène, elles seront considérées comme les charges des noyaux et des nuages électroniques :

  ##### propriétés.txt

  `#Ceci est un commentaire
  #Charges des ions
  charge
  Sr 2
  Ti 4
  O 0.2 -2.2
  #Types d'atomes pour LAMMPS ou IMD
  #Notez que n'importe quel nombre peut être assigné à chaque espèce
  type
  Sr 2
  Ti 4
  O 3
  Ba 1
  `

- L'exemple ci-dessous montre comment définir une propriété appelée "mon_énergie" pour certains atomes. La première colonne est l'indice de l'atome, la seconde contient la valeur de "mon_énergie" de chaque atome. Notez que la liste ne contient pas forcément tous les atomes du système. Il n'est pas non plus obligatoire de donner les indices des atomes par ordre croissant.

  ##### energie.txt

  `#Energie par atome calculée avec mon code
  auxiliary mon_énergie
  2 -20.3
  3 -20.4
  4 -19.9
  6 -19.86
  15 -20.4
  9 -19.9
  `

- Dans l'exemple ci-dessous, des vecteurs de déplacement sont donnés pour certains atomes. L'indice de l'atome est donné, suivi des trois composantes de son déplacement suivant X, Y et Z (en Å). Notez que ces déplacements sont appliqués immédiatement au moment de leur lecture.

  ##### disp.txt

  `#Déplaçons quelques atomes
  displacements
  45 1.2 -0.4 0
  67 -6.9 2.88 -10.02
  191 0.5 -0.78 0.34
  `

- Dans l'exemple ci-dessous, les déplacements sont donnés sous forme de fonction. Chaque atome sera déplacé d'un vecteur `(ux,uy,uz)` qui dépend de ses coordonnées x, y, z. Dans cet exemple, les atomes seront déplacés uniquement suivant z, d'une distance qui dépend de leurs coordonnées x et y. Le mo-clé Hx est remplacé par la longueur du premier vecteur de boîte, et Hy par celle du second vecteur de boîte.

  ##### disp.txt

  `# Déplacements définis comme fonctions
  displacement function
  ux = 0
  uy = 0
  uz = 10*cos(4*pi*x/Hx) + 8*sin(2*pi*y/Hy) )`

- Dans le fichier "`fer.txt`" ci-dessous, le tenseur élastique est défini en premier -il est donc supposé correspondre à l'orientation cristallographique X=[100], Y=[010], Z=[001]. Puis l'orientation du système est définie, donc Atomsk va automatiquement pivoter le tenseur élastique pour obtenir les coefficients C' correspondant à la nouvelle orientation X=[110], Y=[110], Z=[001] :

  ##### fer.txt

  `# Les constantes élastiques du fer
  elastic Voigt
  243.30 243.30 243.30
  145.00 145.00 145.00
  116.10 116.10 116.10
  # L'orientation de mon cristal
  orientation
  110
  1-10
  001
  `

  Il s'agit là de la manière la plus simple d'obtenir un tenseur élastique adapté à un système donné.

- Dans l'exemple ci-dessous, l'orientation du cristal est donnée en premier. Le tenseur élastique fourni ensuite doit donc correspondre à cette orientation -souvenez-vous qu'au moment où Atomsk lit le tenseur élastique il considère toujours qu'il s'agit du tenseur adapté à l'orientation actuelle :

  ##### fer.txt

  `# L'orientation de mon cristal
  orientation
  [1_1_0]
  [1_-1_0]
  [0_0_1]
  # Les constantes élastiques C'
  elastic
  243 72.5 145 72.5 0.0 0.0
  72.5 60.8 97.1 60.8 0.0 0.0
  145 97.1 310 155 0.0 0.0
  72.5 60.8 155 89.8 0.0 0.0
  0.0 0.0 0.0 0.0 116 58.0
  0.0 0.0 0.0 0.0 58.0 58.0
  `

Retour au menu principal