1 // Voro++, a 3D cell-based Voronoi library
3 // Author : Chris H. Rycroft (LBL / UC Berkeley)
4 // Email : chr@alum.mit.edu
5 // Date : August 30th 2011
8 * \brief Master configuration file for setting various compile-time options. */
10 #ifndef VOROPP_CONFIG_HH
11 #define VOROPP_CONFIG_HH
15 // These constants set the initial memory allocation for the Voronoi cell
16 /** The initial memory allocation for the number of vertices. */
17 const int init_vertices
=256;
18 /** The initial memory allocation for the maximum vertex order. */
19 const int init_vertex_order
=64;
20 /** The initial memory allocation for the number of regular vertices of order
22 const int init_3_vertices
=256;
23 /** The initial memory allocation for the number of vertices of higher order.
25 const int init_n_vertices
=8;
26 /** The initial buffer size for marginal cases used by the suretest class. */
27 const int init_marginal
=64;
28 /** The initial size for the delete stack. */
29 const int init_delete_size
=256;
30 /** The initial size for the auxiliary delete stack. */
31 const int init_delete2_size
=256;
32 /** The initial size for the wall pointer array. */
33 const int init_wall_size
=32;
34 /** The default initial size for the ordering class. */
35 const int init_ordering_size
=4096;
36 /** The initial size of the pre_container chunk index. */
37 const int init_chunk_size
=256;
39 // If the initial memory is too small, the program dynamically allocates more.
40 // However, if the limits below are reached, then the program bails out.
41 /** The maximum memory allocation for the number of vertices. */
42 const int max_vertices
=16777216;
43 /** The maximum memory allocation for the maximum vertex order. */
44 const int max_vertex_order
=2048;
45 /** The maximum memory allocation for the any particular order of vertex. */
46 const int max_n_vertices
=16777216;
47 /** The maximum buffer size for marginal cases used by the suretest class. */
48 const int max_marginal
=16777216;
49 /** The maximum size for the delete stack. */
50 const int max_delete_size
=16777216;
51 /** The maximum size for the auxiliary delete stack. */
52 const int max_delete2_size
=16777216;
53 /** The maximum amount of particle memory allocated for a single region. */
54 const int max_particle_memory
=16777216;
55 /** The maximum size for the wall pointer array. */
56 const int max_wall_size
=2048;
57 /** The maximum size for the ordering class. */
58 const int max_ordering_size
=67108864;
59 /** The maximum size for the pre_container chunk index. */
60 const int max_chunk_size
=65536;
62 /** The chunk size in the pre_container classes. */
63 const int pre_container_chunk_size
=1024;
65 #ifndef VOROPP_VERBOSE
66 /** Voro++ can print a number of different status and debugging messages to
67 * notify the user of special behavior, and this macro sets the amount which
68 * are displayed. At level 0, no messages are printed. At level 1, messages
69 * about unusual cases during cell construction are printed, such as when the
70 * plane routine bails out due to floating point problems. At level 2, general
71 * messages about memory expansion are printed. At level 3, technical details
72 * about memory management are printed. */
73 #define VOROPP_VERBOSE 0
76 /** If a point is within this distance of a cutting plane, then the code
77 * assumes that point exactly lies on the plane. */
78 const double tolerance
=1e-11;
80 /** If a point is within this distance of a cutting plane, then the code stores
81 * whether this point is inside, outside, or exactly on the cutting plane in
82 * the marginal cases buffer, to prevent the test giving a different result on
83 * a subsequent evaluation due to floating point rounding errors. */
84 const double tolerance2
=2e-11;
86 /** The square of the tolerance, used when deciding whether some squared
87 * quantities are large enough to be used. */
88 const double tolerance_sq
=tolerance
*tolerance
;
90 /** A large number that is used in the computation. */
91 const double large_number
=1e30
;
93 /** A radius to use as a placeholder when no other information is available. */
94 const double default_radius
=0.5;
96 /** The maximum number of shells of periodic images to test over. */
97 const int max_unit_voro_shells
=10;
99 /** A guess for the optimal number of particles per block, used to set up the
101 const double optimal_particles
=5.6;
103 /** If this is set to 1, then the code reports any instances of particles being
104 * put outside of the container geometry. */
105 #define VOROPP_REPORT_OUT_OF_BOUNDS 0
107 /** Voro++ returns this status code if there is a file-related error, such as
108 * not being able to open file. */
109 #define VOROPP_FILE_ERROR 1
111 /** Voro++ returns this status code if there is a memory allocation error, if
112 * one of the safe memory limits is exceeded. */
113 #define VOROPP_MEMORY_ERROR 2
115 /** Voro++ returns this status code if there is any type of internal error, if
116 * it detects that representation of the Voronoi cell is inconsistent. This
117 * status code will generally indicate a bug, and the developer should be
119 #define VOROPP_INTERNAL_ERROR 3
121 /** Voro++ returns this status code if it could not interpret the command line
122 * arguments passed to the command line utility. */
123 #define VOROPP_CMD_LINE_ERROR 4