Exécution de VASP

VASP est disponnible en plusieurs version :

  • séquentielle : version monoprocessus
  • MPI : version parallèle reposant sur la libraire Message Passing Interface
  • Gamma point only : une version optimisée pour des calculs avec un seul point k

La parallélisation de VASP n'est pas l'objet de ce TP. Nous allons simplement voir ici comment exécuter VASP et décrire le contenu de la sortie standard.

Rendez vous dans le dossier Li/.

Simple calcul d'énergie

Faisons un simple calcul d'énergie avec une version séquentielle de VASP.

Fichiers d'entrée

INCAR

Li metal
  SYSTEM = "Li bcc"
Electronic
  PREC = Accurate
  EDIFF = 1e-6
  ENCUT = 400

Ionic relaxation
  NSW = 0

smearing
  ISMEAR = 1
  SIGMA = 0.2

Fichier POSCAR

Il s'agit d'une maille cubique centrée.

Li metal bcc
 3.51
  1.00   0.00   0.00
  0.00   1.00   0.00
  0.00   0.00   1.00
  Li
  2
Direct
    0.0   0.0   0.0
    0.5   0.5   0.5

Fichier KPOINTS

grille 6x6x6
0
Gamma
 6 6 6
 0 0 0

Fichier POTCAR

Les fichiers POTCAR sont fournis par VASP. Sur pyrene ils sont accessibles via le chargement d'un module qui établie une variable d'environement pointant vers le dossier contenant les pseudopotentiels. Chaque fichier POTCAR est enregistré dans un dossier du nom de l'élément

# gvallver@pyrene  ~/VASP/tutorial/Li/ > module load pseudoVASP/paw/PBE

