This tutorial explains how to perform the crystal orbital overlap population (COOP) analysis by using hfacH/Ni(110)(4x4) surface [Basher et al., Jpn. J. Appl. Phys. 59, 090905 (2020)].
In the COOP calculation, the wave function of the total system (combined system/adsorption system) is expanded in terms of the subsystem wave functions. Thus, we need to prepare wave functions for the subsystem. In the present system, we prepare wave functions of molecular (hfacH) and substrate (Ni(110)(4x4) slab) in the subdirectory HFACH and Ni, respectively, in addition to those in the working directory.
We first relax the system and create a new input file using the optimized geometry. We also create input files for subsystem using the optimized geometries for the combined system (not further relaxation will not be performed.
The input files for the combined system and subsystems are as follows:
0 0 0 0 0 0 : Ni ( 4L + 16L ) 6.0000 20.0000 5 63 63 : gmax, gmaxp, ktyp, katm, katm2 1 0 : num_space_group, type Cartesian 18.853223409384 0.000000000000 0.000000000000 0.000000000000 19.996863180000 0.000000000000 0.000000000000 0.000000000000 47.133058523459 06 06 01 1 1 1 : K_mesh 1 0 : ncord,ninv : iwei,imdtyp,ityp 3.996033909759 6.423162152279 7.522989404072 1 1 2 4.633918309151 7.123379460829 5.106013702817 1 1 3 3.635103884227 5.253332343494 3.146931873829 1 1 3 4.731721715104 2.690776174457 3.323892246902 1 1 3 3.200483027950 0.471065818069 3.529029658560 1 1 3 4.120907476388 -1.686820049470 5.188000704456 1 1 3 3.410025784713 -1.291010684906 7.648452354530 1 1 2 3.138910721527 -3.990404972103 4.496409683978 1 1 2 6.710352133631 -1.907538456185 5.167401775270 1 1 2 0.630361749489 0.637068850434 3.373843504199 1 1 4 0.931152312144 5.345290940286 3.264616793801 1 1 4 3.688095192120 9.504638201919 4.748808431955 1 1 2 7.235648802353 7.279856147374 5.031162192044 1 1 2 6.667976160760 2.610581848382 4.039660059301 1 1 5 0.357655206834 3.440269198314 3.391592209902 1 1 5 -4.723393044566 -6.659760068776 -0.244176482326 1 1 1 -4.766966242109 -0.002829325009 -0.237055142658 1 1 1 -4.743794937018 6.656139747554 -0.235880054434 1 1 1 -0.011608354807 -6.657491571052 -0.270017269615 1 1 1 -0.053793076202 -0.046032678740 -0.140472521299 1 1 1 0.004101946979 6.632961379942 -0.132665384287 1 1 1 4.698813209313 -6.654695829816 -0.251828880698 1 1 1 4.685756715949 0.294502803370 0.007103429427 1 1 1 4.659328430105 6.502758307018 -0.182316365983 1 1 1 9.406005430046 -6.657768212578 -0.247436999355 1 1 1 9.413612628005 0.025443431192 -0.235712396452 1 1 1 9.405185522265 6.655221273086 -0.227420746967 1 1 1 -2.362387725422 -3.315354047591 -2.385605053225 1 1 1 -2.372460657256 3.324479261331 -2.406696727513 1 1 1 -2.353468393749 9.967108679099 -2.351435540207 1 1 1 2.380240190019 -3.280084445723 -2.392879725017 1 1 1 2.318083997074 3.323346703637 -2.580038522499 1 1 1 2.362350188616 9.975604524032 -2.394364577664 1 1 1 7.032730190885 -3.270921711124 -2.329940471573 1 1 1 7.102040811859 3.341277167718 -2.476733324667 1 1 1 7.048003975979 9.969771766060 -2.351946440719 1 1 1 11.759975516057 -3.327723005070 -2.360523328081 1 1 1 11.784484202409 3.338143705962 -2.386944035892 1 1 1 11.771270751385 9.995685282686 -2.350387594640 1 1 1 -4.713305852300 -6.665621060000 -4.713305852300 1 0 1 -4.713305852300 0.000000000000 -4.713305852300 1 0 1 -4.713305852300 6.665621060000 -4.713305852300 1 0 1 0.000000000000 -6.665621060000 -4.713305852300 1 0 1 0.000000000000 0.000000000000 -4.713305852300 1 0 1 0.000000000000 6.665621060000 -4.713305852300 1 0 1 4.713305852300 -6.665621060000 -4.713305852300 1 0 1 4.713305852300 0.000000000000 -4.713305852300 1 0 1 4.713305852300 6.665621060000 -4.713305852300 1 0 1 9.426611704700 -6.665621060000 -4.713305852300 1 0 1 9.426611704700 0.000000000000 -4.713305852300 1 0 1 9.426611704700 6.665621060000 -4.713305852300 1 0 1 -2.356652926200 -3.332810530000 -7.069958778500 1 0 1 -2.356652926200 3.332810530000 -7.069958778500 1 0 1 -2.356652926200 9.998431590000 -7.069958778500 1 0 1 2.356652926200 -3.332810530000 -7.069958778500 1 0 1 2.356652926200 3.332810530000 -7.069958778500 1 0 1 2.356652926200 9.998431590000 -7.069958778500 1 0 1 7.069958778500 -3.332810530000 -7.069958778500 1 0 1 7.069958778500 3.332810530000 -7.069958778500 1 0 1 7.069958778500 9.998431590000 -7.069958778500 1 0 1 11.783264630900 -3.332810530000 -7.069958778500 1 0 1 11.783264630900 3.332810530000 -7.069958778500 1 0 1 11.783264630900 9.998431590000 -7.069958778500 1 0 1 28 0.5000 58.710 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 9 0.5000 18.998 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 6 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 8 0.5000 15.999 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 1 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 0 0 0 0 0 : icond, inipos, inivel, ininos, iniacc 0 1 : ipre, ipri 0400 1000 0 420000.00 0 : nmd1,nmd2,last_iter,cpumax,ifstop 6 1 : SIMPLE=1,BROYD1=2,BROYD2=3,DFP=4,PULAY=5 0 30 0.10 : iter_start, KBXMIX, MIX_ALPHA 0.20 0.30 0.20 0.20 0.20 : dtim1,dtim2,dtim3,dtim4,dtim 200.00 6 1 1.00D-10 : dtio ,imdalg, iexpl, edelta -0.0010 1.00D+03 0 : width,forccr,istress rev-vdW-DF2 2 : xctype,kspin 1.00 : destm 101 : nbztyp 4 4 4 4 4 4 384 : keg 1 : nextst(mb) 0 : 0 random numbers 1: matrix 2 : imsd 1=MSD, 2=Preconditioned 0 : evaluate_eko_diff 0 : npdosao 0 0.0 2 : mvelsc 300.0D0 30.0D0 30 1.0D0 : tempw,tolp,nroll,anneal 500.0D0 8 15 1 : wnosep,nhc,nosy,ndrt 5.0D-8 : frict 0 : mcnstr DIST 1 3 1.83401 DIST 2 3 1.83401 BEND 1 3 2 104.23195 &ESM BOUNDARY_CONDITION BARE &END
0 0 0 0 0 0 : Ni ( 4L + 16L ) 6.0000 20.0000 5 15 15 : gmax, gmaxp, ktyp, katm, katm2 1 0 : num_space_group, type Cartesian 18.853223409384 0.000000000000 0.000000000000 0.000000000000 19.996863180000 0.000000000000 0.000000000000 0.000000000000 47.133058523459 06 06 01 1 1 1 : K_mesh 1 0 : ncord,ninv : iwei,imdtyp,ityp 3.996033909759 6.423162152279 7.522989404072 1 1 2 4.633918309151 7.123379460829 5.106013702817 1 1 3 3.635103884227 5.253332343494 3.146931873829 1 1 3 4.731721715104 2.690776174457 3.323892246902 1 1 3 3.200483027950 0.471065818069 3.529029658560 1 1 3 4.120907476388 -1.686820049470 5.188000704456 1 1 3 3.410025784713 -1.291010684906 7.648452354530 1 1 2 3.138910721527 -3.990404972103 4.496409683978 1 1 2 6.710352133631 -1.907538456185 5.167401775270 1 1 2 0.630361749489 0.637068850434 3.373843504199 1 1 4 0.931152312144 5.345290940286 3.264616793801 1 1 4 3.688095192120 9.504638201919 4.748808431955 1 1 2 7.235648802353 7.279856147374 5.031162192044 1 1 2 6.667976160760 2.610581848382 4.039660059301 1 1 5 0.357655206834 3.440269198314 3.391592209902 1 1 5 28 0.5000 58.710 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 9 0.5000 18.998 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 6 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 8 0.5000 15.999 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 1 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 0 0 0 0 0 : icond, inipos, inivel, ininos, iniacc 0 1 : ipre, ipri 0400 1000 0 420000.00 0 : nmd1,nmd2,last_iter,cpumax,ifstop 6 1 : SIMPLE=1,BROYD1=2,BROYD2=3,DFP=4,PULAY=5 0 30 0.10 : iter_start, KBXMIX, MIX_ALPHA 0.20 0.30 0.20 0.20 0.20 : dtim1,dtim2,dtim3,dtim4,dtim 200.00 6 1 1.00D-10 : dtio ,imdalg, iexpl, edelta -0.0010 1.00D+03 0 : width,forccr,istress rev-vdW-DF2 2 : xctype,kspin 1.00 : destm 101 : nbztyp 4 4 4 4 4 4 48 : keg 1 : nextst(mb) 0 : 0 random numbers 1: matrix 2 : imsd 1=MSD, 2=Preconditioned 0 : evaluate_eko_diff 0 : npdosao 0 0.0 2 : mvelsc 300.0D0 30.0D0 30 1.0D0 : tempw,tolp,nroll,anneal 500.0D0 8 15 1 : wnosep,nhc,nosy,ndrt 5.0D-8 : frict 0 : mcnstr DIST 1 3 1.83401 DIST 2 3 1.83401 BEND 1 3 2 104.23195 &ESM BOUNDARY_CONDITION BARE &END
0 0 0 0 0 0 : Ni ( 4L + 16L ) 6.0000 20.0000 5 48 48 : gmax, gmaxp, ktyp, katm, katm2 1 0 : num_space_group, type Cartesian 18.853223409384 0.000000000000 0.000000000000 0.000000000000 19.996863180000 0.000000000000 0.000000000000 0.000000000000 47.133058523459 06 06 01 1 1 1 : K_mesh 1 0 : ncord,ninv : iwei,imdtyp,ityp -4.723393044566 -6.659760068776 -0.244176482326 1 1 1 -4.766966242109 -0.002829325009 -0.237055142658 1 1 1 -4.743794937018 6.656139747554 -0.235880054434 1 1 1 -0.011608354807 -6.657491571052 -0.270017269615 1 1 1 -0.053793076202 -0.046032678740 -0.140472521299 1 1 1 0.004101946979 6.632961379942 -0.132665384287 1 1 1 4.698813209313 -6.654695829816 -0.251828880698 1 1 1 4.685756715949 0.294502803370 0.007103429427 1 1 1 4.659328430105 6.502758307018 -0.182316365983 1 1 1 9.406005430046 -6.657768212578 -0.247436999355 1 1 1 9.413612628005 0.025443431192 -0.235712396452 1 1 1 9.405185522265 6.655221273086 -0.227420746967 1 1 1 -2.362387725422 -3.315354047591 -2.385605053225 1 1 1 -2.372460657256 3.324479261331 -2.406696727513 1 1 1 -2.353468393749 9.967108679099 -2.351435540207 1 1 1 2.380240190019 -3.280084445723 -2.392879725017 1 1 1 2.318083997074 3.323346703637 -2.580038522499 1 1 1 2.362350188616 9.975604524032 -2.394364577664 1 1 1 7.032730190885 -3.270921711124 -2.329940471573 1 1 1 7.102040811859 3.341277167718 -2.476733324667 1 1 1 7.048003975979 9.969771766060 -2.351946440719 1 1 1 11.759975516057 -3.327723005070 -2.360523328081 1 1 1 11.784484202409 3.338143705962 -2.386944035892 1 1 1 11.771270751385 9.995685282686 -2.350387594640 1 1 1 -4.713305852300 -6.665621060000 -4.713305852300 1 0 1 -4.713305852300 0.000000000000 -4.713305852300 1 0 1 -4.713305852300 6.665621060000 -4.713305852300 1 0 1 0.000000000000 -6.665621060000 -4.713305852300 1 0 1 0.000000000000 0.000000000000 -4.713305852300 1 0 1 0.000000000000 6.665621060000 -4.713305852300 1 0 1 4.713305852300 -6.665621060000 -4.713305852300 1 0 1 4.713305852300 0.000000000000 -4.713305852300 1 0 1 4.713305852300 6.665621060000 -4.713305852300 1 0 1 9.426611704700 -6.665621060000 -4.713305852300 1 0 1 9.426611704700 0.000000000000 -4.713305852300 1 0 1 9.426611704700 6.665621060000 -4.713305852300 1 0 1 -2.356652926200 -3.332810530000 -7.069958778500 1 0 1 -2.356652926200 3.332810530000 -7.069958778500 1 0 1 -2.356652926200 9.998431590000 -7.069958778500 1 0 1 2.356652926200 -3.332810530000 -7.069958778500 1 0 1 2.356652926200 3.332810530000 -7.069958778500 1 0 1 2.356652926200 9.998431590000 -7.069958778500 1 0 1 7.069958778500 -3.332810530000 -7.069958778500 1 0 1 7.069958778500 3.332810530000 -7.069958778500 1 0 1 7.069958778500 9.998431590000 -7.069958778500 1 0 1 11.783264630900 -3.332810530000 -7.069958778500 1 0 1 11.783264630900 3.332810530000 -7.069958778500 1 0 1 11.783264630900 9.998431590000 -7.069958778500 1 0 1 28 0.5000 58.710 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 9 0.5000 18.998 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 6 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 8 0.5000 15.999 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 1 0.5000 12.011 1 1 0.2 : IATOMN ALFA AMION ILOC IVAN 0 0 0 0 0 : icond, inipos, inivel, ininos, iniacc 0 1 : ipre, ipri 0400 1000 0 420000.00 0 : nmd1,nmd2,last_iter,cpumax,ifstop 6 1 : SIMPLE=1,BROYD1=2,BROYD2=3,DFP=4,PULAY=5 0 30 0.10 : iter_start, KBXMIX, MIX_ALPHA 0.20 0.30 0.20 0.20 0.20 : dtim1,dtim2,dtim3,dtim4,dtim 200.00 6 1 1.00D-10 : dtio ,imdalg, iexpl, edelta -0.0010 1.00D+03 0 : width,forccr,istress rev-vdW-DF2 2 : xctype,kspin 1.00 : destm 101 : nbztyp 4 4 4 4 4 4 336 : keg 1 : nextst(mb) 0 : 0 random numbers 1: matrix 2 : imsd 1=MSD, 2=Preconditioned 0 : evaluate_eko_diff 0 : npdosao 0 0.0 2 : mvelsc 300.0D0 30.0D0 30 1.0D0 : tempw,tolp,nroll,anneal 500.0D0 8 15 1 : wnosep,nhc,nosy,ndrt 5.0D-8 : frict 0 : mcnstr DIST 1 3 1.83401 DIST 2 3 1.83401 BEND 1 3 2 104.23195 &ESM BOUNDARY_CONDITION BARE &END
In the current working directory, perform the following or alike by using the job script:
$ mpirun -np 24 < nfinp_1 > nfout_1
$ cd HFACH $ $ mpirun -np 24 < nfinp_1 > nfout_1
$ cd ../Ni $ $ mpirun -np 24 < nfinp_1 > nfout_1
After converging all the wave functions (./zaj.data, HFACH/zaj.data, and Ni/zaj.data), we calculate the overlap matrices and prepare for the COOP analysis. First, create a symbolic links in the current working directory as follows:
$ ln -s HFACH/zaj.data zak1.data $ ln -s Ni/zaj.data zak3.data
and then create a new input file for the preparation. Let us copy nfinp_1 to nfinp_coop
$ cp nfinp_1 nfinp_coop
and change ICOND from 0 to 17 in nfinp_coop as
17 0 0 0 0 : icond, inipos, inivel, ininos, iniacc
Furthermore, we need to create 'nfcoop.data' to set the computational parameters. 'nfcoop.data' may look like:
2 : KSPIN 40 : KNV3 43 48 15 101 : NPDOSMO1 KPDOSMO1 KATM1 KLMTA1 0 0 0 0 : NPDOSMO2 KPDOSMO2 KATM2 KLMTA2 336 336 48 864 : NPDOSMO3 KPDOSMO3 KATM3 KLMTA3 -15.0 5.0 0.5 2001 : EMIN EMAX EWIDTH NPDOSE
Having prepared "nfcoop.data", execute STATE using nfinp_coop as:
$ mpirun -np 24 < nfinp_coop > nfout_coop
Finally, we need to prepare 'eko.data', a file containing the Kohn-Sham eigenvalues (use stat2eigen.pl attached to this page). Execute the following in the current working directory:
$ state2eigen.pl nfout_1 > eko.data
When all the preliminary calculations are successfully performed, we may have:
and we are ready to perform COOP analysis! Assuming the command search path for the COOP program ('coop_analysis") is set, we just execute
$ coop_analysis > coop.out
and densities of states (DOSs) projected onto the molecular orbitals (MOPDOSs), DOSs weighted with overlap population (COOP), and DOSs weighted with the gross populations (GPOP) are written to "coop.out"
To extract MOPDOSs, type
$ grep 'PDOS\:' coop.out | awk -F\: '{print $2}' > pdos.dat
To extract COOPs, type
$ grep 'COOP2\:' coop.out | awk -F\: '{print $2}' > coop2.dat
In the current example, the system is spin polarized, and above files contain both spin-up and spin-down components. For convenience, we split them as follows:
$ wc -l pdos.dat
4006 pdos.dat
$ split -l 2003 pdos.dat; mv xaa pdos_up.dat; mv xab pdos_dw.dat
$ wc -l coop2.dat
4006 coop2.dat
$ split -l 2003 coop2.dat; mv xaa coop2_up.dat; mv xab coop2_dw.dat
Those files (pdos.dat/coop2.dat) contain energy and DOS data as follows:
- 1st column: energy with respect to the Fermi level (in eV) - 2nd - NPDOSMO1 column (2nd - 1st MO, 3rd - 2nd MO, 4th - 3rd MO, ...)
Then, spin-up MOPDOS for HOMO, LUMO, and LUMO+1 may be plotted by using gnuplot as:
> plot 'pdos_up.dat' using ($1):($39) title 'HOMO ' with lines,\ '' using ($1):($40) title 'LUMO ' with lines,\ '' using ($1):($41) title 'LUMO+1' with lines
and spin-up COOP for HOMO, LUMO, and LUMO+1 may be plotted as:
> plot 'coop2_up.dat' using ($1):($39) title 'HOMO ' with lines,\ '' using ($1):($40) title 'LUMO ' with lines,\ '' using ($1):($41) title 'LUMO+1' with lines
considering that HOMO is the 38th orbital in the current setting.