VoroTop: Voronoi Cell Topology Visualization and Analysis Toolkit

VoroTop: Voronoi Cell Topology
Visualization and Analysis Toolkit

Emanuel A. Lazar University of Pennsylvania, Philadelphia, PA 19104, mLazarseas.upenn.edu
July 14, 2019

This paper introduces a new open-source software program called VoroTop, which uses Voronoi topology to analyze local structure in atomic systems. Strengths of this approach include its abilities to analyze high-temperature systems and to characterize complex structure such as grain boundaries. This approach enables the automated analysis of systems and mechanisms previously not possible.

1 Introduction

A central challenge of studying condensed matter systems on the atomic scale is the development of a meaningful way to analyze structure, so that identification of defects and characterization of complex structure can be performed in an automated manner. The analysis of perfect crystals, both in two and three dimensions, is greatly aided by mathematical tools such as group theory, which help translate fuzzy ideas about order, structure, and symmetry into mathematically rigorous language. In turn, mathematical analysis provides physical understanding of many physical systems. Loosely speaking, the structure of a crystal can be completely specified by a set of linearly independent vectors whose integral combinations specify coordinates of all atoms (i.e., a basis). Defects in perfect crystals can be readily identified as deviations from this ideal structure. For example, a vacancy can be understood as a lattice site missing an atom, and an interstitial can be understood as an atom located at a non-lattice site. More complex defect structures can be viewed along similar lines.

This approach towards structure analysis is insufficient for understanding real systems. Consider, for example, the simple case of a finite-temperature crystal, in which all atoms are slightly perturbed from their lattice sites. The conventional approach might lead us to describe such a system as being crystalline but populated by numerous vacancies and interstitials. This absurdity is inconsistent with our intuition, and motivates the development of a more robust approach towards characterizing structure in atomic systems.

Many approaches to address this problem have been developed in recent decades [1]. Most of these approaches describe each arrangement of neighboring atoms by quantifying how similar or different it is from an ideal reference configuration. Although such methods are well-suited for studying low-temperature systems, they perform poorly when applied to systems at temperatures above half of their bulk melting temperatures, or systems otherwise strongly perturbed from their ground state [1, 2]. In recent work we have explained some fundamental limitations of many conventional approaches [3] and described a more robust one based on Voronoi topology [2].

This paper introduces an open-source software program called VoroTop that automates this analysis. The name of the software derives from the words ‘Voronoi topology’, the theory on which it is based. VoroTop makes this analysis accessible to a broad audience through a command-line program and library. This paper is organized as follows. Section 2 describes the basics of Voronoi cells, and explains how their topology can be used to analyze structure in atomic systems. Section 3 describes several extensions of the basic theory. Section 4 compares this approach with several conventional ones, and Section 5 illustrates the utility of VoroTop in visualizing and analyzing the behavior of two screw dislocations moving inside a high-temperature crystal. Section 6 describes the VoroTop software itself and its core functions and features.

2 Voronoi topology basics

2.1 Voronoi cells and local structure

Although VoroTop is designed to analyze three-dimensional systems, the theory behind it can be most clearly explained through consideration of two-dimensional ones. Figure 1(a) illustrates part of a two-dimensional polycrystalline system in which each point represents the position of an atom [4]. A grain boundary on the left and a vacancy at the top right can be identified. To make the rough notions of ‘crystalline’ and ‘defect’ precise, we consider the Voronoi tessellation of this system.

(a) (b) (c)
Figure 1: (a) A two-dimensional polycrystal; (b) atoms and their Voronoi cells; (c) atoms colored according to Voronoi topology.

For a set of points in space, the Voronoi cell of each point is the region of space closer to that point than to any other [5, 6]; this definition is equally applicable in two and three dimensions. Figure 1(b) shows the same system shown in Figure 1(a) but with the Voronoi cell of each atom drawn. Although many atoms near defects have five or seven edges, Voronoi cells of most atoms have six edges. Indeed, the Voronoi cell of every atom in a defect-free hexagonal-lattice crystal has six edges, even at finite temperatures [7]. This suggests defining crystalline atoms as those whose Voronoi cells have six edges, and defect atoms as those with more or fewer edges.

