I have used ASE to create slaps of complex, anisotropic materials in the past. However, ase.lattice
is not for creating slabs, it's a module containing functions for creating three dimensional Bravais lattices. Some functions you could use are ase.build.surface
or ase.build.cut
(for lower level control).
Examples:
from ase.build import surface
s1 = surface('Au', (2, 1, 1), 9)
s1.center(vacuum=10, axis=2)
Creates a gold (211) slap with 9 layers
import ase
from ase.spacegroup import crystal
a = 4.05
aluminium = crystal('Al', [(0,0,0)], spacegroup=225,
cellpar=[a, a, a, 90, 90, 90])
al111 = cut(aluminium, (1,-1,0), (0,1,-1), nlayers=3)
Cut allows for finer control as you are specifying vectors (or atoms indices) that define a triangle in the plane you are cutting.
ASE is great for automization in general as it offers calculator interfaces to programs like VASP and I highly recommend it. I am not too familiar with pymatgen, but it seems to provide many similar features. Either is probably fine.
Resources:
[1] https://wiki.fysik.dtu.dk/ase/ase/build/surface.html?highlight=cut#ase.build.surface
[2] https://wiki.fysik.dtu.dk/ase/ase/build/tools.html?highlight=cut#ase.build.cut