Hydrogen terminated Au(111) surface

This tutorial explains how to analyze the electronic structure of a surface by using Au(111) slab with the bottom surface terminated by hydrogen.

structure_Au111-H.png

SCF calculation

To obtain the self-consistent charge density, electronic optimization is performed.

  • Input file (nfinp_scf)
     0     0     0     0     0     0            : I_CTROL (DUMMY)
     6.00 20.00  2     6     6                  : GMAX GMAXP NTYP NATM NATM2
     1     0                                    : NUM_SPAC_GROUP BRAVIS_LATTICE_TYPE
     Cartesian
          5.498778336527      0.000000000000      0.000000000000
         -2.749389168264      4.762081729212      0.000000000000
          0.000000000000      0.000000000000     85.304940510023
     12    12    1     1     1     1            : NK1 NK2 NK3 MK1 MK2 MK3
     1     0                                    : NCORD NINV : IWEI IMDTYP ITYP
          0.000000000000      0.000000000000      8.979467422108    1    0    1
          0.000000000000      3.174721152808      4.489733711054    1    0    1
          0.000000000000     -3.174721152808      0.000000000000    1    0    1
          0.000000000000      0.000000000000     -4.489733711054    1    0    1
          0.000000000000      3.174721152808     -8.979467422108    1    0    1
          0.000000026956     -3.174721183174    -10.610158124432    1    1    2
     79.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
      1.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
     0     0     0     0     0                  : ICOND INIPOS INIVEL ININOS INIACC
     0     1                                    : IPRE IPRI 
     200   200   0     80000.00    0            : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
     6     1                                    : WAY_MIX MIX_WHAT
     0     20    0.60                           : ITER_START KBXMIX  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20               : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
     200.00      2     1     1.0D-12            : DTIO IMDALG IEXPL EDELTA    
    -0.0010      1.00D-03    0                  : WIDTH FORCCR ISTRESS
    rev-vdW-DF2  1                              : XCTYPE KSPIN
     2.00                                       : DESTM
       101                                      : NBZTYP
         4    4    4                            : DUMMY
         4    4    4                            : DUMMY
        48                                      : KEG
         1                                      : NEXTST
         0                                      : DUMMY
         2                                      : IMSD
         0                                      : EVALUATE_EKO_DIFF
         0                                      : NPDOSAO
         0   0.000                              : SM_N DOPING
  • Execution
    In the command line or in the job script, execute
    > mpirun -np 24 < nfinp_scf > nfout_scf

PDOS (AOLDOS) calculation

Then densities of state projected onto the atomic orbitals (PDOS/AOLDOS) are calculated by using the following input file:

  • Input file (nfinp_aoldos)
     0     0     0     0     0     0            : I_CTROL (DUMMY)
     6.00 20.00  2     6     6                  : GMAX GMAXP NTYP NATM NATM2
     1     0                                    : NUM_SPAC_GROUP BRAVIS_LATTICE_TYPE
     Cartesian
          5.498778336527      0.000000000000      0.000000000000
         -2.749389168264      4.762081729212      0.000000000000
          0.000000000000      0.000000000000     85.304940510023
     12    12    1     1     1     1            : NK1 NK2 NK3 MK1 MK2 MK3
     1     0                                    : NCORD NINV : IWEI IMDTYP ITYP
          0.000000000000      0.000000000000      8.979467422108    1    0    1
          0.000000000000      3.174721152808      4.489733711054    1    0    1
          0.000000000000     -3.174721152808      0.000000000000    1    0    1
          0.000000000000      0.000000000000     -4.489733711054    1    0    1
          0.000000000000      3.174721152808     -8.979467422108    1    0    1
          0.000000026956     -3.174721183174    -10.610158124432    1    1    2
     79.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
      1.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
     14    0     0     0     0                  : ICOND INIPOS INIVEL ININOS INIACC
     0     1                                    : IPRE IPRI 
     200   200   0     80000.00    0            : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
     6     1                                    : WAY_MIX MIX_WHAT
     0     20    0.60                           : ITER_START KBXMIX  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20               : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
     200.00      2     1     1.0D-12            : DTIO IMDALG IEXPL EDELTA    
    -0.0010      1.00D-03    0                  : WIDTH FORCCR ISTRESS
    rev-vdW-DF2  1                              : XCTYPE KSPIN
     2.00                                       : DESTM
       101                                      : NBZTYP
         4    4    4                            : DUMMY
         4    4    4                            : DUMMY
        48                                      : KEG
         1                                      : NEXTST
         0                                      : DUMMY
         2                                      : IMSD
         0                                      : EVALUATE_EKO_DIFF
         6                                      : NPDOSAO
         1
         2
         3
         4
         5 
         6
    -15.00 5.00  0.20  501                      : EPDOS(1) EPDOS(2) EPDOS(3) NPDOSE
     2.2   0.3                                  : RAD WIDTH FOR TYPE 1 
     0.7   0.3                                  : RAD WIDTH FOR TYPE 2 
     0.2   12                                   : DR NR
     0   0.000                              : SM_N DOPING

