Creating geometries

A selection of default geometries that sisl can construct on the fly.

While this is far from complete we encourage users to contribute additional geometries via a pull request.

All methods returns a Geometry object.

Some of the geometries are created in section based geometries, such as heteroribbon. This functionality is provided through the composite_geometry.

Bulk (3D)

sc(alat, atoms)

Simple cubic lattice with 1 atom

bcc(alat, atoms[, orthogonal])

Body centered cubic lattice with 1 (non-orthogonal) or 2 atoms (orthogonal)

fcc(alat, atoms[, orthogonal])

Face centered cubic lattice with 1 (non-orthogonal) or 4 atoms (orthogonal)

hcp(a, atoms[, coa, orthogonal])

Hexagonal closed packed lattice with 2 (non-orthogonal) or 4 atoms (orthogonal)

diamond([alat, atoms])

Diamond lattice with 2 atoms in the unitcell

rocksalt(alat, atoms[, orthogonal])

Two-element rocksalt lattice with 2 (non-orthogonal) or 8 atoms (orthogonal)

Surfaces (slabs)

bcc_slab(alat, atoms, miller[, layers, ...])

Construction of a surface slab from a body-centered cubic (BCC) crystal

fcc_slab(alat, atoms, miller[, layers, ...])

Surface slab forming a face-centered cubic (FCC) crystal

rocksalt_slab(alat, atoms, miller[, layers, ...])

Surface slab forming a rock-salt crystal (halite)

0D materials

honeycomb_flake(shells, bond, atoms[, vacuum])

Hexagonal flake of a honeycomb lattice, with zig-zag edges.

graphene_flake(shells[, bond, atoms, vacuum])

Hexagonal flake of graphene, with zig-zag edges.

triangulene(n[, bond, atoms, vacuum])

Construction of an [n]-triangulene geometry

1D materials

nanoribbon(width, bond, atoms[, kind, ...])

Construction of a nanoribbon unit cell of type armchair, zigzag or (n,m)-chiral.

agnr(width[, bond, atoms, vacuum])

Construction of an armchair graphene nanoribbon

zgnr(width[, bond, atoms, vacuum])

Construction of a zigzag graphene nanoribbon

cgnr(width, chirality[, bond, atoms, vacuum])

Construction of an (n, m, w)-chiral graphene nanoribbon

graphene_nanoribbon(width[, bond, atoms, ...])

Construction of a graphene nanoribbon

nanotube(bond[, atoms, chirality, vacuum])

Nanotube with user-defined chirality.

heteroribbon(sections[, section_cls])

Build a nanoribbon consisting of several nanoribbons of different widths.

graphene_heteroribbon(sections[, ...])

Build a graphene nanoribbon consisting of several nanoribbons of different widths

2D materials

honeycomb(bond, atoms[, orthogonal, vacuum])

Honeycomb lattice with 2 or 4 atoms per unit-cell, latter orthogonal cell

bilayer([bond, bottom_atoms, top_atoms, ...])

Commensurate unit cell of a hexagonal bilayer structure, possibly with a twist angle.

graphene([bond, atoms, orthogonal, vacuum])

Graphene lattice with 2 or 4 atoms per unit-cell, latter orthogonal cell

hexagonal(bond[, atoms, orthogonal, vacuum])

A hexagonal unit-cell with 1 or 2 atoms in the basic unit cell

goldene([bond, atoms, orthogonal, vacuum])

A goldene unit-cell with 1 or 2 atoms in the basic unit cell

Ancillary methods

composite_geometry(sections, section_cls, ...)

Creates a composite geometry from a list of sections.

CompositeGeometrySection

CompositeGeometrySection()

Saturation

saturate adds atoms to the missing bonds of selected atoms. The selection uses the categories in Indexing atoms. The first rule that selects an atom is used:

>>> import sisl
>>> from sisl.geom import AtomNeighbors, AtomZ, Saturate, saturate
>>> ribbon = sisl.geom.zgnr(4)
>>> edge = AtomNeighbors(max=2, R=1.5)
>>> saturated = saturate(ribbon, [
...     (edge & AtomZ("N"), Saturate("H", bond=1.01, R=1.5)),
...     (edge, Saturate("H", bond=1.09, R=1.5)),
... ])
>>> saturated.na - ribbon.na
2

saturate(geometry, rules)

Saturate missing bonds of atoms with other atoms

Saturate

Add an atom for each missing bond of an atom