GANDALF
Le compagnon des utilisateurs et développeurs d'ABINIT.




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
A ceux-ci s'ajoutent deux exécutables (scripts) nommés gandalf.uspp et gandalf.atompaw que nous détaillerons dans le chapitre suivant. 
>> cd ../RESULTS
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.


>> 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:


>> 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.


>> 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:
OUTPUT directory created
OUTPUT/001-H directory created
  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

  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
  Generate an auto.ecut.in file in the OUTPUT/001-H directory
  Generate an auto.pawecutdg.in file in the OUTPUT/001-H directory



>> 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:
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
  --->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.


>> 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:
ATTENTION: Dans plusieurs cas les fichiers X.dat et X.tex n'ont plus aucun sens:


>> 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:
OUTPUT directory created
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
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
>> 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:
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

  --->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.


>> 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:
ATTENTION: Dans plusieurs cas les fichiers X.dat et X.tex n'ont plus aucun sens:



>> 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:
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:
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:






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