- 追加された行はこの色です。
- 削除された行はこの色です。
*Cl on Al(100) [#od195485]
In this example, geometry optimization of Cl atom on Al(100) is performed.
The surface is modeled by a three-layer slab with the surface unit cell of (1x1) and the Cl atom is placed at the atop site of Al(100).
This is followed by vibrational mode analysis of the adsorbed Cl atom.
**Geometry optimization [#g5e21d8d]
- Input file (nfinp_1)
1 0 0 0 0 0
4.00 10.00 2 7 7 : GMAX GMAXP NTYP NATM NATM2
1 0 : NUMBER OF SPACE GROUP TYPE OF BRAVIS LATTICE
CARTESIAN
7.6534000000 0.0000000000 00.0000000000
0.0000000000 7.6534000000 00.0000000000
00.0000000000 00.0000000000 30.6136000000
4 4 1 2 2 1 : KNX KNY KNZ K-POINT SHIFT
1 0 : NCORD NINV
0.0000000000 3.8267000000 4.0000000000 1 1 2
0.0000000000 3.8267000000 0.0000000000 1 1 1
3.8267000000 0.0000000000 0.0000000000 1 1 1
0.0000000000 0.0000000000 -3.8267000000 1 0 1
3.8267000000 3.8267000000 -3.8267000000 1 0 1
0.0000000000 3.8267000000 -7.6534000000 1 0 1
3.8267000000 0.0000000000 -7.6534000000 1 0 1
13 0.15 26.9815 3 1 0.00 : IATOMN ALFA AMION ILOC IVAN ZETA
17 0.15 35.4527 3 1 0.00 : IATOMN ALFA AMION ILOC IVAN ZETA
0 0 0 0 0 : ICOND INIPOS INIVEL ININOS INIACC
0 1 : IPRE IPRI
100 200 0 57200.00 0 : NMD1 NMD2 ITER_LAST CPUMAX IFSTOP
3 1 : WAY_MIX MIX_WHAT
0 20 0.8 : STARTING_MIXING KBXMIX ALPHA
0.60 0.50 0.60 0.70 1.00 : DTIM1 DTIM2 DTIM3 DTIM4 DTIM_LAST
600.00 4 1 0.10D-08 : DTIO IMDALG IEXPL EDELTA
-0.002 0.10D-02 0 : WIDTH FORCCR ISTRESS
ggapbe 1 : XCTYPE NSPIN
1.00 : DESTM N_STM
101 : NBZTYP
0 0 0 : NKX NKY NKZ (DUMMY)
0 0 0 : NKX2 NKY2 NKZ2 (DUMMY)
16 : NEG
1 : NEXTST(MB)
0 : DUMMY
2 : IMSD
0 : EVALUATE_EKO_DIFF
0 : NPDOSAO
0 0.00
- Job script (qsub1.sh)
#$ -S /bin/sh
#$ -cwd
#$ -pe fillup 6
#$ -N Al100-Cl
#disable OPENMP parallelism
OMP_NUM_THREADS=1
# execuable of the STATE code
ln -fs ../../../src/STATE
# pseudopotential data
ln -fs ${HOME}/STATE/gncpp/pot.Al_pbe1 fort.37
ln -fs ${HOME}/STATE/gncpp/pot.Cl_pbe1 fort.38
# launch STATE
mpirun -np $NSLOTS ./STATE < nfinp_1 > nfout_1
- Output file (nfout_1)~
The maximum force is monitored by
$ grep -A1 f_max nfout_1
and get
NIT TotalEnergy f_max f_rms edel vdel fdel
1 -27.41198444 0.017835 0.015239 0.20D-09 0.22D-07 0.10D-09
--
...
--
NIT TotalEnergy f_max f_rms edel vdel fdel
16 -27.41380898 0.002821 0.001976 0.25D-09 0.13D-07 0.94D-10
--
NIT TotalEnergy f_max f_rms edel vdel fdel
17 -27.41384275 0.000594 0.000369 0.54D-09 0.46D-07 0.26D-09
Use the geometry written in GEOMETRY to generate a new input file for the following vibrational mode analysis.
** Vibrational mode analysis [#kfb7b4a0]
- Input file (nfinp_2)
1 0 0 0 0 0
4.00 10.00 2 7 7 : GMAX GMAXP NTYP NATM NATM2
1 0 : NUMBER OF SPACE GROUP TYPE OF BRAVIS LATTICE
CARTESIAN
7.6534000000 0.0000000000 00.0000000000
0.0000000000 7.6534000000 00.0000000000
00.0000000000 00.0000000000 30.6136000000
4 4 1 2 2 1 : KNX KNY KNZ K-POINT SHIFT
1 0 : NCORD NINV
-0.000000251836 3.826701578025 4.049619608896 1 1 2
-0.000001836163 3.826699462952 -0.045772180307 1 1 1
3.826699127649 0.000000430959 -0.233606043422 1 1 1
0.000000000000 0.000000000000 -3.826700000000 1 0 1
3.826700000000 3.826700000000 -3.826700000000 1 0 1
0.000000000000 3.826700000000 -7.653400000000 1 0 1
3.826700000000 0.000000000000 -7.653400000000 1 0 1
13 0.15 26.9815 3 1 0.00 : IATOMN ALFA AMION ILOC IVAN ZETA
17 0.15 35.4527 3 1 0.00 : IATOMN ALFA AMION ILOC IVAN ZETA
0 0 0 0 0 : ICOND INIPOS INIVEL ININOS INIACC
0 1 : IPRE IPRI
100 200 0 57200.00 0 : NMD1 NMD2 ITER_LAST CPUMAX IFSTOP
3 1 : WAY_MIX MIX_WHAT
0 20 0.8 : STARTING_MIXING KBXMIX ALPHA
0.60 0.50 0.60 0.70 1.00 : DTIM1 DTIM2 DTIM3 DTIM4 DTIM_LAST
600.00 3 1 0.10D-08 : DTIO IMDALG IEXPL EDELTA
-0.002 0.10D-02 0 : WIDTH FORCCR ISTRESS
ggapbe 1 : XCTYPE NSPIN
1.00 : DESTM N_STM
101 : NBZTYP
0 0 0 : NKX NKY NKZ (DUMMY)
0 0 0 : NKX2 NKY2 NKZ2 (DUMMY)
16 : NEG
1 : NEXTST(MB)
0 : DUMMY
2 : IMSD
0 : EVALUATE_EKO_DIFF
0 : NPDOSAO
0 0.00
For the vibrational mode analysis, use IMDALG=3. In addition, the following "nfvibrate.data" is needed, which specfies the atomic displacement in the cartesian coordinate.
-nfvibrate.data
1 1.0d0
1 0.0000000000 0.0000000000 0.000000000000
1 1.0d0
1 0.1000000000 0.0000000000 0.000000000000
1 -1.0d0
1 0.1000000000 0.0000000000 0.000000000000
1 1.0d0
1 0.0000000000 0.1000000000 0.000000000000
1 -1.0d0
1 0.0000000000 0.1000000000 0.000000000000
1 1.0d0
1 0.0000000000 0.0000000000 0.100000000000
1 -1.0d0
1 0.0000000000 0.0000000000 0.100000000000
The format is as follows
[index for the displacement (dummy)] [factor for the displacement #1]
[index for the displaced atom #1] [X displacement] [Y displacement] [Z displacement]
...
[index for the displaced atom #N] [X displacement] [Y displacement] [Z displacement]
[index for the displacement (dummy)] [factor for the displacement #2]
[index for the displaced atom #2] [X displacement] [Y displacement] [Z displacement]
...
[index for the displaced atom #N] [X displacement] [Y displacement] [Z displacement]
...
Atomic displacements are defined by the given displacements times the factor.
In this example, the first displacement is zero, to check the calculated forces are small enough and thus to check the given atomic coordinates are indeed equilibrium ones.
The vibration of the adsorbed Cl atom is considered and the displacements of the surface Al atoms are not considered here.
- Job script (qsub.sh)
#$ -S /bin/sh
#$ -cwd
#$ -pe fillup 6
#$ -N Al100-Cl
#disable OPENMP parallelism
OMP_NUM_THREADS=1
# execuable of the STATE code
ln -fs ../../../src/STATE
# pseudopotential data
ln -fs ${HOME}/STATE/gncpp/pot.Al_pbe1 fort.37
ln -fs ${HOME}/STATE/gncpp/pot.Cl_pbe1 fort.38
# launch STATE
mpirun -np $NSLOTS ./STATE < nfinp_2 > nfout_2
- Output file (nfout_2)~
To calculate the vibrational frequencies, the forces should be extracted.
To do so, util/state2md.sh is used. In this example,
$ ../util/state2md.sh nfout_2 > MD_2.dat
to get "MD_2.dat." Further, we need to edit "MD_2.dat" to add the number of atoms, number of modes considered, and atomc mass (in a.m.u), which looks like
7 3
36 27 27 27 27 27 27
2
1 0.100000 3.826702 4.049620 -0.00005 -0.00000 0.00075
2 -0.000002 3.826699 -0.045772 -0.00043 0.00000 -0.00031
3 3.826699 0.000000 -0.233606 0.00033 -0.00000 0.00024
4 0.000000 0.000000 -3.826700 0.00021 -0.00000 0.00030
5 3.826700 3.826700 -3.826700 -0.00005 0.00000 0.00031
6 0.000000 3.826700 -7.653400 0.00020 0.00000 -0.00156
7 3.826700 0.000000 -7.653400 -0.00021 -0.00000 0.00028
...
The first and second columns in the first line indicate the number of atoms and vibrational modes, respectively, and the second line, atomic masses for all atoms in the atomic mass unit.
Then use the program "gif" to calculate the vibrational frequencies by diagonalizing the dynamical matrix.
This can be done by performing
$ ../../util/Vibration/src/gif < MD_2.dat > MD_2.out
The vibrational frequency can be found in "MD_2.out" as
=======
SUMMARY
=======
MODE WR : NU(meV) NU(cm-1)
1 0.14D-04 : 2.37 19.09
2 0.14D-04 : 2.37 19.09
3 0.36D-02 : 38.15 307.73
Normal modes are printed in the standard output as well as the file "vib.data,." which can be used for further analysis and visualization of the vibrational mode analysis.