Here to calculate PDOS/AOLDOS by a postprocessing, ICOND is set to 14

14    0     0     0     0                  : ICOND INIPOS INIVEL ININOS INIACC

NPDOSAO (Number of Atomic orbitals for PDOS) > 0

     6                                      : NPDOSAO

followed by the atomic indices for which PDOS are calculated

     1
     2
     3
     4
     5 
     6

Then minimum energy (EPDOS(1)), maximum energy (EPDOS(2)), width for Gaussian broadening (EPDOS(3)) (in eV), and energy mesh

-15.00 5.00  0.20  501                      : EPDOS(1) EPDOS(2) EPDOS(3) NPDOSE

Cutoff radii (RAD) for the atomic orbitals and smearing width (WIDTH) in the Bohr radius

 2.2   0.3                                  : RAD WIDTH FOR TYPE 1 
 0.7   0.3                                  : RAD WIDTH FOR TYPE 2 

Width (DR) and number of grids (NR) for the radial integration

 0.2   12                                   : DR NR

Note that EPSDOS(3) is used only when

&OTHERS
 GAUSSDOS
&END

is written in the input file for the calculation of density of states with the Gaussian smearing.

  • Execution
    > mpirun -np 24 < nfinp_aoldos > nfout_aoldos
  • Analysis PDOS/AOLDOS is printed by the keyword "AO_LDOS" in the output file as
    AO_LDOS: atm spn  energy   s     px     py     pz    dzz dxx-yy    dxy    dyz    dzx  s+p+d     eg    t2g
    AO_LDOS:   1 1 -15.00  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
    AO_LDOS:   1 1 -14.96  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
    AO_LDOS:   1 1 -14.92  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
    ...
    PDOS/AOLDOS can be extracted by using the state2pdos.pl script as
    state2pdos.pl nfout_aoldos
    then the following messages are printed
    make dos data file :: 0001
    make dos data file :: 0002
    make dos data file :: 0003
    make dos data file :: 0004
    make dos data file :: 0005
    make dos data file :: 0006
    meaning that the dos data are printed to files 0001, 0002, ... 0006. NOTE: with the latest version of the code, they will be pdos_0001.dat, pdos_0002.data, ... The data are given in the above files in the following order (column-wise):
Energy   s     px     py     pz    dzz dxx-yy    dxy    dyz    dzx  s     p    d

Finally plot the data using for e.g., gnuplot or xmgrace.

