53 lines
3.0 KiB
Plaintext
53 lines
3.0 KiB
Plaintext
C++ interface output examples
|
|
=============================
|
|
Since version 0.4, Voro++ has contained many routines that allow for programs
|
|
to directly analyze features of a single Voronoi cell, and Voronoi cells in a
|
|
particle packing. These example codes demonstrate this functionality.
|
|
|
|
1. odd_even.cc constructs a single Voronoi cell using random planes, in the
|
|
same manner as the basic single_cell.cc example. It then calls several routines
|
|
to gain information about the computed cell's faces. Using this information it
|
|
constructs a POV-Ray scene in which the faces are colored white or black
|
|
depending on whether the have an odd or even number of sides. The POV-Ray
|
|
header file odd_even.pov can be used to visualize the result.
|
|
|
|
2. loops.cc demonstrates the loop classes, that can be used to iterate over a
|
|
certain subset of particles within a container. It demonstrates the
|
|
c_loop_order class, which can loop over a specific pre-computed list of
|
|
particles. It also demonstrates the c_loop_subset class, which can loop over
|
|
particles in a certain region of the container. These classes are used to
|
|
compute Voronoi cells in two interlocking tori. The POV-Ray header file
|
|
loops.pov can be used to visualize the result.
|
|
|
|
3. polygons.cc demonstrates how routines can be used to find all faces in a
|
|
Voronoi tessellation that have a specific number of sides. The routine also
|
|
demonstrates the pre_container class, that can aid in correctly configuring the
|
|
underlying grid that the code uses, in cases whether the amount of input data
|
|
is not known a priori. When run, the code generates POV-Ray scenes of all
|
|
quadrilateral, pentagonal, and hexagonal faces in a Voronoi tessellation. The
|
|
can be visualized using the POV-Ray header files polygons4.pov, polygons5.pov,
|
|
and polygons6.pov.
|
|
|
|
4. find_voro_cell.cc demonstrates the find_voronoi_cell routine. For a given
|
|
position vector, this routine will return the Voronoi cell that the vector is
|
|
within. The code creates a unit cube and randomly adds twenty particles to it.
|
|
It carries out a number of find_voronoi_cell calls for a slice through the
|
|
cube, creating a file with vectors from each sample point to the particle whose
|
|
Voronoi cell contains the point. The results can be visualized in Gnuplot with
|
|
|
|
splot 'find_voro_cell_v.gnu' w l t 'Voronoi cells', 'find_voro_cell.vec' w vec t 'Voronoi cell vectors', 'find_voro_cell_p.gnu' w p u 2:3:4 t 'Particles'
|
|
|
|
The example also uses the find_voronoi_cell routine to estimate the size of
|
|
each Voronoi cell. It scans a grid covering the entire container, making
|
|
find_voronoi_cell calls at each location. The number of times each Voronoi cell
|
|
is returned gives an estimate of its volume. These sampled volumes, as well as
|
|
the exact calculated voulmes are saved to 'find_voro_cell.vol'. A graph
|
|
comparing the two can be plotted in Gnuplot with
|
|
|
|
set xlabel 'Calculated volume'
|
|
set ylabel 'Sampled volume'
|
|
plot [0:0.1] [0:0.1] 'find_voro_cell.vol' u 5:6
|
|
|
|
Altering the size of scanning grid alters who accurate the sampled volumes will
|
|
match the calculated results.
|