* 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