This tutorial explains how to analyze the electronic structure of a surface by using Au(111) slab with the bottom surface terminated by hydrogen.
To obtain the self-consistent charge density, electronic optimization is performed.
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
> mpirun -np 24 < nfinp_scf > nfout_scf
Then densities of state projected onto the atomic orbitals (PDOS/AOLDOS) are calculated by using the following input file:
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 postprocess, 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.
> mpirun -np 24 < nfinp_aoldos > nfout_aoldos
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_aoldosthen 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 :: 0006meaning 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
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