Crystal orbital overlap analysis (COOP)

The crystal orbital overlap analysis (COOP) is a method to clarify the bonding mechanism of molecules on the surface. In short, the wave functions of the total system is expanded in terms of the wave functions of the subsystem, and the densities of states weighted by overlap populations are calculated.

Tutorial

Let us use a CO molecule on a Pt(111) surface as an example. In the following, how to calculate COOP is described step by step.

Preliminaries

For the COOP calculation, we need the wave functions and eigenvalues for the combined system and wave functions for the subsystems. Here the subsystems are CO and Pt(111). In the following, we use the directories named CO, Pt, and Total for isolated CO, isolated Pt(111), and combined system, respectively, and Pt_pbe1s, C_pbe3, and O_pbe3 are used as pseudopotentials.

Input file for the SCF calculations of the combined system (Total/nfinp_scf) is as follows:

 1 0 0 0 0 0                         : Pt(111)(sqrt(3)xsqrt(3)) surface: 3-layer slab + 6-layer vacuum
     5.0000 15.0000   3  11  11      : gmax, gmaxp, ktyp, katm, katm2
     1    0                          : num_space_group, type
Cartesian
      7.914328000000      4.569339400000      0.000000000000
      0.000000000000      9.138678810000      0.000000000000
      0.000000000000      0.000000000000     38.772130530000
    06   06   01    1    1    1      :  K_mesh
     1    0                          : ncord,ninv : iwei,imdtyp,ityp
     -0.000000528145     -0.000042365186      3.767311679169    1    1    2
      0.000000053537      0.000002980474      5.986347591545    1    1    3
      0.000001949062     -0.000004500424      0.304140905344    1    1    1
      2.638113295845      4.569319798127     -0.057416250996    1    1    1
      5.276215081326      9.138653655057     -0.057417190317    1    1    1
      0.000000331528      3.046226811762     -4.302993798176    1    0    1
      2.638108391790      7.615566096905     -4.302992958162    1    0    1
      5.276218871886     12.184904590329     -4.302994638057    1    0    1
      0.000000000000     -3.046226270000     -8.616029010000    1    0    1
      2.638109330000      1.523113130000     -8.616029010000    1    0    1
      5.276218670000      6.092452540000     -8.616029010000    1    0    1
    78.00  0.50     15.9994 1 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     6.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     8.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
  0 0 0 0 0                          : icond, inipos, inivel, ininos, iniacc
     0    1                          : ipre, ipri
  1000 1000    0  60000.00    0      : nmd1,nmd2,last_iter,cpumax,ifstop
     6    1                          : way_mix mix_what
     0   30 0.60                     : iter_start, KBXMIX,  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20    : dtim1,dtim2,dtim3,dtim4,dtim
   400.00     4     1    5.00D-12    : dtio ,imdalg, iexpl, edelta
    -0.0020  1.00D+03    0           : width,forccr,istress
ggapbe     1                         : xctype,kspin
     1.00                            : destm
   101                               : nbztyp
     4    4    4                     : dummy
     4    4    4                     : dummy
    64                               : keg
     1                               : nextst
     0                               : dummy
     2                               : imsd
     0                               : evaluate_eko_diff
     0                               : npdosao
     0    0.0   

Input file for CO and Pt(111) are the followings.

CO (CO/nfinp_scf):

 1 0 0 0 0 0                         : CO molecule
     5.0000 15.0000   3  2  2      : gmax, gmaxp, ktyp, katm, katm2
     1    0                          : num_space_group, type
Cartesian
      7.914328000000      4.569339400000      0.000000000000
      0.000000000000      9.138678810000      0.000000000000
      0.000000000000      0.000000000000     38.772130530000
    06   06   01    1    1    1      :  K_mesh
     1    0                          : ncord,ninv : iwei,imdtyp,ityp
     -0.000000528145     -0.000042365186      3.767311679169    1    1    2
      0.000000053537      0.000002980474      5.986347591545    1    1    3
    78.00  0.50     15.9994 1 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     6.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     8.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
  0 0 0 0 0                          : icond, inipos, inivel, ininos, iniacc
     0    1                          : ipre, ipri
  1000 1000    0  60000.00    0      : nmd1,nmd2,last_iter,cpumax,ifstop
     6    1                          : way_mix mix_what
     0   30 0.60                     : iter_start, KBXMIX,  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20    : dtim1,dtim2,dtim3,dtim4,dtim
   400.00     4     1    5.00D-12    : dtio ,imdalg, iexpl, edelta
    -0.0020  1.00D+03    0           : width,forccr,istress
ggapbe     1                         : xctype,kspin
     1.00                            : destm
   101                               : nbztyp
     4    4    4                     : dummy
     4    4    4                     : dummy
     8                               : keg
     1                               : nextst
     0                               : dummy
     2                               : imsd
     0                               : evaluate_eko_diff
     0                               : npdosao
     0    0.0   

Pt (Pt/nfinp_scf):

 1 0 0 0 0 0                         : Pt(111)(sqrt(3)xsqrt(3)) surface
     5.0000 15.0000   3   9   9      : gmax, gmaxp, ktyp, katm, katm2
     1    0                          : num_space_group, type