# gvallver@pyrene  ~/VASP/tutorial/Li/ > ls $PAWROOT
Ac        Ba_sv_GW  Cd_pv_GW  Cr_sv      Fe_GW     Ge_d_GW   Hf        Kr_GW     Mn_pv       N_GW      P        Pt_pv_GW          Ru_pv     Sn        Ti_sv     Y_sv_GW
Ag        Be        Cd_sv_GW  Cr_sv_GW   Fe_pv     Ge_GW     Hf_pv     K_sv      Mn_sv       N_GW_new  Pa       Pt_sv_GW          Ru_pv_GW  Sn_d      Ti_sv_GW  Zn
Ag_GW     Be_GW     Ce        C_s        Fe_sv     Ge_h      Hf_sv     K_sv_GW   Mn_sv_GW    N_h       Pa_s     Pu                Ru_sv     Sn_d_GW   Tl        Zn_GW
Ag_pv     Be_sv     Ce_3      Cs_sv      Fe_sv_GW  Ge_sv_GW  Hf_sv_GW  La        Mo          Ni        Pb       Pu_s              Ru_sv_GW  Sr_sv     Tl_d      Zn_pv_GW
Al        Be_sv_GW  Ce_GW     Cs_sv_GW   F_GW      H         Hg        La_s      Mo_pv       Ni_GW     Pb_d     Ra_sv             S         Sr_sv_GW  Tm        Zn_sv_GW
Al_GW     B_GW      Ce_h      Cu         F_GW_new  H1.25     H_GW      Li        Mo_sv       Ni_pv     Pb_d_GW  Rb_pv             Sb        Ta        Tm_3      Zr_sv
Al_sv_GW  B_h       C_GW      Cu_GW      F_h       H1.33     H_h       Li_AE_GW  Mo_sv_GW    Ni_sv_GW  Pd       Rb_sv             Sb_d_GW   Ta_pv     U         Zr_sv_GW
Am        Bi        C_GW_new  Cu_pv      Fr_sv     H1.5      H_h_GW    Li_GW     N           Np        Pd_GW    Rb_sv_GW          Sb_GW     Ta_sv_GW  U_s
Ar        Bi_d      C_h       Cu_pv_GW   F_s       H1.66     Ho        Li_sv     Na          Np_s      Pd_pv    Re                Sc        Tb        V
Ar_GW     Bi_d_GW   Cl        data_base  Ga        H1.75     Ho_3      Li_sv_GW  Na_pv       N_s       P_GW     README.UPDATES    Sc_sv     Tb_3      V_pv
As        Bi_GW     Cl_GW     Dy         Ga_d      H.25      H_s       Lu        Na_sv       N_s_GW    P_h      RELEASE_NOTE.txt  Sc_sv_GW  Tc        V_sv
As_d      Br        Cl_h      Dy_3       Ga_d_GW   H.33      I         Lu_3      Na_sv_GW    O         Pm       Re_pv             Se        Tc_pv     V_sv_GW
As_GW     Br_GW     Cm        Er         Ga_GW     H.42      I_GW      Mg        Nb_pv       O_GW      Pm_3     Re_sv_GW          Se_GW     Tc_sv     W
At        B_s       Co        Er_2       Ga_h      H.5       In        Mg_GW     Nb_sv       O_GW_new  Po       Rh                S_GW      Tc_sv_GW  W_pv
At_d      C         Co_GW     Er_3       Ga_pv_GW  H.58      In_d      Mg_pv     Nb_sv_GW    O_h       Po_d     Rh_GW             S_h       Te        W_sv_GW
Au        Ca_pv     Co_pv     Eu         Ga_sv_GW  H.66      In_d_GW   Mg_pv_GW  Nd          Os        Pr       Rh_pv             Si        Te_GW     Xe
Au_GW     Ca_sv     Co_sv     Eu_2       Gd        H.75      Ir        Mg_sv     Nd_3        O_s       Pr_3     Rh_pv_GW          Si_GW     Th        Xe_GW
Au_pv_GW  Ca_sv_GW  Co_sv_GW  Eu_3       Gd_3      H_AE      Ir_sv_GW  Mg_sv_GW  Ne          O_s_GW    Pt       Rh_sv_GW          Si_sv_GW  Th_s      Yb
B         Cd        Cr        F          Ge        He        K_pv      Mn        Ne_GW       Os_pv     Pt_GW    Rn                Sm        Ti        Yb_2
Ba_sv     Cd_GW     Cr_pv     Fe         Ge_d      He_GW     Kr        Mn_GW     Ne_GW_soft  Os_sv_GW  Pt_pv    Ru                Sm_3      Ti_pv     Y_sv

# gvallver@pyrene  ~/VASP/tutorial/Li/ > cp $PAWROOT/Li/POTCAR .

Le fichier POTCAR est lisible vous pouvez l'ouvrir pour voir les informations qu'il contient.

Résultats du calcul

Pour ce premier calcul très rapide, nous allons directement exécuter VASP dans le terminal. Pour cela nous allons démarrer une session interactive sur un nœud de calcul avec la commande salloc.

# gvallver@pyrene  ~/VASP/tutorial/Li/ > salloc
salloc: Granted job allocation 944207
srun: Job step created

Il faut ensuite charger le module vasp. Par défaut c'est le module vasp/5.3.5/openmpi/1.6.5 qui se charge :

# gvallver@pyrene  ~/VASP/tutorial/Li/ > module load vasp/5.3.5/openmpi/1.6.5

# gvallver@pyrene  ~/VASP/tutorial/Li/ > module list
Currently Loaded Modulefiles:
  1) intel/15.0                 2) openmpi/1.6.5/intel/15.0   3) vasp/5.3.5/openmpi/1.6.5

Lancer ensuite le programme VASP, voici le contenu du terminal :

# gvallver@pyrene  ~/VASP/tutorial/Li/ > vasp
 vasp.5.3.2 13Sep12 (build Nov 15 2012 16:01:14) complex

 POSCAR found type information on POSCAR  Li
 POSCAR found :  1 types and       2 ions
 LDA part: xc-table for Pade appr. of Perdew
 POSCAR, INCAR and KPOINTS ok, starting setup
 FFT: planning ...
 WAVECAR not read
 entering main loop
       N       E                     dE             d eps       ncg     rms          rms(c)
