Skip to content

Surface Binding Energy

SBETransformation

SBETransformation(
    max_index: int = 1,
    min_slab_size: float = 10.0,
    min_vacuum_size: float = 10.0,
    height: float = 1.0,
    supercell_size: list[int] | None = None,
    isolated_atom_box_size: float = 20.0,
)

Generates slab, supercell, vacancy, and isolated-atom structures for SBE calculations.

apply_transformation is the sole public method. Exactly one of its structure, slab, supercell_slab, or element arguments should be given; which one selects the structure generated, since each is built from the previous step's (calculator-relaxed) output rather than from the original bulk structure.

Initializes the SBETransformation object.

Parameters:

Name Type Description Default
max_index int

Maximum Miller index to consider when generating slabs. Defaults to 1.

1
min_slab_size float

Minimum slab thickness in Angstroms for slab generation. Defaults to 10.0.

10.0
min_vacuum_size float

Minimum vacuum size in Angstroms for slab generation. Defaults to 10.0.

10.0
height float

Height above the surface, in Angstroms, used to identify surface atoms via pymatgen.analysis.adsorption.AdsorbateSiteFinder. Defaults to 1.0.

1.0
supercell_size list[int] | None

Supercell replication factors applied to a slab termination before vacancy generation. Defaults to [4, 4, 1].

None
isolated_atom_box_size float

Side length, in Angstroms, of the cubic cell used to approximate a non-interacting isolated atom. Defaults to 20.0.

20.0

apply_transformation

apply_transformation(
    structure: Structure | None = None,
    slab: Structure | None = None,
    supercell_slab: Structure | None = None,
    element: str | None = None,
) -> (
    list[Slab]
    | Structure
    | list[dict[str, int | str | Structure]]
)

Generates one of the SBE pipeline structures from exactly one of the given inputs.

Parameters:

Name Type Description Default
structure Structure | None

The (relaxed) bulk structure to generate slab terminations from.

None
slab Structure | None

The slab termination, typically already relaxed, to replicate into a supercell.

None
supercell_slab Structure | None

The slab supercell to generate one single-atom vacancy structure from per identified surface site.

None
element str | None

The chemical symbol to build an isolated single-atom reference structure for.

None

Returns:

Type Description
list[Slab] | Structure | list[dict[str, int | str | Structure]]

list[Slab] | Structure | list[dict[str, int | str | Structure]]: Depending on which argument was given: - structure: The generated slab terminations, repaired to remove broken bonds at the surface. Each slab's miller_index attribute identifies which Miller index it belongs to. - slab: The replicated supercell, independent of slab. - supercell_slab: One entry per surface site, each a dictionary with keys site_index (the removed site's index in supercell_slab), element (its species string), and structure (a copy of supercell_slab with that site removed). - element: A single atom of element in a cubic cell of side self.isolated_atom_box_size Angstroms, large enough to make periodic-image interactions negligible.

Raises:

Type Description
ValueError

If zero, or more than one, of structure, slab, supercell_slab, and element is given.