#author("2025-09-02T13:11:23+09:00","default:StatE","StatE") #author("2025-09-02T14:03:28+09:00","default:StatE","StatE") * CO/Cu(110)Interface [#x577f6fb] #Contents ** Introduction [#z3a5c3bb] In this document, how to perform the vibrational analysis of atoms and molecules adsorbed on a surface using the finite difference (frozen phonon) method, by taking CO adsorbed on Cu(110). Here, in addition to the adsorbed CO molecule, the Cu atom underneath is also taken into account. The system is modeled using a 4-layer Cu(110) slab. Below is the input file of a CO adsorbed Cu(110) surface, which is already optimized. CO molecule and Cu atoms in the first and second layers of the slab was optimized. ** Input file [#l3f09e64] - ''nfinp.data'' WF_OPT DAV NTYP 3 NATM 32 GMAX 6.00 GMAXP 20.00 KPOINT_MESH 4 4 1 KPOINT_SHIFT 1 1 0 NSTEP 200 MIX_ALPHA 0.30 SMEARING MP WIDTH 0.010 EDELTA 1.D-10 NEG 196 XCTYPE vdW-DF2 ESM_BC BC1 CPUMAX 1600.0 &CELL 15.098909039006 0.000000000000 0.000000000000 0.000000000000 14.235387960000 0.000000000000 0.000000000000 0.000000000000 50.329696796687 &END &ATOMIC_SPECIES Cu 63.54000 pot.Cu_pbe1 C 12.01115 pot.C_pbe1 O 15.99940 pot.O_pbe1 &END &ATOMIC_COORDINATES CARTESIAN 0.000003823996 -0.000001138123 3.702323615193 1 1 2 0.000010283052 -0.000006912305 5.897216927318 1 1 3 0.000000351042 -0.000002382316 0.053467056659 1 1 1 5.089242487895 -0.000001108633 -0.208242367820 1 1 1 10.009661676277 0.000001103467 -0.208241073609 1 1 1 0.000001196465 7.117696353327 -0.191027901816 1 1 1 5.012492707154 7.117697566474 -0.167155951780 1 1 1 10.086413584750 7.117696561458 -0.167155627900 1 1 1 2.507494428154 3.538363991660 -2.421985716480 1 1 1 7.549453707970 3.590875576905 -2.405963340815 1 1 1 12.591415007976 3.538365483794 -2.421988185457 1 1 1 2.507492583039 10.697023879015 -2.421990853447 1 1 1 7.549453621923 10.644515276442 -2.405964405967 1 1 1 12.591413959874 10.697024958358 -2.421982246650 1 1 1 0.000000000000 0.000000000000 -5.032969700311 1 0 1 5.032969700311 0.000000000000 -5.032969700311 1 0 1 10.065939338757 0.000000000000 -5.032969700311 1 0 1 0.000000000000 7.117693980003 -5.032969700311 1 0 1 5.032969700311 7.117693980003 -5.032969700311 1 0 1 10.065939338757 7.117693980003 -5.032969700311 1 0 1 2.516484819239 3.558846990002 -7.549454519543 1 0 1 7.549454519543 3.558846990002 -7.549454519543 1 0 1 12.582424219851 3.558846990002 -7.549454519543 1 0 1 2.516484819239 10.676540969990 -7.549454519543 1 0 1 7.549454519543 10.676540969990 -7.549454519543 1 0 1 12.582424219851 10.676540969990 -7.549454519543 1 0 1 0.000000000000 0.000000000000 -10.065939338757 1 0 1 5.032969700311 0.000000000000 -10.065939338757 1 0 1 10.065939338757 0.000000000000 -10.065939338757 1 0 1 0.000000000000 7.117693980003 -10.065939338757 1 0 1 5.032969700311 7.117693980003 -10.065939338757 1 0 1 10.065939338757 7.117693980003 -10.065939338757 1 0 1 &END ** Vibrational analysis [#l50a32b0] For the vibrational analysis, we need to construct a dynamical matrix and diagonalize it. In the STATE run, we add the following line to perform the vibrational mode analysis. TASK VIB In addition, we need to create a file called `nfvibrate.data`. -- Example of ''nfvibrate.data'' #1 1 0.10D+01 1 1 0.0200000000 0.0000000000 0.0000000000 1 -0.10D+01 1 1 0.0200000000 0.0000000000 0.0000000000 --- line #1 1 0.10D+01 1 Column #1: index of atom to be displaced Column #2: factor (magnitude) for the displacement Column #1: number of atoms to be displaced~ Column #2: factor (magnitude) for the displacement~ Column #3: dummy variable --- line #2 1 0.0200000000 0.0000000000 0.0000000000 Column #1:atom index Column #1:atom index~ Column #2-4 displacement vector in the cartesian coordinate. Actual displacement is the vector multiplied by the factor (magnitude) specified in the line #1 ...~ All the necessary displacement vectors should be given in `nfvibrate.data`. Usually, we give a pair of plus and minus displacements. -- Example of ''nfvibrate.data'' #2 3 0.10D+01 1 1 0.0018516229 -0.1016200502 -0.0086543879 2 0.0042681410 -0.2329208549 -0.0086375658 3 0.0003210803 0.0063360252 -0.0068488877 3 -0.10D+01 1 1 0.0018516229 -0.1016200502 -0.0086543879 2 0.0042681410 -0.2329208549 -0.0086375658 3 0.0003210803 0.0063360252 -0.0068488877 If ''nfvibrate.data'' is not found, `STATE` assumes that all the atoms are displaced, generates `nfvibrate.data`, and run the vibrational analysis. If you want to limit the number of displaced atoms, following option can be used: &VIBRATION ATOM 1-3 &END In this example, atoms #1, #2, and #3 are displaced. Currently, it is possible to specify the consecutive atoms, and therefore, if you want to displace a certain atoms, it is better to reorder the atomic positions, or otherwise you have to generate `nfvibrate.data` by yourself. *** Input file for the vibrational analysis. [#y00e141f] Below is an input file for the vibrational analysis, in which CO and Cu atom underneath is considered. - ''nfinp_vib'' TASK VIB WF_OPT DAV NTYP 3 NATM 32 GMAX 6.00 GMAXP 20.00 KPOINT_MESH 4 4 1 KPOINT_SHIFT 1 1 0 NSTEP 200 MIX_ALPHA 0.30 SMEARING MP WIDTH 0.010 EDELTA 1.D-10 NEG 196 XCTYPE vdW-DF2 ESM_BC BC1 CPUMAX 1600.0 &VIBRATION ATOM 1-3 &END &CELL 15.098909039006 0.000000000000 0.000000000000 0.000000000000 14.235387960000 0.000000000000 0.000000000000 0.000000000000 50.329696796687 &END &ATOMIC_SPECIES Cu 63.54000 pot.Cu_pbe1 C 12.01115 pot.C_pbe1 O 15.99940 pot.O_pbe1 &END &ATOMIC_COORDINATES CARTESIAN 0.000003823996 -0.000001138123 3.702323615193 1 1 2 0.000010283052 -0.000006912305 5.897216927318 1 1 3 0.000000351042 -0.000002382316 0.053467056659 1 1 1 5.089242487895 -0.000001108633 -0.208242367820 1 1 1 10.009661676277 0.000001103467 -0.208241073609 1 1 1 0.000001196465 7.117696353327 -0.191027901816 1 1 1 5.012492707154 7.117697566474 -0.167155951780 1 1 1 10.086413584750 7.117696561458 -0.167155627900 1 1 1 2.507494428154 3.538363991660 -2.421985716480 1 1 1 7.549453707970 3.590875576905 -2.405963340815 1 1 1 12.591415007976 3.538365483794 -2.421988185457 1 1 1 2.507492583039 10.697023879015 -2.421990853447 1 1 1 7.549453621923 10.644515276442 -2.405964405967 1 1 1 12.591413959874 10.697024958358 -2.421982246650 1 1 1 0.000000000000 0.000000000000 -5.032969700311 1 0 1 5.032969700311 0.000000000000 -5.032969700311 1 0 1 10.065939338757 0.000000000000 -5.032969700311 1 0 1 0.000000000000 7.117693980003 -5.032969700311 1 0 1 5.032969700311 7.117693980003 -5.032969700311 1 0 1 10.065939338757 7.117693980003 -5.032969700311 1 0 1 2.516484819239 3.558846990002 -7.549454519543 1 0 1 7.549454519543 3.558846990002 -7.549454519543 1 0 1 12.582424219851 3.558846990002 -7.549454519543 1 0 1 2.516484819239 10.676540969990 -7.549454519543 1 0 1 7.549454519543 10.676540969990 -7.549454519543 1 0 1 12.582424219851 10.676540969990 -7.549454519543 1 0 1 0.000000000000 0.000000000000 -10.065939338757 1 0 1 5.032969700311 0.000000000000 -10.065939338757 1 0 1 10.065939338757 0.000000000000 -10.065939338757 1 0 1 0.000000000000 7.117693980003 -10.065939338757 1 0 1 5.032969700311 7.117693980003 -10.065939338757 1 0 1 10.065939338757 7.117693980003 -10.065939338757 1 0 1 &END COLOR(red){Note that you have to set the actual atomic mass for the vibrational analysis. This is different from the geometry optimization, in which we sometimes use artifical atomic masses.} *** Restart [#n51b8c96] In case all the calculations are not finished within the defined time, we need to restart the calculation. In such a case, use the keyword RESTART Or TASK RESTART_VIB When you restart the calculation, new data (forces) will be appended to the exsisting ''nfforce.data''. Please carefully check if the data `nfforce.data` is OK or not. Also, please make sure ''nfforce.data'' does not exist, when you start the vibrational analysis from scratch. *** Calculation of the vibrational frequencies using the ''GiF'' program [#fed150f7] Once all the calculations are done, it is possible to calculate the vibrational frequencies using the ''GiF'' program as follows. gif -f nfforce.data