A pair of atoms with adjacent Voronoi cells are defined as neighbors, and so the number of edges of a Voronoi cell can be understood as a count of neighbors. Although this number often coincides with the “coordination number” (i.e., the number of atoms at most a given distance away), this is not always the case. In two dimensions, we use the term topology to refer to the number of edges of a Voronoi cell. This number describes the manner in which an atom’s neighbors are arranged relative to a central atom and to one another.

Coloring each atom according to its Voronoi cell topology highlights the defect structure in the polycrystal; cf. Figure 1(c). After identifying defects at the single-atom level, larger-scale defects can be defined as contiguous sets of individual defect atoms. A ring of three red and three blue atoms, for example, identifies the presence of a vacancy. Similarly, chains of alternating red and blue atoms indicate the presence of grain boundaries.

2.2 Instability analysis and families of Voronoi topologies

Although small perturbations of an hexagonal lattice do not change the topology of its Voronoi cells, this is not the case for all lattices. Consider, for example, the Voronoi cells in a two-dimensional square lattice, illustrated in Figure 2(a). In a perfect crystal, the Voronoi cell of each atom has exactly four edges, and exactly four Voronoi cells meet at every corner. These corners are unstable in the sense that small perturbations of the atomic coordinates change the topologies of nearby cells; cf. Figures 2(b) and (c). A consequence of this instability is that Voronoi cells in finite-temperature square-lattice crystals can have between 4 and 8 edges. We use the term family to refer to a set of topologies that can be obtained from an ideal structure through infinitesimal perturbations of atomic coordinates. Atoms whose Voronoi topologies belong to such a set are classified as belonging to a crystal, and atoms with other topologies are classified as belonging to defects.

(a) (b) (c)
Figure 2: (a) Zero- and (b-c) finite-temperature square-lattice crystals.

2.3 Three dimensions

The analysis described in Sections 2.1 and 2.2 can be applied directly to the study of three-dimensional systems. Figure 3 illustrates a central blue atom, its Voronoi cell, and neighboring gold atoms. In three dimensions, we use the term Voronoi topology to refer not only to the number of faces of a Voronoi cell, but also to the manner in which those faces are arranged.

Figure 3: The Voronoi cell of a central atom surrounded by neighboring atoms.

This information describes the manner in which an atom’s neighbors are arranged relative to a central atom and to one another. For example, the number of sides of a face indicates the number of neighbors shared in common between a central atom and one of its neighbors. Details about how the Voronoi topology can be efficiently computed and recorded are reported elsewhere [8, 9].

We use Voronoi topology to define crystal and defect structure in three dimensions in the same manner as we did in two dimensions. In particular, to a given ideal structure we associate a family of Voronoi topologies that can be obtained from infinitesimal perturbations of atomic coordinates. Then, when analyzing data, we compute the topology of each Voronoi cell. Atoms whose Voronoi cell topologies belong to the given family are considered crystalline; atoms with other topologies are considered defects.

One complication that arises in this approach is the possibility that one Voronoi topology belongs to multiple families. For example, the two-dimensional Voronoi cell topology with 6 edges belongs to both the square- and hexagonal-lattice families. This indeterminacy complicates the analysis of certain systems. A method of resolving this indeterminacy is described in Section 3.2.

3 Extensions

3.1 Determining families of topologies

A family of Voronoi topologies associated with a given structure can be determined analytically by considering the changes that can occur near each corner of an unstable Voronoi cell [2]. For example, in three-dimensional face-centered cubic (FCC) crystals, each of six unstable corners can resolve in one of eight ways, meaning that up to 262,144 topologies must be considered. However, many of these resolutions are equivalent, and ultimately there are only 6294 unique topologies [2]. In hexagonal close-packed (HCP) crystals, similar analysis shows that there are 21,611 unique topologies.

Although the analytic determination of a family of Voronoi topologies is possible in many cases, it can sometimes be computationally prohibitive. For example, each corner of a Voronoi cell in the three-dimensional simple cubic lattice can resolve in one of 32 distinct ways. Since each cell has 8 unstable corners, possible resolutions must be considered. Aside from the significant computing power necessary to initially determine this family, storing it in memory would also be prohibitive. We therefore consider a Monte Carlo approach to determining families. In particular, we take an ideal system and apply a small random perturbation to each atomic coordinate – mimicking the effect of finite temperature – and record the set of Voronoi topologies in the perturbed sample. As we consider increasingly many samples, we more accurately approximate the family of topologies. In addition to computational tractability, another advantage of this numerical approach over the analytic one is its applicability to more general structures than lattices. For example, it can be used to study the complex structure of grain boundaries.

