Per S. Schmidt and Kristian S. Thygesen
The Journal of Physical Chemistry C Article ASAP
This database contains the adsorption energies of 200 reactions involving 8 different adsorbates on 25 different transition metal surfaces at full coverage as well as the surface energies for the same surfaces. Various DFT functionals have been employed and compared to the results from manybody perturbation theory within the random phase approximation.
The adsorption reactions are
\(\mathrm{H}_2\mathrm{O} + \mathrm{slab} \rightarrow \mathrm{OH/slab} + \frac{1}{2} \mathrm{H}_2\)
\(\mathrm{CH}_4 + \mathrm{slab} \rightarrow \mathrm{CH/slab} + \frac{3}{2} \mathrm{H}_2\)
\(\mathrm{NO} + \mathrm{slab} \rightarrow \mathrm{NO/slab}\)
\(\mathrm{CO} + \mathrm{slab} \rightarrow \mathrm{CO/slab}\)
\(\mathrm{N}_2 + \mathrm{slab} \rightarrow \mathrm{N_2/slab}\)
\(\frac{1}{2}\mathrm{N}_2 + \mathrm{slab} \rightarrow \mathrm{N/slab}\)
\(\frac{1}{2}\mathrm{O}_2 + \mathrm{slab} \rightarrow \mathrm{O/slab}\)
\(\frac{1}{2}\mathrm{H}_2 + \mathrm{slab} \rightarrow \mathrm{H/slab}\)
and the surfaces include 3d transition metals from Scandium (Sc) to Zink (Zn), 4d from Yttrium (Y) to Cadmium (Cd) excluding Technetium (Tc) and 5d from Hafnium (Hf) to Gold (Au).
Per S. Schmidt and Kristian S. Thygesen
The Journal of Physical Chemistry C Article ASAP
The data can be obtained from the files:
Download raw data adsorption.db
and surfaces.db
And browsed online:
The adsorption energy is defined with respect to the adsorbate in its gas phase: \(E_{\text{ads}} = E_{\text{adsorbate@slab}}  (E_{\text{slab}} + E_{\text{adsorbate(g)}})\)
And the surface energy as: \(E_{\text{surf}} = \frac12 \bigg( E_{\text{slab}}  N_{\text{layers}} E_{\text{bulk}}\bigg)\), where the number of atomic layers in the slab is \(N_{\text{layers}} = 3\).
One example reaction that the adsorption energy is calculated for is:
\(\mathrm{CH}_4\mathrm{(g)} + \mathrm{Sc} \rightarrow \mathrm{CH/Sc} + \frac32 \mathrm{H}_2\mathrm{(g)}\)
In the database the adsorbate is then \(\mathrm{CH}\), the surface material is \(\mathrm{Sc}\), reference molecule 1 is \(\mathrm{CH}_4\) and reference molecule 2 is \(\mathrm{H}_2\). The adsorption energy is then \(E_{\text{ads}} = E_{\mathrm{CH/Sc}} (E_{\mathrm{Sc}} + E_{\mathrm{CH}_4\mathrm{(g)}}  \frac32 E_{\mathrm{H}_2\mathrm{(g)}})\).
key 
description 
unit 


Surface Material 


Adsorbate 


Reference molecule 1 


Reference molecule 2 


Adsorption energy with LDA 
eV 

Adsorption energy with PBE 
eV 

Adsorption energy with RPBE 
eV 

Adsorption energy with BEEFvdW 
eV 

Adsorption energy with vdWDF2 
eV 

Adsorption energy with mBEEF 
eV 

Adsorption energy with mBEEFvdW 
eV 

Adsorption energy with EXX 
eV 

