Supplemental Information

This notebook is intended to serve as a supplement to the manuscript "High-throughput workflows for determining adsorption energies on solid surfaces." It outlines basic use of the code and workflow software that has been developed for processing surface slabs and placing adsorbates according to symmetrically distinct sites on surface facets.


To use this notebook, we recommend installing python via Anaconda, which includes jupyter and the associated iPython notebook software.

The code used in this project primarily makes use of two packages, pymatgen and atomate, which are installable via pip or the matsci channel on conda (e. g. conda install -c matsci pymatgen atomate). Development versions with editable code may be installed by cloning the repositories and using python develop.

Example 1: AdsorbateSiteFinder (pymatgen)

An example using the the AdsorbateSiteFinder class in pymatgen is shown below. We begin with an import statement for the necessay modules. To use the MP RESTful interface, you must provide your own API key either in the MPRester call i.e. mpr=MPRester("YOUR_API_KEY") or provide in in your .pmgrc.yaml configuration file. API keys can be accessed at under your "Dashboard."

We create a simple fcc structure, generate it's distinct slabs, and select the slab with a miller index of (1, 1, 1).

We make an instance of the AdsorbateSiteFinder and use it to find the relevant adsorption sites.

We visualize the sites using a tool from pymatgen.

Use the AdsorbateSiteFinder.generate_adsorption_structures method to generate structures of adsorbates.

Example 2: AdsorbateSiteFinder for various surfaces

In this example, the AdsorbateSiteFinder is used to find adsorption sites on different structures and miller indices.

Example 3: Generating a workflow from atomate

In this example, we demonstrate how MatMethods may be used to generate a full workflow for the determination of DFT-energies from which adsorption energies may be calculated. Note that this requires a working instance of FireWorks and its dependency, MongoDB. Note that MongoDB can be installed via Anaconda.

Import the necessary workflow-generating function from atomate:

Adsorption configurations take the form of a dictionary with the miller index as a string key and a list of pymatgen Molecule instances as the values.

Workflows are generated using the a slab a list of molecules.

The workflow may be inspected as below. Note that there are 9 optimization tasks correponding the slab, and 4 distinct adsorption configurations for each of the 2 adsorbates. Details on running FireWorks, including singleshot launching, queue submission, workflow management, and more can be found in the FireWorks documentation.

Note also that running FireWorks via atomate may require system specific tuning (e. g. for VASP parameters). More information is available in the atomate documentation.

Example 4 - Screening of oxygen evolution electrocatalysts on binary oxides

This final example is intended to demonstrate how to use the MP API and the adsorption workflow to do an initial high-throughput study of oxygen evolution electrocatalysis on binary oxides of transition metals.

For oxygen evolution, a common metric for the catalytic activity of a given catalyst is the theoretical overpotential corresponding to the mechanism that proceeds through OH*, O*, and OOH*. So we can define our adsorbates:

Then we can retrieve the structures using the MP rest interface, and write a simple for loop which creates all of the workflows corresponding to every slab and every adsorption site for each material. The code below will take ~15 minutes. This could be parallelized to be more efficient, but is not for simplicity in this case.