Alternatively, you can perform SCF and AOLDOS calculation in the same run, simply setting NPDOSAO > 0 and other AOLDOS related parameters in the SCF calculations by using the following input file (nfinp_scf+aoldos)

 0     0     0     0     0     0            : I_CTROL (DUMMY)
 6.00 20.00  2     6     6                  : GMAX GMAXP NTYP NATM NATM2
 1     0                                    : NUM_SPAC_GROUP BRAVIS_LATTICE_TYPE
 Cartesian
      5.498778336527      0.000000000000      0.000000000000
     -2.749389168264      4.762081729212      0.000000000000
      0.000000000000      0.000000000000     85.304940510023
 12    12    1     1     1     1            : NK1 NK2 NK3 MK1 MK2 MK3
 1     0                                    : NCORD NINV : IWEI IMDTYP ITYP
      0.000000000000      0.000000000000      8.979467422108    1    0    1
      0.000000000000      3.174721152808      4.489733711054    1    0    1
      0.000000000000     -3.174721152808      0.000000000000    1    0    1
      0.000000000000      0.000000000000     -4.489733711054    1    0    1
      0.000000000000      3.174721152808     -8.979467422108    1    0    1
      0.000000026956     -3.174721183174    -10.610158124432    1    1    2
 79.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
  1.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
 0    0     0     0     0                  : ICOND INIPOS INIVEL ININOS INIACC
 0     1                                    : IPRE IPRI 
 200   200   0     80000.00    0            : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
 6     1                                    : WAY_MIX MIX_WHAT
 0     20    0.60                           : ITER_START KBXMIX  MIX_ALPHA
 0.20  0.30  0.20  0.20  0.20               : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
 200.00      2     1     1.0D-12            : DTIO IMDALG IEXPL EDELTA    
-0.0010      1.00D-03    0                  : WIDTH FORCCR ISTRESS
rev-vdW-DF2  1                              : XCTYPE KSPIN
 2.00                                       : DESTM
   101                                      : NBZTYP
     4    4    4                            : DUMMY
     4    4    4                            : DUMMY
    48                                      : KEG
     1                                      : NEXTST
     0                                      : DUMMY
     2                                      : IMSD
     0                                      : EVALUATE_EKO_DIFF
     6                                      : NPDOSAO
     1
     2
     3
     4
     5 
     6
-15.00 5.00  0.20  501                      : EPDOS(1) EPDOS(2) EPDOS(3) NPDOSE
 2.2   0.3                                  : RAD WIDTH FOR TYPE 1 
 0.7   0.3                                  : RAD WIDTH FOR TYPE 2 
 0.2   12                                   : DR NR
 0   0.000                              : SM_N DOPING
  • Visualization Let us visualize PDOSs for the bottom Au and H atoms using gnuplot. Here is an example gnuplot script to generate an eps file (pdos.gp)
set terminal postscript eps color 'Helvetica' 20
set output 'pdos.eps'
xmin=-11.0
xmax=4.0
ymin=0.0
ymax=2.0
set xrange [xmin:xmax]
set yrange [ymin:ymax]
set yzeroaxis
set xlabel '{/Helvetica-Oblique E}-{/Helvetica-Oblique E}_F (eV)'
set ylabel 'PDOS (Arb. unit)'
plot 'pdos_0005.dat' using ($1):($11) title 'Au#5 s' with lines lw 3, \
     'pdos_0005.dat' using ($1):($12) title 'Au#5 p' with lines lw 3, \
     'pdos_0005.dat' using ($1):($13) title 'Au#5 d' with lines lw 3, \
     'pdos_0006.dat' using ($1):($2) title 'H s' with lines lw 2

Type

> gnuplot pdos.gp

to generate the eps file called "pdos.eps" as shown below

pdos_au111_5L-H.png

Band structure calculation