DAV:   1    -0.340959690341E+01   -0.34096E+01   -0.62201E+02   110   0.209E+02
DAV:   2    -0.388000344554E+01   -0.47041E+00   -0.43893E+00   150   0.935E+00
DAV:   3    -0.388586759537E+01   -0.58641E-02   -0.58119E-02   115   0.983E-01
DAV:   4    -0.388587563856E+01   -0.80432E-05   -0.80431E-05   160   0.427E-02
DAV:   5    -0.388587564076E+01   -0.22027E-08   -0.21730E-08   110   0.828E-04    0.191E-01
DAV:   6    -0.388442410915E+01    0.14515E-02   -0.41838E-05   140   0.420E-02    0.125E-01
DAV:   7    -0.388352943654E+01    0.89467E-03   -0.11246E-04   100   0.735E-02    0.573E-03
DAV:   8    -0.388350888296E+01    0.20554E-04   -0.12835E-06   120   0.641E-03    0.226E-03
DAV:   9    -0.388350495574E+01    0.39272E-05   -0.38949E-07    65   0.405E-03    0.857E-05
DAV:  10    -0.388350498301E+01   -0.27276E-07   -0.14588E-08    50   0.658E-04
   1 F= -.38835050E+01 E0= -.38829691E+01  d E =-.160766E-02
 writing wavefunctions

Dans ce simple calcul d'énergie on observe :

  • La convergence de l'énergie en accord avec EDIFF, colonne 4 et 5
  • L'algorithme de minimisation, DAV, pour davidson.
  • L'énergie totale sur la dernière ligne
  • Des informations diverses : géométrie, fonctionnelle, lecture/écriture des fichiers ...

Optimisation de géométrie

Nous allons maintenant optimiser la géométrie.

Fichiers inputs

Changer légèrement le fichier POSCAR (le paramètre de maille et une position par exemple) et modifier le fichier INCAR de la façon suivante :

Li metal
  SYSTEM = "Li bcc"
Electronic
  PREC = Accurate
  EDIFF = 1e-6
  ENCUT = 400
  NELMIN = 6

Ionic relaxation
  NSW = 40
  ISIF = 3
  EDIFFG = -0.01
  IBRION = 2

smearing
  ISMEAR = 1
  SIGMA = 0.2

La partie concernant la relaxation de la géométrie a été modifiée. Vous pourrez consulter le Wiki des mots clefs pour voir en détail la signification de ces options. En quelques mots :

  • NSW est le nombre maximum d'itérations
  • ISIF désigne les paramètres géométriques qui seront relaxés
  • EDIFFG est le seuil de convergence sur la géométrie
  • IBRION est l'algorithme utilisé pour l'optimisation

Résultats du calcul

Voici le contenu du terminal, les itérations intermédiaires ont été suprimées :

# gvallver@pyrene  ~/VASP/tutorial/Li/ > vasp
 running on    1 total cores
 distrk:  each k-point on    1 cores,    1 groups
 distr:  one band on    1 cores,    1 groups
 using from now: INCAR
 vasp.5.3.5 31Mar14 (build Apr 22 2015 22:40:07) complex

 POSCAR found type information on POSCAR  Li
 POSCAR found :  1 types and       2 ions
 scaLAPACK will be used
 LDA part: xc-table for Pade appr. of Perdew
 POSCAR, INCAR and KPOINTS ok, starting setup
 WARNING: small aliasing (wrap around) errors must be expected
 FFT: planning ...
 WAVECAR not read
 entering main loop
       N       E                     dE             d eps       ncg     rms          rms(c)
