GANDALF
Le compagnon des utilisateurs et développeurs d'ABINIT.
- Pour un utilisateur:
cet utilitaire permet de débuter rapidement une étude
avec ABINIT; de la
génération du pseudo-potentiel jusqu'au calcul des premières quantités physiques, convergences ...
- Pour un développeur:
cet utilitaire permet de
tester les propiétés physiques et de convergence d'un ensemble de pseudo-potentiels (ceux-ci
provenant d'une nouvelle base de données, après modification d'un générateur ou convertisseur, ...)
- Avant toute
utilisation, il est vivement recommandé de faire les tutoriaux d'ABINIT. Ce
compagnon vous guidera un peu partout mais pas forcément sans
embûche.
1/ Caractéristiques et
installation:
L'utilitaire
est constitué
de plusieurs
scripts, chacun d'eux réalisant une action précise. Tous ces scripts peuvent être
enchaînés automatiquement, sans aucune intervention
extérieure, ou bien être exécutés indépendemment. Ils exigent cependant des arguments
(2 ou 3). Une aide est fournie à l'exécution de chacun
d'eux si le nombre d'argument n'est pas respecté. Deux scripts sont écrits en python, les autres en shell.
Cet
utilitaire présuppose un environnement de travail. Cet environnement peut être
changé et nous verrons plus tard comment faire. Dans un premier
temps, adoptons l'environnement
par défaut.
Dans un
répertoire quelconque
,
dézipper et
détarer le fichier
GANDALF.tar.gz.
>> tar xzf GANDALF.tar ; cd
GANDALF ; ls
>> cd ATOMICDATA
- 1.a
Dans un répertoire
ATOMICDATA, on trouve
quatre sous-répertoires recensant tous les inputs de données atomiques connus à ce jour, ainsi que leurs
générateurs:
- i) le répertoire Work,
base de pseudo-potentiels ultra-soft du générateur USPP
de D. Vanderbilt,
renommé USPP-ORI;
- ii) le répertoire ATOMPAW-HOLZ,
base de données atomiques du générateur ATOMPAW de
N.
Holzwarth;
- iii) le répertoire USPP-ABI,
base de données générées et
optimisées pour Abinit;
- iv) et le dernier, nommé EXECS, contenant tous les
codes/exécutables nécessaires à la
génération des données atomiques. Pour plus de
renseignement concernant la compilation ou le
téléchargement
de ces codes, consulter la page
d'accueil de PAW.
>> cd ../RESULTS
- 1.b Dans
un répertoire RESULTS,
dans lequel seront donc faits tous les calculs, on trouve deux
sous-répertoires PURE
et COMPOUNDS
séparant
ainsi les calculs faits sur les corps purs de ceux faits sur des
composés.
Ces huit scripts (ainsi que les
fichiers ref.tex
et pawecutdg.values) sont
développés/détaillés
séparément dans la section suivante.
2/ Utilisation des différents scripts:
Ceux-ci doivent être exécutés les uns après les autres
la première fois. La compréhension de leur rôle
permettra ensuite de les exécuter indépendemment.
- 2.a gandalf.uspp Celui-ci permet de générer les données atomiques uspp à partir
des inputs contenus dans les répertoires USPP-ORI et USPP-ABI. Si l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> cd ../ATOMICDATA
>> gandalf.uspp
Three arguments are needed for gandalf.uspp
The first one deals with the origin: USPP-ABI, USPP-ORI, ... ====== or
all
The second one deals with the species (the sub-directories): 001-H,
008-O, ... ====== or all
The third one deals with the xc functionnal, ... (the
sub-sub-directories): GGA-USPP-opt, LDA-USPP-vgrp... ====== or all
Si l'on ne désire générer que
certaines données
atomiques, par exemple celles de l'Hydrogène, on peux
exécuter la commande suivante:
>> gandalf.uspp all 001-H all
Ceci a pour effet de générer des données
atomiques dans cinq sous-répertoires répondant à
ce critère:
>> ls USPP-*/001-H/
USPP-ABI/001-H/:
GGA-USPP-opt
LDA-USPP-opt
USPP-ORI/001-H/:
001-H-ca--bm
001-H-gpbe--bm 001-H-gpw--campos
Les noms des
sous-sous-répertoires de USPP-ABI
sont standardisés, avec le nom de la fonctionnelle
d'échange et corrélation en premier, "USPP" en second et
"opt" en dernier. Ceux de USPP-ORI
seront modifiés à la génération pour
obéir au nouveau standard, et nous obtenons donc après
exécution trois nouveaux sous-sous-répertoires: USPP-ORI/001-H/LDA-USPP-bm, USPP-ORI/001-H/GGA-USPP-bm et USPP-ORI/001-H/GGA-USPP-campos.
Après génération, dans chacun d'eux apparaît
un répertoire Input
sauvegardant les fichiers d'input, un fichier README (si celui-ci existe) et le
fichier de données atomiques. Dans le cas de l'Hydrogène
on en obtient cinq:
>> ls
USPP-*/001-H/*/*paw
USPP-ABI/001-H/GGA-USPP-opt/H.gga.uspp-abi.opt.paw
USPP-ORI/001-H/GGA-USPP-bm/H.gga.uspp-ori.bm.paw
USPP-ORI/001-H/LDA-USPP-bm/H.lda.uspp-ori.bm.paw
USPP-ABI/001-H/LDA-USPP-opt/H.lda.uspp-abi.opt.paw
USPP-ORI/001-H/GGA-USPP-campos/H.gga.uspp-ori.campos.paw
Le format des données atomiques est totalement
standardisé avec i) le corps; ii) la fonctionnelle
d'échange et corrélation; iii) le répertoire; iv)
l'origine; v) et "paw". Après l'exécution de
gandalf.uspp, quatre fichiers sont
obtenus en sortie: deux fichiers
Directories_list_gga
et
Directories_list_lda
listant l'ensemble des données atomiques disponibles dans la
base de données, et deux fichiers
Bug_list_ori et
Bug_list_abi indiquant tout se qui
a été réalisé au cours de la
génération: les bugs bien-sûr, mais aussi diverses
approximations:
- Dans le répertoire USPP-ORI,
toutes les données atomiques ont été
générées
en remplaçant la fonctionnelle XC Perdew-Wang par une PBE;
ABINIT n'acceptant pas la fonctionnelle Perdew-Wang.
- Dans le cas LDA, même si la génération a
été faite en utilisant une fonctionnelle XC
Perdew-Zunger-Ceperley-Alder (pspxc 2), c'est une Teter-Pade
(pspxc 1) qui apparaît dans l'en-tête du fichier, le 2
ayant été remplacé par un 1. La seconde permet de
réaliser
des calculs spin-polarisés dans ABINIT alors que la
première ne le permet pas.
- 2.b gandalf.atompaw Celui-ci permet de générer les données atomiques atompaw à
partir des inputs contenus dans le répertoire ATOMPAW-HOLZ. Si l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> gandalf.atompaw
Three arguments are needed for gandalf.atompaw
The first one deals with the origin: ATOMPAW-HOLZ, ... ====== or all
The second one deals with the species (the sub-directories): 001-H,
008-O, ... ====== or all
The third one deals with the xc functionnal, ... (the
sub-sub-directories): GGA-ATOMPAW-vand, LDA-ATOMPAW-blochl... ====== or
all
Si l'on ne désire générer que
certaines données
atomiques, par exemple celles de l'Hydrogène, on peux
exécuter la commande suivante:
>> gandalf.atompaw all 001-H all
Ceci a pour effet de générer des données
atomiques dans quatre sous-répertoires répondant à
ce critère:
>> ls
ATOMPAW-HOLZ/001-H/
GGA-ATOMPAW-blochl GGA-ATOMPAW-vand
LDA-ATOMPAW-blochl LDA-ATOMPAW-vand
Les noms des
sous-sous-répertoires de ATOMPAW-HOLZ
sont standardisés, avec le nom de la fonctionnelle
d'échange et
corrélation en premier, "ATOMPAW" en second et "vand" ou
"blochl" en dernier. Les sous-sous-répertoires "vand" sont
(re)créés
à la génération à partir de ceux de
"blochl". Les fichiers de données atomiques diffèrent
alors par le shema de pseudisation employé: shema "à la
Vanderbilt" ou "à la Blöchl". Après
génération, dans chacun d'eux apparaît un
répertoire Input
sauvegardant le fichier d'input, un fichier README (si celui-ci existe) et le
fichier de données atomiques. Dans le cas de l'Hydrogène
on en obtient quatre:
>> ls
ATOMPAW-HOLZ/001-H/*/*paw
ATOMPAW-HOLZ/001-H/GGA-ATOMPAW-blochl/H.gga.atompaw-holz.blochl.paw
ATOMPAW-HOLZ/001-H/LDA-ATOMPAW-blochl/H.lda.atompaw-holz.blochl.paw
ATOMPAW-HOLZ/001-H/GGA-ATOMPAW-vand/H.gga.atompaw-holz.vand.paw
ATOMPAW-HOLZ/001-H/LDA-ATOMPAW-vand/H.lda.atompaw-holz.vand.paw
Le format des données atomiques est totalement
standardisé avec i) le corps; ii) la
fonctionnelle d'échange et corrélation; iii) le
répertoire; iv)
l'origine; v) et "paw". Après l'exécution de
gandalf.atompaw, deux fichiers sont
obtenus en sortie:
Directories_list_gga
et
Directories_list_lda.
Ceux-ci listent l'ensemble des données atomiques disponibles
dans la base de données. Il reste à créer un
fichier
Bug_list_holz
indiquant tout se qui a été réalisé au
cours de la génération.
- 2.c gandalf.copy
Celui-ci prépare le travail à réaliser sur les
corps purs avant qu'ABINIT ne soit exécuté. Si
l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> cd ../RESULTS/PURE
>> gandalf.copy
Three arguments are needed for gandalf.copy
The first one deals with the input file: ecut, atom, dimer, fcc, bcc,
diamond, ... ====== or none, all
The second one deals with the species: 001-H, 008-O, .... ====== or all
The third one deals with the atomic data: H.gga.uspp-abi.opt.paw, ...
====== or atompaw-holz, uspp-ori... ====== or none, all
Si l'on désire prépararer
tous les calculs
possibles sur l'Hydrogène, alors on peut exécuter la commande suivante:
>> gandalf.copy all 001-H all
Ceci a pour effet de:
- créer un répertoire OUTPUT (si celui-ci n'existait
pas avant).
OUTPUT directory
created
- créer un sous-répertoire OUTPUT/001-H (si celui-ci n'existait
pas avant).
OUTPUT/001-H
directory created
- copier/installer dans le sous-répertoire OUTPUT/001-H tous les fichiers de
données atomiques
contenus dans la base de données ATOMICDATA. Ceci est fait pour
chaque sous-répertoire de ATOMICDATA.
Copy
the
../../ATOMICDATA/ATOMPAW-HOLZ/001-H/GGA-ATOMPAW-vand/H.gga.atompaw-holz.vand.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/ATOMPAW-HOLZ/001-H/LDA-ATOMPAW-vand/H.lda.atompaw-holz.vand.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/ATOMPAW-HOLZ/001-H/LDA-ATOMPAW-blochl/H.lda.atompaw-holz.blochl.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/ATOMPAW-HOLZ/001-H/GGA-ATOMPAW-blochl/H.gga.atompaw-holz.blochl.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/USPP-ORI/001-H/GGA-USPP-bm/H.gga.uspp-ori.bm.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/USPP-ORI/001-H/GGA-USPP-campos/H.gga.uspp-ori.campos.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/USPP-ORI/001-H/LDA-USPP-bm/H.lda.uspp-ori.bm.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/USPP-ABI/001-H/GGA-USPP-opt/H.gga.uspp-abi.opt.paw
atomic data in the OUTPUT/001-H directory
Copy the
../../ATOMICDATA/USPP-ABI/001-H/LDA-USPP-opt/H.lda.uspp-abi.opt.paw
atomic data in the OUTPUT/001-H directory
- copier/installer dans le sous-répertoire OUTPUT/001-H tous les inputs
contenus dans le sous-répertoire INPUT/001-H.
Copy
the INPUT/001-H/atom.in file in the OUTPUT/001-H directory
Copy the INPUT/001-H/dimer.in file in the OUTPUT/001-H directory
Copy the INPUT/001-H/fcc.in file in the OUTPUT/001-H directory
- créer dans
OUTPUT/001-H deux fichiers auto.ecut.in et auto.pawecutdg.in
qui n'existaient pas
dans INPUT/001-H. Ces derniers
ont été générés automatiquement par le
script gandalf.copy. Ils seront utilisés
pour l'étude de convergence en cutoff (sur la grille
grossière et la grille fine). Cette génération automatique
peut-être évitée (si on le désire) en modifiant dans le script gandalf.copy
la
valeur de la variable AUTOMATICCUTOFFINPUT.
Generate an auto.ecut.in file in the OUTPUT/001-H directory
Generate an auto.pawecutdg.in file in the OUTPUT/001-H directory
- 2.d gandalf.abinit
Celui-ci exécute
le travail que gandalf.copy
a pu préparer. Si
l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> gandalf.abinit
Three arguments are needed for gandalf.abinit
The first one deals with the input file: ecut, atom, dimer, fcc, bcc,
diamond, ... ====== or all
The second one deals with the species: 001-H, 008-O, .... ====== or all
The third one deals with the atomic data: H.gga.uspp-abi.opt.paw, ...
====== or atompawi-holz, uspp-ori... ====== or all
Si l'on désire
lancer tous
les calculs possibles sur l'Hydrogène, alors on peut exécuter la commande suivante:
>> gandalf.abinit all 001-H all
Pour chaque donnée
atomique du sous-répertoire OUTPUT/001-H, ceci a pour effet
de:
- démarer
l'exécution
par un calcul de convergence en "ecut" (grille grossière). A la
fin de celui-ci, le script estime une valeur raisonnable du "ecut";
i.e.: une valeur du cutoff permettant d'avoir une erreur sur
l'énergie totale inférieure à 1 mHa. Cette valeur
est alors utilisée dans tous les calculs qui suivent. Si on
désire
désactiver cette détermination (et utilisation) du "ecut"
à convergence il faut alors modifer dans le script gandalf.abinit la valeur de la variable
CONVERGEDCALCULATION.
Copy the
H.gga.uspp-abi.opt.paw filename in the all.files file
Launching ABINIT in the OUTPUT/001-H directory with the ecut.in
input file
ABINIT code successfully terminated
Copy the all.out standard output to
H.gga.uspp-abi.opt.paw.ecut.out
- éventuellement poursuivre l'exécution par un
calcul de convergence en "pawecutdg" (grille fine), si la valeur de la
variable FINDPAWECUTDG a été modifiée dans le
script. A la fin de celui-ci, un "pawecutdg" correspondant à une
erreur de 0.05 mHa sur l'énergie totale est
déterminé. La valeur du "pawecutdg" à convergence
est alors utilisée dans tous les calculs qui suivent. ATTENTION:
voir gandalf.extract
pour les limitations.
- poursuivre l'exécution en utilisant tous les autres
fichiers d'inputs présents dans le sous-répertoire OUTPUT/001-H, ainsi que la valeur du
"ecut" (et du "pawecutdg") à convergence.
--->The coarse (fine) grid cutoff parameter ecut (pawecutdg) is
adjusted to 10.0 (20)
Launching ABINIT in the OUTPUT/001-H directory with the atom.in
input file
ABINIT code successfully terminated
Copy the all.out standard output to
H.gga.uspp-abi.opt.paw.atom.out
--->The coarse (fine) grid cutoff parameter ecut (pawecutdg)
is adjusted to 10.0 (20)
Launching ABINIT in the OUTPUT/001-H directory with the dimer.in
input file
ABINIT code successfully terminated
Copy the all.out standard output to
H.gga.uspp-abi.opt.paw.dimer.out
--->The coarse (fine) grid cutoff parameter ecut (pawecutdg)
is adjusted to 10.0 (20)
Launching ABINIT in the OUTPUT/001-H directory with the fcc.in
input file
ABINIT code successfully terminated
Copy the all.out standard output to
H.gga.uspp-abi.opt.paw.fcc.out
Les calculs "atom", "dimer", "fcc" ... n'ont pas de
spécificités particulières. Ces calculs permettent
de déterminer l'énergie de l'atome isolé, la
distance interatomique du dimère, la courbe
énergie-volume de la phase fcc ... En revanche, ceux ne
possédant pas une cellule cubique (i.e.: un paramètre de
maille c différent de a) sont plus complexes. En effet, ils
présentent deux fichiers d'input: ("opthcp"; "hcp"), ("optdhcp",
"dhcp") ... Le premier calcul permet alors de déterminer le
rapport c/a, et le suivant, la variation de l'énergie en
fonction du volume. Si la valeur de la variable OPTIMIZECOVERA a
été modifiée dans le script, alors le rapport c/a
déterminé dans le premier calcul est utilisé dans
le second.
ATTENTION:
voir
gandalf.extract
pour les limitations.
La convention adoptée pour la
notation
des noms d'output est
dévellopée par ailleurs.
- 2.e gandalf.extract Celui-ci
extrait le travail réalisé par gandalf.abinit.
Si
l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> gandalf.extract
Three arguments are needed:
The first one deals with the input file: ecut, atom, dimer, fcc, bcc,
diamond, ... ====== or all
The second one deals with the species: 001-H, 008-O, .... ====== or all
The third one deals with the atomic data: H.gga.uspp-abi.opt.paw, ...
====== or atompaw-holz, uspp-ori... ====== or all
Si l'on d
ésire
extraire tous
les calculs réalisés
précédemment par
gandalf.abinit sur l'Hydrogène, alors on peut exécuter la commande suivante:
>> gandalf.extract all 001-H all
Pour chaque input "X" du sous-répertoire OUTPUT/001-H, ceci a pour effet
de:
- créer un fichier data X.dat
avec en abscisse (première colonne) le cutoff/volume et en
ordonnée (colonnes suivantes) la différence
d'énergie (Etot-Emin). N'ont pas de sortie X.dat les inputs "atom" et "dimer".
- créer un fichier latex X.tex
avec à chaque ligne le nom de l'output et les quantités
d'équilibre calculées. Deux parenthèses sont
accolées au nom de l'output: la première indique les
cutoff utilisés ("ecut", pawecutdg") et la seconde les temps de
calcul (cpu, wall). N'ont pas de sortie X.tex les inputs "atom", "ecut" et
"pawecutdg".
- Pour les calculs d'énergie-volume, les
quantités
d'équilibre sont issues d'un fit de Birch-Murnaghan et sont dans
l'ordre: volume par atome, énergie de cohésion, bulk
modulus et sa dérivée (plus le c/a d'équilibre si
la structure est "hcp", dhcp" ...).
- Pour les calculs de dimère, les quantités
d'équilibre
sont déterminées simplement et sont dans l'ordre:
énergie de liaison et distance interatomique.
ATTENTION:
Dans plusieurs cas les fichiers X.dat
et X.tex n'ont plus aucun
sens:
- Lors d'un calcul de convergence en "pawecutdg", le script gandalf.abinit utilise comme point de
départ le "ecut"
à convergence. Les valeurs contenues dans le
fichier pawecutdg.values sont
alors ensuite lues. Si plusieurs données atomiques sont
utilisées, ce point de départ n'a aucune raison
d'être le même pour toutes. Les calculs n'étant
alors plus faits aux mêmes points, cela devient faux d'associer
aux différents calculs les mêmes abscisses. En conclusion,
les fichiers pawecutdg.dat ne doivent plus être
utilisés lorsqu'il y a plus d'une donnée atomique.
- Lors
d'un calcul de courbe énergie-volume pour une cellule non
cubique ("hcp", "dhcp" ...) deux cas peuvent se présenter:
- Si la
variable OPTIMIZECOVERA a été modifiée dans le
script gandalf.abinit, le rapport
c/a obtenu pour chaque donnée atomique ("opthcp", "optdhcp" ...)
est alors utilisé pour déterminer les paramètres
de mailles c et a. Les calculs n'étant alors plus faits aux
mêmes points, cela devient faux d'associer aux
différents
calculs les mêmes abscisses. En conséquence, les fits de
Birch-Murnaghan ne sont plus valides (fichiers hcp.tex, dhcp.tex ...) et les fichiers hcp.dat, dhcp.dat ... ne doivent plus
être utilisés lorsqu'il y a plus d'une donnée
atomique.
- Si la
variable OPTIMIZECOVERA n'a pas été modifiée ,
tout fonctionne normalement.
- 2.f
gandalf.copy.compounds
Celui-ci prépare le travail à réaliser sur les
composés avant qu'ABINIT ne soit exécuté. Si
l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>>
cd ../COMPOUNDS
>>
gandalf.copy.compounds
Three
arguments are needed for gandalf.copy.compounds
The first one
deals with the input file: ecut, molec, molec2, rutile, fluorite, ...
====== or none, all
The second
one deals with the compounds: CO2, BaTiO3, ... ====== or all
The third one
deals with the atomic data: uspp-abi, uspp-ori, atompaw-holz... ======
or none, all
Si l'on désire prépararer
tous les calculs
possibles sur H2O, alors on peut exécuter la commande suivante:
>> gandalf.copy.compounds
all H2O all
Ceci a pour effet de:
- créer un répertoire OUTPUT (si celui-ci n'existait
pas avant).
OUTPUT
directory created
- créer un sous-répertoire OUTPUT/H2O (si celui-ci
n'existait
pas avant).
OUTPUT/H2O
directory created
Copy
the ../../ATOMICDATA/ATOMPAW-HOLZ/*-H/*/*.paw atomic data in the
OUTPUT/H2O directory
Copy the ../../ATOMICDATA/ATOMPAW-HOLZ/*-O/*/*.paw atomic data in the
OUTPUT/H2O directory
Copy the ../../ATOMICDATA/USPP-ORI/*-H/*/*.paw atomic data in the
OUTPUT/H2O directory
Copy the ../../ATOMICDATA/USPP-ORI/*-O/*/*.paw atomic data in the
OUTPUT/H2O directory
Copy the ../../ATOMICDATA/USPP-ABI/*-H/*/*.paw atomic data in the
OUTPUT/H2O directory
Copy the ../../ATOMICDATA/USPP-ABI/*-O/*/*.paw atomic data in the
OUTPUT/H2O directory
- copier/installer dans le sous-répertoire OUTPUT/H2O tous les inputs contenus
dans le sous-répertoire INPUT/H2O.
Copy the
INPUT/H2O/ecut.in file in the OUTPUT/H2O directory
Copy the INPUT/H2O/molec.in file in the OUTPUT/H2O directory
>> gandalf.abinit.compounds
Three arguments are needed for gandalf.abinit.compounds
The first one deals with the input file: ecut, molec, molec2, rutile,
fluorite, ... ====== or all
The second one deals with the compounds: CO2, BaTiO3, ... ====== or all
The third one deals with the atomic data: uspp-ori, uspp-abi,
atompaw-holz, ... ====== or all
Si l'on désire
lancer tous
les calculs possibles sur H2O, alors on peut exécuter la commande suivante:
>> gandalf.abinit.compounds all H2O all
Pour chaque paire O
et H de données atomiques (même fonctionnelle
d'échange
et corrélation et même origine "uspp-ori", "uspp-abi" ou
"atompaw-holz", voir
gandalf.copy.compounds) du
sous-répertoire
OUTPUT/H2O,
ceci a pour effet
de:
- démarer
l'exécution par un calcul de convergence en "ecut" (grille
grossière). A la fin de celui-ci, le script estime une valeur
raisonnable du "ecut"; i.e.: un cutoff permettant d'avoir une erreur
sur l'énergie totale inférieure à 1 mHa. Cette
valeur est alors utilisée dans
tous les calculs qui suivent. Si on désire désactiver
cette détermination (et utilisation) du "ecut" à
convergence il faut alors modifer dans le script gandalf.abinit.compounds la
valeur de la variable CONVERGEDCALCULATION.
Copy the
./H.lda.uspp-abi.opt.paw and ./O.lda.uspp-abi.ntcore.paw filenames in
the all.files file
Launching ABINIT in the OUTPUT/H2O directory with the ecut.in
input file
ABINIT code successfully terminated.
Copy
the all.out standard output to H2O.Hopt.Ontcore.lda.uspp-abi.ecut.out
- éventuellement poursuivre l'exécution par
un calcul de convergence en
"pawecutdg" (grille fine), si la valeur de la variable FINDPAWECUTDG a
été modifiée dans le script. A la fin de celui-ci,
un "pawecutdg"
correspondant à une erreur de 0.05 mHa sur l'énergie
totale est
déterminé. La valeur du "pawecutdg" à convergence
est alors utilisée
dans tous les calculs qui suivent. ATTENTION:
voir gandalf.extract.compounds
pour les limitations.
- poursuivre l'exécution en utilisant tous les
autres fichiers d'inputs présents dans le sous-répertoire
OUTPUT/001-H, ainsi que
la valeur du "ecut" (et du "pawecutdg") à convergence.
--->The coarse (fine) grid cutoff parameter ecut (pawecutdg) is
adjusted to 20.0 (40)
Launching ABINIT in the OUTPUT/H2O directory with the molec.in
input file
ABINIT code successfully terminated.
Copy the all.out standard output to
H2O.Hopt.Ontcore.lda.uspp-abi.molec.out
Les calculs "molec", "zincblende" ...
n'ont pas de spécificités
particulières. Ces calculs permettent de déterminer les
distances interatomiques à l'intérieur de la
molécule,
la courbe
énergie-volume de la phase zincblende ... En revanche, ceux ne
possédant pas
une cellule cubique (i.e.: un paramètre de maille c
différent de a)
sont plus complexes. En effet, ils présentent deux fichiers
d'input:
("optrutile"; "rutile") ... Le premier calcul permet
alors de déterminer le rapport c/a, et le suivant, la variation
de
l'énergie en fonction du volume. Si la valeur de la variable
OPTIMIZECOVERA a été modifiée dans le script,
alors le rapport c/a
déterminé dans le premier calcul est utilisé dans
le second.
ATTENTION:
voir
gandalf.extract.compounds
pour les limitations.
La convention adoptée pour la
notation des noms d'output est
dévellopée par ailleurs.
- 2.h gandalf.extract.compounds
Celui-ci
extrait le travail réalisé par gandalf.abinit. Si
l'on exécute ce script sans argument, on
obtient une aide nous indiquant les différents
arguments possibles:
>> gandalf.extract.compounds
Three arguments are needed:
The first one deals with the input file: ecut, molec, rutile, fluorite,
... ====== or all
The second one deals with the species: CO2, BaTiO3, .... ====== or all
The third one deals with the atomic data: uspp-abi, uspp-ori,
atompaw-holz, ... ====== or all
Si l'on d
ésire
extraire tous
les calculs réalisés
précédemment par
gandalf.abinit.compounds
sur H2O, alors on peut exécuter la commande suivante:
>> gandalf.extract.compounds
all H2O all
Pour chaque input
"X" du sous-répertoire OUTPUT/H2O, ceci a pour effet
de:
- créer un fichier data X.dat
avec en abscisse (première colonne) le cutoff/volume et en
ordonnée (colonnes suivantes) la différence
d'énergie (Etot-Emin). N'ont pas de sortie X.dat les inputs "molec" et
"molec2".
- créer un fichier latex X.tex
avec à chaque ligne le nom de l'output et les quantités
d'équilibre calculées. Deux parenthèses sont
accolées au nom de l'output: la première indique les
cutoff utilisés ("ecut", pawecutdg") et la seconde les temps de
calcul (cpu, wall). N'ont pas de sortie X.tex les inputs "atom", "ecut" et
"pawecutdg".
- Pour les calculs d'énergie-volume, les
quantités
d'équilibre sont issues d'un fit de Birch-Murnaghan et sont dans
l'ordre: volume par atome, énergie de cohésion, bulk
modulus et sa dérivée (plus le c/a d'équilibre si
la structure est "rutile", ...).
- Pour les calculs de molécule, les quantités
d'équilibre
sont déterminées simplement et sont dans l'ordre:
énergie de liaison et distances interatomiques.
ATTENTION:
Dans plusieurs cas les fichiers X.dat
et X.tex n'ont plus aucun
sens:
- Lors d'un calcul de convergence en "pawecutdg", le script gandalf.abinit.compounds
utilise comme point de
départ le "ecut"
à convergence. Les valeurs contenues dans le
fichier pawecutdg.values sont
alors ensuite lues. Si plusieurs données atomiques sont
utilisées, ce point de départ n'a aucune raison
d'être le même pour toutes. Les calculs n'étant
alors plus faits aux mêmes points, cela devient faux d'associer
aux différents calculs les mêmes abscisses. En conclusion,
les fichiers pawecutdg.dat ne
doivent plus être
utilisés lorsqu'il y a plus d'une donnée atomique.
- Lors
d'un calcul de courbe énergie-volume pour une cellule non
cubique ("rutile", ...) deux cas peuvent se présenter:
- Si la
variable OPTIMIZECOVERA a été modifiée dans le
script gandalf.abinit.compounds,
le rapport
c/a obtenu pour chaque donnée atomique ("optrutile", ...)
est alors utilisé pour déterminer les paramètres
de mailles c et a. Les calculs n'étant alors plus faits aux
mêmes points, cela devient faux d'associer aux
différents
calculs les mêmes abscisses. En conséquence, les fits de
Birch-Murnaghan ne sont plus valides (fichiers rutile.tex, ...) et les fichiers rutile.dat, ... ne doivent plus
être utilisés lorsqu'il y a plus d'une donnée
atomique.
- Si la
variable OPTIMIZECOVERA n'a pas été modifiée ,
tout fonctionne normalement.
>> cd ..
>> gandalf.xmgrace
Two arguments are needed for gandalf.xmgrace
The first one deals with the input file: ecut, fcc, diamond, ...
keywords of pure materials ======
or ecut, fluorite, zincblende, ... keywords of compounds ======
or all
The second one deals with the subdirectories: 001-H, CO2, .... for pure
materials or compounds ====== or all
Si l'on désire obtenir cette visualisation pour
l'Hydrogène, alors on peut exécuter la commande suivante:
>> gandalf.xmgrace all 001-H
Pour chaque
fichier X.dat du
sous-sous-répertoire
PURE/OUTPUT/001-H,
ceci a pour effet
de:
- lancer XMGRACE et d'obtenir les courbes énergie-volume
ou de convergence énergie-cutoff.
- une fois sorti de XMGRACE, un fichier X.agr est alors sauvegardé
avec un format bien précis: légendes, labels, titre ...
Si l'on désire visualiser des
fichiers X.agr déjà obtenus, il faut alors modifier la
valeur de la variable INTERNALOPTION dans le script.
>>
gandalf.tex2ps
Two arguments are needed for
gandalf.tex2ps
The first one deals with the input file: dimer, fcc, diamond, ...
phases of pure materials ======
or molec, fluorite, zincblende, ... structures of compounds
====== or all
The second one deals with the subdirectories: 001-H, CO2, .... for pure
materials or compounds ====== or all
Si l'on désire obtenir ce document pour
l'Hydrogène, alors on peut exécuter la commande suivante:
>> gandalf.tex2ps all 001-H
Ceci a pour effet
de:
- introduire dans chaque fichier X.tex du
sous-sous-répertoire PURE/OUTPUT/001-H
les références du fichier ref.tex (si elles existent).
- concaténer les différents fichiers X.tex et les insérer dans un
fichier temporaire all.tex
- convertir les différents fichiers X.agr en X.eps et les insérer dans le fichier temporaire all.tex
- compiler ce fichier latex all.tex
ainsi que le fichier biblio all.bib
- lancer GHOSTVIEW pour visualiser ce fichier all.ps
- sauver ce postcript dans le fichier rapport.ps
Si l'on désire créer une
page web à
partir de ces résultats, il faut alors modifier la valeur de la
variable HTML dans le script. Une page html est alors
créée pour chaque élément ou composé
avec tous les tableaux et courbes ainsi qu'un lien vers le fichier PURE/OUTPUT/001-H pour visualiser,
si on le désire, les fichiers input, output et données
atomiques.
3/ Gandalf, un utilitaire évolutif:
- 4.a la notation:
Dans chacun des deux sous-répertoires PURE et COMPOUNDS, les
noms des éléments (001-H, 008-O, ...), des
composés (CO2, TiO2, BaTiO3 ...) et des inputs d'ABINIT
(he.atom.in, fe.bcc.in, tio2.rutile.in, co.molec.in, ...) sont tous
standardisés. Il est donc possible d'ajouter un nouvel
élément, composé (binaire ou ternaire) ou
input....
- Pour un élement ou composé, rien de plus simple:
créer un sous-sous-répertoire PURE/INPUT/XXX-X ou
COMPOUNDS/INPUT/AxByCz et y placer les fichiers d'input
adéquats.
Le reste est automatique (détermination des
éléments,
de leur nombre ...)
- Pour un nouveau type d'input, il faudra modifier les scripts
pour qu'ils acceptent ce nouveau type. Il est conseillé pour
cela de s'inspirer d'un exemple déjà existant. Si c'est
une phase cubique à quatre éléments, s'inspirer du
type "diamond". Si c'est une phase tétragonale avec un
paramètre de maille c différent de a, s'inspirer du type
"hcp".
- 4.b l'environnement:
Celui-ci peut évidemment être modifié à
souhait. On peut par exemple utiliser une base de données
atomiques commune. Il faut pour cela changer les chemins dans les
en-têtes de certains scripts...
François
Bottin, François Jollet et Marc
Torrent
le 17 Février 2006
Département
de Physique Théorique et Appliquée
CEA-DAM
Ile-de-France – BP 12
91680
Bruyères-le-Chatel cedex
France