Voronoi tessellation to identify local structures#

Voronoi tessellation can be used for identification of local structure by counting the number of faces of the Voronoi polyhedra of an atom [1,2]. For each atom a vector \(\langle n_3~n_4~n_5~n_6 \rangle\) can be calculated where \(n_3\) is the number of Voronoi faces of the associated Voronoi polyhedron with three vertices, \(n_4\) is with four vertices and so on. Each perfect crystal structure such as a signature vector, for example, bcc can be identified by \(\langle 0~6~0~8 \rangle\) and fcc can be identified using \(\langle 0~12~0~0 \rangle\). It is also a useful tool for identifying icosahedral structure which has the fingerprint \(\langle 0~0~12~0 \rangle\). In pyscal, the Voronoi structure vector can be calculated using,

import pyscal
from ase.io import read

atoms = read('conf.dump', format='lammps-dump-text')
pyscal.find_neighbors(atoms, method='voronoi')
pyscal.voronoi_vector(atoms)

The vector for each atom is stored as atoms.arrays['pyscal_vorovector'].

References#

  1. Finney, J. L. Random Packings and the Structure of Simple Liquids. I. The Geometry of Random Close Packing. Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences 319, 479–493 (1970).

  2. Tanemura, M. et al. Geometrical Analysis of Crystallization of the Soft-Core Model. Progress of Theoretical Physics 58, 1079–1095 (1977).