-properties <fichier>
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 :
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).
ux
, uy
, uz
:displacement functions
ux = <fonction>
uy = <fonction>
uz = <fonction>
Les fonctions peuvent être composées d'opérateurs mathématiques (+, -, *, /, %, ^, e, !) ; de nombres entiers ou réels ; du mot-clé "pi" ; des mots-clés Hx, Hy, Hz, qui désignent les dimensions de la boîte suivant les axes cartésiens X, Y, Z respectivement ; des variables x, y, z, qui font référence à la position de l'atome ; et/ou de fonctions mathématiques. Les fonctions suivantes sont supportées :
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.
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.
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
.
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
.
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.
Par défaut aucune propriété du système n'est définie.
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
.
#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
#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
#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
#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
(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.
# 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) )
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] :
# 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é.
# 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