VORO++1,2 is an open source software library for the computation of the Voronoi tessellation, originally proposed by Georgy Voronoi in 1907. For a set of points in a domain, the tessellation is defined by associating a cell of space to each point that is closer to that point than any other. It has applications in many fields, and in physics and materials science it has been used extensively in the analysis of particle systems, for tracking changes in density, or for examining local neighbor relationships. While other mature software libraries exist (particularly QHULL, used by MATLAB), VORO++ has been designed specifically for handling large-scale three-dimensional research problems where flexibility is required. It is structured around several C++ classes and is designed to be easily modified and incorporated into other programs. It employs a direct method of calculation whereby each cell is computed individually—this perspective is useful in many physical applications which often rely on cell-based statistics, and it allows the computation of individual cells to be tailored to account for walls and other complex boundary conditions. Plane wall surfaces can be computed exactly (Fig. 1), while curved surfaces (Figs. 2 and 3) can be well-approximated. The code deals with truncation errors in floating point arithmetic, and can natively handle degenerate cases where Voronoi cells with high-order vertices may form. Neighbor calculations and tessellations for polydisperse particle packings (Fig. 4) are also supported. Since each cell is computed individually, it is straightforward to generalize to a multicore architecture and achieve very high parallel efficiency.

FIG. 1.

Voronoi tessellation for 100 random points in a tetrahedron.

FIG. 1.

Voronoi tessellation for 100 random points in a tetrahedron.

Close modal
FIG. 2.

Voronoi tessellation for a cylindrical particle packing. Plane cuts are used to approximate the curved wall surface.

FIG. 2.

Voronoi tessellation for a cylindrical particle packing. Plane cuts are used to approximate the curved wall surface.

Close modal
FIG. 3.

Voronoi tessellation for a particle packing in a helix.

FIG. 3.

Voronoi tessellation for a particle packing in a helix.

Close modal
FIG. 4.

Radical Voronoi tessellation for a polydispersed packing of 159 particles in a cube.

FIG. 4.

Radical Voronoi tessellation for a polydispersed packing of 159 particles in a cube.

Close modal
1.
Visit http://math.lbl.gov/voro++/ to download the library and see examples and documentation.
2.
C. H.
Rycroft
, “
Voro++: a three-dimensional Voronoi cell library in C++
,”
Lawrence Berkeley National Laboratory
, Paper No. LBNL-1430E,
2009
.