This repository contains the work function database (calculated by high-throughput density functional theory) and machine learning model to predict the work function of a surface, accompanying the preprint:
The database csv files can easily be loaded using pandas.read_csv
. The columns contain the following information:
mpid
: Materials Project IDmiller
: Miller index of surface hklterm
: Termination number indexing (unique terminations are numbered starting at 1)surface_elements
: List of atomic numbers present in the topmost atomic layersurface_elements_string
: Same information assurface_elements
but as a concatenated string of elementsWF
: The DFT-calculated work function in eVslab
: The surface slab as a Pymatgen dictionaryenergy
: Total energy of slab in eVFermi
: Fermi level in eVconvergence
: DFT convergence parameters, Ecutoff - kx - ky - kznsites
: Number of atomic sites in the slab unit cellslab_thickness
: Slab thickness in Angstromsnterm
: Number of unique terminations for given orientation/materialmirror
: Whether or not there exists a mirror plane parallel to the surface
The folder ML_model
contains code to generate surfaces from bulk input structures, to featurize them, and to make work function predictions.
The code has been tested with Python 3.6.6 and the following packages/versions:
ase==3.20.1
, pymatgen==2020.6.8
, scikit-learn==0.23.1
, pandas==1.0.1
, joblib==0.16.0
,
but may run with newer versions as well.
To generate surfaces from the bulk and predict their work functions follow these steps:
- Create
input.csv
file for your bulk input structure with two columns:material_id
: The Materials Project ID or any other unique label for the bulk input structurecifs.conventional_standard
: The conventional unit cell cif information (e.g. as pulled with the same column name tag usingMPRester
)
- Run
slab_generator.py
which creates all unique surfaces/terminations up to a Miller index of 1 (then stored in fileslabs-input.csv
). - Run
featurization_and_WF_predict.py
to featurize the above created surfaces and predict the work function. The predicted work functions are stored in fileslabs-input_predicted_WFs_0p3.csv
under columnWF_predicted
.