AI2PS: An analysis tool for vibrational properties based on ABINIT

Rehr Group

Department of Physics

University of Washington


User’s Guide, AI2PS version 0.5

updated April 12, 2013

Please note: This document is still in progress. Thank you for your patience.


Abstract

S. M. Story1, J. J. Kas1, M. J. Verstraete2, J. J. Rehr1

1Dept. of Physics, U. of Washington, Seattle, WA

2Inst. de Physique, U. de Liège Sart Tilman, Belgium

Vibrational properties--such as crystallographic and EXAFS Debye-Waller factors, vibrational free energies, and phonon contributions to the electron self energy--are key to understanding many aspects of materials beyond ground state electronic structure. Thus, their simulation using first principles methods is of particular importance. Many of these vibrational properties can be calculated from the dynamical matrix and electron-phonon coupling coefficients obtained from ABINIT calculations. To this end we have developed AI2PS, an analysis tool that interfaces with ABINIT to provide the aforementioned vibrational properties. AI2PS employs the successful interfacing scheme deployed in our UV/Vis and x-ray spectroscopy codes AI2NBSE and OCEAN, including both an ABINIT driver, data translation utilities, and options for various applications. This interface is intended to be user-friendly and thus also amenable to non-expert users. The interfacing data is generated by a minimally modified version of the ANADDB (Analysis of Derivative DataBase) utility in ABINIT. A recent development is the phonon contributions to the electron spectral function at finite temperature. This approach uses a cumulant expansion technique together with an Einstein self-energy model [1] and a many-pole representation of the Eliashberg function for the electron-phonon interaction obtained from ABINIT.

        This work has been supported in part by grants from the National Science Foundation.

[1] A. Eiguren and C. Ambrosch-Draxl, Phys. Rev. Lett. 101, 036402 (2008).


Contents

Acknowledgments

Tutorial

Individual driver scripts

Main control script

Input and Output Files

User input

ABINIT input

ANADDB input

DMDW input

Auto-generated Input

Generated ABINIT input

Generated ANADDB input

Output

ABINIT output

ANADDB output

DMDW output

Installation Instructions

References


Acknowledgments

This project is funded by the National Science Foundation (PHY-0835543).


Tutorial

Individual driver scripts

There are driver scripts (BASH) that handle the running of each segment of the calculation. Each script is called with a number of inputs.

Usage: $ 0_run_prep INP_DIR INP_FIL “TAGS” AI_SRC AI_OUT ANA_OUT DYM_OUT

          INP_DIR = where to generate/store input files

          INP_FIL = AI2PS input file

             TAGS = 5 space-separated file tags to label output from different parts of    

                  ABINIT run (qgrid generation, ‘abinit’, ‘mrgddb’, ‘mrggkk’, ‘anaddb’)

           AI_SRC = location of ~abinit/src

            AI_OUT = where to store ABINIT output

          ANA_OUT = where to store ANADDB output

          DYM_OUT = where to store AI2DYM (dynamical matrix) output

Runs the following three scripts:

Usage: $ 1_run_abinit INP_DIR AI_OUT AI_TAG “MPI CMD” AI_SRC

  INP_DIR = where the input files are stored

   AI_OUT = where to store ABINIT output

   AI_TAG = label for ABINIT

  MPI_CMD = string containing mpi command to insert before abinit command

            e.g, "mpirun --prefix $MPI_PREFIX --hostfile Hostfile -np 64"

   AI_SRC = location of ~abinit/src

   

Usage: $ 2a_run_mrgers INP_DIR ANA_OUT MDDB_TAG MGKK_TAG AI_SRC

  INP_DIR = where the input files are stored

  ANA_OUT = where to store merged files/ANADDB output

 MDDB_TAG = file tag to label merged DDB file

 MGKK_TAG = file tag to label merged GKK file

   AI_SRC = location of ~abinit/src

        Usage: $ 2b_run_anaddb INP_DIR ANA_OUT ANA_TAG AI_SRC

  INP_DIR = where the input files are stored

  ANA_OUT = where to store ANADDB output

  ANA_TAG = file tag to label ANADDB files

   AI_SRC = location of ~abinit/src

        

        Usage: $ 3_run_ai2dym INP_DIR DYM_OUT ANA_OUT AI2PS_SRC

          INP_DIR = where the input files are stored

  DYM_OUT = where to store dynamical matrix files

  ANA_OUT = where ANADDB output is stored