3.2 Resolving indeterminate Voronoi topologies

At the end of Section 2.3 we noted the possibility that a single Voronoi topology will belong to multiple families; we call such Voronoi topologies indeterminate. As a concrete example, many Voronoi topologies that belong to the FCC family also belong to the HCP family. This complicates the analysis of FCC systems which contain defects such as stacking faults, since the local structure of atoms associated with those defects resembles that of HCP crystals. We first illustrate the extent of the problem, and then explain how we handle it.

Figure 4 shows a cross-section of a stacking-fault tetrahedron in a copper crystal heated to 85% of its bulk melting temperature. In Figure 4(a), atoms with determinate FCC local structure are colored dark blue, those with determinate HCP local structure are colored yellow, and those with indeterminate FCC-HCP topologies are colored light blue; all remaining atoms are colored red. Indeterminate topologies clearly account for a large number of atoms.

(a) (b) (c)
Figure 4: A stacking-fault tetrahedron; dark blue atoms indicate FCC local structure; yellow atoms indicate HCP local structure; red atoms indicate other topologies; light blue indicates FCC-HCP indeterminate topologies. In (b), atoms with indeterminate Voronoi topologies are treated as having FCC local structure. In (c), indeterminate topologies are resolved using a perturbation analysis described in the text.

One way to approach this problem is to treat all atoms with indeterminate topologies as having FCC local structure, and to identify only atoms with determinately HCP topologies as having HCP local structure. Figure 4(b) shows all indeterminate topologies colored as FCC atoms. Although this approach mischaracterizes many HCP atoms as having FCC local structure, it still produces a relatively clear picture of the defect.

Another way to approach this problem is computationally more demanding but ultimately more accurate. Instead of treating all indeterminate topologies as having FCC local structure, we consider how the topology of a Voronoi cell changes when atomic coordinates are perturbed. If the resulting topologies of an atom tend to be determinately FCC, then we identify that atom as having FCC local structure; if they tend to be determinately HCP then we identify it as having HCP local structure. The effectiveness of this approach is best understood in the context of the underlying configuration-space theory [2].

Figure 4(c) shows results of this analysis. The coordinates of each atom were displaced by a random perturbation chosen from a normal distribution 0.05 times the cubed root of the volume of its Voronoi cell. Voronoi topologies of atoms with initially indeterminate topologies were computed in this perturbed system, and the process was repeated five times. If more perturbations resulted in determinate HCP topologies of a particular atom than in determinate FCC topologies, then that atom was identified as having HCP local structure; otherwise, the atom was identified as having FCC local structure. This analysis provides a clear picture of the stacking-fault tetrahedron.

3.3 Cluster analysis

The analysis explained in Section 2 results in a classification of atoms as either belonging to a crystal or to a defect. This approach by itself, however, does not say anything about defects consisting of multiple atoms. Even a vacancy or interstitial, which affect the ordering near several neighboring atoms, are not explicitly defined. One approach towards precisely defining large-scale defects involves the consideration of clusters of defect atoms.

We define a defect cluster to be a set of neighboring defect atoms. To illustrate this idea, Figure 5 shows a vacancy seen earlier in Figure 1. The six adjacent defect atoms are defined as belonging to a single defect cluster associated with the vacancy. Further analysis of the topologies that constitute a cluster might provide a more informative representation of larger-scale defect structure. For example, it is no coincidence that the number of edges of the Voronoi cells in this defect cluster sum to a multiple of 6. This is a mathematical result about simple planar graphs, and consequently about any defect cluster located in an otherwise perfect finite-temperature hexagonal-lattice crystal.

Figure 5: A cluster of defect atoms associated with a vacancy.

4 Comparison with other methods

We briefly compare Voronoi topology with three conventional approaches to local structure analysis, and a very recent one. Figure 6 illustrates the same stacking-fault tetrahedron considered in Section 3.2 visualized using centrosymmetry [10], bond-angle analysis [11], adaptive common-neighbor analysis [1, 12], and polyhedral template matching [13]. While the general shape of the stacking-fault tetrahedron can be discerned in (a), (b), and (c), its details are ambiguous. In particular, many atoms belonging to the defect are misidentified as belonging to the bulk, and many atoms in the bulk are misidentified as having non-crystalline structure. These results are in sharp contrast with the picture produced using Voronoi topology, illustrated in Figure 4.

