# Lateral interactions energies¶

Computation of lateral interactions between adsorbed species is a complicated task. Most of empitical potentials such as COMPASS, AMBER, Dreiding, CHARMM are not fitted to reproduce on-surface structures. Surface influence complicates energy lapndscape. It is especially true for metallic surfaces with non-localized electrons. DFT computations may be of utility, but due to long-range surface-mediated interactions in is necessary to conduct computations on very big slabs to avoid interactions between periodic images. For highly symmetric adsoption complexes it is handy to derive pairwise interactions from DFT energies of small slabs with various coverages, but you still need to know how long is the range of interactions and how many non-negligible members are in the hamiltonian.

SuSMoST provides a calc-energies utility that can be used for straightforward computation of samples energies. Typical usage is the following:

./utils/calc-energies -d <model directory> -c <calculator> <calculator arguments>


Here <model directory> is the directory with samples populated by the make-ac-samples utility, and <calculator> is one of the following lateral energy calculators:

 HSPH Hard-sphere calculator. Returns inf energy for samples with too close adsorbates. HP Hyldgaard-Persson potential calculator for surface-mediated long-range oscillating interactions. Also considers dipole-dipole interactions (see CO/Pt(111) example) and hard-sphere repulsions. This is a radially symmetric potential and the distance is computed between centers of mass of adsoption complexes. GPAW GPAW calculator from calculator/dft.py script. QE Quantum Espresso calculator from calculator/dft.py script.

Also you can use your own calculator providing special Python script that defines function named calc_energy() with the following alguments:

def calc_energy(atoms, args):
...
return atoms_energy


Here atoms is an ASE’s Atoms object that contains a sample to be calculated. args contains command line arguments of the calc-energies utility, they can be either ignored or used at user’s discretion. The function should return energy (free or enthalpy) of the atoms object. To use the custom calculator script, calc-energies should be invoked in this way:

./utils/calc-energies -d <model directory> -S custom_script.py


QE and GPAW calculators work the same way using calculators/dft.py script. The file calculators/simple_gpaw_calculator.py is an example of the simplest custom calculator script.

Command line arguments of calc-energies can be used to configure calculators.

## Arguments for HSPH calculator¶

 --hsph-r  [HSPH_R [HSPH_R ...]] Specify hard-sphere radii for adsorbate atoms. Should be done in element-wise manner. For example --hsph-r H=0.5 O=1.3: here hard-sphere radius of hydrogen atoms is set to be 0.5 Å, oxygen - 1.3 Å. By default element’s radii are considered to be zero. Hard-sphere repulsions are considered only between atoms in different adsorption complexes.

## Arguments for HP calculator¶

 --HP-eps [HP_EPS] Fermi energy parameter $$\epsilon_F$$ in Hyldgaard-Persson potential. Default value is 0.0, than completely disables this kind of interactions. This parameter is the same for all adsoption complexes. --HP-qF [HP_QF] In-surface Fermi wavevector $$q_F$$ in Hyldgaard-Persson potential. Default value is 0.2. This parameter is the same for all adsoption complexes. --HP-dF [HP_DF] Fermi-level phase shift $$d_F$$ in Hyldgaard-Persson potential. Default value is 0.0. This parameter is the same for all adsoption complexes. --HP-mu [HP_MU [HP_MU ...]] Dipole moment for dipole-dipole interactions. It is considered by HP calculator along with Hyldgaard-Persson potential as the following addition: $$\frac{\mu_1 \mu_2}{r^3}$$. Please, note that Coulomb constant is not included. This parameter should be specified for each adsorption complex. For example --HP-mu ontop=0.4  bridge=-0.4 here ontop and bridge are names of adsortion complexes. Default value is 0.0.

HP calculator also respects HSPS parameters.

Example of energy calculation for a CO/Pt(111) model with two types of adsorption complexes (ontop and bridge):

./utils/calc-energies -c HP -d CO-Pt111-bridge --hsph-r O=1.3 --HP-mu ontop=0.4  bridge=-0.4

Here --HP-eps is taken by default to be zero, so long-range interactions are ignored. --hsph-r O=1.3 argument forbids too close allocation of adsorbate, that otherwise could happen due to dipole-dipole attraction between atop and bridge adsoption complexes.


## Arguments for GPAW and QE calculators¶

These calculator are both based on the Density Functional Theory, so they share most of their arguments. Unlike HP and HSPH, these calculators are able to do geometric relaxation of samples. If some particular sample is unstable and geometric relaxation causes too large distortion of adsoption complexes then the sample is considered forbidden and its energy is returned to be inf.

 --relax [{No,BFGS,GPMin,FIRE,MDMin,BFGSLineSearch}] Local optimizer for structure relaxation or No if relaxation should be skipped. default=BFGS Relaxed structures are saved in subdirectory .relaxed under samples_dir --perturbation [PERTURBATION] Perturbation of atoms before relaxation to avoid stucking on saddle points. default=0.01 --fmax [FMAX] Maximum force for relaxation stopping criterion --max-rlx-shift [MAX_RLX_SHIFT] Maximum atom shift on relaxation. Larger shifts considered as infinite repulsion inf. --beta [BETA] Density mixing coefficient for DFT calculators: larger - faster, smaller - more stable. default=0.01 --xc [XC] XC functional (LDA, PBE, …) --Ecut [ECUT] Cut-off kinetic energy for planewave basis [eV], default=400. --smearing-width [SMEARING_WIDTH] Smearing width [eV], default=0.1.

Of course, these set of arguments do not exhaust all parameters of DFT computations, so feel free to modify the calculator script calculators/dft.py for advanced tuning of DFT calculators.