Enumerate surface morphology

Hi everyone,

I’m new to the community and would like to know if this tool can help with generating surfaces with various morphologies.

I have a simple organic monomer to start with (.cif file I have), for which I’d like to explore surface reactions with some gases. I wonder if I can use this tool to create and enumerate automatically over different surface morphs.

Appreciate your thoughts and ideas on this!

Regards,

Jo

Sort of. By far the best way to do this is with the pymatgen Python package from the Materials Project. (I answered a similar question on Stack Exchange )

If you’re using Avogadro2 (e.g. 1.101) I can finish up the Python script which helps automate the generation.

But if you want to enumerate automatically, I think the Python code needed with pymatgen is easy enough: (this is untested)

# Import the neccesary tools to generate surfaces
from pymatgen.core.surface import SlabGenerator, generate_all_slabs
from pymatgen.core import Structure

# Read the CIF file and create a pymatgen Structure object
structure = Structure.from_file("path/to/your/structure.cif")

# get a list of all slabs up to a Miller index of 3
# with a minimum thickness of 10Ang
# and a vacuum layer of 25̄A
all_slabs = generate_all_slabs(structure, 3, 10, 25)
for slab in all_slabs:
    h, j, k = slab.miller_index
    # save the slab, e.g. to XYZ or something