* Hydrogen terminated Au(111) surface [#a734259b]
This tutorial explains how to analyze the electronic structure of a surface by using Au(111) slab with the bottom surface terminated by hydrogen.~
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/structure_Au111-H.png,center,nolink,30%)

** SCF calculation [#tb8cd26e]
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 [#jb76cbfe]
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
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/pdos_au111_5L-H.png,center,nolink,30%)
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/pdos_au111_5L-H.png,center,nolink,20%)

** Band structure calculation [#l6de7d56]
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:
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/band_au111_5L-H.png,center,nolink,30%)
#ref(http://www-cp.prec.eng.osaka-u.ac.jp/puki_state/graph/band_au111_5L-H.png,center,nolink,20%)

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