A new structure-analysis tool called polyhedral template matching (PTM), which also uses topology to describe local structure in atomic systems, has been recently introduced by Larsen et al. [13]. PTM provides a picture of the stacking-fault tetrahedron that is comparable in quality to that produced by Voronoi topology; cf. Figure 6(d).

(a) Centrosymmetry (b) Bond-angle analysis

(c) Adaptive CNA (d) PTM
Figure 6: A stacking-fault tetrahedron visualized using (a) centrosymmetry, (b) bond-angle analysis, (c) adaptive common-neighbor analysis, and (d) polyhedral template matching. In (b), (c), and (d) blue atoms indicate FCC local structure, yellow atoms indicate HCP local structure, and red atoms indicate other local structure.

5 Case study: dislocation identification

We use VoroTop to visualize dislocations at high-temperature and to analyze their behavior. In particular, we consider a pair of screw dislocations with Burgers vectors and migrating towards each other in an FCC aluminum crystal heated to 95% of its melting temperature. Figures 7(a-d) illustrate a time-series of the evolution; a video showing the entire evolution can be found online in Supplementary Materials. Atoms with Voronoi topologies belonging to the FCC family are not shown; all other atoms are colored according to their coordinate, to provide a clearer picture of their spatial arrangement.

\@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Dislocation 1Dislocation 2 \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
(a) (b) ps
\@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \@killglue                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
(c) ps (d) ps
Figure 7: Two screw dislocations with Burgers vectors and migrating towards each other in a slip plane. Atoms are colored according to their coordinate along the -axis; dotted lines indicate initial positions of dislocations.

Although the dislocations initially lie in the same plane, portions of Dislocation 1 slip to other planes during the evolution, as can be seen in the changing colors of its constituent atoms. These cross-slips decrease the effective mobility of this dislocation as compared with that of Dislocation 2, which remains in the same plane throughout the evolution. The effect of cross-slips in pinning the dislocation mobility can be seen most clearly in the online video.

To illustrate the manner in which Voronoi topology can also aid in identifying kinks in the dislocation, Figure 8 provides closer views of Dislocation 1 at time ps. Atoms in subfigures (b) and (d) are colored according to Voronoi topology. Atoms with FCC local structure are not shown; yellow atoms are those with HCP local structure.

Figure 8: Dislocation 1 at ps shown from different views, colored according to (a,c) the coordinate and (b,d) Voronoi topology.

Dark blue atoms are those whose Voronoi topologies belong neither to the FCC nor HCP families; these atoms belong to dislocation kinks. The splitting of each dislocation into two partials, separated by a thin ribbon-like stacking fault, is also readily apparent. In particular, the location and width of each stacking fault can be easily determined. The clear atomic-scale picture provided by Voronoi topology in this high-temperature system enables the automated analysis of dislocation behavior in a manner not possible using conventional methods. Figures 7 and 8, and the online video, were created using the additional analyses described in Sections 3.2 and 3.3.

6 VoroTop software

VoroTop was designed to automate the analysis described in Sections 2 and 3, and make it accessible to a diverse population of users.

6.1 Language, license, and availability

VoroTop is written in C++11 to make it compatible with all major operating systems, and is released under an OpenSource BSD 3-Clause license. This license permits redistribution and use of source and binaries, with or without modification, to both academic and for-profit groups. Source code for the current version (0.4.0 as of publication) is available online in a git repository available at https://gitlab.com/mLazar/VoroTop/.

To make Voronoi topology analysis more broadly accessible, basic features of VoroTop have also been integrated into the OVITO software package. OVITO is a scientific visualization and analysis software package for atomistic simulation data developed by Alexander Stukowski [14]. The program has been released as Open Source under the GNU General Public License, and is available for all major platforms.

6.2 Filters

A filter is an enumeration of one or more families of topologies. Filters enable VoroTop to identify crystalline and defect structure. For example, a filter enumerating all topologies belonging to both the FCC and HCP families can be used to analyze polycrystalline aluminum. Such systems consist primarily of crystals with FCC local structure, but also contains defects such as stacking faults, whose atoms have HCP local structure.

