rocksalt_slab

sisl.geom.rocksalt_slab(alat: float, atoms: sisl.typing.AtomsLike, miller: int | str | tuple[int, int, int], layers=None, vacuum: float | Sequence[float] = 20.0, *, orthogonal: bool = False, start=None, end=None) Geometry

Surface slab forming a rock-salt crystal (halite)

This structure is formed by two interlocked fcc crystals for each of the two elements.

The slab layers are stacked along the \(z\)-axis. The default stacking is the first layer as an A-layer, defined as the plane containing the first atom in the atoms list at \((x,y)=(0,0)\).

Several vacuum separated segments can be created by specifying specific positions through either layers being a list, or by having spaces in its str form, see Examples.

This is equivalent to the NaCl crystal structure (halite).

Parameters:
  • alat – lattice constant of the rock-salt crystal

  • atoms – a list of two atoms that the crystal consist of

  • miller – Miller indices of the surface facet

  • layers (int or str or array_like of ints, optional) – Number of layers in the slab or explicit layer specification. For array like arguments vacuum will be placed between each index of the layers. Each element can either be an int or a str to specify number of layers or an explicit order of layers. If a str it can contain spaces to specify vacuum positions (then equivalent to layers.split()). If there are no vacuum positions specified a vacuum will be placed after the layers. See examples for details.

  • vacuum – size of vacuum at locations specified in layers. The vacuum will always be placed along the \(z\)-axis (3rd lattice vector). Each segment in layers will be appended the vacuum as found by zip_longest(layers, vacuum). None means that no vacuum is inserted (keeps the crystal structure intact).

  • orthogonal – if True returns an orthogonal lattice

  • start (int or str or array_like, optional) – sets the first layer in the slab. Only one of start or end must be specified. Discouraged to pass if layers is a str.

  • end (int or str or array_like, optional) – sets the last layer in the slab. Only one of start or end must be specified. Discouraged to pass if layers is a str.

Examples

NaCl(100) slab, starting with A-layer

>>> rocksalt_slab(5.64, ['Na', 'Cl'], 100)

6-layer NaCl(100) slab, ending with A-layer

>>> rocksalt_slab(5.64, ['Na', 'Cl'], 100, layers=6, end='A')

6-layer NaCl(100) slab, starting with Cl A layer and with a vacuum gap of 20 Å on both sides of the slab

>>> rocksalt_slab(5.64, ['Cl', 'Na'], 100, layers=' ABAB ')

For more examples see fcc_slab, the vacuum displacements are directly translateable to this function.

Raises:

NotImplementedError – In case the Miller index has not been implemented or a stacking fault is introduced in layers.

See also

rocksalt

Basic structure of this one

fcc_slab

Slab in FCC structure (this slab is a combination of fcc slab structures)

bcc_slab

Slab in BCC structure