AI2PS_SRC = location of ~AI2PS/src

        Usage: $ 4_run_dmdw INP_DIR DMDW_OUT DMDW_SRC

           INP_DIR = where the input files are stored

 DMDW_OUT = where to store DMDW output

 DMDW_SRC = location of ~DMDW/


Main control script

Another simple script can be used to handle calling the above individual scripts. You can define locations, labels, and machine-specific commands as necessary. For example, here is a main control script used for our cluster:


#!/bin/bash

#PBS -l nodes=1:ppn=1,walltime=96:00:00

#PBS -N Cu

#PBS -o Cu.sout

#PBS -e Cu.serr

#PBS -q batch

#PBS -V

#==================================================================================================#

#/////////////////////////////////      Fill out values below      \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\#

#==================================================================================================#

# Number of Processors (set ppn above too)

NP=64

MPI_CMD="mpirun --prefix $MPI_PREFIX --hostfile Hostfile -np $NP"

# Main user input

USR_INP=uber.in  

# Locations of executables

SRC_DIR_AI=/home/story/abinit/abinit-7.0.3/src

SRC_DIR_AI2PS=/home/story/AI2PS/src

SRC_DIR_DMDW=/home/story/DMDW

# Subdirectories

INP_DIR=0_input             # Where all the input files are generated

OUT_DIR_AI=1_abinit         # Where all the abinit output is generated

OUT_DIR_ANA=2_anaddb        # Where all the anaddb output is generated

OUT_DIR_DYM=3_dynmat        # Where the dynamical matrix is generated

OUT_DIR_VIB=4_vibes         # Where the vibrational properties are generated

# File tags/labels

TAG0=qgrid  # in INP_DIR     : minimal abinit input to generate qgrid

TAG1=ab     # in OUT_DIR_AI  : abinit input/output

TAG2a=mddb  # in OUT_DIR_ANA : merged DDB

TAG2b=mgkk  # in OUT_DIR_ANA : merged GKK

TAG3=ana    # in OUT_DIR_ANA : anaddb input/output

            # in OUT_DIR_VIB : hardcoded tag = dmdw

#==================================================================================================#

#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\      Fill out values above      ////////////////////////////////#

#==================================================================================================#

cd $PBS_O_WORKDIR

cp $PBS_NODEFILE Hostfile

AI2PS=$SRC_DIR_AI2PS

TAGS="$TAG0 $TAG1 $TAG2a $TAG2b $TAG3"

#---------------------------------------------------------------------------------------------------

echo "Start 0" `date`

$AI2PS/0_run_prep  $INP_DIR  $USR_INP  "$TAGS"  $SRC_DIR_AI  $OUT_DIR_AI  $OUT_DIR_ANA  $OUT_DIR_DYM

#---------------------------------------------------------------------------------------------------

echo "Start 1" `date`

# abinit run (long,parallel)

$AI2PS/1_run_abinit          $INP_DIR  $OUT_DIR_AI   $TAG1  "$MPI_CMD"  $SRC_DIR_AI

#---------------------------------------------------------------------------------------------------

echo "Start 2" `date`

# merging runs (immediate)

$AI2PS/2a_run_mrgers         $INP_DIR  $OUT_DIR_ANA  $TAG2a  $TAG2b            $SRC_DIR_AI

# anaddb run (not long)

$AI2PS/2b_run_anaddb         $INP_DIR  $OUT_DIR_ANA  $TAG3                     $SRC_DIR_AI

#---------------------------------------------------------------------------------------------------

echo "Start 3" `date`

# run ai2dym (not long)

$AI2PS/3_run_ai2dym          $INP_DIR  $OUT_DIR_DYM  $OUT_DIR_ANA              $SRC_DIR_AI2PS

#---------------------------------------------------------------------------------------------------

echo "Start 4" `date`

