This analysis modifier calculates the Voronoi tessellation of the simulation box, taking the particle positions as Voronoi cell centers. By default two quantities are output by the analysis modifier for each particle: The volume of the particle's Voronoi cell and the number of faces the Voronoi cell has. Since the face count is equal to the number of nearest neighbors of a particle, this quantity is also called the coordination number. The modifier outputs both quantities as new particle properties, which allows them to be referenced in subsequent analysis or filtering steps.
In addition to these basic quantities, the modifier can compute the index of each Voronoi cell, which is a vector of integers constituting a histogram of the number of edges on the faces of the Voronoi cell. This index vector can be considered a characteristic signature of a particle's coordination structure and the topology of the Voronoi polyhedron. For instance, an icosahedral coordination structure corresponds to the Voronoi index vector (0,0,0,0,12,0,...). In other words, this index vector denotes a polyhdron with exactly 12 faces with 5 edges each. To select all atoms having this kind of icosahedral coordination structure, we can use the Expression select modifier with the Boolean expression:
VoronoiIndex.3==0 && VoronoiIndex.4==0 && VoronoiIndex.5==12 && VoronoiIndex.6==0
Note that we don't need to include the first two indices in the selection expression, since faces with less than three edges do not exist.
Due to limitation in OVITO's data model, which can only store per-particle Voronoi index vectors of uniform length, the vectors are truncated at a certain maximum face order, which is given by the maximum edge count parameter. Faces with more edges will be ignored and don't show up in the truncated index vector. OVITO warns if it encounters any such higher order faces and will recommend to increase the vector length to avoid truncation.
If you are interested in the indices computed by the modifier for a particular particle, you can use OVITO's Particle Inspection utility to select the particle in the viewports. It lists all properties of the particle, including the computed Voronoi indices. If you would like to perform a statistical analysis of the Voronoi polyhedra, e.g. to determine the Voronoi index vector that occurs most frequently in your system, then you can use OVITO's Python scripting interface to access the computed per-particle indices. You can find an example script in the OVITO scripting manual.
Note: Currently, OVITO doesn't provide an option to visualize the Voronoi cells. If this is something you would like to do for illustrative purposes, you have to use other tools.
Voronoi polyhedra are known to be unstable with regard to small pertubations of the particle positions in many cases. To address this issue, at least partially, the modifier provides two threshold parameters for the area of Voronoi faces and the length of face edges, respectively.
If a face of a particle's Voronoi polyhedron has an area below the specified area threshold, then this face is not counted toward the coordination number of the particle. Correspondingly, if an edge of Voronoi face is shorter than the specified edge length threshold, then this edge is not counted toward the order of the Voronoi face. The purpose of these two thresholds is to filter our very small faces/edges that show up sporadically in the presence of pertubations of the particle positions. Also see this paper on the topic.
The algorithm calculates the Voronoi tessellation of the finite volume enclosed by the simulation cell (not infinite space). Thus, Voronoi cells are truncated at the simulation box boundaries (unless periodic boundary conditions are used). No computation will be performed for particles located outside the simulation box (but they still affect the Voronoi cells of particles inside the box).
Particles located exactly on the simulation box boundaries (along a non-periodic direction) also pose a problem. The Voronoi cell of such particles is singular and the construction algorithm may stop with the error message "Could not compute Voronoi cell for some particles". The solution to this kind of problem is to slightly enlarge the simulation box to fully include all particles. This can be done, for example, by using the Affine Transformation modifier to scale the box size.
Specifies a minimum area for faces of a Voronoi cell. The modifier will ignore any Voronoi cell faces with an area smaller than this threshold when computing the coordination number and the Voronoi index of particles. The threshold is an absolute value in units of length squared (in whatever units of length your input data is given).
Activates the calculation of Voronoi indices. The modifier stores the computed indices in a vector particle property
Voronoi Index. The i-th component of this vector will contain the number of faces of the
Voronoi cell having i edges. This implies that the leading two components of the per-particle
vector are always zero, because the minimum number of edges a polygon can have is three.
Controls the order up to which Voronoi indices are computed. Note that Voronoi faces with a more edges than this maximum will be ignored when calculating the index vector.
Specifies the minimum length an edge must have to be considered in the Voronoi index calculation. Edges that are shorter than this threshold will be ignored when counting the number of edges of a Voronoi face. The threshold value is given in absolute units of length (depending on your input data).
If this option is enabled, the modifier outputs the bonds between pairs of neighboring particles. A bond is generated for every Voronoi face whose area is larger than the specified face area threshold, and which has at least three edges longer than the specified edge length threshold.
Note that bonds in periodic simulation cells are computed using the minimum image convention, which requires that the cell is at least twice as large in each periodic direction as the longest neighbor bond. In cases where the cell is shorter, the computed bonds might be incorrect.
Lets the modifier compute the poly-disperse Voronoi tessellation, which takes into account the radii of particles. Otherwise a mono-disperse Voronoi tessellation is computed, which is independent of the particle sizes.
Lets the modifier perform the analysis only for selected particles. Particles that are not selected will be treated as if they did not exist.
This modifier uses the Voro++ package of Chris Rycroft to compute Voronoi polyhedra.