Reset platonic code.
[voro++.git] / trunk / man / voro++.1
blob3da2a3c21bbdfdd2263995ea414fde399d7d5fba
1 .TH VORO++ 1 "October 17 2013"
2 .UC 4
3 .SH NAME
4 voro++ \- a 3D Voronoi cell library
5 .SH SYNOPSIS
6 .B voro++
7 [options] <x_min> <x_max> <y_min> <y_max> <z_min> <z_max> <filename>
8 .br
9 .SH DESCRIPTION
10 .PP
11 Voro++ is a software library for carrying out three-dimensional computations of
12 the Voronoi tessellation. A distinguishing feature of the Voro++ library is
13 that it carries out cell-based calculations, computing the Voronoi cell for
14 each particle individually, rather than computing the Voronoi tessellation as a
15 global network of vertices and edges. It is particularly well-suited for
16 applications that rely on cell-based statistics, where features of Voronoi
17 cells (
18 .I eg.
19 volume, centroid, number of faces) can be used to analyze a system of
20 particles.
22 .PP
23 Voro++ is written in C++ and can be built as a static library that can be
24 linked to. This man page describes a command-line utility that is provided with
25 the library, which can be used to access most of the library's functionality.
26 The utility imports text files of particle positions, computes the Voronoi
27 cells for them, and then saves text files containing various types of
28 information about the Voronoi cells.
30 .SH FILE INPUT AND OUTPUT
31 .PP
32 The input file should have entries on separate lines with the following
33 format:
34 .PP
35 .RS
36 <Numerical ID label> <x coordinate> <y coordinate> <z coordinate>
37 .RE
38 .PP
39 When the command imports the particles, any that lie outside the container
40 geometry are ignored. The program then computes Voronoi cells for all the
41 particles, and generates an output file using the same filename but with a
42 ".vol" suffix, that has the following entries:
43 .PP
44 .RS
45 <Numerical ID label> <x coordinate> <y coordinate> <z coordinate> <Voronoi cell volume>
46 .RE
47 .PP
48 To compute different statistics about the Voronoi cells, the \-c option can be
49 used to specify a custom output string. By default, the command assumes
50 non-periodic boundary conditions, although this can be modified with the \-p
51 option described below. If periodicity is enabled, then particles will be
52 re-mapped into the primary domain when the file is imported.
54 .PP
55 Under normal operation, the output file should have exactly the same number
56 of lines in as the input file. However, if particles lie outside the container
57 geometry, they will be omitted by the program, and will not appear in the
58 output file. In certain cases, a Voronoi cell for a valid particle may be
59 completely deleted (
60 .I eg.
61 by a wall cut) and it will also not appear in
62 the output file. By default, the particles in the output file may be ordered
63 differently to those in the input file, although the original ordering can be
64 preserved with the \-o option described below.
66 .SH INTERNAL COMPUTATIONAL GRID
67 .PP
68 To carry out the computation, the code divides the computational box into a
69 grid of equally-sized rectangular blocks. Particles are internally sorted into
70 this grid for computational efficiency, with maximum performance usually being
71 achieved when there is an average of 3 to 8 particles per block. Performance is
72 also improved if the blocks are close to cubes, with similar side lengths in
73 three directions. In general the code is not very sensitive to the block size,
74 and reasonable performance is achieved over a large range of values.
75 .PP
76 By default, the code estimates the grid size to use by counting the number
77 of particles in the input file and choosing the number of blocks to aim for a
78 3 to 8 particles per block. However, is also possible to manually configure the
79 grid size using the \-l and \-n options.
81 .SH OPTIONS
82 The utility accepts the following basic options:
85 .IP \-c <string>
86 This option allows the format of the output file to be customized to hold a
87 variety of statistics about the computed Voronoi cells. The specified string
88 can contain regular characters, plus control sequences beginning with
89 percentage signs that are expanded to contain different Voronoi cell
90 statistics. See below for a full custom output reference.
92 .IP \-g
93 If this option is specified, then an additional output file is generated with
94 the ".gnu" extension, which contains a description of all the cells in a format
95 that can be viewed using gnuplot using the
96 .I splot
97 command. Caution: For large input files, the gnuplot output file will be
98 extremely large, so this option is best used on smaller systems.
100 .IP \-h or \-\-help
101 This option prints out a summary of the command syntax and the available
102 options.
104 .IP \-hc
105 This option prints out all the available control sequences for the customized
106 output.
108 .IP -l <len>
109 Manually specify a typical length scale between particles, with which to
110 configure the internal grid size. For example, if the particles represent
111 densely-packed hard spheres of diameter d, then d would be an appropriate value
112 to use. The length scale can be used to estimate the optimal grid size. Using
113 this option will result in a small performance boost, since the internal grid
114 can be set up immediately, and it is not necessary to temporarily store the
115 input file contents while estimating the grid size.
117 .IP -m <mem>
118 Manually specify the initial number of particles that can be stored in each
119 block. By default a value of 8 is used. For any block where this limit is
120 reached, the code will dynamically allocate more memory as neccessary, so
121 usually it is not necessary to alter this.
123 .IP -n <nx> <ny> <nz>
124 Manually specify the internal computational grid to have nx, ny, and nz blocks
125 in the x, y, and z directions respectively, giving nx*ny*nz blocks in total.
126 Manually specifying the size will result in a small performance boost, since
127 the internal grid can be set up immediately, and it is not necessary to
128 temporarily store the input file contents while estimating the size.
130 .IP \-o
131 Ensure that particles in the output file are in the same order as those in the
132 input file. This may result in a very small increase in memory usage and
133 execution time, and is turned off by default.
136 .IP \-p
137 Make the container periodic in all three coordinate directions.
139 .IP \-px
140 Make container periodic in the x direction.
142 .IP \-py
143 Make container periodic in the y direction.
145 .IP \-pz
146 Make container periodic in the z direction.
148 .IP \-r
149 Carry out a Voronoi tessellation for a polydisperse particle arrangement using
150 the radical Voronoi tessellation. For this case, an extra column is required in
151 the input file, that contains the particle radii. The radii are also included
152 in the output file.
154 .IP \-v
155 Verbose output. After the computation is completed, some statistics are printed
156 about the container geometry, the internal computational grid, the number of
157 particles imported, the number Voronoi cells computed, and the volume of the
158 computed Voronoi cells.
160 .IP \-\-version
161 Print version information.
163 .IP \-y
164 Save the particles in POV-Ray format to "filename_p.pov" and the Voronoi cells
165 in POV-Ray format to "filename_v.pov". Caution: For large input files, the
166 POV-Ray Voronoi cell file will be extremely large, so this option is best used
167 on smaller systems.
169 .IP \-yp
170 Save the particles in POV-Ray format to "filename_p.pov".
172 .IP \-yv
173 Save the Voronoi cells in POV-Ray format to "filename_v.pov".
175 .SH OPTIONS FOR WALLS
176 In addition, a number of options can be used to specify wall objects. Walls
177 are implemented by applying extra plane cuts during the cell construction
178 process. At present, four wall types are supported:
181 .IP \-wb <x1> <x2> <x3> <x4> <x5> <x6>
182 Add six plane wall objects to make a box containing the space x1<x<x2, x3<y<x4,
183 and x5<z<x6. This can be useful for embedding a smaller box within a larger
184 container, in cases when the influence of particles outside the smaller box
185 still need to be considered. This option is shorthand to avoid using the \-wp
186 option six times.
188 .IP \-wc <x1> <x2> <x3> <x4> <x5> <x6> <x7>
189 Add a cylindrical wall object, where (x1,x2,x3) is a point on the cylinder
190 axis, (x4,x5,x6) is a vector along the cylinder axis, and x7 is the cylinder
191 radius.
193 .IP \-wo <x1> <x2> <x3> <x4> <x5> <x6> <x7>
194 Add a conical wall object, with apex at (x1,x2,x3), axis along (x4,x5,x6), and
195 half angle x7 (specified in radians).
197 .IP \-ws <x1> <x2> <x3> <x4>
198 Add a spherical wall object, centered on (x1,x2,x3), with radius x4.
200 .IP \-wp <x1> <x2> <x3> <x4>
201 Add a plane wall object, with normal (x1,x2,x3), and displacement x4.
203 Each wall is accounted for using a single approximating plane; several of the
204 examples on the library website discuss this in more detail. If neighbor
205 information is requested via the custom output string, then the walls are
206 numbered sequentially, starting at -7 and decreasing.
208 .SH CUSTOM OUTPUT COMMANDS
210 The output files created by Voro++ can be fully customized to contain a variety
211 of different statistics about the computed Voronoi cells. This is done by
212 specifying a format string that contains text plus additional control sequences
213 that begin with percentage signs. The output file contains a line for each
214 particle, where the control sequences are expanded to different statistics.
215 Several examples on the library website describe the customized output in
216 more detail.
219 Particle-related entries:
222 .IP %i
223 The particle ID number. 
225 .IP %x
226 The x coordinate of the particle.
228 .IP %y
229 The y coordinate of the particle.
231 .IP %z
232 The z coordinate of the particle.
234 .IP %q
235 The position vector of the particle, short for "%x %y %z".
237 .IP %r
238 The radius of the particle (only printed if the polydisperse information is
239 available).
242 Vertex-related entries:
245 .IP %w
246 The number of vertices in the Voronoi cell.
248 .IP %p
249 A list of the vertices of the Voronoi cell in the format (x,y,z), relative to
250 the particle center.
252 .IP %P
253 A list of the vertices of the Voronoi cell in the format (x,y,z), relative to
254 the global coordinate system.
256 .IP %o
257 A list of the orders of each vertex.
259 .IP %m
260 The maximum radius squared of a vertex position, relative to the particle
261 center.
264 Edge-related entries:
267 .IP %g
268 The number of edges of the Voronoi cell.
270 .IP %E
271 The total edge distance.
273 .IP %e
274 A list of perimeters of each face.
277 Face-related entries:
280 .IP %s
281 The number of faces of the Voronoi cell.
283 .IP %F
284 The total surface area of the Voronoi cell.
286 .IP %A
287 A frequency table of the orders of the faces.
289 .IP %a
290 A list of the orders of the faces, showing how many edges make up each face.
292 .IP %f
293 A list of areas of each face.
295 .IP %t
296 A list of bracketed sequences of vertices that make up each face.
298 .IP %l
299 A list of normal vectors for each face.
301 .IP %n
302 A list of the neighboring particle or wall IDs corresponding to each face. The
303 list can contain negative numbers. For the non-periodic case these correspond
304 to when the particles have faces created by the edges of the computational
305 region. The numbers -1 to -6 correspond to the minimum x, maximum x, minimum y,
306 maximum y, minimum z, and maximum z walls respectively. For periodic boundary
307 conditions, negative numbers correspond to the cases when a face of the Voronoi
308 cell is created by the periodic image of the current particle.
310 In general, the neighbor information will be symmetric, so that if particle A
311 reports particle B as a neighbor, then particle B will report particle A as a
312 neighbor. However, due to the fact that Voro++ computes each Voronoi cell
313 individually, it does not provide an explicit guarantee that the neighbor
314 information will always be symmetric. Suppose there is a very small Voronoi
315 face connecting A to B - it may be the case that due to roundoff error, the
316 Voronoi cell computed for particle A has a face connecting it to B, but the
317 cell computed for particle B does not have a face connecting it to A. If the
318 user requires perfectly symmetric neighbor information, this can be achieved by
319 scanning the output for any one-sided connections, and either deleting them or
320 adding in the reverse connections. The face areas output from "%f" can also be
321 used to remove connections between particles that only have a very small face
322 between them.
325 Volume-related entries:
327 .IP %v
328 The volume of the Voronoi cell.
330 .IP %c
331 The centroid of the Voronoi cell, relative to the particle center.
333 .IP %C
334 The centroid of the Voronoi cell, in the global coordinate system.
337 .SH AUTHOR
338 Voro++ is written and maintained by Chris H. Rycroft, a visiting assistant
339 professor in the Department of Mathematics, University of California, Berkeley
340 and Department of Mathematics, Lawrence Berkeley National Laboratory.
341 Feedback about the code is welcome; please email chr@alum.mit.edu.
342 .SH BUGS
343 Contact Chris H. Rycroft (chr@alum.mit.edu) to report problems with the code.
344 .SH SEE ALSO
345 See the library website http://math.lbl.gov/voro++/ for complete documentation
346 and examples.