File format. A filter file is divided into three parts. Lines in the first part begin with a ‘#’ and are used for comments. Lines in the second part begin with a ‘*’ and specify structure types. Each such line, after the ‘*’, includes an index and a plain-text name for the associated structure type. An indeterminate structure type can be indicated by including two additional indices after the name; these indices indicate the structure types to which this indeterminate type can resolve under perturbations. Indices of structure types are listed in increasing order and begin with 1. Remaining lines record Voronoi topologies and their associated structure types, one topology at a time. Each line begins with a structure type index, and is followed by an integer sequence called a Weinberg vector that completely describes a Voronoi cell topology; the format of the Weinberg vectors is that found in the work of Weinberg [15].

Filter files for several common structure types, included those considered in this paper, are available for download at www.vorotop.org.

6.3 Performance, optimization, and runtime

After computing the Voronoi cells using Voro++, the calculations of Weinberg vectors scales linearly with the number of atoms in the system. Running on a single 2.53GHz processor, VoroTop can currently compute about 30,000 Weinberg vectors per second, or roughly two million atoms per minute. Parallel processing is not currently implemented in VoroTop. The analysis described in Section 3.2 to resolve indeterminate topologies also scales linearly in the number of atoms, and in the number of random perturbations considered.

6.4 Command-line options

Features of the VoroTop program are controlled through command-line options. VoroTop begins by reading in atomistic data; the LAMMPS dump [16] and AtomEye extended cfg [17] formats are currently supported. If specified, a filter file is also read. Next, the Voro++ library [18] is used to compute the Voronoi cell of each atom, and an algorithm of Weinberg [15] is used to compute Voronoi cell topologies. Finally, user-specified analyses are performed and output is saved to disk; all output is saved in plain-text format.

-f     load filter file

Specifies a filter file to use for analysis. If this option is used, then a new output file will be created that includes the original data plus the structure types as determined by the given filter.

-w     Weinberg vectors

Weinberg’s graph-tracing algorithm [15] is used to compute the topology of each Voronoi cell and store it as a vector of integers, which is recorded to output. The following is also recorded for each atom: the number of faces, the face-index (i.e., the number of faces with each number of edges), and the order of the automorphism group [19] of the Voronoi cell. The chirality of the Voronoi cell ( or for chiral cells, 0 for achiral ones) is also recorded.

-d     distribution of Weinberg vectors

This option calculates the distribution of Voronoi topologies, and records it using Weinberg vectors.

-g     distribution in perturbed system

This feature implements the Monte Carlo analysis described in Section 3.1. In particular, it computes a distribution of topologies from perturbed versions of the input system. This option requires specifying the number of samples and the desired magnitude of the perturbation. Perturbations are sampled from a normal Gaussian centered at the origin and with a standard deviation equal to the specified magnitude times the cubed root of the Voronoi cell volume; a magnitude of 0.05 is suggested.

-r     resolve indeterminate topologies

This feature implements the analysis described in Section 3.2. In particular, to each indeterminate structure type is associated two resolving structure types, with one preferred. If more perturbed copies resolve to the non-preferred structure type than to the preferred type, then that is considered the resolved type; otherwise the preferred type is considered the resolved type. This feature requires a filter that includes information about which structure types are indeterminate and how they should be resolved. By default, 5 perturbations are considered, though a different number can be specified at the command line. Output includes both the indeterminate and resolved structure types.

-c     cluster analysis

This feature implements the cluster analysis described in Section 3.3. Each defect and crystal cluster is assigned a unique index, ordered by size. Positive indices indicate crystal clusters; negative indices indicate defect clusters. Also recorded for each atom is the size of the cluster to which it belongs.

By default, all atoms with structure types listed in the specified filter are treated as crystalline, and defect clusters are built only from atoms whose structure types are not listed. If an index is specified, then only atoms with that structure type are considered crystalline for the purpose of cluster analysis, and clusters are built from atoms with other structure types. If the -r option is specified, then cluster analysis uses resolved types for analysis.

-od, -o     change output file directory, base name

By default, VoroTop saves output to the directory in which the input data is located, and using the input filename as a base name. For example, if the input filename is ~/research/SFT.00100, then Weinberg vectors will be saved to ~/research/SFT.00100.wvectors and a distribution of Weinberg vectors will be saved to ~/research/SFT.00100.distribution. The -od option allows specification of an alternate output directory; the -o options allows specification of an alternate output base name.

6.5 Examples

We present two examples that illustrate how VoroTop can be used.

Stacking-fault tetrahedron

