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
orstr
orarray_like
ofints
, 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 tolayers.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
orstr
orarray_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
orstr
orarray_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.