6.8. geom with VASP
Tip
VASP is useful for clusters in periodic systems, like surface-supported, or zeolite-absorbed systems. You’d better have some experience of condensed-phase physics or solid quantum chemistry before reading this section.
To use VASP with geom, you need two files: misc/runVASP.py.
misc/runVASP.py is a script to call VASP. There are ONLY 2 things that you need to change:
1vaspcmd = "vasp_std"
2pbc = [[8.1426336762816440, 0.0000000000000000, 0.0000000000000000],
3 [-4.0677955560985355, 7.0495917923679352, 0.0000000000000000],
4 [0.0000000000000000, 0.0000000000000000, 30.0000000000000000]]
You need to change vaspcmd to the correct VASP calling command on your computer, and pbc to the cell sizes of your system.
As usual, you should prepare INCAR, POTCAR, and KPOINTS for running VASP calculations.
6.8.1. Example: Se3 on C2N
Tip
The sample input and output files can be found in testfiles/geom/11-c2n-vasp.
Let’s see how 3 \(\text{Se}\) are distributed over the surface of \(\text{C}_2\text{N}\). The structure of \(\text{C}_2\text{N}\) is
118
2C2N
3N 0.64116352 3.56117427 5.67809614
4N 2.69450515 2.34860406 5.67308619
5N 2.71754532 4.73169504 5.67345986
6N 5.41920549 2.39517656 5.67702623
7N 5.39621102 0.01223017 5.67804973
8N -0.67007960 1.18256295 5.67743531
9C 1.31336867 2.33226424 5.68025714
10C 1.32380529 4.76901081 5.68336725
11C 3.42905165 3.53718653 5.67716633
12C 4.68474934 1.20655351 5.67969992
13C 6.78995796 -0.02520025 5.68329936
14C -1.34242672 2.41165268 5.68568288
15C 4.79530371 3.61561247 5.68882985
16C 3.31831615 1.12807079 5.68711514
17C 0.69185103 1.10770299 5.68930373
18C -0.72092338 3.63609485 5.69624406
19C 3.47041412 5.87283681 5.69021702
20C 0.57555247 5.92048738 5.69537016
This is the Cartesian coordinates of \(\text{C}_2\text{N}\). If you add cell sizes to build a POSCAR and visualize it, the structure is like below:
The selenium atom is:
11
2Se
3Se 0 0 0
The input file is:
1lm_dir c2nse3 # Save the local minima to this folder.
2num_calcs 20 # Total number of calculations.
3do_coarse_opt yes # no: Do NOT the coarse optimization.
4min_energy_gap 1.E-4 # When two energies differ smaller than
5 # this value, they are treated as identical.
6 # A negative number means do not remove
7 # energetically degenerated ones.
8max_geom_iters 3000 # The maximum number of iterations for local optimization.
9 # If it is less or equal than zero, then the number is unlimited.
10
11components
12 c2n.xyz 1
13 fix 0 0 5 0 0 0
14 ****
15 se.xyz 3
16 random 0 0 6 6 6 8
17 ****
18end
19
20commands
21python runVASP.py $inp$ $out$ $xxx$
22end
In this input file, we fix \(\text{C}_2\text{N}\) at (0, 0, 5) without rotations, and let the selenium atoms distribute randomly above the surface.
Make sure in the current directory you have prepared runVASP.py, INCAR, POTCAR, and KPOINTS.
Now you can run the global optimization:
$ geom c2nse3.inp > c2nse3.out
This is a quite long job. For me, it took 9 days. After the optimization, the end of c2nse3.out is
-- Result Report --
Results are energy-increasingly reordered.
Structures of energies within 1.000E-04 are treated as degenerate.
All minima are saved to "c2nse3".
-------------------------------------------------------------------
# index Energy NaiveRMSD
-------------------------------------------------------------------
0 17 -159.07404300 0.00000000
1 2 -158.74814600 1.24247428
2 7 -158.74802600 2.12024945
3 16 -158.74768300 3.16425048
4 14 -158.73993100 3.01598380
5 15 -158.73965600 2.06890365
6 19 -158.72750400 2.06285077
7 13 -158.72533900 1.12698497
8 9 -157.98449500 3.90976227
The first one, c2nse3/17.xyz, seems to have a too low energy compared with others, and c2nse3/2.xyz seems to be more reasonable. Indeed, below we can see that in c2nse3/17.xyz, a selenium atom forms bond to the surface and induces great deformation. In c2nse3/2.xyz, the tiny selenium cluster stay in the hole of the surface, which may probably be what we expect.