The band structure calculation can be performed after the self-consistent charge and potential are obtained. Here's an example of the input file for the band structure calculation:

  • Input file (nfinp_band)
     0     0     0     0     0     0            : I_CTROL (DUMMY)
     6.00 20.00  2     6     6                  : GMAX GMAXP NTYP NATM NATM2
     1     0                                    : NUM_SPAC_GROUP BRAVIS_LATTICE_TYPE
     Cartesian
          5.498778336527      0.000000000000      0.000000000000
         -2.749389168264      4.762081729212      0.000000000000
          0.000000000000      0.000000000000     85.304940510023
     12    12    1     1     1     1            : NK1 NK2 NK3 MK1 MK2 MK3
     1     0                                    : NCORD NINV : IWEI IMDTYP ITYP
          0.000000000000      0.000000000000      8.979467422108    1    0    1
          0.000000000000      3.174721152808      4.489733711054    1    0    1
          0.000000000000     -3.174721152808      0.000000000000    1    0    1
          0.000000000000      0.000000000000     -4.489733711054    1    0    1
          0.000000000000      3.174721152808     -8.979467422108    1    0    1
          0.000000026956     -3.174721183174    -10.610158124432    1    1    2
     79.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
      1.00 0.50  12.0107     1     1       0.0  : IATOMN ALFA AMION ILOC IVAN ZETA1
     22    0     0     0     0                  : ICOND INIPOS INIVEL ININOS INIACC
     0     1                                    : IPRE IPRI 
     200   200   0     80000.00    0            : NMD1 NMD2 LAST_ITER CPUMAX IFSTOP
     6     1                                    : WAY_MIX MIX_WHAT
     0     20    0.60                           : ITER_START KBXMIX  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20               : DTIM1 DTIM2 DTIM3 DTIM4 DTIM
     200.00      2     1     1.0D-12            : DTIO IMDALG IEXPL EDELTA    
    -0.0010      1.00D-03    0                  : WIDTH FORCCR ISTRESS
    rev-vdW-DF2  1                              : XCTYPE KSPIN
     2.00                                       : DESTM
       101                                      : NBZTYP
         4    4    4                            : DUMMY
         4    4    4                            : DUMMY
        48                                      : KEG
         1                                      : NEXTST
         0                                      : DUMMY
         2                                      : IMSD
         0                                      : EVALUATE_EKO_DIFF
         0                                      : NPDOSAO
         0   0.000                              : SM_N DOPING   
    !
    &KPOINTS_BAND
     NKSEG 3
     KMESH 40 20 40
     KPOINTS
     0.0        0.0        0.0
     0.5        0.0        0.0
     0.33333333 0.33333333 0.0
     0.0        0.0        0.0
    &END
    For the band structure calculation, ICOND is set to 22, and the following options are added in the input file
    &KPOINTS_BAND
     NKSEG 3
     KMESH 40 20 40
     KPOINTS
     0.0        0.0        0.0
     0.5        0.0        0.0
     0.33333333 0.33333333 0.0
     0.0        0.0        0.0
    &END
    where the variables in the &KPOINTS_BAND ... &END block are
  • the number of k-point segment (NKSEG)
  • the k-point mesh for each segment (KMESH)
  • the k-points which define the symmetry k-points (# of k-points should be NKSEG+1) K-points are given in the unit of the reciprocal lattice vectors.
    After the band structure run, the file "energy.data" is generated. To convert the "energy.data" into plottable one, "energy2band" utility is used. Type
    > energy2band
    and input number of bands, number of bands to be plotted, number of k-points, and Fermi level, one gets "band.data", which can be plotted using gnuplot or xmgrace. Here is an example script to run energy2band:
    #!/bin/sh
    E2B=energy2band
    scfout_file='nfout_scf'
    bandout_file='nfout_band'
    ef=`grep 'FERMI' ${scfout_file} | awk '{print $4}'`
    nb=`grep 'NUMBER OF BANDS CONSIDERED' ${bandout_file} | awk '{print $6}'`
    nk=`grep 'NUMBER OF K-POINTS' ${bandout_file}  | grep -v '=' | awk '{print $5}'`
    ${E2B} << EOF
    ${nb}
    ${nb}
    ${nk}
    ${ef}
    EOF
    By using the following gnuplot script, the band structure can be visualized as follows:
    band_au111_5L-H.png

The following gnuplot script can be used to generate the band structure plot:

emin=-12
emax=4
xmin=0.0000
xmax=1.80236106
G=0.00000000
M=0.65970994
K=1.04059365
G2=1.80236106
offset=-0.5
set xrange [xmin:xmax]
set yrange [emin:emax]
set arrow from M,emin to M,emax nohead lt 1
set arrow from K,emin to K,emax nohead lt 1
set xzeroaxis
unset xtics
unset key
set ylabel '{/Helvetica-Oblique E-E}_F (eV)'
set label '{/Symbol G}' at G,emin+offset center
set label 'M' at M,emin+offset center
set label 'K' at K,emin+offset center
set label '{/Symbol G}' at G2,emin+offset center
#set terminal postscript eps 'Helvetica' 20
#set output 'band.eps'
plot 'band.data' with lines lw 3
pause -1
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-01-23 (月) 11:56:56 (461d)