DAV:   1    -0.293201412962E+01   -0.29320E+01   -0.45056E+02   400   0.194E+02
DAV:   2    -0.362991490390E+01   -0.69790E+00   -0.60479E+00   500   0.108E+01
DAV:   3    -0.364373819630E+01   -0.13823E-01   -0.13573E-01   520   0.184E+00
DAV:   4    -0.364378638002E+01   -0.48184E-04   -0.48182E-04   560   0.959E-02
DAV:   5    -0.364378672921E+01   -0.34919E-06   -0.34920E-06   530   0.564E-03    0.216E-01
DAV:   6    -0.364315143819E+01    0.63529E-03   -0.24024E-04   520   0.623E-02    0.141E-01
DAV:   7    -0.364269399268E+01    0.45745E-03   -0.82565E-04   450   0.122E-01    0.814E-03
DAV:   8    -0.364268831395E+01    0.56787E-05   -0.30679E-05   520   0.318E-02    0.110E-03
DAV:   9    -0.364268838519E+01   -0.71241E-07   -0.91729E-08   275   0.212E-03
   1 F= -.36426884E+01 E0= -.36406869E+01  d E =-.364269E+01
 curvature:   0.00 expect dE= 0.000E+00 dE for cont linesearch  0.000E+00
 trial: gam= 0.00000 g(F)=  0.897E-02 g(S)=  0.329E-01 ort = 0.000E+00 (trialstep = 0.100E+01)
 search vector abs. value=  0.419E-01
 bond charge predicted
       N       E                     dE             d eps       ncg     rms          rms(c)
DAV:   1    -0.368223679088E+01   -0.39548E-01   -0.26477E-02   445   0.838E-01    0.396E-02
DAV:   2    -0.368220613817E+01    0.30653E-04   -0.34353E-04   485   0.108E-01    0.245E-02
DAV:   3    -0.368216860358E+01    0.37535E-04   -0.56844E-05   470   0.244E-02    0.175E-03
DAV:   4    -0.368216881007E+01   -0.20650E-06   -0.22359E-06   405   0.826E-03    0.970E-04
DAV:   5    -0.368216866051E+01    0.14956E-06   -0.27037E-08   235   0.106E-03    0.106E-04
DAV:   6    -0.368216867707E+01   -0.16553E-07   -0.25981E-09   220   0.292E-04
   2 F= -.36821687E+01 E0= -.36802001E+01  d E =-.394803E-01
 ZBRENT: can't locate minimum, use default step
 trial-energy change:   -0.039480  1 .order   -0.039254   -0.041915   -0.036593
 step:   4.0000(harm=  7.8754)  dis= 0.05885  next Energy=    -3.750276 (dE=-0.108E+00)
 bond charge predicted
       N       E                     dE             d eps       ncg     rms          rms(c)
DAV:   1    -0.376461392978E+01   -0.82445E-01   -0.25806E-01   460   0.275E+00    0.113E-01
DAV:   2    -0.376439600171E+01    0.21793E-03   -0.27266E-03   470   0.314E-01    0.694E-02
DAV:   3    -0.376411103627E+01    0.28497E-03   -0.34697E-04   465   0.699E-02    0.524E-03
DAV:   4    -0.376411214669E+01   -0.11104E-05   -0.11488E-05   465   0.203E-02    0.265E-03
DAV:   5    -0.376411110183E+01    0.10449E-05   -0.14728E-07   245   0.262E-03    0.224E-04
DAV:   6    -0.376411112855E+01   -0.26716E-07   -0.10361E-08   225   0.655E-04
   3 F= -.37641111E+01 E0= -.37623705E+01  d E =-.121423E+00
 curvature:  -2.69 expect dE=-0.258E-01 dE for cont linesearch -0.160E-01
 ZBRENT: increasing intervall
 opt :  10.0000  next Energy=    -3.734325 (dE=-0.916E-01)
 bond charge predicted