Figures 4(a-c) in Section 3.2 were created using a filter that includes three structure types: determinate FCC, determinate HCP, and indeterminate FCC-HCP. Analysis is performed on an input file named SFT and with a filter named FCC-both-HCP.filter using the following commands:
(a) ./VoroTop SFT -f FCC-both-HCP.filter
(b) ./VoroTop SFT -f FCC-both-HCP.filter -r 0
(c) ./VoroTop SFT -f FCC-both-HCP.filter -r 5
Command (a) identifies three local structure types: determinate FCC, indeterminate FCC-HCP, and determinate HCP, each with a separate structure type index. The -r option is not used, so only the initial structure type is recorded; atoms with Voronoi topologies not belonging to this filter are identified as defects using index 0.

Command (b) uses the -r option, but does not run the analysis (or runs it zero times). The condition for resolving to HCP local structure, as specified in this particular filter, is that more perturbations result in HCP than in FCC local structure. When no perturbations are considered, all indeterminate types resolve to the default FCC type.

Command (c) uses the -r option with 5 perturbations. Atoms whose Voronoi topologies resolve more often to HCP than to FCC are considered as having local HCP structure; atoms whose Voronoi topologies resolve as often or more often to FCC than to HCP are considered as having local FCC structure.

Since the input file SFT is formatted as a LAMMPS dump file, each of these commands results in a new file called SFT.lammps. The output file contains the original data, as well as both the initial and resolved structure types.

Grain boundary characterization

In addition to identifying defects, VoroTop can also be used to characterize them. We consider one relevant example. At 0 K, a [001] (310) symmetric tilt boundary in BCC tungsten has three metastable phases [2]. The “structure” of these phases can be made precise by considering them as repeating patterns of Voronoi topologies. To determine these patterns, we first use VoroTop to compute the Weinberg vectors for each atom in the three phases.
./VoroTop phase1 -w
./VoroTop phase2 -w
./VoroTop phase3 -w

Since VoroTop cannot currently automate the creation of filters, a plain-text editor is used to identify Weinberg vectors of atoms located near the three grain boundaries. Apart from the single Voronoi topology belonging to the BCC family, atoms near a Phase I grain boundary have three other Voronoi topologies, atoms near a Phase II grain boundary have two other Voronoi topologies, and atoms near a Phase III grain boundary have six other Voronoi topologies; there is no overlap among these sets. These Weinberg vectors are then used to create a filter which we call B123.filter, and which we use to identify grain boundary structures in our samples. To make the illustrations more clear, we assigned different structure types to each Voronoi topology, so that we can highlight distinct topologies and repeating patterns of them in the three samples.

The following commands are then used to re-analyze the three samples:
./VoroTop phase1 -f B123.filter
./VoroTop phase2 -f B123.filter
./VoroTop phase3 -f B123.filter

Figure 9 shows profile and planar views of the results of this analysis; each color indicates a distinct Voronoi topology.

(a) Phase I (b) Phase II (c) Phase III
Figure 9: Profile and planar views of three meta-stable phases of a [001] (310) symmetric tilt boundary in BCC tungsten. Each Voronoi topology is assigned a distinct color. In the profile view, atoms with BCC topologies are shown in grey; in the planar view, these atoms are not shown.

The following command is then used to analyze a more realistic system:
./VoroTop time.0050000 -f B123.filter
This grain boundary was initially constructed in Phase I of BCC tungsten and equilibrated at 1500 K, or roughly 40% of its bulk melting temperature. Self-interstitial atoms were randomly inserted at the grain boundary to mimic the effects of radiation damage. The insertion of these atoms transformed the grain boundary from Phase I to a mixture of the three phases. The results of this analysis can be observed in Figure 10. This characterization of grain boundary structure enables further automated analysis [2].

Figure 10: Grain boundary after irradiation; atoms colored by Voronoi topology.

