Bugfix in search_for_outside_edge routine.
[voro++.git] / trunk / NEWS
blob44fe607d8b66e160614e512d53cb3eca74aa1e1a
1 Version 0.5 (...)
2 ===================
3 * Fixed typo in random_points.cc example. Thanks to Guo-Jie Gao (Osaka
4   University) and Jose Adsuara (Universit of Valencia) for pointing this out.
5 * Fixed documentation error in normals routine. Thanks to Jean Farago
6   (Université de Strasbourg) for pointing this out.
7 * Fixed bug in the initialization of stacke2 in voronoicell_base. It was set
8   based on current_delete_size and not current_delete2_size. By default these
9   are the same in config.hh, so this would not cause a problem. However,
10   changing config.hh could create a problem.
11 * Updated plane cutting routine to handle non-convex cases. This should remove
12   some extremely rare errors where cells can accidentally be deleted.
13 * Fixed a typo in the delete_connection routine in cell.cc that could cause
14   segmentation faults in extremely rare cases. Thanks to Francesco Biscani (Max
15   Planck institute for Astronomy, Heidelberg) for pointing this out.
16 * Cleaned up comments
17 * Updated Doxyfile to 1.8.9.1
19 Version 0.4.6 (October 17th 2013)
20 =================================
21 * Fixed an issue with template instantiation in wall.cc that was causing
22   compilation problems with new versions of Apple Xcode. Thanks to Barend
23   Thijsse (Delft University of Technology) and Juan Pablo Cruz Pérez (Instituto
24   de Física y Matemáticas) for pointing this out.
25 * Added routines to the container classes to compute a ghost Voronoi cell at
26   any given location, as though an extra particle was inserted at that
27   location
28 * Removed unused private variable in c_loops.hh
29 * Updated Doxyfile to 1.8.5
31 Version 0.4.5 (July 27th 2012)
32 ==============================
33 * Removed "using namespace std" from the header files and added extra "std::"
34   qualifiers on STL vectors and queues. This is to prevent naming conflicts
35   with other libraries. Thanks to Florian Hoffmann (University of Luxembourg)
36   for pointing this out.
37 * Fixed an error in the check_facets diagnostic routine. Thanks to Tristan
38   Carrier-Baudouin (Université catholique de Louvain) for pointing this out.
39 * Fixed a memory leak in the new container_periodic class. Thanks to Massimo
40   Marchi (Commissariat á l'Energie Atomique) for pointing this out.
41 * Removed some duplicate or unnecessary #include statements of the standard C++
42   header files
43 * Fix small naming mismatch between cell.cc and cell.hh in plane_intersects
44   and nplane routines, which would give a warning with Doxygen
45 * More changes for older MS Visual C++ compatability
46 * Updated Doxyfile to 1.8.1.1
48 Version 0.4.4 (January 17th 2012)
49 =================================
50 * Fixed an error in pointer arithmetic that was introduced in version 0.4,
51   which would occur in cases where the delete stack was extended when a large
52   number of vertices were being removed. Thanks to Jeff Johnson (Lawrence
53   Berkeley Laboratory) and Matt Freeman (Texas A&M University) for pointing
54   this out.
56 Version 0.4.3 (November 12th 2011)
57 ==================================
58 * Removed spurious Gnuplot output line from torus.cc example
59 * More changes for better Visual C++ compatibility
60 * Fixed indexing error in worklist generation routine. This had no effect
61   on the generated worklists, but would become apparent in other situations.
62 * Added rad_option.hh to the list of files included by voro++.hh for
63   completeness
64 * Fix errors in Gnuplot commands in the basic examples README file. Thanks to
65   William-Fernando Oquendo (National University of Colombia) for pointing this
66   out.
67 * Fixed memory allocation issue in face_freq_table routine - thanks to Lingti
68   Kong for pointing this out
69 * Minor cleanups and optimizations to wall classes
71 Version 0.4.2 (September 23rd 2011)
72 ===================================
73 * Fixed a bug in the put_remap routine where a z periodic boolean was
74   switched to an x periodic boolean. This would only be noticed when using
75   mixed periodic boundary conditions and importing particles that need to be
76   remapped.
77 * The pid function in the c_loop_base class was mistakenly labeled as double
78   instead of int - this is now fixed. Thanks to William-Fernando Oquendo
79   (National University of Colombia) for pointing this out.
80 * Fixed an extremely subtle bounds checking issue that would only materialize
81   for the radical Voronoi tessellation with large particle radii. Thanks to
82   Richard Martin and Maciej Haranczyk (Lawrence Berkeley Laboratory) for
83   pointing out the original problem.
84 * Fixed other problems with the radical tessellation. Originally, the
85   algorithms were concieved for with hard spheres in mind, where the particles
86   would not overlap, and an assumption was used in the cutoff procedure that
87   made use of this, but would not be true in general.
88 * Removed more bracket initializations like "double a(3);" for better
89   consistency, and more compatibility with older versions of MS Visual C++.
90   Thanks to Martin Brehm for help with this.
91 * Factored out the regular/radical inline routines into separate classes, so
92   that they don't have to be duplicated in the container_periodic classes
93 * Fixed problems with the container_periodic classes referencing the wrong
94   loop classes. Thanks to Wang Chuncheng (Nanyang Technological University) for
95   pointing this out.
96 * Added c_loop_order_periodic class for doing ordered loops with the periodic
97   container classes
98 * Updated the README file in the src directory. The detailed description of
99   each file has been removed since this is difficult to maintain and this
100   information is already present in the class reference manual.
101 * Fixed an error in the pre_container selection of the optimal computational
102   grid size
103 * Code comment cleanups, particularly in wall.hh
104 * Minor man page reformatting
105 * Updated Doxyfile to version 1.7.5.1
107 Version 0.4.1 (September 7th 2011)
108 ==================================
109 * Fixed bug in command-line utility that would give incorrect results when
110   using the "-c" option for custom output. Thanks to Prof. Aldo Romero
111   (CINVESTAV-Unidad Queretaro) for pointing this out.
112 * Added some additional documentation about neighbor information
114 Version 0.4 (August 30th 2011)
115 ==============================
116 * New classes called container_periodic and container_periodic_poly that carry
117   out Voronoi computations in 3D periodic parallelepiped unit cells have been
118   added. This adds significant complexity to the computation, and the memory
119   organization of these classes is different, requiring allocation for ghost
120   regions. Currently these classes cannot be accessed by the command-line
121   utility, but will be integrated further in future releases. These classes are
122   currently mainly exploited by a sister software project Zeo++ for chemical
123   informatics (Maciej Haranczyk, Chris Rycroft, Thomas Willems, Richard Martin)
124   to be released in late 2011.
125 * As part of the new container_periodic classes, a new class called unitcell
126   has been added, which will compute the Voronoi cell for a single particle in
127   a 3D periodic parallelepiped class. The Voronoi cell is formed by the
128   influences of the periodic images of itself only. This turns out to be an
129   important component of the calculations done by the container_periodic
130   classes but can also be used independently.
131 * The container classes now have a routine called find_voronoi_cell that will
132   take a given position vector and return the Voronoi cell which is contained
133   within. For the regular Voronoi tessellation, this is just the Voronoi cell
134   corresponding to the closest particle (by definition). For the radical
135   Voronoi tessellation, this is weighted by the particle radii.
136 * The library is now enclosed within the "voro" namespace. This requires
137   specifying "using namespace voro;" in the preamble of codes or prepending
138   "voro::" to access functions. This greatly minimizes the possiblity of naming
139   conflicts when using multiple libraries, particularly since many of the
140   classes iin the library have fairly generic names (eg. "container"). Thanks to
141   Allan Johns (Dr. D Studios) for suggesting this.
142 * Voro++ can now be built as a static library that can be installed and linked
143   to. As part of this, the .cc and .hh files have been significantly revised
144   with some small inline functions and template code being written into the
145   header files.
146 * Previously, all of the voronoicell output routines sent data to an output
147   stream. However, input and output are now carried out using the STL vector
148   class, allowing for programs to directly link to and use Voro++ output. The
149   STL vector class has been chosen since it the simplest and most standard
150   mechanism for returning a variable amount of data. Several new examples are
151   provided to demonstrate this functionality, for both the voronoicell class
152   and the container class.
153 * A common issue has been that the order of particles in the output file does
154   not match the input file, since Voro++ internally sorts particles according
155   to their position. A new class called voro_order has been provided, which can
156   link to particles as they are stored, allowing for the Voronoi computation to
157   be carried out in the same order as the input file. The core computation
158   routines can be run with a variety of different loops, and a new example
159   "loops.cc" is provided to demonstrate this. 
160 * The order of parameters to certain functions have been changed to take
161   advantage of the C++ default parameter mechanism wherever possible
162 * The container and container_poly classes are now derived from a base class,
163   rather than being different instances of a template. This simplifies the code
164   and stops common routines from being duplicated. The core Voronoi computation
165   routine is now held within a voro_compute class, which can be instantiated on
166   any container with the correct access functions.
167 * The voronoicell and voronoicell_neighbor classes are now derived from a
168   common base class, rather than being different instances of a template. This
169   simplifies the code and stops common routines from being duplicated. The core
170   nplane routine is now a function template that can be instantiated on the
171   parent class itself. 
172 * All output routines have been switched from using C++ iostreams to using the C
173   cstdio library. This has been done for increased performance. In general the
174   cstdio routines run significantly faster than the comparable iostream
175   routines: for one file import test, using fscanf from cstdio was five times
176   as fast as the comparable << operator from iostream. As another example,
177   the program "cylinder.cc", which uses both file import and export, runs
178   approximately twice as fast before. Since many people use Voro++ to batch
179   process large numbers of input files, this increase in input/output speed
180   seemed desirable.
181 * The Gnuplot output routines now merge individual lines into contiguous paths
182   wherever possible, resulting in a ~15% reduction in their file size and a
183   noticeable improvement in rendering speed
184 * Previously, the POV-Ray output routines could create cylinders where the start
185   and end points matched. This was a benign problem, due to the fact the vertex
186   positions within Voro++ were held to higher precision than the POV-Ray output
187   file, meaning that distinct vertices could appear to be at the same position;
188   a perl script was provided to post-process and remove these. However, Voro++
189   now scans each cylinder before saving to file to automatically remove these
190   cases from consideration.
191 * Pointer arithmetic is now used within a number of critical cell computation
192   routines, and gives a speedup of 10%-20% in many cases. On some typical
193   problems on typical machines, Voro++ currently computes around 50,000
194   cells/second. New machines can achieve upwards of 70,000 cells/second.
195 * A new pre-container mechanism is provided, which can read in a file of
196   unknown length, and then make a guess at the correct computational grid size
197   to use. This removes the need for specifying a length scale with the
198   command-line utility. However, a length scale or grid decomposition can still
199   be manually specified.
200 * Removed the option to compile in single-precision. This was a highly
201   specialized feature, and it appears better to allow users who wish to do this
202   to make their own modifications. This option also conflicted with building
203   Voro++ as a standard static library.
204 * Fixed a benign bug in the block computation list that would cause it to get
205   extended prematurely
206 * Numerous small improvements to memory allocation routines
207 * Added routines to copy a Voronoi cell
208 * Created a new wall_list class to handle a list of walls. This simplifies the
209   command-line utility code.
210 * Labels in the worklist that are used in the transition from the radius search
211   to the block search have been optimized
212 * The command-line utility can now produce POV-Ray output. Also, the main loop
213   in the utility has been combined so that the Voronoi tessellation is only
214   carried out once, even if POV-Ray and Gnuplot output is also required.
215 * The command-line utility does range checking on the filename to prevent
216   buffer overruns
217 * The routines that put particles into a container now do so more reliably for
218   periodic cases, remapping them into the primary domain if necessary
219 * A number of the POV-Ray header files have been altered to directly make use
220   of a right-handed coordinate system in which the z axis points upwards. This
221   matches the Gnuplot style, and the style used in many scientific simulations.
222   It avoids the need for a rotation or matrix transformation when rendering
223   many of the particle packings. Some of the test particle packings have been
224   transformed to ensure consistency with previous renderings.
225 * Some POV-Ray files have been cleaned up and there are additional comments
226 * Fixed a bug in the print_all_custom() routine, affecting "%P" output. Thanks
227   to David Waroquiers (Université Catholique de Louvain, Belgium) for pointing
228   this out.
229 * Fixed a bug that caused the neighbor list not to be outputted in the same
230   order as the other plane diagnostic routines. Thanks to Olufemi Olorode
231   (Texas A&M University) for pointing this out.
232 * Removed the add_vertex() and init_test() routines, which were mainly used for
233   debugging
234 * Updated Doxyfile to version 1.7.4
236 Version 0.3.1 (September 29, 2009)
237 ==================================
238 * Carried out a major overhaul of the source code comments that are used by
239   Doxygen. Several errors in the documentation were fixed.
240 * Additional comments in the Makefiles, and added the "phony target" keyword
241 * Many code cleanups and standardizations. Some double and triple loops
242   were concatenated into one to reduce the amount of indentation.
243 * Fixed the import.cc example program
244 * Updated Doxyfile to version 1.6.1
246 Version 0.3 (August 17, 2009)
247 =============================
248 * In response to feedback from several people, the routines for computing
249   statistics about computed Voronoi cells have been significantly revised,
250   extended, and put within a common framework. The voronoicell class now has a
251   large number of routines of the form output_...() that will print cell
252   information to an output stream. There are also a number of new, simple
253   routines for computing basic statistics such as the number of edges and faces
254   of each cell. All of these routines can now be used during the container
255   analysis, by making use of the new print_custom() routine, which can output
256   according to a given format string, that uses control sequences similar to
257   the standard C printf() routine.
258 * Renamed the "radical" example directory to "custom", and added two
259   new programs called "cell_statistics.cc" and "custom_output.cc" for
260   demonstrating the new output routines for the voronoicell and container
261   classes respectively
262 * Added a routine for computing the centroid of a Voronoi cell
263 * Added new routines for computing neighbor normals, in response to a
264   request from Dave Greenwood
265 * Removed unnecessary trailing tabs and spaces in the source code
266 * Fixed a few text justification problems, and altered some of the comments
267   in the example programs
268 * Improved the command-line utility, allowing it to specify custom information
269   in the output. Implemented better error checking on command-line arguments.
270 * Removed the facets() routine, since this has been superseded by the new
271   output_...() routines. This also rendered some functions in the neighbor_none
272   and neighbor_track classes obsolete, and they have also been removed.
273 * Some reorganization of the cell.hh and container.hh header files to group
274   similar functions together
275 * Added torus.cc example that shows how to write custom walls as derived
276   classes
277 * Updated Doxyfile to version 1.5.9
279 Version 0.2.7 (March 25, 2009)
280 ==============================
281 * Added some missing cstdlib and cstring header files that cause compilation
282   errors on some systems
283 * Some text cleanups in the main README file and cmd_line.cc
284 * The worklist_gen.pl script was in DOS format. It has been switched to Unix
285   format to match the rest of the code.
286 * Fixed some incorrect inequalities in degenerate2.cc
287 * Improved some error messages in container.cc
289 Version 0.2.6 (March 23, 2009)
290 ==============================
291 * Significantly improved the error messages generated by the code. It now
292   makes use of the exit() routine rather than throwing errors, and it returns
293   various status codes (defined in config.hh) for different types of abnormal
294   behavior.
295 * Changed two occurences of "cin" to "cout" in the draw_particles routines
296 * Corrected error in comment in the tetrahedron example
297 * Minor comment cleanups of the worklist_gen.pl script
298 * Updated Doxyfile to version 1.5.8
299 * Added a routine print_facet_information() in response to a problem
300   from Hengxing Lan
301 * Many of the cell based statistics routines (like number_of_faces() and
302   facets()) internally track their progress by temporarily flipping the edge
303   table entries to negative values, so that they know where they have already
304   been. The common code that was used at the end of each of these functions for
305   resetting the edges back to positive has now been made into a private inline
306   function called reset_edges().
307 * Fixed a missing initialization of max_radius to zero in the radius_poly
308   class. This should not have ever caused any errors, as max_radius would
309   always have been big enough. However if max_radius was initially set to a
310   large value, it could have potentially made the code run slower.
311 * Fixed the code layout in the suretest class header
312 * Added some additional checks in the command-line utility to screen out
313   invalid command-line arguments. Switched the test on the number of
314   computational blocks to use floating point arithmetic, because integers
315   could potentially overflow and become negative.
316 * Included several more of the POV-Ray header files that were used to create
317   the example images on the website
318 * Removed a "cout" statement in the wall_cone class
319 * Cleanup of the README files for the basic examples and the wall examples
321 Version 0.2.5 (January 1, 2009)
322 ===============================
323 * Added the DOE acknowledgements to the code overview document
325 Version 0.2.4 (December 14, 2008)
326 =================================
327 * Added the code overview PDF document to the package, in the docs directory
328 * Fixed some spelling errors in the comments
329 * Many more documentation updates
331 Version 0.2.3 (December 9, 2008)
332 ================================
333 * Removed an unused variable that was reported by the Portland C compiler
334 * Documentation updates
335 * Added the import.pov script
336 * Added some simple functions to solve the problem from Stefan Eibl of counting
337   faces
338 * Renamed the facets_loop to voropp_loop
340 Version 0.2.2 (November 19, 2008)
341 =================================
342 * Main README file updated
344 Version 0.2.1 (November 3, 2008)
345 ================================
346 * Much more documentation
347 * Brief Doxygen class comments
348 * Updated Doxyfile to version 1.5.7
350 Version 0.2 (October 31, 2008)
351 ==============================
352 * Updated some occurrences of char* with const char* for compatability with
353   version 4.2 of the GNU C++ compiler
354 * Making use of default parameters in the wall classes
355 * The command-line utility can now add walls
357 Version 0.1 (August 22, 2008)
358 =============================
359 * Initial version uploaded to the web