RPA correlation adsorption energy extrapolated 
eV 
In the following script it is shown how to extract and plot adsorption and surface energies from the database files (adsorption.db, surfaces.db):
# creates: database_example.svg
import numpy as np
import matplotlib.pyplot as plt
import ase.db
adsorbate = 'NO'
slabs = ['Sc', 'Ti', 'Cu', 'Pd']
db = ase.db.connect('adsorption.db')
db_surf = ase.db.connect('surfaces.db')
labels = ['LDA', 'PBE', 'RPBE', 'BEEFvdW', 'RPA']
markers = ['o', 's', 'v', 'D', 'x']
markersize = [10, 10, 10, 10, 12]
mews = [1, 1, 1, 1, 4]
cols = ['r', 'k', 'b', 'g']
plt.figure()
for ii, slab in enumerate(slabs):
rows = db.select(adsorbate=adsorbate)
adss = []
for row in rows:
if row.symbols[0] == slab:
adss.append(row.LDA_adsorp)
adss.append(row.PBE_adsorp)
adss.append(row.RPBE_adsorp)
adss.append(row.BEEFvdW_adsorp)
adss.append(row.RPA_EXX_adsorp)
rows_surf = db_surf.select(surf_mat=slab)
surfs = []
for row in rows_surf:
surfs.append(row.LDA_surf)
surfs.append(row.PBE_surf)
surfs.append(row.RPBE_surf)
surfs.append(row.BEEFvdW_surf)
surfs.append(row.RPA_EXX_surf)
for i in range(len(adss)):
if ii == 0:
plt.plot(surfs[i], adss[i], color='darkgray',
marker=markers[i], markersize=markersize[i],
mew=mews[i], label=labels[i])
plt.plot(surfs[i], adss[i], color=cols[ii],
marker=markers[i], markersize=markersize[i], mew=mews[i])
p = np.polyfit(surfs[:1],
adss[:1],
deg=1)
plt.plot([surfs[2], surfs[0]],
p[0] * np.array([surfs[2], surfs[0]]) + p[1],
color=cols[ii])
plt.annotate(slabs[ii], (surfs[1] + 0.02, adss[1]), color=cols[ii],
size=14)
plt.legend(loc='lower left', numpoints=1, prop={'size': 14})
plt.title('NO adsorption', size=18)
plt.ylim([3.5, 0])
plt.xlim([0.3, 1.1])
plt.xlabel(r'$E_{\sigma}$ (eV)', size=22)
plt.ylabel(r'$E_{\mathrm{ads}}$ (eV)', size=22)
plt.xticks(size=18)
plt.yticks(size=18)
plt.tight_layout()
plt.savefig('database_example.svg', dpi=500)
Which should generate the following figure showing the adsorption versus surface energy for NO adsorption on four different transition metals:
The surfaces were modeled using three layers with the bottom two layers fixed at the fcc PBE lattice constants from materialsproject.org and the position of the top layer relaxed. The position of the adsorbate was relaxed keeping all three surface layers fixed at the position found previously. All relaxations were carried out with the BFGS algorithm using the PBE approximation to the xcfunctional with a force convergence criteria of 0.05 eV/Å. The electron temperature was 0.01 eV and spinpolarized calculations were performed for calculations involving Fe, Ni or Co. 5 Å of vacuum was added to either side of the adsorbate to avoid artificial interactions between neighboring layers following convergence tests at both the DFT and RPA level. The adsorption energies are relative to the molecule in its gas phase and the calculations for the isolated molecules were carried out in a \(6\times6\times6\) Å \(^3\) box fully relaxing the geometry with the PBE functional.
The RPA calculations were carefully converged with respect to plane wave basis using the following extrapolation scheme: In the following figure, the black dots are from a calculation with \(6\times6\times1\) kpoints (not enough to achieve convergence) but high cutoff energies (300, 400, 500 eV). The green circle is a calculation at a much denser kpoint sampling of \(12\times12\times1\) (converged). From these four circles, the two green crosses are predicted which allow for an extrapolation to infinite cutoff energy. The red dots represent actual calculations with both a dense kpoint grid and high cutoff energies to test the extrapolation scheme. The error introduced by the extrapolation scheme for this particular system is seen to be 0.013 eV. The kpoint grid of \(12\times12\times1\) ensures that the exchange + correlation energy is converged to within 0.02 eV with respect to the kpoint density.