Acknowledgments. Development of VoroTop has been made possible through the generous support of the NSF Division of Materials Research through Award 1507013. Thanks to Jian Han, Thomas Spencer, and David Srolovitz for many interesting discussions.


  • [1] A. Stukowski, “Structure identification methods for atomistic simulations of crystalline materials,” Modelling and Simulation in Materials Science and Engineering, vol. 20, no. 4, p. 045021, 2012.
  • [2] E. A. Lazar, J. Han, and D. J. Srolovitz, “Topological framework for local structure analysis in condensed matter,” Proceedings of the National Academy of Sciences, vol. 112, no. 43, pp. E5769–E5776, 2015.
  • [3] P. S. Landweber, E. A. Lazar, and N. Patel, “On fiber diameters of continuous maps,” American Mathematical Monthly, vol. 123, no. 4, pp. 392–397, 2016.
  • [4] E. A. Lazar, “Molecular dynamic studies of the fracture of metals.” Yeshiva University, 2005. Undergraduate Honors Thesis.
  • [5] G. Voronoï, “Nouvelles applications des paramètres continus à la théorie des formes quadratiques. Deuxième mémoire. Recherches sur les parallélloèdres primitifs.,” J. Reine Angew. Math., vol. 134, pp. 198–287, 1908.
  • [6] A. Okabe, B. Boots, K. Sugihara, and S. N. Chiu, Spatial tessellations: concepts and applications of Voronoi diagrams, vol. 501. John Wiley & Sons, 2009.
  • [7] H. Leipold, E. A. Lazar, K. A. Brakke, and D. J. Srolovitz, “Statistical topology of perturbed two-dimensional lattices,” J. Stat. Mech., no. 4, p. 043103, 2016.
  • [8] E. A. Lazar, J. K. Mason, R. D. MacPherson, and D. J. Srolovitz, “Complete topology of cells, grains, and bubbles in three-dimensional microstructures,” Physical Review Letters, vol. 109, no. 9, p. 95505, 2012.
  • [9] E. A. Lazar, The Evolution of Cellular Structures via Curvature Flow. PhD thesis, Princeton University, 2011.
  • [10] C. L. Kelchner, S. Plimpton, and J. Hamilton, “Dislocation nucleation and defect structure during surface indentation,” Phys. Rev. B, vol. 58, no. 17, p. 11085, 1998.
  • [11] G. Ackland and A. Jones, “Applications of local crystal structure measures in experiment and simulation,” Phys. Rev. B, vol. 73, no. 5, p. 054104, 2006.
  • [12] J. D. Honeycutt and H. C. Andersen, “Molecular dynamics study of melting and freezing of small lennard-jones clusters,” Journal of Physical Chemistry, vol. 91, no. 19, pp. 4950–4963, 1987.
  • [13] P. M. Larsen, S. Schmidt, and J. Schiøtz, “Robust structural identification via polyhedral template matching,” Modelling and Simulation in Materials Science and Engineering, vol. 24, no. 5, p. 055007, 2016.
  • [14] A. Stukowski, “Visualization and analysis of atomistic simulation data with OVITO–the Open Visualization Tool,” Modelling and Simulation in Materials Science and Engineering, vol. 18, no. 1, p. 015012, 2009.
  • [15] L. Weinberg, “A simple and efficient algorithm for determining isomorphism of planar triply connected graphs,” IEEE Transactions on Circuit Theory, vol. CT13, no. 2, pp. 142–148, 1966.
  • [16] S. Plimpton, “Fast parallel algorithms for short-range molecular dynamics,” Journal of Computational Physics, vol. 117, no. 1, pp. 1–19, 1995.
  • [17] J. Li, “Atomeye: an efficient atomistic configuration viewer,” Modelling and Simulation in Materials Science and Engineering, vol. 11, no. 2, p. 173, 2003.
  • [18] C. Rycroft, “Voro++: A three-dimensional Voronoi cell library in C++,” Chaos, vol. 19, p. 041111, 2009.
  • [19] L. Weinberg, “On the maximum order of the automorphism group of a planar triply connected graph,” SIAM Journal on Applied Mathematics, vol. 14, no. 4, pp. 729–738, 1966.
Comments 0
Request Comment
You are adding the first comment!
How to quickly get a good reply:
  • Give credit where it’s due by listing out the positive aspects of a paper before getting into which changes should be made.
  • Be specific in your critique, and provide supporting evidence with appropriate references to substantiate general statements.
  • Your comment should inspire ideas to flow and help the author improves the paper.

The better we are at sharing our knowledge with each other, the faster we move forward.
The feedback must be of minimum 40 characters and the title a minimum of 5 characters
Add comment
Loading ...
This is a comment super asjknd jkasnjk adsnkj
The feedback must be of minumum 40 characters
The feedback must be of minumum 40 characters

You are asking your first question!
How to quickly get a good answer:
  • Keep your question short and to the point
  • Check for grammar or spelling errors.
  • Phrase it like a question
Test description