# dmdw runs (long,serial)

$AI2PS/4_run_dmdw            $INP_DIR  $OUT_DIR_VIB                            $SRC_DIR_DMDW

#---------------------------------------------------------------------------------------------------

echo "  End  " `date`

# Clean up

rm Hostfile


By using a setup like this, one only needs to define the variables at the top to switch to different settings.

Input and Output Files

User input

AI2PS uses a single input file, which gathers the minimum input to be specified by the user to do a full run from ABINIT to DMDW.

The following is an example for copper:


#--------------------------------------General---------------------------------------

name        {Cu}                    # label used for ABINIT files

pspfil      {29-Cu.LDA.fhi}         # list of pseudopotential files

#--------------------------------------abinit----------------------------------------

natom       {1}                     # number of atoms

ntypat      {1}                     # number of types of atoms

typat       {1}                     # type of atoms

znucl       {29}                    # charge -Z- of the nucleus

xred        {0.00 0.00 0.00}        # vectors (x) of atom positions

                                    #   in reduced coordinates

acell       {3*6.6855745018E+00}    # cell lattice vector scaling

rprim       {0.0  0.5  0.5          # real space primative translations

             0.5  0.0  0.5

             0.5  0.5  0.0}

ngkpt       {16 16 16}              # nunmber of grid points for k points generation

ecut        {50.0}                  # energy cutoff

# additional lines for abinit if needed (directly pasted into abinit input file)

#   leave empty brackets {} if no additional inputs needed for material

other       {      

             occopt 6

             tsmear 0.025

            }

#--------------------------------------anaddb----------------------------------------

ngqpt       { 4  4  4}              # number of grid points for q points

                                    #   Monkhorst-Pack grid linear dimensions,

                                    #   for DDB (coarse grid).

ng2qpt      {16 16 16}              # number of grid points for q points (grid 2)

                                    #   Monkhorst-Pack grid linear dimensions,

                                    #   for the finer of the series of fine grids

#---------------------------------------dmdw-----------------------------------------

dmdw.nlanc   {       # number of Lanczos poles (>= 16 for atomics systems?)

                1

               16

               24

             }

dmdw.temp    {       # temperature

                3.0

               60.0

              120.0

              180.0

              240.0

              300.0

             }

dmdw.ek      {       # quasiparticle energy in meV

                0.236

               17.7

               47.2

              118.0

             }

dmdw.diropt  {1}     # direction of projected DOS (1=x,2-y,3=z,[0=naive avg])


ABINIT input

For more info, see the ABINIT documentation.

name

pspfil

natom

ntypat

typat

znucl

xred

acell

rprim

ngkpt

ecut

other

ANADDB input

For more info, see the ABINIT documentation.

ngqpt

ng2qpt

DMDW input

dmdw.nlanc: number of Lanczos poles (≥16 for atomic displacements)

dmdw.temp: temperature of system

dmdw.ek: quasiparticle energy in meV

dmdw.diropt: direction for projected density of states (1=x, 2=y, 3=z)

Auto-generated Input

AI2PS automatically generates the input parameters in this section. They are either general to all runs of AI2PS or can be generated from other user input above. Most input/output filenames are also generated from the labels/tags given by the user.

Generated ABINIT input

(in progress)

For more info, see the ABINIT documentation.        

toldfe1

nline1

rfphon1

nqpt1

getwfk1

prtden1

kptopt

tolwfr2

rfphon2

nqpt2

prtwf2

getwfk2

iscf2

getden2

qpt#

tolvrs

istwfk

rfatpol

rfdir

rfphon

prtwf

getwfk

nqpt

prepgkk

prtgkk

kptopt

nshiftk

shiftk

nband

natom

nstep

Generated ANADDB input

(in progress)

For more info, see the ABINIT documentation.

elphflag

nqpath

qpath

mustar

prtdos

asr

dipdip

brav

nqshift

q1shift

ifcflag

ifcana

ifcout

natifc

atifc

Output

(in progress)

ABINIT output

ANADDB output

DMDW output


Installation Instructions

For information on downloads, see the AI2PS Download page.


References