SIESTA

post processing

Band structure

Density of States

Commandline tools

  • Mainly post processing based on a fix k-sampling

     

  • gnubands: generates plotable band structure file
    from SIESTA's SYSTEM_LABEL.bands

     

  • Eig2DOS: generates plotable density of states file
    from SIESTA's SYSTEM_LABEL.EIG


     

gnubands

jejbkv@c_cmcompsf17em-jejbkv:~/Al_bulk$ gnubands -h
 Usage: gnubands [options] [bandsfile|PIPE]

   bandsfile   : SystemLabel.bands
        PIPE   : < SystemLabel.bands

 Options:

     -h        : print help
     -G        : print GNUplot commands for correct labels to stderr
                 Suggested usage: prog options 2> bands.gplot 1> bands.dat
                    gnubands [options] 1> bands.dat 2> bands.gplot
                 and then:
                    gnuplot -persist bands.gplot
     -s arg    : only plot selected spin bands [1,nspin]
     -F        : shift energy to Fermi-level
     -b arg    : first band to write
     -B arg    : last band to write
     -e arg    : minimum energy to write
               :   If -F set, will be with respect
               :   to Fermi level
     -E arg    : maximum energy to write
               :   Note, see -e
     -o file   : specify output file (instead of piping)
               : if used with -G a file name file.gplot will be created

gnubands

jejbkv@c_cmcompsf17em-jejbkv:~/Al_bulk$ gnubands Al.bands 
# GNUBANDS: Utility for SIESTA to transform bands output into Gnuplot format
#
#                                                  Emilio Artacho, Feb. 1999
#                                                   Alberto Garcia, May 2012
#                                           Nick Papior, April 2013, July 2016
# --------------------------------------------------------------------------
# E_F               =    -4.0678
# k_min, k_max      =     0.0000    3.3565
# E_min, E_max      =   -15.0494  174.4727
# Nbands, Nspin, Nk =     13     1  2101
# Using min_band, max_band =      1    13
# Total number of bands =     13
#
#        k            E
# --------------------------------------------------------------------------

      0.008601    -15.048400  1
      0.017203    -15.045500  1
      0.025804    -15.040600  1
      0.034406    -15.033900  1
      0.043007    -15.025100  1
      0.051609    -15.014400  1
      0.060210    -15.001800  1
      0.068812    -14.987100  1
      0.077413    -14.970500  1
                .
                .   
                .

Eig2DOS

jejbkv@c_cmcompsf17em-jejbkv:~/Al_bulk$ Eig2DOS -h
 -------------------
 Usage: Eig2DOS [options] eigfile

        eigfile : SIESTA .EIG file

 OPTIONS:

 -h         Print this help
 -d         Print debugging info
 -e         Stop after printing Emin,Emax in file for selected bands
 -f         Shift energy axis so that Efermi is at 0
 -l         Use Lorentzian instead of Gaussian broadening
 -s arg     Broadening parameter in eV
 -n arg     Number of energy points at which to compute the DOS
 -m emin    Minimum energy in range
 -M emax    Maximum energy in range
 -b arg     Index of first band to consider
 -B arg     Index of last band to consider
 -k kfile   Use kfile for k-point weight information (.KP format)
 -------------------

Eig2DOS

jejbkv@c_cmcompsf17em-jejbkv:~/Al_bulk$ Eig2DOS Al.EIG
# EIG2DOS: Utility for SIESTA to obtain the electronic density of states
#  E. Artacho, Apr 1999, A. Garcia, Apr 2012
# ------------------------------------------
# Eigenvalues read from Al.EIG
# Using smearing parameter:   0.200
# Using    200 points in energy range
# Selected bands: 1 to: 13
# Emin, emax in file for selected band(s):    -14.9845100    143.2186600
# Nbands, Nspin, Nk   =     13     1   500
# E_F                 =    -4.0678 eV (NOT shifted)
# Broadening          =     0.2000 eV
#
#        E            N(up)  (=)   N(down)         Ntot
    -16.184510      0.000000      0.000000      0.000000
    -15.377459      0.000124      0.000124      0.000249
    -14.570408      0.040457      0.040457      0.080915
    -13.763357      0.077437      0.077437      0.154874
                                .
                                .
                                .
                                .
                                .

sisl: a python based  tool

CDF.Save true
CDF.Compress 9
SaveHS true
SaveRho true
  • python tool developed by SIESTA's authors

     
  • many pre- and postprocessing solutions from within python
    in principle any quantity available based on the selfconsitent density
     
  • some quantities require NetCDF output from SIESTA

     
  • Available @ github here.

     
  • Documentation here.

sisl: a python based  tool

nkx,nky,nkz = 10,10,1                              # number of kpoints in each direction
E = np.linspace(Emin, Emax, 500)                   # Energy range
bz = MonkhorstPack(H, [nkx, nky, nkz]).asaverage() # Brilloun-zone sampling
dos_data = bz.DOS(E)                               # The actual calculation of the DOS

plot(E,dos_data)                                   # plot it with matplotlib like this
fdf = get_sile('RUN.fdf')  # Identify calculation based on the fdf file
H = fdf.read_hamiltonian() # Read in Hamiltonian, this will trow an error
                           # if the Hamiltonian was not calculated!

calculate DOS

Read in SIESTA output

bz = BandStructure(H, [[0,0,0], [2./3, 1./3, 0], [0.5, 0.5, 0], [1,1,1]], # BZ path
                       400,                                               # number ok kpoints
                   name=[r'$\Gamma$', r'$K$', r'$M$', r'$\Gamma$'])       # named k-points
linear_k, k_tick, k_label = bz.lineark(True) # get tick position and tick labels
bands = bz.eigh()      # the actual calculation of the band structure
plt.plot(linear_k,bands); # plot like this
# puting labels
plt.ylabel(r'$E-E_F$ [eV]')
plt.xlim(linear_k[0], linear_k[-1]);
plt.xticks(k_tick, k_label);

calculate bands

SIESTApost processing

By László Oroszlány

SIESTApost processing

  • 1,823