[........]

  10 F= -.38021602E+01 E0= -.38008137E+01  d E =-.182591E-02
 trial-energy change:   -0.001826  1 .order   -0.001842   -0.002865   -0.000818
 step:   3.9502(harm=  3.8726)  dis= 0.00302  next Energy=    -3.802334 (dE=-0.200E-02)
 bond charge predicted
       N       E                     dE             d eps       ncg     rms          rms(c)
DAV:   1    -0.380232704814E+01   -0.16684E-03   -0.63373E-04   420   0.147E-01    0.415E-03
DAV:   2    -0.380232588258E+01    0.11656E-05   -0.47947E-06   480   0.176E-02    0.251E-03
DAV:   3    -0.380232449588E+01    0.13867E-05   -0.41102E-07   220   0.384E-03    0.210E-04
DAV:   4    -0.380232450465E+01   -0.87696E-08   -0.21646E-08   200   0.124E-03    0.136E-04
DAV:   5    -0.380232457737E+01   -0.72717E-07   -0.16440E-09   200   0.245E-04    0.147E-05
DAV:   6    -0.380232458548E+01   -0.81170E-08   -0.15642E-10   200   0.835E-05
  11 F= -.38023246E+01 E0= -.38009582E+01  d E =-.199030E-02
 curvature:  -1.95 expect dE=-0.243E-04 dE for cont linesearch -0.263E-06
 trial: gam= 0.02303 g(F)=  0.879E-06 g(S)=  0.116E-04 ort =-0.119E-04 (trialstep = 0.300E+01)
 search vector abs. value=  0.125E-04
 reached required accuracy - stopping structural energy minimisation
 writing wavefunctions

Dans cette optimisation de la géométrie on observe :

  • une succession de calculs d'énergie, comme pour le calcul simple précédent
  • la convergence progressive de l'énergie pour chaque géométrie
  • l'arrêt du calcul après avoir atteind le critère de convergence

Soumission de VASP via le gestionnaire de travaux

Le gestinnaire de travaux utilisé à l'UPPA sur le cluster pyrene est slurm. Avec les dossiers contenant les fichiers inputs nécessaires pour le TP vous disposez du fichier vasp.job ci-dessous qui permet de soumettre un calcul VASP sur pyrene :

#!/bin/bash

#SBATCH --account=rfct
#SBATCH --partition=procs12
#SBATCH --reservation=rfct

#SBATCH --time=0-01:00:00

#SBATCH --nodes=1
#SBATCH --ntasks-per-node=2
#SBATCH --cpus-per-task=1

# Chrgement des modules
source /etc/profile.d/modules.sh
module purge
module load vasp/5.3.5/openmpi
module list

# l'Infiniband est uniquement specifie sur la partition compute
if [ ! "$SLURM_JOB_PARTITION" = compute ]
then
    unset I_MPI_FABRICS
fi

time mpirun vasp

Lors de la réalisation de votre projet, vous devrez utiliser ce fichier pour soumettre les calculs VASP. Il faudra cependant supprimer la ligne concernant la réservation (ligne 5) celle-ci n'étant effective que le temps du TP.

Lors des TP et principalement pour votre projet les seules choses que vous aurez à adapter sont :

  • Le nombre de cœeur, ntasks-per-node (ligne 10) qui est au plus de 12.
  • Le temps du calcul, time, (ligne 7) sous la forme jours-heures:minutes:secondes

Pour exécuter un calcul, le principe est le suivant :

  • Un calcul par dossier, les fichiers d'entré/sortie portant tous le même nom ils sont systématiquement écrasés.
  • Recopier le fichier vasp.job dans le dossier
  • Soumettre le calcul : sbatch vasp.job
  • Voir les calculs en cours : squeue -u $USER

Lorsqu'un calcul est en cours ou est terminé, un fichier slurm-XXXXX.out apparaît. Il est toujours important de regarder le contenu de ce fichier qui correspond à la sortie standard du programme et peut contenir des messages important, indiquant le bon déroulement (ou non) du calcul.

results matching ""

    No results matching ""