Surfaces
A handfull of variables are used to customize prebuilt POSCARs (see tags for more info):
- VOLUME_$structure sets the volume per atom of the surfaces bulk counterpart (in Angstrom^3).
- C_A_RATIO_$structure sets the c/a ratio of the surfaces bulk counterpart (for hexagonal, tetragonal and orthorhombic crystal structures).
- B_A_RATIO_$structure sets the b/a ratio of the surfaces bulk counterpart (for orthorhombic crystal structures).
- SHIFT_$n_$structure for $n=1,2,... (in direct coordinates) store one or more shifts that are additionally needed to describe the atomic positions within some structures (like wurtzite or rutile).
- NUMBER_OF_LAYERS_$structure sets the number of atomic layers per surface slab (positive integer).
- VACUUM_SIZE_$structure sets the vacuum size between surface slabs (in Angstrom).
- LAYER_HIGHTS_$structure sets the hights of the atomic layers (string of numbers in Angstrom). When LAYER_HIGHTS_$structure = "defaulthights", the layer hights are automatically calculated from the above tags.
- SELECTIVE_DYNAMICS_DEPTH_$structure sets how many layers on both sides of the surface slab should be allowed to move.
$structure refers to the name of the surface structure in question. These names are made up of the name of the crystal and a suffix that contains the Miller indices to denote the direction of the surface. Typing $structure (after sourcing 23vaspAS) builds its POSCAR so you can easily inspect it.
Note that if you set VACUUM_SIZE_$structure = 0 and NUMBER_OF_LAYERS_$structure = number of atoms per building cell, most 23vaspAS functions will treat those surface cells as regular bulk crystals (most 23vaspAS functions adapt their proceses and output on the type of structure in question).
Currently available surfaces:
Name |
Atoms per building cell |
---|---|
bcc_100 | 2 |
bcc_110 | 2 |
bcc_111 | 3 |
fcc_100 | 2 |
fcc_110 | 2 |
fcc_111 | 3 |
hcp_001 | 2 |
hcp_100 | 4 |
diamond_100 | 4 |
Note that you can add the prefix "sup_" to any of these structures. In that case, its supercell will be used instead. Such supercells are treated as independent structures (i.e. VOLUME_sup_fcc_111 is independent of VOLUME_fcc_111 (which in turn is independent of VOLUME_fcc)).
- SUPERCELL_FACTOR_$structure sets the supercell factor (positive integer). Only works on structures with the "sup_" prefix!
Adsorption:
You can add an adsorbate to your (supercell) surface POSCAR by using the following function:
addadsorbate $molecule $2_D_array $2_D_integer_array $potentials_array
$molecule specifies the name of the molecule that shall be added. $2_D_array specifies the adsorption site in the form of direct coordinates within the primitive surface cell (see table below). $2_D_integer_array specifies the location of the subcell where the molecule shall be placed. $2_D_integer_array is given as two integers in the form of "i j" starting from "1 1". Lastly, $potentials_array sets the potcar of the molecule.
- ADSORPTION_DISTANCE_$molecule sets the distance between the added molecule $molecule and the surface (Angstrom).
This function also updates the potentials automatically. No need to do an extra "setpotcar".
You can add multiple molecules to the surface as needed.
Name |
Surface sites |
---|---|
bcc_100 | |
bcc_110 | |
bcc_111 | |
fcc_100 | |
fcc_110 | |
fcc_111 | top="0.666666 0.666666", hollow-hcp="0.333333 0.333333", hollow-fcc="0 0", bridge_1="0.166666 0.166666", bridge_2="0.833333 0.166666", bridge_3="0.166666 0.833333" |
hcp_001 | |
hcp_100 |
...