Cartesian
      7.914328000000      4.569339400000      0.000000000000
      0.000000000000      9.138678810000      0.000000000000
      0.000000000000      0.000000000000     38.772130530000
    06   06   01    1    1    1      :  K_mesh
     1    0                          : ncord,ninv : iwei,imdtyp,ityp
      0.000001949062     -0.000004500424      0.304140905344    1    1    1
      2.638113295845      4.569319798127     -0.057416250996    1    1    1
      5.276215081326      9.138653655057     -0.057417190317    1    1    1
      0.000000331528      3.046226811762     -4.302993798176    1    0    1
      2.638108391790      7.615566096905     -4.302992958162    1    0    1
      5.276218871886     12.184904590329     -4.302994638057    1    0    1
      0.000000000000     -3.046226270000     -8.616029010000    1    0    1
      2.638109330000      1.523113130000     -8.616029010000    1    0    1
      5.276218670000      6.092452540000     -8.616029010000    1    0    1
    78.00  0.50     15.9994 1 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     6.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
     8.00  0.15     15.9994 3 1 0.0  : iatomn,alfa,amion,iloc,ivan,zeta1
  0 0 0 0 0                          : icond, inipos, inivel, ininos, iniacc
     0    1                          : ipre, ipri
  1000 1000    0  60000.00    0      : nmd1,nmd2,last_iter,cpumax,ifstop
     6    1                          : way_mix mix_what
     0   30 0.60                     : iter_start, KBXMIX,  MIX_ALPHA
     0.20  0.30  0.20  0.20  0.20    : dtim1,dtim2,dtim3,dtim4,dtim
   400.00     4     1    5.00D-12    : dtio ,imdalg, iexpl, edelta
    -0.0020  1.00D+03    0           : width,forccr,istress
ggapbe     1                         : xctype,kspin
     1.00                            : destm
   101                               : nbztyp
     4    4    4                     : dummy
     4    4    4                     : dummy
    56                               : keg
     1                               : nextst
     0                               : dummy
     2                               : imsd
     0                               : evaluate_eko_diff
     0                               : npdosao
     0    0.0   

SCF

In each subdirectories, perform SCF calculations to get CO/zaj.data, Pt/zaj.data, and Total/zaj.data. Then in the Total/directory, create symbolic links to subsytem wave functions as

ln -s ../CO/zaj.data zak1.data
ln -s ../Pt/zaj.data zak3.data

Then create a file called nfcoop.data, which looks like

1                    : KSPIN
20                   : KNV3
8      8    2   14   : NPDOSMO1 KPDOSMO1 KATM1 KLMTA1
0      0    0   0    : NPDOSMO2 KPDOSMO2 KATM2 KLMTA2
56     56   9   180  : NPDOSMO3 KPDOSMO3 KATM3 KLMTA3
-15.0  5.0  0.1 2001 : EMIN EMAX EDELTA NPDOSE

Description of the variables:

  • KSPIN: Number of spin components (1 for spin-unpolarized system, 2 for spin polarized system)
  • KNV3: Number of k-points generated in the SCF
  • NPDOSMO1: Number of bands (orbitals) for the subsystem #1
  • KPDOSMO1: Maximum number of bands (orbitals) for the subsystem #1
  • KATM1: Number of atoms in the subsystem #1
  • KLMTA1: Total number of projectors for the subsystem #1
  • NPDOSMO2: Number of bands (orbitals) for the subsystem #1 (if present, otherwise set 0)
  • KPDOSMO2: Maximum number of bands (orbitals) for the subsystem #1 (if present, otherwise set 0)
  • KATM2: Number of atoms in the subsystem #1 (if present, otherwise set 0)
  • KLMTA2: Total number of projectors for the subsystem #2 (if present, otherwise set 0)
  • NPDOSMO3: Number of bands (orbitals) for the subsystem #3 (substrate)
  • KPDOSMO3: Maximum number of bands (orbitals) for the subsystem #3 (substrate)
  • KATM3: Number of atoms in the subsystem #3 (substrate)
  • KLMTA3: Total number of projectors for the subsystem #3 (substrate)
  • EMIN: Minimum energy for DOS
  • EMAX: Maximum energy for DOS
  • DELTAE: Smearing width for DOS
  • NPDOSE: Energy mesh (number of energy points should be NPDOSE+1)

KLMTA* can be found in the STATE output files. Use grep to extract the parameter.

Overlap

Having prepared zak1.data, zak3.data, and nfcoop.data, execute STATE by setting ICOND=17 (see Total/nfinp_coop) to get coop_bij.data and coop_sij.data.

Further, use state2eg.pl (or state2eigen.pl) to extract the eigenvalues for the density of states calculation, for e.g.

state2eigen.pl nfout_scf > eko.data

in the directory Total/. The eigenvalue file should be always "eko.data" for the COOP program.

COOP

Finally, we use the program "coop_analysis" in the directory Total/ as

coop_analysis > coop.out

We get the densities of states projected onto the molecular orbitals (PDOS), gross population (GPOP), and COOP in the file "coop.out." PDOS can be extracted by executing

grep PDOS\: coop.out | awk -F\: '{print $2}' > pdos.dat

for GPOP and COOP

grep GPOP\: coop.out | awk -F\: '{print $2}' > gpop.dat
grep COOP\: coop.out | awk -F\: '{print $2}' > coop.dat

The format for PDOS, GPOP, and COOP is as follows

[Energy wrt Fermi level] [PDOS(MO#1)] [PDOS(MO#2)] [PDOS(MO#3)] ...

WARNING

Note that one always has to use the reciprocal space formulation for the nonlocal pseudopotential (NEXTST=1) for the COOP analysis, as only the reciprocal space formulation is implemented in the overlap calculation.

References

  • R. Hoffman, Mod. Phys. 60, 601 (1988).
  • H. Aizawa and S. Tsuneyuki, Surf. Sci. 399, L364 (1998).

添付ファイル: filestate2eigen.pl 253件 [詳細]
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-01-23 (月) 11:57:00 (452d)