Name

BulkConfiguration Used to construct a bulk system based on a crystal structure.

Synopsis

Namespace: ATK.KohnSham
Object BulkConfiguration (
bravais_lattice,
elements,
cartesian_coordinates,
fractional_coordinates,
pseudopotential_parameters
)

Description

The BulkConfiguration class is used to represent a periodic arrangement of atoms in a Bravais lattice, e.g. a crystal structure. The position of the atoms can be specified using either Cartesian coordinates or fractional coordinates, i.e. coordinates in units of the lattice vectors.

List of arguments

bravais_lattice

A Bravais lattice describing the crystal structure.

Default: None

elements

The elements (atoms) contained in the primitive unit cell.

Default: None

cartesian_coordinates

A list containing tuples of Cartesian coordinates, in a desired unit, for each atom in the primitive unit cell. The list should have the same length as the list of elements, and the atoms should be ordered in the same way.

Default: None

fractional_coordinates

A list containing tuples of coordinates, in units of the lattice vectors, for each atom in the primitive unit cell. The list should have the same length as the list of elements, and the atoms should be ordered in the same way.

Default: None

pseudopotential_parameters

Dictionary of pseudo-potential parameters.

Default: None

[Note] Note

It is not possible to specify both cartesian_coordinates and fractional_coordinates at the same time.

Returned object methods

A BulkConfiguration object offers the following methods:

  • Array cartesianCoordinates(): Returns a NumPy array containing the Cartesian coordinates of the atoms in the BulkConfiguration.

  • List elements(): Returns the element types of the atoms in the primitive unit cell.

  • Object bravaisLattice(): Returns the Bravais lattice of the BulkConfiguration.

Usage examples

Create a bulk body-centered cubic crystal with a single lithium atom as basis:

from ATK.KohnSham import *

lattice = BodyCenteredCubic( 3.509 * Ang)
li_bcc_bulk = BulkConfiguration(
    lattice,
    [Lithium],
    [ ( 0.0, 0.0, 0.0 ) * Ang ]
    )

Create a diamond crystal using fractional coordinates:

from ATK.KohnSham import *

elements = [ Carbon ] * 2
coordinates = [
    ( 0.00, 0.00, 0.00 ),
    ( 0.25, 0.25, 0.25 )
    ]
diamond_lattice = FaceCenteredCubic( 3.567 * Ang )
diamond = BulkConfiguration(
    diamond_lattice,
    elements,
    fractional_coordinates = coordinates
    )

Notes

ATK only recognizes three types of atomic geometries: molecule, bulk, and two-probe (plus electrodes; these, however, can only be used to construct two-probe systems). Other periodic geometries, such as nanotubes, slabs, and atomic chains must also be represented as a BulkConfiguration. Such structures are typically based on a tetragonal or orthorhombic lattice with a large lattice constant in one or several directions to "pad" the system with a sufficient amount of vacuum in the irrelevant directions. This in fact, is the same trick used by ATK for its internal representation of molecular structures.