Page MenuHomec4science

No OneTemporary

File Metadata

Created
Sat, Jul 13, 03:08
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/lib/voro++/LICENSE b/lib/voro++/LICENSE
new file mode 100644
index 000000000..7b05ace52
--- /dev/null
+++ b/lib/voro++/LICENSE
@@ -0,0 +1,39 @@
+Voro++ Copyright (c) 2008, The Regents of the University of California, through
+Lawrence Berkeley National Laboratory (subject to receipt of any required
+approvals from the U.S. Dept. of Energy). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+(1) Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
+
+(2) Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+(3) Neither the name of the University of California, Lawrence Berkeley
+National Laboratory, U.S. Dept. of Energy nor the names of its contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+You are under no obligation whatsoever to provide any bug fixes, patches, or
+upgrades to the features, functionality or performance of the source code
+("Enhancements") to anyone; however, if you choose to make your Enhancements
+available either publicly, or directly to Lawrence Berkeley National
+Laboratory, without imposing a separate written license agreement for such
+Enhancements, then you hereby grant the following license: a non-exclusive,
+royalty-free perpetual license to install, use, modify, prepare derivative
+works, incorporate into other computer software, distribute, and sublicense
+such enhancements or derivative works thereof, in binary and source code form.
diff --git a/lib/voro++/Makefile b/lib/voro++/Makefile
new file mode 100644
index 000000000..01675af87
--- /dev/null
+++ b/lib/voro++/Makefile
@@ -0,0 +1,72 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Tell make that these are phony targets
+.PHONY: all help clean install uninstall
+
+include config.mk
+
+# Build all of the executable files
+all:
+ $(MAKE) -C src
+ $(MAKE) -C examples
+
+# Build the help files (with Doxygen)
+help:
+ $(MAKE) -C src help
+
+# Clean up the executable files
+clean:
+ $(MAKE) -C src clean
+ $(MAKE) -C examples clean
+
+# Install the executable, man page, and shared library
+install:
+ $(MAKE) -C src
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/bin
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/lib
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/man
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/man/man1
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/include
+ $(INSTALL) -d $(IFLAGS_EXEC) $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS_EXEC) src/voro++ $(PREFIX)/bin
+ $(INSTALL) $(IFLAGS) man/voro++.1 $(PREFIX)/man/man1
+ $(INSTALL) $(IFLAGS) src/libvoro++.a $(PREFIX)/lib
+ $(INSTALL) $(IFLAGS) src/voro++.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/c_loops.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/cell.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/common.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/config.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/container.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/container_prd.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/rad_option.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/pre_container.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/unitcell.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/v_base.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/v_compute.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/wall.hh $(PREFIX)/include/voro++
+ $(INSTALL) $(IFLAGS) src/worklist.hh $(PREFIX)/include/voro++
+
+# Uninstall the executable, man page, and shared library
+uninstall:
+ rm -f $(PREFIX)/bin/voro++
+ rm -f $(PREFIX)/man/man1/voro++.1
+ rm -f $(PREFIX)/lib/libvoro++.a
+ rm -f $(PREFIX)/include/voro++/voro++.hh
+ rm -f $(PREFIX)/include/voro++/c_loops.hh
+ rm -f $(PREFIX)/include/voro++/cell.hh
+ rm -f $(PREFIX)/include/voro++/common.hh
+ rm -f $(PREFIX)/include/voro++/config.hh
+ rm -f $(PREFIX)/include/voro++/container.hh
+ rm -f $(PREFIX)/include/voro++/container_prd.hh
+ rm -f $(PREFIX)/include/voro++/pre_container.hh
+ rm -f $(PREFIX)/include/voro++/rad_option.hh
+ rm -f $(PREFIX)/include/voro++/unitcell.hh
+ rm -f $(PREFIX)/include/voro++/v_base.hh
+ rm -f $(PREFIX)/include/voro++/v_compute.hh
+ rm -f $(PREFIX)/include/voro++/wall.hh
+ rm -f $(PREFIX)/include/voro++/worklist.hh
+ rmdir $(PREFIX)/include/voro++
diff --git a/lib/voro++/NEWS b/lib/voro++/NEWS
new file mode 100644
index 000000000..a954f2232
--- /dev/null
+++ b/lib/voro++/NEWS
@@ -0,0 +1,329 @@
+Version 0.4.5 (July 27th 2012)
+==============================
+* Removed "using namespace std" from the header files and added extra "std::"
+ qualifiers on STL vectors and queues. This is to prevent naming conflicts
+ with other libraries. Thanks to Florian Hoffmann (University of Luxembourg)
+ for pointing this out.
+* Fixed an error in the check_facets diagnostic routine. Thanks to Tristan
+ Carrier-Baudouin (Université catholique de Louvain) for pointing this out.
+* Fixed a memory leak in the new container_periodic class. Thanks to Massimo
+ Marchi (Commissariat á l'Energie Atomique) for pointing this out.
+* Removed some duplicate or unnecessary #include statements of the standard C++
+ header files
+* Fix small naming mismatch between cell.cc and cell.hh in plane_intersects
+ and nplane routines, which would give a warning with Doxygen
+* More changes for older MS Visual C++ compatability
+* Updated Doxyfile to 1.8.1.1
+
+Version 0.4.4 (January 17th 2012)
+=================================
+* Fixed an error in pointer arithmetic that was introduced in version 0.4,
+ which would occur in cases where the delete stack was extended when a large
+ number of vertices were being removed. Thanks to Jeff Johnson (Lawrence
+ Berkeley Laboratory) and Matt Freeman (Texas A&M University) for pointing
+ this out.
+
+Version 0.4.3 (November 12th 2011)
+==================================
+* Removed spurious Gnuplot output line from torus.cc example
+* More changes for better Visual C++ compatibility
+* Fixed indexing error in worklist generation routine. This had no effect
+ on the generated worklists, but would become apparent in other situations.
+* Added rad_option.hh to the list of files included by voro++.hh for
+ completeness
+* Fix errors in Gnuplot commands in the basic examples README file. Thanks to
+ William-Fernando Oquendo (National University of Colombia) for pointing this
+ out.
+* Fixed memory allocation issue in face_freq_table routine - thanks to Lingti
+ Kong for pointing this out
+* Minor cleanups and optimizations to wall classes
+
+Version 0.4.2 (September 23rd 2011)
+===================================
+* Fixed a bug in the put_remap routine where a z periodic boolean was
+ switched to an x periodic boolean. This would only be noticed when using
+ mixed periodic boundary conditions and importing particles that need to be
+ remapped.
+* The pid function in the c_loop_base class was mistakenly labeled as double
+ instead of int - this is now fixed. Thanks to William-Fernando Oquendo
+ (National University of Colombia) for pointing this out.
+* Fixed an extremely subtle bounds checking issue that would only materialize
+ for the radical Voronoi tessellation with large particle radii. Thanks to
+ Richard Martin and Maciej Haranczyk (Lawrence Berkeley Laboratory) for
+ pointing out the original problem.
+* Fixed other problems with the radical tessellation. Originally, the
+ algorithms were concieved for with hard spheres in mind, where the particles
+ would not overlap, and an assumption was used in the cutoff procedure that
+ made use of this, but would not be true in general.
+* Removed more bracket initializations like "double a(3);" for better
+ consistency, and more compatibility with older versions of MS Visual C++.
+ Thanks to Martin Brehm for help with this.
+* Factored out the regular/radical inline routines into separate classes, so
+ that they don't have to be duplicated in the container_periodic classes
+* Fixed problems with the container_periodic classes referencing the wrong
+ loop classes. Thanks to Wang Chuncheng (Nanyang Technological University) for
+ pointing this out.
+* Added c_loop_order_periodic class for doing ordered loops with the periodic
+ container classes
+* Updated the README file in the src directory. The detailed description of
+ each file has been removed since this is difficult to maintain and this
+ information is already present in the class reference manual.
+* Fixed an error in the pre_container selection of the optimal computational
+ grid size
+* Code comment cleanups, particularly in wall.hh
+* Minor man page reformatting
+* Updated Doxyfile to version 1.7.5.1
+
+Version 0.4.1 (September 7th 2011)
+==================================
+* Fixed bug in command-line utility that would give incorrect results when
+ using the "-c" option for custom output. Thanks to Prof. Aldo Romero
+ (CINVESTAV-Unidad Queretaro) for pointing this out.
+* Added some additional documentation about neighbor information
+
+Version 0.4 (August 30th 2011)
+==============================
+* New classes called container_periodic and container_periodic_poly that carry
+ out Voronoi computations in 3D periodic parallelepiped unit cells have been
+ added. This adds significant complexity to the computation, and the memory
+ organization of these classes is different, requiring allocation for ghost
+ regions. Currently these classes cannot be accessed by the command-line
+ utility, but will be integrated further in future releases. These classes are
+ currently mainly exploited by a sister software project Zeo++ for chemical
+ informatics (Maciej Haranczyk, Chris Rycroft, Thomas Willems, Richard Martin)
+ to be released in late 2011.
+* As part of the new container_periodic classes, a new class called unitcell
+ has been added, which will compute the Voronoi cell for a single particle in
+ a 3D periodic parallelepiped class. The Voronoi cell is formed by the
+ influences of the periodic images of itself only. This turns out to be an
+ important component of the calculations done by the container_periodic
+ classes but can also be used independently.
+* The container classes now have a routine called find_voronoi_cell that will
+ take a given position vector and return the Voronoi cell which is contained
+ within. For the regular Voronoi tessellation, this is just the Voronoi cell
+ corresponding to the closest particle (by definition). For the radical
+ Voronoi tessellation, this is weighted by the particle radii.
+* The library is now enclosed within the "voro" namespace. This requires
+ specifying "using namespace voro;" in the preamble of codes or prepending
+ "voro::" to access functions. This greatly minimizes the possiblity of naming
+ conflicts when using multiple libraries, particularly since many of the
+ classes iin the library have fairly generic names (eg. "container"). Thanks to
+ Allan Johns (Dr. D Studios) for suggesting this.
+* Voro++ can now be built as a static library that can be installed and linked
+ to. As part of this, the .cc and .hh files have been significantly revised
+ with some small inline functions and template code being written into the
+ header files.
+* Previously, all of the voronoicell output routines sent data to an output
+ stream. However, input and output are now carried out using the STL vector
+ class, allowing for programs to directly link to and use Voro++ output. The
+ STL vector class has been chosen since it the simplest and most standard
+ mechanism for returning a variable amount of data. Several new examples are
+ provided to demonstrate this functionality, for both the voronoicell class
+ and the container class.
+* A common issue has been that the order of particles in the output file does
+ not match the input file, since Voro++ internally sorts particles according
+ to their position. A new class called voro_order has been provided, which can
+ link to particles as they are stored, allowing for the Voronoi computation to
+ be carried out in the same order as the input file. The core computation
+ routines can be run with a variety of different loops, and a new example
+ "loops.cc" is provided to demonstrate this.
+* The order of parameters to certain functions have been changed to take
+ advantage of the C++ default parameter mechanism wherever possible
+* The container and container_poly classes are now derived from a base class,
+ rather than being different instances of a template. This simplifies the code
+ and stops common routines from being duplicated. The core Voronoi computation
+ routine is now held within a voro_compute class, which can be instantiated on
+ any container with the correct access functions.
+* The voronoicell and voronoicell_neighbor classes are now derived from a
+ common base class, rather than being different instances of a template. This
+ simplifies the code and stops common routines from being duplicated. The core
+ nplane routine is now a function template that can be instantiated on the
+ parent class itself.
+* All output routines have been switched from using C++ iostreams to using the C
+ cstdio library. This has been done for increased performance. In general the
+ cstdio routines run significantly faster than the comparable iostream
+ routines: for one file import test, using fscanf from cstdio was five times
+ as fast as the comparable << operator from iostream. As another example,
+ the program "cylinder.cc", which uses both file import and export, runs
+ approximately twice as fast before. Since many people use Voro++ to batch
+ process large numbers of input files, this increase in input/output speed
+ seemed desirable.
+* The Gnuplot output routines now merge individual lines into contiguous paths
+ wherever possible, resulting in a ~15% reduction in their file size and a
+ noticeable improvement in rendering speed
+* Previously, the POV-Ray output routines could create cylinders where the start
+ and end points matched. This was a benign problem, due to the fact the vertex
+ positions within Voro++ were held to higher precision than the POV-Ray output
+ file, meaning that distinct vertices could appear to be at the same position;
+ a perl script was provided to post-process and remove these. However, Voro++
+ now scans each cylinder before saving to file to automatically remove these
+ cases from consideration.
+* Pointer arithmetic is now used within a number of critical cell computation
+ routines, and gives a speedup of 10%-20% in many cases. On some typical
+ problems on typical machines, Voro++ currently computes around 50,000
+ cells/second. New machines can achieve upwards of 70,000 cells/second.
+* A new pre-container mechanism is provided, which can read in a file of
+ unknown length, and then make a guess at the correct computational grid size
+ to use. This removes the need for specifying a length scale with the
+ command-line utility. However, a length scale or grid decomposition can still
+ be manually specified.
+* Removed the option to compile in single-precision. This was a highly
+ specialized feature, and it appears better to allow users who wish to do this
+ to make their own modifications. This option also conflicted with building
+ Voro++ as a standard static library.
+* Fixed a benign bug in the block computation list that would cause it to get
+ extended prematurely
+* Numerous small improvements to memory allocation routines
+* Added routines to copy a Voronoi cell
+* Created a new wall_list class to handle a list of walls. This simplifies the
+ command-line utility code.
+* Labels in the worklist that are used in the transition from the radius search
+ to the block search have been optimized
+* The command-line utility can now produce POV-Ray output. Also, the main loop
+ in the utility has been combined so that the Voronoi tessellation is only
+ carried out once, even if POV-Ray and Gnuplot output is also required.
+* The command-line utility does range checking on the filename to prevent
+ buffer overruns
+* The routines that put particles into a container now do so more reliably for
+ periodic cases, remapping them into the primary domain if necessary
+* A number of the POV-Ray header files have been altered to directly make use
+ of a right-handed coordinate system in which the z axis points upwards. This
+ matches the Gnuplot style, and the style used in many scientific simulations.
+ It avoids the need for a rotation or matrix transformation when rendering
+ many of the particle packings. Some of the test particle packings have been
+ transformed to ensure consistency with previous renderings.
+* Some POV-Ray files have been cleaned up and there are additional comments
+* Fixed a bug in the print_all_custom() routine, affecting "%P" output. Thanks
+ to David Waroquiers (Université Catholique de Louvain, Belgium) for pointing
+ this out.
+* Fixed a bug that caused the neighbor list not to be outputted in the same
+ order as the other plane diagnostic routines. Thanks to Olufemi Olorode
+ (Texas A&M University) for pointing this out.
+* Removed the add_vertex() and init_test() routines, which were mainly used for
+ debugging
+* Updated Doxyfile to version 1.7.4
+
+Version 0.3.1 (September 29, 2009)
+==================================
+* Carried out a major overhaul of the source code comments that are used by
+ Doxygen. Several errors in the documentation were fixed.
+* Additional comments in the Makefiles, and added the "phony target" keyword
+* Many code cleanups and standardizations. Some double and triple loops
+ were concatenated into one to reduce the amount of indentation.
+* Fixed the import.cc example program
+* Updated Doxyfile to version 1.6.1
+
+Version 0.3 (August 17, 2009)
+=============================
+* In response to feedback from several people, the routines for computing
+ statistics about computed Voronoi cells have been significantly revised,
+ extended, and put within a common framework. The voronoicell class now has a
+ large number of routines of the form output_...() that will print cell
+ information to an output stream. There are also a number of new, simple
+ routines for computing basic statistics such as the number of edges and faces
+ of each cell. All of these routines can now be used during the container
+ analysis, by making use of the new print_custom() routine, which can output
+ according to a given format string, that uses control sequences similar to
+ the standard C printf() routine.
+* Renamed the "radical" example directory to "custom", and added two
+ new programs called "cell_statistics.cc" and "custom_output.cc" for
+ demonstrating the new output routines for the voronoicell and container
+ classes respectively
+* Added a routine for computing the centroid of a Voronoi cell
+* Added new routines for computing neighbor normals, in response to a
+ request from Dave Greenwood
+* Removed unnecessary trailing tabs and spaces in the source code
+* Fixed a few text justification problems, and altered some of the comments
+ in the example programs
+* Improved the command-line utility, allowing it to specify custom information
+ in the output. Implemented better error checking on command-line arguments.
+* Removed the facets() routine, since this has been superseded by the new
+ output_...() routines. This also rendered some functions in the neighbor_none
+ and neighbor_track classes obsolete, and they have also been removed.
+* Some reorganization of the cell.hh and container.hh header files to group
+ similar functions together
+* Added torus.cc example that shows how to write custom walls as derived
+ classes
+* Updated Doxyfile to version 1.5.9
+
+Version 0.2.7 (March 25, 2009)
+==============================
+* Added some missing cstdlib and cstring header files that cause compilation
+ errors on some systems
+* Some text cleanups in the main README file and cmd_line.cc
+* The worklist_gen.pl script was in DOS format. It has been switched to Unix
+ format to match the rest of the code.
+* Fixed some incorrect inequalities in degenerate2.cc
+* Improved some error messages in container.cc
+
+Version 0.2.6 (March 23, 2009)
+==============================
+* Significantly improved the error messages generated by the code. It now
+ makes use of the exit() routine rather than throwing errors, and it returns
+ various status codes (defined in config.hh) for different types of abnormal
+ behavior.
+* Changed two occurences of "cin" to "cout" in the draw_particles routines
+* Corrected error in comment in the tetrahedron example
+* Minor comment cleanups of the worklist_gen.pl script
+* Updated Doxyfile to version 1.5.8
+* Added a routine print_facet_information() in response to a problem
+ from Hengxing Lan
+* Many of the cell based statistics routines (like number_of_faces() and
+ facets()) internally track their progress by temporarily flipping the edge
+ table entries to negative values, so that they know where they have already
+ been. The common code that was used at the end of each of these functions for
+ resetting the edges back to positive has now been made into a private inline
+ function called reset_edges().
+* Fixed a missing initialization of max_radius to zero in the radius_poly
+ class. This should not have ever caused any errors, as max_radius would
+ always have been big enough. However if max_radius was initially set to a
+ large value, it could have potentially made the code run slower.
+* Fixed the code layout in the suretest class header
+* Added some additional checks in the command-line utility to screen out
+ invalid command-line arguments. Switched the test on the number of
+ computational blocks to use floating point arithmetic, because integers
+ could potentially overflow and become negative.
+* Included several more of the POV-Ray header files that were used to create
+ the example images on the website
+* Removed a "cout" statement in the wall_cone class
+* Cleanup of the README files for the basic examples and the wall examples
+
+Version 0.2.5 (January 1, 2009)
+===============================
+* Added the DOE acknowledgements to the code overview document
+
+Version 0.2.4 (December 14, 2008)
+=================================
+* Added the code overview PDF document to the package, in the docs directory
+* Fixed some spelling errors in the comments
+* Many more documentation updates
+
+Version 0.2.3 (December 9, 2008)
+================================
+* Removed an unused variable that was reported by the Portland C compiler
+* Documentation updates
+* Added the import.pov script
+* Added some simple functions to solve the problem from Stefan Eibl of counting
+ faces
+* Renamed the facets_loop to voropp_loop
+
+Version 0.2.2 (November 19, 2008)
+=================================
+* Main README file updated
+
+Version 0.2.1 (November 3, 2008)
+================================
+* Much more documentation
+* Brief Doxygen class comments
+* Updated Doxyfile to version 1.5.7
+
+Version 0.2 (October 31, 2008)
+==============================
+* Updated some occurrences of char* with const char* for compatability with
+ version 4.2 of the GNU C++ compiler
+* Making use of default parameters in the wall classes
+* The command-line utility can now add walls
+
+Version 0.1 (August 22, 2008)
+=============================
+* Initial version uploaded to the web
diff --git a/lib/voro++/README b/lib/voro++/README
new file mode 100644
index 000000000..338ebcb32
--- /dev/null
+++ b/lib/voro++/README
@@ -0,0 +1,153 @@
+Voro++, a 3D cell-based Voronoi library (http://math.lbl.gov/voro++/)
+By Chris H. Rycroft (UC Berkeley / Lawrence Berkeley Laboratory)
+================================================================
+Voro++ is a software library for carrying out three-dimensional computations
+of the Voronoi tessellation. A distinguishing feature of the Voro++ library
+is that it carries out cell-based calculations, computing the Voronoi cell
+for each particle individually, rather than computing the Voronoi
+tessellation as a global network of vertices and edges. It is particularly
+well-suited for applications that rely on cell-based statistics, where
+features of Voronoi cells (eg. volume, centroid, number of faces) can be
+used to analyze a system of particles
+
+Voro++ comprises of several C++ classes that can be built as a static library
+and linked to. A command-line utility is also provided that can analyze text
+files of particle configurations and use most of the features of the code.
+Numerous examples are provided to demonstrate the library's features and all of
+these are discussed in detail on the library website.
+
+
+Compilation - Linux / Mac OS / Windows with Cygwin
+==================================================
+The code is written in ANSI C++, and compiles on many system architectures. The
+package contains the C++ source code, example files, miscellaneous utilities
+and documentation. On Linux, Mac OS, and Windows (using Cygwin), the
+compilation and installed can be carried out using GNU Make.
+
+To begin, the user should review the file "config.mk" in the top level
+directory, to make sure that the compilation and installation settings are
+appropriate for their system. Typing "make" will then compile the static
+library, command-line utility, and examples. The command-line utility and
+library will appear within the "src" directory.
+
+Following successful compilation, the library, command-line utility, and
+documentation can be installed by typing "sudo make install". By default, the
+program files are installed into /usr/local, and it may be necessary to modify
+your environment variables in order to access the installed files:
+
+- to use the command-line utility, the variable PATH should contain
+ /usr/local/bin.
+- to access the Voro++ man page, the variable MANPATH should contain
+ /usr/local/man.
+- to access the Voro++ header files, code compilation should include
+ the flag '-I/usr/local/include/voro++'.
+- to link to the static library, code compilation should include the
+ flags '-L/usr/local/lib' to tell the linker where to look, and then
+ '-lvoro++' to link to the library.
+
+The library website contains additional notes on setting environment variables,
+and many guides are available on the Internet.
+
+The code can later be uninstalled with "sudo make uninstall". It is also
+possible to use the library and command-line utility without installation by
+calling the files directly once they have been compiled. On systems where the
+user does not have root privileges to install into /usr/local, the "config.mk"
+file can be modified to install into the user's home directory by setting
+PREFIX=$(HOME). Voro++ supports parallel compilation by using the "make -j <n>"
+command where n is the number of threads.
+
+
+Compilation - Windows without Cygwin
+====================================
+On a Windows machine without a terminal environment like Cygwin, it is possible
+to import and compile the library in many standard C++ development
+environments. Users have reported success in building the library with
+Microsoft Visual C++ Express and Code::Blocks.
+
+
+Related programs
+================
+No external dependencies are required to compile and run the code, but several
+programs may be useful for analyzing the output:
+
+- The freeware plotting program Gnuplot (available at www.gnuplot.info) can be
+ used for rapid 2D and 3D visualization of the program output.
+
+- The freeware raytracer POV-Ray (available at www.povray.org) can be used for
+ high-quality renderings of the program output.
+
+- The reference manual is generated from comments in the source code using
+ Doxygen (available at www.doxygen.org). This package is only required if the
+ library files are being developed and the reference manuals need to be
+ regenerated. The complete reference manual to the current code is available
+ online at http://math.lbl.gov/voro++/doc/refman/
+
+
+Contents
+========
+examples - many documented examples making use of the library
+html - an HTML-based reference manual (generated by Doxygen)
+man - contains the man page that is installed with the program
+scripts - miscellaneous helper scripts
+src - source code files
+
+
+Usage
+=====
+Voro++ is released as free software through the Lawrence Berkeley National
+Laboratory - a detailed copyright notice is provided below, and the complete
+terms of the license can be found in the LICENSE file.
+
+I am very interested to hear from users of the software, so if you find this
+useful, please email me at chr@alum.mit.edu. Also, if you plan to publish an
+academic paper using this software, please consider citing one of the following
+publications:
+
+- Chris H. Rycroft, "Voro++: A three-dimensional Voronoi cell library in C++",
+ Chaos 19, 041111 (2009).
+
+- Chris H. Rycroft, Gary S. Grest, James W. Landry, and Martin Z. Bazant,
+ "Analysis of Granular Flow in a Pebble-Bed Nuclear Reactor",
+ Phys. Rev. E 74, 021306 (2006).
+
+- Chris H. Rycroft, "Multiscale Modeling in Granular Flow", PhD thesis
+ submitted to the Massachusetts Institute of Technology, September 2007.
+ (http://math.berkeley.edu/~chr/publish/phd.html)
+
+The first reference contains a one-page overview of the library. The second
+reference contains some of the initial images that were made using a very early
+version of this code, to track small changes in packing fraction in a large
+particle simulation. The third reference discusses the use of 3D Voronoi cells,
+and describes the algorithms that were employed in the early version of this
+code. Since the publication of the above references, the algorithms in Voro++
+have been significantly improved, and a paper specifically devoted to the
+current code architecture will be published during 2012.
+
+
+Copyright Notice
+================
+Voro++ Copyright (c) 2008, The Regents of the University of California, through
+Lawrence Berkeley National Laboratory (subject to receipt of any required
+approvals from the U.S. Dept. of Energy). All rights reserved.
+
+If you have questions about your rights to use or distribute this software,
+please contact Berkeley Lab's Technology Transfer Department at TTD@lbl.gov.
+
+NOTICE. This software was developed under partial funding from the U.S.
+Department of Energy. As such, the U.S. Government has been granted for itself
+and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide
+license in the Software to reproduce, prepare derivative works, and perform
+publicly and display publicly. Beginning five (5) years after the date
+permission to assert copyright is obtained from the U.S. Department of Energy,
+and subject to any subsequent five (5) year renewals, the U.S. Government is
+granted for itself and others acting on its behalf a paid-up, nonexclusive,
+irrevocable, worldwide license in the Software to reproduce, prepare derivative
+works, distribute copies to the public, perform publicly and display publicly,
+and to permit others to do so.
+
+
+Acknowledgments
+===============
+This work was supported by the Director, Office of Science, Computational and
+Technology Research, U.S. Department of Energy under Contract No.
+DE-AC02-05CH11231.
diff --git a/lib/voro++/config.mk b/lib/voro++/config.mk
new file mode 100644
index 000000000..4f74162a8
--- /dev/null
+++ b/lib/voro++/config.mk
@@ -0,0 +1,30 @@
+# Voro++, a 3D cell-based Voronoi library
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 28th 2011
+
+# This a common configuration file that includes definitions used by all
+# the Makefiles.
+
+# C++ compiler
+CXX=g++
+
+# Flags for the C++ compiler
+CFLAGS=-Wall -ansi -pedantic -O3
+
+# Relative include and library paths for compilation of the examples
+E_INC=-I../../src
+E_LIB=-L../../src
+
+# Installation directory
+PREFIX=/usr/local
+
+# Install command
+INSTALL=install
+
+# Flags for install command for executable
+IFLAGS_EXEC=-m 0755
+
+# Flags for install command for non-executable files
+IFLAGS=-m 0644
diff --git a/lib/voro++/examples/Makefile b/lib/voro++/examples/Makefile
new file mode 100644
index 000000000..dc289f5e7
--- /dev/null
+++ b/lib/voro++/examples/Makefile
@@ -0,0 +1,36 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Makefile rules
+all: ex_basic ex_walls ex_custom ex_extra ex_degenerate ex_interface
+
+ex_basic:
+ $(MAKE) -C basic
+
+ex_walls:
+ $(MAKE) -C walls
+
+ex_custom:
+ $(MAKE) -C custom
+
+ex_extra:
+ $(MAKE) -C extra
+
+ex_degenerate:
+ $(MAKE) -C degenerate
+
+ex_interface:
+ $(MAKE) -C interface
+
+clean:
+ $(MAKE) -C basic clean
+ $(MAKE) -C walls clean
+ $(MAKE) -C custom clean
+ $(MAKE) -C extra clean
+ $(MAKE) -C degenerate clean
+ $(MAKE) -C interface clean
+
+.PHONY: all ex_basic ex_walls ex_custom ex_extra ex_degenerate clean
diff --git a/lib/voro++/examples/README b/lib/voro++/examples/README
new file mode 100644
index 000000000..c00d68c69
--- /dev/null
+++ b/lib/voro++/examples/README
@@ -0,0 +1,29 @@
+Voro++ example directory
+========================
+These directories contain example programs that make use of the Voro++ code,
+and they are divided into six sections:
+
+basic - this contains several simple scripts that introduce this basic classes
+and carry out simple operations, such as constructing a single cell, or making
+a Voronoi tessellation for a small number of a random particles in a box.
+
+walls - these programs demonstrate the use of wall objects, to calculate the
+Voronoi cells in non-standard geometries.
+
+custom - these programs demonstrate how to customize the output of the library
+to contain a variety of different statistics about the computed Voronoi cells.
+The radical tessellation for a polydisperse packing of particles is also
+demonstrated.
+
+interface - these programs demonstrate features of the library's C++ interface.
+
+extra - this contains miscellaneous additional applications of the library for
+non-standard usage. It also includes an example of using a wall object to
+approximately deal with a case of an irregular boundary.
+
+degenerate - these codes demonstrate cases when "degenerate" vertices of order
+bigger than 3 are created, when the cutting planes are aligned to existing
+vertices within the numerical tolerance.
+
+timing - these programs and scripts can be used to test the performance of the
+code under different configurations.
diff --git a/lib/voro++/examples/basic/Makefile b/lib/voro++/examples/basic/Makefile
new file mode 100644
index 000000000..0b042f986
--- /dev/null
+++ b/lib/voro++/examples/basic/Makefile
@@ -0,0 +1,31 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=single_cell platonic random_points import
+
+# Makefile rules
+all: $(EXECUTABLES)
+
+single_cell: single_cell.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o single_cell single_cell.cc -lvoro++
+
+platonic: platonic.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o platonic platonic.cc -lvoro++
+
+random_points: random_points.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o random_points random_points.cc -lvoro++
+
+import: import.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o import import.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/basic/README b/lib/voro++/examples/basic/README
new file mode 100644
index 000000000..b8da51075
--- /dev/null
+++ b/lib/voro++/examples/basic/README
@@ -0,0 +1,44 @@
+Voro++ basic example codes
+==========================
+These programs demonstrate some basic usage of the Voro++ library.
+
+1. single_cell.cc introduces the basic voronoicell class. It creates a simple
+cell by cutting it with a number of random planes. It outputs the cell to a file
+called single_cell.gnu, which can be visualized in gnuplot using the following
+commands:
+
+set style data lines
+splot 'single_cell.gnu'
+
+2. platonic.cc uses the voronoicell class to make the five Platonic solids,
+which are output to files that can be visualized in gnuplot.
+
+3. random_points.cc introduces the container class, for holding particle
+positions in a box. After creating a container, it adds a small number of
+random points to the box. It then calculates the sum of the volumes of the
+Voronoi cells, and compares it to the container volume - since the cells should
+perfectly partition the container, these two should be identical to within
+numerical accuracy. The code then saves the particle positions to
+"random_points_p.gnu" and the Voronoi cells to "random_points_v.gnu". These can
+be visualized in gnuplot using the command:
+
+splot 'random_points_p.gnu' u 2:3:4 with points, 'random_points_v.gnu' with lines
+
+4. import.cc demonstrates the ability of the code to import a list of particles
+from a text file. The code imports a text file called 'pack_ten_cube' which
+contains a thousand particles in a cube of side length 10. Each line of this
+file has the form:
+
+<Numerical ID> <x coordinate> <y coordinate> <z coordinate>
+
+The code imports the particles into the container, and then saves the particles
+and Voronoi cells in gnuplot and POV-Ray formats. To visualize the particles in
+gnuplot, use the command:
+
+splot 'pack_ten_cube' u 2:3:4 with points, 'pack_ten_cube.gnu' with lines
+
+To create a POV-Ray rendering of the particles, the scene header file
+import.pov must be used, which includes the output from the program. To render
+an 800x600 image with antialiasing, use the command:
+
+povray +W800 +H600 +A0.01 +Oimport.png import.pov
diff --git a/lib/voro++/examples/basic/import.cc b/lib/voro++/examples/basic/import.cc
new file mode 100644
index 000000000..0f5662686
--- /dev/null
+++ b/lib/voro++/examples/basic/import.cc
@@ -0,0 +1,36 @@
+// File import example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-5,x_max=5;
+const double y_min=-5,y_max=5;
+const double z_min=0,z_max=10;
+
+// Set up the number of blocks that the container is divided into
+const int n_x=6,n_y=6,n_z=6;
+
+int main() {
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ //Randomly add particles into the container
+ con.import("pack_ten_cube");
+
+ // Save the Voronoi network of all the particles to text files
+ // in gnuplot and POV-Ray formats
+ con.draw_cells_gnuplot("pack_ten_cube.gnu");
+ con.draw_cells_pov("pack_ten_cube_v.pov");
+
+ // Output the particles in POV-Ray format
+ con.draw_particles_pov("pack_ten_cube_p.pov");
+}
diff --git a/lib/voro++/examples/basic/import.pov b/lib/voro++/examples/basic/import.pov
new file mode 100644
index 000000000..f6a5ce2da
--- /dev/null
+++ b/lib/voro++/examples/basic/import.pov
@@ -0,0 +1,35 @@
+#version 3.6;
+
+// Right-handed coordinate system in which the z-axis points upwards
+camera {
+ location <30,-50,25>
+ sky z
+ right -0.24*x*image_width/image_height
+ up 0.24*z
+ look_at <0,0,4.5>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.38,0.40,0.40>}
+
+// Radius of the Voronoi cell network
+#declare r=0.08;
+
+// Radius of the particles
+#declare s=0.5;
+
+// Particles
+union{
+#include "pack_ten_cube_p.pov"
+ pigment{rgb 0.95} finish{reflection 0.1 specular 0.3 ambient 0.42}
+}
+
+// Voronoi cells
+union{
+#include "pack_ten_cube_v.pov"
+ pigment{rgb <1,0.4,0.45>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/basic/pack_ten_cube b/lib/voro++/examples/basic/pack_ten_cube
new file mode 100644
index 000000000..6f3f3945a
--- /dev/null
+++ b/lib/voro++/examples/basic/pack_ten_cube
@@ -0,0 +1,1000 @@
+23 1.777747557 -3.492096799 0.4999833772
+9 -1.504573524 4.5003357507 0.499881119
+14 -3.593346295 -4.079478798 0.4996447752
+16 -2.504448341 4.5004712224 0.4999803344
+10 -3.579038981 -0.110447005999999 0.4997721172
+8 -4.5000910941 2.497038418 0.4999033242
+18 -0.892068133 -1.124158881 0.4999412306
+11 -4.5007521028 4.4964495223 0.499349178
+17 2.496184614 3.63520192 1.3650818592
+7 3.500609988 4.5002518564 0.4995491064
+12 -2.670897425 0.385134808 0.4996563098
+19 4.130861187 -2.031997472 1.3420844832
+13 -4.4994016039 -0.502308366 0.4996701882
+6 3.634643031 1.868396401 0.4995850472
+21 0.495264667999999 4.5003315776 0.4998162976
+20 2.612941495 -2.942271588 0.4999589272
+5 3.410513879 -2.716031302 1.2309531604
+1 1.855321249 -0.697359048 0.4998681664
+3 1.492483294 2.701456337 0.4999731858
+2 -2.004772133 3.634556374 0.4999603508
+24 3.494539851 0.878346363 0.4998479288
+15 -3.593218603 -3.07978668 0.4997078944
+22 1.296120489 -1.525888167 0.498931062
+4 -2.965881239 -4.500569906 1.1540947224
+33 2.699604467 -1.232172013 0.4998971756
+31 -1.004070822 4.5000802154 1.365885387
+48 0.995216749 3.63429996 0.4997774642
+41 4.500214804 0.368378753 0.4999298238
+36 -4.5005298974 0.497388109 0.4995623988
+28 -1.210613696 -4.500396777 0.4997212104
+44 0.841361402 -4.50011141 0.4999100322
+42 3.506519854 -3.390711975 0.4995787316
+47 0.495526024 3.634097707 1.365928512
+38 -0.0244284950000004 -2.905790942 0.4994271714
+46 -3.949344308 -4.500313615 1.3338999244
+39 4.500720286 2.367827033 0.4996029004
+30 -0.705081046 -3.638151806 0.4995762636
+35 4.500116126 3.500099301 0.499782779
+37 0.777966276999999 -3.502235602 0.499960099
+25 -3.579944942 2.888322594 0.500023417
+32 -1.711925821 -3.632955825 0.49997382
+27 -0.00470451999999977 3.634687389 0.4999528096
+45 1.260617033 -2.584861871 0.49997382
+40 1.01129435 1.005628177 0.4997598924
+26 -1.0045196 3.634691976 0.4993728864
+29 3.635551758 2.868165015 0.499953135
+43 -0.50464489 4.5004659768 0.4997416176
+34 4.50004539 2.933594663 1.3237734196
+53 3.500139667 -4.500042015 0.499974295
+61 4.500151467 0.895418571 1.3803060668
+59 -3.246288172 3.830518911 0.4996174914
+71 4.500304424 4.500089931 0.499564145
+70 -0.158606368 -4.500008857 0.4998872312
+49 1.341105719 -4.500230172 1.365996031
+56 2.494542208 4.5006202551 0.499429341
+50 3.637530743 -0.136830733 0.499908515
+69 -2.210299451 -4.500076456 0.4996615122
+67 -2.711808232 2.384844711 0.4995786946
+55 -1.811976822 1.817448551 0.4999563366
+57 2.688580494 1.838608993 0.8205807256
+51 1.710861975 0.291709271999999 0.499505978
+64 -4.4812325308 3.496714039 0.4998743278
+52 2.503588045 2.76715736 0.499479061
+68 -4.5001843169 -1.502057664 0.4998231866
+62 -4.5001178548 -4.500587194 0.49963454
+60 -2.736305691 -2.562451455 0.4991955282
+65 -4.5002010247 1.4972494 0.4995872804
+54 1.841558913 -4.498511809 0.49997382
+66 4.500069843 -4.500076453 0.4997955272
+58 -0.504977848 2.76901692 0.4997757722
+63 2.996851285 3.636710386 0.4996950258
+72 -2.712988674 1.384654202 0.4998680854
+82 4.500287117 -1.641758177 0.4993995768
+87 -3.580218361 1.888721627 0.499693982
+78 4.130169439 -2.570692439 0.4994981638
+92 4.500259802 -3.500135416 0.4999033004
+77 0.494756016 2.768820502 0.4996955318
+74 2.003045388 -1.378555139 1.2170813804
+93 -2.708534174 3.207675447 1.0678208324
+81 1.495024384 4.5001698629 0.4997080546
+95 0.633004209 -2.808436977 1.2462371128
+79 -1.504843748 2.768860181 0.4997729994
+96 -4.5003281499 -2.501635229 0.499386617
+91 4.500389849 4.5002917992 1.4991542496
+89 4.500208985 1.36815892 0.4996067374
+94 2.495136557 0.911856452 0.4995224186
+90 -2.712338356 -3.568244486 0.49997382
+85 -4.4987421448 -0.00233840299999954 1.3655003356
+83 3.766877984 3.766931671 1.1248614478
+73 -0.684847553 -4.500064627 1.3501098464
+75 -3.58040719 -1.110081582 0.4999535498
+88 0.995403566 4.5001783001 1.3656873432
+86 2.446839006 -4.500229587 1.2963521604
+76 -0.00435931400000023 4.5001105015 1.3659861412
+84 2.639791263 -0.0775123239999997 0.4996600504
+80 4.500452682 -0.641528804 0.4996760284
+106 4.211839246 1.394959232 2.197062694
+116 -1.710473549 -4.227311273 1.3216228844
+107 0.0941037260000002 -0.94456352 0.4991886178
+98 -4.5002660347 3.979923517 1.3750259878
+101 2.997558649 4.5001802284 1.3633823704
+105 -1.812641939 -2.179851109 0.4998001296
+103 2.671453487 -3.940487596 0.4993790516
+108 0.91130271 -0.368489469 0.4999002862
+119 -1.890096007 -1.182957596 0.4995949714
+114 -4.5004553765 -1.002117033 1.3656490896
+115 4.500031621 1.896596281 1.3814991902
+104 -0.767264107 0.81918975 0.4999102538
+117 -4.5001162131 -3.501093176 0.499877364
+97 -4.5006343585 -3.679862011 1.4835837344
+99 -3.261197572 0.392705993 1.3063596088
+120 0.421595997000001 -2.010787226 0.4999765368
+102 4.500284972 -2.960886587 1.3418948266
+100 -0.812303012 1.817821788 0.499505001
+109 3.278430681 -2.047177263 0.499730762
+112 2.802184805 -3.494420012 1.3846319146
+113 1.995426386 3.62883435 0.4996833242
+118 -4.500281243 0.997410902 1.3651986086
+110 -1.767180584 0.812667594 0.4995394068
+111 -3.603484861 -2.094871991 0.6703225308
+127 2.140523091 -2.061175684 0.4996442096
+126 -0.576463007 -2.072604187 0.4993084496
+141 -0.0313528619999994 -3.581744633 1.2358153446
+133 1.995260637 4.500371952 1.3654872112
+137 -4.5001839683 -2.672437967 1.484272491
+124 3.667146964 -1.141442717 0.7344138754
+129 1.750572668 1.71020664 0.4996383334
+135 1.765489562 0.999828323 1.2030925006
+123 0.698631663 -1.228974698 1.243191352
+144 -3.581020005 0.889141449 0.4996759462
+140 -1.645382879 2.900072086 2.031263698
+134 0.238727658 0.371198172 0.499697031
+125 -3.695426488 4.5003383969 1.090343807
+131 -4.3168225703 1.996864452 1.3461892288
+132 -1.226514515 -1.761951501 1.193650347
+142 3.069250797 2.817005969 1.3224607634
+143 -1.808378593 -0.186378457 0.4998849562
+136 -1.501375607 3.632677896 1.366387764
+138 -4.5003096549 -4.50000161 2.168133636
+128 -2.003804301 4.5000235884 1.3661159716
+121 -1.134544705 -2.814756391 0.8696309272
+130 1.996608137 2.769331423 1.3609315758
+139 4.280009854 3.653156508 1.981972591
+122 3.182500997 -4.495087451 1.9735000802
+156 -2.71233203 -0.613908198999999 0.4998614262
+151 -2.255435742 -4.500084897 2.114410936
+149 2.173441932 0.101653963 1.3656702836
+146 -3.561981699 1.342475677 1.3906297338
+162 -2.059640522 2.42311195 1.2563787496
+158 -3.526923035 -3.462068954 1.4210739232
+157 -0.603843041 -0.167041875000001 0.499967501
+168 -4.4976438421 2.979942081 1.3755233632
+155 3.63408854 0.3957996 1.3643386924
+145 0.0754208270000003 1.35776895 0.4998093568
+153 -3.662134043 -1.531565572 1.4942674356
+161 4.50046085 -4.50061776 1.4996214942
+148 -0.300329123 0.513236683000001 1.3294805396
+152 3.634464185 1.395822741 1.3806850922
+163 -3.053859523 -2.448390049 1.4398418208
+154 -0.265167837 -1.494226064 1.25251521
+150 4.500179583 2.471009293 2.210236748
+164 -3.616523335 -0.536800793999999 1.403396945
+167 -1.265489684 0.291831187 1.1901975712
+165 0.849230963999999 1.915537289 0.8801813144
+166 4.500265854 -3.66604119 2.049991876
+159 -3.976947411 4.500062613 2.049832606
+160 1.495412568 3.634404282 1.365473769
+147 1.030055693 0.322907859 1.2308602108
+171 -2.317534663 1.470039517 1.4142359414
+174 -2.084524488 -2.96042299 1.144455757
+183 -0.621796841 -0.346885018 1.7246326334
+173 -3.632010846 3.484374545 1.354638395
+192 3.689981903 4.5003333236 2.084319288
+182 0.341176119 -4.500264821 1.3660463856
+187 -2.317546595 3.738350032 1.9332114072
+169 -1.418091529 -0.720567794 1.2496502312
+189 -2.265379793 0.0608718990000003 1.3542777464
+190 2.034900038 -2.683768129 1.2747548346
+177 -0.503786356 4.5001552217 2.232299622
+180 -1.049079218 2.372949286 1.296765799
+188 3.690967475 -3.945824515 1.3103487146
+178 3.282014766 3.593558621 1.9817586164
+179 -0.461787573 1.408622673 1.74363394
+191 -0.323480439 -2.504356536 1.365036985
+170 0.854753563 -4.500284139 2.267274804
+172 -2.753903301 -1.584923616 0.8020130848
+185 -2.573607983 -3.700017679 1.60595243
+175 -0.502908707 3.580274365 1.3652348842
+181 4.500012277 -2.687753003 2.30384576
+184 -3.943627367 0.498900728000001 2.029374094
+176 4.499850483 -0.104376991000001 1.3810178372
+186 1.437726468 -0.574320216999999 1.40004188
+213 -0.0976026660000002 2.11203256 1.1337010554
+214 0.392312953 -1.980956817 1.826852113
+210 -0.990210471 -3.562132264 1.5181266224
+199 2.022282108 -2.002256417 2.00904205
+212 1.819362169 -3.633034126 1.5029243416
+202 -1.309506163 1.333791989 1.2191527316
+198 1.325311624 -2.83082991 1.9671561974
+197 1.269748303 -2.044776016 1.3523619866
+208 -0.185169608 -4.144877282 2.139863712
+207 -1.275751328 -2.53943922 1.8205217068
+193 -2.932693934 4.5007005685 1.7353248614
+203 3.030920623 -0.584074115 1.2677265098
+196 4.499884569 -0.0162513410000003 3.15720918
+206 2.771337973 0.897436633 1.4601604012
+211 2.576331928 2.061831686 1.7883802418
+194 -1.257008405 -4.500012931 2.170182048
+200 0.995816812 2.768424279 1.3810452308
+195 0.495985162 4.5001679697 2.231810466
+216 2.284791612 -0.724089899 1.9184577632
+204 2.746083369 -2.691260395 1.9775348552
+205 -4.5000352646 -0.276885755 2.32679172
+201 2.84520848 -1.890208139 1.3872109968
+215 0.262135113999999 -0.316524595 1.2586576224
+209 1.996035729 3.634882499 2.23082913
+240 -3.230497328 2.284759836 1.348379412
+231 1.481117548 -4.500065801 3.046688492
+225 4.500320741 -1.10410475 1.3859997494
+235 3.576167709 -1.290386258 1.7188783698
+238 2.498421541 4.4995242839 2.22956777
+224 -1.775888214 -3.358314928 2.101862236
+239 0.47634328 1.140205177 1.3894778276
+230 -1.78598231 0.774267898 1.8970256626
+221 -2.668366269 -0.846827915 1.4712391412
+232 -4.1611452534 1.462931492 2.181899866
+229 -4.0557037128 -3.176904996 2.22394784
+220 -0.830430341 0.519886315 2.177344696
+237 -1.889867853 -1.202487026 1.9880344432
+233 -0.892318192 -1.269949654 1.997448484
+217 1.557519304 1.899924518 1.5852360964
+219 3.569595418 2.217510905 1.946834384
+234 -3.310861252 -4.211408229 2.046926432
+227 -2.151780487 -2.018247931 1.4724039644
+226 0.157910516 0.668294419 2.211336888
+218 0.0366332099999997 2.853725871 1.790630227
+236 0.842645457 -3.668571901 1.7128028854
+228 1.288669767 -1.323783531 2.044946728
+222 1.946633935 -4.500424222 2.161808896
+223 4.500061612 0.39635578 2.24656381
+248 0.114008786 -0.961123707 2.008527708
+245 3.615938247 -2.238928523 2.173689456
+249 2.867698366 -1.595590791 2.354541452
+259 3.134973217 1.373524021 2.260639338
+263 2.77971978 0.180387241 2.156809096
+255 -0.190266819 -3.145067502 2.121078486
+264 4.500263573 -0.694555401 2.362729858
+260 -1.612839289 1.902020798 1.9835160558
+242 1.173505203 0.871725746 2.054097222
+256 -2.79259332 -4.197787507 2.901796974
+241 3.622598914 -0.343689999 2.037181602
+253 4.082967441 -4.500739127 2.408140654
+246 0.737341444 -0.141696229 2.120953014
+251 -4.500018223 4.4995642996 2.902082526
+261 -2.862620643 -1.663944394 2.079790078
+243 -0.155773676 -0.199229292 2.59686147
+262 1.487183913 -3.672365345 2.481849414
+257 2.038885853 -2.846844354 2.666936934
+254 -3.060976866 -3.076882855 2.217388824
+252 -4.5003222607 -1.798407794 1.969946276
+247 4.500416579 4.4865323259 2.66933217
+250 1.714293333 0.0275625509999999 2.250898994
+258 0.995958743999999 3.634169969 2.231693794
+244 2.098864228 1.245782293 2.113027318
+283 -1.503672472 4.5000223677 2.23203126
+286 -3.262303978 3.715763007 2.259421124
+266 4.500262885 -1.990539132 3.153037236
+277 1.68240875 2.688525586 2.30660506
+279 -2.771431399 0.846515226999999 2.050750732
+274 2.000023771 -1.32895498 2.773741498
+288 -1.540530664 -0.177446281 2.080137338
+280 -0.990489497 3.626835076 2.237386528
+275 1.372659006 -2.107489262 2.762251866
+272 1.495759333 4.5003144117 2.231551952
+270 3.599080154 -3.232943785 2.065843782
+269 -2.867681897 1.835779108 2.164864312
+284 -3.049959991 -0.140103577000001 2.125370364
+281 0.567740954 2.010522135 1.8732039758
+268 -2.275302176 -2.473565267 2.354082168
+278 -4.5000000325 3.480360825 2.24128665
+276 0.547626692 -2.636885095 2.56497051
+282 4.500206244 -1.681521679 2.20233429
+267 2.660370512 2.894930187 2.334182926
+265 -0.679650392999999 2.290715223 2.222179834
+271 -3.651042962 -2.26288055 2.219455682
+273 4.500033214 -3.472702199 3.030666962
+285 -0.623961733 -4.50011844 2.965147376
+287 1.242563149 -0.677107479 2.806195548
+301 -2.644305348 2.794541699 1.9776623782
+309 3.762765011 1.955826483 2.892417732
+306 3.514555412 -2.156828791 3.164924244
+297 -3.646773494 2.808450181 2.091250428
+304 3.743944132 -1.286733101 2.723849606
+298 -3.631075258 -0.955775228 2.311259214
+290 3.719198805 2.950459535 2.610450168
+311 -2.289074661 -0.54755645 2.629552856
+292 -2.130408834 2.350946731 2.711675846
+305 1.633775745 3.56557901 3.160241996
+291 3.002089739 -2.973790555 2.901771286
+312 -0.936793761 -3.637094334 2.568748462
+300 1.28216256 1.802842057 2.541212378
+296 3.566102199 -0.353354324000001 3.035519154
+294 -0.000402970000000558 4.3927355435 3.093120692
+308 -2.432971954 4.5000403202 2.600850882
+303 -0.372324593 -1.200766201 2.848719136
+289 -2.305919986 -1.511178251 2.896055422
+299 3.584808436 0.554588558 2.61687858
+302 0.73013901 1.064992812 2.929074776
+310 -0.484464369 -2.137624369 2.281312514
+293 -3.643889999 0.0963722300000001 2.894035152
+307 3.396977821 -3.885855126 2.795708114
+295 -4.5002642788 1.67308786 3.098541668
+329 3.221998484 4.5004501865 2.96759099
+332 -0.337478279 0.821022334 3.066441442
+315 2.908266358 -1.177733801 3.262128172
+334 -4.5000379728 -1.180078324 2.755789892
+321 -1.37507058 -0.91598724 2.79770368
+316 -0.592790246 3.594296256 3.20052041
+326 0.714108195 2.729867027 2.552203436
+331 -2.407056715 -3.276264401 2.946741806
+317 -1.517219576 -2.822357414 2.90509973
+320 -1.938219797 0.38452046 2.805203662
+319 -0.00324743899999991 3.649371132 2.394827862
+318 -1.440428544 -1.886023441 2.562972744
+325 -3.628812253 2.072959488 2.768430122
+333 -0.0156802989999996 1.647963227 2.605495808
+313 1.999094411 4.4992097939 3.095611256
+330 -4.5000219753 0.708926359 2.833262832
+324 0.5616068 -1.526021211 2.700939504
+328 0.361118249 -4.500022128 3.136877208
+314 4.500038151 0.978872463 3.059349046
+327 -0.827449532999999 -1.93562572 3.351500218
+322 4.50013304 3.519628524 2.947874356
+335 -1.798073341 -4.067485493 2.891367634
+336 -3.665269681 -1.663523894 3.019130394
+323 2.2714932 2.006120203 2.739105982
+344 -1.271204388 -4.499304315 3.72729126
+351 -0.988100228 1.41514921 2.59372529
+342 -3.792345356 -4.500299951 2.874070708
+339 2.387674308 0.712193288 2.907227268
+345 2.635126552 3.691759021 2.997507948
+350 -4.5001706355 -3.792185593 2.874474006
+349 2.483446808 -3.670921474 2.315866348
+348 -1.291638895 0.893006517 3.39062114
+358 0.378564914 -0.830053421 3.395265636
+356 -3.890319669 3.587832299 3.026661222
+359 -1.04022185 -0.000130146000000053 3.018233788
+355 -4.500453354 2.380629114 2.386954854
+360 2.956549248 1.476527814 3.239065088
+340 2.714203335 4.500050223 3.82879752
+346 4.032753249 4.5000404384 3.552932696
+338 -3.540152302 -3.54094501 2.999088074
+354 -1.003990361 4.5000362118 3.098206566
+341 -0.5228433 -2.823753608 3.007610022
+347 0.503029524 -3.631893649 2.652539068
+343 1.186720035 -1.431250197 3.475059086
+357 1.660303428 1.274066829 3.300616796
+337 2.398160473 -0.415977469 2.86275796
+353 -3.43446006 1.090207167 2.758536066
+352 -1.936655782 4.500346735 3.468427182
+368 -1.155839085 -3.50891938 3.535978904
+370 4.500030037 2.55381397 3.206728502
+375 -0.841147404 -0.798639602 3.63503649
+365 -3.916020775 -3.759990954 3.91279992
+361 -1.632031825 -1.410236977 3.627690652
+374 1.213191868 -3.026349461 3.201204634
+367 3.604057597 0.798389376 3.586458372
+364 -4.500396291 -0.190302288000001 3.322818526
+379 2.516376059 -2.106023126 3.13901294
+383 -0.184344901999999 -1.466595389 3.984795788
+371 -2.812933497 0.501572726 3.275018202
+363 -4.5001609926 -4.500249588 3.580212924
+362 -4.5001283384 2.836010698 3.277040186
+377 -1.175173555 2.834577638 2.911288958
+378 -2.131555793 1.351096876 2.637179218
+381 0.633807274 3.570134948 3.161539634
+372 -2.073483596 3.343532917 2.818422512
+380 -3.199384064 -2.55851261 3.061047886
+384 -4.5002486112 -1.778475514 3.556919384
+373 -0.185836818999999 -3.69034385 3.374612914
+376 -4.5000012281 -2.441495471 2.73555709
+366 -1.842991902 -0.39483127 3.511190634
+382 -0.207939275999999 -0.026783043 3.580375308
+369 1.650012208 0.127064764 3.243855902
+390 -4.5001487484 -3.041671148 3.535277372
+405 2.115980288 -3.649165911 3.2587385
+394 -2.272031625 -2.380328121 3.389382758
+385 2.864047206 0.126280145 3.561877528
+406 2.615721165 -4.500102914 2.904763286
+391 -2.270632944 -4.500318965 3.699003844
+388 3.714162609 -1.432582925 3.824364534
+403 -1.41504493 -2.571112271 3.86746528
+408 -3.994409447 0.589566986 3.690917066
+399 -3.270157577 -4.500182284 3.726718532
+396 -0.138075073 -0.56692461 4.418806532
+392 -1.502415296 1.868030785 3.32169728
+404 1.541675912 2.442253825 3.265495036
+401 -0.510093449999999 1.872688273 3.445126938
+386 3.581018276 3.637829719 3.323606628
+400 2.608180815 2.746322445 3.321081858
+393 -3.04785124 2.959503761 2.87758162
+398 2.150233096 -4.500142197 3.789722876
+395 -3.789462578 -2.415284887 3.855319686
+402 -3.087581223 -0.857236157 3.144868024
+389 4.500040204 -4.500109657 3.316878514
+397 -1.121953608 0.0841875510000003 4.011254666
+387 -3.597553294 2.584954069 3.626600902
+407 0.631184329 2.028829797 3.26551508
+414 4.500840419 -0.374730156 4.090573378
+426 4.500121016 -1.003800727 3.313616024
+430 -2.927212631 -1.688961502 3.69307688
+420 -3.939975294 -0.946629618 3.659472636
+415 -1.311161931 2.66955365 3.888114236
+422 -1.509054418 3.606430915 3.6005369
+429 -2.81085591 1.963155843 3.33299753
+412 0.661672273000001 0.0821063200000003 3.098992812
+432 -0.186312545 2.706247328 2.986137424
+428 1.705698448 -2.305728978 3.688916042
+411 3.574035741 2.668311606 3.568103224
+421 -2.100206386 -3.529078631 3.864031492
+413 0.996238367 4.4999524561 3.097653032
+424 -0.463577189 4.5000176191 3.97279011
+416 0.965801743 -3.887046257 3.645319676
+427 2.813841022 3.51445511 3.965231242
+409 -1.057907605 -1.776812997 4.359721236
+410 -3.397449421 4.500100511 2.864659982
+417 -2.205471256 1.22330576 3.62617068
+419 4.500069459 -3.759356838 3.98844643
+431 3.508624231 -0.476452775 4.030680386
+418 -2.79450004 -3.972806165 4.430588016
+425 3.67086349 -3.30902625 3.565025662
+423 1.948638383 -0.81218127 3.66296925
+447 0.146063317 -2.163821629 3.348790206
+441 -3.663316042 1.530804938 3.626573156
+450 4.500087396 1.709342107 3.742161656
+440 -3.340143707 -0.156793547 3.812251634
+456 2.403862811 0.952297215 3.886692382
+437 -2.603369421 -0.800607444 4.01797447
+433 1.910150786 3.048426176 3.97027214
+435 3.535847412 1.767464788 4.000398272
+442 0.221810375 1.266212785 3.766038552
+434 -2.448212392 2.994593471 3.676981176
+438 0.0464725159999997 3.628546612 3.968709456
+445 4.500637328 -2.786463497 3.757752622
+449 -4.5004564553 -1.271956087 4.420625352
+452 -3.052697752 -3.229104047 3.814153096
+453 -2.094292234 -1.88064952 4.37862513
+444 -2.939443618 -2.414372299 4.382264502
+454 2.061291298 0.0517852880000005 4.153400082
+439 2.244658198 1.932792502 3.773925268
+451 -2.755108117 3.879904421 3.31599915
+446 -0.42837059 -2.652284639 4.005155918
+448 -2.367941225 0.201311239 4.118479728
+455 0.48359156 -3.044382679 3.884782812
+436 2.514471645 -2.888085142 3.770512134
+443 -4.4087285298 2.123818149 3.986366358
+468 1.064034295 -0.309471648000001 3.926481844
+472 -2.035185723 -2.854142358 4.598831684
+476 -0.296261452 -4.500624825 3.949308558
+464 3.531978375 -4.500068883 3.573087076
+470 -2.132627204 2.124195142 4.054421656
+473 4.500146489 0.620348453 3.992803652
+459 -1.231802133 1.751928119 4.277266076
+475 2.52808728 -1.863691739 4.10890359
+458 -3.022194137 0.959332081 4.139007628
+477 3.514566847 4.2322800797 4.365003608
+479 -4.5000439569 1.184159587 4.31597554
+480 4.50001619 3.631723431 3.941269128
+471 3.278268351 -1.589914122 4.710427318
+478 0.664761114 2.841800001 3.846039496
+461 -0.315668394 2.696532261 3.977533546
+460 -1.975068718 -4.500190651 4.654190116
+467 0.536302738 4.5001032628 3.985416662
+462 -3.099537623 2.024684534 4.2882503
+466 4.012294291 -4.500093433 4.450129994
+463 -3.674088801 4.5002617841 3.825440006
+457 -0.861884992 3.448611669 4.346081492
+469 -3.573436452 -1.644696858 4.454763888
+474 -0.377326424 -3.588822972 4.35114761
+465 3.685611859 3.247180436 4.375787394
+483 0.096201239 4.4963452052 4.88325619
+503 -0.645465129 0.951861082 4.151345406
+494 0.223265213 0.450974252 4.345657386
+497 1.645321897 -3.285326217 4.065014872
+490 1.032908748 0.682829065 3.806798024
+481 0.617963438 -4.50039983 4.353851566
+499 1.741906319 4.5006988661 4.061647452
+491 -3.462828967 3.528470271 3.928700638
+487 4.500230427 -1.902703194 4.224944152
+493 1.180992006 2.024090566 4.100639404
+485 2.873465773 -3.817034205 3.8892338
+501 -4.5002564683 3.944604575 3.733959622
+482 4.500206068 1.794634429 4.738442876
+498 -4.5000445082 -2.537190451 4.548202442
+488 1.583443435 -4.499526236 4.613386732
+489 3.618816281 -2.471197656 4.10845877
+496 2.853472211 2.563761868 4.27269262
+500 -1.716670011 -0.882428308 4.4727759
+502 1.762400473 1.343579211 4.546447926
+484 -1.395262286 4.3230681195 4.289788436
+492 0.810762874 -2.120453882 4.094195088
+495 0.7027494 -1.153126235 4.32347949
+486 -3.658610284 -3.075553586 4.594681508
+504 -4.50005695 -0.113076903 4.319684674
+507 1.140219078 3.703798901 4.018856976
+517 1.605539265 -1.580536146 4.370634764
+522 0.0320110979999999 -2.127916908 4.720987574
+513 -2.173549175 3.687780286 4.343259734
+509 -3.654704937 0.34875015 4.615393848
+518 2.736726483 1.595360209 4.576262758
+521 3.847564781 1.046457537 4.61917976
+515 0.767159287 1.265702381 4.604151944
+505 -3.495739104 -2.300708461 5.205395586
+508 -0.249806467 1.819279619 4.452636658
+524 -2.409214209 1.494958811 4.780702348
+528 1.032733144 -2.853155295 4.737272384
+526 -4.5001124736 -4.500141367 4.579998182
+520 -1.360399634 -3.589338699 4.533833884
+516 -1.651788787 0.849922854 4.375775178
+525 -2.811554623 -3.232485069 5.102442118
+510 3.611332399 -3.5869681 4.523752266
+527 -4.5001005331 3.957741897 4.733785438
+511 1.957288292 -2.482920111 4.64797571
+523 1.878714532 3.738238103 4.693533166
+512 -1.042953038 -2.677542469 4.793698322
+519 2.883459258 -2.856445573 4.699334164
+514 -1.652810482 -1.59453981 5.228668696
+506 4.480236308 2.666029949 4.200189168
+548 -0.611140806 0.243236777 4.85591581
+547 4.144974808 -1.091789303 4.689642744
+550 -0.700583798 -3.749792169 5.283635138
+530 2.323974316 -3.685071352 4.714072658
+549 1.347176791 0.45213074 4.727515088
+541 1.427934521 -3.669933792 5.157425992
+535 1.961731151 2.31769244 4.652080088
+545 2.308903464 0.610448927 4.951026498
+544 -2.712424497 4.5000109102 4.099324908
+539 2.895071323 -4.500277725 4.618751442
+551 -4.5002451574 2.375704127 4.949727302
+532 -0.853560343 -1.005434112 4.962376812
+536 3.155412318 0.33550387 4.495274196
+533 2.641361805 4.5000032104 4.826099436
+534 4.499902876 -2.838620768 4.756048386
+542 -4.5000267152 -4.500084388 5.579883974
+543 4.500044379 0.115452456 4.961611298
+537 -3.665154365 4.5002205638 4.825290794
+540 -0.989441229 1.164658839 5.065785974
+529 -4.5002959673 0.464039317 5.136212834
+538 -0.975707129 -4.500157442 4.68261065
+552 0.320473119 2.58519749 4.749000854
+546 2.641186142 -0.825707551 4.383647332
+531 -2.752505577 -4.500035126 5.283023432
+570 -1.581354273 0.00705784799999964 4.909182842
+571 -2.735892591 -1.296873985 4.875903496
+564 -4.4999960436 3.085321237 4.245321808
+554 0.209218084 1.683348646 5.330335484
+560 -3.710508522 -0.663638281 4.590539722
+569 -2.8503999 0.663795605 5.118992802
+563 0.466830515 -3.664766103 4.88158725
+555 -3.631177777 -4.164538246 4.943461478
+556 0.563468843 3.552453997 4.82146681
+562 1.604951595 -0.640646784999999 4.711838956
+557 1.102189874 2.068286595 5.097705032
+561 4.499939634 4.5000643216 4.437091474
+568 1.304538839 1.151195212 5.44117232
+575 4.500105784 -3.811544776 4.986818406
+567 -2.817934959 -0.300523856 4.8568749
+566 -0.886065815 2.542255259 4.784222934
+558 -2.834725238 2.938052616 4.597232776
+565 3.673009429 -2.411472929 5.121696606
+572 1.089267929 4.4029824613 4.812861718
+553 3.633265054 0.399604982 5.371346506
+574 0.945406086 -1.904794324 5.061201518
+576 2.339599819 -1.511082764 5.045884826
+573 -3.700828076 0.805083918999999 5.630452642
+559 -2.919359655 3.854449902 4.988114572
+582 -2.082029476 -0.707435164 5.397803236
+585 0.690512449 -0.281817058 4.90030231
+578 -4.5001696331 -3.542081257 4.866196334
+587 2.81726835 3.525443121 4.965136966
+595 -2.484055719 -2.193606719 5.244696558
+579 4.500148229 -1.859044258 5.22385731
+597 2.76886636 2.340489444 5.243573994
+586 -1.976147453 -3.742530682 5.306688532
+591 -3.735131142 3.284713004 4.85934223
+581 -3.647033134 1.366639274 4.804886164
+583 -3.524081968 2.297794291 5.151115238
+593 0.476029634000001 0.609339302 5.30005482
+580 4.500165715 -0.700982819 5.538728296
+599 3.374895152 -0.545632405000001 5.019214462
+588 -1.49027648 3.714172453 5.077146874
+590 -2.731135558 -0.0803307740000001 5.828278576
+598 0.816332976 4.500098247 5.769919174
+584 3.668988344 2.345771668 4.808228602
+596 2.040315406 3.014702318 5.364230074
+577 -0.714087131 -1.915784823 5.351673588
+594 0.154559739 -1.23591751 5.155698844
+589 -4.5000192745 -1.812504186 5.261834864
+592 3.575821489 -4.399398782 5.34411851
+600 2.146228768 -3.043756527 5.46040375
+618 4.500263837 2.681436285 5.250774138
+624 1.856882755 4.5000118252 5.446227254
+614 -4.5002565033 -0.649916645 5.203473746
+606 3.377696241 1.552357625 5.342446988
+611 -1.896040398 0.852751215 5.349820466
+609 0.207104652 -2.84637044 5.394033166
+604 -3.657036775 -0.179958241 5.464115386
+622 -3.664447241 -1.275941445 5.379805428
+617 2.236063847 -4.500081877 5.37079768
+610 2.418704508 -0.343333603 5.230572992
+602 -0.0614521229999996 -4.500030932 5.087333886
+608 -0.361698308999999 3.644246718 5.1894059
+616 1.691413507 0.21107957 5.634847776
+615 -2.89022918 4.5001507637 5.751024198
+619 -2.149830503 4.5000438901 4.925971746
+620 0.428889157 2.190178761 6.16390027
+601 2.810215228 0.77067975 5.801287854
+603 -1.708186408 -2.754819246 5.538477576
+605 -1.078053364 0.415526657 5.72307053
+621 -3.024750601 1.539239637 5.569377016
+607 4.500067014 3.632181358 4.941048088
+623 -3.548707469 -4.499946143 5.887999696
+612 0.285245316 3.031558199 5.642993352
+613 1.072904303 -1.004094333 5.476354718
+635 -4.5000513974 -1.169619394 6.057728914
+643 -1.38797007 -4.500154619 5.593458768
+641 -4.5001390459 1.446909688 5.320103162
+626 -1.849175686 2.819092791 4.717636618
+637 -0.111885717 -0.33590093 5.500154462
+642 -2.28251564 3.309724702 5.533675134
+636 1.290754582 3.662672443 5.498840974
+644 4.372099313 1.893906428 5.853470682
+647 -0.424294169 -0.401743008 6.447786444
+630 4.500167391 1.024799464 5.376541136
+640 -1.323986676 -3.614916687 6.053803504
+632 -2.743974191 -1.368213355 5.873170092
+639 -1.372372859 2.867190909 5.595320982
+646 -3.695146178 -3.371361629 5.5490094
+631 -2.494261641 2.353236597 5.333232112
+627 -4.5001011126 4.500270634 5.573635174
+625 2.234837349 1.517677264 5.437569766
+645 -0.536673557999999 1.390367601 5.928298724
+634 1.147645147 -2.899180893 5.729540862
+648 -2.251498467 1.815087493 6.140243212
+629 0.904082978 -4.500143593 5.347170198
+638 3.506122364 4.5000732528 5.32826828
+628 3.685735275 3.247822821 5.375774288
+633 -1.587978894 1.956194067 5.18895512
+656 3.648176935 -0.405297296000001 5.970813486
+671 -2.870955758 -3.767569334 5.953397052
+653 -1.178271364 -0.575877348000001 5.804928304
+665 4.500061511 4.5001594684 5.43744047
+661 -0.874180015 4.5002702541 5.124345944
+657 1.766882045 -2.127243789 5.585997808
+658 1.558307507 -4.156866392 6.021049766
+663 -0.144234508 0.482312728 6.073975906
+664 -0.733043509 -2.857801319 5.734511342
+668 2.790931095 -1.083856556 5.829139842
+650 -1.833347839 0.0315979220000004 6.254183842
+667 -0.432765816 -4.500101041 6.015634192
+672 -4.500083278 -2.778949176 5.518518706
+666 4.435092301 0.211537065 5.954787598
+660 -0.451219894 2.355451965 5.665110814
+669 -1.577570671 1.087749292 6.269265044
+670 3.723841087 -1.330384411 5.567031502
+651 -2.253448874 -2.168674546 6.217377426
+662 3.769379833 -3.339995714 5.480137958
+654 -4.4975225584 -0.0429850160000003 5.998072724
+652 4.498754693 -1.533838325 6.169398506
+659 -3.692307206 3.914311982 5.635034532
+649 1.925375979 0.983980534000001 6.224494418
+655 -4.4956595562 -4.500108517 6.579824322
+678 -1.629331791 4.5000355718 5.779740342
+692 -4.1772543963 2.446732834 5.893394892
+684 3.518972057 2.413221423 5.900751314
+673 0.69504651 3.662179678 6.302016962
+694 2.773284588 -2.268316092 5.533907584
+688 -0.180497878 4.4731247882 5.843913568
+691 -0.624828604 3.622988766 6.153767374
+695 -4.5002259281 3.308539058 5.50240493
+675 0.197408713 -3.743558725 5.841265954
+680 4.500307234 -4.500282217 5.711484208
+679 -4.500044417 0.67405253 6.694966612
+682 -2.219091001 -4.500043756 6.149422616
+677 -3.914597269 -1.980276893 6.05496275
+686 0.985504273 -1.778276798 6.10297032
+690 -4.5000382647 1.596385092 6.308785416
+689 -1.792199817 -1.277458499 6.166569584
+685 -2.472075877 2.767037723 6.351984888
+676 -3.221023249 3.039972801 5.748448442
+696 2.712649864 4.1446993244 5.822057706
+681 4.500088011 3.636246626 5.940973448
+683 2.856651464 -3.739906611 5.562612526
+687 -3.019226637 -2.756634206 5.957017552
+674 1.878273251 -0.70709146 5.989158288
+693 4.5002002 -2.71216935 5.74774071
+700 -3.289131137 2.194089247 6.277257586
+718 -0.402635868 -3.72039097 6.640873892
+708 3.727153719 -2.180575558 6.09330177
+701 -1.622107939 3.604341609 6.224287748
+709 -2.628835414 3.754484372 6.363752594
+713 -4.5004143972 -3.634176959 6.079916582
+717 -3.470645786 -0.78586951 6.23740935
+720 2.717827943 -4.500196226 6.246909452
+698 3.812226133 1.066875083 6.100898596
+714 0.305078756 -1.003497741 6.116916572
+712 -1.254973937 -4.500042221 6.5845269
+705 1.214516583 2.724211282 5.84746386
+707 -2.046869696 4.5000512419 6.688295582
+704 4.494020803 -3.615303846 6.176877582
+703 -2.171003647 -3.15915351 6.327263018
+702 -1.275318403 2.031535104 6.135742196
+715 4.500037295 2.736169156 6.376593132
+699 4.500110408 -0.602629113000001 6.533775302
+711 -3.894293627 -2.912952758 6.414986382
+706 0.649247921000001 -4.50000853 6.314132898
+710 -3.112420417 -1.88684571 6.644642002
+719 0.788755044 -0.137615957 5.886702162
+716 0.568522327999999 1.182083191 6.1172764
+697 1.875824189 -2.71281267 6.389064744
+736 4.500102998 1.418380508 6.735809434
+737 -3.714668902 -3.867544357 6.652483614
+738 -3.578037373 1.265402521 6.509592776
+728 2.854928227 3.160376799 5.92526928
+721 -2.538561288 0.857627275 6.116060878
+743 0.0321560310000004 -2.061770867 6.000825382
+732 2.194160682 2.314636299 6.06133092
+744 -4.5001729178 3.856546687 6.338751414
+733 -3.501254908 0.200111290000001 6.401171598
+727 -0.946387889 4.5001152333 6.510176304
+742 -3.039861974 -3.162558531 6.870620084
+726 -4.5000502067 2.055175278 7.197261876
+740 1.820711305 0.0657459669999998 6.621054686
+731 3.12228586 -2.974863285 6.149303928
+724 -0.636723587 -1.33635758 6.162900858
+725 1.970494862 3.524222107 6.221598216
+730 2.93465313 1.664643845 6.23176208
+739 -3.74218383 4.5001365828 6.443810142
+734 -4.5001758281 -2.232609773 6.827065586
+722 -1.256028632 -2.12142271 6.166342454
+729 1.90508762 -1.594200927 6.449785266
+735 4.500105829 -2.413084338 6.701806746
+723 0.71541812 1.666313337 6.979689998
+741 1.113094007 -0.719036822 6.632832398
+745 0.383646521999999 -1.6348607 6.888379016
+765 1.348875055 1.80077058 6.206744622
+751 0.384520017 -2.9192041 6.37542954
+754 -4.500063994 -0.557184997 6.855668942
+747 3.602720576 -1.304614308 6.559261866
+763 1.150623016 0.779658062 6.823705658
+755 -2.498913377 -0.701240125 6.57675132
+756 2.683351987 -1.01058857 6.820571256
+746 -2.959112025 -4.500099339 6.821957842
+759 -1.006195591 -2.925888366 6.704817074
+757 0.00918382199999979 2.993911479 6.603282796
+760 2.688462991 -0.150895073 6.173944332
+761 -2.632342419 0.237331179 6.89470687
+748 1.957372608 -4.439459423 6.89331799
+752 3.618879297 -3.599135676 6.75221732
+767 3.250211485 0.491529388 6.69482937
+768 -2.968212267 4.4986126719 7.07686839
+753 3.62529875 -0.393438024 6.970466134
+764 -0.915656022 0.446529009 6.709245636
+758 3.714235651 -4.500145693 6.3292602
+762 -3.582826064 3.518458156 6.548436518
+749 0.402406352 0.0484632070000002 6.790010428
+750 2.838701235 -1.94984366 6.489746384
+766 -3.954880818 -1.39536305 6.86500964
+774 0.058287687 4.5000781934 6.814494156
+777 0.39623866 -0.761901808999999 7.375739638
+780 2.755069206 3.549165509 6.841094054
+785 -1.834460129 2.260725836 6.932370698
+770 -1.331120378 -0.646764559 6.790605466
+776 -2.041210127 3.300423882 7.079803032
+787 -4.5001250207 2.927535157 6.708493986
+769 -0.520020427 -1.111856455 7.145286392
+786 2.907605645 2.554969379 6.719408086
+778 -1.862654027 -2.547782644 7.05612514
+779 -2.787004198 1.682198201 6.974201112
+773 -3.925289688 0.127414019 7.303830074
+771 -1.077931919 2.873943947 6.637054154
+782 1.067442656 -2.395883189 6.885051164
+781 -0.518140433 -2.063677276 6.838737782
+789 -1.319783216 -1.755727712 7.350984512
+784 -2.189281114 -3.513324625 7.262196206
+783 2.007767095 4.5001752947 6.43571023
+792 3.909289872 4.3870107206 6.236299094
+790 2.374837093 -3.578428037 6.426599892
+791 -0.430593966 2.098108975 6.666608554
+788 -2.241030297 -1.563140611 7.013211318
+772 -2.056428434 1.021086958 7.144580102
+775 3.614424856 -2.153994835 7.086827782
+798 0.529294953 -3.685131785 7.001604238
+811 -4.5000074447 -3.392154858 7.050165996
+804 -1.631228739 0.136353158 7.335106858
+802 -3.634865201 -2.46555738 7.270750968
+800 -4.5000131416 4.5000571179 7.10409178
+807 0.531687577 3.617418716 7.28754172
+803 2.389104129 0.807849632 7.092644592
+813 1.055525431 4.4999118985 6.740876826
+809 -0.149679597 -2.911198066 7.220713178
+795 1.626837394 2.753495101 6.75801434
+812 3.680111557 3.372316931 6.448748794
+793 -0.370673841 -0.120936745 7.406002416
+799 -4.4284171538 1.134092305 7.579935886
+814 1.306516678 -1.486845332 7.243588248
+810 -2.691916703 -2.279080571 7.546090634
+801 -0.45298569 3.703026197 7.13561967
+808 -3.610313203 2.67876364 7.09077885
+816 -1.137693913 1.511312254 7.061130874
+805 2.815860821 -2.759309121 7.076404106
+796 1.503946217 -3.482169426 6.90841816
+815 -2.265505052 -0.607794821 7.544582966
+806 4.500050826 -1.529154307 7.169336188
+794 4.500130131 -4.304063091 6.915491968
+797 2.093388622 1.737031234 6.87128393
+820 2.712914075 -0.120400215999999 7.27516145
+836 -4.5000461794 -4.500064369 7.579735042
+835 -0.031895295 -4.500173969 7.145133616
+837 0.688631677 -2.744774666 7.742137422
+832 4.500021099 -3.316252295 7.131055232
+830 4.500002908 0.436820857 6.926866418
+819 -3.372091334 -3.775587246 7.587418574
+829 -1.38716768 4.031059763 7.275439702
+823 -0.112781733999999 1.809160788 7.56963154
+826 4.500083959 4.5002933709 7.035053416
+838 -3.972326563 3.722706175 7.446498974
+839 2.824221178 -1.715955387 7.515243248
+833 3.031038874 4.5000336444 6.700849982
+840 3.811742685 2.139110924 6.816732284
+831 0.734417035 2.64255656 7.19512608
+821 -0.397101060000001 -1.954676104 7.825309098
+827 0.432402522 0.73343507 7.517947826
+817 -1.216749214 -3.744690247 7.238643562
+822 -2.696367125 1.344316825 8.044436962
+828 -0.145206744 1.151604706 6.816934868
+834 -2.662042909 2.581701691 7.392804248
+824 -2.036696026 -4.50005881 7.207925676
+818 -4.5001333706 -2.648935368 7.737050598
+825 0.291437026 4.500032667 7.78687256
+860 -1.320698302 -0.847804191 7.770092896
+849 -1.042692162 2.389846026 7.529264594
+861 0.542309327 -1.61563877 7.87551845
+858 -3.601921254 1.78544392 7.544407864
+848 -3.090446601 -1.104447465 7.274803884
+845 0.390638137 -0.0761148599999997 8.103457168
+856 1.149147808 0.00287958699999979 7.453464336
+841 1.648343742 3.793890916 7.128953188
+853 -0.820328323 -4.500084402 7.760220304
+850 -4.5000151681 2.914656754 7.70838282
+842 3.144772703 -4.500034702 7.151174262
+851 -2.976810152 3.534903658 7.343648238
+847 4.497970366 3.500679093 7.020833072
+852 -1.018013173 -2.745195226 7.68820907
+854 -2.65593619 -3.135152407 8.061641748
+857 -1.853651387 2.814489952 7.9333958
+859 -3.252450711 0.864543271000001 7.36585316
+846 4.500008143 -0.377001482 7.507958942
+843 1.531582036 2.172888465 7.574367998
+863 1.997774554 -2.209337903 7.244319732
+864 3.79467218 1.033585918 7.33466599
+844 1.875764798 -0.666687024 7.29961096
+855 -4.5000395368 4.5000231965 8.104069198
+862 -3.641372047 -2.979095895 8.128773278
+868 -4.5000482242 -1.65170272 7.66310154
+872 4.500038813 2.574279235 7.397058946
+878 -4.4941056291 -3.605851868 8.02715155
+883 -2.171560016 4.5000730601 7.68121363
+874 1.290300938 4.5000470858 7.739705472
+881 -2.440612713 0.394676500999999 7.86341641
+885 -0.170789183 -3.740022964 7.779783248
+882 1.037299676 -4.500079673 7.280155998
+888 -3.53759308 -1.71694688 7.92655647
+867 -0.298558207 -0.861874769 8.087866364
+870 -2.186277799 -1.489841229 8.008999892
+875 3.030243382 1.669149969 7.227068646
+879 -0.993920785 3.322923819 7.88581861
+886 1.619062448 1.177498233 7.612513956
+880 -2.757975414 -4.500026199 7.900476864
+865 2.306496576 4.5000415726 7.390026186
+873 -3.972815171 -0.802010408 7.669722366
+887 -2.382268318 3.637507873 8.141111346
+884 3.663627706 -1.177645932 7.589703146
+866 -0.662358136 0.814869929 7.603716792
+877 -4.5000382744 0.286925249 8.106404342
+871 -4.3603052935 1.931392337 8.179659346
+876 -0.707177983999999 4.5000312098 7.838983956
+869 3.458008969 3.070713853 7.375905948
+908 1.177728778 -0.837308031 7.9949883
+905 -1.202937683 -1.661279458 8.33961044
+909 1.353035474 3.127318807 7.813342162
+899 2.325687148 2.891296129 7.459822636
+894 -1.037393538 0.0395562070000004 8.133811346
+892 1.014350959 -3.680653535 7.876022126
+898 -1.633916995 -3.423920757 8.08893289
+890 1.984919807 -1.427246013 7.975833038
+896 3.649053574 -3.027573027 7.572163936
+903 3.02756401 3.897546801 7.737902346
+904 1.515063842 -2.321096808 8.11289426
+902 3.615669544 0.166253343 7.799029808
+910 -1.736191165 -4.500012934 8.161674702
+893 4.500159332 1.627996872 7.720151158
+891 -1.874708145 -2.435621804 8.10065476
+889 2.015299628 0.290280181 7.862239966
+900 -3.518964841 4.4832205367 7.911339426
+901 -3.71306876 -4.500010918 8.196642922
+907 2.082198108 3.773223742 8.039132626
+906 0.767551732 1.558710805 7.972456446
+911 0.488964547 -0.857521522 8.719652342
+897 -1.843343924 1.819970372 7.829865648
+895 1.101634341 0.610810532 8.253654436
+912 2.385902643 1.838984949 7.972588194
+917 -3.519786843 3.037109236 8.01992552
+923 -2.893530301 -2.197059781 8.522089796
+930 -4.5000536786 -1.072437272 8.47819437
+914 4.500044161 0.61962328 7.910000468
+935 2.973524526 0.926749614 7.89525906
+927 2.845547449 -3.636138473 7.556199224
+915 -1.043987024 -0.75173253 8.745217026
+924 2.007508638 -3.106286294 7.686279266
+936 3.824823897 4.5000522267 7.772526714
+934 3.98266385 -0.593385609 8.335912344
+920 2.809643203 -0.828063051 7.975006304
+933 -0.180806030999999 -2.8450739 8.225783452
+913 -3.342986173 0.0430036569999999 8.112332108
+916 2.381311388 -4.500023521 7.796954404
+932 3.832278313 3.121435582 8.301797848
+929 -1.574822716 0.873478889 8.008451204
+925 3.872567816 -4.000392298 7.63233322
+922 -2.942347999 -0.865057446000001 8.234291382
+919 3.659829518 2.18971347 7.8038071
+921 -0.161039828 2.858394688 7.58426761
+926 -2.009118863 -0.635725981 8.510734076
+928 1.997707654 -0.508552419 8.46350999
+931 -3.682734254 1.075130547 8.243614446
+918 2.83271746 3.092347504 8.29794074
+939 1.244210345 -1.551770023 8.691469242
+957 4.500001987 -1.431832611 8.164561762
+953 -0.0447779710000002 1.102518981 8.33568698
+958 1.474292655 -4.50004874 8.217940572
+951 -2.406245422 -3.944144817 8.65362229
+950 -1.104916092 2.59005781 8.55706819
+954 0.432157187 -4.500005795 8.07621793
+941 -2.508296746 -1.388738666 8.967293542
+943 -0.917579026 1.614129718 8.14776863
+955 3.270281032 -4.500021343 8.254877612
+952 -2.933145135 2.279775667 8.306757084
+946 4.500007653 -2.492901142 7.69858211
+948 1.597915614 1.576211766 8.52934013
+945 2.826265053 0.0741679069999996 8.405924108
+940 0.565346663000001 -2.282567971 8.620269664
+959 -0.380841692000001 -4.500003442 8.6584417
+947 1.959880776 2.621568508 8.426467632
+944 -4.1093307448 -1.96352487 8.709013894
+938 4.500014821 3.791491479 7.977550156
+937 -1.967634154 0.333620169 8.75286636
+942 0.6436857 2.528095443 8.184378384
+956 2.333293816 -3.712701544 8.411603176
+949 -3.939863543 0.392838922 8.92796115
+960 -3.849896791 -3.703614863 8.78570905
+968 4.500018116 2.380983547 8.378169182
+979 0.704751386 3.732001275 8.275964954
+972 -3.092484314 -3.074165673 8.959233326
+970 2.757226355 -2.555918791 8.053722098
+983 0.0430873330000008 -2.90961653 9.198236842
+984 -4.2605204315 3.580336293 8.41511519
+965 3.27018164 -1.605456454 8.403431664
+981 -1.207740982 -3.960549039 8.817194668
+976 -0.305495859000001 0.0197453599999999 8.814907058
+967 -4.5000215675 -2.883960968 8.719086854
+962 2.501901536 1.200537702 8.733451414
+980 2.820030212 2.220991853 8.78840032
+982 -0.163949455 4.3007167674 8.654549792
+973 -3.702343254 -0.571862096 8.814301596
+961 -0.907839867 0.815435966 8.75123593
+974 -1.139153363 -2.786859825 8.67995375
+966 -0.167266826 -1.611865152 8.73613229
+978 0.354789528 -3.669330875 8.627567008
+963 3.778031965 -2.466782555 8.38998981
+971 3.766498138 1.345233043 8.337987978
+969 -2.722483171 4.500002406 8.51574715
+977 -2.925147256 3.139554055 8.817346002
+975 -1.496692274 4.085964062 8.291971632
+964 1.885377245 0.421156348999999 8.845065948
+991 -1.789775634 -2.081210015 9.031871422
+988 3.785201814 2.084266046 9.011382054
+986 1.511429039 3.43856569 8.788925344
+1000 -0.20067931 2.163537647 8.576889586
+998 -0.831590021 -2.080974616 9.317990532
+994 -2.093629351 -3.021839841 8.880745724
+989 4.500002198 -3.39950078 8.1275595
+996 -1.980374672 1.424254016 8.737942194
+993 4.500010695 3.509580542 8.936973656
+997 3.930587835 0.431726975 8.710245516
+990 -0.183949164 3.317686018 8.472233888
+999 -2.786339984 -0.200038612 8.964692098
+992 0.553129847 1.620738631 8.947201684
+985 4.297770052 4.5000146144 8.65360408
+995 3.369822948 -3.515511354 8.399149886
+987 2.642179778 4.5000268747 8.436795444
diff --git a/lib/voro++/examples/basic/platonic.cc b/lib/voro++/examples/basic/platonic.cc
new file mode 100644
index 000000000..4e8aa5bd9
--- /dev/null
+++ b/lib/voro++/examples/basic/platonic.cc
@@ -0,0 +1,86 @@
+// Platonic solids example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Golden ratio constants
+const double Phi=0.5*(1+sqrt(5.0));
+const double phi=0.5*(1-sqrt(5.0));
+
+int main() {
+ voronoicell v;
+
+ // Create a tetrahedron
+ v.init(-2,2,-2,2,-2,2);
+ v.plane(1,1,1);
+ v.plane(1,-1,-1);
+ v.plane(-1,1,-1);
+ v.plane(-1,-1,1);
+
+ v.draw_gnuplot(0,0,0,"tetrahedron.gnu");
+
+ // Create a cube. Since this is the default shape
+ // we don't need to do any plane cutting.
+ v.init(-1,1,-1,1,-1,1);
+ v.draw_gnuplot(0,0,0,"cube.gnu");
+
+ // Create an octahedron
+ v.init(-2,2,-2,2,-2,2);
+ v.plane(1,1,1);
+ v.plane(-1,1,1);
+ v.plane(1,-1,1);
+ v.plane(-1,-1,1);
+ v.plane(1,1,-1);
+ v.plane(-1,1,-1);
+ v.plane(1,-1,-1);
+ v.plane(-1,-1,-1);
+
+ v.draw_gnuplot(0,0,0,"octahedron.gnu");
+
+ // Create a dodecahedron
+ v.init(-2,2,-2,2,-2,2);
+ v.plane(0,Phi,1);
+ v.plane(0,-Phi,1);
+ v.plane(0,Phi,-1);
+ v.plane(0,-Phi,-1);
+ v.plane(1,0,Phi);
+ v.plane(-1,0,Phi);
+ v.plane(1,0,-Phi);
+ v.plane(-1,0,-Phi);
+ v.plane(Phi,1,0);
+ v.plane(-Phi,1,0);
+ v.plane(Phi,-1,0);
+ v.plane(-Phi,-1,0);
+
+ v.draw_gnuplot(0,0,0,"dodecahedron.gnu");
+
+ // Create an icosahedron
+ v.init(-2,2,-2,2,-2,2);
+ v.plane(1,1,1);
+ v.plane(-1,1,1);
+ v.plane(1,-1,1);
+ v.plane(-1,-1,1);
+ v.plane(1,1,-1);
+ v.plane(-1,1,-1);
+ v.plane(1,-1,-1);
+ v.plane(-1,-1,-1);
+ v.plane(0,phi,Phi);
+ v.plane(0,phi,-Phi);
+ v.plane(0,-phi,Phi);
+ v.plane(0,-phi,-Phi);
+ v.plane(Phi,0,phi);
+ v.plane(Phi,0,-phi);
+ v.plane(-Phi,0,phi);
+ v.plane(-Phi,0,-phi);
+ v.plane(phi,Phi,0);
+ v.plane(phi,-Phi,0);
+ v.plane(-phi,Phi,0);
+ v.plane(-phi,-Phi,0);
+
+ v.draw_gnuplot(0,0,0,"icosahedron.gnu");
+
+}
diff --git a/lib/voro++/examples/basic/random_points.cc b/lib/voro++/examples/basic/random_points.cc
new file mode 100644
index 000000000..cc4a5acfb
--- /dev/null
+++ b/lib/voro++/examples/basic/random_points.cc
@@ -0,0 +1,54 @@
+// Voronoi calculation example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-1,x_max=1;
+const double y_min=-1,y_max=1;
+const double z_min=-1,z_max=1;
+const double cvol=(x_max-x_min)*(y_max-y_min)*(x_max-x_min);
+
+// Set up the number of blocks that the container is divided into
+const int n_x=6,n_y=6,n_z=6;
+
+// Set the number of particles that are going to be randomly introduced
+const int particles=20;
+
+// This function returns a random double between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ int i;
+ double x,y,z;
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Randomly add particles into the container
+ for(i=0;i<particles;i++) {
+ x=x_min+rnd()*(x_max-x_min);
+ y=y_min+rnd()*(y_max-y_min);
+ z=z_min+rnd()*(z_max-z_min);
+ con.put(i,x,y,z);
+ }
+
+ // Sum up the volumes, and check that this matches the container volume
+ double vvol=con.sum_cell_volumes();
+ printf("Container volume : %g\n"
+ "Voronoi volume : %g\n"
+ "Difference : %g\n",cvol,vvol,vvol-cvol);
+
+ // Output the particle positions in gnuplot format
+ con.draw_particles("random_points_p.gnu");
+
+ // Output the Voronoi cells in gnuplot format
+ con.draw_cells_gnuplot("random_points_v.gnu");
+}
diff --git a/lib/voro++/examples/basic/single_cell.cc b/lib/voro++/examples/basic/single_cell.cc
new file mode 100644
index 000000000..e2d4788bf
--- /dev/null
+++ b/lib/voro++/examples/basic/single_cell.cc
@@ -0,0 +1,36 @@
+// Single Voronoi cell example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// This function returns a random floating point number between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ double x,y,z,rsq,r;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered
+ // on the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Cut the cell by 250 random planes which are all a distance 1 away
+ // from the origin, to make an approximation to a sphere
+ for(int i=0;i<250;i++) {
+ x=2*rnd()-1;
+ y=2*rnd()-1;
+ z=2*rnd()-1;
+ rsq=x*x+y*y+z*z;
+ if(rsq>0.01&&rsq<1) {
+ r=1/sqrt(rsq);x*=r;y*=r;z*=r;
+ v.plane(x,y,z,1);
+ }
+ }
+
+ // Output the Voronoi cell to a file, in the gnuplot format
+ v.draw_gnuplot(0,0,0,"single_cell.gnu");
+}
diff --git a/lib/voro++/examples/custom/Makefile b/lib/voro++/examples/custom/Makefile
new file mode 100644
index 000000000..e2726e19b
--- /dev/null
+++ b/lib/voro++/examples/custom/Makefile
@@ -0,0 +1,28 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=cell_statistics custom_output radical
+
+# Makefile rules
+all: $(EXECUTABLES)
+
+cell_statistics: cell_statistics.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o cell_statistics cell_statistics.cc -lvoro++
+
+custom_output: custom_output.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o custom_output custom_output.cc -lvoro++
+
+radical: radical.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o radical radical.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/custom/README b/lib/voro++/examples/custom/README
new file mode 100644
index 000000000..b0dd6d3a5
--- /dev/null
+++ b/lib/voro++/examples/custom/README
@@ -0,0 +1,27 @@
+Customized output examples
+==========================
+The output of Voro++ can be customized to contain a variety of statistics about
+the Voronoi cells. Voro++ can also calculated the radical Voronoi tessellation
+for polydisperse packings where the cutting plane positions are displaced
+according to the particle radii.
+
+1. cell_statistics.cc constructs a simple Voronoi cell, and then demonstrates
+the large number of routines in the voronoicell class that will compute
+different statistics about the cell.
+
+2. custom_output.cc loads in a small monodisperse packing in a cube of side
+length six from the file pack_six_cube. It then uses the basic output routine
+print_all() to save the particle positions and Voronoi volumes to the file
+packing.standard. The routine print_all_neighbor() is also demonstrated, saving
+the particle positions, Voronoi volumes and neighbors to the file
+packing.neighbor. Three customized outputs are then created using the
+print_all_custom() routine.
+
+3. radical.cc loads in a small monodisperse packing from the file
+pack_six_cube, and saves the Voronoi tessellation to pack_six_cube.gnu. It then
+loads in a polydisperse packing in the same geometry from the file
+pack_six_cube_poly, and it saves the radical Voronoi tessellation to
+pack_six_cube_poly.gnu. These can be overlaid in gnuplot using the commands:
+
+set style data lines
+splot 'pack_six_cube.gnu', 'pack_six_cube_poly.gnu'
diff --git a/lib/voro++/examples/custom/cell_statistics.cc b/lib/voro++/examples/custom/cell_statistics.cc
new file mode 100644
index 000000000..a96df2a6d
--- /dev/null
+++ b/lib/voro++/examples/custom/cell_statistics.cc
@@ -0,0 +1,52 @@
+// Simple cell statistics demonstration code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// This function returns a random floating point number between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ double x,y,z;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered
+ // on the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Remove one edge of the cell with a single plane cut
+ v.plane(1,1,0,2);
+
+ // Output the Voronoi cell to a file in gnuplot format
+ v.draw_gnuplot(0,0,0,"simple_cell.gnu");
+
+ // Output vertex-based statistics
+ printf("Total vertices : %d\n",v.p);
+ printf("Vertex positions : ");v.output_vertices();puts("");
+ printf("Vertex orders : ");v.output_vertex_orders();puts("");
+ printf("Max rad. sq. vertex : %g\n\n",0.25*v.max_radius_squared());
+
+ // Output edge-based statistics
+ printf("Total edges : %d\n",v.number_of_edges());
+ printf("Total edge distance : %g\n",v.total_edge_distance());
+ printf("Face perimeters : ");v.output_face_perimeters();puts("\n");
+
+ // Output face-based statistics
+ printf("Total faces : %d\n",v.number_of_faces());
+ printf("Surface area : %g\n",v.surface_area());
+ printf("Face freq. table : ");v.output_face_freq_table();puts("");
+ printf("Face orders : ");v.output_face_orders();puts("");
+ printf("Face areas : ");v.output_face_areas();puts("");
+ printf("Face normals : ");v.output_normals();puts("");
+ printf("Face vertices : ");v.output_face_vertices();puts("\n");
+
+ // Output volume-based statistics
+ v.centroid(x,y,z);
+ printf("Volume : %g\n"
+ "Centroid vector : (%g,%g,%g)\n",v.volume(),x,y,z);
+
+}
diff --git a/lib/voro++/examples/custom/custom_output.cc b/lib/voro++/examples/custom/custom_output.cc
new file mode 100644
index 000000000..2f3944242
--- /dev/null
+++ b/lib/voro++/examples/custom/custom_output.cc
@@ -0,0 +1,52 @@
+// Custom output example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-3,x_max=3;
+const double y_min=-3,y_max=3;
+const double z_min=0,z_max=6;
+
+// Set up the number of blocks that the container is divided
+// into.
+const int n_x=3,n_y=3,n_z=3;
+
+int main() {
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Import the monodisperse test packing and output the Voronoi
+ // tessellation in gnuplot and POV-Ray formats.
+ con.import("pack_six_cube");
+
+ // Do a custom output routine to store the number of vertices, edges,
+ // and faces of each Voronoi cell
+ con.print_custom(
+ "ID=%i, pos=(%x,%y,%z), vertices=%w, edges=%g, faces=%s",
+ "packing.custom1");
+
+ // Do a custom output routine to store a variety of face-based
+ // statistics. Store the particle ID and position, the number of faces
+ // the total face area, the order of each face, the areas of each face,
+ // the vertices making up each face, and the neighboring particle (or
+ // wall) corresponding to each face.
+ con.print_custom("%i %q %s %F %a %f %t %l %n","packing.custom2");
+
+ // Do a custom output routine that outputs the particle IDs and
+ // positions, plus the volume and the centroid position relative to the
+ // particle center
+ con.print_custom("%i %q %v %c","packing.custom3");
+
+ // Also create POV-Ray output of the Voronoi cells for use in the
+ // rendering
+ con.draw_cells_pov("pack_six_cube_v.pov");
+}
diff --git a/lib/voro++/examples/custom/custom_output.pl b/lib/voro++/examples/custom/custom_output.pl
new file mode 100644
index 000000000..3daf6b1f8
--- /dev/null
+++ b/lib/voro++/examples/custom/custom_output.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+# Open the custom output from the custom_output.cc program
+open A,"packing.custom1" or die "Can't open file \"packing.custom1\"\n";
+
+# Open the POV-Ray file
+open B,">custom_output_p.pov" or die "Can't open output file\n";
+
+# Loop over all lines in the packing.custom1 file
+while(<A>) {
+
+ # Use a regular expression to get the particle position and the number
+ # of faces of the Voronoi cell. These will be stored in the variables
+ # $1 and $2.
+ m/pos=\((.*)\).*faces=(\d*)/;
+
+ # Print a sphere to the POV-Ray file, giving it a different texture
+ # depending on the number of faces of the Voronoi cell
+ print B "sphere{<$1>,0.5 texture{t$2}}\n";
+}
+
+# Close the two files
+close A;
+close B;
diff --git a/lib/voro++/examples/custom/custom_output.pov b/lib/voro++/examples/custom/custom_output.pov
new file mode 100644
index 000000000..dac853cc5
--- /dev/null
+++ b/lib/voro++/examples/custom/custom_output.pov
@@ -0,0 +1,56 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+// Increase tracing level for more accurate reflections
+global_settings {
+ max_trace_level 64
+}
+
+// Right-handed coordinate system where the z-axis points upwards
+camera {
+ location <30,-50,25>
+ sky z
+ right -0.15*x*image_width/image_height
+ up 0.15*z
+ look_at <0,0,2.8>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.43,0.45,0.45>}
+
+// The radius of the cylinders to be used when drawing the Voronoi cells
+#declare r=0.06;
+
+// The radius of the particles
+#declare s=0.5;
+
+// Different colors for the particles
+#declare f1=finish{reflection 0.17 specular 0.3 ambient 0.42}
+#declare t8=texture{pigment{rgb <0.6,0.6,0.6>} finish{f1}}
+#declare t9=texture{pigment{rgb <0.7,0.3,1>} finish{f1}}
+#declare t10=texture{pigment{rgb <0.3,0.7,1>} finish{f1}}
+#declare t11=texture{pigment{rgb <0.2,0.9,0.9>} finish{f1}}
+#declare t12=texture{pigment{rgb <0.3,1,0.7>} finish{f1}}
+#declare t13=texture{pigment{rgb <0.7,1,0.3>} finish{f1}}
+#declare t14=texture{pigment{rgb <0.9,0.9,0.2>} finish{f1}}
+#declare t15=texture{pigment{rgb <1,0.7,0.3>} finish{f1}}
+#declare t16=texture{pigment{rgb <1,0.3,0.7>} finish{f1}}
+#declare t17=texture{pigment{rgb <0.9,0.2,0.9>} finish{f1}}
+#declare t18=texture{pigment{rgb <1,1,1>} finish{f1}}
+
+// The particle packing
+union{
+#include "custom_output_p.pov"
+}
+
+// The computed Voronoi cells
+union{
+#include "pack_six_cube_v.pov"
+ texture{T_Silver_4B}
+}
diff --git a/lib/voro++/examples/custom/pack_six_cube b/lib/voro++/examples/custom/pack_six_cube
new file mode 100644
index 000000000..066f2067f
--- /dev/null
+++ b/lib/voro++/examples/custom/pack_six_cube
@@ -0,0 +1,216 @@
+1 -1.633531566 1.0081779456 0.4997643894
+2 -2.3175495108 2.50004343396 0.4998098766
+3 -0.0883292022000002 2.49998487024 0.49997382
+4 -0.5905249392 2.1141400272 1.2739520638
+5 -1.6354550196 0.00777687119999992 0.4998135702
+6 2.50024371 1.7052004254 1.1066620646
+7 1.6163377164 0.378218796 0.4996352686
+8 0.6450816684 1.8136706778 0.4991881638
+9 1.3723354464 2.50001343222 0.4998503506
+10 -2.49477600042 -2.4994533834 0.49997382
+11 0.1591747386 -0.8623052892 0.4997612252
+12 0.6018432558 2.50085393652 1.2236191762
+13 2.4993970962 2.50004979816 0.499958425
+14 2.5002306354 -0.5891871372 1.3656871624
+15 2.4996763188 0.910593138 0.4998442324
+16 0.1555379868 -2.1140856714 0.499808302
+17 1.7917374258 -2.5001865732 1.2081198644
+18 -2.1690769116 -1.9332698928 1.3393934932
+19 1.7064470976 1.5487702458 0.49997382
+20 -0.7669637874 -2.5000096794 0.4999680968
+21 2.5000711542 -1.0890633102 0.4997243732
+22 -1.630300629 -1.9954333962 0.4995576534
+23 1.7914606536 -1.7945441268 0.4997721152
+24 -2.50023339174 -0.4939926774 0.4998565634
+25 -2.5002228639 0.5096527854 0.4998286406
+26 -2.49973398858 1.5167884392 0.4998730372
+27 -1.09231806 2.50004601528 0.4999122966
+28 -0.7664081604 1.506191607 0.4998754028
+29 -2.49994466028 -1.4976897942 0.49997382
+30 -1.6351530756 -0.9955213908 0.4999588934
+31 2.5000470594 -2.5000639944 0.4999611072
+32 1.0827185856 -2.500004454 0.4999501042
+33 0.121049223 0.962177124 0.4998840514
+34 -0.731239728 -1.4928565722 0.499907191
+35 2.5000148538 -1.7942863308 1.208330482
+36 1.4293900734 -0.60411936 0.4998811682
+37 1.693914078 -1.1739451596 1.2777368674
+38 -0.7702945434 -0.4936272762 0.4995237402
+39 2.5001273412 0.4105916904 1.3657870828
+40 -0.2151642102 -0.4489046268 1.3296380976
+41 -0.7687151904 0.5062139106 0.4999055828
+42 2.500152618 -0.0892589747999999 0.4997650116
+43 1.0009049868 1.008280419 0.972585352
+44 -1.5086934072 0.9974863356 1.4916875348
+45 -0.1906878174 -2.5001610756 1.3546498898
+46 1.9350760212 2.50015141518 1.3263206044
+47 0.7680680142 -0.613803066 1.2529781652
+48 -0.520322322 0.9840571992 1.3423839878
+49 -1.7049937512 1.8781106406 0.987517195
+50 0.2890163712 1.5679785972 1.4005698552
+51 -2.5001055165 -0.9902666664 1.3677983936
+52 0.6718107054 0.0485346384000001 0.4998990378
+53 0.8828891958 -1.4903279178 0.7856231914
+54 1.6971075462 -1.8794484798 1.986236625
+55 0.7785745614 -1.5429397554 1.778749626
+56 2.498355582 -2.5002474342 1.9162502768
+57 1.8163510674 1.118761185 1.5402656292
+58 -2.49028043208 0.00966293040000021 1.3657617934
+59 -1.0465593666 -1.9851376494 1.3111443026
+60 1.6230277242 -0.109344417 1.3725323044
+61 0.803677725 -2.4904980648 1.4601558584
+62 2.500174548 -1.291019802 2.077806292
+63 -0.4406783868 -1.0295588292 2.111380354
+64 -1.0593921888 -0.9853736058 1.3206667652
+65 -1.0862456712 0.0421811507999998 1.334589922
+66 -0.0664300529999999 -1.4875173498 1.246881552
+67 0.2975538384 0.4089966312 1.3541999206
+68 -2.0563739124 1.7171792856 1.9181011058
+69 -1.5021759366 -2.5002090786 2.037012458
+70 1.2004706514 1.8826223166 1.7322744688
+71 -2.50018854048 1.0131918204 1.3636933196
+72 -0.6610079004 -1.996969944 2.233624626
+73 0.3572570658 -0.4242221946 2.149145084
+74 -2.50015722168 2.5001806872 1.4828326074
+75 -1.7654338962 -0.4966383762 1.832939586
+76 2.5001148054 1.8908456178 2.089239758
+77 -1.5156057486 -1.498156245 2.047882108
+78 -0.0249709901999999 2.50011927126 2.002554182
+79 2.500335852 0.901840926 2.23670456
+80 -2.50033055412 -2.5002094542 2.093220108
+81 -2.50007568966 -1.5087105342 2.222856128
+82 0.2019219258 -2.5001781654 2.2742338
+83 2.500074618 -0.1030437882 2.239501644
+84 1.306372176 -0.7329475686 2.087233828
+85 -0.9572314386 1.6112582586 2.05661196
+86 0.8603279154 0.9694525734 1.9616903498
+87 -1.4114044692 2.50004378976 1.713374457
+88 -2.5000006182 2.49931211886 2.482805848
+89 -1.020675462 -0.3572734878 2.57123686
+90 -0.4044797454 0.2263507242 2.042403434
+91 -2.50015066302 -0.0762997092000002 2.3660063
+92 2.5000666632 -0.6377540202 3.084536714
+93 1.635820743 0.3998132112 2.232930018
+94 0.787044012 2.3196010806 2.557182368
+95 1.7880996756 -1.270196802 2.779504834
+96 -2.5000149498 0.9308964468 2.36020607
+97 2.50006086 1.4990173908 3.038728388
+98 2.5000002036 -2.0009185842 2.782437742
+99 2.4973597854 0.4018063872 3.102688092
+100 -0.0847238868 1.1548315362 2.230957046
+101 -1.6189831278 0.38758413 2.276164892
+102 -1.3109302698 -1.529630028 3.0261821
+103 -0.8621444616 2.50007941956 2.548976818
+104 -2.5003575921 -2.1906193686 3.043995226
+105 1.737794406 2.50023188418 2.306502354
+106 1.1607421194 -2.5001894034 2.557490476
+107 -0.5515943472 -2.5000711818 3.090821674
+108 0.7581635106 0.305805486 2.70258895
+109 -0.129270348 -0.0804334734000003 2.953362524
+110 1.5702057348 -0.2965035672 2.947395472
+111 -1.5907955166 0.297198915 3.271622288
+112 -1.6352174376 1.2855549804 2.715570616
+113 0.2365862016 -1.5621519012 2.618913636
+114 2.5001485044 -1.4752385472 3.632918874
+115 -2.50003414566 0.7085497368 3.335106492
+116 0.693198909 -0.7706072304 3.02499245
+117 -1.977290892 -0.837825789 2.748661152
+118 -0.0904186877999997 1.9400047344 2.850126046
+119 0.7424979096 1.3708776012 2.869705454
+120 2.5001771184 2.49786273384 2.953357364
+121 -0.460913031 -1.0102788876 3.1107298
+122 -1.5499088826 -2.5003303314 3.035766602
+123 1.0563693948 -1.7172623304 3.2938531
+124 0.4360463934 -2.5001018958 3.246364772
+125 0.0342889535999999 0.8326700802 3.326329174
+126 1.8144590976 -2.498344152 3.31403944
+127 1.4937454758 0.7565635794 3.208225078
+128 1.6727590014 1.420657209 2.482601878
+129 0.9063634374 -0.0106950330000002 3.63948294
+130 1.6212776142 2.0992148076 3.215117466
+131 -0.8136720582 0.7230042144 2.807794018
+132 -1.315108014 -0.6402926916 3.483977248
+133 -2.50004255652 -0.2892251556 3.401060322
+134 0.1195260084 -1.6342581966 3.633549956
+135 0.9584037636 1.636359729 3.809100648
+136 -1.7019079596 2.2670358852 3.038768934
+137 0.4485449298 2.50002773754 3.480648292
+138 -0.5629460556 2.50007656902 3.530567852
+139 -2.068160793 -2.5000301934 3.890959658
+140 1.8860334708 0.0716001041999998 3.821883252
+141 -2.50019618556 1.6650778878 3.043689132
+142 -2.50008791622 -1.2873252654 3.47288578
+143 0.1086245172 -0.5872844136 3.815345888
+144 1.6639765482 -0.932813649 3.712928374
+145 -0.1833273246 -2.5000925064 4.03160142
+146 -0.8962851474 1.5809637768 3.320864614
+147 -0.7169574816 0.1400516334 3.731676664
+148 2.500011852 2.0721063306 3.85816837
+149 2.5001365008 -0.6344300454 4.174079146
+150 -1.7707348866 1.2864253152 3.70626387
+151 1.2513762864 0.7556992416 4.181294142
+152 1.089643938 -2.5001485434 4.002974924
+153 2.50008954 -2.499974847 4.041819504
+154 -1.0940190246 -2.1313022424 3.845642176
+155 2.1776722896 1.0541972718 3.87428099
+156 -0.0395331882000001 1.6972500684 3.823106582
+157 2.5000338774 0.3867181632 4.54549633
+158 2.5001497122 1.3073891742 4.960181558
+159 1.3717521018 2.50027781286 4.096333292
+160 -1.6955078352 -1.3622797578 4.061873346
+161 1.6724483508 1.6405378734 4.508968746
+162 -1.5883062366 2.50004191788 4.004525984
+163 -2.50011644388 0.2717493792 4.23459531
+164 -0.7107997986 -1.1884793388 4.062312162
+165 0.8285435406 -1.2029877876 4.191307692
+166 -1.55143851 -0.0437593109999996 4.25096113
+167 -2.50013461182 2.50003897878 3.594022786
+168 0.0734856906000001 2.50008308844 4.408358144
+169 -0.914548509 1.0255301358 4.152194222
+170 -1.6341264246 -2.500034877 4.79181139
+171 1.4748712236 -0.4511699232 4.568599668
+172 0.1489712184 0.3411368382 4.189539116
+173 1.406735919 0.986367417 5.217013654
+174 0.4877848422 -0.430742853 4.727390504
+175 -2.5000717353 1.7276144418 4.229072872
+176 -1.7937201336 0.8688761202 4.61458745
+177 -2.50005687384 -1.8015027882 4.461473774
+178 -0.8057804424 2.0077339104 4.385534408
+179 -2.5000002933 -0.726109998 4.300541254
+180 -2.2475473872 -1.145362248 5.172585892
+181 -0.5008551234 -0.354949131 4.573265494
+182 0.8966084802 2.50000754118 4.976206068
+183 1.7559791976 -1.7879098968 4.223069524
+184 -0.0969458190000001 -1.2325570164 4.850439668
+185 2.5000228332 -2.5000156716 5.04177638
+186 -0.0943493447999999 1.8364560702 5.137311674
+187 2.500007484 -0.422753251200001 5.151382112
+188 0.4431724908 1.22235765 4.55945736
+189 -0.955181808 1.3287034494 5.104253614
+190 -0.9722254404 -1.7524120296 4.845562498
+191 0.4668761538 -2.0274797958 4.626421886
+192 0.5609288028 0.4537067568 5.188170966
+193 1.5196347156 0.0203280810000002 5.449296672
+194 1.2386247156 -1.5352518792 5.04064475
+195 -1.057892532 0.3365646498 5.033092932
+196 -1.3577205258 -0.8297695788 4.837965486
+197 2.3955945402 0.4951880454 5.534080218
+198 2.1694818594 2.50002353358 4.699335376
+199 -1.7074444422 1.9173469206 4.808416404
+200 2.5000456284 -1.4262992286 4.784752276
+201 0.7982982492 1.698849276 5.566507768
+202 1.5086419476 -2.500001286 4.91091146
+203 -0.5057618832 -2.5000529898 5.318127822
+204 -1.6643472924 -1.859715171 5.559303806
+205 1.7791669638 -0.9293853702 5.624343356
+206 0.4425652998 -1.510152669 5.645313296
+207 0.7376718042 -0.5556371952 5.687557738
+208 -0.3174564174 0.724506156 5.58195597
+209 0.476099514 -2.5000387746 5.50763995
+210 1.7492949126 1.983260724 5.445238122
+211 -0.2060036316 -0.2676090414 5.524777266
+212 2.3083762086 -1.7742526776 5.702449874
+213 1.3510895334 -2.1388098024 5.829978542
+214 -2.1305990952 -0.1588704822 5.057989534
+215 -2.50001512608 1.3339185534 5.148295084
+216 -1.0131713934 2.5000168179 5.230870194
diff --git a/lib/voro++/examples/custom/pack_six_cube.pov b/lib/voro++/examples/custom/pack_six_cube.pov
new file mode 100644
index 000000000..84364abce
--- /dev/null
+++ b/lib/voro++/examples/custom/pack_six_cube.pov
@@ -0,0 +1,35 @@
+#version 3.6;
+
+// Right-handed coordinate system where the z-axis points upwards
+camera {
+ location <30,-50,25>
+ sky z
+ right -0.15*x*image_width/image_height
+ up 0.15*z
+ look_at <0,0,2.8>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.43,0.45,0.45>}
+
+// The radius of the cylinders to be used when drawing the Voronoi cells
+#declare r=0.08;
+
+// The radius of the particles
+#declare s=0.5;
+
+// The particle packing
+union{
+#include "pack_six_cube_p.pov"
+ pigment{rgb <0.92,0.65,1>} finish{reflection 0.17 specular 0.3 ambient 0.42}
+}
+
+// The computed Voronoi cells
+union{
+#include "pack_six_cube_v.pov"
+ pigment{rgb <0.7,0.95,1>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/custom/pack_six_cube_poly b/lib/voro++/examples/custom/pack_six_cube_poly
new file mode 100644
index 000000000..73bcdf20d
--- /dev/null
+++ b/lib/voro++/examples/custom/pack_six_cube_poly
@@ -0,0 +1,159 @@
+1 2.2943224014 -1.0464559164 0.705670375 0.7060563124
+2 -2.2131251616 -0.2534282466 0.4179088816 0.4179333901
+3 0.4986979062 -2.2939091778 0.7059446546 0.7062197784
+4 -1.1363949942 2.51662017456 0.4833167708 0.4835316314
+5 2.5828525206 -2.5704232026 0.4170765074 0.4171853937
+6 2.5312613994 0.0813363383999999 0.4686585474 0.4687482872
+7 0.5270681202 0.1822394328 0.4566503184 0.4566702648
+8 -1.8090864528 -2.4784758522 0.5213700014 0.5215540739
+9 1.5172336578 -2.5995934452 0.400239651 0.4004180139
+10 -2.73541260294 -0.665141415 0.264585664 0.2646419567
+11 2.3288409102 1.3275844698 0.6712796186 0.671305465
+12 -2.3449237668 -1.3998745674 0.653114676 0.6537050365
+13 -0.273720192 0.98136621 0.5832515002 0.5835425632
+14 -2.2730510436 0.8475503082 0.7267395712 0.7271867217
+15 -1.085860644 -2.713778256 0.2766961708 0.2767006077
+16 1.3479684156 2.42613314088 0.5737740954 0.5739094414
+17 0.8679249744 1.362694794 0.5918476524 0.5923292094
+18 2.4884923332 2.48855293056 0.5114622224 0.5115241628
+19 -1.2926150898 -0.6855962928 0.6186114574 0.6186510622
+20 -0.0560958545999997 2.1992913546 0.6555111342 0.6559432277
+21 -0.3722640066 -1.390832787 0.5430032632 0.5434405502
+22 1.5403470072 -0.3978432918 0.3501305128 0.3504226441
+23 -1.4918790522 0.2174364522 0.3453688136 0.345726593
+24 -1.6062643146 1.5734729928 0.3338806088 0.3339006782
+25 -2.287521294 2.2873168098 0.7127836958 0.7128691615
+26 -1.20882963 0.9761847042 0.3286489024 0.3286563375
+27 -2.65328715 -2.3745858984 0.3469818514 0.3469938136
+28 2.4560289282 2.47977454422 1.540497065 0.518089035
+29 1.5203646228 0.459011676 0.5245273472 0.524557466
+30 -2.2683050202 -2.2685845308 1.7291921848 0.7317004607
+31 -2.2389258816 -0.3545632704 1.5777711886 0.7463444395
+32 1.3274025204 0.870454446 1.3818432376 0.4457722249
+33 -0.8200048704 1.682402946 0.3146065552 0.3146130774
+34 2.037405963 -2.734891422 0.7927691996 0.2653537674
+35 0.7446510036 -0.9449665488 0.665534172 0.6657401609
+36 0.252108156 1.4342595378 1.6692793032 0.6510015351
+37 -0.232995339 -0.3789234516 0.4790476876 0.4790707157
+38 -1.182695493 0.3412997304 1.1881339314 0.5607946756
+39 0.7342458606 2.48273619588 1.4745929916 0.5176415568
+40 1.4495150124 -1.7657545758 0.4065028532 0.4065169232
+41 2.4072350574 -2.1788555046 1.331500264 0.5929448755
+42 1.9710933996 2.74890964128 1.0075394556 0.25109367
+43 2.3634119148 0.3264172704 1.4397791162 0.5468590664
+44 -0.7944022698 -2.3604619842 1.0731014692 0.6398110513
+45 -2.61750025026 1.5823487454 1.4837685658 0.3828216219
+46 -1.3934448894 -1.4557962264 1.4245323334 0.5007351387
+47 2.0516104722 -0.5976729528 1.8291002472 0.5032897309
+48 -1.1662107612 1.580801847 1.2476943158 0.68038851
+49 -2.62275320286 2.62274544918 1.6943357446 0.3772760844
+50 1.427421291 1.7820856302 1.393223335 0.4714230179
+51 1.511602665 -0.286772143799999 1.1251421486 0.4330516084
+52 -0.00495156840000011 0.1458958272 1.4742242634 0.6673832361
+53 1.4580859176 -1.3409557974 1.518765968 0.4972881764
+54 2.6241844452 -1.3095172254 1.7018651874 0.3759083213
+55 -0.118992429 -1.2628323378 1.7735270244 0.7194916347
+56 1.5647497962 2.46394055646 2.121833662 0.5359769328
+57 -1.5032832552 2.59377415992 1.4501380794 0.4063930172
+58 -0.5839557306 1.0057908114 2.610664932 0.6791948278
+59 1.3074553278 -2.4040604262 1.7243671778 0.5964918599
+60 0.8814832356 -0.5611616082 1.7601448296 0.5026682898
+61 -2.48310263682 0.8266609542 1.9533304434 0.5170110188
+62 2.297113395 1.3967461578 2.081742634 0.7030393739
+63 -1.0195599864 -0.4111505676 1.9681311576 0.5352429558
+64 -0.5175275088 2.4823593312 1.69677395 0.5176595874
+65 -1.5489189312 0.4950305808 2.168855308 0.4975790562
+66 0.333337215 -0.0583095054 2.827392692 0.7423505541
+67 0.0674296854000001 -2.4833591418 1.8344001122 0.5167676635
+68 0.2775952626 2.3842496988 2.507242568 0.6160387592
+69 2.4017613972 -2.4018615012 2.501486212 0.5984231387
+70 -1.9955052906 1.9651018854 2.311247106 0.7211789759
+71 -2.53302155544 -1.2633035634 2.325987884 0.4670032313
+72 1.0254797076 -1.3689550506 2.699984766 0.7453434186
+73 2.7366543312 -0.255166959 1.8627578132 0.2633667332
+74 -1.5932869332 -1.161104781 2.33654568 0.4783428461
+75 -1.009793352 -2.3145221832 2.379841524 0.6857252069
+76 0.693340893 -2.7334615248 2.233459154 0.2665414081
+77 1.4664561702 0.2494399638 2.198538934 0.5896736187
+78 1.0609126104 1.346259048 2.764337228 0.7100030833
+79 2.5104461586 0.288508614 2.469325808 0.4902809103
+80 2.2333125396 -1.3321437648 2.468530976 0.4850812043
+81 -2.53682629722 -2.0202472632 2.866756044 0.4632815554
+82 1.39206234 -2.5243049766 2.847264012 0.4759385864
+83 -2.2724829138 -0.1098747342 3.030753202 0.7278689558
+84 2.017225557 -0.4654244676 3.2605051 0.7088141325
+85 -0.8802476718 2.2941084036 3.138807084 0.706319733
+86 -0.628079403 -1.2303917862 3.026510666 0.6333826584
+87 -2.3580815088 1.2015017298 3.469933122 0.6423476731
+88 2.4394649826 2.43914405052 2.782663268 0.5611360678
+89 0.0625357709999999 1.567985091 3.457187126 0.5253053479
+90 -1.539161295 0.7417340322 3.027584724 0.3961963631
+99 -2.72525501652 2.7252550677 2.33003352 0.2747456695
+92 0.0712955964000002 -2.1279171366 2.760670462 0.4755996786
+93 -1.6729430694 -2.2970374674 3.599943258 0.703232669
+94 2.3386638444 1.4752735164 3.527299472 0.6613443566
+95 -1.434656622 1.4247232644 3.255650254 0.3315953156
+96 1.4645618112 2.40960447342 3.394721712 0.5906045429
+97 1.3760703144 0.6001459458 3.91326855 0.6957628841
+98 -0.9462140538 -0.0427487088 3.336492874 0.6348952769
+100 0.1827398208 2.53982076702 3.56794066 0.4602070182
+101 -0.457002639 -2.4730137114 3.539548678 0.5270570418
+102 -0.931419198 1.310320869 4.181737976 0.7285273468
+103 -2.0616432114 -1.381992453 2.96886929 0.338965935
+104 0.3262376142 -1.1104806558 3.891426076 0.6602407423
+105 2.603218266 0.4692112902 3.333852194 0.3969569889
+106 0.621550263600001 -2.5866908208 3.286851976 0.4133731777
+107 -1.6503699132 -0.9780887094 3.900764794 0.6499567157
+108 2.5553042898 0.5974451142 4.164302548 0.4447202462
+109 1.093439955 -1.9843021254 3.772229138 0.4928106182
+110 2.2235607966 -1.7856976272 3.593621548 0.6684564056
+111 -1.8611431338 0.263821821 4.322428632 0.6784407082
+112 -0.714751794 -1.7696935824 4.568625748 0.7458394563
+113 0.0386044164000001 0.2095397208 4.263319014 0.7410307389
+114 2.6686634316 -0.9488247192 3.911576604 0.3313563455
+115 2.2284709422 2.44392245922 4.203874322 0.52275482
+116 1.6157859984 1.0711117986 4.785981628 0.324507904
+117 2.6962586916 2.69148775836 3.569067278 0.3038361345
+118 2.3010754314 -2.3010362742 4.857805072 0.6990378129
+119 1.5263534148 -1.0151841486 4.39882278 0.646307023
+120 2.5098680544 -0.286387857 4.293648972 0.4497013899
+121 -2.299556475 -1.9016876682 4.792048206 0.7005884521
+122 0.9244959174 1.6753165404 3.841476996 0.4245743159
+123 -2.195684046 2.3733634644 3.92901905 0.627024797
+124 2.029463979 0.3068333046 4.912229852 0.5146686515
+125 2.413782231 1.5097724478 4.772127442 0.5862580388
+126 -0.9412554102 -0.4929830346 4.75320165 0.5604422166
+127 0.3372408174 -2.552452671 4.098775276 0.4476288123
+128 1.595908398 1.800843726 3.997430578 0.2760586876
+129 -1.1690519448 2.54118940104 4.240150194 0.4588777615
+130 0.9204879588 2.5114852107 4.32092078 0.4885296669
+131 0.659912373 1.3331246274 4.845102632 0.6684164081
+132 2.671829979 2.67183193236 4.893475244 0.3281755811
+133 -2.2910456076 1.4532497628 4.8927943 0.7089778106
+134 -1.076059968 0.5908148568 5.408126698 0.7007406601
+135 -2.3840496972 -0.6255172758 5.10418547 0.6160086477
+136 1.0821373314 -0.0702869808000002 4.884508576 0.5053602451
+137 -0.1570730478 2.3498492814 4.651425962 0.6502238281
+138 0.2317918764 0.4511463576 5.732392164 0.6539508916
+139 -1.3545203652 -2.270521377 5.800060516 0.7295653254
+140 -0.9624893322 -2.7356211324 4.088993036 0.2643819056
+141 -1.5216895236 -0.3565353498 5.43671559 0.3466350961
+142 -1.2907235904 2.2917439416 5.332687914 0.6684343677
+143 0.8866195422 -2.0804987466 5.0460502 0.7449337414
+144 1.6203390714 2.41392403836 5.130579106 0.5861366337
+145 1.296612102 0.664002732 5.135460666 0.2998035487
+146 -2.53747613442 0.4097391504 5.36465084 0.4625465899
+147 0.1716290718 -0.8312932698 5.267659842 0.7114849333
+148 1.654186005 1.321091574 5.765267432 0.6781646288
+149 2.378105925 -0.7080846654 5.286799656 0.6219566767
+150 1.7460546672 -1.5505974858 5.104615992 0.2664296597
+151 -2.5832557326 -1.4049308712 5.751830462 0.4167636988
+152 1.5354658446 -0.00829035900000008 5.96063277 0.6640629242
+153 -1.7109245526 -1.0595021664 5.944676482 0.5411024747
+154 2.6796552096 2.1823488846 5.31882093 0.3203466498
+155 -0.3250549086 1.5328440306 5.45032619 0.5047825301
+156 -1.026100956 1.520969247 6.202284836 0.5233534934
+157 1.2170797572 -0.7873677756 5.30232077 0.3354648203
+158 0.5536985856 2.295029025 5.731413028 0.6438728258
+159 2.5065769272 0.6006610446 6.121709486 0.4934687094
+160 -2.0501973498 -0.0777889722000005 6.039149584 0.501875366
diff --git a/lib/voro++/examples/custom/pack_six_cube_poly.pov b/lib/voro++/examples/custom/pack_six_cube_poly.pov
new file mode 100644
index 000000000..40c3b6739
--- /dev/null
+++ b/lib/voro++/examples/custom/pack_six_cube_poly.pov
@@ -0,0 +1,33 @@
+#version 3.6;
+
+// Right-handed coordinate system where the z-axis points upwards
+camera {
+ location <30,-50,25>
+ sky z
+ right -0.15*x*image_width/image_height
+ up 0.15*z
+ look_at <0,0,2.8>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12> color rgb <0.43,0.45,0.45>}
+
+// The radius of the cylinders to be used when drawing the Voronoi cells
+#declare r=0.08;
+
+// The polydisperse particle packing
+union{
+#include "pack_six_cube_poly_p.pov"
+ pigment{rgb <0.92,0.65,1>} finish{reflection 0.17 specular 0.3 ambient 0.42}
+}
+
+// The Voronoi cells for the packing, computed using the radical Voronoi
+// tessellation
+union{
+#include "pack_six_cube_poly_v.pov"
+ pigment{rgb <0.7,0.95,1>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/custom/radical.cc b/lib/voro++/examples/custom/radical.cc
new file mode 100644
index 000000000..8ce9bd732
--- /dev/null
+++ b/lib/voro++/examples/custom/radical.cc
@@ -0,0 +1,43 @@
+// Radical Voronoi tessellation example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-3,x_max=3;
+const double y_min=-3,y_max=3;
+const double z_min=0,z_max=6;
+
+// Set up the number of blocks that the container is divided
+// into.
+const int n_x=3,n_y=3,n_z=3;
+
+int main() {
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block. Import
+ // the monodisperse test packing and output the Voronoi
+ // tessellation in gnuplot and POV-Ray formats.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+ con.import("pack_six_cube");
+ con.draw_cells_gnuplot("pack_six_cube.gnu");
+ con.draw_cells_pov("pack_six_cube_v.pov");
+ con.draw_particles_pov("pack_six_cube_p.pov");
+
+ // Create a container for polydisperse particles using the same
+ // geometry as above. Import the polydisperse test packing and
+ // output the Voronoi radical tessellation in gnuplot and POV-Ray
+ // formats.
+ container_poly conp(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+ conp.import("pack_six_cube_poly");
+ conp.draw_cells_gnuplot("pack_six_cube_poly.gnu");
+ conp.draw_cells_pov("pack_six_cube_poly_v.pov");
+ conp.draw_particles_pov("pack_six_cube_poly_p.pov");
+}
diff --git a/lib/voro++/examples/degenerate/Makefile b/lib/voro++/examples/degenerate/Makefile
new file mode 100644
index 000000000..61bad1c3b
--- /dev/null
+++ b/lib/voro++/examples/degenerate/Makefile
@@ -0,0 +1,25 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=degenerate degenerate2
+
+# Makefile rules
+all: degenerate degenerate2
+
+degenerate: $(SOURCE) degenerate.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o degenerate degenerate.cc -lvoro++
+
+degenerate2: $(SOURCE) degenerate2.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o degenerate2 degenerate2.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/degenerate/README b/lib/voro++/examples/degenerate/README
new file mode 100644
index 000000000..f81b2977c
--- /dev/null
+++ b/lib/voro++/examples/degenerate/README
@@ -0,0 +1,21 @@
+Examples of degenerate vertex support
+=====================================
+Voronoi cells are irregular polyhedra whose faces are made by random plane cuts
+due to neighboring particles, and typically all the vertices of these polyhedra
+have order 3, since creating higher order vertices can only occur if a plane
+cut intersects an existing vertex.
+
+In order to make the code robust for handling very large systems, Voro++
+correctly handles these cases, by taking the approach that if a plane is within
+a particular numerical tolerance of an existing vertex, it treats the plane as
+perfectly intersecting that vertex, and it recomputes the cell topology
+accordingly, allowing it to have perfect representations of objects such as an
+octahedron. These example codes demonstrate this support:
+
+1. higher_test.cc - this code creates an object by cutting with planes aligned
+in a conical arragement along the positive and negative axes in the x, y, and z
+directions. This results in six very high order vertices, and often many order
+four vertices.
+
+2. higher_test2.cc - this code creates an approximation to a sphere, by cutting
+with many different planes aligned in locally random conical arrangements.
diff --git a/lib/voro++/examples/degenerate/degenerate.cc b/lib/voro++/examples/degenerate/degenerate.cc
new file mode 100644
index 000000000..c997b02a0
--- /dev/null
+++ b/lib/voro++/examples/degenerate/degenerate.cc
@@ -0,0 +1,48 @@
+// Degenerate Voronoi cell example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+const double pi=3.1415926535897932384626433832795;
+
+// The number of planes to be cut around each coordinate axis
+const int n=32;
+const double step=2*pi/n;
+
+// The angle (in radians) of the cutting planes from horizontal
+const double theta=pi/4-0.25;
+
+int main() {
+ double x,y,z,phi;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered
+ // on the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Plane cutting
+ for(phi=0;phi<2*pi-0.5*step;phi+=step) {
+ x=cos(theta);y=cos(phi)*sin(theta);z=sin(phi)*sin(theta);
+ v.plane(x,y,z,1);
+ v.plane(-x,y,z,1);
+ v.plane(y,x,z,1);
+ v.plane(y,-x,z,1);
+ v.plane(y,z,x,1);
+ v.plane(y,z,-x,1);
+ }
+
+ // Check that the relation table is correct, and that there are no
+ // duplicate edges
+ v.check_relations();
+ v.check_duplicates();
+
+ // Output the Voronoi cell to a file in Gnuplot format
+ v.draw_gnuplot(0,0,0,"degenerate.gnu");
+
+ // Output the Voronoi cell to a file in POV-Ray format
+ v.draw_pov(0,0,0,"degenerate_v.pov");
+}
diff --git a/lib/voro++/examples/degenerate/degenerate.pov b/lib/voro++/examples/degenerate/degenerate.pov
new file mode 100644
index 000000000..74edc8529
--- /dev/null
+++ b/lib/voro++/examples/degenerate/degenerate.pov
@@ -0,0 +1,33 @@
+#version 3.6;
+
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <15,10,-30>
+ right 0.04*x*image_width/image_height
+ up 0.04*y
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-4,35,-20> color rgb <0.72,0.7,0.7>}
+light_source{<20,5,-10> color rgb <0.4,0.42,0.42>}
+
+#declare r=0.01;
+
+union{
+#include "degenerate_v.pov"
+ texture{T_Gold_3C}
+}
+
+sphere{<0,0,0>,0.5-r
+ pigment{rgb <0.1,0.15,0.4>}
+ finish{reflection 0.25 specular 0.4 ambient 0.6}
+}
diff --git a/lib/voro++/examples/degenerate/degenerate2.cc b/lib/voro++/examples/degenerate/degenerate2.cc
new file mode 100644
index 000000000..6165d605d
--- /dev/null
+++ b/lib/voro++/examples/degenerate/degenerate2.cc
@@ -0,0 +1,64 @@
+// Degenerate vertex example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+const double pi=3.1415926535897932384626433832795;
+
+// The total number of points to create as degenerate vertices
+const int points=100;
+
+// The number of planes that will be cut around each point
+const int n=64;
+const double step=2*pi/n;
+
+// The angle (in radians) of the cutting planes from horizontal
+const double theta=0.04;
+
+// This function returns a random floating point number between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ double x,y,z,rsq,r,phi;
+ voronoicell v;
+ int n=0;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered on
+ // the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Plane cutting
+ while(n<points) {
+
+ // Choose a random point
+ x=2*rnd()-1;
+ y=2*rnd()-1;
+ z=2*rnd()-1;
+
+ // Skip it if it's outside the unit sphere or too close to the
+ // origin
+ rsq=x*x+y*y+z*z;
+ if(rsq<0.01||rsq>1) continue;
+
+ // Rescale the point so that it has modulus 1, and then apply
+ // plane cuts around this point
+ r=1/sqrt(rsq);x*=r;y*=r;z*=r;
+ rsq=sqrt(x*x+y*y);r=z/rsq;
+ for(phi=rnd()*step;phi<2*pi;phi+=step)
+ v.plane(x*cos(theta)+sin(theta)*(-y*cos(phi)/rsq-x*r*sin(phi)),
+ y*cos(theta)+sin(theta)*(x*cos(phi)/rsq-y*r*sin(phi)),
+ z*cos(theta)+sin(theta)*rsq*sin(phi),1);
+ n++;
+ }
+
+ // Output the Voronoi cell to a file in Gnuplot format
+ v.draw_gnuplot(0,0,0,"degenerate2.gnu");
+
+ // Optional POV-Ray output
+ v.draw_pov(0,0,0,"degenerate2_v.pov");
+ v.draw_pov_mesh(0,0,0,"degenerate2_m.pov");
+}
diff --git a/lib/voro++/examples/degenerate/degenerate2.pov b/lib/voro++/examples/degenerate/degenerate2.pov
new file mode 100644
index 000000000..a734a5ea1
--- /dev/null
+++ b/lib/voro++/examples/degenerate/degenerate2.pov
@@ -0,0 +1,32 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <1,2.5,-5>
+ right 0.2*x*image_width/image_height
+ up 0.2*y
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-0.8,3,-2> color rgb <0.77,0.75,0.75>}
+light_source{<2.5,1.2,-1.2> color rgb <0.38,0.40,0.40>}
+
+#declare r=0.002;
+
+union{
+#include "degenerate2_m.pov"
+ pigment{rgb <1,0.2,0.25>} finish{specular 0.2 ambient 0.42}
+}
+
+union{
+#include "degenerate2_v.pov"
+ texture{T_Gold_3C}
+}
diff --git a/lib/voro++/examples/extra/Makefile b/lib/voro++/examples/extra/Makefile
new file mode 100644
index 000000000..89e6517af
--- /dev/null
+++ b/lib/voro++/examples/extra/Makefile
@@ -0,0 +1,34 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=box_cut cut_region superellipsoid irregular
+
+# Makefile rules
+all: $(EXECUTABLES)
+
+box_cut: box_cut.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o box_cut box_cut.cc -lvoro++
+
+cut_region: cut_region.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o cut_region cut_region.cc -lvoro++
+
+superellipsoid: superellipsoid.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o superellipsoid superellipsoid.cc -lvoro++
+
+irregular: irregular.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o irregular irregular.cc -lvoro++
+
+finite_sys: finite_sys.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o finite_sys finite_sys.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/extra/README b/lib/voro++/examples/extra/README
new file mode 100644
index 000000000..85ce45a94
--- /dev/null
+++ b/lib/voro++/examples/extra/README
@@ -0,0 +1,27 @@
+Extra examples
+==============
+This directory contains miscellaneous extra examples of the code.
+
+box_cut.cc - this creates a large Voronoi cell, and then cuts the cell by a
+group of points within a small box, to demonstrate space that particles within
+a block can possibly affect. Different topologies are visible depending on
+whether a face, edge, or corner of the box is aligned with the cell.
+
+cut_region.cc - this program demonstrates the plane_intersects() routine for
+determining whether a plane has any intersection with a Voronoi cell. The
+program creates a test Voronoi cell, saves it to "cell.gnu", and then maps out
+the region of space which can possibly influence it and saves an outline of it
+to "cell_cut_region.gnu". These can be visualized in gnuplot using:
+
+splot 'cell.gnu' with lines, 'cell_cut_region.gnu' with dots
+
+superellipsoid.cc - this creates a cell in the shape of a superellipsoid
+(satisfying the equation x^4+y^4+z^4=1) and outputs the results in gnuplot
+format to "superellipsoid.gnu".
+
+irregular.cc - this code makes use of a wall class as a method of handling a
+Voronoi tessellation for an irregular group of particles. Each Voronoi cell is
+initialized to be a dodecahedron surronding the particle, which is then cut.
+This stops Voronoi cells from extending a long way out to the computational
+boundaries. The output can be visualized using the POV-Ray header file
+irregular.pov.
diff --git a/lib/voro++/examples/extra/box_cut.cc b/lib/voro++/examples/extra/box_cut.cc
new file mode 100644
index 000000000..7eb0916c5
--- /dev/null
+++ b/lib/voro++/examples/extra/box_cut.cc
@@ -0,0 +1,32 @@
+// Box cutting example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Parameters controlling the center of the test box
+const double cx=1.5,cy=1.5,cz=1.5;
+
+int main() {
+ double x,y,z;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 16, centered
+ // on the origin
+ v.init(-8,8,-8,8,-8,8);
+
+ // Cut by a grid of points in a box of width one, centered on
+ // (cx,cy,cz)
+ for(x=cx-0.5;x<cx+0.55;x+=0.1) for(y=cy-0.5;y<cy+0.55;y+=0.1)
+ for(z=cz-0.5;z<cz+0.55;z+=0.1) v.plane(x,y,z);
+
+ // Output the Voronoi cell in gnuplot format
+ v.draw_gnuplot(0,0,0,"box_cut.gnu");
+
+ // Now make a small file that contains the test box
+ v.init(cx-0.5,cx+0.5,cy-0.5,cy+0.5,cz-0.5,cz+0.5);
+ v.draw_gnuplot(0,0,0,"box_cut.points");
+}
diff --git a/lib/voro++/examples/extra/cut_region.cc b/lib/voro++/examples/extra/cut_region.cc
new file mode 100644
index 000000000..3b8b10bcf
--- /dev/null
+++ b/lib/voro++/examples/extra/cut_region.cc
@@ -0,0 +1,72 @@
+// Cell cutting region example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+const double pi=3.1415926535897932384626433832795;
+
+// This constant sets the tolerance in the bisection search algorithm
+const double tolwidth=1e-7;
+
+// This constant determines the density of points to test
+const double theta_step=pi/200;
+
+int main() {
+ double x,y,z,r,rmin,rmax;
+ double theta,phi,phi_step;
+ voronoicell v;
+ FILE *fp=safe_fopen("cell_cut_region.gnu","w");
+
+ // Initialize the Voronoi cell to be an octahedron and make a single
+ // plane cut to add some variation
+ v.init_octahedron(1);
+ v.plane(0.4,0.3,1,0.1);
+
+ // Output the cell in gnuplot format
+ v.draw_gnuplot(0,0,0,"cell.gnu");
+
+ // Now test over direction vectors from the center of the sphere. For
+ // each vector, carry out a search to find the maximum distance along
+ // that vector that a plane will intersect with cell, and save it to
+ // the output file.
+ for(theta=theta_step*0.5;theta<pi;theta+=theta_step) {
+ phi_step=2*pi/(int(2*pi*sin(theta)/theta_step)+1);
+ for(phi=phi_step*0.5;phi<2*pi;phi+=phi_step) {
+
+ // Calculate a direction to look along
+ x=sin(theta)*cos(phi);
+ y=sin(theta)*sin(phi);
+ z=cos(theta);
+
+ // Now carry out a bisection search. Here, we initialize
+ // a minimum and a maximum guess for the distance
+ // along this vector. Keep multiplying rmax by two until
+ // the plane no longer makes a cut.
+ rmin=0;rmax=1;
+ while (v.plane_intersects(x,y,z,rmax)) rmax*=2;
+
+ // We now know that the distance is somewhere between
+ // rmin and rmax. Test the point halfway in-between
+ // these two. If it intersects, then move rmin to this
+ // point; otherwise, move rmax there. At each stage the
+ // bounding interval is divided by two. Exit when the
+ // width of the interval is smaller than the tolerance.
+ while (rmax-rmin>tolwidth) {
+ r=(rmax+rmin)*0.5;
+ if (v.plane_intersects(x,y,z,r)) rmin=r;
+ else rmax=r;
+ }
+
+ // Output this point to file
+ r=(rmax+rmin)*0.5;
+ x*=r;y*=r;z*=r;
+ fprintf(fp,"%g %g %g\n",x,y,z);
+ }
+ }
+
+ fclose(fp);
+}
diff --git a/lib/voro++/examples/extra/irregular.cc b/lib/voro++/examples/extra/irregular.cc
new file mode 100644
index 000000000..3f9dd9df1
--- /dev/null
+++ b/lib/voro++/examples/extra/irregular.cc
@@ -0,0 +1,70 @@
+// Irregular packing example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-6,x_max=6;
+const double y_min=-6,y_max=6;
+const double z_min=-3,z_max=9;
+
+// Golden ratio constants
+const double Phi=0.5*(1+sqrt(5.0));
+const double phi=0.5*(1-sqrt(5.0));
+
+// Set up the number of blocks that the container is divided
+// into.
+const int n_x=5,n_y=5,n_z=5;
+
+// Create a wall class that, whenever called, will replace the Voronoi cell
+// with a prescribed shape, in this case a dodecahedron
+class wall_initial_shape : public wall {
+ public:
+ wall_initial_shape() {
+
+ // Create a dodecahedron
+ v.init(-2,2,-2,2,-2,2);
+ v.plane(0,Phi,1);v.plane(0,-Phi,1);v.plane(0,Phi,-1);
+ v.plane(0,-Phi,-1);v.plane(1,0,Phi);v.plane(-1,0,Phi);
+ v.plane(1,0,-Phi);v.plane(-1,0,-Phi);v.plane(Phi,1,0);
+ v.plane(-Phi,1,0);v.plane(Phi,-1,0);v.plane(-Phi,-1,0);
+ };
+ bool point_inside(double x,double y,double z) {return true;}
+ bool cut_cell(voronoicell &c,double x,double y,double z) {
+
+ // Set the cell to be equal to the dodecahedron
+ c=v;
+ return true;
+ }
+ bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) {
+
+ // Set the cell to be equal to the dodecahedron
+ c=v;
+ return true;
+ }
+ private:
+ voronoicell v;
+};
+
+int main() {
+
+ // Create a container with the geometry given above. This is bigger
+ // than the particle packing itself.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Create the "initial shape" wall class and add it to the container
+ wall_initial_shape(wis);
+ con.add_wall(wis);
+
+ // Import the irregular particle packing
+ con.import("pack_irregular");
+
+ // Save the particles and Voronoi cells in POV-Ray format
+ con.draw_particles_pov("irregular_p.pov");
+ con.draw_cells_pov("irregular_v.pov");
+}
diff --git a/lib/voro++/examples/extra/irregular.pov b/lib/voro++/examples/extra/irregular.pov
new file mode 100644
index 000000000..ac461b267
--- /dev/null
+++ b/lib/voro++/examples/extra/irregular.pov
@@ -0,0 +1,34 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+camera {
+ location <0,-50,15>
+ sky z
+ right -0.25*x*image_width/image_height
+ up 0.25*y
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-16,-30,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-16,8> color rgb <0.43,0.45,0.45>}
+
+#declare r=0.05;
+#declare s=0.5;
+
+#declare particles=union {
+#include "irregular_p.pov"
+ pigment{rgb 0.9} finish{reflection 0.2 specular 0.25 ambient 0.28 metallic}
+}
+
+union{particles translate <-4,0,0>}
+union{particles translate <4,0,0>}
+
+union{
+#include "irregular_v.pov"
+ translate <4,0,0>
+ pigment{rgb <0.7,0.3,0.9>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/extra/pack_irregular b/lib/voro++/examples/extra/pack_irregular
new file mode 100644
index 000000000..a9e845351
--- /dev/null
+++ b/lib/voro++/examples/extra/pack_irregular
@@ -0,0 +1,90 @@
+72 -0.147483 -0.558693 -3.18934
+9 -2.41157 -1.29774 -1.06982
+80 -1.47859 -1.8335 -1.36336
+65 -0.711941 -2.41131 -1.64334
+64 -0.4797 -1.21197 -2.50408
+20 -1.42529 -0.939487 -1.80822
+40 -1.23958 0.407091 -1.66298
+79 -2.15132 0.907402 -1.59593
+66 -1.53942 -0.324634 -1.02788
+0 -0.413499 0.327672 -2.81041
+7 0.539113 0.879889 -1.70334
+10 -0.531341 -0.241038 -1.12169
+22 -0.697165 -0.321415 -2.10456
+59 0.392636 -0.224244 -2.07623
+67 0.763622 0.563918 -2.62516
+36 -0.30969 0.754975 -1.08361
+45 1.579 0.889521 -1.4745
+47 1.4156 -0.647419 -1.48749
+84 2.28022 0.210077 -1.69046
+15 0.77776 1.81164 -1.68825
+42 -0.18009 1.616 -1.8986
+54 0.560998 2.64828 -1.1852
+23 -1.87416 -2.33337 0.0595857
+41 -1.44546 -1.42998 0.0496244
+3 0.648987 -2.47874 -0.114855
+5 -0.539766 -1.84268 0.146595
+52 0.0605186 -2.7285 0.762346
+87 0.506043 -1.30521 0.122018
+56 0.125353 -1.8152 -0.649339
+27 1.23838 -1.98443 0.524113
+11 -1.7844 -0.395658 0.171453
+13 -1.56182 0.417102 0.228077
+53 -1.05622 0.840323 0.989743
+21 -1.73028 0.613184 -0.737932
+24 -2.70227 0.360208 -0.694108
+43 -2.26163 0.0972097 0.905263
+2 -0.846054 0.37304 -0.320826
+8 0.881191 0.180836 -0.691522
+83 0.220646 -0.586568 -0.560328
+32 -0.929809 -0.630924 -0.2915
+57 -0.740037 -0.0210996 0.59228
+50 0.224453 -0.1255 0.328453
+49 -0.337601 -0.932723 0.508691
+74 2.15102 -0.586216 -0.812645
+85 2.74671 0.216964 -0.805714
+82 1.07437 0.400501 0.359586
+55 -1.95062 2.07317 0.607831
+86 -1.52454 1.40705 -0.00434567
+69 -2.21193 1.06183 0.646364
+89 -0.387785 2.20094 -0.16407
+61 -0.849347 1.52048 -0.733213
+68 -0.635487 1.68349 0.655008
+70 0.495467 2.5636 0.133158
+18 0.305068 1.94276 0.946142
+76 0.987675 1.2686 -0.403397
+14 1.59053 2.0932 0.386613
+26 1.08147 2.78732 0.911973
+44 1.96939 1.24919 -0.592929
+46 2.94129 1.02209 0.994683
+19 1.18461 2.24248 -0.516429
+88 2.2082 1.30683 0.376432
+39 -1.12068 -1.89589 2.01622
+37 -1.35954 -1.23596 1.02763
+17 -0.390062 -2.44346 1.60836
+78 0.309306 -1.49032 2.25291
+71 0.465111 -1.82342 1.13741
+60 -2.51128 -0.741988 1.52195
+62 -2.26236 0.132924 1.93737
+77 -1.58329 0.16374 2.79988
+16 -1.40954 -0.246268 1.30018
+34 -1.34135 -0.920726 2.03534
+28 0.465115 0.780311 1.96134
+31 -0.530333 0.808298 2.08415
+35 -0.443838 -0.132428 2.41211
+51 0.76714 0.0380576 2.56075
+63 0.424234 -0.520687 1.23131
+73 -0.487922 -0.869208 1.49529
+29 -0.0885648 0.57667 1.05946
+1 1.53919 -0.840006 2.01191
+12 1.61355 -0.981671 1.0564
+75 1.46049 0.694938 1.91717
+58 -1.67927 1.51233 1.39003
+33 -1.05848 1.00787 2.90952
+4 -0.110568 1.67679 1.82049
+6 -0.822763 1.82494 1.80562
+81 0.694696 2.26858 2.02688
+25 0.235788 1.78411 2.77166
+30 0.783889 1.06523 1.04789
+38 2.09077 1.30555 1.4377
+48 1.28628 1.88704 1.31663
diff --git a/lib/voro++/examples/extra/superellipsoid.cc b/lib/voro++/examples/extra/superellipsoid.cc
new file mode 100644
index 000000000..d81978d64
--- /dev/null
+++ b/lib/voro++/examples/extra/superellipsoid.cc
@@ -0,0 +1,41 @@
+// Superellipsoid example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// This function returns a random floating point number between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ double x,y,z,rsq,r;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered
+ // on the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Cut the cell by 5000 random planes that are scaled to create a
+ // superellipsoid
+ for(int i=0;i<5000;i++) {
+ x=2*rnd()-1;
+ y=2*rnd()-1;
+ z=2*rnd()-1;
+ rsq=x*x*x*x+y*y*y*y+z*z*z*z;
+ if(rsq>0.01&&rsq<1) {
+ r=1/sqrt(sqrt(rsq));
+ x*=r;y*=r;z*=r;
+ v.plane(x*x*x,y*y*y,z*z*z,x*x*x*x+y*y*y*y+z*z*z*z);
+ }
+ }
+
+ // Output the Voronoi cell to a file, in the gnuplot format
+ v.draw_gnuplot(0,0,0,"superellipsoid.gnu");
+
+ // Output the Voronoi cell to a file in POV-Ray formats
+ v.draw_pov(0,0,0,"superellipsoid_v.pov");
+ v.draw_pov_mesh(0,0,0,"superellipsoid_m.pov");
+}
diff --git a/lib/voro++/examples/extra/superellipsoid.pov b/lib/voro++/examples/extra/superellipsoid.pov
new file mode 100644
index 000000000..4429e89bd
--- /dev/null
+++ b/lib/voro++/examples/extra/superellipsoid.pov
@@ -0,0 +1,32 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <1,2.5,-5>
+ right 0.23*x*image_width/image_height
+ up 0.23*y
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-0.8,3,-2> color rgb <0.77,0.75,0.65>}
+light_source{<2.5,1.2,-1.2> color rgb <0.38,0.30,0.40>}
+
+#declare r=0.006;
+
+union{
+#include "superellipsoid_m.pov"
+ texture{T_Gold_3C}
+}
+
+union{
+#include "superellipsoid_v.pov"
+ texture{T_Silver_3C}
+}
diff --git a/lib/voro++/examples/interface/Makefile b/lib/voro++/examples/interface/Makefile
new file mode 100644
index 000000000..3522ac043
--- /dev/null
+++ b/lib/voro++/examples/interface/Makefile
@@ -0,0 +1,31 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=loops polygons odd_even find_voro_cell
+
+# Makefile rules
+all: $(EXECUTABLES)
+
+loops: loops.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o loops loops.cc -lvoro++
+
+polygons: polygons.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o polygons polygons.cc -lvoro++
+
+odd_even: odd_even.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o odd_even odd_even.cc -lvoro++
+
+find_voro_cell: find_voro_cell.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o find_voro_cell find_voro_cell.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/interface/README b/lib/voro++/examples/interface/README
new file mode 100644
index 000000000..85e358f5b
--- /dev/null
+++ b/lib/voro++/examples/interface/README
@@ -0,0 +1,52 @@
+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.
diff --git a/lib/voro++/examples/interface/find_voro_cell.cc b/lib/voro++/examples/interface/find_voro_cell.cc
new file mode 100644
index 000000000..096a51df5
--- /dev/null
+++ b/lib/voro++/examples/interface/find_voro_cell.cc
@@ -0,0 +1,89 @@
+// Example code demonstrating find_voronoi_cell function
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// The sampling distance for the grids of find_voronoi_cell calls
+const double h=0.05;
+
+// The cube of the sampling distance, corresponding the amount of volume
+// associated with a sample point
+const double hcube=h*h*h;
+
+// Set the number of particles that are going to be randomly introduced
+const int particles=20;
+
+// This function returns a random double between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ int i;
+ double x,y,z,r,rx,ry,rz;
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block
+ container con(0,1,0,1,0,1,5,5,5,false,false,false,8);
+
+ // Randomly add particles into the container
+ for(i=0;i<particles;i++) {
+ x=rnd();
+ y=rnd();
+ z=rnd();
+ con.put(i,x,y,z);
+ }
+
+ // Output the particle positions in gnuplot format
+ con.draw_particles("find_voro_cell_p.gnu");
+
+ // Scan a 2D slice in the container, and for each point in the slice,
+ // find the Voronoi cell that the point is in. Store a vector
+ FILE *f1=safe_fopen("find_voro_cell.vec","w");
+ for(x=0.5*h;x<1;x+=h) for(y=0.5*h;y<1;y+=h) {
+ if(con.find_voronoi_cell(x,y,0.5,rx,ry,rz,i))
+ fprintf(f1,"%g %g %g %g %g %g %g\n",x,y,0.5,rx-x,ry-y,rz-0.5,
+ sqrt((rx-x)*(rx-x)+(ry-y)*(ry-y)+(rz-0.5)*(rz-0.5)));
+ else fprintf(stderr,"# find_voronoi_cell error for %g %g 0.5\n",x,y);
+ }
+ fclose(f1);
+
+ // Create a blank array for storing the sampled Voronoi volumes
+ int samp_v[particles];
+ for(i=0;i<particles;i++) samp_v[i]=0;
+
+ // Scan over a grid covering the entire container, finding which
+ // Voronoi cell each point is in, and tallying the result as a method
+ // of sampling the volume of each Voronoi cell
+ for(z=0.5*h;z<1;z+=h) for(y=0.5*h;y<1;y+=h) for(x=0.5*h;x<1;x+=h) {
+ if(con.find_voronoi_cell(x,y,z,rx,ry,rz,i)) samp_v[i]++;
+ else fprintf(stderr,"# find_voronoi_cell error for %g %g %g\n",x,y,z);
+ }
+
+ // Output the Voronoi cells in gnuplot format and a file with the
+ // comparisons between the Voronoi cell volumes and the sampled volumes
+ f1=safe_fopen("find_voro_cell.vol","w");
+ FILE *f2=safe_fopen("find_voro_cell_v.gnu","w");
+ c_loop_all cla(con);
+ voronoicell c;
+ if(cla.start()) do if (con.compute_cell(c,cla)) {
+
+ // Get the position and ID information for the particle
+ // currently being considered by the loop. Ignore the radius
+ // information.
+ cla.pos(i,x,y,z,r);
+
+ // Save and entry to the .vol file, storing both the computed
+ // Voronoi cell volume, and the sampled volume based on the
+ // number of grid points that were inside the cell
+ fprintf(f1,"%d %g %g %g %g %g\n",i,x,y,z,c.volume(),samp_v[i]*hcube);
+
+ // Draw the Voronoi cell
+ c.draw_gnuplot(x,y,z,f2);
+ } while (cla.inc());
+ fclose(f1);
+ fclose(f2);
+}
diff --git a/lib/voro++/examples/interface/loops.cc b/lib/voro++/examples/interface/loops.cc
new file mode 100644
index 000000000..2fa3c38cd
--- /dev/null
+++ b/lib/voro++/examples/interface/loops.cc
@@ -0,0 +1,81 @@
+// Example code demonstrating the loop classes
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Constants determining the configuration of the tori
+const double dis=1.25,mjrad=2.5,mirad=0.95,trad=mjrad+mirad;
+
+// Set the number of particles that are going to be randomly introduced
+const int particles=100000;
+
+// This function returns a random double between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ int i;
+ double x,y,z,r;
+ voronoicell c;
+
+ // Create a container as a non-periodic 10 by 10 by 10 box
+ container con(-5,5,-5,5,-5,5,26,26,26,false,false,false,8);
+ particle_order po;
+
+ // Randomly add particles into the container
+ for(i=0;i<particles;i++) {
+ x=10*rnd()-5;
+ y=10*rnd()-5;
+ z=10*rnd()-5;
+
+ // If the particle lies within the first torus, store it in the
+ // ordering class when adding to the container
+ r=sqrt((x-dis)*(x-dis)+y*y);
+ if((r-mjrad)*(r-mjrad)+z*z<mirad) con.put(po,i,x,y,z);
+ else con.put(i,x,y,z);
+ }
+
+ // Compute Voronoi cells for the first torus. Here, the points
+ // previously stored in the ordering class are looped over.
+ FILE *f1=safe_fopen("loops1_m.pov","w");
+ FILE *f2=safe_fopen("loops1_v.pov","w");
+ c_loop_order clo(con,po);
+ if(clo.start()) do if(con.compute_cell(c,clo)) {
+
+ // Get the position of the current particle under consideration
+ clo.pos(x,y,z);
+
+ // Save a POV-Ray mesh to one file and a cylinder/sphere
+ // representation to the other file
+ c.draw_pov_mesh(x,y,z,f1);
+ c.draw_pov(x,y,z,f2);
+ } while (clo.inc());
+ fclose(f1);
+ fclose(f2);
+
+ // Compute Voronoi cells for the second torus. Here, the subset loop is
+ // used to search over the blocks overlapping the torus, and then each
+ // particle is individually tested.
+ f1=safe_fopen("loops2_m.pov","w");
+ f2=safe_fopen("loops2_v.pov","w");
+ c_loop_subset cls(con);
+ cls.setup_box(-dis-trad,-dis+trad,-mirad,mirad,-trad,trad,false);
+ if(cls.start()) do {
+
+ // Get the position of the current particle under consideration
+ cls.pos(x,y,z);
+
+ // Test whether this point is within the torus, and if so,
+ // compute and save the Voronoi cell
+ r=sqrt((x+dis)*(x+dis)+z*z);
+ if((r-mjrad)*(r-mjrad)+y*y<mirad&&con.compute_cell(c,cls)) {
+ c.draw_pov_mesh(x,y,z,f1);
+ c.draw_pov(x,y,z,f2);
+ }
+ } while (cls.inc());
+ fclose(f1);
+ fclose(f2);
+}
diff --git a/lib/voro++/examples/interface/loops.pov b/lib/voro++/examples/interface/loops.pov
new file mode 100644
index 000000000..953b29186
--- /dev/null
+++ b/lib/voro++/examples/interface/loops.pov
@@ -0,0 +1,44 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <2,-40,30>
+ sky z
+ right -0.155*x*image_width/image_height
+ up 0.155*z
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-8,-20,30> color rgb <0.79,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.36,0.40,0.40>}
+
+#declare r=0.02;
+#declare s=0.2;
+
+union{
+#include "loops1_m.pov"
+ pigment{rgb <0.9,0.6,0.3>} finish{reflection 0.185 specular 0.3 ambient 0.42}
+}
+
+union{
+#include "loops1_v.pov"
+ pigment{rgb <0.9,0.4,0.45>} finish{specular 0.5 ambient 0.42}
+}
+
+union{
+#include "loops2_m.pov"
+ pigment{rgb <0.5,0.65,0.75>} finish{reflection 0.185 specular 0.3 ambient 0.42}
+}
+
+union{
+#include "loops2_v.pov"
+ pigment{rgb <0.42,0.42,0.75>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/interface/odd_even.cc b/lib/voro++/examples/interface/odd_even.cc
new file mode 100644
index 000000000..192c3af11
--- /dev/null
+++ b/lib/voro++/examples/interface/odd_even.cc
@@ -0,0 +1,56 @@
+// Odd/even face coloring code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include <vector>
+using namespace std;
+
+#include "voro++.hh"
+using namespace voro;
+
+// This function returns a random floating point number between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ unsigned int i;
+ double x,y,z,rsq,r;
+ voronoicell v;
+
+ // Initialize the Voronoi cell to be a cube of side length 2, centered
+ // on the origin
+ v.init(-1,1,-1,1,-1,1);
+
+ // Cut the cell by 250 random planes which are all a distance 1 away
+ // from the origin, to make an approximation to a sphere
+ for(i=0;i<250;i++) {
+ x=2*rnd()-1;
+ y=2*rnd()-1;
+ z=2*rnd()-1;
+ rsq=x*x+y*y+z*z;
+ if(rsq>0.01&&rsq<1) {
+ r=1/sqrt(rsq);x*=r;y*=r;z*=r;
+ v.plane(x,y,z,1);
+ }
+ }
+
+ // Calculate the orders of the faces and the normal vectors
+ vector<int> f_vert;
+ vector<double> nor;
+ v.face_orders(f_vert);
+ v.normals(nor);
+
+ // Output POV-Ray planes with textures based on whether a face is
+ // composed of an odd or even number of edges
+ const char* parity[2]={"even","odd"};
+ FILE *fp=safe_fopen("odd_even_pl.pov","w");
+ for(i=0;i<f_vert.size();i++)
+ fprintf(fp,"plane{<%g,%g,%g>,0.5 texture{t_%s}}\n"
+ ,nor[3*i],nor[3*i+1],nor[3*i+2]
+ ,parity[f_vert[i]&1]);
+ fclose(fp);
+
+ // Save the Voronoi cell as a spheres and cylinders
+ v.draw_pov(0,0,0,"odd_even_v.pov");
+}
diff --git a/lib/voro++/examples/interface/odd_even.pov b/lib/voro++/examples/interface/odd_even.pov
new file mode 100644
index 000000000..669ede81c
--- /dev/null
+++ b/lib/voro++/examples/interface/odd_even.pov
@@ -0,0 +1,38 @@
+#version 3.6;
+
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <15,-30,10>
+ sky z
+ right -0.033*x*image_width/image_height
+ up 0.033*y
+ look_at <0,0,0>
+}
+
+background{rgb 1}
+
+light_source{<-4,-20,35> color rgb <0.72,0.7,0.7>}
+light_source{<20,-10,5> color rgb <0.4,0.42,0.42>}
+
+#declare r=0.01;
+
+#declare f1=finish{reflection 0.17 specular 0.3 ambient 0.42}
+#declare t_odd=texture{pigment{rgb <0.8,0.8,0.8>} finish{f1}}
+#declare t_even=texture{pigment{rgb <0.2,0.2,0.2>} finish{f1}}
+
+intersection{
+#include "odd_even_pl.pov"
+}
+
+union{
+#include "odd_even_v.pov"
+ pigment{rgb <0.9,0.1,0.15>}
+ finish{reflection 0.25 specular 0.4 ambient 0.3}
+}
diff --git a/lib/voro++/examples/interface/pack_six_cube b/lib/voro++/examples/interface/pack_six_cube
new file mode 100644
index 000000000..066f2067f
--- /dev/null
+++ b/lib/voro++/examples/interface/pack_six_cube
@@ -0,0 +1,216 @@
+1 -1.633531566 1.0081779456 0.4997643894
+2 -2.3175495108 2.50004343396 0.4998098766
+3 -0.0883292022000002 2.49998487024 0.49997382
+4 -0.5905249392 2.1141400272 1.2739520638
+5 -1.6354550196 0.00777687119999992 0.4998135702
+6 2.50024371 1.7052004254 1.1066620646
+7 1.6163377164 0.378218796 0.4996352686
+8 0.6450816684 1.8136706778 0.4991881638
+9 1.3723354464 2.50001343222 0.4998503506
+10 -2.49477600042 -2.4994533834 0.49997382
+11 0.1591747386 -0.8623052892 0.4997612252
+12 0.6018432558 2.50085393652 1.2236191762
+13 2.4993970962 2.50004979816 0.499958425
+14 2.5002306354 -0.5891871372 1.3656871624
+15 2.4996763188 0.910593138 0.4998442324
+16 0.1555379868 -2.1140856714 0.499808302
+17 1.7917374258 -2.5001865732 1.2081198644
+18 -2.1690769116 -1.9332698928 1.3393934932
+19 1.7064470976 1.5487702458 0.49997382
+20 -0.7669637874 -2.5000096794 0.4999680968
+21 2.5000711542 -1.0890633102 0.4997243732
+22 -1.630300629 -1.9954333962 0.4995576534
+23 1.7914606536 -1.7945441268 0.4997721152
+24 -2.50023339174 -0.4939926774 0.4998565634
+25 -2.5002228639 0.5096527854 0.4998286406
+26 -2.49973398858 1.5167884392 0.4998730372
+27 -1.09231806 2.50004601528 0.4999122966
+28 -0.7664081604 1.506191607 0.4998754028
+29 -2.49994466028 -1.4976897942 0.49997382
+30 -1.6351530756 -0.9955213908 0.4999588934
+31 2.5000470594 -2.5000639944 0.4999611072
+32 1.0827185856 -2.500004454 0.4999501042
+33 0.121049223 0.962177124 0.4998840514
+34 -0.731239728 -1.4928565722 0.499907191
+35 2.5000148538 -1.7942863308 1.208330482
+36 1.4293900734 -0.60411936 0.4998811682
+37 1.693914078 -1.1739451596 1.2777368674
+38 -0.7702945434 -0.4936272762 0.4995237402
+39 2.5001273412 0.4105916904 1.3657870828
+40 -0.2151642102 -0.4489046268 1.3296380976
+41 -0.7687151904 0.5062139106 0.4999055828
+42 2.500152618 -0.0892589747999999 0.4997650116
+43 1.0009049868 1.008280419 0.972585352
+44 -1.5086934072 0.9974863356 1.4916875348
+45 -0.1906878174 -2.5001610756 1.3546498898
+46 1.9350760212 2.50015141518 1.3263206044
+47 0.7680680142 -0.613803066 1.2529781652
+48 -0.520322322 0.9840571992 1.3423839878
+49 -1.7049937512 1.8781106406 0.987517195
+50 0.2890163712 1.5679785972 1.4005698552
+51 -2.5001055165 -0.9902666664 1.3677983936
+52 0.6718107054 0.0485346384000001 0.4998990378
+53 0.8828891958 -1.4903279178 0.7856231914
+54 1.6971075462 -1.8794484798 1.986236625
+55 0.7785745614 -1.5429397554 1.778749626
+56 2.498355582 -2.5002474342 1.9162502768
+57 1.8163510674 1.118761185 1.5402656292
+58 -2.49028043208 0.00966293040000021 1.3657617934
+59 -1.0465593666 -1.9851376494 1.3111443026
+60 1.6230277242 -0.109344417 1.3725323044
+61 0.803677725 -2.4904980648 1.4601558584
+62 2.500174548 -1.291019802 2.077806292
+63 -0.4406783868 -1.0295588292 2.111380354
+64 -1.0593921888 -0.9853736058 1.3206667652
+65 -1.0862456712 0.0421811507999998 1.334589922
+66 -0.0664300529999999 -1.4875173498 1.246881552
+67 0.2975538384 0.4089966312 1.3541999206
+68 -2.0563739124 1.7171792856 1.9181011058
+69 -1.5021759366 -2.5002090786 2.037012458
+70 1.2004706514 1.8826223166 1.7322744688
+71 -2.50018854048 1.0131918204 1.3636933196
+72 -0.6610079004 -1.996969944 2.233624626
+73 0.3572570658 -0.4242221946 2.149145084
+74 -2.50015722168 2.5001806872 1.4828326074
+75 -1.7654338962 -0.4966383762 1.832939586
+76 2.5001148054 1.8908456178 2.089239758
+77 -1.5156057486 -1.498156245 2.047882108
+78 -0.0249709901999999 2.50011927126 2.002554182
+79 2.500335852 0.901840926 2.23670456
+80 -2.50033055412 -2.5002094542 2.093220108
+81 -2.50007568966 -1.5087105342 2.222856128
+82 0.2019219258 -2.5001781654 2.2742338
+83 2.500074618 -0.1030437882 2.239501644
+84 1.306372176 -0.7329475686 2.087233828
+85 -0.9572314386 1.6112582586 2.05661196
+86 0.8603279154 0.9694525734 1.9616903498
+87 -1.4114044692 2.50004378976 1.713374457
+88 -2.5000006182 2.49931211886 2.482805848
+89 -1.020675462 -0.3572734878 2.57123686
+90 -0.4044797454 0.2263507242 2.042403434
+91 -2.50015066302 -0.0762997092000002 2.3660063
+92 2.5000666632 -0.6377540202 3.084536714
+93 1.635820743 0.3998132112 2.232930018
+94 0.787044012 2.3196010806 2.557182368
+95 1.7880996756 -1.270196802 2.779504834
+96 -2.5000149498 0.9308964468 2.36020607
+97 2.50006086 1.4990173908 3.038728388
+98 2.5000002036 -2.0009185842 2.782437742
+99 2.4973597854 0.4018063872 3.102688092
+100 -0.0847238868 1.1548315362 2.230957046
+101 -1.6189831278 0.38758413 2.276164892
+102 -1.3109302698 -1.529630028 3.0261821
+103 -0.8621444616 2.50007941956 2.548976818
+104 -2.5003575921 -2.1906193686 3.043995226
+105 1.737794406 2.50023188418 2.306502354
+106 1.1607421194 -2.5001894034 2.557490476
+107 -0.5515943472 -2.5000711818 3.090821674
+108 0.7581635106 0.305805486 2.70258895
+109 -0.129270348 -0.0804334734000003 2.953362524
+110 1.5702057348 -0.2965035672 2.947395472
+111 -1.5907955166 0.297198915 3.271622288
+112 -1.6352174376 1.2855549804 2.715570616
+113 0.2365862016 -1.5621519012 2.618913636
+114 2.5001485044 -1.4752385472 3.632918874
+115 -2.50003414566 0.7085497368 3.335106492
+116 0.693198909 -0.7706072304 3.02499245
+117 -1.977290892 -0.837825789 2.748661152
+118 -0.0904186877999997 1.9400047344 2.850126046
+119 0.7424979096 1.3708776012 2.869705454
+120 2.5001771184 2.49786273384 2.953357364
+121 -0.460913031 -1.0102788876 3.1107298
+122 -1.5499088826 -2.5003303314 3.035766602
+123 1.0563693948 -1.7172623304 3.2938531
+124 0.4360463934 -2.5001018958 3.246364772
+125 0.0342889535999999 0.8326700802 3.326329174
+126 1.8144590976 -2.498344152 3.31403944
+127 1.4937454758 0.7565635794 3.208225078
+128 1.6727590014 1.420657209 2.482601878
+129 0.9063634374 -0.0106950330000002 3.63948294
+130 1.6212776142 2.0992148076 3.215117466
+131 -0.8136720582 0.7230042144 2.807794018
+132 -1.315108014 -0.6402926916 3.483977248
+133 -2.50004255652 -0.2892251556 3.401060322
+134 0.1195260084 -1.6342581966 3.633549956
+135 0.9584037636 1.636359729 3.809100648
+136 -1.7019079596 2.2670358852 3.038768934
+137 0.4485449298 2.50002773754 3.480648292
+138 -0.5629460556 2.50007656902 3.530567852
+139 -2.068160793 -2.5000301934 3.890959658
+140 1.8860334708 0.0716001041999998 3.821883252
+141 -2.50019618556 1.6650778878 3.043689132
+142 -2.50008791622 -1.2873252654 3.47288578
+143 0.1086245172 -0.5872844136 3.815345888
+144 1.6639765482 -0.932813649 3.712928374
+145 -0.1833273246 -2.5000925064 4.03160142
+146 -0.8962851474 1.5809637768 3.320864614
+147 -0.7169574816 0.1400516334 3.731676664
+148 2.500011852 2.0721063306 3.85816837
+149 2.5001365008 -0.6344300454 4.174079146
+150 -1.7707348866 1.2864253152 3.70626387
+151 1.2513762864 0.7556992416 4.181294142
+152 1.089643938 -2.5001485434 4.002974924
+153 2.50008954 -2.499974847 4.041819504
+154 -1.0940190246 -2.1313022424 3.845642176
+155 2.1776722896 1.0541972718 3.87428099
+156 -0.0395331882000001 1.6972500684 3.823106582
+157 2.5000338774 0.3867181632 4.54549633
+158 2.5001497122 1.3073891742 4.960181558
+159 1.3717521018 2.50027781286 4.096333292
+160 -1.6955078352 -1.3622797578 4.061873346
+161 1.6724483508 1.6405378734 4.508968746
+162 -1.5883062366 2.50004191788 4.004525984
+163 -2.50011644388 0.2717493792 4.23459531
+164 -0.7107997986 -1.1884793388 4.062312162
+165 0.8285435406 -1.2029877876 4.191307692
+166 -1.55143851 -0.0437593109999996 4.25096113
+167 -2.50013461182 2.50003897878 3.594022786
+168 0.0734856906000001 2.50008308844 4.408358144
+169 -0.914548509 1.0255301358 4.152194222
+170 -1.6341264246 -2.500034877 4.79181139
+171 1.4748712236 -0.4511699232 4.568599668
+172 0.1489712184 0.3411368382 4.189539116
+173 1.406735919 0.986367417 5.217013654
+174 0.4877848422 -0.430742853 4.727390504
+175 -2.5000717353 1.7276144418 4.229072872
+176 -1.7937201336 0.8688761202 4.61458745
+177 -2.50005687384 -1.8015027882 4.461473774
+178 -0.8057804424 2.0077339104 4.385534408
+179 -2.5000002933 -0.726109998 4.300541254
+180 -2.2475473872 -1.145362248 5.172585892
+181 -0.5008551234 -0.354949131 4.573265494
+182 0.8966084802 2.50000754118 4.976206068
+183 1.7559791976 -1.7879098968 4.223069524
+184 -0.0969458190000001 -1.2325570164 4.850439668
+185 2.5000228332 -2.5000156716 5.04177638
+186 -0.0943493447999999 1.8364560702 5.137311674
+187 2.500007484 -0.422753251200001 5.151382112
+188 0.4431724908 1.22235765 4.55945736
+189 -0.955181808 1.3287034494 5.104253614
+190 -0.9722254404 -1.7524120296 4.845562498
+191 0.4668761538 -2.0274797958 4.626421886
+192 0.5609288028 0.4537067568 5.188170966
+193 1.5196347156 0.0203280810000002 5.449296672
+194 1.2386247156 -1.5352518792 5.04064475
+195 -1.057892532 0.3365646498 5.033092932
+196 -1.3577205258 -0.8297695788 4.837965486
+197 2.3955945402 0.4951880454 5.534080218
+198 2.1694818594 2.50002353358 4.699335376
+199 -1.7074444422 1.9173469206 4.808416404
+200 2.5000456284 -1.4262992286 4.784752276
+201 0.7982982492 1.698849276 5.566507768
+202 1.5086419476 -2.500001286 4.91091146
+203 -0.5057618832 -2.5000529898 5.318127822
+204 -1.6643472924 -1.859715171 5.559303806
+205 1.7791669638 -0.9293853702 5.624343356
+206 0.4425652998 -1.510152669 5.645313296
+207 0.7376718042 -0.5556371952 5.687557738
+208 -0.3174564174 0.724506156 5.58195597
+209 0.476099514 -2.5000387746 5.50763995
+210 1.7492949126 1.983260724 5.445238122
+211 -0.2060036316 -0.2676090414 5.524777266
+212 2.3083762086 -1.7742526776 5.702449874
+213 1.3510895334 -2.1388098024 5.829978542
+214 -2.1305990952 -0.1588704822 5.057989534
+215 -2.50001512608 1.3339185534 5.148295084
+216 -1.0131713934 2.5000168179 5.230870194
diff --git a/lib/voro++/examples/interface/polygons.cc b/lib/voro++/examples/interface/polygons.cc
new file mode 100644
index 000000000..29174280d
--- /dev/null
+++ b/lib/voro++/examples/interface/polygons.cc
@@ -0,0 +1,107 @@
+// Direct C++ interface example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include <vector>
+using namespace std;
+
+#include "voro++.hh"
+using namespace voro;
+
+void draw_polygon(FILE *fp,vector<int> &f_vert,vector<double> &v,int j);
+
+int main() {
+ unsigned int i,j;
+ int id,nx,ny,nz;
+ double x,y,z;
+ voronoicell_neighbor c;
+ vector<int> neigh,f_vert;
+ vector<double> v;
+
+ // Create a pre-container class to import the input file and guess the
+ // best computational grid size to use.
+ pre_container pcon(-3,3,-3,3,0,6,false,false,false);
+ pcon.import("pack_six_cube");
+ pcon.guess_optimal(nx,ny,nz);
+
+ // Set up the container class and import the particles from the
+ // pre-container
+ container con(-3,3,-3,3,0,6,nx,ny,nz,false,false,false,8);
+ pcon.setup(con);
+
+ // Open the output files
+ FILE *fp4=safe_fopen("polygons4_v.pov","w"),
+ *fp5=safe_fopen("polygons5_v.pov","w"),
+ *fp6=safe_fopen("polygons6_v.pov","w");
+
+ // Loop over all particles in the container and compute each Voronoi
+ // cell
+ c_loop_all cl(con);
+ if(cl.start()) do if(con.compute_cell(c,cl)) {
+ cl.pos(x,y,z);id=cl.pid();
+
+ // Gather information about the computed Voronoi cell
+ c.neighbors(neigh);
+ c.face_vertices(f_vert);
+ c.vertices(x,y,z,v);
+
+ // Loop over all faces of the Voronoi cell
+ for(i=0,j=0;i<neigh.size();i++) {
+
+ // Draw all quadrilaterals, pentagons, and hexagons.
+ // Skip if the neighbor information is smaller than
+ // this particle's ID, to avoid double counting. This
+ // also removes faces that touch the walls, since the
+ // neighbor information is set to negative numbers for
+ // these cases.
+ if(neigh[i]>id) {
+ switch(f_vert[j]) {
+ case 4: draw_polygon(fp4,f_vert,v,j);
+ break;
+ case 5: draw_polygon(fp5,f_vert,v,j);
+ break;
+ case 6: draw_polygon(fp6,f_vert,v,j);
+ }
+ }
+
+ // Skip to the next entry in the face vertex list
+ j+=f_vert[j]+1;
+ }
+ } while (cl.inc());
+
+ // Close the output files
+ fclose(fp4);
+ fclose(fp5);
+ fclose(fp6);
+
+ // Draw the outline of the domain
+ con.draw_domain_pov("polygons_d.pov");
+}
+
+void draw_polygon(FILE *fp,vector<int> &f_vert,vector<double> &v,int j) {
+ static char s[6][128];
+ int k,l,n=f_vert[j];
+
+ // Create POV-Ray vector strings for each of the vertices
+ for(k=0;k<n;k++) {
+ l=3*f_vert[j+k+1];
+ sprintf(s[k],"<%g,%g,%g>",v[l],v[l+1],v[l+2]);
+ }
+
+ // Draw the interior of the polygon
+ fputs("union{\n",fp);
+ for(k=2;k<n;k++) fprintf(fp,"\ttriangle{%s,%s,%s}\n",s[0],s[k-1],s[k]);
+ fputs("\ttexture{t1}\n}\n",fp);
+
+ // Draw the outline of the polygon
+ fputs("union{\n",fp);
+ for(k=0;k<n;k++) {
+ l=(k+1)%n;
+ fprintf(fp,"\tcylinder{%s,%s,r}\n\tsphere{%s,r}\n",
+ s[k],s[l],s[l]);
+ }
+ fputs("\ttexture{t2}\n}\n",fp);
+}
+
diff --git a/lib/voro++/examples/interface/polygons4.pov b/lib/voro++/examples/interface/polygons4.pov
new file mode 100644
index 000000000..ae3ac1475
--- /dev/null
+++ b/lib/voro++/examples/interface/polygons4.pov
@@ -0,0 +1,38 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <30,-50,25>
+ sky z
+ up 0.15*z
+ right -0.15*x*image_width/image_height
+ look_at <0,0,2.8>
+}
+
+background{rgb 1}
+
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.43,0.45,0.45>}
+
+#declare r=0.06;
+#declare rr=0.08;
+
+#declare f1=finish{reflection 0.15 specular 0.3 ambient 0.42}
+
+#declare t1=texture{pigment{rgbft <0.9,0.5,0.3,0,0.4>} finish{f1}}
+#declare t2=texture{pigment{rgb <0.9,0.35,0.25>} finish{f1}}
+
+union{
+#include "polygons4_v.pov"
+}
+
+union{
+#include "polygons_d.pov"
+ texture{T_Silver_4B}
+}
diff --git a/lib/voro++/examples/interface/polygons5.pov b/lib/voro++/examples/interface/polygons5.pov
new file mode 100644
index 000000000..3c0159e3f
--- /dev/null
+++ b/lib/voro++/examples/interface/polygons5.pov
@@ -0,0 +1,38 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <30,-50,25>
+ sky z
+ up 0.15*z
+ right -0.15*x*image_width/image_height
+ look_at <0,0,2.8>
+}
+
+background{rgb 1}
+
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.43,0.45,0.45>}
+
+#declare r=0.06;
+#declare rr=0.08;
+
+#declare f1=finish{reflection 0.15 specular 0.3 ambient 0.42}
+
+#declare t1=texture{pigment{rgbft <0.3,0.9,0.7,0,0.4>} finish{f1}}
+#declare t2=texture{pigment{rgb <0.1,0.5,0.3>} finish{f1}}
+
+union{
+#include "polygons5_v.pov"
+}
+
+union{
+#include "polygons_d.pov"
+ texture{T_Silver_4B}
+}
diff --git a/lib/voro++/examples/interface/polygons6.pov b/lib/voro++/examples/interface/polygons6.pov
new file mode 100644
index 000000000..b70bc0b96
--- /dev/null
+++ b/lib/voro++/examples/interface/polygons6.pov
@@ -0,0 +1,38 @@
+#version 3.6;
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <30,-50,25>
+ sky z
+ up 0.15*z
+ right -0.15*x*image_width/image_height
+ look_at <0,0,2.8>
+}
+
+background{rgb 1}
+
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<25,-12,12> color rgb <0.43,0.45,0.45>}
+
+#declare r=0.06;
+#declare rr=0.08;
+
+#declare f1=finish{reflection 0.15 specular 0.3 ambient 0.42}
+
+#declare t1=texture{pigment{rgbft <0.3,0.7,0.9,0,0.4>} finish{f1}}
+#declare t2=texture{pigment{rgb <0.3,0.4,0.9>} finish{f1}}
+
+union{
+#include "polygons6_v.pov"
+}
+
+union{
+#include "polygons_d.pov"
+ texture{T_Silver_4B}
+}
diff --git a/lib/voro++/examples/timing/README b/lib/voro++/examples/timing/README
new file mode 100644
index 000000000..9afd47aaf
--- /dev/null
+++ b/lib/voro++/examples/timing/README
@@ -0,0 +1,12 @@
+Timing examples
+===============
+These codes and scripts can be used to test the code's performance. The program
+timing_test.cc creates a container with 100000 particles, and then times the
+computation of all the cells in the container, using the dummy function
+compute_all_cells().
+
+The code will compile and run in the usual way, but it can also be tuned using
+the preprocessor macro NNN to configure the grid size. The perl script
+timing_test.pl will compile and run the program multiple times for NNN in the
+range 10 to 40. For each value of NNN, it carries out three runs, and prints a
+mean and standard deviation of times.
diff --git a/lib/voro++/examples/timing/timing_test.cc b/lib/voro++/examples/timing/timing_test.cc
new file mode 100644
index 000000000..d889a240f
--- /dev/null
+++ b/lib/voro++/examples/timing/timing_test.cc
@@ -0,0 +1,60 @@
+// Timing test example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include <ctime>
+using namespace std;
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-1,x_max=1;
+const double y_min=-1,y_max=1;
+const double z_min=-1,z_max=1;
+
+// Set up the number of blocks that the container is divided into. If the
+// preprocessor variable NNN hasn't been passed to the code, then initialize it
+// to a good value. Otherwise, use the value that has been passed.
+#ifndef NNN
+#define NNN 26
+#endif
+const int n_x=NNN,n_y=NNN,n_z=NNN;
+
+// Set the number of particles that are going to be randomly introduced
+const int particles=100000;
+
+// This function returns a random double between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ clock_t start,end;
+ int i;double x,y,z;
+
+ // Create a container with the geometry given above, and make it
+ // periodic in each of the three coordinates. Allocate space for eight
+ // particles within each computational block.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ true,true,true,8);
+
+ //Randomly add particles into the container
+ for(i=0;i<particles;i++) {
+ x=x_min+rnd()*(x_max-x_min);
+ y=y_min+rnd()*(y_max-y_min);
+ z=z_min+rnd()*(z_max-z_min);
+ con.put(i,x,y,z);
+ }
+
+ // Store the initial clock time
+ start=clock();
+
+ // Carry out a dummy computation of all cells in the entire container
+ con.compute_all_cells();
+
+ // Calculate the elapsed time and print it
+ end=clock();
+ double runtime=double(end-start)/CLOCKS_PER_SEC;
+ printf("%g\n",runtime);
+}
diff --git a/lib/voro++/examples/timing/timing_test.pl b/lib/voro++/examples/timing/timing_test.pl
new file mode 100644
index 000000000..f1ff487f8
--- /dev/null
+++ b/lib/voro++/examples/timing/timing_test.pl
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+
+# The range of grid sizes to consider
+@range=(10..40);
+
+# The number of trials to consider. If this is set to one, the time for a
+# single trial will be outputted. For higher values, the mean of all the trials
+# will be outputted, along with the standard deviation.
+$tries=3;
+
+# The flags to pass for code optimization
+$opt="-O3";
+
+foreach $r (@range) {
+
+ # Compile the code with the current grid size
+ system "g++ $opt -I../../src -DNNN=$r -o timing_test "
+ ."-L../../src timing_test.cc -lvoro++";
+
+ # Carry out the trials for this grid size
+ $st=$stt=0;
+ foreach $t (1..$tries) {
+
+ # Run the code, and output the timing information to the
+ # "time_temp" file.
+ system "./timing_test >time_temp";
+
+ # Read the "time_temp" file to find the duration of the run
+ open F,"time_temp" or die "Can't open timing file: $!";
+ ($t)=split ' ',<F>;
+ $st+=$t;$stt+=$t*$t;
+ close F;
+ }
+
+ # Compute the mean and variance and print to standard output
+ $st/=$tries;
+ $stt=$stt/$tries-$st*$st;$stt=$stt>0?sqrt($stt):0;
+ print "$r $st $stt\n";
+}
+
+# Delete the temporary timing file
+unlink "time_temp";
diff --git a/lib/voro++/examples/walls/Makefile b/lib/voro++/examples/walls/Makefile
new file mode 100644
index 000000000..569605fd7
--- /dev/null
+++ b/lib/voro++/examples/walls/Makefile
@@ -0,0 +1,31 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../../config.mk
+
+# List of executables
+EXECUTABLES=cylinder tetrahedron frustum torus
+
+# Makefile rules
+all: $(EXECUTABLES)
+
+cylinder: cylinder.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o cylinder cylinder.cc -lvoro++
+
+tetrahedron: tetrahedron.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o tetrahedron tetrahedron.cc -lvoro++
+
+frustum: frustum.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o frustum frustum.cc -lvoro++
+
+torus: torus.cc
+ $(CXX) $(CFLAGS) $(E_INC) $(E_LIB) -o torus torus.cc -lvoro++
+
+clean:
+ rm -f $(EXECUTABLES)
+
+.PHONY: all clean
diff --git a/lib/voro++/examples/walls/README b/lib/voro++/examples/walls/README
new file mode 100644
index 000000000..8903906db
--- /dev/null
+++ b/lib/voro++/examples/walls/README
@@ -0,0 +1,47 @@
+Wall support
+============
+The structure of Voro++ makes it easy to handle complicated boundary conditions
+by adding in additional plane cuts due to walls. The code has built-in support
+for plane, cylindrical, and spherical walls, and extra ones can be easily coded
+as derived C++ classes.
+
+1. cylinder.cc - this example creates a cylinder wall object, and imports a
+test packing from "pack_cylinder". It outputs POV-Ray files for particles at
+cylinder_p.pov, and Voronoi cells at cylinder_v.pov. These can be rendered
+using the scene file cylinder.pov with the command:
+
+povray +W600 +H800 +A0.3 +Ocylinder.png cylinder.pov
+
+2. frustum.cc - this example creates a frustum by making use of a cone wall
+object. It fills the frustum with 500 random points, and outputs the
+Voronoi cells in gnuplot format. Due to the conical wall being approximated
+with plane cuts, some inaccuracies can be seen.
+
+3. tetrahedron.cc - this example creates a tetrahedron with four planes, and
+randomly inserts particles into it, using the point_inside() function to
+determine whether the points are within the walls. It outputs the particles to
+tetrahedron_p.gnu, and the Voronoi cells to tetrahedron_v.gnu. These can be
+visualized in gnuplot using:
+
+splot 'tetrahedron_p.gnu' with points, 'tetrahedron_v.gnu' with lines
+
+Currently, the curved walls are made by a single approximating plane cut. This
+provides good results when particles are pressed against the walls, but is
+inaccurate it the particles are sparse. It would be possible to improve this by
+approximating the curved surface with a sequence of planes rather than just
+one.
+
+The code currently only supports walls which lead to convex computational
+domains, since a non-convex domain would lead to non-convex cells. To correctly
+handle these cases, the easiest way would be to divide the domain into several
+convex sub-domains, carry out a calculation in each, and then glue the cells
+that cross the divisions. Native support for non-convex domains may be added in
+a later version.
+
+4. torus.cc - this example shows how to create a custom wall object, derived
+from the pure virtual "wall" class. A routine is written that can cut a Voronoi
+cell in response to a torus centered on the origin that is aligned with the xy
+plane. The program writes POV-Ray files of the particles and Voronoi cells, and
+these can be rendered using the following command:
+
+povray +W800 +H600 +A0.3 +Otorus.png torus.pov
diff --git a/lib/voro++/examples/walls/cylinder.cc b/lib/voro++/examples/walls/cylinder.cc
new file mode 100644
index 000000000..0e82d7834
--- /dev/null
+++ b/lib/voro++/examples/walls/cylinder.cc
@@ -0,0 +1,37 @@
+// Cylindrical wall example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-6.5,x_max=6.5;
+const double y_min=-6.5,y_max=6.5;
+const double z_min=0,z_max=18.5;
+
+// Set the computational grid size
+const int n_x=7,n_y=7,n_z=14;
+
+int main() {
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Add a cylindrical wall to the container
+ wall_cylinder cyl(0,0,0,0,0,1,6);
+ con.add_wall(cyl);
+
+ // Import the particles from a file
+ con.import("pack_cylinder");
+
+ // Output the particle positions in POV-Ray format
+ con.draw_particles_pov("cylinder_p.pov");
+
+ // Output the Voronoi cells in POV-Ray format
+ con.draw_cells_pov("cylinder_v.pov");
+}
diff --git a/lib/voro++/examples/walls/cylinder.pov b/lib/voro++/examples/walls/cylinder.pov
new file mode 100644
index 000000000..d880e611c
--- /dev/null
+++ b/lib/voro++/examples/walls/cylinder.pov
@@ -0,0 +1,35 @@
+#version 3.6;
+
+// Right-handed coordinate system in which the z axis points upwards
+camera {
+ location <20,-50,30>
+ sky z
+ right -0.4*x*image_width/image_height
+ up 0.4*z
+ look_at <0,0,9.25>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<20,-15,5> color rgb <0.38,0.40,0.40>}
+
+// Radius of the Voronoi cell network, and the particle radius
+#declare r=0.08;
+#declare s=0.5;
+
+// Particles
+union{
+#include "cylinder_p.pov"
+scale <1,-1,1>
+ pigment{rgb <1,0.95,0.5>} finish{reflection 0.1 specular 0.3 ambient 0.42}
+}
+
+// Voronoi cells
+union{
+#include "cylinder_v.pov"
+scale <1,-1,1>
+pigment{rgb <0.5,0.8,1>} finish{specular 0.5 ambient 0.42}
+}
diff --git a/lib/voro++/examples/walls/frustum.cc b/lib/voro++/examples/walls/frustum.cc
new file mode 100644
index 000000000..925ded31f
--- /dev/null
+++ b/lib/voro++/examples/walls/frustum.cc
@@ -0,0 +1,49 @@
+// Frustum example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+const double pi=3.1415926535897932384626433832795;
+
+int main() {
+ int i=0;
+ double x,y,z,evol,vvol;
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block.
+ container con(-1.2,1.2,-1.2,1.2,0,1,14,14,7,
+ false,false,false,8);
+
+ // Add a cylindrical wall to the container
+ wall_cone cone(0,0,2,0,0,-1,atan(0.5));
+ con.add_wall(cone);
+
+ // Place particles in a regular grid within the frustum, for points
+ // which are within the wall boundaries
+ for(z=0.1;z<1;z+=0.2) for(y=-0.85;y<1;y+=0.2) for(x=-0.95;x<1;x+=0.2) {
+ if (con.point_inside(x,y,z)) {
+ con.put(i,x,y,z);i++;
+ }
+ }
+
+ // Output the particle positions and Voronoi cells in Gnuplot format
+ con.draw_particles("frustum_p.gnu");
+ con.draw_cells_gnuplot("frustum_v.gnu");
+
+ // Output the particle positions and Voronoi cells in POV-Ray format
+ con.draw_particles_pov("frustum_p.pov");
+ con.draw_cells_pov("frustum_v.pov");
+
+ // Compute the volume of the Voronoi cells and compare it to the
+ // exact frustum volume
+ evol=pi*1*(0.5*0.5+0.5*1+1*1)/3;
+ vvol=con.sum_cell_volumes();
+ printf("Exact frustum volume : %g\n"
+ "Voronoi cell volume : %g\n"
+ "Difference : %g\n",evol,vvol,vvol-evol);
+}
diff --git a/lib/voro++/examples/walls/frustum.pov b/lib/voro++/examples/walls/frustum.pov
new file mode 100644
index 000000000..b4b7a2b6d
--- /dev/null
+++ b/lib/voro++/examples/walls/frustum.pov
@@ -0,0 +1,35 @@
+#version 3.6;
+
+// Right-handed coordinate system in which the z-axis points upwards
+camera {
+ location <20,-50,30>
+ sky z
+ right -0.3*x*image_width/image_height
+ up 0.3*z
+ look_at <0,0,3>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-8,-20,30> color rgb <0.77,0.75,0.75>}
+light_source{<20,-15,5> color rgb <0.38,0.40,0.40>}
+
+// Radius of the Voronoi cell network, and the particle radius
+#declare r=0.025;
+#declare s=0.1;
+
+// Particles
+union{
+#include "frustum_p.pov"
+ scale 10
+ pigment{rgb <0.4,0.85,0.95>} finish{reflection 0.1 specular 0.3 ambient 0.42 metallic}
+}
+
+// Voronoi cells
+union{
+#include "frustum_v.pov"
+ scale 10
+ pigment{rgb <0.5,0.5,0.51>} finish{specular 0.3 ambient 0.42 reflection 0.4 metallic}
+}
diff --git a/lib/voro++/examples/walls/pack_cylinder b/lib/voro++/examples/walls/pack_cylinder
new file mode 100644
index 000000000..03ca8aefe
--- /dev/null
+++ b/lib/voro++/examples/walls/pack_cylinder
@@ -0,0 +1,2300 @@
+27 -4.82756807832 2.6359046352 1.36596377715
+8 -2.4000578652 1.3234302624 0.49927231629
+7 1.5086870196 -3.2432993736 0.499689806
+6 -1.5135912696 -4.4558817888 0.4995967223
+5 5.044296732 -2.1923010072 0.49923775718
+1 -0.5210734944 -4.5739418232 0.49954443708
+3 -4.2865799892 -3.4461795972 0.49977831224
+2 -0.533211255599999 5.47425601788 0.49973963199
+30 -4.5685881228 3.0624931488 0.49960011401
+11 3.5600928072 -4.1927254572 0.49977450203
+14 1.431874878 4.30573422 0.49942347601
+15 -2.377025352 -4.9599437592 0.49996009035
+16 -1.1346964632 -5.3816793432 0.4999606871
+12 2.6972184288 -3.6879129636 0.49897738198
+13 -5.49711132096 -0.1748429076 0.4995971284
+10 5.4003534468 -1.0368854544 0.49997381994
+17 2.3065028112 2.796064434 0.49997891417
+18 -4.5818936436 0.3106536048 0.49865922371
+19 -3.566639658 1.2211741248 0.49981849568
+40 3.3543153564 -1.4810292192 0.49942306619
+20 -3.6969162192 -0.154071994799999 0.49897073868
+24 0.4664313852 5.48039771076 0.49947573922
+31 0.1718622348 -4.5174163908 1.2177012691
+22 -4.0477431864 2.2014673788 0.49935606558
+23 2.9198698296 -2.381634162 0.49984508221
+21 -2.4495878352 3.8727044412 0.49956240902
+28 4.4584696272 -1.3819037604 0.4991401605
+35 4.086949974 3.6813563748 0.49981000664
+36 5.4709065324 0.5634425736 0.4996995369
+34 3.1501522728 3.3326422824 0.49936706035
+33 -4.4409467472 -1.6968773904 0.49985364813
+29 -3.0248734668 -1.9645869336 0.4997169434
+32 -1.51526622 5.28821715288 0.49974111968
+39 1.4507837688 5.305433001 0.49947581021
+25 4.5595061676 -3.0761306052 0.49976594231
+43 -2.4459917916 2.8728600036 0.49969120596
+41 -3.2866393056 -3.4495218012 0.49946366875
+44 -3.6042616548 -1.1495549532 0.49945708125
+42 2.7751255716 4.6230224892 1.36099863704
+37 0.447696708 4.4806850664 0.49940851944
+9 -0.5424095028 4.3425877224 0.49926750912
+49 0.8559951816 -5.4331006164 0.49954581534
+53 4.4876725908 0.933718145999999 0.4999590472
+45 1.82545941 -5.18861712 0.49955298471
+50 4.6858566612 2.88066954 0.49981951279
+62 5.2792122504 1.544618088 0.49950952395
+47 -1.7684627088 -5.207931894 1.25369791017
+46 -4.84010848188 -2.6135531448 0.49939133862
+52 1.0271822136 -1.563843318 0.49951012938
+54 2.695085616 -4.6949383824 0.49982101288
+51 4.3593919944 1.9360309128 0.49929595441
+59 -0.1950969396 -2.6245866528 0.49969461503
+57 -1.5407953248 4.289523528 0.49968389027
+38 5.49557724 -0.237633804 1.09707805012
+60 2.3872730904 4.9551357822 0.4998092676
+58 2.3684334096 3.9556374312 0.49902204709
+63 -0.602786716800001 -5.1479641632 1.31422721654
+55 -4.5625757352 1.3105017888 0.49984441354
+56 3.6523409868 0.384218219999999 0.49972374263
+61 4.098634566 -3.669256092 1.15970956786
+68 0.862766922 -4.4331339744 0.49987038751
+64 -5.437868595 0.8270015568 0.49964187473
+4 2.2926488064 -4.999477056 1.36302338065
+71 -2.788245306 -0.571576632000001 0.49985306006
+69 2.2967880456 -2.9479757076 1.03904322354
+65 -2.4468731016 4.92590615124 0.49948549988
+67 -3.298127562 4.4015486208 0.49970708509
+72 -1.0056730752 4.83882709692 1.2332740726
+66 1.440160578 3.3058394652 0.49988872122
+70 -5.34931126176 -1.2790430904 0.49977866967
+78 -0.397436432399999 -0.7296489552 0.49965853041
+74 -3.2358617592 -4.4479638108 0.49897979781
+76 -0.53480838 3.342755196 0.49909382139
+79 -1.24224639 -0.194837272799999 0.49990716002
+26 0.00459517800000064 -1.6450517712 0.49904925362
+75 -5.04754060068 2.1849766164 0.49963143269
+77 0.502700216400001 -3.4967203788 0.49957286935
+80 -5.45195624064 -0.7306245972 1.32932876734
+73 1.3461158376 -5.3329439964 1.36498047668
+48 3.247140606 4.4394042204 0.49914342139
+90 -0.00115514520000026 -3.5432784912 1.3618421272
+89 -0.141563204400001 -5.4986024532 0.49946617417
+85 -1.9871167932 5.12848792728 1.36679907959
+82 -3.4434939444 3.001800936 0.49935790667
+86 -3.7938110028 -3.9823203984 1.18476002368
+84 -5.49027274164 0.3271287204 1.36431641917
+88 4.7031910944 -0.118489278 0.499210794
+81 -4.5415567272 -0.6895133916 0.49967516718
+83 -2.9117331312 0.464714562 0.49962217268
+87 -4.5165308328 -2.033675808 2.01554341264
+97 3.160815924 -4.5010972656 1.36316692026
+98 3.420724812 2.3705728788 0.49927456565
+95 3.7827259008 1.9221847224 1.31538491867
+91 3.9814258164 -2.2603474992 0.49890585413
+93 2.433031926 -1.0811594148 0.49973107196
+99 3.546777 -3.16065042 0.49937608941
+92 3.827386668 -0.6004387956 0.49959285505
+94 -4.6006070772 0.8091428136 1.36409582162
+96 1.5081569664 2.1941461656 0.49960771242
+104 -5.12792975424 -1.9905007812 1.22593051267
+105 5.2536543864 -1.6276265352 1.2971535003
+107 -3.8436063444 -2.5384589436 0.49926873889
+103 -3.3612479772 -2.8686439152 1.30941990456
+108 4.8227682372 -2.6445842328 1.3624791245
+106 -1.4402386044 2.2958820912 0.49839057492
+101 4.8027084144 0.448941183600001 1.31594505519
+100 0.0832429727999999 1.8653360028 1.20282985889
+102 -2.8196694024 -4.722307206 1.3650639386
+111 -0.0336743843999994 5.50034896428 1.36516501503
+115 -2.4289625928 -2.93540721 0.49951251824
+109 -1.5375191244 3.2903701596 0.49947813087
+110 1.7748553764 -1.3510269684 1.20245800118
+113 -0.5062943988 -3.5745193608 0.49960521816
+114 0.9107915016 0.5191577748 0.49969907159
+117 3.903442698 0.9275476824 1.31150913344
+112 -2.3723475504 -3.9437455176 0.49943089276
+116 -0.9640980384 -4.0676030712 1.23937176888
+125 5.0276712984 2.2305449436 1.18211679163
+124 4.5660467652 1.7053890612 1.89686105964
+123 -0.872995056 -3.05693658 1.27224623813
+119 0.358410514800001 -5.4885662976 1.36496452191
+121 1.5125843016 -0.689559832800001 0.49993109636
+118 -5.28652871556 1.5186476076 1.20532571911
+122 1.048914054 2.0564809464 1.37672842981
+120 3.5312505984 1.3767645792 0.49932782582
+126 -4.3558708512 -2.7778018116 1.35872844938
+130 -0.872997444 0.7791336948 1.17351350609
+128 2.8107586128 -0.1554327816 0.49968638794
+133 -4.6929062544 -2.8691168388 2.53529152622
+127 -1.4992386588 -3.4560395112 0.49974585121
+131 0.697119279600001 1.4960777856 0.49997381994
+129 -3.055177572 2.0803141164 0.49960738785
+135 0.455587444799999 3.4807688424 0.49992904726
+132 -5.49566497992 -0.2308563756 2.19414111608
+134 2.6896432944 0.8374566204 0.49853372393
+137 -1.1877292944 -2.5058956296 0.49966055161
+139 -0.4387804356 2.347599666 0.49959802461
+143 -4.5488174196 -1.1881353036 1.36625492667
+140 1.8324896328 -4.1890699884 0.49947127181
+141 1.9266317904 5.15174784948 1.36510156051
+142 0.551348601600001 -0.4139517396 0.49953227888
+138 -4.3271050032 1.7706295512 1.35756165712
+144 1.8907375404 0.2361326424 0.49974568257
+136 1.902126312 4.1353882584 1.36468467344
+153 -0.0598663871999996 4.501244118 1.36022244509
+145 -1.4006105616 1.296082662 0.4996490906
+150 -4.3169057136 3.4087064124 1.74212007022
+151 2.806321836 2.4047528928 1.28751044934
+152 1.9833437976 -2.031119316 0.49978484642
+149 3.8266987896 -2.7299921844 1.36725943641
+148 0.8007283728 -2.5375973052 0.49952119948
+146 -3.9899923752 3.7856097816 0.87554314661
+147 2.9451378168 1.3763042148 1.30878411626
+155 -2.0251179648 -1.959903534 0.49928359781
+161 -3.8969797644 2.1252665868 2.21073580823
+158 -5.1267170916 1.9923659664 2.0708384462
+157 3.9273318372 2.937547962 1.14863016538
+160 0.96247338 5.41557453072 1.36482110103
+159 4.6240377504 -0.2246701092 2.09832625718
+156 1.768537956 1.228639272 0.49997381994
+154 -2.0012888244 4.0936608012 1.36540092875
+162 -1.99720002 3.0937508064 1.36525680913
+165 -3.0179912064 3.5186228568 1.2417681501
+166 0.551607378 2.4854378424 0.49995843464
+170 -2.8823071512 4.6828327152 1.36545201365
+164 -0.402103092 1.3473120336 0.49900208991
+168 -2.1616587228 2.0484558936 1.1442461026
+163 5.435289408 -0.8433013596 1.88980635926
+171 -0.9159294372 1.8288736128 1.20843842725
+169 1.7213414928 2.7932848488 1.31104420381
+167 -3.7166002392 -0.634411801200001 1.37478557735
+178 -0.3089733132 0.3030984816 0.4991428544
+176 -4.6119128292 -0.1903221552 1.36313818388
+177 4.6631031048 -0.766683754800001 1.25936314126
+173 -1.9445212416 0.470277048 0.75318836528
+174 -4.2061476408 -3.54472515 1.98274942993
+172 -3.6496356204 0.534825432 1.22198755571
+175 2.5773705144 1.8334495908 0.49938075212
+179 0.416929973999999 -2.0780282424 1.30013824199
+180 -3.8515894284 -1.9119294024 1.27849508607
+184 3.1429947804 -3.4594413096 1.36358969795
+183 -1.0339594368 -1.51752147 0.49970668612
+188 -3.8000623524 2.6425129356 1.36123336067
+181 2.1708131832 -0.432935113200001 1.21599851257
+189 3.9494509776 -0.0710126124000006 1.33878125045
+186 -2.5226460264 -2.3250859812 1.28589564415
+185 -1.2167373696 -5.3639376492 2.07317359932
+182 2.2984654368 -3.9948973824 1.36291894537
+187 4.6736475612 2.8995492696 1.83535760586
+191 -1.010847276 2.8392419844 1.21957180476
+197 -2.7369681132 0.9429092916 1.3602446817
+190 5.351976558 1.2713695236 1.45810141202
+193 0.9412388064 3.4159357536 1.37160729491
+192 -0.6453649248 -0.1876316532 1.30230127908
+198 -1.8718401696 -0.9717365196 0.49991744954
+195 3.4873520712 3.8628563124 1.27915891356
+196 -4.6078308108 -0.689468342400001 2.23085254275
+194 4.0425999732 -2.2790970156 2.23266866876
+207 2.7037052532 -1.7204988888 1.21910154158
+203 -1.0158183432 3.8390841984 1.22154449131
+201 3.9274563816 -1.6628025144 1.29832836093
+202 1.3157544276 0.0782366652000004 1.30215768832
+200 -1.955005674 -4.2201106452 1.36495530623
+206 1.5289789068 -0.6524938572 1.95061325358
+205 3.7446103488 -4.0283973168 2.02316213694
+199 -2.8351577772 2.6118944556 1.62134719068
+204 3.1100421468 -0.8070722196 1.19660183427
+209 3.057941316 0.379956565200001 1.30708885336
+210 -4.4376700104 1.284977994 2.22735015531
+216 2.4731611764 3.8809714296 2.14480749226
+213 0.3454701948 2.667260838 1.73907596694
+212 0.942378831600001 4.4159014836 1.36589443387
+214 -2.8515921372 -0.0532938180000002 1.35255688909
+215 2.7355803732 0.846698122799999 2.13011203154
+208 -0.228724741200001 -5.4952505316 2.17412607458
+211 1.3575650772 -4.333273902 1.3668409888
+220 5.4938874228 0.2612049552 2.0137384364
+221 -2.2385601408 -5.023980006 2.1200146762
+217 -3.02440599 -1.350086298 1.288265574
+219 0.857345478 -0.9609619512 1.27829017235
+225 -1.7519513424 1.1818536372 1.4287711086
+222 1.1749504452 1.0684628424 1.29207044146
+218 -0.1196082228 -1.1548809912 1.36091898192
+223 1.4593594716 -2.4421987776 1.24560109302
+224 1.0118831868 -3.3952775328 1.35399504884
+226 0.3436915008 -0.116950758 1.4313733912
+233 2.008965126 1.7834547972 1.32016668727
+231 -0.7339399848 4.2911698596 2.06761656009
+227 -0.0551330172000002 4.4463328152 2.7853405977
+228 -4.6554485628 0.3093350568 2.22774097882
+230 -0.0550007399999997 3.5017055124 1.36136731756
+229 -1.2697299456 5.35190032116 2.04967810939
+232 -0.47031081 -4.4863846728 2.05220208599
+234 0.2068478196 0.8753660796 1.13611256967
+236 -0.5894948196 -2.0520951096 1.21834833179
+239 2.538833652 3.3682971396 1.28930115287
+240 0.855588987600001 -5.4333798876 2.23040563807
+243 -0.890131011599999 -3.581541768 2.12307506905
+238 2.909652186 -2.5573974336 1.72522594907
+235 -2.8431379236 -3.7226819532 1.35295873465
+241 3.2864796264 3.1037571948 1.89759522799
+242 -2.0335882296 -1.4565340692 1.3626488743
+237 -5.31160311048 -1.42767228 2.03170450996
+250 -1.9784100996 -3.2206140936 1.34504265835
+251 3.7134363384 -0.7880345688 1.99377487536
+252 2.73438735 -4.772814852 2.23077303922
+248 -0.2706715368 0.4956799584 1.9279484877
+249 3.9042288216 2.3842543032 2.21321449662
+245 -0.149934394800001 -2.6863909188 1.85491994754
+244 -3.417664638 3.2345041464 2.14314502054
+246 -1.062272922 -2.603777562 2.25534941607
+247 -1.5317839056 -2.3194336032 1.41968695509
+256 -3.8130706068 -1.3273389696 2.08875130671
+261 2.3526627456 2.805436206 2.09399202659
+260 5.0396633196 -2.2051101216 2.23360357296
+255 2.4197919132 -1.1067318396 1.95567464404
+253 -2.6316159852 4.83012934872 2.32178965209
+258 -1.9039853364 -0.368200935599999 1.29653987049
+257 2.075338176 -2.04498441 1.92557871223
+254 -3.4372393224 1.0210240656 2.06953806843
+259 1.3756012068 5.32538993604 2.2707710056
+263 5.3267556588 1.3699455516 2.45233707095
+264 -3.3285748452 1.7614452216 1.4066580398
+265 1.5980992704 4.3508560008 2.29194342807
+270 4.4930702316 -0.8287895316 2.88418246772
+262 4.4177785272 -3.2769427248 2.02220902613
+266 -5.4026830776 1.0300929312 2.06999499603
+268 -4.7000576736 -0.1856543268 3.09456191366
+267 -3.4177610844 -4.309167132 2.05177734972
+269 1.8251303004 -5.1887924988 2.23033614661
+271 3.4846217712 -3.1025679384 2.33463088222
+279 3.6351997476 0.3925418868 2.16720973309
+277 0.83908206 -2.6529511476 2.00088601868
+275 -4.0959592716 -3.6717435444 3.8118285844
+274 -1.57273014 2.3565288396 1.89076131271
+273 0.6712923096 -4.46205687 2.0818142535
+272 3.3511631736 4.361357274 2.13515955384
+276 -2.442331584 -4.0278065412 2.21639424629
+278 -1.4540670048 -4.4025021492 2.2107756702
+284 -1.701986862 4.471045632 2.24143583208
+288 4.5618933912 0.763986864 2.23370542656
+287 2.1346131144 0.791440752 1.32774113272
+282 4.0884180552 3.6794034348 2.05661075936
+286 -3.7695143388 -2.6721992736 2.20035734086
+285 1.842167862 -4.189240098 2.23110114198
+281 -2.7606289392 -3.049342614 2.08725776174
+283 0.841347582 0.520981020000001 2.06271740038
+280 -3.0309122412 -0.692990071200001 2.09952355437
+291 -5.4202375224 -0.9358993092 2.89912558031
+294 -3.0126152208 2.4057005232 2.58344262621
+290 -3.9324084144 -1.9775794284 2.90058427322
+297 -3.8789408316 -3.8999365584 2.85778498719
+292 1.0673956488 -3.5664003036 2.33752619449
+296 -2.1073301364 -2.3076892296 2.23727002604
+293 0.408518988 -1.1009302152 2.20767916297
+289 -0.361965094799999 -1.7345800176 2.13870472345
+295 1.9138705704 -3.2434883544 1.91423834958
+298 -0.8821214292 1.2778657704 2.0399488806
+300 -3.6286477704 4.1335744812 1.74012226716
+304 -3.0573086616 -1.9849902012 2.05924001692
+301 4.9938736068 2.3050632588 2.57283223761
+299 1.5249551112 3.3596733396 2.18156816956
+302 2.3946682224 4.95154580544 2.22528432275
+305 1.9273434432 5.15150907156 3.08622096345
+303 -4.719545772 2.8244606268 2.44624179856
+306 -1.1145822024 -1.0657626564 1.38800616874
+309 -5.11916361924 -2.0111100996 2.82009857456
+313 4.5247555296 -1.3698546192 2.0443769609
+310 0.469655009999999 3.9268919352 2.09877983554
+311 -1.5588018456 -0.6610335876 2.1881697572
+312 -2.2706193216 0.379240032 2.04192532559
+315 -0.563590356 -0.7546083624 2.16229150466
+308 1.9192050408 0.2698368924 2.15202616559
+307 5.4859615128 -0.396388039200001 2.78255972472
+314 -2.6346565872 3.8549750628 2.10167049006
+321 -5.28684590328 1.5169619916 2.93561922082
+318 -1.9610308836 -4.2617678184 3.06094724563
+323 -1.2844219176 0.2636802552 1.92472373936
+319 0.5349592956 1.4707702944 2.00296748702
+320 -0.580296174 2.4022866192 2.00874916341
+317 1.1363387904 -1.70519568 1.88536963585
+322 0.2404404576 -0.156324055199999 2.48694495325
+316 1.0834099692 1.1231302776 2.87614050631
+324 -1.8001799388 1.1975419752 2.42728709129
+331 -4.2599321772 1.7146014984 3.1120145553
+328 -0.2035883616 1.7161472388 2.63041933274
+333 -4.467269046 -1.157885238 3.1029476164
+326 1.547912652 2.2272211608 2.22613661319
+325 2.7513986544 -3.773660766 2.22724611993
+330 1.7168032416 1.2483172668 2.11268091041
+332 -1.8136099236 -3.2589951312 2.33009811244
+327 4.6915947636 -2.8703780664 2.8937799183
+329 -1.3579526904 -1.6501963008 2.16186319254
+342 1.529480604 -2.4000431388 2.68398565812
+337 -5.47924018452 0.477430464 2.89985355114
+334 -1.4349020772 3.5226523992 2.07199888253
+338 -0.3180931632 5.49085150752 2.32339775849
+336 3.26436687 -1.6795567536 2.04607664564
+335 2.2612405392 3.3212833704 2.94557207989
+340 2.8405641552 -0.208939669199999 2.0850166248
+341 0.0770345472000002 -3.7027078872 2.34568226938
+339 -2.9469292344 -3.5471037444 2.93328036351
+347 5.470444284 0.570734134799999 3.03569257669
+344 -2.5365148044 1.73422788 2.01616892289
+348 -1.3771354224 2.9230015812 2.86944645528
+350 5.3239434168 -1.3819464528 2.72422991361
+349 -0.4399231044 3.3579436236 2.27277829838
+346 -3.4855023924 -0.426296986800001 2.94905207603
+343 2.2478880396 2.2904125884 2.94452601589
+351 1.720606968 -1.419310062 2.6448338448
+345 2.59799016 -1.88445054 2.76233631269
+354 4.5082232568 3.1506055116 2.79399367048
+352 1.3456684248 -5.3325749184 3.09578224354
+360 -3.9551690424 0.6639556104 2.84652229256
+356 0.144095808 0.7921371432 2.78784874446
+355 1.2082654368 -0.1218089376 2.73497589063
+353 0.4766566428 4.92670411992 2.08847979724
+359 -2.291587764 -1.3284656796 2.31966102748
+357 -2.2277362008 2.9707846788 2.33022980416
+358 3.5748151272 1.3901770224 2.13510112938
+364 -0.707228135999999 0.0644748503999999 2.7173836098
+369 2.4541719372 -4.0177001352 3.1497738666
+361 3.424961574 -0.4076072328 2.8716068149
+362 -4.1536882776 3.6056150808 2.70867196283
+363 -4.80782818992 -2.6711034948 3.5085301675
+367 3.5120096328 3.7064669592 2.87315565116
+366 4.2570666192 0.1405244676 2.95364581971
+365 0.4564060908 -1.996156482 2.64992254719
+368 4.5138869928 -1.886629404 3.0220635386
+375 -3.6941447796 0.0551835503999998 2.09801131423
+378 -0.2089497144 -1.1918788572 2.98865209262
+374 -1.6708368324 0.298995117600001 2.84595727447
+373 3.3611053332 -4.3535025612 2.88756220118
+371 0.5115784656 3.082756866 2.63281312763
+376 -0.708132132 -5.1295842672 2.97161552213
+370 -1.594846458 -1.2073333236 3.02633215738
+377 2.1401401848 -0.5155896852 2.72916257874
+372 2.548431708 -2.87004363 2.60292344161
+387 -0.96515079 4.85354259348 2.86113458617
+383 -3.4052538156 4.3191571992 2.69620409453
+385 2.3084828808 1.2912922296 2.91725368281
+381 0.3355637676 -5.4901181172 3.08218871192
+379 -1.1704614252 1.9572914352 2.71381294765
+382 3.631775334 0.9219069372 3.01605966537
+384 2.2890694596 -5.001878664 3.09596916207
+386 -2.0199178212 3.775569492 2.88621973502
+380 3.6586002516 -1.3789826676 2.91451040353
+388 -3.9098706756 -2.9448159684 3.1519543074
+390 -0.347032234799999 5.48950829604 3.3225652781
+392 -3.0368194008 -2.5307191308 2.89632070992
+393 4.0943600124 -3.6723699444 2.88963072175
+394 -2.9931233676 0.4165825032 2.73210726812
+391 -1.9147619784 5.15652895416 2.93740950089
+389 -2.6622755208 -0.923480602800001 3.5901525754
+395 -5.49354789672 -0.2726597148 3.6963309854
+396 -2.863522602 -4.6963537956 2.82848596463
+397 -0.2263844388 -2.8839316092 2.83192255953
+398 -0.814798506 1.017054948 3.00140015411
+405 -1.0239347268 3.8569724472 2.92007685653
+399 2.5987774608 1.8369786612 2.12562959646
+401 -2.151933378 2.0061584928 2.8988580221
+402 0.752140129199999 -2.9221855968 3.03433372021
+404 1.1640413592 -4.3607475612 2.9455884947
+403 3.1034798424 2.7950040792 2.83036014279
+400 5.2483774092 1.6460082468 3.4096754517
+408 -2.3400325104 -0.440351228399999 2.77644316308
+407 -3.1485277056 -1.3605749604 2.83446549914
+413 4.164449286 3.5929220628 3.6221805943
+411 4.9142379276 -0.2612438892 3.5913098023
+409 2.7689484372 4.3828558356 2.95702132353
+412 -3.2995240056 1.498475034 2.93703171939
+406 -2.3474319888 -1.8582903108 3.1653520765
+410 -0.734077224 -2.0422176708 3.01438394611
+414 3.1661207844 1.8041693016 2.94822527968
+420 -1.7017769736 -5.2304161704 2.93723427587
+418 -4.7095583676 0.8925373836 3.4611242793
+417 -1.5905436588 4.4158564524 3.5251982351
+422 0.0943170683999996 -4.5383094696 2.89441426448
+416 -0.4218662724 2.6392609332 2.96724255983
+423 1.7553015228 -3.3149197428 3.01813388715
+421 -2.424662994 1.0926152988 3.2008971012
+415 3.9362840376 2.3844769164 3.2121713145
+419 3.4313009328 -2.3745506028 3.01790900757
+425 1.3978021872 2.822130396 3.01563535225
+427 -0.0926380895999994 -0.297003651600001 3.4188743483
+424 -5.26223888424 -1.6005494604 3.7199373955
+431 0.917291629199999 4.5381344484 2.99946103436
+426 -4.94386940184 2.4107782392 3.328222
+429 2.7032312388 0.279557846399999 2.95217546739
+430 1.4457833676 1.8978980844 3.394023468
+428 4.4170347972 1.5227327568 2.86828052079
+432 -3.0767690448 2.2417755864 3.5674623889
+440 2.7782207904 -1.0498581924 3.2820342134
+435 -3.0549023688 3.4516792704 3.04933126322
+434 -3.7889137068 3.9870021828 3.5573525356
+437 1.5070787496 0.2211633312 4.1710997829
+439 -0.124749721200001 3.558509676 3.2394751287
+438 -2.7535669248 4.761376626 3.3115900536
+441 -2.2661744964 2.90318292 3.3268325986
+433 0.9075574236 -1.0141853736 3.06966678985
+436 4.9711268268 -1.2577377624 3.6505852836
+442 -2.1875855544 -2.9568296964 3.2066134268
+446 0.1478309052 -2.2993124592 3.5509753613
+443 -0.8192776404 -4.1360359416 2.95206704427
+449 -4.2990779688 -1.8485832696 3.8218945138
+447 3.19630365 -3.3563940408 3.2573371799
+445 4.866669786 2.563531998 3.5302232142
+448 -0.6124008444 1.8384118572 3.5342801656
+444 -1.5154815924 3.4371023244 3.7159132173
+450 0.6979675776 0.3157263996 3.4747979794
+457 -0.333232564799999 -5.4906028524 3.8249722155
+451 -2.1318107388 -0.036793276800001 3.6673707234
+453 2.5084591932 -2.7107798616 3.5885577804
+459 -1.6419848856 -3.408087042 3.9120727481
+452 0.5683385724 5.47138440084 2.92141914847
+454 -3.6428770728 -1.1054086572 3.6659280981
+458 3.7423493268 -4.030680594 3.7542823234
+456 -1.5353715816 -2.2867184712 3.5602081471
+455 -0.2135797932 0.6514393836 3.7107409076
+463 3.9853522416 -0.6087809892 3.7166656555
+462 1.3842769896 -5.3235122556 4.0944646519
+464 -1.2713420136 5.3512026126 3.677587877
+461 -3.3248448192 -2.0514159672 3.7251429062
+465 1.0695461952 -1.9295242572 3.4366898158
+468 4.3265160336 1.7042987988 3.8469344383
+466 -3.2251508868 -0.380379852000001 4.2129878416
+467 -4.585726278 -0.6644824884 3.9645413765
+460 0.7071566088 2.109739002 2.75416785764
+471 3.4467213456 4.2863960412 3.6849881784
+474 -3.8552264868 2.628178182 3.07308894774
+469 5.4567317772 -0.690051951600001 4.3147191125
+475 -3.3814022688 -4.3392389472 3.6055760643
+470 -1.8858731184 -1.437394968 3.9546935693
+477 0.9089210712 3.6142715796 3.3805578275
+472 -5.2421242266 1.6647929772 3.9234640918
+473 -1.144886454 -3.1980188256 3.07069085904
+476 0.332242108799999 -1.3530683136 3.8139287321
+486 -1.3208388936 -5.3391739788 3.8551703168
+479 4.66570191 0.801909852 3.5821948661
+481 0.328788915600001 1.5098906304 3.4589348764
+482 1.7793682596 0.513103308 3.2547240411
+485 -1.5442500648 1.4771566584 3.5068089638
+484 1.4766213816 -2.7646903428 3.8054953898
+483 2.9607455592 3.4130822436 3.6540886711
+478 -0.654942792 -3.5627488812 3.9418373578
+480 -3.9346796472 0.0988683168 3.6711506309
+487 1.1766310836 5.37276156384 3.7083644197
+490 -3.767981232 1.0986372888 3.7266935479
+492 2.6240845452 4.83379671528 3.8374518514
+489 0.149761229999999 -3.6527826684 3.3553469256
+491 -0.8811510504 -1.3429252332 3.7133830066
+494 2.9508394488 -4.6414893636 3.7531329054
+493 5.4832559016 0.43583973 4.0264132256
+495 0.397739698800001 2.6754799128 3.538898992
+488 1.1229719436 1.1072210352 3.9135534073
+502 4.4100981036 -3.2865825276 3.7581621067
+498 -1.1655754452 -0.41746146 3.4638780279
+503 1.7542235064 -4.462672266 3.745981999
+496 4.0030056492 -1.601610534 3.8326508132
+499 -1.38397155 2.438564754 3.7435174556
+501 3.3551269236 1.468191474 3.8705637109
+504 -2.3566699224 -4.9696493388 3.6458985362
+497 -2.4160893576 -2.3024151072 4.0581440475
+500 -2.455438608 3.9264193944 3.7735962906
+512 2.0505046416 -1.8224117004 3.5962227474
+506 3.1016753268 2.428931592 3.7604097989
+511 -1.2882709476 0.5359475028 3.7384145332
+507 1.8279803412 4.1700258504 3.2478289715
+509 -4.4480417628 3.236532948 3.5993410312
+513 2.5050539064 -0.2320069116 3.7880822248
+510 0.650872311600001 -4.7699317368 3.6999851197
+505 1.096935336 -3.6805853748 3.6754151397
+508 -2.9945781708 0.4647911124 3.7309189874
+520 3.3988905372 0.1991599392 3.6654716975
+515 -0.6933759828 -2.5666539264 4.019924814
+518 -3.0576942432 -3.0137367264 3.7716406153
+516 -3.9960659964 2.1807918408 3.9561189741
+517 0.308708171999999 4.8528377856 3.7277301755
+521 -0.5493319356 2.960230452 3.9183050966
+522 -2.5238299596 -3.8591481648 3.7826453456
+519 2.6128008216 0.8021197368 3.7995368147
+514 -0.3098444988 -4.4913993432 3.8076840673
+524 1.2180269652 2.9370874176 4.0474420043
+530 3.0444424188 -3.4950807444 4.2355633591
+525 2.087690946 -3.5426975244 3.9489351209
+527 1.7593752348 -0.8661892368 3.5841242751
+531 -0.0271456548 4.6760972556 4.6679632693
+523 -5.45548978812 0.703788019199999 4.0988935599
+526 1.16536848 4.3936266852 3.962479024
+528 -0.4839219792 -5.4787985976 4.8133746748
+529 -3.9491790912 -2.7348016152 4.1286254894
+532 -1.303395408 -0.765800111999999 4.4124070379
+538 -3.296680014 -3.7473123876 4.4075830442
+540 -3.0249547644 -1.3799334192 4.4025574544
+537 -4.83008381316 2.6308276212 4.296726232
+535 4.93826949 -2.4215055396 3.7526461713
+533 -1.298344272 -4.3408807872 3.805464954
+539 1.868460402 5.16807053904 4.4000952825
+536 -5.0053321878 -2.2797054744 4.4071174676
+534 3.7479203592 -2.5616458116 3.9477968319
+548 3.0411163644 -1.8703548948 3.7878688921
+545 3.3192273456 -1.6916387016 4.7699448435
+546 -2.227957026 1.9860918888 4.0290087874
+543 3.1539837168 -0.89086794 4.1944821839
+544 -2.9088404172 -4.668425772 4.4227360457
+541 4.6846856616 -2.8840372212 4.6311747571
+547 1.8802902756 3.7012300548 4.1289217595
+542 0.4581105144 -5.4817486944 4.4345798623
+549 1.2734970456 -1.4090100624 4.2689910497
+554 2.1768413244 2.8057540764 3.7981097204
+557 3.3492087264 -4.3630036392 4.6270242198
+551 -3.502554696 3.0877185804 3.8878714325
+552 -2.1523458756 5.06188849008 4.0511824953
+553 2.2811134236 -5.0047626876 4.4005336783
+556 -0.5064795948 5.47677662748 4.3091261421
+550 -0.1484670732 2.157857112 4.3594495829
+555 4.4944861272 3.1714292532 4.4664778765
+558 -0.686183478 0.162891714 4.4436089006
+563 0.187826279999999 1.2189309108 4.4291660037
+566 -0.8029224132 1.213550868 4.2905107692
+564 3.9462496956 0.771328474800001 4.2759440242
+561 -4.6117195644 0.253796544 4.3904103896
+560 -0.5652188004 4.3744842744 3.6423526725
+559 -1.4194987068 5.31402083976 4.6827119781
+562 5.2196309664 -1.735239972 4.4930597255
+565 -1.9929757728 -5.1265753656 4.5639615522
+567 4.5112940196 -0.0288111636000004 4.4761510235
+574 -2.4156718716 -3.1901751108 4.5177075465
+575 -1.5929318148 -2.6219192568 4.52724155
+572 -2.6596444728 0.304812624 4.6712468916
+570 -3.1810414056 4.4871121152 4.172721148
+573 0.410368270799999 -4.0209705048 4.3172045468
+569 0.8923452696 -0.5378802156 3.9579104362
+568 -5.4209033412 -0.9315344496 4.4450489033
+571 -0.3122673828 -0.7497138384 4.2826388276
+576 2.3878359732 -1.483585332 4.4736981454
+577 0.268329312 3.9198180096 4.0847640699
+580 0.776715385199999 -2.2748348208 4.3278668945
+585 -2.1081908556 0.9452630376 4.1377219992
+581 -1.9370274552 -4.1286434148 4.5448959353
+582 2.7809063532 4.0052351472 4.4395064567
+578 -1.6773443112 0.1475016096 4.5731928252
+579 5.328936798 1.3636182888 4.3647868095
+583 -4.4790157344 1.2446549304 4.4144820818
+584 -2.3073429432 3.0940836564 4.3072193693
+588 3.86699529 2.3965112748 4.4022591166
+594 1.2688273608 -4.43498967 4.6196172937
+592 3.8473790292 3.9308267052 4.5283537277
+587 2.875165236 -2.5469665908 4.5038816271
+593 1.18805235 -3.3581997504 4.6175640707
+590 3.0538079388 0.9677082132 4.6818834411
+589 0.8240069916 2.0263384944 4.1687375953
+586 -2.9907859092 1.3922906976 4.2816516791
+591 -1.3644024384 2.9456534256 4.6048564608
+597 3.4127977836 4.3137483732 5.3430699202
+596 -0.1303669284 -1.89753732 4.5135294378
+595 -1.186029252 -3.5178583812 4.7943400207
+601 -4.2553098432 -3.4847605332 4.7807737201
+600 -2.9769313428 2.3927222172 4.5512659517
+598 4.8785693016 2.2483781304 4.4785045652
+602 -4.5432741756 -1.3321815684 4.7074771372
+599 -1.4148591036 1.9375496544 4.6082018475
+603 -5.50007849076 -0.00258654719999996 4.8046405705
+606 0.168243540000001 -3.0582416352 4.2009128549
+605 2.6333820648 4.82905102896 4.9867400575
+607 4.6958787876 0.840732345599999 4.9337202057
+609 0.31250373 0.1485785748 4.3959488155
+610 -0.8266609392 -4.5517081896 4.6616376883
+611 -0.10474629 3.7541395836 5.0464155659
+612 -5.43383953212 -0.853707721200001 5.441729088
+608 2.3527118124 1.7675652588 3.7949586665
+604 0.4783206672 2.1292206744 5.1373654553
+616 -0.413756178 0.836166201599999 5.130126884
+620 -4.0795519452 3.6900474084 4.4665265527
+618 2.3993095812 -4.07111982 4.7385628863
+617 -1.7158481208 4.2877384524 4.5085245498
+619 1.0444845504 3.7051161624 4.6775222185
+614 3.9866045664 1.5452484684 4.9122944038
+621 2.894739984 1.952453856 4.6145827821
+615 -5.16190489716 1.8995425776 4.8920110604
+613 -1.1151386076 -1.7466979596 4.597478188
+623 0.633880395599999 -5.4634875504 5.4181736388
+622 -0.491709864 -1.2006668136 5.1568134014
+628 4.5130879008 -1.0280291772 4.5085014331
+626 0.4621773324 -1.1334994908 4.7844656682
+624 1.7572544304 2.1244250904 4.5142706726
+625 5.4995504316 0.0736310676 4.9583119229
+627 -0.8605349268 3.7834236408 4.3926863352
+629 -4.0242567948 -2.1545177256 4.9391947902
+630 3.1423595376 3.0640338732 4.5733946228
+632 -2.565612282 -4.8647308764 5.340442478
+638 1.0690206996 1.3653557868 4.8779676977
+637 -4.0430011584 -0.469649582400001 4.7812694287
+639 -2.077307646 -1.812900606 4.8612312658
+636 5.4153588012 -0.961292215199999 5.276308686
+633 -3.0984412068 3.6071203896 4.6400226066
+634 1.9539491832 1.1451234048 4.4683471393
+631 0.7103790312 3.9897187668 5.5758724957
+635 0.1353804888 -4.712615394 4.9840969045
+641 0.501711808800001 -2.8270570884 5.1143134926
+643 1.5566272932 -5.2756104036 5.0781231781
+647 3.4954744584 -0.0557463612000006 4.6264061945
+642 -0.255276199200001 -3.7938711204 5.0319238099
+640 -0.4868220708 -2.8237839756 4.9633386039
+646 4.2225507276 3.5255142204 5.36113473
+645 -2.6104104312 4.84163298768 4.9121683113
+648 4.0842051768 -3.6836520996 4.6275796065
+644 -5.1843618396 -1.8367362672 5.2855800885
+653 -0.0690039336000003 -0.295775665200001 5.2064698617
+654 -2.6830611312 -3.883869816 5.1861385737
+651 0.8734252032 -1.9104554868 5.2601524687
+656 -3.626206332 0.514751109600001 4.5258262698
+655 1.734322662 -2.227652046 4.6115826889
+657 3.5049120132 2.369011884 5.3331877247
+652 -3.8827828032 2.7571102776 4.7651342263
+649 1.8786950124 -0.626920719600001 4.5474122642
+650 -3.6264883572 -1.2754689312 5.201856544
+666 -2.2926306528 -0.6338802432 4.4722464402
+662 -1.0656812304 -0.2476510824 5.2721150184
+658 2.3770225848 0.2321387904 4.6642266657
+660 -2.9504271036 2.0053279224 5.4726372691
+665 -2.116448154 2.4801786492 5.0726731952
+663 3.7560336744 -0.871484367599999 5.141531536
+661 5.2132484604 1.7527839432 5.2798329241
+659 -0.4795464012 2.8028394564 5.0480976011
+664 1.2223722828 2.7886640112 5.0357724041
+669 0.5433136776 5.473875597 4.4754546023
+675 2.1660637464 2.9976665664 4.7793866778
+673 -1.346193444 -5.3328616848 5.2981677749
+674 5.4369216264 0.8338447956 5.6044034015
+671 -2.2606973472 1.4977639692 4.95669726
+667 3.2558082432 1.4347190748 5.5866657843
+668 -3.736172166 1.7703811416 4.8300642409
+672 -0.9296452476 4.5355583952 5.0740616325
+670 1.0134745572 -0.313834305599999 4.9388584061
+680 -3.3818106192 -2.9203561008 4.962696442
+678 -0.1174865988 5.49895356624 5.2294950466
+681 1.7101614324 -1.3663590648 5.1992671698
+684 0.974527381200001 4.6790703048 4.9016112985
+679 -2.0599908708 -0.2954740908 5.3838204494
+676 -3.3927340656 4.3291639524 5.2658198329
+683 -2.2222760976 3.676585428 5.1155126749
+677 0.299017636799999 -1.2042519 5.7684412469
+682 2.1294587568 -3.114421524 4.8505691165
+691 0.3365281188 3.0186093372 4.5122721429
+686 2.3796985836 -3.984064992 5.7345250862
+687 -2.982796596 -2.0403790392 5.2190179053
+689 4.7902812708 2.7032077872 5.3636043729
+692 -1.2336301884 -2.335869882 5.4152144315
+693 2.4752882772 -2.0648817612 5.282585225
+690 -2.6409963144 -1.1029800516 5.2831568309
+688 -0.604537456799999 1.8159021564 5.1804082733
+685 4.2757471596 -1.9761875628 4.7184127964
+699 4.4009100804 -3.2994479184 5.495863675
+694 -1.4690752572 -4.3459137828 5.4005150406
+701 3.2611001028 3.316810302 5.5367371936
+695 5.0199207804 -2.2493023044 5.326958563
+697 2.776224996 -0.590110800000001 5.0694647417
+700 -1.2473080188 3.623135628 5.3306676572
+696 1.5371701584 0.5171782212 5.1254355052
+702 -3.6525787344 -4.1121512208 5.2737054703
+698 -0.0781983539999995 -2.0922083592 5.5078173556
+705 -3.2298180024 -0.2170835844 5.3049810324
+707 0.395420270400001 3.0416458368 5.5373138587
+706 -1.2548277564 2.4617248992 5.5794934507
+709 2.4427444056 -4.9269136008 5.3840470625
+704 -1.0393007196 5.40108413376 5.6034481458
+711 -1.8983945628 -3.117468456 5.3702429051
+710 -4.2688796412 0.5192168016 5.2914272806
+703 3.7382906964 -2.7985250808 4.9396067182
+708 1.5181574592 -3.442561584 5.5689556889
+717 1.8511230612 4.206729132 4.9907302597
+712 -0.4925598612 3.3126556104 5.9081090592
+718 -0.6269267604 -0.6808334976 6.059265673
+720 -1.027097574 4.5062537016 6.0687443911
+716 0.70186809 -3.9419470824 5.2793458397
+714 3.7815908928 -2.037314502 5.5863124215
+715 3.7816358604 0.6402106176 5.2839078989
+713 -1.8049266048 4.7671269324 5.4981064692
+719 -4.97937099096 -2.3358124776 6.1274910527
+726 -3.1603210008 -4.50145806 6.057201135
+723 3.9103995528 -3.8676773184 6.1565077161
+728 -4.4544637212 1.4860060392 5.4643349824
+729 1.5566654004 4.3886547072 5.9287513361
+724 1.3763942112 -5.3253566748 6.0728540797
+727 -1.4773366176 -1.1572693812 5.31904944
+722 -1.4086660992 0.9830825472 5.0516024673
+721 -5.41686658716 0.9527667924 5.0872940445
+725 -0.8177289624 -1.6617007236 6.0252370567
+733 4.2898011996 1.9492881048 5.7886850715
+732 -0.1165438092 4.5469962048 5.6555419067
+736 -3.9889373688 -3.2070626412 5.7035149647
+734 0.549287830800001 0.599581764 5.2559244345
+735 1.4971461084 -4.4404238808 5.6238728709
+737 -3.1446978168 1.0600268544 5.2113144735
+731 2.2913285328 1.2452391744 5.4041378897
+738 4.6246514208 -0.000741661199999299 5.4691524909
+730 -1.720718628 1.5647761188 5.8022211068
+740 -3.9437736804 2.322419856 5.6631590748
+742 -4.7583464532 -2.7586689612 5.2490983492
+747 0.8251192416 5.43798427728 5.5559093823
+743 1.0974267468 0.0779238252000001 5.9087470609
+744 -0.1162795608 -3.1249759404 5.841598925
+745 2.8386207804 0.4180609344 5.5315831367
+741 -3.2769363804 3.0998231532 5.4830847682
+739 -4.4500961772 -1.354590516 5.7634277502
+746 0.170881902000001 1.3906870944 5.7361077695
+756 -4.7395053132 2.7909317208 5.2793350734
+749 -2.1664935672 -2.2375708752 5.7618053094
+755 1.7832284424 5.20326823284 5.3952245713
+748 1.9134690552 -0.329542395600001 5.5008595296
+753 3.049216038 -1.3430249088 5.6672623712
+750 4.793331864 -2.6975198688 6.1911066084
+752 3.70822647 -0.1752039864 5.8568586037
+751 -3.7000411452 -2.2660304448 5.8782574697
+754 3.271868478 -4.421252928 5.6220909878
+764 2.5127093868 2.3436021768 5.4515144674
+757 -1.3790292768 0.460732128 5.903634606
+763 2.474074476 4.91266569936 6.0560460099
+762 -4.5762724764 -0.372796810800001 5.6215068424
+760 0.834464115599999 -2.8979952756 6.0539255758
+761 1.5925825404 1.954934886 5.4923224334
+758 0.402007026 -4.6458381276 5.9446476308
+765 1.6249581744 -2.4507420108 5.6376366632
+759 -4.1662302996 3.5905061208 5.4576670498
+769 2.533791636 3.9858496452 5.6870938555
+767 -4.5267487296 -3.1249311996 6.542480002
+772 1.1784295488 1.1046141864 5.8501108988
+771 -2.2769895096 0.6712344684 5.5189399479
+766 4.5371240712 -1.3894462068 5.4892540224
+768 3.1062733584 -3.515064186 5.2332857669
+773 2.4585635832 -2.9827771428 5.7851755987
+770 -0.596943662399999 -4.7573922924 5.6627877103
+774 -2.6302798152 1.3528983072 6.1596383689
+782 -2.8143713028 -3.0826599264 5.7699314262
+779 -3.6143014836 1.4429336292 6.0062386478
+777 5.271305622 1.5695286756 6.2611549121
+776 3.5651374332 -2.9547759408 5.9228315947
+778 1.695620826 3.4462398708 5.6206762098
+781 4.4936105064 0.9774347196 5.903150758
+780 -5.31783404328 -1.4053858044 6.267262653
+775 -0.7867341204 1.2610996464 5.9916850561
+783 -2.0249950188 -5.1139903272 6.1429506752
+786 -3.7241290644 -0.709957204799999 6.0207508855
+784 -2.1055088088 -3.8641172628 6.0020642777
+790 2.276799876 -5.00692785 6.3667314571
+788 1.9787499528 0.5336427912 6.033065434
+792 -0.2145599748 2.3524762356 5.9277445367
+791 3.1226417508 2.1816591504 6.2379741165
+787 -3.10247799 -1.4905954956 6.0806767933
+785 -3.2764416216 0.4831999188 6.0169475885
+789 -1.6740802068 -0.4087529916 6.2990797169
+796 2.1480381048 -1.2949745364 6.0972377373
+801 -5.49598948104 0.2160600192 5.7797917822
+795 4.68332787 -0.6914113668 6.1896584496
+799 -2.7149614716 -0.53364348 6.1015012324
+793 -4.6355820972 0.4932625908 6.2212035753
+800 2.4845850084 3.0849359724 6.1218047351
+798 -2.0768080632 -1.3031268048 6.1056210766
+794 -1.8852732888 -2.967169506 6.3849564098
+797 5.2874684004 0.5743879596 6.5578022542
+805 -2.3202608424 0.3372264792 6.459955832
+803 -5.374744869 1.1671285596 6.0631207803
+808 -0.8857314348 -2.6710338456 6.2906761191
+804 -5.0782521594 2.1127118388 5.93096743
+802 -2.3568157956 3.034415226 5.8691860017
+807 0.9705323364 -3.8922601104 6.2734039948
+810 0.1218689568 -1.4032223052 6.7320525505
+806 5.2976756676 -1.4783504268 6.1322753354
+809 1.1884188936 2.6909685144 6.0345296384
+818 1.0855917768 -1.8582617928 6.2359270284
+817 1.126947594 3.6321756804 6.4214815088
+819 -1.0354846404 -3.5191007856 5.7824771262
+811 -0.0931347780000005 -5.4997787424 6.1034837599
+814 1.2364576344 -0.9111184224 5.9528556
+813 -3.8766100884 -3.901811214 6.4132838781
+812 -0.396270958800001 0.2875035528 5.9648312255
+815 -2.1228299784 4.0007958348 6.0558276366
+816 3.1213680864 -4.5289257072 6.6045815859
+822 0.669233952000001 4.7310378324 6.2454409005
+827 1.6384548432 1.3348396356 6.7075048192
+823 2.1181148472 3.8881804524 6.5912531111
+825 2.6217053736 1.292804778 6.3467670076
+820 -2.6550343164 -4.81710828 6.8601930314
+821 3.9787974384 2.8585066176 6.0646286234
+826 -4.2004969404 -2.2009111572 6.7414857513
+824 -2.8780355028 -3.7182850764 6.6194926572
+828 3.5808224052 0.765698058 6.254817765
+832 -0.9797285868 0.1413291312 6.762627494
+830 4.3622063964 0.197767090799999 6.5145053354
+836 0.661449126000001 -5.460379674 6.7579894538
+834 1.8903543828 -4.1138442888 6.5965066191
+833 0.2882215596 -0.3585625464 6.3010944286
+835 2.9532977112 -2.2029021972 6.1677368399
+829 -3.6893351208 4.0799493876 6.1875384929
+831 -1.9771210248 5.13270127032 6.4126075914
+837 2.7413831232 -0.4775634696 6.062458828
+844 4.3814897124 -3.3246751224 6.8515119929
+841 -1.0737935592 -5.394918624 6.2674215931
+846 4.028909322 2.1847394292 6.8018148823
+840 3.8735072652 -1.2766026252 6.2285032042
+842 -5.48203329396 0.4498277964 6.7515817941
+845 3.99212451 -2.2168353096 6.5471901699
+839 -1.2444047292 -4.4154552096 6.3721852623
+838 -0.1111636524 5.49881013624 6.2292334371
+843 -5.12697644988 -1.9915049736 7.0543228434
+849 0.781322035200001 1.8486937464 6.3865393411
+850 0.0911992692000005 -2.3636907672 6.4556774693
+853 -3.539656716 -2.970454476 6.5694170521
+852 -1.1581615788 -1.1112342912 6.7889771592
+855 -5.138551734 -0.4381233924 6.4458132507
+848 -1.4365891116 3.2074438164 6.2200033452
+851 -2.751028074 4.7626934112 5.8987729225
+847 5.4972958032 -0.1731720984 5.9273321561
+854 -2.1552013836 2.2231327704 6.4164316429
+860 0.434683700400001 0.665865108 6.371501021
+857 2.9541974136 -3.5579073612 6.4355423245
+858 -1.1805544548 2.0198521224 6.5098846831
+863 -1.1402993484 -3.5071060248 6.7765360842
+859 2.0948119152 2.1437684712 6.3374588918
+856 -4.498987476 -1.2497143272 6.8191351899
+861 -4.6162761024 2.990142774 6.2513373299
+864 -1.5947285148 -2.0327139516 6.5902303374
+862 -1.478060574 1.0717358772 6.6886963535
+873 4.5050077296 1.3065514704 6.8473361131
+865 -0.1188619644 1.9064813784 6.8170073127
+868 3.830084856 3.9480599664 6.1771916787
+872 -4.0141709424 2.3044737192 6.660194194
+871 2.7564733404 0.343975914 6.6323545727
+869 1.2830150376 0.408697285200001 6.8333575497
+870 1.5963159972 -5.2633794948 7.0529035952
+866 -0.309015286799999 -4.0109666592 6.2622128026
+867 1.4889751152 5.29466951076 6.3465270924
+874 5.0678233272 -2.1383079192 6.9728162608
+882 0.160049305199999 3.88523748 6.404078053
+881 -2.7835796412 -2.3171085912 6.5442541816
+877 0.350578629599999 2.9124645456 6.5328201602
+878 -4.209906918 -0.236418717599999 6.7562053387
+880 0.7518172116 1.2052052976 7.1511949573
+876 1.8515593704 -0.3422486784 6.4982254064
+875 1.9958440896 -2.184697656 6.5272909971
+879 -0.3426246924 -0.575349087599999 7.0459339055
+884 -0.6706912872 -1.965987768 6.9662452497
+889 1.7644490832 2.9639368188 6.804254449
+887 -0.419060509199999 -4.8514085364 6.7918443864
+885 -4.1680312068 3.5886867876 6.9150753384
+890 -3.4319787132 -4.2984328284 7.2161435316
+883 2.97082941 -1.3346067912 6.663916364
+891 2.1959952288 5.04271031412 7.0072570376
+886 3.3890492016 1.435343976 6.9719917414
+888 -1.4259889044 4.5289972296 6.988073072
+898 4.5017838408 -1.3151219292 7.0049035455
+897 1.0068698244 -0.6639052836 6.9256987935
+899 -1.5814192356 2.6803758276 7.1442091476
+895 -3.2246807076 -0.0873546407999992 6.8362588738
+894 -3.22418289 1.7314626 6.8804870171
+893 0.502498782 -4.4875127604 6.9260781808
+896 -3.1107945048 2.539396062 6.3022440729
+892 -4.7288418132 -2.8089236436 7.4694425724
+900 -2.9494780536 4.642342722 6.8711958025
+909 4.4299087872 3.2600044308 6.8613989159
+901 -2.2754695236 1.5086893668 7.1045734993
+902 -2.6100557436 2.7344812656 7.1454716846
+903 -4.98389092368 2.3266500192 6.9028942759
+908 4.5580522008 0.5964766764 7.5494337603
+906 -1.9783601724 -4.0891725636 6.9677833705
+904 -3.5317579908 -1.0321496304 6.9473428199
+905 0.2712094584 -3.3531985368 6.7417320649
+907 1.3727540976 4.4747442252 6.9077518705
+912 -0.3939014508 0.946237596 6.8554349127
+913 -2.8595633304 -2.9869239252 7.3022384428
+910 3.4748765976 -2.932383156 7.016405057
+918 -0.8036552052 3.7902110148 6.7296497188
+916 -4.5039981588 1.4548037424 6.4620308542
+911 1.0000161 -2.602256064 6.9946273555
+915 5.462806758 -0.641449021200001 6.8136745275
+914 -4.6323915168 0.6929067468 7.2188692004
+917 2.6658563256 2.5783932492 7.0340526223
+926 -2.9490791256 3.5001965124 6.5258726479
+924 -2.6076403512 -1.4128996716 6.9457134599
+925 1.694115072 -3.1376973804 6.5047539444
+919 3.808582986 3.9680906244 7.1964244254
+922 -0.619351444799999 2.8080018756 6.7619052219
+923 -0.0517430363999996 -5.500721796 7.4570537386
+927 0.403670454 0.0894008507999997 7.1874780765
+920 4.8819638568 2.533475532 6.3441449873
+921 -5.40092759052 -1.0409551236 7.1989898986
+935 -2.206468158 -2.2310977188 7.3558642237
+928 3.5555773332 -0.5101026216 6.7860098733
+930 -4.1488843824 -3.6110844396 7.3302245949
+934 1.8572739036 -1.1781679848 7.0467515367
+933 2.4852918288 -4.9065450432 7.339547817
+929 -1.8168516816 -1.2350184528 7.5310899009
+931 -2.1925953804 5.04415269168 7.386470161
+932 2.6131594404 -0.520164232799999 7.1203574903
+936 -3.5779269216 2.8993175676 7.3352452464
+940 -3.7345660272 0.8700181548 6.8166747912
+937 -1.8796260072 -3.1761893304 7.3627584997
+943 -2.3200308228 -0.462290790000001 7.060242126
+939 -5.32063418448 1.3946429256 7.0354312078
+942 3.2984514528 3.2635316568 6.6746986941
+944 -0.479102634 -2.9108053692 7.2312725825
+945 4.2823147296 -2.530670574 7.4511185096
+938 5.3419025928 -1.31061234 7.5467259072
+941 3.1561341384 4.5045686196 6.6617354303
+948 5.4983479632 0.14403951 7.4350017553
+952 -3.7719988308 -1.1209239204 7.913581451
+947 -3.3813519768 -1.967985426 7.2658577976
+946 -1.7911812624 0.3494778108 7.3081664054
+953 -0.815084447999999 0.5384378244 7.6650227783
+951 -0.869835012 2.0531448096 7.4597703988
+950 -1.767972774 -5.2084628592 7.1041749664
+949 -2.5773381948 -4.3201929492 7.7342709441
+954 -1.2022504116 -0.4462651296 7.5399891453
+963 -0.2773636416 -3.9806886312 7.2928978359
+960 0.828687271200001 -5.0757641172 7.6654353015
+956 -0.328313394 4.680451398 6.7617502064
+962 -3.3255256788 3.8660058768 7.3765584442
+955 3.6251703756 -1.648037268 7.3516112624
+958 -4.5824001396 -0.6277353168 7.5976033304
+957 -1.0333060932 5.40210952836 6.6032354512
+961 1.1289409248 -3.570888774 7.2068027883
+959 2.5795430916 -3.9122138892 7.292285186
+970 5.09294193 2.0769630732 7.2075867194
+969 3.646946784 1.1161870596 7.8839024323
+967 -0.8470190928 -1.3589850252 7.7405738145
+971 0.183879281999999 -2.1880018788 7.4357263152
+966 -3.7457955132 -2.7822029964 7.7176434958
+972 0.0750380471999996 2.7398438556 7.477986005
+964 -5.49879174504 -0.118945873199999 7.5732709313
+965 2.1774265704 -2.9998735152 7.3690486384
+968 -0.0465725364000003 3.7272919812 7.3796943298
+977 1.623058146 -4.380738462 7.522049901
+978 0.976139530799999 -1.6243945788 7.2019370624
+980 0.61098054 5.46655618944 6.919970319
+979 2.4585203424 1.6321254144 7.2807904759
+975 -4.6520679588 0.230803222800001 8.1051907894
+976 0.9788999088 2.451593316 7.1594347976
+974 1.390377732 5.32175080788 7.5289804005
+981 2.1123911784 0.694835772 7.3120644787
+973 -4.2723634992 1.6904045676 7.4053630056
+985 0.483177020399999 4.5747320688 7.3532409758
+984 1.723259838 -0.2466335028 7.4851126973
+990 2.7760500792 -2.2293080868 7.1510576242
+987 0.357991176000001 -3.1591867896 7.7183865038
+989 -4.33341294 -1.9177969752 7.6912700226
+988 -1.2607845444 5.35366682676 7.5754829828
+986 0.1372506636 -1.1584182996 7.7014770082
+983 0.974292354 3.7053188256 7.4068569142
+982 1.9547192472 4.3655630964 7.7130865454
+993 0.2081398764 1.7884270836 7.7542843953
+991 -0.1824661092 -0.1812137988 7.9508596671
+998 -1.2643919508 -2.4321948132 7.6219973203
+997 1.8654854436 3.3696503328 7.7119121817
+996 -2.7446770428 0.6504259608 7.3093453695
+995 -0.7015217568 4.531066482 7.6773313097
+994 0.438001009200001 3.535134402 8.2333105437
+999 3.6484705032 0.4026437856 7.1835353198
+992 5.175677856 -0.508564699199999 8.1197914081
+1002 4.6301377044 -0.367117031999999 7.2943331886
+1003 2.7335645328 3.72034353 7.3612510255
+1000 1.8205190016 -2.066414136 7.5046450068
+1008 2.6203839924 -1.3827183468 7.6593985351
+1006 -3.48316323 1.1725518444 7.7354617099
+1004 3.2667013536 -3.4456250328 7.8488941974
+1007 -1.4778782832 1.2868686396 7.6649760148
+1005 3.3674022312 -0.722383430400001 7.744186167
+1001 3.7434985176 3.0373991808 7.5557781335
+1015 1.8708517332 2.3751281148 7.6048765721
+1009 4.2457778256 -1.1501649408 7.9573596789
+1014 -2.0410529796 3.5442635316 6.9410965865
+1016 3.7514905908 -4.0223407476 7.1914480295
+1011 -1.9230268476 -3.723697134 8.1987170113
+1010 1.3362262716 -2.8766641584 7.8955096662
+1017 1.103136948 0.5382836724 7.8079660134
+1013 4.0725667896 -0.0982369223999999 8.0798734211
+1035 1.0870037616 4.6004128752 8.1507735273
+1021 2.9005419804 4.6734376056 7.6128812495
+1018 -1.1447831484 -4.4719940256 7.3654679648
+1026 -2.3628725532 -2.807991024 8.1568815906
+1024 -1.3079771028 3.7407488112 7.5916092138
+1020 -0.6129482796 1.3847272836 8.1577498665
+1022 -3.5229724644 -2.0058178752 8.3069487032
+1019 3.3951522456 -2.4483850692 7.9046660029
+1025 -1.1240567412 0.9044058924 8.8763608355
+1023 1.557028002 1.4305573632 7.6994807446
+1029 -3.1152530856 2.1149937552 7.7974828271
+1027 -3.0449766456 -0.4547941968 7.7486915427
+1028 -5.43586415052 0.8375941608 7.857733339
+1032 -4.6222498548 2.9810439396 7.5664230282
+1034 3.1986563616 -4.4743742448 7.8910517174
+1030 5.3821635216 1.1356571724 7.3796337496
+1033 2.5535350128 -2.8355737572 8.2808545524
+1031 -3.7921780416 0.231978156 7.5949796795
+1038 -2.5422203472 1.3051130448 8.0464551917
+1012 -4.5170149788 1.2113341836 8.2475759594
+1036 -0.4313991192 -2.7426854556 8.2158553799
+1039 -2.0724168348 -0.3506171736 8.0225234304
+1037 4.2721883604 -3.463680036 7.8357243496
+1043 -0.2981280756 5.4924436032 7.3434637556
+1044 -1.8541515744 5.1781772748 8.3607031992
+1041 -1.8597291672 0.593187697199999 8.2751361281
+1042 0.289350312 -5.4925241112 8.3967469891
+1040 -5.2493536488 -1.6424652648 7.9830807509
+1048 5.2125435792 1.7553440664 8.1463434258
+1051 -1.7492412276 1.6209710868 8.5672126039
+1053 3.7875776724 -3.9886857756 8.536806071
+1050 -3.5669183964 -1.1943586524 8.8895150686
+1046 1.7938222464 -2.222561934 8.4971542097
+1052 0.135007803600001 0.795150406799999 7.8427703086
+1045 2.8585074456 0.2058507468 7.7625327916
+1049 3.5815825236 4.1740275156 8.1482406661
+1047 -0.2405788044 0.4674435912 8.7095383965
+1059 4.7092687596 2.8415438916 7.7253018877
+1054 1.4958396708 -1.2192870384 7.9782082546
+1057 -3.7156432116 -0.296154708 8.4759518527
+1056 3.9098868636 2.5403897844 8.4073449064
+1061 2.3663196816 -4.5443394468 8.4402877508
+1062 2.379377832 -0.5648208684 8.18123759
+1055 -2.0036931516 -1.8817648248 8.2705202281
+1058 1.7381974788 -5.2191104232 8.0538962643
+1060 -0.326889288 -4.699019844 7.9862719901
+1068 5.0551081944 -2.168667798 7.9721880143
+1063 2.526794208 2.0029791144 8.2612861744
+1071 -1.038230004 -3.54160095 7.7704208656
+1065 -2.4046975764 4.1116642512 7.6785715019
+1066 3.3545540856 -1.5395655828 8.3196198323
+1067 0.892965291599999 -2.0038376004 8.1231228076
+1069 0.8380387428 -0.4710319788 7.8922233283
+1070 0.597428796 -4.120878822 7.8509069964
+1064 5.4568401456 0.690207606 8.2715838474
+1080 4.6681942584 -2.909263362 8.5665611017
+1076 0.1002724044 4.4977089564 8.2737057416
+1073 4.544637222 1.0676956596 8.4304549817
+1075 -4.077586866 3.6915346896 8.0113362434
+1078 -1.1084745312 2.8540381488 8.0080097729
+1074 -3.734139264 -4.0387338336 8.1329396644
+1077 -1.4906661252 -1.04395032 8.456817546
+1079 -5.45016319872 -0.737316381599999 8.3570217942
+1072 1.3836015108 1.0616174748 8.6124032941
+1088 1.1237819856 -3.615938466 8.5344893821
+1085 -0.0503496431999997 -1.83874338 8.4099682256
+1084 4.2929033436 1.8710067612 7.7708438017
+1086 3.5802546252 -3.0246467208 8.6997896188
+1083 -2.08807176 3.1815235728 7.871737868
+1087 0.624201564 1.7163796548 8.6601768392
+1089 -4.2616513188 2.2968871656 8.1999988737
+1082 -2.1179784816 2.1831064932 7.8256485467
+1081 0.8205505056 2.6167789176 8.1328625798
+1098 -2.0485148364 -5.104394904 8.0582452915
+1090 -3.1377916884 3.8314158492 8.3579658868
+1094 0.4967384148 5.47764545028 7.9493897246
+1097 -0.1709385888 2.7712038 8.4463238197
+1093 2.5126360836 3.813037224 8.3319887827
+1092 3.3323363448 2.1350601972 7.6838936594
+1095 -0.217655215200001 -3.755841912 8.2997805701
+1096 -1.0101343968 -5.4066391392 7.7252512244
+1091 -1.092988992 -0.0264623279999991 8.440897403
+1107 2.0267173404 -3.6689570184 8.0965536965
+1103 -0.5064245628 -0.902766532799999 8.5623487442
+1101 -3.7268231088 0.6980487156 8.5812350943
+1100 1.4999608284 -0.445578360000001 8.6412136711
+1105 1.984138008 0.3516412992 8.2424792556
+1102 2.4126625764 -1.4511050088 8.6423533458
+1106 0.711838905600001 0.1694597592 8.6505194588
+1104 -1.7075742156 4.189547004 8.3907748546
+1099 2.785964028 2.9241110784 7.9646100643
+1115 3.512408466 -0.6410138472 8.7295939178
+1110 -3.5718387588 -2.927061252 8.6925431704
+1113 2.8147885104 4.7257032024 8.6068789391
+1116 -4.91616692808 -2.466048384 8.4416578826
+1111 4.2640410792 3.474186444 8.3589023503
+1122 -5.1329588436 1.9756618416 7.8271968727
+1108 -3.4645769796 2.8868257584 8.3286888482
+1112 -1.3024634448 -5.344037838 8.679207237
+1114 -2.815447236 -1.4121148728 7.9238048542
+1123 -3.0317822988 -4.5894529944 8.5831567564
+1118 -0.4111144272 -5.484676182 9.109938597
+1124 -0.5510308044 3.679569948 8.2416801531
+1125 -4.3973045844 -3.3038059644 8.2723607911
+1121 0.574224364799999 -1.0899766128 8.631608876
+1119 5.31979035 -1.3976802576 8.5526456202
+1120 -1.2044851212 -4.4014433244 8.360588152
+1132 1.9468282272 5.1441714672 8.3403573877
+1127 -4.5043207488 -1.3175082912 8.5649669639
+1128 -1.3845849564 -2.9302007676 8.4816661416
+1129 1.5546550164 2.0408102856 8.4920846247
+1126 -1.4268409596 -3.7367537112 9.0727458634
+1131 1.9944032136 2.9321704056 8.6016925306
+1134 2.8243976364 -3.6972638508 8.7097183577
+1133 3.7149229656 0.602922085199999 8.7394222756
+1130 1.3801671672 3.7163318628 8.5138387383
+1136 4.7688640368 0.1485174084 8.7537006152
+1138 -1.8196249464 2.6234769948 8.6721247755
+1142 -2.7270383928 -2.2151513076 8.8750659872
+1137 1.0662491436 -4.6657236696 8.5457114875
+1135 -4.6190581728 0.6013530708 9.0330872844
+1141 -0.582986866800001 5.46905443704 8.3014912865
+1140 2.8187644092 2.5667322828 9.0338426893
+1109 0.176355294 2.354310354 9.286155617
+1117 5.4777552324 -0.495553081200001 9.0725446858
+1139 0.496849939200001 -2.8468706232 8.6575468395
+1143 -2.0751052464 -4.4694899592 8.8471051435
+1148 4.8775086408 2.5423879632 8.6642604754
+1145 -5.36352401976 1.2195536496 8.7790012373
+1147 1.8681147864 -5.1727075332 9.0439097068
+1144 0.6624564048 -1.9674439164 9.1028767567
+1146 2.3160544752 -0.621123762 9.1916782872
+1149 -4.5966536304 -3.0202961088 9.2101454491
+1150 -1.8734201472 -0.2997984372 9.0041506537
+1152 2.4869377584 -2.4014094396 9.1951251307
+1154 1.3883827116 0.2324197044 9.3838660918
+1155 -1.034686644 -1.9937125296 8.4898662647
+1157 -2.864705118 1.090870674 8.9683810557
+1161 1.9183228908 -3.1917775548 8.9684002664
+1153 0.9098170224 -5.4244686252 9.1776562494
+1159 -5.49564211668 0.2201155344 8.642006927
+1156 -2.8350605412 0.374649864 8.2657758145
+1158 4.5566647224 -0.8239334364 8.8500331369
+1160 2.7504234672 1.0300608912 8.3182377996
+1164 -2.7585198228 -0.641773149600001 8.68855073
+1173 -4.6691823036 -0.386994144000001 8.8911268981
+1167 -0.9204668028 2.16267885 8.7055907263
+1168 2.2048131816 0.7805630496 9.1181371639
+1170 1.4678441076 -1.3914765084 8.9639386379
+1163 2.2234548876 1.7780202468 9.1871852061
+1166 -5.05066917408 2.1784812372 8.8027008241
+1165 1.9567997292 4.3818768864 8.9872906186
+1176 1.0748499324 5.39431153356 8.7607391962
+1151 1.7255231772 -4.1694227952 9.1099888914
+1180 2.8476720324 0.1054492524 8.7567849571
+1162 5.3216274912 1.3897167864 9.0702350215
+1177 4.2126383868 -2.0228500212 8.489437947
+1172 0.856105300799999 3.0438506256 9.0363627537
+1174 -0.929856253200001 -0.4346221344 9.3378788008
+1169 3.4460063184 -2.1286845108 9.1222276046
+1183 -4.93783061976 -0.167809818 9.9082665186
+1171 -0.5552036724 -3.2477001816 9.0916076057
+1179 4.2092197248 3.009918888 9.2428698706
+1175 -4.3611362868 1.5571147308 9.1737050514
+1181 1.1467108644 2.1418906812 9.3992246171
+1186 -1.0207543632 3.1605350712 8.9553203465
+1185 -4.5290801844 3.1216505172 8.6976544659
+1188 4.40322414 1.784779314 9.1116620544
+1182 2.6527646556 3.7455435696 9.3195463122
+1187 0.0907994196000006 -4.647434838 8.8929589144
+1196 -1.1938274184 5.36940119064 9.0866402153
+1190 3.4022221356 1.7132338596 8.6477458516
+1194 -3.9173586396 3.8607412272 8.9834144809
+1178 -4.3333453344 -1.0858733328 9.5226078876
+1189 0.535869115200001 0.931911876 9.2730373997
+1195 -2.252360928 -3.1733364432 9.0808295009
+1193 3.3272727516 3.355113042 8.687729323
+1206 -2.7615280032 2.2905308328 8.7161826451
+1197 1.9788842916 2.6702958636 9.5665850115
+1205 -3.5645298756 1.6927152504 8.5849294852
+1191 -0.00795945960000033 4.3146024024 9.2507636331
+1203 3.5040653304 4.2394939884 9.1430248319
+1199 -0.9750623256 -4.6366833936 9.3050061435
+1201 -2.7610552176 4.7575971 8.3524620631
+1200 0.3311998596 -3.708224562 9.1376080996
+1192 -5.20527797304 -1.7774429256 9.1091712416
+1184 -0.8153373072 4.5420085512 8.6726768545
+1207 -1.445095266 3.9832530132 9.3330562548
+1209 -0.4245053316 -2.266949814 9.2334739349
+1210 0.966305842800001 -0.677966427599999 9.4541040814
+1222 3.0735927828 -4.5614579064 9.1466383903
+1208 -2.8859278644 -3.6103819296 8.4427131474
+1213 -2.3037600516 3.4963663788 8.7958209755
+1212 -3.981111198 -3.7954455576 9.0705833747
+1221 4.2573319776 -3.4829277336 9.2748164649
+1241 1.190749068 -3.4759768284 9.5927190314
+1214 0.9724416252 4.473440628 9.1357889824
+1216 -1.7682475152 -2.2938200352 9.150704372
+1217 0.1102403796 5.2741263186 8.9952609852
+1218 4.0319667204 -0.0926041656000001 9.3841726446
+1198 -0.2783110932 1.4844647736 9.0947708643
+1223 5.0527107792 -2.1735342516 9.123225724
+1231 -0.0738356075999995 -1.3383767004 9.3512672668
+1224 -1.7733865536 5.206418655 9.8844627811
+1225 1.5972085848 3.5903433528 9.4810931526
+1215 -5.4372519852 -0.8313405012 9.3519979213
+1204 0.8620796976 -4.4805864204 9.5068181647
+1228 -3.2493246504 1.8278737128 9.5242467491
+1211 5.2698710808 1.5748903356 10.0512806166
+1240 5.4814512504 0.4542319176 9.3848459119
+1227 0.444811486799999 -2.8129335828 9.6553172167
+1219 1.4986854564 -2.4042726228 9.4348578492
+1226 -1.0691676192 -1.42341966 9.3091321691
+1220 4.9318571016 2.4349173972 9.656967697
+1232 -5.46662959572 0.6073793328 9.563477804
+1238 -5.2695052554 1.5767771532 9.7080626875
+1245 -3.6834049284 0.9276601692 9.5532159236
+1234 0.0557022755999999 -0.360702461999999 9.1869581311
+1235 4.2638305308 -1.6288774572 9.4067568421
+1242 3.6474918 1.2519470412 9.5001570366
+1230 3.6259385172 2.2510419744 9.5324689969
+1250 -3.0406813884 -3.8157991788 9.4089218077
+1202 -2.74793901 -4.7646822336 9.5254265843
+1248 2.7007303404 1.2208065672 9.8662864984
+1278 2.766376974 -0.682890007200001 10.1293474423
+1229 1.439888238 1.2074515332 9.5998134217
+1255 -1.5725434728 -3.0742984836 9.8074454449
+1243 2.409668958 -1.5097291956 9.6404259172
+1247 -2.1674463036 4.650097962 9.1499815047
+1257 3.3598471596 -1.2198803328 9.5299482691
+1246 -3.905860032 2.4645598776 9.120482441
+1273 -3.3593649744 -1.8891450864 9.577685011
+1258 -3.09382458 0.1466835276 9.2037571582
+1259 -3.2735095668 -0.698308506 9.7065517909
+1237 -2.0132003772 0.6564406128 9.2608861189
+1252 4.5613185864 0.8515947996 9.4337711256
+1253 -4.1772208332 -2.1262679244 9.0535199052
+1249 3.1916264592 0.3757830588 9.6554203072
+1264 4.006927236 3.7676337372 9.8665147173
+1272 -2.1907197108 -1.3549282536 9.0996304026
+1261 3.0557376468 -3.1469939628 9.5417273174
+1256 -0.6013325616 0.486552056400001 9.6418358592
+1269 -3.6866711616 -3.0573780024 9.6772827937
+1268 -1.8401861832 -5.18322948 9.5066364985
+1346 -1.412152332 -4.5567541572 10.2007747717
+1263 -3.1720788684 3.2369156016 9.2185282118
+1262 -3.177415644 4.489543062 9.2206498859
+1275 0.782553629999999 5.44406985108 9.7157370444
+1267 5.3351917788 -1.337381556 9.5929319642
+1265 1.1462738808 -1.5870834252 9.8907853768
+1271 -2.2587011136 1.746686352 9.4179820134
+1270 2.5010904864 -3.9619837884 9.7055439623
+1254 -2.655117762 2.5904333796 9.7795024851
+1260 3.1902702972 3.0919582872 9.8518986048
+1280 2.7675877968 4.7534698944 9.6047220113
+1266 -1.8120108828 3.081197232 9.5608927481
+1236 -0.5307260304 5.01031911252 9.7428722713
+1284 -4.7089231152 2.4043398192 9.7147917304
+1274 0.6570580212 3.7687070268 9.7703307445
+1279 -2.1183952404 -4.0173386532 9.7378894553
+1287 3.6696817548 -4.0970387148 9.8012500949
+1244 1.7373589932 5.21855354472 9.4887133897
+1301 4.560258648 3.0754235568 10.3288091644
+1289 -1.7009663328 -0.8451016848 9.8246262184
+1288 -2.7634908888 0.7703401164 9.9120457007
+1282 -2.6776245816 4.80476788884 10.0268191242
+1290 2.2483189452 0.1365523872 9.8847473425
+1352 3.0818511324 -2.2813367208 10.0405479981
+1276 -0.1469374584 -4.5636953484 9.8604423691
+1296 -4.3677042456 3.343750284 9.7106994545
+1281 -1.2657246396 1.66959138 9.5039839246
+1295 4.2849664056 1.7391643716 10.1032818952
+1297 1.78296453 -0.825730763999999 10.0125309111
+1294 -1.2162290808 -2.1549387696 9.9735253409
+1314 4.7331525168 -2.802112422 9.831531363
+1369 -4.6036952208 0.8866830516 9.9909528899
+1309 -1.4906037912 0.1367871132 9.9363884693
+1283 0.2316045588 -1.938415152 10.0905175925
+1343 1.4555079756 -5.304329826 10.0068256742
+1305 -0.6427947396 -0.280089845999999 10.2824052334
+1315 2.7478962 2.2091982432 10.008699928
+1312 -0.739683840000001 2.5058171376 9.6565022723
+1328 -2.7691724256 -2.6720219688 9.7739609747
+1300 -0.0879856812000002 3.3184558812 9.2788370812
+1321 2.0928755544 -3.0310301628 9.9396701665
+1292 1.1072277936 2.9151545316 10.031807638
+1342 -0.967967328 -5.4141663888 9.9372345678
+1311 0.3533479716 0.216850956 9.9470011922
+1320 -2.44044426 -0.175477383600001 9.8883968826
+1286 -4.0162485192 -0.0152103132000008 9.5528847475
+1330 -0.82269306 -3.8224904028 9.864770431
+1318 -0.4903874064 1.3846254948 10.0672998387
+1310 -2.5412871576 3.8727723972 9.6911898246
+1277 0.125803490400001 -3.6378751968 10.1215896489
+1316 -1.8105222 1.1101355124 10.1283580773
+1285 5.49157296 -0.303565674 10.0535959725
+1325 -3.7111119972 4.0593269652 9.9485150834
+1332 3.8579508576 -3.174649296 10.1379291289
+1306 0.2131307112 -5.4960193296 9.8910654122
+1319 5.1199292676 -2.0093526444 10.301961416
+1326 -0.5290954332 -2.8796389368 10.0208392118
+1308 4.5460410516 -0.7938649032 9.8778836418
+1322 1.938597708 4.3677785196 10.0088627958
+1341 -1.7788490376 2.259447324 10.1296270964
+1299 3.0978223452 4.0234199292 10.2022524053
+1239 -0.6143920128 -1.3071131772 10.191779325
+1348 2.2826817096 3.4128700404 10.1867556138
+1317 -1.2638211192 4.4129594388 10.2172421112
+1349 4.0596249072 -2.1734246016 10.2202216483
+1298 -3.6072605556 2.7749177316 10.0224874477
+1329 -2.1796698096 -1.8877269756 9.9665672886
+1331 -4.96307004528 -2.37116613 9.8761374242
+1397 1.656513 -4.3291537092 10.094640205
+1334 4.6118672928 0.1634973432 10.157235591
+1336 2.4066664932 -4.9458767988 9.8548063118
+1353 -5.30257001004 -1.4613089616 10.1161369504
+1333 -0.7790912388 3.5722433988 9.9555229093
+1357 1.8115986408 1.9151199636 10.2005105494
+1233 0.4625896716 1.6639029024 9.9502731957
+1382 -4.0587856512 1.7534475072 10.1062758318
+1313 0.115108558799999 2.8621768524 10.1453013505
+1410 -2.7564534276 -3.5109377568 10.3178055687
+1339 0.9881586156 4.6016258508 10.2136942449
+1356 -4.0251416376 -2.2829036604 10.2112881055
+1411 -3.3040605552 -4.3970055564 10.2705399958
+1307 0.2178680088 -0.7594098804 10.1119970864
+1390 1.9154707608 -2.0838391524 10.2925884854
+1361 3.6483885936 -0.2418785232 10.295248583
+1360 -4.044436944 -3.727377246 10.327630284
+1335 1.1988820128 -2.7805859592 10.3112225978
+1393 -3.7223134224 -1.337813112 10.330133844
+1449 -2.8443986868 -4.7078281932 11.1591323348
+1291 0.925600497600001 0.9002451276 10.3999257994
+1386 -2.1004765116 5.08343162208 10.821197714
+1363 0.253505389200001 -2.7903301092 10.6365187635
+1323 -1.7169040176 -3.6807992628 10.5892075803
+1347 1.38347322 3.7296042456 10.5420093394
+1344 -0.7751204352 -1.004655738 11.131217616
+1378 0.873699591599999 5.4305476842 10.9554300917
+1345 -1.2261376008 1.68423825 10.7325606602
+1302 -1.5142035684 -1.4402136276 10.60615121
+1437 -4.7860948848 -0.0498869771999999 11.1093694856
+1380 1.4136709284 0.5816801976 11.2123403318
+1376 3.8196449484 -1.2192055872 10.4174749893
+1327 1.0222029096 -0.9688713276 10.6666999357
+1402 2.0228961708 -3.6457251048 10.7254192181
+1338 3.7613533848 2.4970187532 10.4921837958
+1324 5.3877049392 -1.1071385052 10.639201922
+1337 5.4623880372 0.6457357476 10.3659275569
+1351 3.8180097564 0.7422824208 10.3433342919
+1391 -0.9948865692 2.6496094716 10.6122329853
+1374 -2.2856867064 -2.6696613792 10.6492716117
+1408 -1.9251965484 2.2864895244 11.1184596404
+1396 -4.99656809952 2.2990990524 10.6666703307
+1367 -5.3301081558 1.3565448504 10.6815007927
+1368 0.9308166312 -1.9546553916 10.8067484621
+1372 -4.0955728848 3.4757391696 10.6637773456
+1392 -0.4995658716 0.0551124251999999 11.2126929723
+1415 -2.28901098 -5.0014538388 10.3814196798
+1373 1.9277404596 0.916097472 10.4225918493
+1371 0.0751926780000005 3.7604991024 10.5826315131
+1355 -2.3099185836 4.1200480728 10.6551873789
+1387 -1.616904228 3.4211665488 10.4801453023
+1340 0.049486138799999 5.49984168432 10.3935906952
+1691 -3.6262116828 2.0312487972 13.3362013051
+1490 4.429749204 2.2016476728 11.5303444667
+1385 4.6116094944 -2.9971761 10.8047207862
+1354 2.9803958304 -3.5234598792 10.4653713967
+1359 -3.2539353336 4.4342509116 10.7548923937
+1370 0.1293251124 -1.3646225244 10.9029171085
+1436 3.274703178 1.8093827352 11.5180093776
+1358 -3.0619351668 3.492293898 10.4554529839
+1395 3.3344208612 1.59434865 10.5433387837
+1422 -0.5833739568 -4.5182943072 10.7588092313
+1375 -1.0138467468 0.71660199 10.5967726219
+1364 3.7079679936 3.4767483216 10.7752883477
+1389 -5.46549536616 -0.617931434399999 10.6281787157
+1365 -1.0252804008 5.40361608612 10.5178300338
+1362 -0.0200389019999996 0.764780564400001 10.6952809871
+1381 -5.48704813632 0.3792326352 10.5397389831
+1546 -2.0800734108 5.09148357828 12.2265861705
+1377 2.8590520236 0.542451157199999 10.5833124715
+1383 -1.5124125768 -0.450137744400001 10.7456699991
+1406 4.5785075892 -0.558813393599999 10.8489934827
+1384 -3.8031251808 0.50152308 10.4495210688
+1428 -2.093546346 1.2613686348 11.0751663083
+1379 2.6437021608 4.8231565158 10.5943658749
+1394 -4.0409465076 2.5010484792 10.8804916527
+1388 1.971609582 -1.0375824156 10.9713963627
+1438 1.732288206 5.22034024104 10.4885341596
+1403 2.7654981276 -1.5443760036 10.6369035944
+1399 -0.3482973216 -5.489254392 10.7182619009
+1643 -2.1818112312 -0.583197912 12.2139011689
+1401 5.324761266 1.3769312736 11.0337835682
+1398 -0.3947284524 5.48603814576 11.2893705671
+1400 0.6428550336 -4.6505936064 10.4673816351
+1404 -1.377268098 -5.325084174 10.8451036802
+1405 -2.122382388 0.3396452232 10.6841155776
+1412 -2.9724980964 0.8150244432 10.9089153171
+1303 -3.0883705416 -2.0875702848 10.5194139416
+1450 1.5905071704 -2.8949635992 11.2241286398
+1413 0.664237139999999 -3.191291184 11.4552261781
+1566 3.91840971 3.8596793616 11.7760230906
+1407 2.4835153416 -2.725394766 10.807835133
+1409 -2.3332617708 -1.7557044012 11.0843590204
+1419 1.7854559256 2.7513781992 10.7480858105
+1418 -0.840038172 3.7998497508 10.9823242285
+1421 -4.1425299456 -0.438752652 10.4501559643
+1417 2.475950916 2.0022014652 10.9482304099
+1416 3.36131925 4.3534932492 11.1084208639
+1420 0.9326133024 2.1691839204 10.6738029161
+1414 5.4779704344 -0.1678501368 11.0442198763
+1426 3.1875578508 -0.7305145188 11.0357770387
+1430 4.753919064 0.55567293 11.0656145573
+1304 -0.3967166664 4.6385812344 10.6613269568
+1423 -2.949932292 2.528548746 10.7342253013
+1424 0.574774218 1.3945844352 11.1945780169
+1429 2.893558338 2.8966579788 10.7866259746
+1431 -2.4078412584 -0.5436572232 11.180639552
+1425 0.419964852000001 -0.1473101088 10.8765003128
+1427 -3.1670307612 -0.255832332 10.5969284868
+1433 2.0044963152 -1.986853146 11.2837217874
+1435 -0.5216346552 -2.1563151432 10.7110744455
+1439 -4.3427172048 1.2141479436 10.8987117601
+1434 0.7279422672 3.1037720088 10.9643185915
+1432 4.4901380076 3.1771180188 11.3209846771
+1440 -0.247337028 3.0157762668 11.1660594305
+1443 -2.3612545536 3.2372637228 11.1217665499
+1441 -1.297061508 -2.786673642 10.7435523984
+1445 -3.5054363088 -2.9767380828 10.7097345325
+1451 3.8913812736 0.0690428700000005 11.21391644
+1655 0.0618574584000005 -0.768278111999999 12.6259176491
+1447 -0.150107148 2.0764588068 10.7041008126
+1442 -0.617658260400001 -3.5183037216 10.7948033716
+1448 5.009100816 2.271873774 10.7187449553
+1446 1.5940223508 1.5599623968 11.1109551604
+1444 -3.4615597728 1.6867879524 10.9054036898
+1471 4.1807721288 1.3740544548 11.0280823613
+1457 2.313198648 3.9767996724 11.0118141131
+1456 0.8591237868 -1.2452306328 11.613666462
+1503 -3.9798798468 0.447209661600001 11.4319423602
+1452 3.4759544748 -2.635599492 10.888111803
+1455 0.0330191952000005 -0.6823715112 11.6274174482
+1453 -4.791446148 -1.9974690084 10.7869744735
+1454 -1.4123557836 3.096313692 11.4033652272
+1458 4.5197512056 -1.6259309256 11.0039065308
+1463 0.1583844156 -2.2060936944 11.4421862854
+1467 -4.63009851 -2.9691982848 10.6140883415
+1464 -0.7107590064 3.5598643596 11.9443450337
+1460 2.105271366 -0.0527737776000006 10.8613018219
+1462 2.0624254464 -5.0989687044 10.7807204436
+1461 -3.1616099172 -1.1993664036 11.1463664077
+1465 2.9465486928 0.1941660396 11.5161378177
+1459 1.3476407136 -0.394612098 11.4174221679
+1466 -1.2488648628 -2.02004898 11.3837592803
+1474 -4.6654483404 -1.0417976772 11.0524940863
+1472 -1.1747939868 0.6920514264 11.5833059734
+1470 -5.18064287856 1.8470490948 11.5399656422
+1473 3.8330924664 -3.9443063808 10.775862384
+1468 -1.2545066592 4.6879548396 11.1783046723
+1469 -3.85783761 -1.9164266196 11.1341607033
+1475 -0.8320030092 2.292292584 11.5316229842
+1476 3.5419402692 -1.7040799224 11.2463239082
+1482 1.4958636504 4.5299404608 11.1721028309
+1477 -3.8725483536 -0.546501214799999 11.407096753
+1480 0.4088135868 5.1965087868 11.8091773426
+1484 -2.5284520224 -3.7646001432 11.2576487073
+1485 0.2503856016 -4.9716353568 11.3291770719
+1483 -1.50676908 1.6081142796 11.806130117
+1478 2.3112074052 4.99098948768 11.5221765092
+1479 2.8424474244 -3.4042718292 11.4482659403
+1481 1.3885130316 2.408034726 11.5992896881
+1492 1.0147091388 -3.72817848 10.5703544436
+1486 -5.44836353724 0.7500028692 11.467607575
+1494 0.260995284 0.5515508868 11.6308679621
+1487 0.4999203792 4.5125342664 11.0857294808
+1493 -1.8653954556 -4.503216882 11.1375636322
+1488 -0.3449765748 4.5573875076 11.6565700869
+1508 2.2793801436 -0.508285326 11.7615366356
+1491 -2.7292879284 4.775184504 11.534923734
+1489 2.4207267972 1.04195115 11.3304314249
+1499 2.987673486 3.5369811852 11.604402825
+1500 -3.5976919812 1.3528197924 11.8380113571
+1495 -1.6878471972 -1.1357653764 11.5426585409
+1498 1.8644827272 -5.1745415148 11.757790608
+1502 -0.487024548 1.374424134 11.3356888203
+1496 -1.6823907312 -3.2969285916 11.5117305849
+1501 -3.7909919868 3.9851290596 11.4685305039
+1497 2.316714342 2.7799278852 11.5947237074
+1366 3.0864351324 -4.5524309352 10.4735111907
+1506 1.5385264116 3.3957637068 11.4717904701
+1504 -5.49876828276 0.1224878616 12.2444662544
+1510 0.9390906228 4.3674949932 11.9866872176
+1505 0.231339117599999 3.7403749608 11.6614882276
+1509 -3.0571923924 0.1033088604 11.6059030359
+1507 0.711136335600001 -0.170984192400001 12.1552009918
+1515 -3.4242756 3.055329978 11.4394395924
+1511 -4.6116539952 -0.3433908744 12.0492759448
+1512 -2.4663051588 2.82636201 12.0273094812
+1629 -0.6209662488 1.1190386148 12.2979271804
+1518 5.4743475336 0.5319409056 11.7585503219
+1513 3.5982032184 2.7547716588 11.4817410702
+1514 -3.6495330432 -4.11491976 11.1654542268
+1516 -1.8978654744 4.0079828388 11.5589114813
+1519 2.5051909788 -4.3403968764 11.2587570751
+1521 0.3964121772 2.3288152992 11.5026126696
+1520 -1.177648812 5.37355463844 11.9011377545
+1517 2.8258063332 0.1504929084 12.5077206662
+1526 -5.45987376408 -0.6630545472 11.6270472524
+1523 1.119361926 -5.3850495804 10.9501437485
+1528 1.4949656112 -4.3716907344 11.1661212631
+1530 -4.3088668836 -3.418183536 11.4477919224
+1524 -4.3123957908 -1.4513166192 11.8936224803
+1522 2.7079485924 -4.787424426 12.1296584147
+1525 4.23700284 -3.5068247568 11.5792506898
+1527 -4.7610910764 2.7545727768 11.5257509518
+1529 -0.586281822 -2.1969236868 12.1135418929
+1531 4.5963720684 0.964131996 11.9643519284
+1533 -1.0496138376 -4.07084208 11.5216113296
+1534 1.1066893512 -2.2028969532 11.759346808
+1536 -4.85231345556 -2.5907575548 11.5889825632
+1537 5.214323814 1.7502082812 11.9547254643
+1539 -2.773114236 1.9955596416 11.5616088223
+1532 -3.028315224 -2.3552148516 11.4810067918
+1535 3.2390011308 -0.6236717568 12.0284608336
+1538 2.7041965728 -1.4115097344 11.7068076856
+1545 1.4059673652 5.31691130184 11.7942504458
+1540 -1.199672022 4.4065708248 12.1529734744
+1544 5.3111891388 -1.4296137312 11.5825438353
+1542 -0.7205503572 -3.0947277228 11.6946675214
+1547 -0.7649459592 -5.4466015092 11.6261175655
+1543 -2.0782361736 -2.4206746104 11.7859322065
+1548 0.205891524 -4.0017174876 11.0904488805
+1541 4.697082582 -0.1623480408 11.7590257844
+1688 -2.2051650084 -2.371779666 12.7764769797
+1554 -1.233582054 -0.283338586799999 11.8014312052
+1549 -2.8546547088 3.8124142692 11.7736718863
+1550 -1.0280414208 -3.8449091988 12.4954314726
+1556 1.9303001628 -3.6842708784 11.7472746671
+1553 4.0904377572 -0.9585384612 11.624842458
+1551 3.630995484 0.8956327176 11.7123957797
+1557 3.0589899132 4.5709965792 12.0362300691
+1552 -3.3248693664 -3.2969054352 11.6398800899
+1555 0.774487543199999 -4.3020823356 11.8558806313
+1559 0.2630334504 1.5567431208 12.1303520149
+1563 1.75923027 -1.36918089 12.0309203488
+1562 -3.9365589504 2.293408362 11.8530517821
+1561 -2.0681512884 0.253677714 11.6786418668
+1565 -3.9099119064 -2.5353913908 11.917001648
+1572 -5.37216551412 -1.1795276556 12.4795560347
+1558 4.70489592 2.8489426608 12.2408380919
+1560 -5.249846916 -1.640295594 11.6005609609
+1564 -0.3701955948 0.0284412696 12.2033744028
+1568 1.193661762 1.2104608332 11.9579880066
+1574 0.0149829912000001 -3.6775489572 12.0393690237
+1571 0.918485541599999 3.3295073508 12.2603247508
+1567 2.1658097196 1.8347841408 11.8838899838
+1570 2.8880793312 -2.393266446 11.6598406117
+1575 3.435173766 -4.2953411664 11.6234336692
+1573 0.374768769600001 -2.6998404852 12.2841436349
+1569 -0.3667286772 -4.6014779532 12.0234423862
+1579 -2.6476678452 1.0436541612 11.8784813859
+1583 5.4624979188 -0.6451438212 12.1838191254
+1585 -3.5986079976 0.4968642336 12.3548606117
+1580 -0.3289825272 5.49031564212 12.4166220171
+1577 2.0031695748 4.1411535432 11.9496332028
+1578 -0.6748608564 -1.2010924152 12.1064762241
+1581 -1.5322010064 2.5210750116 12.2122806656
+1582 0.1216704924 4.5781687884 12.5407291531
+1584 3.8822053104 0.1063133388 12.2720722132
+1576 -4.6293412704 0.4745375532 12.6242881744
+1586 0.8994784704 5.42614542816 12.6494053757
+1587 -3.1484192472 -0.784699484399999 12.056049389
+1590 3.5407248804 -1.5542471712 12.2355577689
+1589 -3.4137897012 -1.730517204 12.2418849836
+1593 -4.5709920996 1.1254613988 11.8676989287
+1592 2.0915177148 5.0868039054 12.4929805661
+1591 0.00836209680000088 2.9184921696 12.2107307462
+1588 0.91137039 -5.4242019828 11.9273695081
+1602 3.531164934 3.170711928 12.3886500475
+1600 -2.6380636968 0.2604672696 12.5000844052
+1601 -3.1164832272 -4.531837164 12.1051432551
+1596 -3.3679642332 3.247179192 12.419211041
+1597 2.0087864664 0.4242912672 12.0003400578
+1595 -1.7211863136 -5.2239753168 11.8151654204
+1594 3.95537457 1.6806609756 12.2391335383
+1598 2.9231624892 -2.2799238108 12.6536402981
+1599 3.3733609896 -3.0619327236 12.223111458
+1610 -3.13262181 -2.6556110592 12.5335037103
+1609 2.9356186872 2.376437376 12.2685877946
+1608 0.217838508 0.703183726800001 12.6490021835
+1603 4.96526946 -2.3661996612 11.5071163589
+1611 -1.8198365832 0.8809679208 12.4162848394
+1605 3.9934961028 -2.4569412204 11.7240750049
+1607 -1.9026713904 -4.1073371724 12.0546965428
+1604 0.803640207599999 2.3480684268 12.4156100531
+1606 -2.45230479 -1.532140122 12.0517108801
+1620 2.8717595112 1.2382576044 12.2656437556
+1614 0.778996725600001 -3.7718646192 12.7036296984
+1617 -0.489121927199999 -3.0211467336 12.6713238823
+1613 5.0915770548 0.1787302284 12.6121288739
+1616 -5.0693058252 -2.1336482568 12.4513513853
+1618 -4.442938158 -1.1855082132 12.8486028166
+1615 -3.8813026668 -3.8969615004 12.2145077738
+1612 -2.2789733232 1.80619032 12.4100375768
+1619 -4.9860881964 2.3214073932 12.3985134105
+1628 -4.2294879468 1.7011909344 12.610192028
+1621 2.723096358 3.7745496096 12.5388849786
+1626 2.0429404848 -2.3980193724 12.1943150682
+1627 -0.509631486 2.0997371772 12.458056273
+1625 -0.0178571567999999 -5.5002506124 12.2883021609
+1623 0.258231834 -1.6929812496 12.2943469625
+1624 -2.459393976 -3.2812955628 12.140497512
+1631 1.6318519128 -0.3526087884 12.5068770756
+1622 1.3018580352 -3.0685496832 12.2220734199
+1637 -4.3059726624 3.4222904292 12.1145527192
+1635 -1.3613490684 1.6957790268 12.7915318507
+1630 1.4412352416 -5.307921804 12.7672765393
+1633 -1.6120331952 3.5045476344 12.3740026839
+1634 -4.5976293876 -3.0194605944 12.4570464201
+1638 0.310590568799999 3.6930931068 12.9660834949
+1636 4.6446064524 -2.9469130812 12.3024927767
+1632 1.9036528632 3.2213181456 12.3909664512
+1647 1.7635938396 2.2762109832 12.6858472149
+1639 3.6481372548 4.1162045388 12.7039477305
+1641 1.2241336632 -2.0869327128 12.7454738859
+1644 -0.6446139432 3.9689364912 12.8598762518
+1642 1.0020929844 -1.1183183184 12.6347423974
+1645 2.7261666852 -3.8130015936 12.3533246454
+1640 -0.1652233548 -4.1324361816 12.9111651938
+1646 -0.482040206400001 -1.6845608604 12.9663485046
+1654 3.8785446072 -3.899984244 12.4278203052
+1652 -5.4797427384 0.4738605528 13.2167386294
+1650 -3.8230896588 -0.4160272008 12.6954520224
+1648 -1.5116573064 -1.7516726112 12.3105133943
+1651 4.5224307864 -1.7110410852 12.1286063274
+1649 1.516222566 4.3296622872 12.8024487239
+1653 -1.37212524 -0.8551312872 12.7338509195
+1701 -3.1612157976 2.2709817408 12.4840063482
+1656 -1.0356243276 -5.1378492324 12.5378615229
+1664 -1.2249638916 0.133503726 12.7111344636
+1663 1.9390454772 1.2024843492 12.6244424397
+1662 5.0931875136 2.0759226288 12.8923494121
+1661 2.1310671996 -1.6950921504 12.8999781711
+1665 -2.0809886376 2.8581653844 12.9769345179
+1660 0.680786617199999 -0.186673812 13.1543192769
+1657 0.741450834 4.698023652 13.3162762008
+1658 5.38290582 1.1291856708 12.7198504608
+1659 -2.343186426 -4.9758973356 12.557712934
+1673 -5.38993230552 1.0970275548 12.4400164337
+1667 1.6295781864 -4.4134457688 12.3620611057
+1671 1.8896365356 -3.57985512 12.848864562
+1669 -3.1253255256 -3.6175403856 12.8063937498
+1668 -0.0735472524 1.5202192068 13.1464445298
+1666 -1.7568060516 -4.2732403176 13.029645092
+1674 -4.1194860924 2.6832723252 12.7611282225
+1670 2.59634622 2.9115259644 13.0422413902
+1672 4.5319400724 -0.7906448148 12.5192883441
+1680 4.4309989824 0.8928561024 12.9478030398
+1677 3.4949228052 1.414351938 13.0853341709
+1683 -2.16674067 -1.3987553664 13.0032545657
+1679 -0.3111597012 0.0585491736000003 13.2006344177
+1681 -0.8410361736 2.9939300196 12.7583375343
+1675 -0.9076249044 0.9233786328 13.2357335632
+1676 -3.125960856 1.299539274 12.7185574694
+1682 -3.5068751964 4.2372431748 12.401171893
+1678 4.086229584 2.4200721396 12.898949526
+1692 0.5557360968 -4.7920619208 12.6994765075
+1684 -2.532330114 3.7108867728 12.7146110423
+1689 -1.3446859008 5.2702182606 12.8812116019
+1690 -5.21637076056 1.7436264288 13.1825092416
+1720 0.182668703999999 2.6224382136 13.1498252286
+1686 1.2016806312 0.530697498 12.6913653792
+1685 0.3281846112 -2.2348801248 13.1681061859
+1687 -2.8141910412 -0.6370053132 12.9866291975
+1716 2.5907582808 1.838240568 13.0375982815
+1695 3.6462512712 -0.5978744772 12.9412612493
+1696 -2.7769759872 4.7475648348 12.8558441128
+1698 -1.441208592 -2.8939411872 12.3942057094
+1699 0.915626592 1.4695356084 12.8828005503
+1697 3.980625156 -2.3145001488 12.7134262657
+1694 -0.6801027324 -0.8351772384 13.4553121556
+1693 -4.1303191536 3.6320879496 13.0763657624
+1700 2.3436699408 -4.9757259264 13.0415806469
+1707 -1.6157701224 0.871359164399999 13.9407681101
+1710 2.1414650124 -2.6618788008 13.1548738359
+1708 1.8913701288 3.562442898 13.330800606
+1704 1.9977527256 2.3551298292 13.6547353354
+1703 0.701083411200001 0.739274199600001 13.5313858983
+1709 5.4722761296 -0.5515530588 13.1793572453
+1705 -4.13408043 -2.1352604592 12.8052332803
+1706 -2.2882493616 1.1523750384 13.2562853263
+1293 -2.6372727876 1.66501758 10.3396779349
+1702 4.31137011 3.4150165404 12.9651107986
+1721 -3.9417746736 0.9355470024 13.1852319127
+1717 -1.2836508252 -2.2544353728 13.146467352
+1718 -5.0219882244 -0.379071648 12.9661408511
+1715 5.2981920648 -1.4766262656 12.7143646233
+1714 2.5100765412 -0.793657176 12.6915131159
+1712 -3.010971498 -1.9040022204 13.1814180478
+1711 -2.0493864684 -0.0468980195999995 13.2473883449
+1713 1.2409261716 -4.4101502784 13.3193635745
+1719 -3.0043911876 3.0232353828 13.3234127883
+1727 -4.1520889236 -3.6069530844 13.1323986034
+1725 0.2312519268 -3.22277313 13.3347609986
+1738 -0.4800398268 -2.588974122 13.6386022348
+1728 4.3642717116 -3.347357916 13.1745921919
+1736 2.6758399332 0.8530800612 13.2031136272
+1724 4.4257771392 -0.0903086508000008 13.307895915
+1722 -4.4473862052 -0.6967818576 13.7208302339
+1726 -2.0570721636 -3.3201828156 13.0563144881
+1723 -2.8707820752 -2.9078078232 13.4646775346
+1773 1.568468256 2.0117030928 14.4899655671
+1739 -1.8405530472 4.4029068264 12.9202603272
+1735 0.4029551868 -1.2702181524 13.4206688217
+1731 -4.83339721644 2.6249338164 13.4586446308
+1734 5.3040447264 1.455525066 13.661712865
+1737 3.2066335836 -4.4687453196 12.9355326012
+1729 -1.1099114628 -3.371594628 13.3724742284
+1730 3.5777370084 0.421557276 13.1707399459
+1733 1.1909095056 -2.9673910944 13.2181361962
+1732 -1.6676475372 -0.8585274936 13.6891285427
+1746 -0.7079702412 2.2603099968 13.4245801878
+1741 3.4343199792 -2.9826789948 13.2179135449
+1350 -2.5875651288 -1.0550861808 10.3404960776
+1742 -3.065422674 -4.566683028 13.1151701364
+1740 2.8848554676 4.6827408792 13.0144362781
+1745 3.1339708824 -1.4328122604 13.1409915895
+1743 0.1422541416 5.49838983528 13.2983931471
+1744 4.5890855412 0.688216407600001 13.9136923164
+1750 -1.6861150044 -5.2355627328 13.2908572486
+1749 1.6823591304 -0.9080351532 13.3368683011
+1754 3.8194378932 3.9579742896 13.6762800781
+1748 1.9394865024 0.182592972 13.2933454853
+1753 0.923722759199999 2.09880759 13.6597115515
+1751 1.1320939896 2.9362175772 13.1545541081
+1752 -2.6284948032 2.0909967564 13.310886206
+1747 1.6524286788 1.4217668976 13.5570448215
+1760 2.8609748904 -0.2238208608 13.4342731531
+1755 -5.23488277668 -1.6871555604 13.3304951878
+1758 -3.2461815072 4.0131620208 13.3461594971
+1759 -4.84286738448 -2.6070408312 13.3342761927
+1757 3.509095968 3.039954042 13.4300185333
+1756 -3.263355228 0.2071935132 13.2785492969
+1764 -0.2151879216 0.733703140799999 13.9316432322
+1763 -4.577399304 0.2878643352 13.6052184619
+1761 -0.8461435392 1.4989929492 14.057659435
+1762 0.709292004 -5.4542064036 13.432715493
+1765 -3.597872244 -1.1190106044 13.3789628601
+1767 1.9182288696 -3.3689306964 13.8258516309
+1771 -0.3892059156 -5.486263284 13.2164803467
+1770 2.1388293492 4.4778856344 13.6478164826
+1769 -0.7779289608 5.44478809692 13.6860197294
+1768 0.121922311200001 -0.4610561112 13.9366160228
+1766 0.9905168244 3.8049373704 13.6906881403
+1772 -1.412858046 3.5597864088 13.352175137
+1783 4.9676957316 -2.360559678 13.0451008333
+1781 -2.4638246208 -4.917276642 13.8328755303
+1778 -0.398208388800001 3.3306572892 13.5891141417
+1775 -2.056225248 -2.4112446852 13.7644078019
+1777 4.411646754 -1.5380616288 13.1727099525
+1779 -4.4174608164 1.5962325696 13.7654563521
+1782 -0.3537449904 -1.6434240336 13.9572090066
+1776 2.7426501768 -3.6906544524 13.358695243
+1774 -1.6808996964 2.1462050484 13.6251027113
+1780 1.056754338 -1.1192739924 14.1620399907
+1790 -0.2421544356 4.6025507844 13.520200097
+1786 -2.4848505072 -1.5253256004 13.9428029408
+1788 -3.8497149456 -2.727687546 13.5585112951
+1784 0.318132816 -4.5655278768 13.671920669
+1787 4.1663164704 -2.4832127388 13.6812272286
+1791 -2.1877421556 2.9723887836 13.9644453304
+1789 1.5986737692 5.26273103568 13.3451004162
+1785 1.5189274248 -1.8592798296 13.6734524224
+1795 -2.0232963132 5.11438754652 13.598745541
+1802 -0.8925032352 -4.6269749832 13.3868250801
+1796 4.7646431076 2.7478588812 13.5560568205
+1797 -2.5747089036 -0.5293845108 13.9512860226
+1792 4.7689225032 -0.8725198932 13.8277537165
+1794 0.85727064 5.43229645608 13.9942765746
+1798 -2.3005295328 3.9196958412 13.6648226858
+1800 -1.1670983592 0.00675538920000029 13.7148162928
+1799 2.90516253 -2.2574699976 13.6579903757
+1793 -3.1607543292 1.2420672348 13.735806275
+1808 -2.3221916172 1.5907015416 14.1542558535
+1804 3.2420563848 2.1274197372 13.7390762697
+1805 2.8462232604 3.781380072 13.5309756195
+1801 -2.5573617912 0.4702958808 13.9359812854
+1809 -0.9927032772 0.445561447199999 14.5967686116
+1806 -4.3098917796 -1.7399357004 13.7067696662
+1810 5.47840554 0.487727094 13.4808338945
+1803 -5.44003637148 -0.8105133024 13.7654020029
+1807 -1.630039818 -4.3648217184 14.0171684316
+1814 -1.346576964 -1.7501564496 14.0075780825
+1818 1.5317326032 3.0945121908 14.1403937571
+1815 -1.2230444532 4.5229290324 13.6975690336
+1811 -0.0186439487999994 -5.4999865704 14.1450355328
+1812 -3.9121683924 2.9055891852 13.7279107052
+1813 3.7902663072 -1.0776356664 13.8065292472
+1816 1.6683379716 -5.23969596 13.7386024657
+1823 -3.798131034 0.5939822388 14.1518112834
+1817 -0.2043622752 2.5836707412 14.2255294074
+1827 -0.0620703971999994 5.49985277628 14.3818135359
+1820 -5.38137568464 1.1361390084 13.9594883343
+1824 0.8473717704 -3.729753396 13.9375179492
+1819 0.336010569599999 4.5838421004 14.3356121651
+1825 3.6519502572 1.0278533556 13.9937923794
+1821 2.535923094 2.1822597816 14.6766322903
+1822 -1.1659196076 2.888703474 14.0531027233
+1826 -3.1921647264 -2.218265796 14.1132905966
+1832 5.05467045 2.1681782232 14.3172560142
+1834 -3.0504186492 2.4516777936 14.1426632175
+1830 -2.0686395348 3.2299737468 14.9232775376
+1828 2.815689114 0.4960651536 14.1265976039
+1836 -4.2974794308 -3.4331433624 14.1071839097
+1833 4.3410700752 1.694701164 13.5383560592
+1831 -0.3651343716 -3.841105974 13.8464661907
+1835 -5.10992201436 2.0351548428 14.3374372405
+1829 -1.1331356412 5.38206942288 14.6185805309
+1840 2.2211712144 -0.3942262404 14.1832671136
+1844 -3.9288702528 3.8491804764 14.0582035284
+1838 3.765385074 -4.008999798 13.62554873
+1837 -2.857744836 4.69938786 13.9609399062
+1841 -1.8558353112 -3.3518945724 14.0381681726
+1848 2.1223038132 -4.3472925372 13.78711732
+1842 0.2873448072 3.450491862 14.3069616706
+1843 0.151567941600001 1.652239002 14.1117460712
+1839 -3.557895336 -0.3699810444 14.0400963943
+1845 2.722444128 2.9281151844 14.0372949305
+1850 4.3646584884 3.3468397656 14.2496920877
+1849 2.40009843 -1.409693736 13.819714626
+1846 -0.9185447148 -3.1643092008 14.3318378159
+1852 0.1681652148 -2.9671972008 14.2994617445
+1854 1.2742613484 -0.164663554800001 13.9586808401
+1851 -3.6344187396 -4.128109956 13.8107661164
+1853 -5.49882346956 0.1112623428 14.1484313813
+1847 2.551082496 1.451283792 13.9945525428
+1858 -3.9735110544 2.1966910464 14.4305273358
+1859 0.9437329164 -5.4186936624 14.4040901762
+1860 -2.6391251028 -3.857286408 13.6763221668
+1856 -3.0123303528 3.4805466804 14.212676423
+1855 3.6707332536 -0.106864376400001 14.0145808399
+1861 5.207084832 -1.7712556512 13.8165469964
+1857 3.029266386 4.5908217864 14.0885856736
+1862 -3.3230915172 -3.2827145424 14.2734767943
+1863 -2.088637032 5.088017127 14.5962206401
+1871 3.244573056 -3.3191298876 14.1400884009
+1868 1.0035238956 1.1956813884 14.368101743
+1867 4.3860844284 1.4539095204 14.5238490352
+1869 -0.8993587632 -0.9467679288 14.424393248
+1872 1.1664921324 -2.8211624244 14.2069666942
+1865 -1.8556482216 -0.0342990815999995 14.4388108303
+1866 -1.1948094804 -3.9850708572 14.8333614765
+1864 -1.5074962356 1.3758763332 14.7972899664
+1870 -1.8569442996 -1.1525629176 14.6259653075
+1876 2.2539396084 -5.0170418064 14.5178709673
+1881 0.5306502192 0.3013702824 14.4380273735
+1873 1.8166231248 0.6485385768 14.1694124975
+1875 -4.6577335056 2.9251470912 14.3960323648
+1874 0.7531499292 2.5901223948 14.5136122183
+1880 2.1011621532 -2.4659312928 14.2146589753
+1878 1.3965654228 -4.4860841328 14.4606346164
+1877 -0.7584479388 -2.232275184 14.6567831918
+1879 -1.8010355184 2.3129407824 14.6088237769
+1889 3.8207087256 -2.6469651624 14.6051213787
+1886 2.180091354 -1.3292305668 14.7916896707
+1890 4.3299729924 -3.3914276016 14.1729605467
+1888 5.4940238904 -0.260724978000001 14.1434717719
+1887 -3.453659202 -1.296872232 14.3999839472
+1885 -0.8464246464 2.1249533508 14.8397072509
+1883 -3.0904098384 0.1814533188 14.7309263413
+1882 -3.3792296316 4.3394558172 14.7344684757
+1884 0.183882073199999 -1.1602459116 14.6482523607
+1899 3.440689716 1.7559383868 14.6458564575
+1894 0.550725872399999 -2.0363551572 14.1225121852
+1897 -5.25678040944 -1.6179588072 14.3277890268
+1898 -4.4787582324 -1.0761840624 14.6453679037
+1891 1.3297397256 4.5783144096 14.226383631
+1896 -0.322971412799999 1.1489608824 14.8346563713
+1892 -0.3036101868 -0.245250866399999 14.8153272358
+1895 4.084133796 2.3878539312 14.211555122
+1893 3.0265405524 -0.9306651756 14.434977795
+1901 2.1241381584 1.27866804 14.8821907483
+1904 -4.5956804844 1.0289237688 14.5692995147
+1900 -2.5091865408 -2.7853274472 14.5735663361
+1908 1.384318302 -1.920720306 14.6624171938
+1902 2.2520088792 3.7603012392 14.33498218
+1907 4.5582610968 -0.139318873200001 14.4741886441
+1903 4.7280440148 2.8100675388 15.0109798825
+1906 4.3528830984 -1.7146000044 14.3332868055
+1905 0.7443579708 -2.8763636544 15.111691706
+1915 -4.450792356 -0.0838816187999996 14.5248393457
+1913 2.1876386904 5.04642342888 14.4688211708
+1916 5.3781634272 -1.1515734324 14.5824569656
+1914 -1.0039703184 -5.407955172 14.0011227448
+1909 3.2427007788 3.6790120272 14.4440685264
+1911 -3.444417396 2.305203786 15.2729866931
+1912 -2.3861037684 4.1342102112 14.6377042542
+1910 -3.7532108484 3.1165163148 14.7768025965
+1917 -1.23699666 -0.347656490399999 15.1591780671
+1920 -2.3624016624 0.8587687104 14.8365139812
+1919 -0.5457340044 -4.6311061308 14.432209464
+1925 1.0699087572 1.8860381088 15.347623251
+1922 -2.7482425944 -0.7914460632 14.900367372
+1924 0.4256032068 -4.6051829388 14.6671416248
+1926 -3.8261267808 -3.9513149688 14.8207697477
+1921 3.7076605416 -4.0626111036 14.6223785703
+1918 -0.531863232 4.0325166036 14.2889602837
+1923 1.5185357136 -0.583385496 14.8687918508
+1931 -5.08260674832 -2.1016281528 15.1854701033
+1932 -0.760985016 3.2642188452 14.886570729
+1928 4.0077860844 3.7666559448 15.0841253187
+1933 -4.85983544928 -2.5754789112 14.333553824
+1930 3.0590552256 -4.5709184316 14.0559312718
+1934 5.438714352 0.819270149999999 14.4243796948
+1929 -2.5742770128 1.8493031568 15.0865917717
+1927 1.607768754 -3.5417137308 14.7605181136
+1935 -1.50188415 3.7916369664 14.3205697251
+1938 1.1212767732 3.7604211768 14.7632669301
+1936 2.5308915108 -3.873966288 14.5674428844
+1944 -2.3227200456 -0.00309963000000035 15.3443489256
+1939 5.4997322568 0.0599703252000001 15.0905773115
+1942 -5.45576044068 0.6980093616 14.9569520843
+1937 3.0457079424 0.9111717768 15.0067110306
+1943 0.153125014800001 3.0047036892 15.1976463825
+1940 1.320945432 5.3390956206 14.8753005178
+1941 2.710194852 4.3455940392 15.0039213406
+1949 -2.7132990504 -1.7904365988 14.8795654482
+1953 0.57536343 1.0198642632 15.254503405
+1948 -0.1186342728 -3.7792954788 14.8134873765
+1945 -0.4216067448 4.7686938792 14.9615012661
+1946 -0.3499481076 -2.9158395576 15.2615158778
+1952 -3.711990234 -0.549526219200001 15.0120096095
+1950 2.7850504008 -2.8021606524 14.8621352456
+1947 3.2440844856 -0.0838292772000004 14.9200880468
+1951 5.2144211376 1.7496778848 15.2111111085
+1957 -3.0837623376 -4.5541772964 14.5284281661
+1955 3.1403259936 -1.9151463384 14.5675563227
+1961 0.7901455908 -3.8674671708 15.2349836505
+1956 -1.4187071136 2.6535264084 15.4676676758
+1962 -1.1330521332 -1.4991744456 15.2243622352
+1958 -5.03512179912 2.2132027632 15.3184656492
+1959 2.300789952 0.2468137908 14.9466019252
+1960 0.126868651200001 2.017344936 15.042363399
+1954 0.195750890399999 4.001696388 15.1361235066
+1965 3.9767203116 0.5909268996 14.8322792944
+1964 -0.660605268 -3.7815240744 15.6537515525
+1970 0.938595461999999 -1.2784934172 15.293439467
+1971 -4.1075926848 -2.0056817496 14.6641064923
+1969 -4.4597549184 -3.21902388 15.0702553328
+1967 0.611365066799999 -0.3355395048 15.2083212542
+1966 5.1409187892 -1.9549228116 15.1285043297
+1963 -4.5522694908 3.0868313364 15.3771451183
+1968 3.3531758256 2.7468145392 14.7917772984
+1973 3.0438583752 2.024629938 15.5234474979
+1972 -2.2730281836 -3.990152916 14.6851151706
+1975 1.3153726764 0.3782969712 15.0527218971
+1980 1.1401788108 2.9560349124 15.3598137685
+1979 4.8609158316 -2.5736328372 14.3947019161
+1976 1.5539444568 -5.2760131488 15.1833431716
+1977 -1.78013751 -2.1440742576 14.8178639906
+1986 -1.669278036 -3.1209322524 14.9998922458
+1974 -0.767706204 -5.4461659236 14.9719557247
+1978 -1.5291611928 0.5995258392 15.4270245802
+1989 0.0529691327999995 1.54926402 15.9229315182
+1981 4.1951898492 -1.6929915528 15.3204734355
+1983 -3.4558355172 -1.7602023564 15.5484759121
+1997 -1.0059580764 -0.8623643928 15.9847594372
+1982 4.145972916 2.047219248 15.2921145518
+1984 2.5397127516 -0.615586062 15.3926139075
+1985 2.9943068532 -4.6135676976 15.0554091259
+1987 -0.4772765868 2.4326852604 15.7224014896
+1988 -3.9188931636 3.859075734 15.4257615534
+1992 1.7261809968 4.46326185 15.1371756342
+1996 3.263793678 -1.303902546 15.349239808
+1995 0.220574916 -5.495668254 15.1159128334
+1994 -2.9947575684 -3.5154547476 15.1888567417
+1990 -3.3913090644 -2.611012254 15.0110747022
+1991 2.0725300056 3.0156415308 14.9778221864
+1993 -2.9682770484 3.5581444356 15.2112744506
+1998 -3.4101788184 1.411983516 14.6891468756
+2002 0.148598848800001 -2.0759616588 15.0476777507
+2004 4.50619083 -3.1534956552 15.1280662377
+2000 -1.8800660112 1.5016102008 15.7166015942
+2001 -2.7066672384 4.7880842172 15.3228784558
+2005 -5.44713333672 -0.681594584400001 14.7569284717
+2006 1.8422008872 -2.6562459936 15.1615494245
+2007 3.5279909184 -3.3278840004 15.2763759572
+2003 -1.8133731528 -5.1925764192 14.5472882189
+1999 3.2901789744 0.4344228348 15.8510244297
+2011 -4.1769213048 2.3605885776 15.9529479998
+2012 -0.2123190396 -1.294441542 15.5564934173
+2016 -5.3688896634 -1.1939343204 15.612102076
+2014 2.0414241936 2.033275668 15.5328787798
+2015 2.5561671432 -2.0069211684 15.4235010644
+2013 -4.206562272 1.6587627228 15.2412900828
+2008 -0.5451409908 0.4392319836 15.5030805506
+2009 -0.2680513032 -4.6680543924 15.3921130529
+2010 -2.0205274212 -0.925223814000001 15.585915136
+2019 1.7572170468 3.653823948 15.7233666529
+2017 2.3720410332 4.96241120136 15.7146196681
+2022 2.9778407076 3.4600926732 15.3836007939
+2021 -0.8881641756 1.4701354152 15.5943224879
+2020 3.9669632472 -0.888494982000001 14.7723070664
+2025 -2.4214821648 -2.7899566236 15.5696663217
+2023 0.876911553599999 4.5098546196 15.6628929286
+2018 3.8324436036 2.9263708272 15.6508183666
+2024 0.5082117624 2.451869982 15.9513724496
+2027 3.978603366 1.1367587952 15.6700538232
+2030 5.3070353892 -1.4442333216 15.9719397468
+2029 2.3421568164 -3.46849854 15.4618512605
+2026 4.8612953556 0.8147386608 15.2407970309
+2034 -5.4993551292 -0.0947209752000004 15.5648497153
+2032 0.237391882800001 -3.4768174356 15.9709549512
+2033 -3.3108127044 4.3918848012 16.0142371729
+2028 -3.8829284676 0.6265555596 15.1475424062
+2031 1.4751775512 2.5223646348 16.1962488741
+2040 3.8664400668 -2.525031858 15.7670240304
+2036 -3.0532671576 1.0230190416 15.5405042094
+2038 2.3671905216 2.8897302804 15.9329470044
+2037 0.538447016400001 -1.5392309772 16.171975778
+2035 -1.1812995636 -2.4466714836 15.5593254533
+2039 1.1485175604 -2.170593438 15.6933680025
+2043 0.393412602 5.27845363476 15.2440358706
+2041 4.7902609752 -0.8665938792 15.3394674486
+2042 -1.3830095784 4.4994321096 15.0165308944
+2048 -2.4776079768 -4.9104494856 15.2394039715
+2044 4.0564458852 2.0344157424 16.287986117
+2050 2.9163259104 -2.793501408 15.9250146283
+2051 1.48265442 -0.430984238400001 15.856349774
+2047 -2.5057557528 -1.8357410304 15.8566530997
+2052 1.4096502084 -3.3074946408 15.7850332727
+2046 1.5508600524 1.0898438532 15.7145842475
+2045 2.001765624 -4.3844339412 15.2500375791
+2049 -2.2924364688 0.6684101352 16.0846481549
+2058 0.8316738252 0.324819097200001 15.926222658
+2056 -1.5857661396 -5.2665048576 15.5182086591
+2059 -2.589131622 2.7079332036 15.5989225252
+2055 -4.394872146 -1.4180974812 15.5812369136
+2061 0.7693156164 -4.8038206008 15.5849268405
+2054 -0.105000732 -0.363477248400001 15.905349459
+2053 0.6984339288 -0.5888010108 16.4563611197
+2060 -3.2717983116 0.0251650140000006 15.701796329
+2057 2.5382898312 1.212258816 15.8139845354
+2064 2.229451884 0.233296362 15.9438353731
+2065 -1.8417897876 -4.209388686 15.5620297135
+2063 1.4456123076 5.30664899568 15.8669367421
+2062 4.0777510152 -0.176357892 15.4654605874
+2070 -0.5750404476 -5.4698565672 15.9528864214
+2066 3.118329192 2.3266992696 16.4737431266
+2069 -5.33352037116 1.34330709 15.7110263558
+2067 2.8549234536 0.00549161040000001 16.6900188984
+2068 0.565480820399999 3.5342184288 15.9389576564
+2076 -3.9243713988 1.105012866 16.0246451997
+2071 -1.5494945808 -1.6938873804 16.112297151
+2073 -1.086240966 4.495788384 15.971389038
+2074 -4.7356516836 0.5432593572 15.6628959945
+2075 5.4736889592 0.53933349 15.981623812
+2072 -0.4385938908 3.5750716932 15.7806441997
+2078 -0.0319297391999998 0.605239764 16.3450298773
+2079 3.4278395172 4.3011817128 15.6988322857
+2077 -4.2206970996 -2.4025780584 15.5955364541
+2084 3.3260542884 -0.5526457104 16.007018392
+2088 -3.4671486504 3.0643713744 15.9234114509
+2086 1.833073242 -1.3839709332 15.7279086086
+2087 4.084610484 3.683567226 16.253232265
+2082 4.4942027892 0.4251202668 16.1471531077
+2080 -1.4073270228 3.6504946056 15.5443973103
+2081 0.2312468472 -2.4769849428 15.9598806817
+2085 -5.07715234524 2.1149045508 16.3126532448
+2083 -2.0870623668 4.2798379368 15.9208433551
+2097 -4.55912835 -0.4330737696 15.5301420905
+2096 -1.8292133196 5.18713533708 15.5888437649
+2090 -0.630357851999999 -2.958165966 16.220428964
+2094 1.436355024 -1.7673222072 16.5619508118
+2091 -0.8561776368 5.43295238592 15.5780799573
+2095 -4.56198102 -3.0722500416 16.2550703883
+2092 1.9857364944 0.944471064 16.6032286107
+2089 -2.8334088768 1.8520255188 16.0546540553
+2093 -1.9317683964 -2.5676874276 16.4127351359
+2103 1.61736174 4.4357155872 16.3308285262
+2105 1.3947919896 -5.3203055964 16.1695789293
+2102 4.8606015972 -2.57408973 15.8620074011
+2101 1.9893873744 -2.482917114 16.1352738736
+2100 -2.0821622064 3.3210942012 16.204672997
+2099 -1.064603358 -4.60326921 16.0552162031
+2106 5.4807619032 -0.459898458 15.9445760871
+2098 -1.5110482284 -3.3534740856 15.9594657498
+2104 -2.9816917608 -0.937365017999999 15.8616133477
+2115 -4.3328854584 3.387872604 16.3050887643
+2111 -2.2668975456 -1.137633942 16.5315975338
+2108 -1.1723921544 0.8513313072 16.3265980957
+2107 -3.2906131128 -4.407053304 15.531653387
+2112 -0.5894774028 -1.95920757 16.2012937583
+2109 2.291131944 -0.7480456128 16.3520457911
+2114 0.391068823199999 -5.4861255336 16.2104502283
+2120 -1.077243084 3.0335351652 16.3272396903
+2110 2.4691870668 -4.9146646368 15.9572612933
+2113 -2.5159066512 -3.6592394688 16.0548648925
+2121 0.969521026800001 1.641548142 16.3125629728
+2118 -0.591755214 -3.8672545776 16.6476334757
+2116 -1.9291163856 2.3349537036 16.266928282
+2117 -0.795940176 -0.0464956619999999 16.5549268101
+2122 4.9081536492 1.3582947432 16.0788180438
+2124 -3.9123593196 -0.798039817199999 16.1998176065
+2123 0.8711827344 -3.78459057 16.6805232977
+2119 3.115053156 -4.0289876892 15.857639932
+2128 3.1600130928 3.3197844396 16.3644692023
+2132 -3.1977264468 0.6148029144 16.5059610112
+2125 1.4801858448 -4.3263137016 16.1012093345
+2127 -4.011862866 -3.7623869016 15.7849591548
+2126 1.021062 0.7705505952 16.8010766526
+2129 -1.0117672644 1.9795803168 16.4458412883
+2131 3.3338763948 1.3527853692 16.4032138393
+2133 -1.682437578 -0.1351759404 16.1009043844
+2130 2.5487274264 4.0836391932 16.1577741789
+1251 1.2544103472 -0.0415785071999997 10.3361543571
+2136 0.1459127376 -4.426700778 16.2697892069
+2135 -2.6202246108 -0.206614774799999 16.4406500407
+2142 -1.9376729136 1.3710641052 16.7063006874
+2134 -1.64171805 4.442805642 16.8011929398
+2140 2.377869048 4.9594526916 16.7145532315
+2139 0.777577017600001 2.6574435588 16.8998566584
+2137 -0.0869578859999995 4.519007256 15.9436799298
+2141 -3.8609465328 -1.9912284756 16.4329852597
+2138 1.6637851968 0.00718364400000038 16.7367781669
+2145 -1.3470213708 5.33257579152 16.4526984759
+2151 -2.8030437624 2.7066949044 16.5798605906
+2148 -3.6497235456 1.8502238952 16.6322566325
+2150 0.990381536400001 -2.7897315444 16.5307287681
+2143 2.2956588804 -3.8271996348 16.394123824
+2147 -2.260931724 -3.1366654872 17.1663154317
+2144 4.6406707848 -1.8970269948 16.5642410112
+2149 -0.0223980600000004 5.50003851816 16.1260667465
+2146 4.5385092948 -0.570277844400001 16.2607618798
+2152 2.3405088972 -2.0062947072 16.9411651101
+2157 -4.7460568872 2.779387872 16.9825731307
+2153 0.0898368467999999 -3.1227088188 16.8943881902
+2156 2.888286192 -1.5428839368 16.244665539
+2158 -4.7405238792 1.2156100992 16.5917460929
+2154 -0.0706422108 3.143601282 16.6042901499
+2160 3.7170240768 0.505577292 16.7711767279
+2155 2.2830956232 3.3955706472 16.8389336356
+2159 3.4029322356 4.3208972568 16.6982851011
+2163 -4.402586154 -0.6270591684 17.1376292283
+2162 4.941051324 2.4158242956 15.9049226293
+2169 4.3055093004 -3.4223956128 16.0700137493
+2165 4.632436482 2.9649606708 16.6815215101
+2161 -3.45977301 -2.9453641884 15.9509135256
+2164 2.2077231768 1.9152201024 16.5118150977
+2166 3.8718145332 -1.3659416952 16.2083537262
+2167 -1.4153059836 -0.756047482800001 16.8908960681
+2168 -5.01257709168 -0.3077032344 16.4124744445
+2178 -4.7923342596 -1.2801665724 16.4883864168
+2176 -0.0636243395999996 2.1497189268 16.714030711
+2171 -2.7397602072 0.2771066016 17.3282628603
+2177 -2.6456522256 -4.7590069152 16.2134281069
+2170 -2.8739724528 1.3837633104 17.0571587742
+2173 0.7511336136 5.00541070656 16.5222403884
+2172 -1.8307396716 0.402507649199999 16.930854011
+2175 1.314565788 3.4440496608 16.5951442199
+2174 1.5159705648 5.28696807492 17.1016307108
+2181 -1.2933821784 -3.210985578 16.9250129786
+2180 5.4202423164 -0.9334182336 16.8241075446
+2185 -5.04169131924 -2.1980945916 16.1799192862
+2182 1.6281106824 -0.932264357999999 17.0775541051
+2186 4.6941815148 -2.8662006576 16.8045342283
+2187 2.077901886 -5.092390266 16.8633595276
+2184 1.743554598 2.6152009932 17.1550402853
+2179 -2.9111115252 3.700228038 16.6157420831
+2183 2.8295505408 0.899180844 17.1379379046
+2193 -0.5026962876 4.90034217228 16.7693083083
+2192 3.5467237344 -1.450757466 17.1501953046
+2195 -5.46960211632 0.5787906936 16.3410431192
+2190 0.2261102064 4.2176066808 16.844274545
+2191 -3.4670694144 -4.2696435624 16.506272214
+2189 1.548909024 1.615806876 17.2019361708
+2194 3.0638653236 -3.3085187796 16.7693365865
+2196 -0.7227638412 3.8973303096 16.6852837848
+2188 -1.5904532484 3.4785398628 17.0610741207
+2205 2.9626800768 -4.6338820956 16.780391171
+2199 -3.1666842528 -3.3653990724 16.8096965095
+2204 3.74484054 -4.028240064 16.6343656431
+2201 2.6275265784 4.2026073456 17.3185499341
+2197 -0.2487601584 -1.0917899136 16.5962031737
+2202 3.4195420152 -2.2964123616 16.631859321
+2203 -4.1017130016 0.173487310800001 16.3420752363
+2198 -0.494169852 1.273012746 16.9283792407
+2200 -3.4730890548 -0.308006522399999 16.9527458669
+2213 -1.2751227684 1.7108539824 17.3737764837
+2207 3.6994137888 -0.4812509772 16.9319086496
+2214 -1.7773952316 -4.111288218 16.5550946503
+2210 3.9224719692 -3.2868455928 17.2814782555
+2206 2.764909932 -0.832224656400001 17.2286297686
+2208 2.9542496544 -2.5977359112 17.4641355286
+2209 -3.2272405176 -1.2919744656 16.7637739496
+2211 -0.884942500799999 2.6179964604 17.2162084871
+2212 -0.1111658244 -0.328189096799999 17.2269942861
+2218 -2.6539939428 -0.718893146400001 17.3530339156
+2215 5.1579704364 0.0306515196000001 16.7825704772
+2221 0.0317124851999999 2.836945608 17.5505661574
+2217 2.1253818372 -3.0240872076 16.9650717583
+2223 0.1730730804 -2.1261812628 16.8944527663
+2222 0.720921908399999 3.5442619968 17.3935737409
+2219 0.892734067200001 -4.7718372324 16.8382098755
+2220 -2.5990814964 4.84723734828 16.5655876047
+2216 -3.9045879876 1.0025550432 17.0975059066
+2231 1.0520922684 -2.232988818 17.3590974536
+2227 -5.42618482656 0.8981950284 17.2876356863
+2230 5.117793264 2.0145317676 16.8036303799
+2224 -3.7507290588 2.813602992 16.8805511077
+2229 4.3756433808 1.2436883868 16.9174012758
+2226 -2.9036736876 -2.4012410556 16.5790171643
+2232 3.7138942164 2.8702220112 17.0652046785
+2228 -2.2272259284 2.1852145068 17.2095993615
+2225 0.551530368 1.546736316 17.2218532895
+2235 0.707612122800001 -1.31778306 17.1407673304
+2233 -0.5234006772 -3.5139145752 17.5806029936
+2241 -1.1896622616 -1.7713627092 17.0420327551
+2240 -2.21453058 -1.9345871604 17.1333022731
+2237 -0.944838354 4.405513338 17.5173953483
+2238 0.8607804528 -0.1125125448 17.3205319966
+2234 1.5132550872 4.1439734424 17.2816069179
+2236 3.9778699632 3.7982772876 17.3277967877
+2239 4.4765504952 -1.0818672756 17.1197037883
+2242 -0.2894026476 -5.1193741668 16.8448222375
+2249 3.2558366772 0.1169065572 17.5993125104
+2244 -1.2545351016 -5.3551443144 16.6863704557
+2250 -4.2010015344 -2.661670008 17.0923729421
+2243 -3.0148001712 4.3914236304 17.3525802957
+2245 -1.817131962 -0.2719017912 17.6690372795
+2247 -4.1170454724 -3.646972908 16.9418414898
+2248 -3.8190492672 3.957956766 16.9460863663
+2246 -5.43226279872 -0.8606961264 17.1322024923
+2254 5.2152946956 -1.7466845892 17.3686917397
+2253 2.2294981644 -4.2128526684 17.3143749254
+2251 -1.1246871792 -4.5075249168 17.2008087318
+2255 -0.942191076 0.500837752800001 17.3789278591
+2257 -3.400761246 -2.108248986 17.3957154224
+2258 -5.17387596216 1.8657612984 17.2762447859
+2259 -1.6578092748 5.24422097136 17.3990479472
+2256 -4.2569392836 -1.6078182768 17.2673163674
+2252 -0.3377536848 -1.5142068696 17.498203177
+2266 2.657243064 2.2635919512 17.3588173655
+2261 -1.7399744112 -1.2681247356 17.7082672308
+2268 3.736357332 0.992728536 17.6442570947
+2260 0.1846184472 5.49692462088 17.1836223039
+2265 -4.6043620584 0.3309995628 17.3409905055
+2262 -0.63185412 -2.5607010168 17.2984540942
+2264 3.6540497112 1.8799314408 17.1903182171
+2263 1.088738754 0.9209600988 17.7873600015
+2267 -2.128579716 1.048721238 17.6334600427
+2273 -0.3403486584 1.9174652592 17.6773490119
+2274 0.180240840000001 0.6236567292 17.3220519018
+2272 -2.1028228488 -4.9528249104 17.0305733819
+2275 -0.861832096800001 -5.4320636784 17.6027919101
+2277 -2.0932394196 4.1249854932 17.634911534
+2270 1.4639130276 -3.5865151488 17.4611570951
+2271 1.9759376892 0.5450173236 17.5199007497
+2276 1.9283398068 3.3787886208 17.7737245709
+2269 -2.498436444 3.2139989628 17.3859739483
+2278 2.3217516252 1.4370805932 17.8108213254
+2284 -3.56167812 -1.0072208124 17.6621291837
+2279 1.1141385312 -0.861752061599999 17.9324434549
+2282 -5.032879296 -2.218252692 17.4260545892
+2283 -0.8826071184 -0.710084329199999 17.7359262771
+2280 -2.7287478012 -4.1865683028 17.175561253
+2285 2.1666742692 -1.4421624504 17.7483209668
+2281 0.6474156312 -3.071943834 17.7229265387
+2286 -2.5196029164 1.8410195196 18.1017988388
+2295 1.9479520476 -2.4361332924 17.7542503058
+2291 2.0679015756 -0.4084321512 17.8070410211
+2292 2.9599032732 3.2930254248 17.5678907368
+2290 -1.5814446468 -2.543305962 17.6114380333
+2293 0.2461887564 0.000369817200000178 18.1012467226
+2288 -0.3924155616 0.9926299908 18.0541020001
+2287 -4.207197372 2.067795306 17.4334072591
+2294 0.485183086800001 -1.7403897708 18.0193502499
+2289 -3.1903056576 2.2359216336 17.4739565518
+2296 4.1209930668 -2.248496688 17.3429404086
+2299 -4.4000594484 -3.2999491464 17.8359637173
+2298 -3.4378719816 -3.0533963916 17.7202254312
+2300 3.2293792824 -3.9817339944 17.4900057943
+2297 4.4747238468 2.3719185816 17.4809041881
diff --git a/lib/voro++/examples/walls/pack_torus b/lib/voro++/examples/walls/pack_torus
new file mode 100644
index 000000000..56674a158
--- /dev/null
+++ b/lib/voro++/examples/walls/pack_torus
@@ -0,0 +1,2393 @@
+781 -2.98183 -10.5796 2.24335
+1701 -3.51002 -11.1007 1.42227
+94 -3.96031 -10.4655 2.04987
+2300 -2.22896 -11.34 1.57513
+1432 -1.8873 -10.7017 2.31215
+1531 -1.66817 -10.5435 1.33447
+1231 -0.889531 -10.7236 2.39495
+2149 -0.226391 -10.902 1.4864
+990 -1.24004 -11.3748 1.72034
+1646 1.09538 -10.9135 2.19743
+1199 1.54164 -11.5193 1.34014
+886 0.12941 -10.7553 2.41071
+108 2.08174 -10.9724 2.02286
+136 3.519 -11.0337 1.43927
+1371 -7.90924 -8.26861 1.73918
+633 -6.8519 -9.1683 1.73708
+1061 -5.93676 -9.71229 1.79833
+1827 -6.06384 -8.8245 2.25296
+1752 -7.07273 -8.35766 2.28068
+408 -6.37913 -8.11831 1.60049
+1662 -6.21866 -7.96463 2.74195
+643 -5.31418 -8.46363 2.82031
+2302 -5.3296 -8.89543 1.57291
+615 -4.91424 -10.1853 1.91134
+43 -5.16195 -9.38735 2.46092
+217 -3.83667 -9.66755 2.64485
+903 -2.84735 -9.73499 2.76783
+591 -3.22378 -9.41092 1.89618
+201 -4.64817 -8.23416 1.99909
+250 -3.33874 -8.78378 2.92974
+1208 -3.67422 -8.14058 2.21274
+455 -4.44002 -7.86742 2.91154
+1924 -4.25336 -9.14902 1.89488
+2072 -4.39891 -8.86794 2.85592
+54 -2.7452 -8.52324 2.15534
+564 -2.77558 -7.87972 2.92153
+2286 -2.92975 -7.89256 1.36408
+1787 -0.335562 -9.96527 2.00466
+657 -0.846715 -9.83527 2.85864
+1839 -1.32228 -9.81949 1.93289
+1882 -0.321583 -8.98996 2.99757
+1770 -1.8479 -9.82784 2.82723
+811 -1.33054 -8.96966 2.98928
+1641 -0.801643 -8.98198 2.11966
+2101 -2.32134 -9.84416 1.92345
+703 -2.3313 -8.90648 2.98824
+1084 -1.80215 -8.07363 2.79827
+1944 -1.8058 -8.92994 2.05467
+162 -1.25343 -8.09496 1.94636
+464 -0.807162 -8.12452 2.88239
+981 -0.351271 -8.29799 1.51569
+2248 0.664308 -9.98861 1.89073
+573 0.232936 -8.99645 2.15035
+1300 0.163775 -9.85674 2.86424
+1856 0.286314 -8.1949 2.88373
+854 0.790578 -9.05331 2.99115
+185 2.32173 -10.154 2.60869
+710 1.15026 -10.0673 2.76996
+807 2.2443 -9.24316 2.05191
+1510 1.22337 -9.13248 2.06471
+109 1.76695 -9.273 2.95422
+822 0.835583 -8.20977 2.00662
+86 1.84129 -8.32203 2.07376
+563 2.26936 -8.39161 2.97813
+1241 1.28725 -8.17292 2.90546
+395 1.66129 -10.0606 1.81674
+736 3.40283 -10.2226 2.38885
+1190 2.77009 -9.28619 2.90151
+663 3.24097 -9.22698 1.92123
+954 3.75878 -9.3588 2.77061
+456 5.12281 -8.74073 2.77731
+1184 4.57937 -9.34254 2.19094
+441 3.27106 -8.41962 2.99639
+2201 3.42447 -8.14977 2.00532
+578 4.18169 -8.47151 2.57998
+2319 2.74477 -10.2854 1.62836
+824 4.21122 -10.3933 1.81674
+782 5.16862 -10.0858 1.87124
+397 2.65287 -8.50968 1.46746
+2033 4.27189 -8.46532 1.57392
+669 5.72536 -9.33188 2.22973
+1018 6.66406 -8.97928 2.00681
+2020 5.30839 -7.96268 2.12165
+116 6.99223 -8.12901 2.42569
+817 6.06711 -8.45693 2.62134
+2041 5.21633 -8.79404 1.5569
+151 6.04956 -9.90849 1.42925
+1587 6.24722 -8.07373 1.71153
+422 7.87826 -8.08795 1.89031
+1147 -9.69987 -5.94751 1.33788
+670 -8.61947 -7.56523 1.70468
+1211 -9.30392 -6.83264 1.59071
+942 -8.01034 -7.20542 2.42756
+920 -9.36444 -5.72525 2.25295
+178 -8.52302 -5.51175 2.76967
+813 -8.72751 -6.49191 2.33755
+1589 -7.85912 -6.28236 2.80452
+667 -7.9494 -6.85424 1.48923
+1703 -7.86772 -5.66269 2.02116
+1269 -8.70816 -6.04217 1.44087
+2215 -6.55949 -5.27416 2.93713
+1865 -7.20342 -6.60983 2.12403
+1691 -7.23581 -7.53078 1.68174
+225 -7.08384 -7.4517 2.70295
+1980 -6.97064 -5.64722 1.57078
+1169 -6.87839 -6.21976 2.98767
+689 -7.56133 -5.34491 2.98756
+348 -6.23669 -6.99237 2.97383
+2032 -6.35036 -7.18842 1.99583
+1407 -5.35603 -7.47096 2.97796
+434 -5.52366 -7.75045 2.01115
+131 -5.48714 -6.74268 2.30519
+123 -6.2776 -6.19144 2.04142
+801 -5.40772 -5.68103 1.8402
+1845 -5.86272 -6.06822 2.94763
+714 -5.64789 -6.52092 1.33743
+1620 -4.68098 -6.377 1.83538
+1365 -4.2296 -7.27263 2.08002
+576 -4.60374 -6.80979 2.8845
+1989 -3.7173 -6.38951 2.52928
+419 -3.31104 -7.05302 1.75214
+2106 -3.60317 -7.32261 2.86625
+1760 -2.73631 -6.92571 2.56037
+1394 -4.90329 -5.87903 2.68995
+1773 -4.12123 -5.55065 2.15763
+1121 -2.90988 -6.1111 2.00163
+1857 -4.93859 -7.22851 1.38235
+1540 -3.76531 -6.2025 1.48703
+1014 -3.53908 -5.23748 1.35379
+1366 -2.22766 -7.59677 2.01289
+2102 -1.90769 -6.59671 2.1081
+1951 -0.224595 -7.62234 2.24224
+1461 -0.823258 -6.62995 1.89465
+1502 -1.26858 -7.27236 2.51873
+532 -1.49902 -7.21682 1.43903
+1481 -2.14226 -5.95998 1.37426
+804 0.733158 -7.36499 2.53733
+1260 0.179999 -6.7454 1.98159
+1258 0.756527 -7.36669 1.45288
+800 1.73157 -7.32389 2.60533
+690 2.47221 -6.7432 2.25911
+2222 1.5472 -6.51485 1.92581
+868 1.74576 -7.44132 1.60196
+2324 3.46963 -7.05337 2.1292
+1386 3.7684 -7.55047 2.94341
+2053 2.79902 -7.62272 2.61209
+180 4.3157 -7.6062 2.09651
+1529 4.74604 -7.75793 2.99524
+1048 3.22067 -6.08468 2.10581
+1920 4.14624 -5.73902 2.28652
+538 5.03497 -6.99006 2.4128
+143 4.15191 -6.645 2.76071
+1604 4.97133 -6.05311 2.75899
+2112 2.74331 -7.52537 1.60852
+262 4.96534 -5.77001 1.62077
+1755 4.32224 -6.59406 1.77549
+471 3.54473 -5.34285 1.51491
+1738 7.73208 -5.41765 2.9637
+308 6.44651 -5.28761 2.01888
+460 5.84554 -5.5729 2.85196
+355 6.68901 -6.09278 2.99908
+196 7.34938 -5.77248 2.10903
+6 7.62438 -6.40427 2.83464
+533 7.61545 -7.35421 2.51709
+997 5.9441 -7.17226 2.03923
+2345 5.72772 -7.56482 2.94452
+1246 6.67127 -7.23677 2.83862
+2384 6.72545 -6.55255 2.1121
+1762 5.84481 -6.08482 1.98739
+722 5.81272 -6.56949 2.92713
+2289 7.00881 -7.42302 1.71273
+1826 5.26473 -6.71254 1.46375
+1640 9.7302 -6.14014 1.60701
+1224 8.52186 -6.04143 2.57922
+1170 9.3191 -5.50998 2.29084
+1323 8.20597 -5.2585 2.03971
+2366 8.75158 -5.87981 1.47727
+1909 8.0022 -6.63604 1.93624
+152 8.99926 -6.70299 1.99294
+215 8.68393 -7.56654 1.5994
+919 -10.5057 -4.27044 1.8768
+134 -11.2126 -2.89086 1.52905
+190 -10.5515 -3.26623 2.18553
+1647 -10.108 -5.18583 1.85086
+2356 -7.99923 -3.49414 2.97911
+758 -8.75192 -4.03916 2.09647
+637 -9.47976 -4.46269 1.55699
+729 -8.63585 -5.01661 1.90843
+2254 -9.36718 -4.77221 2.56447
+774 -8.46045 -4.52427 2.92148
+2164 -9.76515 -2.90876 2.69858
+2309 -9.83859 -3.89178 2.52123
+44 -9.21475 -3.1733 1.90629
+1934 -8.99782 -3.51268 2.91544
+1563 -8.23109 -3.11806 2.07952
+1706 -9.96257 -3.58743 1.38748
+1777 -7.46137 -4.33741 2.97244
+909 -7.75671 -4.12258 2.04117
+696 -7.13555 -4.89077 2.20267
+996 -7.75725 -4.88798 1.38823
+910 -6.14571 -3.3834 2.2496
+810 -6.78078 -4.03926 1.81674
+2322 -7.01865 -3.44604 2.74313
+2361 -6.48091 -4.29837 2.73476
+1062 -7.2557 -3.15923 1.79442
+922 -6.18522 -4.99301 1.85779
+507 -5.60677 -5.14443 2.66091
+51 -5.60225 -4.22746 2.2511
+1550 -4.84144 -4.86985 2.07542
+877 -4.95761 -4.05697 1.50486
+2316 5.07587 -5.1293 2.39364
+1874 4.39797 -4.8595 1.70965
+204 6.75448 -5.09644 2.95349
+731 5.92511 -4.60684 2.59182
+1961 5.26016 -4.20017 1.94981
+147 6.45292 -4.3499 1.65851
+32 5.62279 -5.02334 1.51256
+816 6.88174 -4.10561 2.83164
+799 7.3382 -4.77737 2.20368
+2267 7.36873 -3.92304 1.68424
+2105 6.61403 -3.3218 1.41643
+1429 5.55179 -3.31555 1.58089
+2095 6.14266 -3.65832 2.31356
+1869 6.9162 -3.10623 2.63291
+2221 6.27675 -2.61493 2.03842
+1127 7.6786 -3.02 1.98991
+2218 7.81598 -3.4223 2.94027
+1679 8.70498 -4.90355 2.83514
+22 7.82807 -4.42055 3.00285
+583 8.26593 -4.26146 2.11113
+1446 8.68767 -3.91106 2.95669
+2380 9.06902 -4.74377 1.68848
+1028 9.42763 -3.821 1.84925
+2025 9.58374 -4.52509 2.54366
+1051 10.3119 -3.63847 2.28974
+664 10.1825 -4.97639 1.88605
+1091 8.61839 -3.32766 2.14313
+189 8.6298 -2.80631 3.00843
+166 9.50987 -2.82893 1.95229
+1357 9.49909 -3.35777 2.80483
+1727 10.3358 -2.65475 2.493
+1763 10.1388 -3.33461 1.34767
+1271 10.9797 -3.04551 1.80533
+199 10.8564 -4.00573 1.54164
+638 -11.0925 -0.144316 2.13476
+1428 -10.8499 -2.20648 2.1662
+1986 -10.5595 -1.53686 1.38019
+1615 -11.481 -1.93567 1.39066
+2372 -10.7148 -1.24526 2.40347
+728 -11.3986 -0.995435 1.71168
+1456 -10.2284 -0.664934 1.74566
+1846 -10.0658 -1.94863 2.72577
+1367 -7.89644 -2.18348 1.95337
+2050 -8.11308 -1.70883 2.89276
+904 -9.69422 -1.50662 1.90046
+814 -9.97582 -2.52239 1.75706
+2059 -8.54951 -1.34663 1.96572
+1943 -9.86086 -0.977458 2.84795
+333 -9.01488 -2.21697 2.13414
+593 -8.59769 -0.793871 2.85427
+1183 -8.6117 -2.57272 2.97852
+2022 -9.13478 -1.66695 2.96117
+1800 -9.30077 -0.0567947 2.95288
+120 -9.26235 -0.63281 2.12417
+2086 -10.2722 -0.0776003 2.70273
+897 -8.59572 -0.355781 1.42454
+557 -7.61437 -0.78287 2.62585
+1292 -6.90476 -2.18788 1.47537
+1010 -7.60616 -2.58191 2.82847
+934 -5.99052 -2.5681 1.68459
+1039 -6.70561 -2.56552 2.38359
+2038 -7.58912 -1.24697 1.70022
+1988 -7.18579 -1.69677 2.51554
+270 -6.62006 -1.11806 1.92024
+0 -7.66833 -0.238212 1.78075
+1071 -6.67744 -0.117933 1.85991
+1497 7.59102 -1.01775 1.84538
+707 6.60192 -0.891464 1.87436
+2055 6.86511 -1.76757 2.31114
+133 7.54742 -0.372238 2.62472
+1798 6.97986 -2.34591 1.37362
+1656 6.19793 -1.74113 1.53356
+416 7.68308 -2.43475 2.84454
+2269 7.694 -1.42207 2.75937
+2168 7.75117 -2.00324 1.90958
+302 7.67313 -0.0791513 1.51488
+1115 8.67372 -2.31336 2.12475
+1319 9.47995 -2.25661 2.90551
+1651 8.50537 -1.33165 2.10689
+202 8.58748 -1.807 2.98976
+2378 8.47372 -0.805341 2.95435
+706 10.2125 -1.01666 1.65455
+1618 10.2469 -1.66009 2.66308
+1235 9.4403 -1.67969 2.07033
+1133 9.39789 -1.2239 2.96294
+987 10.3668 -2.00867 1.73027
+1883 10.1918 -0.659745 2.74245
+2145 9.26312 -0.194878 2.98711
+1586 9.39575 -0.678911 2.12433
+1711 10.1144 -0.0391355 1.85374
+1953 8.46406 -0.328556 2.07589
+517 11.03 -1.34299 2.12954
+2 11.3501 -2.14207 1.57403
+1643 10.9943 -0.342166 2.23515
+2024 11.6223 -1.21023 1.3369
+372 -10.7466 0.765001 2.39921
+478 -11.3802 0.606645 1.53694
+1733 -11.0464 1.59584 1.92827
+52 -11.2659 2.50043 1.56251
+466 -8.78794 0.830154 2.92282
+695 -9.80036 0.811548 2.85341
+2210 -8.11924 0.0948155 2.77179
+1402 -9.28656 1.70035 2.9534
+191 -7.85506 1.22293 2.78888
+1804 -8.68711 2.50207 2.993
+666 -9.75224 2.58162 2.78886
+1959 -9.76466 0.217987 1.88471
+639 -8.28732 0.553234 1.89645
+1789 -10.3196 2.30485 1.86399
+64 -10.2313 1.05209 1.59031
+253 -10.2562 1.67989 2.6428
+1838 -9.1713 1.01459 2.00087
+1277 -9.3733 2.00613 1.9899
+597 -8.41602 1.69873 2.1114
+1927 -7.72799 2.21641 2.84149
+505 -7.29075 0.512239 2.35871
+2196 -7.59094 1.26613 1.72416
+2156 -7.62671 2.28175 1.82279
+331 -6.86214 1.84597 2.31398
+1171 -6.58137 1.00239 1.84737
+1252 7.55896 0.933993 2.64777
+982 6.85334 0.103642 2.08117
+1535 7.14919 1.90153 2.52825
+1947 6.74058 1.09825 2.07032
+948 7.14061 1.82455 1.50603
+1872 7.54374 0.904423 1.50496
+802 6.37555 2.24144 1.99001
+1315 10.1466 0.368723 2.77327
+998 8.32648 0.183477 2.92453
+2352 8.34663 0.722158 2.06788
+431 8.57743 1.14631 2.97175
+1178 10.0739 1.08432 2.06378
+1783 9.30346 0.472987 2.24702
+2280 9.57705 1.17469 2.93138
+2183 10.2969 2.07343 1.51708
+1549 9.02768 1.50975 2.15105
+1457 10.0468 2.03013 2.72216
+592 9.07889 2.09718 2.97333
+559 9.44984 2.3991 1.94074
+353 8.07274 2.00581 2.91251
+1579 8.01578 1.66118 1.97222
+2167 8.48681 2.53643 2.17325
+2274 10.959 0.661754 2.26315
+511 11.5471 0.248222 1.57158
+719 11.4651 1.2433 1.59838
+214 11.326 2.2421 1.5324
+955 10.8507 1.67977 2.25297
+1046 -10.6994 3.21551 2.04913
+926 -9.0263 3.45169 2.89096
+1639 -7.92722 3.231 2.94493
+567 -8.29052 4.20222 2.98027
+1532 -9.93601 3.70468 2.52042
+1915 -9.47574 3.00721 1.92446
+1504 -8.47318 3.75442 2.09429
+19 -8.51902 2.72898 2.02046
+651 -10.2562 4.48063 1.95223
+2242 -9.22571 4.48386 2.66458
+412 -9.45785 5.07449 1.58812
+2336 -9.36553 4.04448 1.74448
+2013 -8.55693 4.85934 1.96332
+932 -6.82443 4.1657 1.78038
+929 -5.51339 4.42094 2.29293
+1672 -7.16875 3.90996 2.88227
+1576 -7.68655 4.4346 2.20787
+809 -5.569 3.55527 1.78312
+724 -7.54303 3.40275 1.9768
+5 -6.95927 2.89943 2.61658
+876 -6.2602 2.60483 1.96034
+671 -6.30063 3.65014 2.4596
+38 -6.37476 4.60446 2.77383
+2110 -7.29131 4.9494 2.98922
+911 -5.77684 4.80993 1.41237
+1881 -4.04414 4.85375 1.343
+1164 -4.87811 4.27676 1.48004
+960 -4.65391 5.0871 2.0987
+53 4.63322 4.46472 1.40101
+775 4.57234 5.16322 2.11656
+745 3.74551 5.16832 1.43168
+916 6.74406 3.02515 2.50411
+211 7.66949 2.92109 2.88775
+1490 6.69706 4.75073 2.88655
+176 7.21357 3.84401 2.85643
+1536 7.51942 2.64315 1.93921
+205 5.76547 5.06607 2.67857
+607 6.27131 3.91202 2.52049
+1070 5.95767 3.18126 1.88916
+236 6.75334 2.9073 1.33913
+2348 5.2004 3.63388 1.38671
+978 6.31091 4.70576 1.90712
+946 5.42256 4.27901 2.12708
+972 7.38971 4.60518 2.15905
+1287 7.23263 3.63802 1.86111
+1822 5.46008 5.18054 1.65199
+923 9.61603 2.93267 2.77292
+574 8.65112 3.09033 2.98796
+595 9.33081 4.89871 2.55425
+831 9.79288 3.88952 2.53599
+631 8.86754 4.06053 2.87893
+853 9.89622 3.34354 1.64027
+233 9.74268 4.39062 1.66478
+1886 7.96271 4.4992 2.97348
+991 8.45447 4.58316 2.10193
+1612 9.00048 3.39577 2.08361
+445 8.08402 3.68299 2.38397
+1011 8.16016 3.25856 1.481
+1919 8.86097 4.05038 1.33725
+1765 7.88074 4.25273 1.35248
+1463 10.499 2.8362 2.29148
+851 10.7389 3.91786 1.70549
+2107 10.5798 4.85891 1.34484
+751 -9.5553 6.05395 1.78564
+858 -8.59021 5.81886 1.67278
+61 -9.13068 5.48086 2.49858
+177 -8.25784 5.20173 2.89968
+674 -8.23397 6.19195 2.69708
+896 -8.80455 6.716 2.06402
+409 -8.10985 7.43862 2.19965
+362 -7.28959 5.94878 2.92724
+1670 -6.29499 5.79099 2.94037
+828 -5.40524 5.41772 2.67277
+300 -5.49735 6.4089 2.86457
+410 -6.74971 5.31805 2.16318
+150 -7.72803 5.54719 2.12215
+1321 -7.38453 6.95877 2.71368
+1200 -6.39904 6.84543 2.90851
+1997 -5.72475 7.6643 2.79131
+2146 -5.94197 5.7979 1.81929
+1843 -7.72137 6.58061 1.84133
+1406 -6.63141 7.44527 2.11494
+2292 -7.37092 7.56377 1.41919
+1726 -6.7726 6.3202 2.11618
+2142 -5.8874 6.78454 2.02296
+76 -4.51166 6.14871 2.65809
+1629 -4.23627 7.09524 2.85125
+2049 -3.29222 7.45081 2.77853
+261 -3.48615 6.50586 2.51344
+1404 -3.84317 5.68126 2.07072
+2111 -2.76064 6.11919 1.93825
+1917 -3.16504 7.20328 1.79744
+1215 -5.00359 6.26918 1.78705
+295 -5.02896 7.27679 2.17151
+1485 -4.15825 6.88185 1.87759
+290 -1.71618 6.46774 1.90884
+344 -1.32445 7.21933 1.36251
+1399 -0.805614 6.83762 2.12583
+2065 -1.51637 7.35713 2.60326
+18 -0.0333251 7.59647 2.63636
+575 -2.1182 7.60282 1.8368
+2363 -2.4275 6.89552 2.47846
+387 0.188199 6.80033 2.03781
+1037 1.85165 6.98315 2.38242
+347 0.914116 7.30961 2.49913
+2260 1.11971 6.5608 1.76456
+2180 2.45454 7.1632 1.54976
+1167 2.07073 6.24764 1.73972
+975 0.436796 7.78475 1.75846
+915 1.45056 7.48939 1.60367
+1896 2.80895 6.57358 2.32764
+702 3.5365 7.08137 2.78748
+1627 4.33989 7.65723 2.94184
+711 4.34843 6.4995 2.74117
+570 3.86629 6.87932 1.86143
+165 2.96825 5.81931 1.68299
+605 2.6135 7.48322 2.78705
+1996 3.21742 7.63213 2.00195
+884 4.75916 7.25557 2.12443
+1393 5.08519 5.80391 2.71146
+1547 3.82331 5.84216 2.20084
+2158 4.76698 6.2582 1.85395
+1830 6.89967 7.5844 1.71545
+1342 7.52444 6.89484 2.13598
+1298 5.30137 6.75404 2.94994
+375 6.31285 6.7564 2.98868
+717 5.3395 7.75311 2.96342
+1426 6.06464 7.51816 2.30598
+1450 7.2315 6.36377 2.93088
+2225 6.96768 7.47135 2.7331
+2340 6.43034 5.75301 2.97618
+1373 7.46599 5.38528 2.96618
+2209 5.91351 5.93016 2.13454
+2124 7.23158 6.20675 1.45786
+654 6.9002 5.51309 2.11286
+389 5.58743 6.82941 1.76138
+1495 6.55273 6.69052 2.01988
+486 9.72627 6.24607 1.37019
+223 8.87816 5.44943 1.81459
+173 8.45403 5.36803 2.81342
+821 9.91912 5.41303 1.89925
+1449 9.20522 7.10645 1.43023
+268 8.19957 6.34368 2.66332
+1995 8.47514 7.20771 2.10673
+280 9.0682 6.39055 2.14043
+2257 7.89234 5.46474 1.98242
+1828 8.20726 6.36514 1.63041
+1192 -8.23652 8.10558 1.45973
+2091 -5.41877 8.6661 2.61176
+207 -6.65941 9.1447 1.76941
+242 -6.34288 8.37767 2.33309
+1237 -7.33842 8.2297 2.18119
+135 -7.53757 8.81682 1.39612
+1273 -5.69909 8.88216 1.67377
+755 -5.70035 7.88354 1.74352
+2157 -5.24297 9.58503 2.22519
+1299 -5.98509 9.85411 1.56208
+326 -4.48386 9.05455 2.68429
+224 -4.75842 7.95513 2.85324
+551 -2.89041 8.6746 2.91405
+1552 -3.81495 8.30203 2.83984
+1073 -3.54915 9.40915 2.72599
+940 -3.07607 10.2395 2.42586
+1289 -3.55325 9.89165 1.52021
+1134 -4.27288 9.91474 2.21888
+293 -2.8354 9.16011 2.01824
+1345 -2.93521 8.15339 2.01167
+346 -4.72339 8.47373 1.90578
+655 -3.92617 7.84963 1.95755
+254 -3.85861 8.99868 1.85984
+678 -4.65728 9.43647 1.42645
+1326 -5.09053 10.3295 1.57268
+1788 -0.397313 8.65014 1.36029
+510 -0.666419 7.81523 1.89573
+1626 -1.44084 8.24442 1.41785
+1377 -0.881048 8.088 2.87266
+1290 -0.739348 9.71435 1.96359
+1361 -0.522993 9.01588 2.99647
+440 -2.01595 8.52764 2.20793
+673 -1.52003 8.88871 2.99811
+10 -1.00465 8.76817 2.14957
+1375 -2.01978 10.392 2.51559
+2247 -2.33544 9.50476 2.87062
+437 -0.160942 9.93791 2.83686
+1616 -1.17639 9.83897 2.85426
+1824 -2.4738 10.0721 1.64529
+500 -1.45343 10.3553 1.67336
+956 -1.71854 9.47361 2.07472
+971 -2.36597 7.82374 2.84955
+1033 0.0109258 8.56758 2.26974
+2311 0.724042 8.20931 2.89224
+1228 0.602385 8.70788 1.39509
+1159 2.11742 9.00222 2.18711
+571 1.80941 9.78858 2.8252
+66 2.58332 10.3546 2.46468
+512 0.843996 10.0775 2.78498
+676 0.468055 9.17419 2.99195
+950 1.2638 8.35873 2.0646
+1078 2.4813 8.45975 2.96271
+1266 2.23634 8.02502 2.01106
+1533 1.6793 7.86513 2.83119
+545 1.5242 8.84595 2.98671
+418 1.17426 9.34741 2.19014
+2244 1.94945 9.97963 1.78542
+12 0.236424 9.50139 1.88034
+1145 0.943642 10.2181 1.74146
+1592 4.23869 10.3911 1.97013
+1712 3.05391 8.61889 2.06103
+506 3.41577 8.06499 2.92918
+105 3.95148 8.99436 1.79627
+1148 2.86719 9.58122 1.8557
+1257 3.5144 9.96625 2.51243
+1196 2.74567 9.41872 2.84453
+1013 3.66795 9.03142 2.85837
+2074 4.43212 9.55197 2.47764
+1278 4.13477 8.03754 2.0227
+75 5.12463 8.3275 2.05243
+1683 4.59303 8.62224 2.84672
+492 4.65452 9.62933 1.37319
+1965 6.18067 8.25951 1.53587
+1718 6.92167 8.48963 2.18871
+1114 6.01956 8.45529 2.6524
+1702 7.72586 7.87462 2.20078
+2075 5.36686 9.19642 2.49447
+1875 5.53348 9.92058 1.77206
+1177 6.26044 9.23347 2.03166
+1993 5.50757 8.99438 1.37754
+203 7.0711 9.18879 1.44008
+1714 7.85651 8.55167 1.46141
+1191 -3.18396 10.8977 1.66572
+2305 -4.15943 10.6931 1.56696
+1834 -0.632544 10.7115 2.41243
+887 -0.0972628 10.4032 1.58997
+2066 -2.20361 11.1196 1.85362
+1149 -0.183679 11.4065 1.74443
+944 -1.18231 11.3179 1.81046
+2019 2.36881 11.1161 1.83785
+550 1.55726 10.6664 2.40328
+70 0.382909 10.8514 2.35366
+1398 1.06464 11.3449 1.7936
+856 3.31435 10.7646 1.86928
+1436 -5.41215 -10.6592 -0.473607
+2295 -4.39521 -10.7442 -1.28996
+2381 -3.50838 -11.2215 -1.07479
+2067 -4.44403 -11.1163 -0.343233
+2226 -5.03119 -10.8539 0.431563
+1230 -3.95339 -11.2715 0.538824
+1217 -4.4753 -10.8196 1.26884
+1723 -3.71402 -10.4365 -0.451126
+341 -2.839 -11.5435 0.809418
+1945 -3.1233 -11.3407 -0.138751
+1259 -2.70706 -10.5079 1.28249
+1835 -3.29218 -10.5244 0.465047
+1948 -2.28472 -10.806 0.424719
+77 -2.20699 -11.7704 0.00998425
+2061 -2.51625 -11.389 -0.941421
+1546 -1.01536 -10.6118 -1.31467
+1097 -1.80511 -10.8754 -0.456353
+2243 -1.44669 -11.7631 -0.77931
+1479 -0.543263 -11.7752 1.10687
+1119 -1.62898 -11.5112 0.791218
+2325 -0.343167 -11.0175 0.481493
+1699 -1.28949 -10.649 0.405936
+1427 -0.804638 -11.0008 -0.408088
+733 -0.910257 -11.9497 0.189654
+1197 -0.443759 -11.8898 -0.69506
+423 1.07821 -10.6343 1.23432
+1447 0.542206 -11.5206 1.28966
+1206 2.04807 -10.5625 -1.32715
+1570 2.36835 -11.5079 -1.1931
+2077 0.128 -11.8968 0.287526
+704 1.26622 -10.9736 -0.406283
+1654 0.653683 -10.9769 0.384176
+841 0.84916 -11.9036 -0.468908
+1522 0.182955 -11.1397 -0.483069
+778 1.1286 -11.8646 0.491866
+658 1.97735 -11.3011 0.466066
+608 1.85228 -11.8224 -0.396882
+986 0.36058 -11.65 -1.32913
+222 1.37757 -11.6203 -1.29417
+407 2.57678 -11.408 1.26129
+1698 2.01633 -10.4184 0.944943
+1027 2.05066 -10.4235 -0.0616407
+1508 4.23966 -10.9432 -1.23081
+1314 2.80388 -10.8043 -0.630392
+1731 2.77776 -11.6701 -0.0243659
+1911 3.60401 -11.3952 -0.525192
+935 2.97017 -10.6797 0.672558
+1819 3.66349 -11.3822 0.4744
+1075 4.43509 -10.9486 0.97165
+2228 3.6138 -10.4982 -0.0710904
+665 4.46868 -11.1279 -0.0996899
+1372 5.22376 -10.6106 -1.00016
+41 5.39753 -10.5249 0.982452
+439 5.37769 -10.7106 -0.00614841
+1492 -8.99586 -7.83296 -0.647058
+1355 -8.51562 -8.45523 -0.0181487
+874 -8.8057 -7.98627 0.816026
+63 -8.08845 -8.69552 0.853527
+485 -8.04943 -8.70375 -0.867372
+1871 -5.55773 -10.3626 1.13021
+1346 -6.10015 -10.3268 0.171849
+1914 -7.3251 -9.34038 0.873227
+328 -5.22277 -9.85867 0.305851
+1999 -5.3027 -8.88017 0.566005
+1847 -6.21451 -8.89685 0.994835
+429 -6.48128 -9.86767 0.974033
+1600 -7.07752 -8.34961 0.836456
+1438 -6.36189 -8.04208 -0.612237
+1973 -6.22163 -8.08679 0.376774
+1977 -7.26967 -9.34695 -0.856049
+2237 -6.852 -8.7264 -0.0639254
+914 -7.76957 -9.12471 0.00212665
+727 -6.9789 -9.74695 0.0272362
+864 -5.56614 -8.6054 -0.380675
+2014 -5.52575 -9.55011 -0.709684
+1156 -6.07007 -9.32455 0.0983602
+2031 -6.32978 -8.99358 -0.920921
+1185 -6.41957 -10.007 -0.764678
+882 -7.20365 -8.22255 -1.11959
+23 -7.59607 -8.06049 0.00793055
+2217 -5.34468 -8.10241 -1.21677
+692 -5.45858 -8.01539 1.04185
+1422 -2.78464 -10.0821 -0.279474
+11 -2.70559 -9.7068 0.667994
+973 -3.07667 -10.1423 -1.23412
+2368 -3.6844 -9.97956 1.21127
+943 -4.2516 -10.2029 0.408409
+1557 -2.63014 -8.35594 -1.24434
+329 -4.6733 -9.60747 1.11127
+1799 -3.48294 -9.35984 -0.584494
+619 -3.62285 -8.63635 -1.29239
+933 -4.51084 -9.19417 0.0419852
+1668 -4.04323 -9.79915 -1.30476
+26 -4.63889 -10.0204 -0.525857
+74 -4.54956 -8.9966 -0.945919
+1107 -3.58442 -9.28962 0.412322
+107 -4.48701 -8.60088 1.07703
+1105 -3.49877 -8.70535 1.22256
+1220 -3.85187 -8.31631 0.349006
+158 -2.85622 -8.38551 0.500189
+1000 -3.22124 -8.32767 -0.429962
+339 -4.62889 -8.25565 -0.279874
+873 -4.34686 -7.9357 -1.18506
+1774 -0.15458 -8.05945 -0.882976
+2229 -0.725163 -8.82989 -1.20232
+872 -0.366275 -9.16243 -0.329134
+315 -0.231162 -10.1263 0.0145953
+1122 -0.314427 -9.78829 -1.11378
+2176 -1.08834 -10.0403 -0.496345
+406 -2.10396 -10.3933 -1.29134
+1364 -0.779416 -10.1439 1.10982
+2184 -0.30921 -9.2777 1.27894
+2276 -1.0012 -8.36286 -0.316869
+1795 -2.48229 -9.34722 -1.08291
+880 -1.78644 -9.58633 1.0554
+1506 -1.87919 -9.89308 0.104006
+1894 -1.59242 -9.15517 -0.515304
+1267 -1.0072 -9.4895 0.382049
+2128 -0.463117 -8.63972 0.524614
+738 -2.5166 -8.93259 1.27206
+292 -1.95963 -8.10248 1.18748
+721 -1.72048 -8.66815 0.354883
+902 -1.19464 -8.78687 1.21508
+1786 -0.997913 -7.86861 0.86661
+2379 -2.51555 -9.10717 -0.112689
+1151 -2.21833 -8.02556 -0.390016
+481 1.28664 -9.03043 -1.31614
+1814 0.268856 -8.92057 -1.27394
+2177 2.33607 -8.86058 -1.28917
+1036 1.45057 -9.93631 -0.807076
+1340 1.85583 -8.03414 -1.00085
+834 0.31213 -8.45638 -0.0846069
+660 0.870854 -8.19834 -0.921671
+974 0.489898 -10.2087 -0.687239
+137 0.262884 -7.93171 0.791201
+1984 0.788728 -9.25679 -0.470877
+2162 1.09197 -10.0829 0.127066
+953 0.582594 -8.78537 1.2274
+2388 0.269021 -9.33242 0.434886
+1792 0.225281 -10.2223 0.899996
+1099 1.06951 -9.65352 1.03848
+301 2.46103 -8.65978 0.49739
+2056 1.17275 -8.88816 0.395811
+1816 1.93862 -9.54923 0.439878
+577 1.76465 -8.90952 1.22312
+1682 1.28481 -8.06713 0.968037
+1265 2.44317 -9.78988 -0.765269
+474 1.80799 -9.05962 -0.429333
+1923 1.68359 -8.12549 -0.00178841
+1093 3.57893 -10.0266 1.12656
+531 4.64016 -10.1129 0.461984
+1092 2.70494 -9.44463 1.07906
+1970 3.56827 -8.92295 1.02429
+1655 4.40847 -9.44279 1.2092
+1276 3.22024 -7.98168 0.826637
+675 4.25794 -8.06875 0.650575
+2208 4.44356 -10.1909 -0.537059
+1681 3.43632 -9.68708 -0.657748
+139 3.81996 -9.56626 0.271206
+450 2.85444 -9.82911 0.147132
+726 3.71397 -8.57544 -0.0314818
+1721 2.83716 -8.92169 -0.42037
+890 5.03433 -9.60095 -1.11392
+1395 4.61145 -8.95416 0.318934
+1907 4.30132 -9.11157 -0.637908
+1928 5.18152 -8.65085 -0.454243
+1530 2.94213 -7.95009 -0.144115
+167 4.41173 -7.92515 -0.370891
+2294 3.50452 -8.77071 -1.16635
+1754 2.84358 -8.00422 -1.16862
+2272 4.69874 -8.29258 -1.25641
+1746 7.28559 -8.13012 -1.00419
+1057 6.73121 -8.76139 -0.454318
+1396 7.65587 -9.15597 -0.511398
+2344 6.80552 -9.67205 -0.982958
+312 7.57206 -7.98729 0.301876
+2351 7.64864 -9.11951 0.5124
+2213 6.95015 -9.68758 0.00756165
+2100 6.10686 -10.2458 -0.52654
+1772 6.18426 -10.1579 0.467914
+2224 5.3378 -9.46117 0.821902
+1779 6.12862 -8.91014 1.15763
+2339 6.89895 -9.54336 1.02109
+2051 7.26292 -8.60648 1.2924
+1408 5.43399 -8.45148 0.602805
+1548 6.68325 -8.40086 0.499575
+313 5.32265 -9.71367 -0.162181
+284 5.92219 -9.21385 -0.832054
+3 6.08029 -9.16513 0.191407
+838 5.64013 -7.91964 -1.0866
+1897 5.99094 -8.13204 -0.172465
+913 8.20695 -8.41929 0.990372
+2115 8.3188 -8.58091 0.00138728
+1717 8.92316 -7.81239 0.628115
+458 8.22228 -8.4829 -0.992774
+630 8.93373 -7.88407 -0.374645
+272 -10.4494 -5.84403 -0.391781
+1023 -9.94449 -6.69664 -0.254476
+129 -10.0701 -5.95764 -1.30798
+28 -9.35886 -5.85079 -0.609869
+1645 -9.39432 -5.89668 0.38941
+1720 -9.46906 -7.05383 -1.05869
+818 -8.61742 -6.54286 -1.18898
+626 -10.3734 -5.90972 0.60173
+596 -8.94259 -6.6865 -0.251458
+645 -9.81561 -6.73861 0.736537
+36 -9.38898 -7.46368 0.19293
+2214 -8.80035 -6.83509 0.729462
+769 -7.85138 -7.70447 0.914672
+97 -8.40766 -6.02933 0.285839
+961 -7.95119 -6.75889 -0.482478
+2108 -8.39751 -7.46367 0.066083
+604 -8.01704 -7.70188 -0.829142
+1089 -8.26851 -5.7526 -0.666385
+229 -7.83897 -5.20241 0.425902
+648 -6.99574 -7.38643 0.454708
+686 -6.93688 -5.73127 0.558208
+1358 -7.79963 -6.79026 0.508573
+1182 -7.6789 -5.21296 -1.26995
+71 -7.28797 -5.49468 -0.355072
+232 -6.34696 -5.8304 -0.246611
+2328 -6.4941 -6.5172 -0.95413
+1195 -7.01687 -6.61958 1.1324
+187 -7.77379 -5.96401 1.07379
+2206 -6.65422 -5.5206 -1.1637
+1176 -7.10467 -7.30167 -0.741903
+83 -6.2719 -7.13572 -0.198242
+820 -7.42082 -6.16626 -1.08434
+1931 -6.04748 -7.35396 -1.26573
+1614 -7.05093 -6.51975 -0.106583
+985 -6.17421 -7.31785 1.02035
+1311 -6.22971 -6.45253 0.526712
+1829 -5.36734 -6.96305 0.481681
+1832 -5.71958 -5.24259 0.262062
+1569 -6.08986 -5.64925 1.10104
+2096 -5.40046 -7.62101 -0.269109
+334 -5.54455 -6.46923 -0.385226
+1470 -5.5152 -5.5218 -0.708568
+1545 -3.93085 -7.79331 1.27873
+1004 -4.66712 -7.67769 0.531978
+393 -3.24436 -6.48302 0.685556
+1542 -4.1404 -6.89641 0.871984
+1328 -3.36323 -7.46163 0.524928
+266 -5.11232 -5.99578 0.537709
+2143 -4.53736 -5.54568 1.25043
+226 -4.08143 -5.9836 0.476435
+342 -2.7521 -5.4447 0.774482
+255 -4.65697 -6.89598 -0.215682
+380 -5.07887 -7.14714 -1.09
+1341 -3.70618 -6.58919 -0.271677
+1567 -4.08571 -6.97565 -1.12783
+688 -3.35112 -7.65598 -1.16082
+1979 -3.89123 -7.56986 -0.318113
+1625 -2.84182 -6.36479 -0.895096
+2178 -2.92864 -7.22044 -0.351538
+2141 -4.75385 -6.21009 -0.996605
+1695 -3.25943 -5.73379 -0.0374426
+1270 -3.76338 -6.02699 -1.10091
+945 -4.29601 -5.55216 -0.398377
+310 -3.07827 -5.32093 -0.930234
+1769 -0.314549 -6.08982 -0.642677
+2236 -2.44523 -6.91293 1.26323
+171 -2.35803 -7.51751 0.468895
+1499 -1.72721 -6.75074 0.582601
+931 -0.311841 -7.28638 1.30242
+2023 -0.208107 -6.28048 1.18795
+1369 -0.72808 -6.86522 0.491229
+1336 -1.85571 -5.74525 0.434353
+1137 -0.907985 -5.93559 0.16684
+1622 -1.18651 -6.09966 1.11617
+154 -1.79896 -6.81722 -0.557043
+237 -2.49038 -6.4171 0.0437528
+303 -2.43046 -7.26682 -1.21903
+848 -1.43631 -7.70776 -0.945727
+285 -0.360423 -7.68037 0.0425829
+1140 -1.44923 -7.54 0.0372815
+509 -0.807228 -6.98679 -0.550596
+192 -2.22536 -5.61393 -0.497131
+1686 -1.30155 -5.96971 -0.751203
+968 2.23099 -6.44857 -0.81413
+2144 2.5962 -5.50838 -0.713685
+2326 1.36071 -6.17403 -1.28963
+240 0.189945 -6.9281 -0.383638
+112 0.464752 -7.35031 -1.2708
+1060 1.64253 -5.79254 -0.328346
+1333 2.38384 -5.54833 0.342715
+1223 0.0889167 -6.01228 0.266374
+1713 0.68546 -6.02113 -0.552005
+2373 1.05479 -6.25096 0.346501
+2283 0.784205 -6.26894 1.32286
+1165 0.34573 -6.92881 0.609212
+1437 1.70734 -5.94622 1.04027
+1935 1.28728 -6.82332 -0.479618
+31 0.834805 -7.58715 0.0282795
+1294 2.2169 -7.71959 0.762687
+859 1.42455 -7.10876 0.708995
+2122 2.3119 -6.72718 1.1864
+1803 2.18372 -7.32501 -0.334838
+98 2.0714 -6.49487 0.242058
+819 4.70657 -5.86433 -0.697546
+1619 3.70877 -5.81878 -0.744631
+894 4.23276 -5.34287 0.0619875
+246 2.88504 -7.06913 0.391231
+21 3.87642 -7.33559 1.23329
+260 4.90591 -7.62476 1.26973
+1138 2.67022 -5.78414 1.30524
+1771 3.33891 -6.49758 1.09049
+1544 3.36957 -5.60149 0.545457
+376 4.58006 -6.82194 0.740742
+1850 4.17515 -5.94766 1.02665
+1742 4.9595 -5.93791 0.405487
+2313 3.84057 -7.29685 0.163528
+1476 3.11067 -7.11222 -0.669223
+1214 5.09136 -7.56762 0.277936
+2062 4.87005 -7.28172 -1.07078
+1946 3.98239 -6.30834 0.111292
+2353 3.01238 -6.24171 -0.161218
+1520 4.05306 -6.77865 -0.771644
+1939 4.87991 -6.72248 -0.212991
+1280 3.83791 -7.77024 -1.20677
+1029 7.16652 -5.57564 -0.490063
+1678 5.6728 -5.37846 -0.959498
+1630 7.3522 -6.6643 -0.669942
+1778 7.78738 -5.64145 1.21635
+1810 5.60383 -6.60118 -1.17158
+780 6.7823 -5.70306 1.17232
+1066 6.49679 -7.03115 -1.03745
+2282 7.28268 -6.56676 1.24511
+1025 6.4331 -6.03373 -1.00043
+377 6.84235 -7.60071 -0.266768
+912 5.68581 -6.13549 -0.289422
+435 6.55437 -6.67227 0.0387942
+263 7.58881 -6.98473 0.251849
+2263 7.34901 -6.02456 0.396386
+1575 6.42911 -5.67943 0.204762
+378 5.85822 -7.60002 0.919662
+1764 6.82358 -7.41507 0.729715
+2170 5.57404 -6.72364 0.513216
+1243 6.28662 -6.68185 1.21651
+599 5.78782 -5.84432 0.965882
+941 5.7644 -7.17455 -0.358792
+2036 10.3833 -5.57369 1.10424
+812 7.81499 -7.43081 1.12319
+1507 8.57198 -7.03611 0.0769697
+1573 8.21768 -6.50531 0.894846
+791 8.11602 -6.1949 -0.226275
+1512 10.0263 -6.411 0.683303
+1658 9.28366 -6.97718 1.04914
+572 9.05398 -6.14514 0.471551
+1785 9.55588 -7.22855 0.0956954
+1325 8.24195 -5.39221 0.358347
+2303 9.419 -5.34264 0.961086
+756 9.60886 -5.58164 -0.231871
+159 7.98174 -7.57249 -0.548901
+1941 8.33784 -6.78197 -1.06774
+1650 10.0683 -6.47327 -0.327955
+2109 9.07017 -6.3759 -0.519442
+977 9.77164 -6.35567 -1.28982
+601 9.34761 -7.21405 -0.999493
+1135 8.6425 -5.41259 -0.578852
+1356 10.3947 -5.69196 -0.869309
+612 10.542 -5.70756 0.125937
+1059 -11.1037 -3.82368 1.20788
+2189 -10.8849 -5.03997 0.0236843
+1443 -10.8335 -4.76137 0.983872
+2098 -11.4918 -3.34868 -0.368517
+2203 -10.5198 -3.58141 -0.410052
+1255 -11.2581 -4.09398 0.253903
+752 -11.5036 -3.13043 0.605489
+1005 -10.4803 -3.35679 0.563677
+2125 -10.8797 -2.62307 -0.00155648
+2261 -10.6088 -5.1443 -1.08654
+742 -11.0847 -4.35763 -0.691511
+447 -10.6131 -2.74697 -0.963211
+792 -11.1504 -3.54476 -1.28777
+2231 -7.98654 -3.58381 1.22903
+2068 -7.91805 -4.7083 -0.441144
+111 -8.81678 -5.1821 -0.0487409
+160 -9.00737 -3.71343 1.08789
+579 -8.25432 -3.13712 -0.524631
+2002 -8.47968 -3.13505 0.455697
+1163 -8.32465 -4.38314 0.728641
+1710 -8.79426 -4.76412 -0.955049
+1496 -8.60257 -4.02482 -0.188021
+1146 -8.02516 -4.2244 -1.3087
+2273 -8.89273 -5.18848 0.951021
+1076 -9.81386 -5.10499 -0.122934
+2347 -10.2686 -4.297 0.294034
+1068 -9.28254 -4.42979 0.420397
+29 -9.88964 -5.08032 0.878351
+850 -9.47012 -3.50684 0.0819742
+1242 -9.52608 -2.86942 0.8471
+1009 -9.12879 -2.61172 -0.213229
+1849 -9.75899 -4.21133 -0.569436
+1400 -9.70454 -3.19025 -0.837118
+472 -8.9001 -2.71089 -1.18995
+860 -8.88151 -3.71068 -1.10173
+869 -7.36281 -3.56978 -0.935905
+1047 -5.80505 -3.7952 -0.538409
+1249 -6.73291 -3.72278 -0.172748
+899 -5.37338 -3.25482 -1.26039
+2392 -6.32932 -2.95646 -0.673089
+403 -6.31898 -4.86106 -0.488496
+2150 -5.82785 -4.48675 -1.26865
+1440 -7.00158 -4.49117 -1.11804
+980 -7.31903 -2.69724 -0.449843
+2343 -5.46202 -2.67617 -0.246343
+1309 -7.12197 -3.97621 0.877311
+269 -7.08132 -4.6319 0.116647
+2297 -5.93567 -4.1728 1.311
+386 -6.14994 -4.34303 0.350468
+992 -6.69442 -4.86704 1.00686
+1933 -5.40257 -3.21985 1.20009
+1494 -7.71468 -2.63277 1.07857
+1021 -7.69357 -3.68633 0.109146
+1203 -7.02118 -3.00442 0.46138
+1802 -6.43779 -3.32488 1.20576
+1227 -5.91641 -3.34743 0.351963
+1637 -5.34499 -4.9646 1.15067
+618 -5.26261 -4.61482 -0.359204
+249 -4.88896 -3.47917 -0.0903434
+705 -4.56085 -4.07429 -0.823664
+735 -4.73267 -5.07482 0.365656
+1922 -3.54271 -4.87728 0.399779
+278 -5.17355 -4.19231 0.542601
+489 -4.2166 -4.56172 1.06484
+1991 -4.26231 -4.22726 0.124992
+2152 -4.75304 -5.01777 -1.11612
+1056 -3.8191 -4.7162 -0.625652
+862 3.34069 -5.00479 -0.263599
+1368 4.05443 -4.9421 -1.09969
+2246 3.86443 -4.72325 0.756865
+1734 4.11886 -4.37309 -0.174891
+1352 4.85991 -5.04136 0.838814
+1327 4.69399 -4.09515 1.12675
+1034 5.04594 -4.26329 0.206824
+544 5.12068 -3.33214 0.638003
+2299 4.75308 -4.04766 -1.08975
+1370 4.89361 -4.89166 -0.558975
+779 5.16167 -3.44912 -0.373913
+590 5.68548 -4.11349 0.989119
+1745 5.56107 -5.18227 0.136848
+1388 6.30505 -4.87773 0.79306
+685 6.01484 -4.0855 0.0341453
+2386 6.80204 -4.0124 0.716619
+49 7.01184 -3.09035 0.106179
+2070 6.19386 -3.23098 -0.466034
+562 7.22693 -4.79985 1.20676
+2185 5.49616 -3.40827 -1.31878
+737 6.11939 -3.23618 0.551507
+1216 5.70021 -4.37678 -0.904101
+1125 7.49099 -3.11622 0.984479
+1960 6.41122 -3.81562 -1.32971
+1293 6.95932 -4.02673 -0.288821
+1465 7.77531 -4.05508 0.491437
+2163 7.10058 -3.21812 -0.913545
+1281 6.43754 -4.87807 -0.409663
+1910 7.24142 -4.85147 0.207239
+930 6.80753 -5.14267 -1.3188
+448 7.29706 -4.26895 -1.22446
+1179 9.10022 -3.18309 1.11217
+1174 8.25486 -3.6846 1.29236
+72 8.25315 -3.9862 -1.30346
+1245 8.23427 -4.69386 1.13353
+2133 9.58805 -4.01214 -0.0308226
+2364 9.97658 -4.30893 1.17102
+1992 10.0302 -4.85998 0.332442
+1887 9.03401 -4.15281 0.872728
+46 10.1734 -4.73458 -0.649968
+1553 8.34769 -3.24018 0.392714
+146 7.82064 -2.65554 -0.289889
+561 9.42936 -5.18833 -1.15428
+2040 7.87143 -3.64325 -0.437293
+368 8.09029 -2.99974 -1.19126
+1753 8.98784 -4.38047 -0.750937
+875 8.83537 -3.41117 -0.557682
+1117 8.14211 -4.59918 -0.263485
+2093 9.04762 -4.83642 0.142085
+79 7.82872 -5.10633 -1.07752
+286 9.82011 -3.1492 0.418081
+1636 9.88072 -4.03335 -1.30328
+1008 10.2115 -3.08712 -1.25596
+4 9.61693 -2.79217 -0.50378
+793 11.0266 -4.65891 -0.133811
+2190 10.8745 -4.7377 0.859869
+1735 10.541 -3.85345 0.48566
+798 11.3779 -3.72369 -0.0507723
+1633 11.3309 -3.4039 0.901491
+549 10.7258 -2.94678 0.037928
+2043 11.6444 -2.6852 -0.298834
+1478 10.4243 -3.73168 -0.50382
+100 11.2721 -3.35486 -0.973877
+2136 10.9123 -4.31405 -1.17748
+309 -11.7198 -0.272845 1.10149
+1538 -10.897 -1.65391 0.407513
+430 -11.8935 -1.43906 -0.203189
+1880 -11.7537 -2.17486 0.460231
+1213 -11.8177 -1.21954 0.771995
+1201 -10.5415 -2.43197 0.929516
+206 -11.9557 -0.487545 0.10242
+918 -11.0394 -0.863 -0.195157
+784 -10.794 -0.735571 0.789751
+267 -10.8958 -1.7912 -0.583657
+1002 -11.6647 -1.38167 -1.17569
+640 -11.7081 -2.37702 -0.518123
+825 -10.8007 -0.85759 -1.17034
+1077 -11.8154 -0.406381 -0.930149
+330 -8.08896 -1.70216 0.962466
+1898 -8.68997 -2.46367 1.2208
+1483 -7.98508 -2.32091 -1.09406
+113 -9.82668 -0.373427 -1.07039
+610 -8.8418 -0.211834 -1.21374
+2018 -8.96454 -1.22026 1.06112
+797 -8.76408 -1.80229 -0.738264
+1837 -9.7439 -2.18567 -0.920212
+1482 -8.20599 -2.26688 -0.0345694
+1113 -8.24243 -1.22607 0.0929066
+1766 -8.21594 -0.947776 -0.891357
+2341 -9.69778 -1.89049 0.978075
+1901 -9.99295 -2.16141 0.0536082
+796 -9.11885 -1.69265 0.192834
+238 -9.94833 -1.14146 0.371084
+231 -10.0206 -1.26596 -0.617245
+878 -9.0969 -0.879582 -0.404595
+1860 -7.85134 -0.728918 0.86756
+1590 -10.2089 -0.300074 -0.146312
+1514 -9.59829 -0.446869 1.00083
+1360 -8.77146 -0.451025 0.438689
+484 -6.20258 -0.665114 1.13245
+836 -6.01264 -0.1509 0.287469
+2354 -7.56123 -0.0505411 -1.04433
+1599 -6.06723 -1.66093 1.27369
+2355 -6.18025 -1.30838 -1.32606
+795 -5.77931 -1.76336 -0.497203
+2219 -6.6923 -2.01247 -0.826138
+361 -6.79611 -1.17096 -0.0476428
+2076 -6.78186 -0.150023 -0.403656
+1487 -7.5586 -1.62743 -0.513572
+762 -5.9972 -0.771879 -0.502138
+883 -5.88992 -1.26778 0.364525
+1715 -6.94997 -1.30385 0.93334
+560 -7.04187 -0.916885 -1.00045
+1316 -7.31714 -2.04282 0.368513
+723 -5.61107 -2.3718 0.701958
+1413 -6.39603 -2.30709 0.0844374
+1952 -7.71447 -0.401548 -0.114383
+47 -6.96504 -0.372888 0.554547
+1351 5.68762 -2.47949 1.04916
+2092 6.06726 -0.924926 0.890432
+2116 6.98658 -1.33745 1.06104
+1381 7.48328 -2.18352 0.526226
+546 5.56329 -2.58617 0.0324992
+37 6.56782 -2.28635 -0.520291
+1756 6.18805 -0.211249 -1.04181
+106 6.49256 -2.30516 0.477312
+488 5.96544 -0.696224 -0.182043
+1708 5.79148 -1.63039 0.232439
+2197 7.42725 -1.79963 -0.672427
+1175 7.61842 -0.899464 -0.27786
+1864 6.7915 -1.33547 0.0802482
+1564 7.57851 -0.622399 0.683084
+668 6.86496 -0.325137 0.0493247
+20 5.72503 -2.48096 -1.02234
+1861 5.90833 -1.53282 -0.761594
+58 6.75773 -1.0171 -0.880272
+777 6.76583 -0.250742 1.12596
+1749 8.04865 -0.37218 -1.01049
+835 9.03767 -0.756071 1.19187
+554 8.28012 -2.52788 1.15891
+1892 8.08091 -0.0289922 -0.0434227
+1565 9.6976 -2.37996 1.08496
+504 8.91839 -1.75885 1.21851
+1421 7.97614 -1.47415 1.03576
+2284 8.33567 -1.83045 0.145114
+1631 8.48563 -0.860355 0.34035
+832 9.28502 -1.6353 -0.0981382
+1747 9.04083 -2.52143 0.334998
+208 10.0632 -2.20431 0.170728
+1893 9.45848 -0.689745 0.197264
+1339 9.77166 -1.40716 0.837457
+634 10.0431 -0.236986 0.875727
+1026 10.2879 -0.223988 -0.108455
+487 10.2638 -1.24419 -0.0187693
+1390 8.71656 -2.36346 -0.627205
+827 9.08251 -1.71267 -1.29329
+2306 9.96525 -1.89702 -0.784112
+646 8.92297 -0.249372 -0.534769
+13 8.51525 -1.20371 -0.620834
+1102 9.61109 -0.950639 -0.758859
+1964 10.9451 -0.477945 1.24399
+1069 10.6748 -2.58018 0.968912
+2216 11.0304 -1.97827 0.0636138
+759 10.7712 -1.56244 0.936716
+1680 11.8575 -1.538 0.419911
+1957 11.6421 -2.4799 0.679379
+2121 11.1192 -0.846033 0.330339
+1130 11.9543 -0.773065 -0.21425
+2194 11.8646 -0.366139 0.846919
+2037 10.828 -2.41623 -0.817447
+17 11.77 -1.72531 -0.558876
+749 10.5582 -0.493414 -1.23866
+2315 11.2069 -0.174755 -0.499322
+2331 10.8561 -1.36512 -0.815969
+2147 11.6961 -0.929167 -1.17664
+652 -11.6549 0.550002 -1.3294
+16 -10.9177 0.0757261 -0.830842
+764 -11.9542 0.414553 -0.373248
+476 -11.8427 0.615604 0.600252
+1469 -11.1001 0.0429144 0.224498
+1045 -11.8954 1.46594 0.0736289
+1423 -11.7423 1.4583 -0.915828
+1218 -10.5394 0.131264 1.21889
+483 -10.7484 0.908174 0.610767
+1378 -11.6384 2.41802 0.630774
+2021 -11.5008 1.48078 1.01971
+1566 -10.4531 1.82067 0.989723
+1904 -10.9208 1.82702 0.104064
+2000 -11.0973 0.930296 -0.33502
+501 -11.7186 2.39233 -0.377076
+385 -10.6443 1.08575 -1.219
+1209 -10.9312 2.04898 -0.894514
+1363 -8.69283 2.11191 1.23146
+2042 -9.0357 0.911403 0.263843
+1110 -9.88889 0.401111 0.501111
+69 -9.12316 0.468338 1.15872
+2230 -8.3259 0.403557 -0.261368
+1889 -8.12438 0.245642 0.778822
+114 -9.43365 1.42581 1.10963
+491 -9.07677 1.92497 0.284688
+2202 -9.94303 1.39023 0.238293
+1744 -9.65503 2.41699 1.09858
+2005 -9.94756 2.40454 0.142395
+2165 -8.28179 1.49553 -0.21194
+773 -8.37984 1.16084 1.09264
+1468 -8.25141 2.48718 -0.0113219
+2385 -10.1278 0.686935 -0.453842
+1583 -9.28934 0.139639 -0.390951
+1596 -9.55447 0.574324 -1.26555
+1776 -8.48233 0.743499 -1.19447
+1671 -9.14546 1.2709 -0.663512
+57 -9.97748 1.826 -0.672717
+104 -8.1394 1.68809 -1.18715
+182 -5.83943 2.33961 -1.19293
+1031 -6.13563 1.33781 -1.2073
+928 -6.76295 0.560905 -1.11039
+1966 -6.01945 0.550596 -0.425201
+2337 -6.04569 1.79326 1.28172
+1519 -7.21634 0.420324 1.1629
+1968 -6.21268 0.377299 1.12285
+2027 -6.73896 0.572954 0.291763
+374 -7.73778 1.9189 0.895168
+694 -7.63112 1.01714 0.37728
+1103 -7.40538 1.95032 -0.0509096
+1324 -6.47746 2.00823 0.326155
+1888 -6.88243 1.34502 0.955835
+1653 -6.85422 2.4019 1.16832
+1118 -5.95037 1.17261 0.478621
+172 -5.59736 2.39221 0.612088
+1141 -7.5784 0.933809 -0.660061
+1685 -6.65435 2.29504 -0.618667
+1704 -7.10053 1.60074 -1.25043
+547 -5.78656 1.73327 -0.349626
+2245 -6.69987 1.31788 -0.37725
+452 7.45299 0.374092 0.634363
+282 7.34902 0.26028 -0.664
+363 6.11719 1.58277 1.27951
+1551 6.28142 0.596969 1.32687
+2371 6.99777 1.15398 -0.943538
+1728 6.07073 0.763542 -0.835366
+164 6.04586 0.0779847 0.491946
+1793 7.51557 1.17864 -0.0844397
+1486 6.66735 0.649884 -0.0432066
+426 6.88916 1.18728 0.773077
+2266 5.91972 1.15978 0.380438
+1415 5.75434 2.50799 1.17691
+1106 7.58496 2.51647 0.932957
+1359 5.83383 1.72989 -0.648162
+1673 5.63588 2.1124 0.262744
+650 6.80003 1.90201 -0.299192
+275 7.79238 2.13874 -0.0158769
+1301 6.64387 2.16421 0.658487
+2241 6.36551 2.54874 -0.927428
+2166 10.2154 0.696127 -0.593318
+392 9.22085 0.774997 -0.664721
+1761 9.8441 1.24372 1.10311
+34 8.74039 1.18644 1.24265
+163 8.41543 0.840743 0.331661
+2342 8.46861 0.024982 0.910897
+1978 9.26601 0.31573 0.247061
+287 9.34313 0.38449 1.24817
+220 9.44385 2.1422 0.924785
+993 8.21818 0.76642 -0.671757
+2307 9.37989 2.51511 -0.994663
+1790 9.3156 2.50902 0.00353034
+1665 10.2231 2.45192 -0.431412
+1750 8.82384 1.70941 -0.658881
+1310 9.68817 0.0151361 -1.12152
+82 9.80864 1.59922 -0.809399
+27 10.2132 0.630791 0.407042
+1338 10.3589 2.33147 0.552535
+2174 9.50889 1.28901 0.148636
+335 8.49396 2.15792 1.2463
+1831 7.82944 1.54774 0.791017
+55 8.67643 1.8116 0.324527
+1123 7.85365 1.6739 -0.899544
+1418 10.6492 0.606624 1.30675
+613 11.8653 0.806515 0.795673
+2346 11.5416 2.08828 -1.11932
+2278 11.1694 2.25428 -0.0424973
+2323 10.8163 1.49879 0.882168
+1284 11.7601 1.80825 0.734561
+1081 10.468 1.53546 -0.0544669
+1628 11.0983 0.175246 0.503788
+1424 11.1781 0.851289 -0.227646
+641 11.9891 0.205541 0.001086
+744 11.8722 1.58197 -0.318935
+2365 10.7936 1.42265 -0.997554
+757 11.818 0.524503 -0.933878
+383 -10.8563 4.63592 -0.445119
+1439 -11.2863 2.94724 -1.1542
+1841 -10.7302 3.86112 1.26408
+2153 -11.3657 3.39935 0.535729
+1100 -10.7831 2.80593 -0.236928
+2046 -10.616 2.78701 0.787415
+989 -10.4116 3.75389 0.312694
+999 -10.7953 4.64504 0.56816
+1434 -11.2122 3.70095 -0.441871
+699 -10.2982 4.65934 -1.28437
+1132 -8.9057 2.91477 0.625651
+1420 -9.0028 3.91377 0.784004
+833 -9.56346 3.32746 -0.00495006
+1405 -9.8516 3.40729 1.06612
+1863 -8.57833 3.42608 -0.213082
+1813 -8.02695 2.91905 1.14006
+247 -8.65229 4.86001 0.927238
+837 -9.10135 4.29293 -0.197083
+467 -9.95258 4.78106 -0.00330461
+81 -9.8699 4.40877 0.95578
+1610 -8.19529 4.27966 0.226028
+1442 -8.08293 3.98211 1.1891
+1509 -10.1271 3.01796 -1.09556
+1120 -9.29925 2.60536 -0.6527
+1716 -9.21774 3.57388 -0.97463
+1391 -10.086 3.92109 -0.620171
+700 -8.16281 3.6697 -1.09281
+622 -8.45264 2.71439 -1.20099
+218 -9.31905 4.73245 -1.06907
+56 -8.2986 4.63559 -0.788149
+1593 -5.67913 4.14211 -0.620275
+141 -6.28408 3.22076 -0.721388
+1166 -5.3768 3.23898 -1.16447
+494 -5.48771 4.40203 0.504701
+161 -7.57225 2.68446 -0.72186
+513 -7.1944 3.62041 -0.846904
+2006 -5.42928 2.67553 -0.336543
+815 -7.7265 4.94379 1.32502
+1334 -7.67492 3.38334 0.226883
+230 -7.10764 3.40171 1.0554
+103 -6.14002 3.10019 1.09074
+1950 -6.75855 2.98051 0.159692
+319 -5.83567 3.48704 0.145143
+1784 -7.28293 4.3165 0.682637
+1623 -6.66312 4.01302 -0.0549675
+216 -7.43365 4.53746 -1.28136
+1873 -6.33755 4.06753 0.915266
+2113 -6.73539 5.01272 1.21152
+449 -7.40158 4.65421 -0.27525
+451 -6.29562 5.03762 0.305039
+823 -5.40811 5.05469 -0.249083
+1611 -6.50387 4.83181 -0.688458
+2335 -3.20275 5.11054 -0.306236
+1466 -4.93684 3.55138 -0.3017
+520 -5.18505 3.32732 0.889451
+1730 -3.7798 5.03374 -1.16822
+962 -4.26903 4.35283 -0.432134
+1297 -4.54849 4.03696 0.520154
+493 -3.80116 4.68929 0.386345
+2069 -4.85108 4.10355 -1.23317
+1541 -4.72719 5.05421 0.484545
+414 -4.81528 5.11224 -1.06952
+465 4.25573 4.25696 -0.27503
+144 4.66609 3.86639 0.569751
+2212 3.99577 4.62129 0.625468
+1556 4.90802 3.49341 -0.328144
+1844 3.33603 4.99693 -0.0726821
+776 4.99247 4.82712 0.539795
+2279 4.42676 4.55336 -1.23478
+421 5.04716 3.77077 -1.27886
+442 3.57184 5.05922 -1.04355
+525 5.76015 4.41168 1.0778
+1417 6.05766 3.47367 0.897152
+1775 7.40468 3.50974 0.87458
+1527 6.73743 4.2072 1.14857
+2048 7.26496 5.05376 1.27242
+186 6.17003 2.94726 0.0540355
+684 5.24477 3.01718 0.482727
+558 5.43478 2.67798 -0.571979
+427 7.52599 2.69549 -0.803767
+967 7.16824 2.91021 0.109798
+2281 5.84456 3.58788 -0.673724
+2357 6.25088 4.47888 -0.445835
+1985 5.56374 4.07256 0.156879
+25 6.82812 3.40627 -0.696357
+2359 7.39143 4.48796 0.43216
+1136 6.67232 3.83521 0.193767
+691 7.23242 4.30762 -0.538973
+1603 5.5985 5.18859 -0.169023
+847 6.45568 4.88083 0.456883
+1431 5.43615 4.65861 -1.01126
+1385 6.63279 5.06176 -1.20139
+617 7.61546 4.86992 -1.27499
+970 9.97334 4.13348 -1.20954
+1503 9.07924 3.04495 1.15074
+1969 9.86207 5.09688 0.213259
+1674 9.79508 3.24564 0.481822
+2382 9.67478 3.37704 -0.537459
+1561 10.2019 4.1987 -0.226481
+337 10.2837 4.05358 0.819291
+1188 8.24312 5.16584 1.08949
+390 9.23727 4.98176 0.995924
+1534 8.48993 2.64585 -0.543904
+871 8.41931 2.77768 0.446667
+1560 7.81441 3.6692 -0.0238086
+153 8.80436 3.54233 -0.0721475
+730 8.19025 4.58235 -0.452249
+1460 8.39713 4.31192 0.488169
+1275 9.1404 4.2895 -0.666027
+2030 9.3996 4.20946 0.378703
+1212 8.88878 5.19088 -0.0452337
+1222 9.80285 5.02914 -0.788282
+1020 7.80971 3.62781 -1.02755
+251 8.81336 3.43453 -1.06887
+898 10.7276 2.9834 1.21766
+2333 11.5585 2.8186 0.686277
+555 11.2498 3.77065 0.821885
+649 11.5194 3.0923 -0.48529
+2127 10.7207 3.17291 0.111199
+1198 11.2058 4.05039 -0.18553
+611 10.8102 5.00265 -0.658263
+1042 10.833 4.79761 0.370516
+623 10.9769 4.16561 -1.19068
+1202 10.6099 3.28077 -0.879319
+659 -10.4296 5.62091 0.310372
+1304 -9.44477 5.39564 0.620508
+1162 -10.3915 5.27441 1.28032
+1425 -9.66176 6.35154 -1.11457
+1580 -9.96785 6.31128 0.892152
+580 -9.82297 6.30492 -0.105142
+1250 -9.25583 5.47652 -0.397535
+89 -9.33017 7.02181 1.24658
+1652 -10.2533 5.48699 -0.673676
+1574 -8.32267 7.08341 1.20328
+2220 -8.06871 5.78814 0.808793
+2265 -8.34604 5.2523 0.00121411
+95 -8.94368 6.26321 0.717755
+244 -9.47107 7.20581 0.252929
+1891 -8.33806 6.90384 0.154499
+243 -8.51714 6.16408 -0.505304
+1262 -7.97831 7.37061 -0.698075
+1649 -9.04578 7.02166 -0.634167
+568 -7.21296 5.89656 1.31852
+364 -5.30806 5.62608 1.065
+766 -6.57223 6.85971 1.2917
+1562 -5.63961 6.57032 1.07415
+1908 -7.63613 6.20151 -0.00855684
+1462 -7.23117 5.39238 0.428179
+1374 -6.32548 5.87109 0.859863
+360 -6.67976 5.91762 -0.228013
+1477 -5.69995 5.95863 0.0846891
+425 -7.74758 7.67293 0.496294
+644 -6.32974 6.70819 0.296365
+2140 -6.72401 7.57801 0.613287
+553 -7.44984 6.76365 0.797815
+1194 -7.19581 7.09738 -0.135868
+1055 -5.23845 6.85393 0.204467
+1692 -5.6698 7.53567 0.805724
+2081 -5.90082 7.50742 -0.167975
+1929 -7.69912 5.50215 -0.722476
+1331 -6.8626 5.57232 -1.26528
+582 -5.94564 5.64697 -0.856622
+1518 -6.62766 7.24617 -0.946627
+585 -7.22477 6.43779 -0.897621
+603 -5.90225 6.62394 -0.636227
+354 -5.71842 7.60839 -1.16126
+1524 -2.64198 5.4345 0.467631
+2008 -3.18132 5.44309 1.31795
+1913 -2.86663 5.63449 -1.16456
+1261 -2.63054 6.42905 0.370533
+1975 -4.32488 5.80918 1.19854
+1126 -4.79983 7.69054 1.28436
+2304 -3.83871 7.38805 1.07
+522 -3.49127 6.39322 1.31215
+624 -4.60268 6.06972 0.261595
+1937 -3.61469 5.67231 0.444134
+1657 -4.19587 5.35295 -0.316688
+145 -4.61887 6.7488 0.996477
+2090 -3.31577 7.07182 -0.415043
+265 -3.75322 6.66213 0.385796
+771 -4.24695 7.5041 0.164985
+2199 -2.93538 7.35624 0.590591
+958 -5.03049 6.06067 -0.651483
+1049 -3.44836 6.07308 -0.476667
+786 -4.1817 5.95124 -1.17476
+1684 -4.93575 7.40608 -0.573259
+2120 -4.25523 6.67669 -0.479109
+698 -2.12869 5.88003 1.20391
+149 -1.42283 5.87294 0.486676
+2034 -0.925783 6.24053 1.33085
+1902 -0.476591 6.00497 0.176004
+1998 -2.405 6.83777 1.25954
+1697 -2.08335 5.67384 -0.337215
+1498 -0.579457 6.78715 -0.455957
+1955 -1.88599 7.3431 0.544763
+2317 -0.931054 6.82767 0.520425
+125 -1.87031 6.02935 -1.27579
+1709 -1.14841 5.95175 -0.570135
+647 -1.75705 6.6039 -0.118154
+1725 -0.231532 7.72213 -0.412761
+1818 -0.243912 7.16746 1.21249
+2104 -1.18358 7.52658 -0.158763
+1634 -1.55152 6.97737 -1.03056
+1836 -2.55329 6.48898 -0.712092
+1817 -2.35975 7.3956 -0.33469
+1868 0.0606903 6.21568 1.08443
+399 0.784725 7.12028 0.949425
+35 1.04448 6.06163 0.901688
+345 1.73311 6.78984 0.952664
+1669 2.07514 5.79893 0.847654
+296 1.98972 7.7513 0.80386
+1109 2.45433 5.6525 -0.856499
+1124 1.79681 5.75378 -0.108916
+1488 0.0591758 6.86227 0.309649
+128 0.0877094 6.14888 -0.840074
+169 1.30717 6.63466 0.0609852
+2001 1.2237 7.04129 -0.860789
+396 0.516411 6.00864 0.0548249
+45 1.09736 6.0528 -0.759432
+2182 0.18529 7.11266 -1.0952
+2327 2.08979 6.58372 -0.590354
+2233 2.40907 7.03918 0.240616
+1617 0.653087 7.62599 0.0448827
+322 2.50358 7.69704 -0.591778
+2367 1.63881 7.56382 -0.11458
+1523 2.97826 5.37367 0.787806
+2332 4.35737 7.4865 1.20837
+1958 2.8553 6.4599 0.92253
+188 3.78 6.13861 1.19026
+1303 3.97292 7.4667 0.196544
+1286 2.75917 6.0152 0.0238997
+2193 3.38827 7.29652 1.05308
+734 3.13971 6.93175 -0.491628
+2129 4.63761 5.54301 1.16364
+1885 4.6413 6.56998 0.912154
+2094 4.60167 5.20044 -0.337178
+358 4.01555 5.59926 0.372524
+966 3.42627 5.99793 -0.727351
+276 4.42649 6.13849 -0.641473
+1739 5.02241 5.88889 0.281512
+1253 4.74892 6.86671 -0.0369241
+2017 4.66538 7.7129 -0.562839
+239 3.63541 6.52878 0.277809
+1794 4.82762 5.46961 -1.28985
+420 4.03808 7.02009 -0.941464
+681 5.02303 6.86221 -1.09715
+2087 7.7763 7.36705 1.28598
+88 5.36965 7.70487 1.30937
+462 5.50412 6.04559 1.1465
+867 6.34132 5.48959 1.27824
+1096 6.38412 6.54989 1.04353
+1601 6.3541 7.53403 0.862329
+2358 6.06675 5.91821 0.330116
+93 6.50699 6.10031 -0.56302
+1572 7.01635 5.73785 0.581731
+959 7.02038 5.27075 -0.302278
+2264 7.4099 6.28608 -0.173373
+1870 5.5637 6.3984 -0.394946
+1812 5.5691 7.42575 -0.211542
+865 5.53691 6.95207 0.673105
+373 7.12378 7.3194 -0.315373
+1362 6.33481 6.84673 0.0821272
+984 7.20589 6.91827 0.59871
+170 5.79897 5.59781 -1.06327
+1052 7.39787 5.83967 -1.0698
+1152 5.38117 7.7923 -1.25706
+2207 5.99874 6.62158 -1.2708
+1768 6.28465 7.51127 -0.907017
+1160 6.99877 6.76018 -1.13568
+1382 9.88689 6.68343 -0.602674
+257 9.14471 7.71458 0.467273
+1451 10.3777 5.71524 0.828517
+1823 10.2073 5.88229 -1.12037
+398 9.25554 7.35755 -1.01296
+2204 9.71389 6.87133 0.585673
+351 7.90161 6.18919 0.692268
+479 8.84993 5.96213 0.941349
+2079 8.51098 6.98516 0.722043
+446 7.90716 5.32625 0.159458
+320 8.46237 6.09622 -0.155746
+1791 9.43388 6.02246 0.128583
+1064 7.86371 7.61479 0.292828
+628 8.07693 6.966 -0.477314
+842 9.02739 6.9221 -0.139425
+1806 8.34049 5.45809 -0.916164
+2251 9.24707 5.87661 -0.842945
+294 10.4083 5.9472 -0.143883
+279 -8.14621 8.62496 0.571364
+1090 -8.67998 7.99514 -0.328816
+1024 -8.78638 7.84782 0.665235
+197 -8.21366 8.3606 -1.15915
+2296 -6.50114 8.27879 1.29349
+1247 -7.71972 8.31396 -0.278504
+983 -6.58397 9.11579 -0.0105534
+1098 -6.77025 7.99749 -0.29645
+2200 -7.14822 8.47976 0.531698
+539 -6.10352 8.32679 0.374161
+556 -5.97705 9.23487 0.775952
+1379 -6.44305 10.0693 0.289309
+142 -6.96793 9.43449 0.855446
+1700 -7.57143 9.2777 0.069714
+1916 -5.59479 10.3925 0.710741
+588 -5.72321 9.49596 -0.38774
+1940 -7.31163 7.93068 -1.20165
+682 -7.56359 9.08027 -0.916128
+1676 -6.6179 8.75256 -0.941993
+1515 -5.75613 8.41561 -0.560297
+405 -6.63934 9.86651 -0.669756
+1539 -5.82677 10.1611 -1.21102
+2320 -3.16544 9.86011 -0.473286
+1154 -2.83689 9.61615 0.831976
+1317 -3.13733 8.71908 1.15628
+541 -4.08191 8.36998 1.11162
+117 -4.9096 8.91156 -0.367278
+1173 -5.13097 8.07624 0.143828
+181 -5.03617 8.6321 0.968409
+1558 -4.13905 8.50879 0.124664
+2052 -3.20396 8.98868 0.143988
+1493 -3.29334 8.01292 -0.0739396
+1767 -4.83628 10.0447 -0.352361
+2195 -5.06702 9.48285 0.443624
+2085 -4.43673 10.2133 0.720058
+209 -3.91231 9.34232 0.764818
+1240 -4.04753 9.44457 -0.220421
+2007 -4.94301 8.24006 -1.13493
+2258 -4.06419 7.97913 -0.726068
+1189 -3.20708 8.85216 -0.84845
+1925 -4.18466 8.91623 -1.06389
+1705 -3.06593 7.81008 -1.05887
+1112 -5.0691 9.50153 -1.15964
+763 -4.15095 9.91884 -1.11244
+1484 -0.731345 8.44029 -0.897683
+2252 -2.39786 8.39497 -0.325163
+609 -2.37724 8.09034 0.992975
+1302 -0.820161 7.83263 0.737425
+2080 -2.39167 8.52886 -1.32882
+2350 -1.62347 8.29193 0.329444
+1815 -1.64407 8.024 -0.892622
+367 -2.11417 9.01253 1.27676
+2290 -1.79417 9.89628 0.850816
+1722 -0.797733 9.95738 0.987873
+502 -1.1951 9.04416 0.84983
+527 -0.679022 8.60071 0.113937
+366 -2.1453 9.14748 0.282747
+1858 -1.41495 9.04184 -0.400542
+524 -2.14051 9.99313 -0.253251
+433 -0.219527 10.2125 0.210207
+384 -1.16394 9.91072 0.0303939
+1063 -0.601423 10.2737 -0.743071
+2308 -0.194844 9.41502 -0.392845
+1383 -0.11352 9.26155 0.605851
+1954 -1.47346 9.84492 -0.995166
+130 -2.44047 9.49278 -1.06668
+1080 -0.602164 9.43892 -1.30824
+587 0.158487 8.01226 0.825167
+2137 1.12817 8.24475 0.676206
+855 2.27108 9.50104 0.879716
+1225 1.32582 9.44997 1.20169
+829 1.87161 8.61695 1.29154
+1729 1.63582 9.66456 -1.14352
+1458 0.655667 7.97485 -0.907514
+1343 0.779868 9.39739 -0.618135
+297 0.860499 9.16162 0.359058
+1661 0.276159 8.55728 -0.18578
+2330 1.26467 8.47423 -0.296044
+124 1.68032 9.37852 -0.178131
+1905 2.2018 8.65371 -0.63257
+938 2.26596 8.62692 0.371778
+866 0.16806 8.81429 -1.14926
+1157 2.41369 10.034 -0.0192234
+1480 1.18124 8.78683 -1.30152
+2126 1.64382 7.93168 -1.04619
+2383 0.545273 9.97123 0.856977
+540 0.726089 10.2553 -0.108792
+1403 1.52978 10.1247 0.476149
+589 0.256061 10.0239 -1.19342
+740 2.82799 8.11099 1.20957
+73 3.7607 8.20858 0.837576
+195 2.91392 8.30032 -1.28265
+1158 4.03307 10.3473 0.297758
+87 3.6952 9.89089 1.26415
+2073 3.22249 9.0233 1.10404
+1675 4.13454 9.13801 0.670389
+175 3.27501 9.69701 0.362967
+921 4.69105 8.46016 1.15166
+1251 3.01793 7.83218 0.264827
+299 3.04473 9.58051 -0.650199
+1337 3.20248 8.7082 -0.182497
+9 3.5314 7.85155 -0.616648
+2391 2.72004 10.349 1.16925
+477 4.15622 8.41678 -0.0595995
+683 5.0012 8.89397 0.206268
+616 4.89175 7.80322 0.423577
+2154 3.96026 9.371 -0.28597
+1602 4.57666 10.117 -0.50532
+1528 4.91562 9.89248 0.409406
+1805 3.72446 8.86277 -1.11704
+281 4.71915 8.66744 -0.876938
+2044 4.91464 9.56722 -1.2712
+2298 6.36705 9.86227 1.19788
+370 7.19653 8.07394 0.880801
+343 5.58978 8.39188 -0.46936
+881 5.74239 8.32849 0.619172
+1582 7.33946 8.38647 -0.0744992
+499 6.60593 8.84375 0.624188
+787 6.76669 9.75269 -0.869305
+794 6.28813 9.08646 -0.295254
+1743 6.19757 10.1509 -0.147026
+461 5.41462 9.57734 -0.40255
+2291 5.79415 9.42251 0.507822
+2172 7.50576 9.33812 -0.339923
+1219 6.94697 9.75262 0.379997
+1180 7.64855 9.06796 0.613153
+761 5.79944 9.0818 -1.17843
+687 6.77502 8.4528 -0.897563
+1983 5.90349 10.2015 -1.10457
+1142 6.41771 7.99655 -0.0427021
+1642 7.6264 7.91821 -0.937509
+1500 8.61588 7.91258 1.29853
+1313 8.61555 7.80162 -0.375363
+2277 8.41604 8.45465 0.3701
+463 8.19489 8.6754 -0.624667
+60 -5.73125 10.4976 -0.275314
+927 -3.6421 10.7968 -1.05652
+252 -4.60314 10.9381 -0.784892
+715 -3.1202 11.4229 0.809206
+1032 -3.38744 10.4389 0.690534
+1938 -2.90895 11.4637 -0.908871
+2227 -4.08589 11.154 0.682662
+1876 -2.87223 10.7488 -0.12087
+2192 -3.65439 11.4011 -0.195414
+305 -3.93558 10.4401 -0.149811
+1155 -4.91392 10.8976 0.165807
+480 -1.41855 10.8212 0.749254
+1161 -2.41609 10.6967 0.82133
+1972 -2.03545 11.6325 0.99129
+863 -1.01351 11.7896 0.931081
+227 -0.374976 10.9863 0.824507
+1041 -2.5483 11.689 0.0114974
+2173 -1.56476 11.8686 0.0949302
+1971 -1.88282 10.9558 -0.169321
+1104 -0.458168 11.9245 0.050264
+115 -0.882887 10.9935 -0.103686
+2057 -1.42446 10.8519 -1.08015
+1895 -1.90256 11.7002 -0.846893
+1525 -2.46694 10.5352 -1.05497
+1796 -0.85895 11.6687 -0.8982
+1912 2.24658 11.6457 -0.902233
+1741 1.65561 10.4644 -0.518178
+1058 2.1125 10.9416 0.259292
+712 0.174485 11.8456 0.889993
+969 0.63385 10.9604 0.968111
+1848 1.66002 10.7866 1.21439
+581 1.18728 11.795 0.86237
+528 2.16732 11.6301 0.983639
+2058 0.138024 11.1152 -0.116542
+1312 0.629933 11.984 -0.0183475
+508 1.14465 11.1362 0.105951
+2268 1.82946 11.8595 -0.0155052
+1263 0.244052 11.7878 -0.919609
+1128 1.2446 11.8121 -0.829303
+1348 0.797518 10.9166 -0.866883
+1694 4.95671 10.5972 1.3019
+995 4.81844 10.9618 0.374056
+1987 2.81388 11.6622 0.0946263
+1288 4.05295 11.0163 1.21175
+905 3.13561 11.3846 1.01481
+697 2.66707 10.7782 -0.632824
+516 3.08815 10.7131 0.276336
+1489 3.62058 10.429 -0.624662
+1648 3.46052 11.4179 -0.631591
+750 3.86699 11.3455 0.278408
+627 4.418 11.1039 -0.535335
+1150 4.95221 10.6084 -1.2928
+1808 5.73436 10.4506 0.684675
+1 5.39229 10.6877 -0.396908
+102 -2.85061 -10.931 -1.82366
+1344 -3.71626 -10.4228 -2.05336
+259 -0.963175 -10.8427 -2.29328
+2275 -1.69922 -11.2686 -1.63446
+2084 -2.01005 -10.5644 -2.31273
+1690 -0.636404 -11.4966 -1.59511
+2232 -0.021617 -10.7208 -1.39082
+1517 1.05415 -10.6627 -1.38278
+1921 0.544052 -11.077 -2.14232
+118 1.62269 -10.9785 -2.14475
+325 3.77708 -10.534 -2.05308
+2088 3.27638 -11.159 -1.44289
+747 2.61482 -10.8191 -2.11178
+2015 -8.00314 -8.17414 -1.71896
+614 -5.29519 -10.2592 -1.38735
+40 -6.8755 -9.12089 -1.74993
+720 -5.30643 -9.02575 -1.59903
+2054 -6.0384 -8.82309 -2.42154
+861 -6.05555 -9.69131 -1.70158
+1234 -7.15946 -8.30518 -2.2543
+228 -5.31382 -8.24915 -2.88341
+198 -6.36694 -7.92939 -2.73468
+870 -6.29061 -8.26352 -1.60782
+33 -4.63197 -9.97173 -2.10575
+352 -3.90172 -9.55457 -2.68264
+852 -2.9006 -10.0481 -2.5503
+121 -2.8004 -8.10878 -2.95487
+174 -4.32101 -8.54421 -2.92662
+785 -3.04184 -9.07813 -2.90398
+1274 -3.11986 -9.32521 -1.88894
+1903 -5.07651 -9.18534 -2.57807
+1688 -4.33029 -9.00556 -1.92463
+518 -4.69226 -8.09141 -2.1093
+168 -3.56454 -8.42642 -2.27139
+789 -0.440184 -9.50239 -2.95445
+1392 -0.283516 -8.96119 -2.12296
+1976 -2.15954 -9.6201 -1.9884
+1568 -0.828506 -8.57872 -2.93314
+2099 -0.930075 -8.21006 -1.96115
+2135 -1.79108 -8.28016 -2.93501
+2285 -2.39244 -8.65974 -2.18259
+444 -2.0078 -9.25642 -2.92611
+1116 -1.35888 -9.6616 -1.38258
+892 -0.625648 -9.9244 -2.05456
+625 -1.32804 -9.98925 -2.76463
+1663 -1.27029 -9.12345 -2.22067
+2288 -1.69922 -8.71812 -1.40845
+1030 -1.85267 -7.83072 -1.84382
+2064 0.0249154 -10.3924 -2.65523
+1414 1.04008 -10.3204 -2.6427
+906 0.480128 -9.80822 -1.76929
+1248 2.43726 -9.57356 -1.98431
+1473 2.03288 -10.2075 -2.64765
+1707 1.49174 -9.88918 -1.84606
+338 0.765198 -8.87308 -2.16441
+1543 0.0603959 -8.04824 -1.8859
+600 1.79473 -8.80926 -2.15125
+1644 1.08966 -7.95038 -1.87847
+739 2.12194 -7.87103 -1.95726
+2179 1.18571 -8.29894 -2.88873
+1332 0.182306 -8.45063 -2.93721
+1759 0.572964 -9.45868 -2.9599
+1879 2.18711 -8.25332 -2.91323
+988 2.5942 -9.22953 -2.91745
+379 1.5726 -9.35446 -2.9601
+537 4.80397 -8.85583 -2.79628
+2262 3.18169 -8.11579 -2.97558
+1168 4.18395 -8.09336 -2.99587
+656 4.66587 -7.84107 -2.1507
+2123 4.57754 -9.09328 -1.8521
+1419 3.84788 -8.44406 -2.12027
+126 4.87292 -10.2497 -1.86401
+515 3.61159 -9.02907 -2.91109
+713 3.07333 -10.0637 -2.58603
+976 4.08739 -9.83777 -1.4022
+2186 4.21299 -9.76121 -2.51595
+1433 2.7946 -8.58309 -2.18001
+495 3.43103 -9.3489 -1.97962
+891 3.05687 -10.181 -1.45742
+1475 5.39861 -9.51029 -2.28647
+1607 5.87099 -10.0126 -1.47564
+1949 5.28009 -7.98164 -2.93615
+1859 7.26846 -8.99479 -1.55583
+1139 5.49816 -8.7636 -1.63082
+42 6.42395 -8.48281 -1.36564
+716 6.39338 -9.2997 -1.94158
+277 6.85884 -8.47062 -2.31613
+1445 5.91224 -8.68054 -2.57338
+127 7.74165 -8.18457 -1.9238
+2114 -8.75897 -7.53587 -1.57226
+424 -8.53796 -6.82752 -2.24305
+843 -9.36653 -6.43976 -1.84345
+526 -9.66447 -5.49414 -2.1064
+1044 -8.8888 -5.62013 -1.46462
+1083 -8.82142 -5.89692 -2.48198
+1453 -7.94776 -5.58816 -2.86276
+213 -8.05521 -6.0393 -1.84563
+2334 -6.24583 -5.23496 -2.87357
+473 -6.94221 -5.96008 -2.96477
+1890 -7.72299 -7.49195 -2.39656
+140 -7.7158 -6.55168 -2.73446
+193 -7.79697 -7.0116 -1.5219
+1043 -6.92882 -7.47692 -1.7286
+2211 -5.60716 -7.68855 -2.10157
+200 -6.8191 -6.97744 -2.85825
+1221 -7.2287 -5.53689 -2.10211
+1877 -7.05564 -6.51791 -1.981
+2259 -5.32171 -5.57696 -2.70237
+80 -6.12067 -6.83639 -2.15579
+157 -5.65 -6.3031 -1.44464
+454 -6.27374 -5.84722 -2.08469
+1974 -5.51197 -5.33356 -1.6939
+2271 -5.69196 -7.22636 -2.98569
+2035 -5.98737 -6.27016 -2.98136
+957 -4.82546 -7.06794 -2.05301
+566 -3.89039 -7.50207 -1.98913
+438 -2.83396 -7.74134 -2.01556
+530 -3.08761 -7.02875 -2.6756
+2138 -4.82029 -6.06908 -1.98168
+1732 -4.05783 -6.75354 -2.63257
+1719 -3.87937 -5.84181 -2.24002
+2375 -5.00367 -6.50681 -2.88869
+635 -4.7071 -7.4571 -2.98232
+1852 -3.74416 -7.72815 -2.96458
+845 -3.21012 -6.82488 -1.70386
+1272 -2.997 -5.85471 -1.76857
+1144 -0.636252 -7.3969 -1.45673
+594 -0.684467 -6.39519 -1.52015
+1376 -2.15166 -7.38114 -2.68496
+415 -1.21473 -7.14504 -2.4176
+552 -2.36311 -6.54482 -2.18242
+1131 -0.0715678 -6.93642 -2.1425
+1780 -0.426322 -7.69463 -2.693
+1677 -1.56851 -6.86015 -1.52954
+767 -2.0622 -6.00085 -1.40034
+122 0.308569 -6.37321 -1.41076
+1900 1.54832 -7.16542 -1.39346
+2083 2.5518 -5.95163 -1.61995
+2301 0.561348 -7.55143 -2.63067
+979 0.920896 -6.79365 -2.08271
+1238 1.93598 -6.61101 -2.13375
+1035 1.55159 -7.39476 -2.62794
+1409 2.57454 -7.08589 -1.52768
+893 2.55968 -7.34227 -2.73573
+1441 3.5081 -5.52574 -1.7246
+221 3.20641 -7.66491 -2.03845
+536 2.96051 -6.50932 -2.35366
+2314 4.42218 -5.44414 -2.22734
+952 3.38356 -6.48005 -1.45101
+2240 4.03426 -7.09132 -1.92147
+1012 5.01687 -6.88738 -1.98735
+1296 3.92993 -6.28293 -2.51717
+490 4.94232 -6.17289 -2.70946
+2387 4.35105 -6.19951 -1.57399
+1153 3.58351 -7.18861 -2.83823
+2010 4.5922 -7.14639 -2.87637
+708 5.35279 -5.2024 -2.55541
+790 5.33656 -5.86606 -1.79456
+1452 7.40116 -5.97044 -1.38908
+1821 7.56225 -7.27689 -1.46513
+1006 6.27922 -7.76541 -2.83294
+2148 6.61955 -7.61852 -1.83429
+1226 5.64736 -7.67789 -2.05742
+148 7.23569 -7.55568 -2.61948
+1256 6.61619 -6.82778 -2.93194
+606 6.98844 -6.65416 -1.99737
+323 5.95829 -5.99768 -2.8374
+1687 6.95506 -5.88674 -2.93442
+1581 5.99258 -6.69073 -2.09647
+1855 5.60223 -7.02628 -2.96051
+908 7.60129 -6.64312 -2.79202
+1559 6.44917 -5.8075 -1.98015
+1054 7.32125 -5.34492 -2.16874
+1605 8.6018 -7.69126 -1.47364
+857 8.84573 -5.96566 -1.41307
+1782 8.11763 -6.3598 -1.97806
+542 8.14604 -7.3127 -2.28001
+2249 9.00757 -6.85645 -1.89361
+2039 8.84809 -5.92293 -2.50305
+50 8.29487 -5.23008 -1.96735
+2250 7.94658 -5.70751 -2.87856
+1638 9.67685 -5.65987 -2.00899
+1264 -10.6342 -4.32061 -1.6541
+194 -10.5857 -3.39642 -2.09982
+1737 -8.03922 -3.20442 -2.96114
+1918 -9.05552 -4.94077 -2.67665
+1397 -8.95934 -4.36793 -1.8622
+1094 -8.92783 -3.96507 -2.87242
+321 -8.99077 -2.88363 -2.95457
+1833 -8.15254 -4.61255 -2.95571
+1143 -8.15109 -3.9036 -2.2468
+584 -8.27778 -5.07971 -2.0589
+1740 -8.10342 -3.22408 -1.51345
+994 -9.70369 -4.81902 -1.36875
+62 -9.76248 -3.82493 -1.61658
+67 -9.82217 -2.82339 -1.76075
+1074 -9.89619 -4.53928 -2.31295
+1318 -9.76143 -3.4534 -2.66337
+85 -8.97041 -3.3524 -2.0559
+2171 -6.43164 -4.2117 -2.66456
+1516 -7.19738 -4.93042 -2.93069
+1491 -7.22698 -3.5733 -1.93818
+369 -5.74027 -3.72186 -2.07884
+183 -6.43273 -3.69478 -1.33969
+8 -7.03108 -2.74841 -1.40659
+101 -6.30851 -2.89862 -2.0813
+2009 -7.41531 -4.55941 -2.02777
+248 -7.37378 -3.94368 -2.87063
+90 -7.1077 -2.90485 -2.68238
+1205 -6.4756 -4.87961 -1.91848
+2338 -5.5632 -4.64653 -2.42691
+1866 -4.96781 -4.25143 -1.72006
+469 -4.64413 -5.10015 -2.13958
+1454 -3.85395 -5.13835 -1.53188
+772 4.98259 -4.95921 -1.55454
+1085 6.11545 -2.83735 -1.88015
+1598 5.3669 -4.14506 -1.989
+1797 7.36058 -3.47626 -1.84967
+672 7.08667 -3.80353 -2.80521
+2097 5.96036 -4.92926 -1.80671
+1017 6.19586 -3.7195 -2.35613
+2004 6.88108 -2.85309 -2.52623
+1053 6.34752 -5.07663 -2.7825
+2376 6.80969 -4.48099 -2.12047
+621 7.29817 -4.76792 -2.98582
+1613 9.03911 -4.01236 -2.78959
+1001 9.21677 -4.97953 -2.5817
+523 8.29726 -4.76388 -2.90927
+1353 7.80849 -4.3611 -2.12095
+1239 8.07862 -3.77493 -2.93963
+1082 8.54674 -3.38319 -2.06527
+1801 8.34917 -2.78964 -2.94409
+636 9.06283 -4.3908 -1.76882
+602 10.3294 -5.01628 -1.60797
+1186 9.11795 -2.92273 -1.38292
+2362 9.55112 -3.49443 -2.08184
+1513 9.97135 -4.38105 -2.29658
+91 9.34605 -2.86273 -2.84074
+1606 10.2542 -2.85782 -2.41684
+314 11.0176 -2.75661 -1.74658
+1471 10.6174 -3.7126 -1.92408
+642 -11.3679 -2.30749 -1.45875
+283 -10.4677 -1.75459 -1.49044
+1095 -11.3293 -0.257248 -1.82551
+1521 -11.0867 -1.21553 -2.0628
+1809 -10.7213 -2.40858 -2.21496
+311 -10.5761 -0.329932 -2.53558
+350 -8.56934 -0.246661 -2.9531
+2253 -9.45695 -0.102058 -1.99552
+1444 -8.15495 -1.16146 -2.87868
+2293 -9.22582 -1.64299 -2.95287
+680 -8.75582 -2.37621 -2.12209
+806 -9.73566 -0.764019 -2.88106
+1022 -8.93321 -0.918489 -2.29896
+1696 -8.19042 -2.17319 -2.93158
+1851 -8.36154 -1.51903 -1.71521
+2390 -9.59256 -1.85181 -1.96433
+1825 -9.22527 -1.13371 -1.36392
+963 -10.0614 -0.917859 -1.87942
+2078 -9.86593 -2.44917 -2.73254
+1878 -10.3111 -1.55969 -2.60482
+1990 -5.85545 -2.37363 -1.34279
+2155 -7.75466 -2.46219 -2.05811
+1577 -7.37055 -1.68181 -1.55763
+7 -6.52471 -1.92319 -2.03612
+830 -7.33533 -1.68588 -2.57764
+805 -7.72238 -0.746859 -1.74673
+1632 -6.77719 -0.947351 -2.05825
+2029 -7.61889 -0.334409 -2.65174
+2011 -6.30736 -0.311643 -1.33821
+939 7.07729 -2.34804 -1.4342
+1594 6.97785 -1.85618 -2.40166
+2370 6.22364 -1.86786 -1.64955
+1781 6.65372 -1.02054 -1.95985
+846 7.5628 -1.14468 -1.46142
+1994 7.08847 -0.264027 -1.46855
+677 7.4304 -0.988195 -2.59182
+1597 7.78099 -2.58741 -2.11918
+529 7.87694 -1.86968 -2.83978
+709 7.9441 -0.365472 -1.99267
+1236 8.12435 -2.00401 -1.36964
+2063 9.78889 -2.27813 -1.74819
+725 8.8924 -0.736248 -1.42788
+849 10.1676 -1.35016 -1.60197
+241 9.81215 -1.98375 -2.73524
+1040 8.86315 -1.72953 -2.95438
+138 8.74268 -2.31235 -2.11417
+620 8.43708 -0.785076 -2.92454
+569 8.34252 -1.30213 -2.07168
+1007 8.87447 -0.141749 -2.27774
+2310 9.81739 -0.393655 -2.02511
+2169 9.34131 -1.28846 -2.16349
+2159 9.45502 -0.586652 -2.95905
+2071 10.2649 -1.07963 -2.62179
+1232 11.4088 -1.86928 -1.48279
+2003 11.428 -0.0673064 -1.65865
+2130 10.6873 -1.94531 -2.25273
+1884 10.7255 -0.167962 -2.41428
+497 11.0931 -1.04209 -1.9708
+2139 -10.4613 1.85231 -2.50841
+428 -11.2073 1.87606 -1.84016
+2238 -11.093 0.912114 -2.09576
+1554 -10.409 0.241673 -1.71689
+324 -9.47055 1.22005 -2.92947
+543 -9.45614 0.217254 -2.9476
+413 -10.312 0.654565 -2.66947
+235 -7.85788 2.42978 -2.85561
+748 -9.94088 1.22322 -1.92119
+1608 -8.28734 0.167282 -2.08391
+754 -9.48444 2.01877 -2.32697
+1942 -8.57996 0.762359 -2.94368
+1306 -8.63141 1.77655 -2.96508
+783 -9.00891 0.879659 -2.04599
+1842 -8.15992 1.4085 -2.15044
+1050 -10.1606 2.14882 -1.60123
+2318 -9.10429 1.95736 -1.39634
+156 -8.54857 2.3479 -2.13419
+521 -6.87814 0.0628851 -2.07846
+2119 -7.62501 0.677695 -2.64128
+48 -7.26819 1.65527 -2.54457
+1268 -6.4533 2.02251 -1.93089
+356 -6.68825 1.04666 -1.98847
+1016 -7.58422 0.751704 -1.64572
+1129 -7.60363 2.25425 -1.81797
+1350 7.64739 2.01663 -2.79312
+317 7.57721 0.680453 -1.62997
+2374 6.51982 0.524901 -1.7174
+1748 7.58507 1.00938 -2.68124
+1751 6.88154 1.6017 -2.28962
+1088 7.16859 0.152737 -2.38061
+2198 6.2454 1.46855 -1.52354
+746 6.28271 2.37451 -1.94492
+2223 7.0768 2.04232 -1.41397
+1555 8.06852 0.142029 -2.85402
+1956 8.41817 0.79587 -2.17475
+2181 10.2237 1.91256 -2.59536
+743 8.57567 2.36296 -2.64665
+1862 9.36602 1.36957 -2.54128
+1664 7.86434 1.61554 -1.90048
+1467 8.45199 1.42045 -2.95721
+1584 8.99637 1.34397 -1.56994
+586 10.2784 2.31928 -1.42263
+1210 9.41725 2.1725 -1.93883
+1282 9.92509 0.308588 -2.81784
+1330 8.72774 0.266442 -1.37307
+2089 10.0527 1.39001 -1.75596
+99 9.4978 0.567874 -1.95061
+1689 8.96671 0.563702 -2.98983
+803 8.53577 2.24083 -1.45858
+1474 11.3609 0.988687 -1.70793
+2239 10.491 0.48524 -1.53449
+1526 10.6307 0.921505 -2.42481
+1411 11.013 1.90053 -1.96663
+404 -10.8509 3.83126 -1.37958
+210 -10.7879 2.83014 -2.01427
+24 -10.2356 3.65974 -2.14944
+359 -10.0083 2.81077 -2.64085
+84 -9.56801 4.41148 -2.00707
+839 -8.78758 4.4096 -2.64427
+1295 -7.95234 4.24168 -2.1066
+2134 -8.4039 3.48397 -2.85994
+661 -8.58664 4.93087 -1.73047
+1019 -9.3875 3.59695 -2.67796
+1571 -9.03381 2.69918 -2.95007
+598 -9.35249 2.90331 -1.76804
+401 -8.8053 3.77099 -1.86487
+245 -8.00435 3.17414 -1.98912
+1591 -7.15541 3.68986 -1.86028
+718 -5.93803 4.63084 -2.5366
+888 -6.02776 3.01261 -1.91678
+653 -6.37325 4.03184 -1.33812
+1659 -5.57014 3.92308 -1.93238
+889 -6.88208 2.82813 -1.43322
+2377 -7.39956 3.52741 -2.83196
+1853 -6.94228 2.69462 -2.5003
+1389 -6.41699 3.72851 -2.53452
+901 -7.49018 4.57325 -2.93024
+1736 -6.83091 4.63447 -2.07373
+534 -5.75596 4.81784 -1.39244
+765 -4.98385 4.73823 -2.02722
+2389 4.91652 4.83324 -2.06254
+826 5.67714 3.02005 -1.48149
+2026 6.94539 3.06282 -1.62836
+1936 7.76767 2.61933 -1.98446
+1207 5.54448 4.05405 -2.09873
+1233 6.21789 3.32991 -2.26552
+212 6.25616 4.14812 -1.39305
+1472 7.1987 4.03245 -1.71558
+30 5.89743 4.96568 -1.8759
+1660 6.96818 2.72757 -2.58006
+949 7.28984 4.6599 -2.97568
+2205 6.47907 4.29737 -2.35764
+1757 7.13553 3.68832 -2.80225
+1930 6.41541 5.14064 -2.89163
+1305 9.81925 4.67257 -2.33883
+2191 9.75129 3.58391 -2.65616
+432 8.81628 3.31457 -2.94511
+1181 9.53894 2.61213 -2.8287
+1193 9.82526 3.21278 -1.57068
+732 10.393 2.87611 -2.34965
+1537 8.89905 3.03854 -1.98341
+2287 7.90605 4.57179 -2.19048
+1963 8.05305 3.59179 -2.02743
+1435 8.44137 4.31535 -1.38565
+234 9.23967 3.98072 -1.88729
+110 9.08375 5.07519 -1.48416
+1254 7.8635 3.01226 -2.92474
+2060 8.07099 3.99364 -2.98997
+548 9.02006 4.29496 -2.81309
+394 11.1157 2.87035 -1.6381
+895 10.4961 3.85421 -2.02631
+2360 10.4054 4.9892 -1.58788
+1108 -9.85659 5.49942 -1.60064
+788 -9.06353 5.69773 -2.17679
+565 -8.27839 5.27175 -2.67038
+907 -8.30424 5.84989 -1.45108
+632 -8.91493 6.58981 -1.73542
+503 -7.90509 6.80548 -1.53171
+316 -8.66669 7.51031 -1.4248
+1079 -8.23349 6.2301 -2.37483
+1384 -7.88283 7.70149 -2.01706
+535 -6.7117 5.2099 -2.88774
+2255 -5.29841 5.79049 -1.62689
+336 -6.37303 6.4368 -1.50172
+402 -7.0259 7.19356 -1.87469
+2329 -5.21479 6.7529 -1.35242
+1448 -6.5605 6.19722 -2.98741
+2369 -7.18539 6.21249 -2.04052
+2047 -6.2246 5.4526 -2.02605
+1981 -7.49465 5.8375 -2.95054
+964 -7.58818 5.30094 -1.94671
+760 -5.40208 5.47112 -2.67942
+2161 -7.6268 6.97897 -2.66101
+332 -6.66779 7.18561 -2.87266
+1067 -5.63803 7.07702 -2.975
+1072 -5.80449 6.31586 -2.32139
+1758 -6.02819 7.26745 -2.0681
+1511 -3.1639 7.58716 -2.88175
+468 -3.50547 5.8301 -1.91582
+1666 -3.33578 6.64752 -2.51453
+119 -3.31623 6.6649 -1.34459
+1588 -4.33137 7.23798 -1.35281
+1416 -4.49001 5.57774 -2.2764
+96 -4.91754 6.35062 -2.78413
+840 -4.96729 7.18327 -2.22048
+155 -4.23131 6.51314 -2.03426
+318 -3.52428 7.4581 -1.94298
+741 -4.21228 7.07057 -2.87781
+1380 -0.853834 7.27251 -2.44582
+1229 -2.58887 6.27121 -1.93232
+132 -0.0420629 6.84944 -2.04314
+2235 -0.715952 6.40351 -1.38121
+1635 -0.722505 7.43928 -1.36183
+271 -1.53134 6.65549 -1.99541
+951 -2.43648 7.14837 -1.46679
+2103 -2.33962 7.0797 -2.5112
+2160 -1.63146 7.63943 -1.82623
+1724 0.2894 7.59681 -2.6286
+340 1.28938 7.61125 -2.6813
+925 0.774203 6.47714 -1.60461
+936 1.54237 6.80004 -2.1579
+1335 1.82331 6.14955 -1.4541
+1840 2.14693 7.12489 -1.42428
+808 2.53619 6.41344 -2.11833
+1609 0.926586 7.45921 -1.72185
+65 2.30745 7.24062 -2.63436
+388 3.32205 7.00706 -2.71369
+1464 2.95594 7.52764 -1.91629
+1624 4.00126 7.70414 -2.97622
+1291 5.19676 7.35589 -2.96961
+1038 3.97179 7.17692 -1.93229
+2312 3.23871 6.68514 -1.45608
+417 3.08857 5.71169 -1.62907
+1003 4.03596 5.31997 -1.89256
+1086 4.3369 6.28876 -1.62606
+1501 4.98508 6.88828 -2.10473
+307 4.6131 5.86787 -2.49943
+1693 3.65298 6.13632 -2.34155
+770 4.29183 6.75648 -2.82408
+1621 5.4604 6.02491 -1.90689
+917 7.15646 5.23043 -2.09525
+1283 7.42783 6.22554 -1.9919
+701 6.47929 5.8855 -1.75909
+1349 5.82673 7.42813 -2.08192
+2187 6.95115 7.68319 -1.63763
+1926 6.63351 6.83549 -2.06442
+256 5.47086 5.38747 -2.6856
+2321 6.38326 6.1349 -2.72979
+1820 7.24632 5.69229 -2.98108
+2012 6.16205 7.08201 -2.96482
+2045 5.42809 6.37841 -2.90228
+68 7.11747 7.65345 -2.62369
+1578 7.20918 6.68701 -2.869
+1899 8.80486 7.14361 -1.87951
+15 9.5397 6.54745 -1.53803
+1279 9.73423 5.65745 -1.97179
+14 8.21484 5.54273 -1.92793
+1308 8.9771 6.22466 -2.29865
+1204 7.89149 7.09919 -1.45114
+475 8.52743 6.32548 -1.375
+453 8.12054 5.21122 -2.92848
+327 8.08316 6.21479 -2.75006
+1322 9.06518 5.27231 -2.60521
+1065 7.98091 7.17622 -2.44409
+1285 -6.4383 8.08629 -1.66482
+2028 -7.19943 8.75459 -1.8007
+289 -5.75123 8.82837 -1.47162
+349 -6.48385 9.50762 -1.59216
+1906 -6.32694 8.83594 -2.31667
+184 -7.04121 8.01667 -2.45909
+1505 -5.38518 8.82753 -2.67311
+498 -6.05222 7.98563 -2.7806
+39 -5.40705 8.05674 -2.00896
+298 -5.58906 9.64971 -2.0388
+519 -3.21245 9.99317 -1.46918
+1412 -2.87462 9.16151 -1.93401
+264 -3.39961 8.77399 -2.70215
+482 -3.39258 9.89823 -2.61417
+1982 -2.65673 7.93439 -2.0872
+381 -4.76327 8.8947 -1.89301
+1187 -3.53407 8.43548 -1.70558
+937 -3.85965 9.36623 -1.90775
+496 -5.04239 7.92107 -2.93817
+1585 -4.04547 8.05755 -2.99065
+470 -4.38609 8.98358 -2.82516
+2117 -4.38054 7.97949 -2.02135
+753 -4.6422 9.82053 -2.33627
+2016 -1.36391 8.83016 -2.99126
+1015 -1.46082 8.92172 -1.39678
+693 -2.52185 8.36522 -2.98007
+457 -0.865002 8.28684 -1.89498
+382 -0.627484 8.16174 -2.86275
+1244 -1.63179 7.88225 -2.80178
+436 -2.58762 9.36891 -2.88841
+357 -0.73767 10.1609 -2.75465
+1867 -2.00262 8.76608 -2.22282
+443 -2.47923 10.3031 -2.52002
+924 -1.66554 9.78074 -2.85345
+1410 -1.04019 9.3514 -2.20299
+306 -0.101237 8.89953 -2.1112
+2188 -0.442033 9.21975 -2.99016
+1087 -1.92431 9.7562 -1.88307
+2151 -0.830316 10.3079 -1.7664
+662 1.97646 7.93492 -1.989
+2132 0.0693891 7.97441 -1.71768
+1459 0.305093 8.54601 -2.95493
+1430 2.05845 8.21923 -2.94162
+219 0.903657 9.43201 -2.02975
+1172 0.897796 8.37401 -2.17018
+1329 2.5001 9.21427 -1.40511
+92 1.75354 8.90172 -2.11297
+1101 1.09288 10.3477 -1.63957
+1595 0.0259705 9.89732 -2.15818
+1854 2.16394 9.80341 -2.13632
+288 1.25627 8.84871 -2.99023
+1667 0.514327 9.5298 -2.94987
+1932 2.28912 9.19098 -2.93711
+2349 1.46387 9.82716 -2.84687
+291 3.00695 10.1294 -1.47338
+2234 2.70307 8.59286 -2.21653
+885 3.02546 7.94243 -2.93934
+365 4.672 7.84008 -2.2306
+1307 4.16302 8.00207 -1.37855
+2256 3.64311 8.24518 -2.20036
+1811 4.29188 8.95905 -1.93555
+965 3.98352 9.90916 -1.39841
+768 3.35316 9.3049 -1.93185
+179 4.66984 10.1017 -2.10704
+2270 3.31412 8.9134 -2.95006
+514 4.28505 8.66062 -2.90877
+59 3.01006 9.8398 -2.70422
+273 3.99595 9.59628 -2.65043
+371 4.99817 9.27544 -2.56972
+78 6.15221 8.28167 -1.66478
+629 5.21867 8.59291 -1.84036
+2082 7.50418 8.89283 -1.43062
+1347 6.93653 8.55304 -2.22466
+1354 7.79059 8.07672 -2.01522
+900 5.60873 9.77888 -1.95839
+411 6.56606 9.354 -1.76037
+1387 5.93824 8.96369 -2.43114
+844 6.21384 8.05932 -2.75408
+304 5.26405 8.35288 -2.8542
+1967 8.53715 7.96255 -1.35927
+391 -3.041 10.8932 -1.87543
+2175 -3.95478 10.4503 -1.96425
+1455 -4.91412 10.4104 -1.57506
+947 -2.08024 11.2125 -1.754
+1320 -0.940934 11.3072 -1.86454
+2131 -0.101327 10.9496 -1.34406
+2118 -1.52197 10.6773 -2.40396
+258 -0.150015 10.8672 -2.34011
+879 0.722928 10.4544 -2.60643
+679 1.6696 10.6954 -2.38067
+400 2.07553 10.5181 -1.43541
+1111 1.63056 11.3887 -1.64819
+274 0.68325 11.2571 -1.94062
+459 2.65771 10.6724 -2.24831
+1962 2.96286 11.2266 -1.47653
+1807 3.64899 10.4199 -2.19785
+1401 3.94709 10.9569 -1.40844
diff --git a/lib/voro++/examples/walls/tetrahedron.cc b/lib/voro++/examples/walls/tetrahedron.cc
new file mode 100644
index 000000000..eadfb8afe
--- /dev/null
+++ b/lib/voro++/examples/walls/tetrahedron.cc
@@ -0,0 +1,59 @@
+// Tetrahedron example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Set up constants for the container geometry
+const double x_min=-2,x_max=2;
+const double y_min=-2,y_max=2;
+const double z_min=-2,z_max=2;
+
+// Set up the number of blocks that the container is divided
+// into
+const int n_x=7,n_y=7,n_z=7;
+
+// Set the number of particles that are going to be randomly
+// introduced
+const int particles=64;
+
+// This function returns a random double between 0 and 1
+double rnd() {return double(rand())/RAND_MAX;}
+
+int main() {
+ int i=0;
+ double x,y,z;
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for 8
+ // particles within each computational block.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Add four plane walls to the container to make a tetrahedron
+ wall_plane p1(1,1,1,1);con.add_wall(p1);
+ wall_plane p2(-1,-1,1,1);con.add_wall(p2);
+ wall_plane p3(1,-1,-1,1);con.add_wall(p3);
+ wall_plane p4(-1,1,-1,1);con.add_wall(p4);
+
+ // Randomly insert particles into the container, checking that they lie
+ // inside the tetrahedron
+ while(i<particles) {
+ x=x_min+rnd()*(x_max-x_min);
+ y=y_min+rnd()*(y_max-y_min);
+ z=z_min+rnd()*(z_max-z_min);
+ if (con.point_inside(x,y,z)) {
+ con.put(i,x,y,z);i++;
+ }
+ }
+
+ // Output the particle positions and the Voronoi cells in Gnuplot and
+ // POV-Ray formats
+ con.draw_particles("tetrahedron_p.gnu");
+ con.draw_cells_gnuplot("tetrahedron_v.gnu");
+ con.draw_particles_pov("tetrahedron_p.pov");
+ con.draw_cells_pov("tetrahedron_v.pov");
+}
diff --git a/lib/voro++/examples/walls/tetrahedron.pov b/lib/voro++/examples/walls/tetrahedron.pov
new file mode 100644
index 000000000..b327925fe
--- /dev/null
+++ b/lib/voro++/examples/walls/tetrahedron.pov
@@ -0,0 +1,38 @@
+#version 3.6;
+
+#include "colors.inc"
+#include "metals.inc"
+#include "textures.inc"
+
+global_settings {
+ max_trace_level 64
+}
+
+camera {
+ location <20,30,-50>
+ right 0.26*x*image_width/image_height
+ up 0.26*y
+ look_at <0,-2,0>
+}
+
+background{rgb 1}
+
+light_source{<-8,30,-20> color rgb <0.77,0.75,0.75>}
+light_source{<20,5,-15> color rgb <0.38,0.40,0.40>}
+
+#declare r=0.025;
+#declare s=0.07;
+
+union{
+#include "tetrahedron_p.pov"
+ scale 5
+ rotate <0,-65,0>
+ texture{T_Silver_3C}
+}
+
+union{
+#include "tetrahedron_v.pov"
+ scale 5
+ rotate <0,-65,0>
+ pigment{rgb <0.3,0.3,0.9>} finish{phong 0.9 ambient 0.42 reflection 0.1}
+}
diff --git a/lib/voro++/examples/walls/torus.cc b/lib/voro++/examples/walls/torus.cc
new file mode 100644
index 000000000..7948a84a4
--- /dev/null
+++ b/lib/voro++/examples/walls/torus.cc
@@ -0,0 +1,111 @@
+// Custom wall class example code
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+#include "voro++.hh"
+using namespace voro;
+
+// Major and minor torus radii
+const double arad=9,brad=3.5;
+
+// The outer radius of the torus, that determines how big the container should
+// be
+const double crad=arad+brad;
+
+// Set up constants for the container geometry
+const double x_min=-crad-0.5,x_max=crad+0.5;
+const double y_min=-crad-0.5,y_max=crad+0.5;
+const double z_min=-brad-0.5,z_max=brad+0.5;
+
+// Set the computational grid size
+const int n_x=10,n_y=10,n_z=3;
+
+// This class creates a custom toroidal wall object that is centered on the
+// origin and is aligned with the xy plane. It is derived from the pure virtual
+// "wall" class. The "wall" class contains virtual functions for cutting the
+// Voronoi cell in response to a wall, and for telling whether a given point is
+// inside the wall or not. In this derived class, specific implementations of
+// these functions are given.
+class wall_torus : public wall {
+ public:
+
+ // The wall constructor initializes constants for the major and
+ // minor axes of the torus. It also initializes the wall ID
+ // number that is used when the plane cuts are made. This is
+ // only tracked with the voronoicell_neighbor class and is
+ // ignored otherwise. It can be omitted, and then an arbitrary
+ // value of -99 is used.
+ wall_torus(double imjr,double imnr,int iw_id=-99)
+ : w_id(iw_id), mjr(imjr), mnr(imnr) {};
+
+ // This returns true if a given vector is inside the torus, and
+ // false if it is outside. For the current example, this
+ // routine is not needed, but in general it would be, for use
+ // with the point_inside() routine in the container class.
+ bool point_inside(double x,double y,double z) {
+ double temp=sqrt(x*x+y*y)-mjr;
+ return temp*temp+z*z<mnr*mnr;
+ }
+
+ // This template takes a reference to a voronoicell or
+ // voronoicell_neighbor object for a particle at a vector
+ // (x,y,z), and makes a plane cut to to the object to account
+ // for the toroidal wall
+ template<class vc_class>
+ inline bool cut_cell_base(vc_class &c,double x,double y,double z) {
+ double orad=sqrt(x*x+y*y);
+ double odis=orad-mjr;
+ double ot=odis*odis+z*z;
+
+ // Unless the particle is within 1% of the major
+ // radius, then a plane cut is made
+ if(ot>0.01*mnr) {
+ ot=2*mnr/sqrt(ot)-2;
+ z*=ot;
+ odis*=ot/orad;
+ x*=odis;
+ y*=odis;
+ return c.nplane(x,y,z,w_id);
+ }
+ return true;
+ }
+
+ // These virtual functions are called during the cell
+ // computation in the container class. They call instances of
+ // the template given above.
+ bool cut_cell(voronoicell &c,double x,
+ double y,double z) {return cut_cell_base(c,x,y,z);}
+ bool cut_cell(voronoicell_neighbor &c,double x,
+ double y,double z) {return cut_cell_base(c,x,y,z);}
+ private:
+ // The ID number associated with the wall
+ const int w_id;
+ // The major radius of the torus
+ const double mjr;
+ // The minor radius of the torus
+ const double mnr;
+};
+
+int main() {
+
+ // Create a container with the geometry given above, and make it
+ // non-periodic in each of the three coordinates. Allocate space for
+ // eight particles within each computational block.
+ container con(x_min,x_max,y_min,y_max,z_min,z_max,n_x,n_y,n_z,
+ false,false,false,8);
+
+ // Add the custom toroidal wall to the container
+ wall_torus tor(arad,brad);
+ con.add_wall(tor);
+
+ // Import the particles from a file
+ con.import("pack_torus");
+
+ // Output the particle positions in POV-Ray format
+ con.draw_particles_pov("torus_p.pov");
+
+ // Output the Voronoi cells in POV-Ray format
+ con.draw_cells_pov("torus_v.pov");
+}
diff --git a/lib/voro++/examples/walls/torus.pov b/lib/voro++/examples/walls/torus.pov
new file mode 100644
index 000000000..95cb5137f
--- /dev/null
+++ b/lib/voro++/examples/walls/torus.pov
@@ -0,0 +1,46 @@
+#version 3.6;
+
+// Increase the trace level for more accurate reflections
+global_settings {
+ max_trace_level 64
+}
+
+// Right-handed coordinate system in which the z-axis points upwards
+camera {
+ location <0,-40,34>
+ sky z
+ right -0.4*x*image_width/image_height
+ up 0.4*z
+ look_at <0,0,-1.31>
+}
+
+// White background
+background{rgb 1}
+
+// Two lights with slightly different colors
+light_source{<-16,-20,43> color rgb <0.72,0.69,0.69>}
+light_source{<30,-15,12> color rgb <0.34,0.37,0.37>}
+
+// Radius of the Voronoi cell network, and the particle radius
+#declare r=0.06;
+#declare s=0.5;
+
+// Particles
+union{
+ #include "torus_p.pov"
+ pigment{rgb 0.97}
+ finish{reflection 0.1 ambient 0.30 specular 0.3}
+}
+
+// Voronoi cells, using a radial pigment map
+union{
+ #include "torus_v.pov"
+ pigment{radial pigment_map {
+ [0 rgb <0.5,0.7,1>]
+ [0.25 rgb <0.38,0.82,0.92>]
+ [0.5 rgb <0.5,0.7,1>]
+ [0.75 rgb <0.65,0.4,1>]
+ [1 rgb <0.5,0.7,1>]}
+ rotate <270,0,0>}
+ finish{specular 0.3 ambient 0.3 reflection 0.1}
+}
diff --git a/lib/voro++/html/annotated.html b/lib/voro++/html/annotated.html
new file mode 100644
index 000000000..48cc67c52
--- /dev/null
+++ b/lib/voro++/html/annotated.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Structures</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Data Structures</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>std</b></td><td class="desc">STL namespace</td></tr>
+<tr id="row_1_"><td class="entry"><img id="arr_1_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('1_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>voro</b></td><td class="desc"></td></tr>
+<tr id="row_1_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1particle__order.html" target="_self">particle_order</a></td><td class="desc">A class for storing ordering information when particles are added to a container</td></tr>
+<tr id="row_1_1_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__base.html" target="_self">c_loop_base</a></td><td class="desc">Base class for looping over particles in a container</td></tr>
+<tr id="row_1_2_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__all.html" target="_self">c_loop_all</a></td><td class="desc">Class for looping over all of the particles in a container</td></tr>
+<tr id="row_1_3_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__subset.html" target="_self">c_loop_subset</a></td><td class="desc">Class for looping over a subset of particles in a container</td></tr>
+<tr id="row_1_4_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__order.html" target="_self">c_loop_order</a></td><td class="desc">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class</td></tr>
+<tr id="row_1_5_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__all__periodic.html" target="_self">c_loop_all_periodic</a></td><td class="desc">A class for looping over all particles in a <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> or <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> class</td></tr>
+<tr id="row_1_6_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__order__periodic.html" target="_self">c_loop_order_periodic</a></td><td class="desc">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class, for use with <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> classes</td></tr>
+<tr id="row_1_7_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell__base.html" target="_self">voronoicell_base</a></td><td class="desc">A class representing a single Voronoi cell</td></tr>
+<tr id="row_1_8_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell.html" target="_self">voronoicell</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell without neighbor information</td></tr>
+<tr id="row_1_9_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell__neighbor.html" target="_self">voronoicell_neighbor</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell with neighbor information</td></tr>
+<tr id="row_1_10_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1wall.html" target="_self">wall</a></td><td class="desc">Pure virtual class from which wall objects are derived</td></tr>
+<tr id="row_1_11_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1wall__list.html" target="_self">wall_list</a></td><td class="desc">A class for storing a list of pointers to walls</td></tr>
+<tr id="row_1_12_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__base.html" target="_self">container_base</a></td><td class="desc">Class for representing a particle system in a three-dimensional rectangular box</td></tr>
+<tr id="row_1_13_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container.html" target="_self">container</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_1_14_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__poly.html" target="_self">container_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_1_15_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__base.html" target="_self">container_periodic_base</a></td><td class="desc">Class for representing a particle system in a 3D periodic non-orthogonal periodic domain</td></tr>
+<tr id="row_1_16_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic.html" target="_self">container_periodic</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_1_17_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__poly.html" target="_self">container_periodic_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_1_18_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container__base.html" target="_self">pre_container_base</a></td><td class="desc">A class for storing an arbitrary number of particles, prior to setting up a container geometry</td></tr>
+<tr id="row_1_19_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container.html" target="_self">pre_container</a></td><td class="desc">A class for storing an arbitrary number of particles without radius information, prior to setting up a container geometry</td></tr>
+<tr id="row_1_20_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container__poly.html" target="_self">pre_container_poly</a></td><td class="desc">A class for storing an arbitrary number of particles with radius information, prior to setting up a container geometry</td></tr>
+<tr id="row_1_21_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1radius__mono.html" target="_self">radius_mono</a></td><td class="desc">Class containing all of the routines that are specific to computing the regular Voronoi tessellation</td></tr>
+<tr id="row_1_22_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1radius__poly.html" target="_self">radius_poly</a></td><td class="desc">Class containing all of the routines that are specific to computing the radical Voronoi tessellation</td></tr>
+<tr id="row_1_23_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1unitcell.html" target="_self">unitcell</a></td><td class="desc">Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain</td></tr>
+<tr id="row_1_24_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voro__base.html" target="_self">voro_base</a></td><td class="desc">Class containing data structures common across all particle container classes</td></tr>
+<tr id="row_1_25_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1particle__record.html" target="_self">particle_record</a></td><td class="desc">Structure for holding information about a particle</td></tr>
+<tr id="row_1_26_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voro__compute.html" target="_self">voro_compute</a></td><td class="desc">Template for carrying out Voronoi cell computations</td></tr>
+<tr id="row_1_27_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__sphere.html" target="_self">wall_sphere</a></td><td class="desc">A class representing a spherical wall object</td></tr>
+<tr id="row_1_28_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__plane.html" target="_self">wall_plane</a></td><td class="desc">A class representing a plane wall object</td></tr>
+<tr id="row_1_29_"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__cylinder.html" target="_self">wall_cylinder</a></td><td class="desc">A class representing a cylindrical wall object</td></tr>
+<tr id="row_1_30_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__cone.html" target="_self">wall_cone</a></td><td class="desc">A class representing a conical wall object</td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/bc_s.png b/lib/voro++/html/bc_s.png
new file mode 100644
index 000000000..b519e284b
Binary files /dev/null and b/lib/voro++/html/bc_s.png differ
diff --git a/lib/voro++/html/bdwn.png b/lib/voro++/html/bdwn.png
new file mode 100644
index 000000000..940a0b950
Binary files /dev/null and b/lib/voro++/html/bdwn.png differ
diff --git a/lib/voro++/html/c__loops_8cc.html b/lib/voro++/html/c__loops_8cc.html
new file mode 100644
index 000000000..cb401dbb6
--- /dev/null
+++ b/lib/voro++/html/c__loops_8cc.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: c_loops.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">c_loops.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the loop classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&quot;</code><br/>
+</div>
+<p><a href="c__loops_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/c__loops_8cc_source.html b/lib/voro++/html/c__loops_8cc_source.html
new file mode 100644
index 000000000..60dc77543
--- /dev/null
+++ b/lib/voro++/html/c__loops_8cc_source.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: c_loops.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">c_loops.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="c__loops_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file c_loops.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the loop classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8hh.html" title="Header file for the loop classes.">c_loops.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/** Initializes a c_loop_subset object to scan over all particles within a</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * given sphere.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * \param[in] (vx,vy,vz) the position vector of the center of the sphere.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * \param[in] r the radius of the sphere.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * \param[in] bounds_test whether to do detailed bounds checking. If this is</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * false then the class will loop over all particles in</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * blocks that overlap the given sphere. If it is true,</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * the particle will only loop over the particles which</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * actually lie within the sphere.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * \return True if there is any valid point to loop over, false otherwise. */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb"> 24</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">c_loop_subset::setup_sphere</a>(<span class="keywordtype">double</span> vx,<span class="keywordtype">double</span> vy,<span class="keywordtype">double</span> vz,<span class="keywordtype">double</span> r,<span class="keywordtype">bool</span> bounds_test) {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span>(bounds_test) {<a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>=sphere;v0=vx;v1=vy;v2=vz;v3=r*r;} <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>=no_check;</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ai=step_int((vx-ax-r)*xsp);</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; bi=step_int((vx-ax+r)*xsp);</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; aj=step_int((vy-ay-r)*ysp);</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; bj=step_int((vy-ay+r)*ysp);</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; ak=step_int((vz-az-r)*zsp);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; bk=step_int((vz-az+r)*zsp);</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; setup_common();</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">/** Initializes the class to loop over all particles in a rectangular subgrid</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * of blocks.</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * \param[in] (ai_,bi_) the subgrid range in the x-direction, inclusive of both</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * ends.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * \param[in] (aj_,bj_) the subgrid range in the y-direction, inclusive of both</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * ends.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * \param[in] (ak_,bk_) the subgrid range in the z-direction, inclusive of both</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * ends.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * \return True if there is any valid point to loop over, false otherwise. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d"> 44</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">c_loop_subset::setup_intbox</a>(<span class="keywordtype">int</span> ai_,<span class="keywordtype">int</span> bi_,<span class="keywordtype">int</span> aj_,<span class="keywordtype">int</span> bj_,<span class="keywordtype">int</span> ak_,<span class="keywordtype">int</span> bk_) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; ai=ai_;bi=bi_;aj=aj_;bj=bj_;ak=ak_;bk=bk_;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>=no_check;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; setup_common();</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">/** Sets up all of the common constants used for the loop.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * \return True if there is any valid point to loop over, false otherwise. */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keywordtype">void</span> c_loop_subset::setup_common() {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span>(!xperiodic) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(ai&lt;0) {ai=0;<span class="keywordflow">if</span>(bi&lt;0) bi=0;}</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span>(bi&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>) {bi=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>-1;<span class="keywordflow">if</span>(ai&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>) ai=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>-1;}</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span>(!yperiodic) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span>(aj&lt;0) {aj=0;<span class="keywordflow">if</span>(bj&lt;0) bj=0;}</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(bj&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>) {bj=<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>-1;<span class="keywordflow">if</span>(aj&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>) aj=<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>-1;}</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">if</span>(!zperiodic) {</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span>(ak&lt;0) {ak=0;<span class="keywordflow">if</span>(bk&lt;0) bk=0;}</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span>(bk&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>) {bk=<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>-1;<span class="keywordflow">if</span>(ak&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>) ak=<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>-1;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; ci=ai;cj=aj;ck=ak;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; di=<a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=step_mod(ci,<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>);apx=px=step_div(ci,<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>)*sx;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; dj=<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=step_mod(cj,<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>);apy=py=step_div(cj,<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>)*sy;</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; dk=<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>=step_mod(ck,<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>);apz=pz=step_div(ck,<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>)*sz;</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; inc1=di-step_mod(bi,<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>);</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; inc2=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>*(<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>+dj-step_mod(bj,<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>))+inc1;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; inc1+=<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=di+<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>*(dj+<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>*dk);</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;}</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">/** Starts the loop by finding the first particle within the container to</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * consider.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * \return True if there is any particle to consider, false otherwise. */</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4"> 79</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">c_loop_subset::start</a>() {</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]==0) {<span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>!=no_check&amp;&amp;out_of_bounds()) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>++;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]) {<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;<span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">/** Initializes the class to loop over all particles in a rectangular box.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * \param[in] (xmin,xmax) the minimum and maximum x coordinates of the box.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * \param[in] (ymin,ymax) the minimum and maximum y coordinates of the box.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * \param[in] (zmin,zmax) the minimum and maximum z coordinates of the box.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * \param[in] bounds_test whether to do detailed bounds checking. If this is</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> * false then the class will loop over all particles in</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * blocks that overlap the given box. If it is true, the</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * particle will only loop over the particles which</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * actually lie within the box.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \return True if there is any valid point to loop over, false otherwise. */</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d"> 98</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">c_loop_subset::setup_box</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax,<span class="keywordtype">bool</span> bounds_test) {</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(bounds_test) {<a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>=box;v0=xmin;v1=xmax;v2=ymin;v3=ymax;v4=zmin;v5=zmax;} <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>=no_check;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; ai=step_int((xmin-ax)*xsp);</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; bi=step_int((xmax-ax)*xsp);</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; aj=step_int((ymin-ay)*ysp);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; bj=step_int((ymax-ay)*ysp);</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; ak=step_int((zmin-az)*zsp);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; bk=step_int((zmax-az)*zsp);</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; setup_common();</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">/** Computes whether the current point is out of bounds, relative to the</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * current loop setup.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> * \return True if the point is out of bounds, false otherwise. */</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keywordtype">bool</span> c_loop_subset::out_of_bounds() {</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]+<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>==sphere) {</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">double</span> fx(*pp+px-v0),fy(pp[1]+py-v1),fz(pp[2]+pz-v2);</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> fx*fx+fy*fy+fz*fz&gt;v3;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">double</span> f(*pp+px);<span class="keywordflow">if</span>(f&lt;v0||f&gt;v1) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; f=pp[1]+py;<span class="keywordflow">if</span>(f&lt;v2||f&gt;v3) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; f=pp[2]+pz;<span class="keywordflow">return</span> f&lt;v4||f&gt;v5;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;}</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">/** Returns the next block to be tested in a loop, and updates the periodicity</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * vector if necessary. */</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keywordtype">bool</span> c_loop_subset::next_block() {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>&lt;bi) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>++;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span>(ci&lt;<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>-1) {ci++;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>++;} <span class="keywordflow">else</span> {ci=0;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=1-<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>;px+=sx;}</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>&lt;bj) {</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=ai;ci=di;px=apx;<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>++;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(cj&lt;<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>-1) {cj++;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=inc1;} <span class="keywordflow">else</span> {cj=0;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=inc1-<a class="code" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a>;py+=sy;}</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>&lt;bk) {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=ai;ci=di;<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=aj;cj=dj;px=apx;py=apy;<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>++;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(ck&lt;<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>-1) {ck++;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=inc2;} <span class="keywordflow">else</span> {ck=0;<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=inc2-<a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a>;pz+=sz;}</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">/** Extends the memory available for storing the ordering. */</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keywordtype">void</span> particle_order::add_ordering_memory() {</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">int</span> *no=<span class="keyword">new</span> <span class="keywordtype">int</span>[<a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a>&lt;&lt;2],*nop=no,*opp=<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">while</span>(opp&lt;<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>) *(nop++)=*(opp++);</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a>&lt;&lt;=1;<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>=no;<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>=nop;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/c__loops_8hh.html b/lib/voro++/html/c__loops_8hh.html
new file mode 100644
index 000000000..854f409ad
--- /dev/null
+++ b/lib/voro++/html/c__loops_8hh.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: c_loops.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#enum-members">Enumerations</a> </div>
+ <div class="headertitle">
+<div class="title">c_loops.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the loop classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+</div>
+<p><a href="c__loops_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html">voro::particle_order</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for storing ordering information when particles are added to a container. <a href="classvoro_1_1particle__order.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Base class for looping over particles in a container. <a href="classvoro_1_1c__loop__base.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all.html">voro::c_loop_all</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for looping over all of the particles in a container. <a href="classvoro_1_1c__loop__all.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html">voro::c_loop_subset</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for looping over a subset of particles in a container. <a href="classvoro_1_1c__loop__subset.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html">voro::c_loop_order</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class. <a href="classvoro_1_1c__loop__order.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all__periodic.html">voro::c_loop_all_periodic</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for looping over all particles in a <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> or <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> class. <a href="classvoro_1_1c__loop__all__periodic.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html">voro::c_loop_order_periodic</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class, for use with <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> classes. <a href="classvoro_1_1c__loop__order__periodic.html#details">More...</a><br/></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:ad9e943173772c282e7031e90ff88d3e3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><b>c_loop_subset_mode</b> { <b>sphere</b>,
+<b>box</b>,
+<b>no_check</b>
+ }</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/c__loops_8hh_source.html b/lib/voro++/html/c__loops_8hh_source.html
new file mode 100644
index 000000000..529723b88
--- /dev/null
+++ b/lib/voro++/html/c__loops_8hh_source.html
@@ -0,0 +1,511 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: c_loops.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">c_loops.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="c__loops_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file c_loops.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the loop classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_C_LOOPS_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_C_LOOPS_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">/** A type associated with a c_loop_subset class, determining what type of</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * geometrical region to loop over. */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">enum</span> c_loop_subset_mode {</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; sphere,</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; box,</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; no_check</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;};</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/** \brief A class for storing ordering information when particles are added to</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * a container.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * When particles are added to a container class, they are sorted into an</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * internal computational grid of blocks. The particle_order class provides a</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * mechanism for remembering which block particles were sorted into. The import</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * and put routines in the container class have variants that also take a</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * particle_order class. Each time they are called, they will store the block</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * that the particle was sorted into, plus the position of the particle within</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * the block. The particle_order class can used by the c_loop_order class to</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * specifically loop over the particles that have their information stored</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * within it. */</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html"> 37</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> /** A pointer to the array holding the ordering. */</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2"> 40</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> /** A pointer to the next position in the ordering array in</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * which to store an entry. */</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4"> 43</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> /** The current memory allocation for the class, set to the</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * number of entries which can be stored. */</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db"> 46</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> /** The particle_order constructor allocates memory to store the</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * ordering information.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * \param[in] init_size the initial amount of memory to</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * allocate. */</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8"> 51</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8">particle_order</a>(<span class="keywordtype">int</span> init_size=init_ordering_size)</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; : <a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>(new int[init_size&lt;&lt;1]),<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>(<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>),<a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a>(init_size) {}<span class="comment"></span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> /** The particle_order destructor frees the dynamically allocated</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * memory used to store the ordering information. */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90"> 55</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90">~particle_order</a>() {</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> /** Adds a record to the order, corresponding to the memory</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * address of where a particle was placed into the container.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * \param[in] ijk the block into which the particle was placed.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * \param[in] q the position within the block where the</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * particle was placed. */</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a"> 63</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a>(<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>==<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>+<a class="code" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a>) add_ordering_memory();</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; *(<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>++)=ijk;*(<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>++)=q;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> add_ordering_memory();</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;};</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">/** \brief Base class for looping over particles in a container.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * This class forms the base of all classes that can loop over a subset of</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * particles in a contaner in some order. When initialized, it stores constants</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * about the corresponding container geometry. It also contains a number of</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * routines for interrogating which particle currently being considered by the</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * loop, which are common between all of the derived classes. */</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html"> 78</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> /** The number of blocks in the x direction. */</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7"> 81</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> /** The number of blocks in the y direction. */</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff"> 83</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> /** The number of blocks in the z direction. */</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8"> 85</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> /** A constant, set to the value of nx multiplied by ny, which</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * is used in the routines that step through blocks in</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * sequence. */</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12"> 89</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> /** A constant, set to the value of nx*ny*nz, which is used in</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * the routines that step through blocks in sequence. */</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d"> 92</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> /** The number of floating point numbers per particle in the</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * associated container data structure. */</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2"> 95</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> /** A pointer to the particle position information in the</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * associated container data structure. */</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534"> 98</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> /** A pointer to the particle ID information in the associated</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * container data structure. */</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1"> 101</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> /** A pointer to the particle counts in the associated</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * container data structure. */</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d"> 104</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> /** The current x-index of the block under consideration by the</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * loop. */</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541"> 107</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> /** The current y-index of the block under consideration by the</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * loop. */</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf"> 110</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> /** The current z-index of the block under consideration by the</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * loop. */</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4"> 113</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> /** The current index of the block under consideration by the</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * loop. */</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b"> 116</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> /** The index of the particle under consideration within the current</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * block. */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786"> 119</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * base container class.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * \param[in] con the container class to use. */</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216"> 124</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a>(c_class &amp;con) : <a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>), <a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>), <a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a>),</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a>), <a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a>), <a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>),</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>), <a class="code" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a>), <a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>(con.<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>) {}<span class="comment"></span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> /** Returns the position vector of the particle currently being</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * considered by the loop.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * \param[out] (x,y,z) the position vector of the particle. */</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83"> 130</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a>(<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>,<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>,<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>) {</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]+<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; x=*(pp++);y=*(pp++);z=*pp;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> /** Returns the ID, position vector, and radius of the particle</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> * currently being considered by the loop.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * \param[out] pid the particle ID.</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * \param[out] (x,y,z) the position vector of the particle.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * \param[out] r the radius of the particle. If no radius</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * information is available the default radius</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * value is returned. */</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155"> 141</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a>(<span class="keywordtype">int</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>,<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>,<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>,<span class="keywordtype">double</span> &amp;<a class="code" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>,<span class="keywordtype">double</span> &amp;r) {</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; pid=<span class="keywordtype">id</span>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>][<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>];</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]+<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; x=*(pp++);y=*(pp++);z=*pp;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; r=<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>==3?default_radius:*(++pp);</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> /** Returns the x position of the particle currently being</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * considered by the loop. */</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3"> 149</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>() {<span class="keywordflow">return</span> <a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>][<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>];}<span class="comment"></span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> /** Returns the y position of the particle currently being</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> * considered by the loop. */</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>() {<span class="keywordflow">return</span> <a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>][<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>+1];}<span class="comment"></span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> /** Returns the z position of the particle currently being</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> * considered by the loop. */</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9"> 155</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>() {<span class="keywordflow">return</span> <a class="code" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>][<a class="code" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a>*<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>+2];}<span class="comment"></span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> /** Returns the ID of the particle currently being considered</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> * by the loop. */</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>() {<span class="keywordflow">return</span> <span class="keywordtype">id</span>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>][<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>];}</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;};</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">/** \brief Class for looping over all of the particles in a container.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * This is one of the simplest loop classes, that scans the computational</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * blocks in order, and scans all the particles within each block in order. */</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all.html"> 165</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * base container class.</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * \param[in] con the container class to use. */</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68"> 171</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68">c_loop_all</a>(c_class &amp;con) : <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a>(con) {}<span class="comment"></span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> /** Sets the class to consider the first particle.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * \return True if there is any particle to consider, false</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * otherwise. */</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d"> 175</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a>() {</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>=<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]==0) <span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> /** Finds the next particle to test.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * \return True if there is another particle, false if no more</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * particles are available. */</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0"> 183</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a>() {</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>++;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]) {</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; } <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[ijk]==0);</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> /** Updates the internal variables to find the next</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> * computational block with any particles.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> * \return True if another block is found, false if there are</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> * no more blocks. */</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> next_block() {</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>++;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>++;</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>==<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=0;<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>++;</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>==<a class="code" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a>) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=0;<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>++;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>==<a class="code" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment">/** \brief Class for looping over a subset of particles in a container.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * This class can loop over a subset of particles in a certain geometrical</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> * region within the container. The class can be set up to loop over a</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> * rectangular box or sphere. It can also rectangular group of internal</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> * computational blocks. */</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html"> 218</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__subset.html" title="Class for looping over a subset of particles in a container.">c_loop_subset</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> /** The current mode of operation, determining whether tests</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * should be applied to particles to ensure they are within a</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> * certain geometrical object. */</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c"> 223</a></span>&#160; c_loop_subset_mode <a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * base container class.</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> * \param[in] con the container class to use. */</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f"> 228</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f">c_loop_subset</a>(c_class &amp;con) : <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a>(con), ax(con.ax), ay(con.ay), az(con.az),</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; sx(con.bx-ax), sy(con.by-ay), sz(con.bz-az), xsp(con.xsp), ysp(con.ysp), zsp(con.zsp),</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; xperiodic(con.xperiodic), yperiodic(con.yperiodic), zperiodic(con.zperiodic) {}</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">setup_sphere</a>(<span class="keywordtype">double</span> vx,<span class="keywordtype">double</span> vy,<span class="keywordtype">double</span> vz,<span class="keywordtype">double</span> r,<span class="keywordtype">bool</span> bounds_test=<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">setup_box</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax,<span class="keywordtype">bool</span> bounds_test=<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">setup_intbox</a>(<span class="keywordtype">int</span> ai_,<span class="keywordtype">int</span> bi_,<span class="keywordtype">int</span> aj_,<span class="keywordtype">int</span> bj_,<span class="keywordtype">int</span> ak_,<span class="keywordtype">int</span> bk_);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">start</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> /** Finds the next particle to test.</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * \return True if there is another particle, false if no more</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * particles are available. */</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6"> 238</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6">inc</a>() {</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>++;</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]) {<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;<span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; } <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a>!=no_check&amp;&amp;out_of_bounds());</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> ax,ay,az,sx,sy,sz,xsp,ysp,zsp;</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> xperiodic,yperiodic,zperiodic;</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">double</span> px,py,pz,apx,apy,apz;</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">double</span> v0,v1,v2,v3,v4,v5;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordtype">int</span> ai,bi,aj,bj,ak,bk,s;</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordtype">int</span> ci,cj,ck,di,dj,dk,inc1,inc2;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> step_mod(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {<span class="keywordflow">return</span> a&gt;=0?a%b:b-1-(b-1-a)%b;}</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> step_div(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {<span class="keywordflow">return</span> a&gt;=0?a/b:-1+(a+1)/b;}</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> step_int(<span class="keywordtype">double</span> a) {<span class="keywordflow">return</span> a&lt;0?int(a)-1:int(a);}</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">void</span> setup_common();</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordtype">bool</span> next_block();</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">bool</span> out_of_bounds();</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;};</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment">/** \brief Class for looping over all of the particles specified in a</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> * pre-assembled particle_order class.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * The particle_order class can be used to create a specific order of particles</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> * within the container. This class can then loop over these particles in this</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> * order. The class is particularly useful in cases where the ordering of the</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> * output must match the ordering of particles as they were inserted into the</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * container. */</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html"> 268</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__order.html" title="Class for looping over all of the particles specified in a pre-assembled particle_order class...">c_loop_order</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> /** A reference to the ordering class to use. */</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987"> 271</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;<a class="code" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">vo</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> /** A pointer to the current position in the ordering class. */</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61"> 273</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> /** A pointer to the end position in the ordering class. */</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f"> 275</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">op</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> * base class, and sets up a reference to the ordering class to</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> * use.</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> * \param[in] con the container class to use.</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> * \param[in] vo_ the ordering class to use. */</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892"> 282</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892">c_loop_order</a>(c_class &amp;con,<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo_)</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; : <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a>(con), <a class="code" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">vo</a>(vo_), nx(con.nx), nxy(con.nxy) {}<span class="comment"></span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> /** Sets the class to consider the first particle.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> * \return True if there is any particle to consider, false</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> * otherwise. */</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228"> 287</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228">start</a>() {</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>=<a class="code" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">vo</a>.<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;<a class="code" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">op</a>=<a class="code" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">vo</a>.<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>!=<a class="code" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">op</a>) {</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=*(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>++);decode();</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=*(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>++);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> /** Finds the next particle to test.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * \return True if there is another particle, false if no more</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * particles are available. */</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7"> 298</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7">inc</a>() {</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>==<a class="code" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">op</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=*(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>++);decode();</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=*(<a class="code" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a>++);</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> /** The number of computational blocks in the x direction. */</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> nx;<span class="comment"></span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> /** The number of computational blocks in a z-slice. */</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> nxy;<span class="comment"></span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment"> /** Takes the current block index and computes indices in the</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> * x, y, and z directions. */</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> decode() {</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>=<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>/nxy;</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordtype">int</span> ijkt=<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>-nxy*<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=ijkt/nx;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=ijkt-<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>*nx;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;};</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment">/** \brief A class for looping over all particles in a container_periodic or</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"> * container_periodic_poly class.</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> * Since the container_periodic and container_periodic_poly classes have a</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> * fundamentally different memory organization, the regular loop classes cannot</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * be used with them. */</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all__periodic.html"> 325</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * base periodic container class.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * \param[in] con the periodic container class to use. */</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff"> 331</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff">c_loop_all_periodic</a>(c_class &amp;con) : <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a>(con), ey(con.ey), ez(con.ez), wy(con.wy), wz(con.wz),</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; ijk0(<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>*(ey+con.oy*ez)), inc2(2*<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>*con.ey+1) {}<span class="comment"></span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"> /** Sets the class to consider the first particle.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> * \return True if there is any particle to consider, false</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"> * otherwise. */</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c"> 336</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a>() {</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=0;</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=ey;</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>=ez;</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=ijk0;</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]==0) <span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> /** Finds the next particle to test.</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> * \return True if there is another particle, false if no more</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> * particles are available. */</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651"> 348</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a>() {</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>++;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>&gt;=<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>]) {</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=0;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span>(!next_block()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; } <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a>[ijk]==0);</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; }</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> /** The lower y index (inclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordtype">int</span> ey;<span class="comment"></span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> /** The lower y index (inclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordtype">int</span> ez;<span class="comment"></span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> /** The upper y index (exclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordtype">int</span> wy;<span class="comment"></span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> /** The upper z index (exclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">int</span> wz;<span class="comment"></span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> /** The index of the (0,0,0) block within the block structure.</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordtype">int</span> ijk0;<span class="comment"></span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> /** A value to increase ijk by when the z index is increased.</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordtype">int</span> inc2;<span class="comment"></span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"> /** Updates the internal variables to find the next</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment"> * computational block with any particles.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment"> * \return True if another block is found, false if there are</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"> * no more blocks. */</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> next_block() {</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>++;</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>==<a class="code" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a>) {</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=0;<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>++;</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>==wy) {</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=ey;<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>++;</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>==wz) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>+=inc2;</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; } <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>++;</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; } <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>++;</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;};</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment">/** \brief Class for looping over all of the particles specified in a</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * pre-assembled particle_order class, for use with container_periodic classes.</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> * The particle_order class can be used to create a specific order of particles</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * within the container. This class can then loop over these particles in this</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> * order. The class is particularly useful in cases where the ordering of the</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"> * output must match the ordering of particles as they were inserted into the</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"> * container. */</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html"> 403</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1c__loop__order__periodic.html" title="Class for looping over all of the particles specified in a pre-assembled particle_order class...">c_loop_order_periodic</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a> {</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> /** A reference to the ordering class to use. */</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018"> 406</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">vo</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> /** A pointer to the current position in the ordering class. */</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982"> 408</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> /** A pointer to the end position in the ordering class. */</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475"> 410</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">op</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> /** The constructor copies several necessary constants from the</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> * base class, and sets up a reference to the ordering class to</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"> * use.</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> * \param[in] con the container class to use.</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> * \param[in] vo_ the ordering class to use. */</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9"> 417</a></span>&#160; <a class="code" href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9">c_loop_order_periodic</a>(c_class &amp;con,<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo_)</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; : <a class="code" href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container.">c_loop_base</a>(con), <a class="code" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">vo</a>(vo_), nx(con.nx), oxy(con.nx*con.oy) {}<span class="comment"></span></div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"> /** Sets the class to consider the first particle.</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"> * \return True if there is any particle to consider, false</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment"> * otherwise. */</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e"> 422</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e">start</a>() {</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>=<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">vo</a>.<a class="code" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a>;<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">op</a>=<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">vo</a>.<a class="code" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a>;</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>!=<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">op</a>) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=*(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>++);decode();</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=*(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>++);</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment"> /** Finds the next particle to test.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment"> * \return True if there is another particle, false if no more</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="comment"> * particles are available. */</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"><a class="code" href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de"> 433</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de">inc</a>() {</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>==<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">op</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>=*(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>++);decode();</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a>=*(<a class="code" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a>++);</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="comment"> /** The number of computational blocks in the x direction. */</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> nx;<span class="comment"></span></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="comment"> /** The number of computational blocks in a z-slice. */</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> oxy;<span class="comment"></span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"> /** Takes the current block index and computes indices in the</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment"> * x, y, and z directions. */</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> decode() {</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>=<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>/oxy;</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordtype">int</span> ijkt=<a class="code" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a>-oxy*<a class="code" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a>;</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>=ijkt/nx;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <a class="code" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a>=ijkt-<a class="code" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a>*nx;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; }</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;};</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;}</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/cell_8cc.html b/lib/voro++/html/cell_8cc.html
new file mode 100644
index 000000000..9925b92bb
--- /dev/null
+++ b/lib/voro++/html/cell_8cc.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: cell.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">cell.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the voronoicell and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cmath&gt;</code><br/>
+<code>#include &lt;cstring&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+</div>
+<p><a href="cell_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/cell_8cc_source.html b/lib/voro++/html/cell_8cc_source.html
new file mode 100644
index 000000000..50521a3fa
--- /dev/null
+++ b/lib/voro++/html/cell_8cc_source.html
@@ -0,0 +1,2307 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: cell.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">cell.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="cell_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file cell.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the voronoicell and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/** Constructs a Voronoi cell and sets up the initial memory. */</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d"> 20</a></span>&#160;<a class="code" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base::voronoicell_base</a>() :</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; current_vertices(init_vertices), current_vertex_order(init_vertex_order),</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; current_delete_size(init_delete_size), current_delete2_size(init_delete2_size),</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; ed(new int*[current_vertices]), nu(new int[current_vertices]),</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; pts(new double[3*current_vertices]), mem(new int[current_vertex_order]),</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; mec(new int[current_vertex_order]), mep(new int*[current_vertex_order]),</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; ds(new int[current_delete_size]), stacke(ds+current_delete_size),</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; ds2(new int[current_delete2_size]), stacke2(ds2+current_delete_size),</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; current_marginal(init_marginal), marg(new int[current_marginal]) {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;3;i++) {</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]=init_n_vertices;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=0;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_n_vertices*((i&lt;&lt;1)+1)];</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[3]=init_3_vertices;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]=0;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[3]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_3_vertices*7];</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">for</span>(i=4;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]=init_n_vertices;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=0;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_n_vertices*((i&lt;&lt;1)+1)];</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; }</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;}</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/** The voronoicell destructor deallocates all the dynamic memory. */</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e"> 43</a></span>&#160;<a class="code" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">voronoicell_base::~voronoicell_base</a>() {</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>-1;i&gt;=0;i--) <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]&gt;0) <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i];</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">delete</span> [] marg;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">delete</span> [] ds2;<span class="keyword">delete</span> [] ds;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>;<span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>;<span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>;<span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">/** Ensures that enough memory is allocated prior to carrying out a copy.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * \param[in] vc a reference to the specialized version of the calling class.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * \param[in] vb a pointered to the class to be copied. */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b"> 56</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voronoicell_base::check_memory_for_copy</a>(vc_class &amp;vc,<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>* vb) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">while</span>(current_vertex_order&lt;vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>) add_memory_vorder(vc);</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]&lt;vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]) add_memory(vc,i,ds2);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">while</span>(current_vertices&lt;vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) add_memory_vertices(vc);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;}</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">/** Copies the vertex and edge information from another class. The routine</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * assumes that enough memory is available for the copy.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * \param[in] vb a pointer to the class to copy. */</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac"> 65</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">voronoicell_base::copy</a>(<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>* vb) {</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>=vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>=0;</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) {</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i];</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]*(2*i+1);j++) <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][j]=vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][j];</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]*(2*i+1);j+=2*i+1) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][j+2*i]]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]+j;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[i]=vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[i];</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;3*p;i++) <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[i]=vb-&gt;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[i];</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;}</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">/** Copies the information from another voronoicell class into this</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * class, extending memory allocation if necessary.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * \param[in] c the class to copy. */</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403"> 80</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">voronoicell_neighbor::operator=</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c) {</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> *vb=((<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>*) &amp;c);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a>(*<span class="keyword">this</span>,vb);<a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a>(vb);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) {</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]*i;j++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i][j]=0;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i];j++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[c.<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][(2*i+1)*j+2*i]]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]+(j*i);</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">/** Copies the information from another voronoicell_neighbor class into this</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * class, extending memory allocation if necessary.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * \param[in] c the class to copy. */</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a0754fe4a44916b68bf3cda3d129b3a69"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">voronoicell_neighbor::operator=</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c) {</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> *vb=((<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>*) &amp;c);</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a>(*<span class="keyword">this</span>,vb);<a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a>(vb);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) {</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]*i;j++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i][j]=c.<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i][j];</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;c.<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i];j++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[c.<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][(2*i+1)*j+2*i]]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]+(j*i);</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">/** Translates the vertices of the Voronoi cell by a given vector.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * \param[in] (x,y,z) the coordinates of the vector. */</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">voronoicell_base::translate</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; x*=2;y*=2;z*=2;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">while</span>(ptsp&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>+3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; *(ptsp++)=x;*(ptsp++)=y;*(ptsp++)=z;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">/** Increases the memory storage for a particular vertex order, by increasing</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * the size of the of the corresponding mep array. If the arrays already exist,</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * their size is doubled; if they don&#39;t exist, then new ones of size</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * init_n_vertices are allocated. The routine also ensures that the pointers in</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * the ed array are updated, by making use of the back pointers. For the cases</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * where the back pointer has been temporarily overwritten in the marginal</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * vertex code, the auxiliary delete stack is scanned to find out how to update</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> * the ed value. If the template has been instantiated with the neighbor</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * tracking turned on, then the routine also reallocates the corresponding mne</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * array.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> * \param[in] i the order of the vertex memory to be increased. */</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keywordtype">void</span> voronoicell_base::add_memory(vc_class &amp;vc,<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> *stackp2) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">int</span> s=(i&lt;&lt;1)+1;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]==0) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; vc.n_allocate(i,init_n_vertices);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_n_vertices*s];</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]=init_n_vertices;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Order %d vertex memory created\n&quot;</span>,i);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"></span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">int</span> j=0,k,*l;</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]&lt;&lt;=1;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]&gt;max_n_vertices) voro_fatal_error(<span class="stringliteral">&quot;Point memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Order %d vertex memory scaled up to %d\n&quot;</span>,i,<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]);</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"></span> l=<span class="keyword">new</span> <span class="keywordtype">int</span>[s*<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]];</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">int</span> m=0;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; vc.n_allocate_aux1(i);</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">while</span>(j&lt;s*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]) {</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][j+(i&lt;&lt;1)];</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k]=l+j;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; vc.n_set_to_aux1_offset(k,m);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">int</span> *dsp;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">for</span>(dsp=ds2;dsp&lt;stackp2;dsp++) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[*dsp]==<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]+j) {</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[*dsp]=l+j;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; vc.n_set_to_aux1_offset(*dsp,m);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(dsp==stackp2) voro_fatal_error(<span class="stringliteral">&quot;Couldn&#39;t relocate dangling pointer&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=3</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"></span> fputs(<span class="stringliteral">&quot;Relocated dangling pointer&quot;</span>,stderr);</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor"></span> }</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;s;k++,j++) l[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i][j];</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;i;k++,m++) vc.n_copy_to_aux1(i,m);</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i];</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]=l;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; vc.n_switch_to_aux1(i);</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">/** Doubles the maximum number of vertices allowed, by reallocating the ed, nu,</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * and pts arrays. If the allocation exceeds the absolute maximum set in</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * max_vertices, then the routine exits with a fatal error. If the template has</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * been instantiated with the neighbor tracking turned on, then the routine</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * also reallocates the ne array. */</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="keywordtype">void</span> voronoicell_base::add_memory_vertices(vc_class &amp;vc) {</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">int</span> i=(<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>&lt;&lt;1),j,**pp,*pnu;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span>(i&gt;max_vertices) voro_fatal_error(<span class="stringliteral">&quot;Vertex memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Vertex memory scaled up to %d\n&quot;</span>,i);</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">double</span> *ppts;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; pp=<span class="keyword">new</span> <span class="keywordtype">int</span>*[i];</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>;j++) pp[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j];</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>=pp;</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; vc.n_add_memory_vertices(i);</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; pnu=<span class="keyword">new</span> <span class="keywordtype">int</span>[i];</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>;j++) pnu[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[j];</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>=pnu;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; ppts=<span class="keyword">new</span> <span class="keywordtype">double</span>[3*i];</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;3*<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>;j++) ppts[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[j];</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>=ppts;</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; current_vertices=i;</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;}</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">/** Doubles the maximum allowed vertex order, by reallocating mem, mep, and mec</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * arrays. If the allocation exceeds the absolute maximum set in</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * max_vertex_order, then the routine causes a fatal error. If the template has</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * been instantiated with the neighbor tracking turned on, then the routine</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * also reallocates the mne array. */</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="keywordtype">void</span> voronoicell_base::add_memory_vorder(vc_class &amp;vc) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">int</span> i=(<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>&lt;&lt;1),j,*p1,**p2;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span>(i&gt;max_vertex_order) voro_fatal_error(<span class="stringliteral">&quot;Vertex order memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Vertex order memory scaled up to %d\n&quot;</span>,i);</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"></span> p1=<span class="keyword">new</span> <span class="keywordtype">int</span>[i];</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;j++) p1[j]=mem[j];<span class="keywordflow">while</span>(j&lt;i) p1[j++]=0;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>;mem=p1;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; p2=<span class="keyword">new</span> <span class="keywordtype">int</span>*[i];</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;j++) p2[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[j];</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>=p2;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; p1=<span class="keyword">new</span> <span class="keywordtype">int</span>[i];</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;j++) p1[j]=<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[j];<span class="keywordflow">while</span>(j&lt;i) p1[j++]=0;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>=p1;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; vc.n_add_memory_vorder(i);</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; current_vertex_order=i;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment">/** Doubles the size allocation of the main delete stack. If the allocation</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> * exceeds the absolute maximum set in max_delete_size, then routine causes a</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * fatal error. */</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keywordtype">void</span> voronoicell_base::add_memory_ds(<span class="keywordtype">int</span> *&amp;stackp) {</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>&lt;&lt;=1;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>&gt;max_delete_size) voro_fatal_error(<span class="stringliteral">&quot;Delete stack 1 memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Delete stack 1 memory scaled up to %d\n&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>);</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> *dsn=<span class="keyword">new</span> <span class="keywordtype">int</span>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>],*dsnp=dsn,*dsp=ds;</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">while</span>(dsp&lt;stackp) *(dsnp++)=*(dsp++);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">delete</span> [] ds;ds=dsn;stackp=dsnp;</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; stacke=ds+<a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">/** Doubles the size allocation of the auxiliary delete stack. If the</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * allocation exceeds the absolute maximum set in max_delete2_size, then the</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * routine causes a fatal error. */</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keywordtype">void</span> voronoicell_base::add_memory_ds2(<span class="keywordtype">int</span> *&amp;stackp2) {</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>&lt;&lt;=1;</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>&gt;max_delete2_size) voro_fatal_error(<span class="stringliteral">&quot;Delete stack 2 memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Delete stack 2 memory scaled up to %d\n&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>);</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> *dsn=<span class="keyword">new</span> <span class="keywordtype">int</span>[<a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>],*dsnp=dsn,*dsp=ds2;</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">while</span>(dsp&lt;stackp2) *(dsnp++)=*(dsp++);</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">delete</span> [] ds2;ds2=dsn;stackp2=dsnp;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; stacke2=ds2+<a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>;</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">/** Initializes a Voronoi cell as a rectangular box with the given dimensions.</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * \param[in] (xmin,xmax) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * \param[in] (ymin,ymax) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d"> 257</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">voronoicell_base::init_base</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax) {</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>=0;</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>=8;xmin*=2;xmax*=2;ymin*=2;ymax*=2;zmin*=2;zmax*=2;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>=xmin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1]=ymin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2]=zmin;</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3]=xmax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[4]=ymin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[5]=zmin;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[6]=xmin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[7]=ymax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[8]=zmin;</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[9]=xmax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[10]=ymax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[11]=zmin;</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[12]=xmin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[13]=ymin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[14]=zmax;</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[15]=xmax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[16]=ymin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[17]=zmax;</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[18]=xmin;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[19]=ymax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[20]=zmax;</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[21]=xmax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[22]=ymax;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[23]=zmax;</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[3];</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; *q=1;q[1]=4;q[2]=2;q[3]=2;q[4]=1;q[5]=0;q[6]=0;</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; q[7]=3;q[8]=5;q[9]=0;q[10]=2;q[11]=1;q[12]=0;q[13]=1;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; q[14]=0;q[15]=6;q[16]=3;q[17]=2;q[18]=1;q[19]=0;q[20]=2;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; q[21]=2;q[22]=7;q[23]=1;q[24]=2;q[25]=1;q[26]=0;q[27]=3;</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; q[28]=6;q[29]=0;q[30]=5;q[31]=2;q[32]=1;q[33]=0;q[34]=4;</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; q[35]=4;q[36]=1;q[37]=7;q[38]=2;q[39]=1;q[40]=0;q[41]=5;</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; q[42]=7;q[43]=2;q[44]=4;q[45]=2;q[46]=1;q[47]=0;q[48]=6;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; q[49]=5;q[50]=3;q[51]=6;q[52]=2;q[53]=1;q[54]=0;q[55]=7;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>=q;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[1]=q+7;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[2]=q+14;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[3]=q+21;</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[4]=q+28;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[5]=q+35;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[6]=q+42;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[7]=q+49;</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[1]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[2]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[3]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[4]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[5]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[6]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[7]=3;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;}</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">/** Initializes a Voronoi cell as a regular octahedron.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> * \param[in] l The distance from the octahedron center to a vertex. Six</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0),</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> * (0,l,0), (0,0,-l), and (0,0,l). */</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1"> 286</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">voronoicell_base::init_octahedron_base</a>(<span class="keywordtype">double</span> l) {</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>=0;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[4]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>=6;l*=2;</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>=-l;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2]=0;</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3]=l;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[4]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[5]=0;</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[6]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[7]=-l;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[8]=0;</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[9]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[10]=l;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[11]=0;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[12]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[13]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[14]=-l;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[15]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[16]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[17]=l;</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[4];</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; *q=2;q[1]=5;q[2]=3;q[3]=4;q[4]=0;q[5]=0;q[6]=0;q[7]=0;q[8]=0;</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; q[9]=2;q[10]=4;q[11]=3;q[12]=5;q[13]=2;q[14]=2;q[15]=2;q[16]=2;q[17]=1;</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; q[18]=0;q[19]=4;q[20]=1;q[21]=5;q[22]=0;q[23]=3;q[24]=0;q[25]=1;q[26]=2;</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; q[27]=0;q[28]=5;q[29]=1;q[30]=4;q[31]=2;q[32]=3;q[33]=2;q[34]=1;q[35]=3;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; q[36]=0;q[37]=3;q[38]=1;q[39]=2;q[40]=3;q[41]=3;q[42]=1;q[43]=1;q[44]=4;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; q[45]=0;q[46]=2;q[47]=1;q[48]=3;q[49]=1;q[50]=3;q[51]=3;q[52]=1;q[53]=5;</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>=q;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[1]=q+9;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[2]=q+18;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[3]=q+27;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[4]=q+36;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[5]=q+45;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[1]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[2]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[3]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[4]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[5]=4;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment">/** Initializes a Voronoi cell as a tetrahedron. It assumes that the normal to</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> * the face for the first three vertices points inside.</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> * \param (x0,y0,z0) a position vector for the first vertex.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment"> * \param (x1,y1,z1) a position vector for the second vertex.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> * \param (x2,y2,z2) a position vector for the third vertex.</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * \param (x3,y3,z3) a position vector for the fourth vertex. */</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b"> 312</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">voronoicell_base::init_tetrahedron_base</a>(<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1,<span class="keywordtype">double</span> x2,<span class="keywordtype">double</span> y2,<span class="keywordtype">double</span> z2,<span class="keywordtype">double</span> x3,<span class="keywordtype">double</span> y3,<span class="keywordtype">double</span> z3) {</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]=0;<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>=0;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>=4;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>=x0*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1]=y0*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2]=z0*2;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3]=x1*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[4]=y1*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[5]=z1*2;</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[6]=x2*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[7]=y2*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[8]=z2*2;</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[9]=x3*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[10]=y3*2;<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[11]=z3*2;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[3];</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; *q=1;q[1]=3;q[2]=2;q[3]=0;q[4]=0;q[5]=0;q[6]=0;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; q[7]=0;q[8]=2;q[9]=3;q[10]=0;q[11]=2;q[12]=1;q[13]=1;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; q[14]=0;q[15]=3;q[16]=1;q[17]=2;q[18]=2;q[19]=1;q[20]=2;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; q[21]=0;q[22]=1;q[23]=2;q[24]=1;q[25]=2;q[26]=1;q[27]=3;</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>=q;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[1]=q+7;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[2]=q+14;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[3]=q+21;</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[1]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[2]=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[3]=3;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;}</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">/** Checks that the relational table of the Voronoi cell is accurate, and</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * prints out any errors. This algorithm is O(p), so running it every time the</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> * plane routine is called will result in a significant slowdown. */</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f"> 331</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">voronoicell_base::check_relations</a>() {</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[i];j++) <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]][<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j]]!=i)</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; printf(<span class="stringliteral">&quot;Relational error at point %d, edge %d.\n&quot;</span>,i,j);</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">/** This routine checks for any two vertices that are connected by more than</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> * one edge. The plane algorithm is designed so that this should not happen, so</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> * any occurrences are most likely errors. Note that the routine is O(p), so</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> * running it every time the plane routine is called will result in a</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> * significant slowdown. */</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d"> 342</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">voronoicell_base::check_duplicates</a>() {</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=1;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[i];j++) <span class="keywordflow">for</span>(k=0;k&lt;j;k++) <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]==<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][k])</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; printf(<span class="stringliteral">&quot;Duplicate edges: (%d,%d) and (%d,%d) [%d]\n&quot;</span>,i,j,i,k,<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]);</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;}</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment">/** Constructs the relational table if the edges have been specified. */</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf"> 349</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">voronoicell_base::construct_relations</a>() {</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">int</span> i,j,k,l;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[i];j++) {</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; l=0;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]!=i) {</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; l++;</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">if</span>(l==nu[k]) voro_fatal_error(<span class="stringliteral">&quot;Relation table construction failed&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j]=l;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment">/** Starting from a point within the current cutting plane, this routine attempts</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * to find an edge to a point outside the cutting plane. This prevents the plane</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> * routine from .</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> * \param[in] vc a reference to the specialized version of the calling class.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> * \param[in,out] up */</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::search_for_outside_edge(vc_class &amp;vc,<span class="keywordtype">int</span> &amp;up) {</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordtype">int</span> i,lp,lw,*j(ds2),*stackp2(ds2);</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">double</span> l;</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; *(stackp2++)=up;</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">while</span>(j&lt;stackp2) {</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; up=*(j++);</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];i++) {</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">if</span>(lw==-1) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lw==0) add_to_stack(vc,lp,stackp2);</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; }</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment">/** Adds a point to the auxiliary delete stack if it is not already there.</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"> * \param[in] vc a reference to the specialized version of the calling class.</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> * \param[in] lp the index of the point to add.</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> * \param[in,out] stackp2 a pointer to the end of the stack entries. */</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voronoicell_base::add_to_stack(vc_class &amp;vc,<span class="keywordtype">int</span> lp,<span class="keywordtype">int</span> *&amp;stackp2) {</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *k(ds2);k&lt;stackp2;k++) <span class="keywordflow">if</span>(*k==lp) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">if</span>(stackp2==stacke2) add_memory_ds2(stackp2);</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; *(stackp2++)=lp;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment">/** Cuts the Voronoi cell by a particle whose center is at a separation of</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * (x,y,z) from the cell center. The value of rsq should be initially set to</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> * \f$x^2+y^2+z^2\f$.</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> * \param[in] vc a reference to the specialized version of the calling class.</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * \param[in] (x,y,z) the normal vector to the plane.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> * \param[in] rsq the distance along this vector of the plane.</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"> * \param[in] p_id the plane ID (for neighbor tracking only).</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely, true otherwise. */</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00404"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd"> 404</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voronoicell_base::nplane</a>(vc_class &amp;vc,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq,<span class="keywordtype">int</span> p_id) {</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordtype">int</span> count=0,i,j,k,lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>,cp,qp,rp,*stackp(ds),*stackp2(ds2),*dsp;</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordtype">int</span> us=0,ls=0,qs,iqs,cs,uw,qw,lw;</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordtype">int</span> *edp,*edd;</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">double</span> u,l,r,q;<span class="keywordtype">bool</span> complicated_setup=<span class="keyword">false</span>,new_double_edge=<span class="keyword">false</span>,double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="comment">// Initialize the safe testing routine</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; n_marg=0;px=x;py=y;pz=z;prsq=rsq;</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="comment">// Test approximately sqrt(n)/4 points for their proximity to the plane</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="comment">// and keep the one which is closest</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; uw=m_test(up,u);</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="comment">// Starting from an initial guess, we now move from vertex to vertex,</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="comment">// to try and find an edge which intersects the cutting plane,</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="comment">// or a vertex which is on the plane</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordflow">try</span> {</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span>(uw==1) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="comment">// The test point is inside the cutting plane.</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; us=0;</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">if</span>(l&lt;u) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; us++;</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; } <span class="keywordflow">while</span> (us&lt;nu[up]);</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(us==nu[up]) {</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">while</span>(lw==1) {</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span>(++count&gt;=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) <span class="keywordflow">throw</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; u=l;up=lp;</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span>(us=0;us&lt;ls;us++) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span>(l&lt;u) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span>(us==ls) {</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; us++;</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">while</span>(us&lt;nu[up]) {</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">if</span>(l&lt;u) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; us++;</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">if</span>(us==nu[up]) {</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="comment">// If the last point in the iteration is within the</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">// plane, we need to do the complicated setup</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="comment">// routine. Otherwise, we use the regular iteration.</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">if</span>(lw==0) {</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; up=lp;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; } <span class="keywordflow">else</span> complicated_setup=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(uw==-1) {</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; us=0;</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; qw=m_test(qp,q);</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(u&lt;q) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; us++;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; } <span class="keywordflow">while</span> (us&lt;nu[up]);</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span>(us==nu[up]) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">while</span>(qw==-1) {</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span>(++count&gt;=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) <span class="keywordflow">throw</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; u=q;up=qp;</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordflow">for</span>(us=0;us&lt;qs;us++) {</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; qw=m_test(qp,q);</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span>(u&lt;q) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; }</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span>(us==qs) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; us++;</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span>(us&lt;nu[up]) {</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; qw=m_test(qp,q);</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span>(u&lt;q) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; us++;</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span>(us==nu[up]) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span>(qw==1) {</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>;ls=us;l=u;</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; up=qp;us=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]+ls];u=q;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; complicated_setup=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; up=qp;</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; }</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="comment">// Our original test point was on the plane, so we</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="comment">// automatically head for the complicated setup</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="comment">// routine</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">catch</span>(<span class="keywordtype">bool</span> except) {</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">// This routine is a fall-back, in case floating point errors</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// cause the usual search routine to fail. In the fall-back</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// routine, we just test every edge to find one straddling</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="comment">// the plane.</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=1</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor"></span> fputs(<span class="stringliteral">&quot;Bailed out of convex calculation\n&quot;</span>,stderr);</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor"></span> qw=1;lw=0;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">for</span>(qp=0;qp&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;qp++) {</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; qw=m_test(qp,q);</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span>(qw==1) {</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// The point is inside the cutting space. Now</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// see if we can find a neighbor which isn&#39;t.</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">for</span>(us=0;us&lt;nu[qp];us++) {</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][us];</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(lp&lt;qp) {</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(lw!=1) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; }</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">if</span>(us&lt;nu[qp]) {</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; up=qp;</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">if</span>(lw==0) {</div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; complicated_setup=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; u=q;</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(qw==-1) {</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// The point is outside the cutting space. See</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="comment">// if we can find a neighbor which isn&#39;t.</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">for</span>(ls=0;ls&lt;nu[qp];ls++) {</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; up=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][ls];</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(up&lt;qp) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; uw=m_test(up,u);</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span>(uw!=-1) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; }</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">if</span>(ls&lt;nu[qp]) {</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span>(uw==0) {</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; up=qp;</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; complicated_setup=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; lp=qp;l=q;</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; us=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]+ls];</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="comment">// The point is in the plane, so we just</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="comment">// proceed with the complicated setup routine</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; up=qp;</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; complicated_setup=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span>(qp==p) <span class="keywordflow">return</span> qw==-1?<span class="keyword">true</span>:<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="comment">// We&#39;re about to add the first point of the new facet. In either</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// routine, we have to add a point, so first check there&#39;s space for</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="comment">// it.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>==current_vertices) add_memory_vertices(vc);</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span>(complicated_setup) {</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="comment">// We want to be strict about reaching the conclusion that the</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="comment">// cell is entirely within the cutting plane. It&#39;s not enough</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="comment">// to find a vertex that has edges which are all inside or on</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="comment">// the plane. If the vertex has neighbors that are also on the</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="comment">// plane, we should check those too.</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span>(!search_for_outside_edge(vc,up)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// The search algorithm found a point which is on the cutting</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// plane. We leave that point in place, and create a new one at</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="comment">// the same location.</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+1];</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+2];</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="comment">// Search for a collection of edges of the test vertex which</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="comment">// are outside of the cutting space. Begin by testing the</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="comment">// zeroth edge.</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; i=0;</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; lp=*<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span>(lw!=-1) {</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="comment">// The first edge is either inside the cutting space,</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// or lies within the cutting plane. Test the edges</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="comment">// sequentially until we find one that is outside.</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; rp=lw;</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; i++;</div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// If we reached the last edge with no luck</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="comment">// then all of the vertices are inside</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="comment">// or on the plane, so the cell is completely</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// deleted</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span>(i==nu[up]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; } <span class="keywordflow">while</span> (lw!=-1);</div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; j=i+1;</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="comment">// We found an edge outside the cutting space. Keep</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// moving through these edges until we find one that&#39;s</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="comment">// inside or on the plane.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">while</span>(j&lt;nu[up]) {</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][j];</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">if</span>(lw!=-1) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; j++;</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="comment">// Compute the number of edges for the new vertex. In</span></div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="comment">// general it will be the number of outside edges</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="comment">// found, plus two. But we need to recognize the</span></div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// special case when all but one edge is outside, and</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">// the remaining one is on the plane. For that case we</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// have to reduce the edge count by one to prevent</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// doubling up.</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span>(j==nu[up]&amp;&amp;i==1&amp;&amp;rp==0) {</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; double_edge=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; } <span class="keywordflow">else</span> nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=j-i+2;</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; k=1;</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="comment">// Add memory for the new vertex if needed, and</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// initialize</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">while</span> (nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&gt;=current_vertex_order) add_memory_vorder(vc);</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]==mem[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]) add_memory(vc,nu[p],stackp2);</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; vc.n_set_pointer(p,nu[p]);</div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]+((nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&lt;&lt;1)+1)*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]++;</div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&lt;&lt;1]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// Copy the edges of the original vertex into the new</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="comment">// one. Delete the edges of the original vertex, and</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// update the relational table.</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; us=<a class="code" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">cycle_down</a>(i,up);</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">while</span>(i&lt;j) {</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+i];</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; vc.n_copy(p,k,up,i);</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k]=qp;</div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+k]=qs;</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs]=k;</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i]=-1;</div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; i++;k++;</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; qs=i==nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]?0:i;</div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="comment">// In this case, the zeroth edge is outside the cutting</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="comment">// plane. Begin by searching backwards from the last</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="comment">// edge until we find an edge which isn&#39;t outside.</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; i=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]-1;</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">while</span>(lw==-1) {</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; i--;</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="comment">// If i reaches zero, then we have a point in</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="comment">// the plane all of whose edges are outside</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">// the cutting space, so we just exit</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span>(i==0) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; }</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="comment">// Now search forwards from zero</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; j=1;</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][j];</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; qw=m_test(qp,q);</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; <span class="keywordflow">while</span>(qw==-1) {</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; j++;</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][j];</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; qw=m_test(qp,l);</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="comment">// Compute the number of edges for the new vertex. In</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// general it will be the number of outside edges</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="comment">// found, plus two. But we need to recognize the</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="comment">// special case when all but one edge is outside, and</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="comment">// the remaining one is on the plane. For that case we</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="comment">// have to reduce the edge count by one to prevent</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="comment">// doubling up.</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">if</span>(i==j&amp;&amp;qw==0) {</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; double_edge=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]-i+j+1;</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="comment">// Add memory to store the vertex if it doesn&#39;t exist</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="comment">// already</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; k=1;</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">while</span>(nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&gt;=current_vertex_order) add_memory_vorder(vc);</div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]==mem[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]) add_memory(vc,nu[p],stackp2);</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="comment">// Copy the edges of the original vertex into the new</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// one. Delete the edges of the original vertex, and</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="comment">// update the relational table.</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; vc.n_set_pointer(p,nu[p]);</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]+((nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&lt;&lt;1)+1)*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]++;</div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]&lt;&lt;1]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; us=i++;</div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">while</span>(i&lt;nu[up]) {</div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+i];</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; vc.n_copy(p,k,up,i);</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k]=qp;</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+k]=qs;</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs]=k;</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i]=-1;</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; i++;k++;</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; }</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; i=0;</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">while</span>(i&lt;j) {</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i];</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+i];</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; vc.n_copy(p,k,up,i);</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k]=qp;</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+k]=qs;</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs]=k;</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][i]=-1;</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; i++;k++;</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; qs=j;</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span>(!double_edge) {</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,k,up,qs);</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; vc.n_set(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,0,p_id);</div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; } <span class="keywordflow">else</span> vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,0,up,qs);</div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="comment">// Add this point to the auxiliary delete stack</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span>(stackp2==stacke2) add_memory_ds2(stackp2);</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; *(stackp2++)=up;</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="comment">// Look at the edges on either side of the group that was</span></div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="comment">// detected. We&#39;re going to commence facet computation by</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="comment">// moving along one of them. We are going to end up coming back</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="comment">// along the other one.</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; cs=k;</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>;q=u;</div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; i=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; us=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; up=i;</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]&lt;&lt;1]=-<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;</div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="comment">// The search algorithm found an intersected edge between the</span></div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// points lp and up. Create a new vertex between them which</span></div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="comment">// lies on the cutting plane. Since u and l differ by at least</span></div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="comment">// the tolerance, this division should never screw up.</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span>(stackp==stacke) add_memory_ds(stackp);</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; *(stackp++)=up;</div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; r=u/(u-l);l=1-r;</div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]*l;</div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp+1]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+1]*l;</div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp+2]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+2]*l;</div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="comment">// This point will always have three edges. Connect one of them</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="comment">// to lp.</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=3;</div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]==mem[3]) add_memory(vc,3,stackp2);</div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; vc.n_set_pointer(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,3);</div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; vc.n_set(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,0,p_id);</div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,1,up,us);</div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,2,lp,ls);</div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[3]+7*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]++;</div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][6]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us]=-1;</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][ls]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]+ls]=1;</div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][1]=lp;</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+1]=ls;</div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; cs=2;</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="comment">// Set the direction to move in</span></div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(us,up);</div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; qp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>;q=u;</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; }</div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;</div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">// When the code reaches here, we have initialized the first point, and</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="comment">// we have a direction for moving it to construct the rest of the facet</span></div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; cp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;rp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>++;</div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">while</span>(qp!=up||qs!=us) {</div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// We&#39;re currently tracing round an intersected facet. Keep</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// moving around it until we find a point or edge which</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="comment">// intersects the plane.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs];</div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">if</span>(lw==1) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="comment">// The point is still in the cutting space. Just add it</span></div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="comment">// to the delete stack and keep moving.</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs],lp);</div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; qp=lp;</div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; q=l;</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span>(stackp==stacke) add_memory_ds(stackp);</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; *(stackp++)=qp;</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(lw==-1) {</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="comment">// The point is outside of the cutting space, so we&#39;ve</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="comment">// found an intersected edge. Introduce a regular point</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="comment">// at the point of intersection. Connect it to the</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="comment">// point we just tested. Also connect it to the previous</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// new point in the facet we&#39;re constructing.</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>==current_vertices) add_memory_vertices(vc);</div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; r=q/(q-l);l=1-r;</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp]*l;</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp+1]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp+1]*l;</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*lp+2]*r+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp+2]*l;</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=3;</div>
+<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]==mem[3]) add_memory(vc,3,stackp2);</div>
+<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs+nu[qp]];</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; vc.n_set_pointer(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,3);</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; vc.n_set(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,0,p_id);</div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,1,qp,qs);</div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; vc.n_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,2,lp,ls);</div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[3]+7*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[3]++;</div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=cp;</div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][1]=lp;</div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][3]=cs;</div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][4]=ls;</div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][6]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][ls]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]+ls]=1;</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][cs]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][nu[cp]+cs]=0;</div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs]=-1;</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(qs,qp);</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; cp=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>++;</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; cs=2;</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="comment">// We&#39;ve found a point which is on the cutting plane.</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="comment">// We&#39;re going to introduce a new point right here, but</span></div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="comment">// first we need to figure out the number of edges it</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="comment">// has.</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>==current_vertices) add_memory_vertices(vc);</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// If the previous vertex detected a double edge, our</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="comment">// new vertex will have one less edge.</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; k=double_edge?0:1;</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs];</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; qp=lp;</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; iqs=qs;</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="comment">// Start testing the edges of the current point until</span></div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="comment">// we find one which isn&#39;t outside the cutting space</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; k++;</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(qs,qp);</div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs];</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; lw=m_test(lp,l);</div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; } <span class="keywordflow">while</span> (lw==-1);</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;</div>
+<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <span class="comment">// Now we need to find out whether this marginal vertex</span></div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <span class="comment">// we are on has been visited before, because if that&#39;s</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="comment">// the case, we need to add vertices to the existing</span></div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">// new vertex, rather than creating a fresh one. We also</span></div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="comment">// need to figure out whether we&#39;re in a case where we</span></div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="comment">// might be creating a duplicate edge.</span></div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; j=-<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]&lt;&lt;1];</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span>(qp==up&amp;&amp;qs==us) {</div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="comment">// If we&#39;re heading into the final part of the</span></div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="comment">// new facet, then we never worry about the</span></div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="comment">// duplicate edge calculation.</span></div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span>(j&gt;0) k+=nu[j];</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">if</span>(j&gt;0) {</div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// This vertex was visited before, so</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="comment">// count those vertices to the ones we</span></div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="comment">// already have.</span></div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; k+=nu[j];</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="comment">// The only time when we might make a</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="comment">// duplicate edge is if the point we&#39;re</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="comment">// going to move to next is also a</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="comment">// marginal point, so test for that</span></div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="comment">// first.</span></div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="keywordflow">if</span>(lw==0) {</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="comment">// Now see whether this marginal point</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// has been visited before.</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; i=-<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]&lt;&lt;1];</div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">if</span>(i&gt;0) {</div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="comment">// Now see if the last edge of that other</span></div>
+<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="comment">// marginal point actually ends up here.</span></div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]-1]==j) {</div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; new_double_edge=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; k-=1;</div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; } <span class="keywordflow">else</span> new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160;</div>
+<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="comment">// That marginal point hasn&#39;t been visited</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="comment">// before, so we probably don&#39;t have to worry</span></div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="comment">// about duplicate edges, except in the</span></div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="comment">// case when that&#39;s the way into the end</span></div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="comment">// of the facet, because that way always creates</span></div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// an edge.</span></div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span>(j==rp&amp;&amp;lp==up&amp;&amp;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs]==us) {</div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; new_double_edge=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; k-=1;</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; } <span class="keywordflow">else</span> new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; } <span class="keywordflow">else</span> new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// The vertex hasn&#39;t been visited</span></div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// before, but let&#39;s see if it&#39;s</span></div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="comment">// marginal</span></div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">if</span>(lw==0) {</div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="comment">// If it is, we need to check</span></div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="comment">// for the case that it&#39;s a</span></div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="comment">// small branch, and that we&#39;re</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="comment">// heading right back to where</span></div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="comment">// we came from</span></div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; i=-<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]&lt;&lt;1];</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">if</span>(i==cp) {</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; new_double_edge=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; k-=1;</div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; } <span class="keywordflow">else</span> new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; } <span class="keywordflow">else</span> new_double_edge=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; }</div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="comment">// k now holds the number of edges of the new vertex</span></div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="comment">// we are forming. Add memory for it if it doesn&#39;t exist</span></div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="comment">// already.</span></div>
+<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">while</span>(k&gt;=current_vertex_order) add_memory_vorder(vc);</div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[k]==mem[k]) add_memory(vc,k,stackp2);</div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="comment">// Now create a new vertex with order k, or augment</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="comment">// the existing one</span></div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span>(j&gt;0) {</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;</div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="comment">// If we&#39;re augmenting a vertex but we don&#39;t</span></div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="comment">// actually need any more edges, just skip this</span></div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="comment">// routine to avoid memory confusion</span></div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span>(nu[j]!=k) {</div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="comment">// Allocate memory and copy the edges</span></div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="comment">// of the previous instance into it</span></div>
+<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; vc.n_set_aux1(k);</div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; edp=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[k]+((k&lt;&lt;1)+1)*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[k]++;</div>
+<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; i=0;</div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">while</span>(i&lt;nu[j]) {</div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; vc.n_copy_aux1(j,i);</div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; edp[i]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][i];</div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; edp[k+i]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]+i];</div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; i++;</div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; }</div>
+<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; edp[k&lt;&lt;1]=j;</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="comment">// Remove the previous instance with</span></div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="comment">// fewer vertices from the memory</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; <span class="comment">// structure</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; edd=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[nu[j]]+((nu[j]&lt;&lt;1)+1)*--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[j]];</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">if</span>(edd!=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j]) {</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">for</span>(lw=0;lw&lt;=(nu[j]&lt;&lt;1);lw++) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][lw]=edd[lw];</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; vc.n_set_aux2_copy(j,nu[j]);</div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; vc.n_copy_pointer(edd[nu[j]&lt;&lt;1],j);</div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[edd[nu[j]&lt;&lt;1]]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j];</div>
+<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; }</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; vc.n_set_to_aux1(j);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j]=edp;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; } <span class="keywordflow">else</span> i=nu[j];</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">// Allocate a new vertex of order k</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; vc.n_set_pointer(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,k);</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[k]+((k&lt;&lt;1)+1)*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[k]++;</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k&lt;&lt;1]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; <span class="keywordflow">if</span>(stackp2==stacke2) add_memory_ds2(stackp2);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; *(stackp2++)=qp;</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp];</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp+1];</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*qp+2];</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]&lt;&lt;1]=-<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; j=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>++;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; i=0;</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; nu[j]=k;</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="comment">// Unless the previous case was a double edge, connect</span></div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="comment">// the first available edge of the new vertex to the</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="comment">// last one in the facet</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">if</span>(!double_edge) {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][i]=cp;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]+i]=cs;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; vc.n_set(j,i,p_id);</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][cs]=j;</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][nu[cp]+cs]=i;</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; i++;</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; }</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="comment">// Copy in the edges of the underlying vertex,</span></div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="comment">// and do one less if this was a double edge</span></div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; qs=iqs;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">while</span>(i&lt;(new_double_edge?k:k-1)) {</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(qs,qp);</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; lp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs];ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]+qs];</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; vc.n_copy(j,i,qp,qs);</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][i]=lp;</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]+i]=ls;</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][ls]=j;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[lp][nu[lp]+ls]=i;</div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][qs]=-1;</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; i++;</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; qs=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(qs,qp);</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; cs=i;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; cp=j;</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; vc.n_copy(j,new_double_edge?0:cs,qp,qs);</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="comment">// Update the double_edge flag, to pass it</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="comment">// to the next instance of this routine</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; double_edge=new_double_edge;</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="comment">// Connect the final created vertex to the initial one</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][cs]=rp;</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[rp]=cp;</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp][nu[cp]+cs]=0;</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[rp][nu[rp]]=cs;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="comment">// Delete points: first, remove any duplicates</span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; dsp=ds;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">while</span>(dsp&lt;stackp) {</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; j=*dsp;</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]]!=-1) {</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]]=-1;</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; dsp++;</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; } <span class="keywordflow">else</span> *dsp=*(--stackp);</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; }</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="comment">// Add the points in the auxiliary delete stack,</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="comment">// and reset their back pointers</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">for</span>(dsp=ds2;dsp&lt;stackp2;dsp++) {</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; j=*dsp;</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]&lt;&lt;1]=j;</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]]!=-1) {</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]]=-1;</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span>(stackp==stacke) add_memory_ds(stackp);</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; *(stackp++)=j;</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; }</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="comment">// Scan connections and add in extras</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">for</span>(dsp=ds;dsp&lt;stackp;dsp++) {</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; cp=*dsp;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">for</span>(edp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp];edp&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[cp]+nu[cp];edp++) {</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; qp=*edp;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keywordflow">if</span>(qp!=-1&amp;&amp;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]]!=-1) {</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keywordflow">if</span>(stackp==stacke) {</div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordtype">int</span> dis=stackp-dsp;</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; add_memory_ds(stackp);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; dsp=ds+dis;</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; }</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; *(stackp++)=qp;</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[qp][nu[qp]]=-1;</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; }</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; }</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; }</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; up=0;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="comment">// Delete them from the array structure</span></div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">while</span>(stackp&gt;ds) {</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; --<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]]==-1) {</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; j=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; edp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];edd=(<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[j]+((j&lt;&lt;1)+1)*--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[j]);</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">while</span>(edp&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+(j&lt;&lt;1)+1) *(edp++)=*(edd++);</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; vc.n_set_aux2_copy(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,j);</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; vc.n_copy_pointer(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][(j&lt;&lt;1)],<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][(j&lt;&lt;1)]]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; --<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; }</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; up=*(--stackp);</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">if</span>(up&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="comment">// Vertex management</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1];</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*up+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2];</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="comment">// Memory management</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; j=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; edp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];edd=(<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[j]+((j&lt;&lt;1)+1)*--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[j]);</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">while</span>(edp&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[up]+(j&lt;&lt;1)+1) *(edp++)=*(edd++);</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; vc.n_set_aux2_copy(up,j);</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; vc.n_copy_pointer(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[up][j&lt;&lt;1],up);</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; vc.n_copy_pointer(up,<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][j&lt;&lt;1]]=ed[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="comment">// Edge management</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; ed[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]=ed[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];i++) ed[ed[up][i]][ed[up][nu[up]+i]]=up;</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; ed[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]&lt;&lt;1]=<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; } <span class="keywordflow">else</span> up=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>++;</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="comment">// Check for any vertices of zero order</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span>(*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>&gt;0) voro_fatal_error(<span class="stringliteral">&quot;Zero order vertex formed&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="comment">// Collapse any order 2 vertices and exit</span></div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">return</span> collapse_order2(vc);</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;}</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment">/** During the creation of a new facet in the plane routine, it is possible</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment"> * that some order two vertices may arise. This routine removes them.</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment"> * Suppose an order two vertex joins c and d. If there&#39;s a edge between</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment"> * c and d already, then the order two vertex is just removed; otherwise,</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment"> * the order two vertex is removed and c and d are joined together directly.</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="comment"> * It is possible this process will create order two or order one vertices,</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;<span class="comment"> * and the routine is continually run until all of them are removed.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;<span class="comment"> * \return False if the vertex removal was unsuccessful, indicative of the cell</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="comment"> * reducing to zero volume and disappearing; true if the vertex removal</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="comment"> * was successful. */</span></div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::collapse_order2(vc_class &amp;vc) {</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">if</span>(!collapse_order1(vc)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordtype">int</span> a,b,i,j,k,l;</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[2]&gt;0) {</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="comment">// Pick a order 2 vertex and read in its edges</span></div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; i=--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[2];</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; j=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[2][5*i];k=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[2][5*i+1];</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">if</span>(j==k) {</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=1</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="preprocessor"></span> fputs(<span class="stringliteral">&quot;Order two vertex joins itself&quot;</span>,stderr);</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// Scan the edges of j to see if joins k</span></div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;nu[j];l++) {</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l]==k) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="comment">// If j doesn&#39;t already join k, join them together.</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="comment">// Otherwise delete the connection to the current</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="comment">// vertex from j and k.</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; a=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[2][5*i+2];b=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[2][5*i+3];i=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[2][5*i+4];</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">if</span>(l==nu[j]) {</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][a]=k;</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][b]=j;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][nu[j]+a]=b;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+b]=a;</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">if</span>(!delete_connection(vc,j,a,<span class="keyword">false</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">if</span>(!delete_connection(vc,k,b,<span class="keyword">true</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; }</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="comment">// Compact the memory</span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; --<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span>(up==i) up=0;</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>!=i) {</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">if</span>(up==<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) up=i;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1];</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2];</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];k++) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k]][<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+k]]=i;</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; vc.n_copy_pointer(i,<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; nu[i]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]&lt;&lt;1]=i;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="comment">// Collapse any order 1 vertices if they were created</span></div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">if</span>(!collapse_order1(vc)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; }</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;}</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;<span class="comment">/** Order one vertices can potentially be created during the order two collapse</span></div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="comment"> * routine. This routine keeps removing them until there are none left.</span></div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="comment"> * \return False if the vertex removal was unsuccessful, indicative of the cell</span></div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="comment"> * having zero volume and disappearing; true if the vertex removal was</span></div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;<span class="comment"> * successful. */</span></div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::collapse_order1(vc_class &amp;vc) {</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">while</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[1]&gt;0) {</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; up=0;</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=1</span></div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="preprocessor"></span> fputs(<span class="stringliteral">&quot;Order one collapse\n&quot;</span>,stderr);</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="preprocessor"></span> i=--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[1];</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; j=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[1][3*i];k=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[1][3*i+1];</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; i=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[1][3*i+2];</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">if</span>(!delete_connection(vc,j,k,<span class="keyword">false</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; --<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">if</span>(up==i) up=0;</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>!=i) {</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keywordflow">if</span>(up==<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) up=i;</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+1]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+1];</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+2]=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>+2];</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];k++) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][k]][<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]+k]]=i;</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; vc.n_copy_pointer(i,<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; nu[i]=nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>];</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]&lt;&lt;1]=i;</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; }</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; }</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160;}</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="comment">/** This routine deletes the kth edge of vertex j and reorganizes the memory.</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;<span class="comment"> * If the neighbor computation is enabled, we also have to supply an handedness</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="comment"> * flag to decide whether to preserve the plane on the left or right of the</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;<span class="comment"> * connection.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;<span class="comment"> * \return False if a zero order vertex was formed, indicative of the cell</span></div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160;<span class="comment"> * disappearing; true if the vertex removal was successful. */</span></div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::delete_connection(vc_class &amp;vc,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k,<span class="keywordtype">bool</span> hand) {</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordtype">int</span> q=hand?k:<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(k,j);</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordtype">int</span> i=nu[j]-1,l,*edp,*edd,m;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=1</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span>(i&lt;1) {</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; fputs(<span class="stringliteral">&quot;Zero order vertex formed\n&quot;</span>,stderr);</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; }</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]==mem[i]) add_memory(vc,i,ds2);</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; vc.n_set_aux1(i);</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;q;l++) vc.n_copy_aux1(j,l);</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">while</span>(l&lt;i) {</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; vc.n_copy_aux1_shift(j,l);</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; l++;</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; }</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; edp=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[i]+((i&lt;&lt;1)+1)*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[i]++;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; edp[i&lt;&lt;1]=j;</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;k;l++) {</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; edp[l]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l];</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; edp[l+i]=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l+nu[j]];</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; }</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">while</span>(l&lt;i) {</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l+1];</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; edp[l]=m;</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l+nu[j]+1];</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; edp[l+i]=k;</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[m][nu[m]+k]--;</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; l++;</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; }</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; edd=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[nu[j]]+((nu[j]&lt;&lt;1)+1)*--<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[j]];</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;=(nu[j]&lt;&lt;1);l++) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j][l]=edd[l];</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; vc.n_set_aux2_copy(j,nu[j]);</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; vc.n_set_to_aux2(edd[nu[j]&lt;&lt;1]);</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; vc.n_set_to_aux1(j);</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[edd[nu[j]&lt;&lt;1]]=edd;</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[j]=edp;</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; nu[j]=i;</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;}</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="comment">/** Calculates the volume of the Voronoi cell, by decomposing the cell into</span></div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment"> * tetrahedra extending outward from the zeroth vertex, whose volumes are</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment"> * evaluated using a scalar triple product.</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"> * \return A floating point number holding the calculated volume. */</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba"> 1299</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">voronoicell_base::volume</a>() {</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> fe=1/48.0;</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordtype">double</span> vol=0;</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,n;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="keywordtype">double</span> ux,uy,uz,vx,vy,vz,wx,wy,wz;</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) {</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; ux=*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i];</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; uy=pts[1]-pts[3*i+1];</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; uz=pts[2]-pts[3*i+2];</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; vx=pts[3*k]-*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; vy=pts[3*k+1]-pts[1];</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; vz=pts[3*k+2]-pts[2];</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; n=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; wx=pts[3*m]-*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; wy=pts[3*m+1]-pts[1];</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; wz=pts[3*m+2]-pts[2];</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; vol+=ux*vy*wz+uy*vz*wx+uz*vx*wy-uz*vy*wx-uy*vx*wz-ux*vz*wy;</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; k=m;l=n;vx=wx;vy=wy;vz=wz;</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; }</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; }</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; }</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordflow">return</span> vol*fe;</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;}</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment">/** Calculates the areas of each face of the Voronoi cell and prints the</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment"> * results to an output stream.</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea"> 1336</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">voronoicell_base::face_areas</a>(std::vector&lt;double&gt; &amp;v) {</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; <span class="keywordtype">double</span> area;</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; v.clear();</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,n;</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordtype">double</span> ux,uy,uz,vx,vy,vz,wx,wy,wz;</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; area=0;</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; n=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; ux=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k]-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i];</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; uy=pts[3*k+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; uz=pts[3*k+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; vx=pts[3*m]-pts[3*i];</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; vy=pts[3*m+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; vz=pts[3*m+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; wx=uy*vz-uz*vy;</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; wy=uz*vx-ux*vz;</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; wz=ux*vy-uy*vx;</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; area+=sqrt(wx*wx+wy*wy+wz*wz);</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; k=m;l=n;</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; }</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; v.push_back(0.125*area);</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; }</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; }</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;}</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment">/** Calculates the total surface area of the Voronoi cell.</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment"> * \return The computed area. */</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a"> 1372</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">voronoicell_base::surface_area</a>() {</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; <span class="keywordtype">double</span> area=0;</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,n;</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordtype">double</span> ux,uy,uz,vx,vy,vz,wx,wy,wz;</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; n=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; ux=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k]-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i];</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; uy=pts[3*k+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; uz=pts[3*k+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; vx=pts[3*m]-pts[3*i];</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; vy=pts[3*m+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; vz=pts[3*m+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; wx=uy*vz-uz*vy;</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; wy=uz*vx-ux*vz;</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; wz=ux*vy-uy*vx;</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; area+=sqrt(wx*wx+wy*wy+wz*wz);</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; k=m;l=n;</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; }</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; }</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; }</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordflow">return</span> 0.125*area;</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;}</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment">/** Calculates the centroid of the Voronoi cell, by decomposing the cell into</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="comment"> * tetrahedra extending outward from the zeroth vertex.</span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="comment"> * \param[out] (cx,cy,cz) references to floating point numbers in which to</span></div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment"> * pass back the centroid vector. */</span></div>
+<div class="line"><a name="l01408"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3"> 1408</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">voronoicell_base::centroid</a>(<span class="keywordtype">double</span> &amp;cx,<span class="keywordtype">double</span> &amp;cy,<span class="keywordtype">double</span> &amp;cz) {</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordtype">double</span> tvol,vol=0;cx=cy=cz=0;</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,n;</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keywordtype">double</span> ux,uy,uz,vx,vy,vz,wx,wy,wz;</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) {</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; ux=*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i];</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; uy=pts[1]-pts[3*i+1];</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; uz=pts[2]-pts[3*i+2];</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; vx=pts[3*k]-*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; vy=pts[3*k+1]-pts[1];</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; vz=pts[3*k+2]-pts[2];</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; n=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; wx=pts[3*m]-*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; wy=pts[3*m+1]-pts[1];</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; wz=pts[3*m+2]-pts[2];</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; tvol=ux*vy*wz+uy*vz*wx+uz*vx*wy-uz*vy*wx-uy*vx*wz-ux*vz*wy;</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; vol+=tvol;</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; cx+=(wx+vx-ux)*tvol;</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; cy+=(wy+vy-uy)*tvol;</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; cz+=(wz+vz-uz)*tvol;</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; k=m;l=n;vx=wx;vy=wy;vz=wz;</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; }</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; }</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; }</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; }</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span>(vol&gt;tolerance_sq) {</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; vol=0.125/vol;</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; cx=cx*vol+0.5*(*pts);</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; cy=cy*vol+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1];</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; cz=cz*vol+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2];</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; } <span class="keywordflow">else</span> cx=cy=cz=0;</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;}</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;<span class="comment">/** Computes the maximum radius squared of a vertex from the center of the</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160;<span class="comment"> * cell. It can be used to determine when enough particles have been testing an</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;<span class="comment"> * all planes that could cut the cell have been considered.</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="comment"> * \return The maximum radius squared of a vertex.*/</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5"> 1454</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">voronoicell_base::max_radius_squared</a>() {</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordtype">double</span> r,s,*ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>+3,*ptse=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>+3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; r=*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>*(*pts)+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1]*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[1]+<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2]*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[2];</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="keywordflow">while</span>(ptsp&lt;ptse) {</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; s=*ptsp*(*ptsp);ptsp++;</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; s+=*ptsp*(*ptsp);ptsp++;</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; s+=*ptsp*(*ptsp);ptsp++;</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">if</span>(s&gt;r) r=s;</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; }</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">return</span> r;</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160;}</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment">/** Calculates the total edge distance of the Voronoi cell.</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment"> * \return A floating point number holding the calculated distance. */</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9"> 1468</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">voronoicell_base::total_edge_distance</a>() {</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="keywordtype">double</span> dis=0,dx,dy,dz;</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>-1;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">if</span>(k&gt;i) {</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; dx=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k]-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i];</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; dy=pts[3*k+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; dz=pts[3*k+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; dis+=sqrt(dx*dx+dy*dy+dz*dz);</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; }</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; }</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">return</span> 0.5*dis;</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;}</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;<span class="comment">/** Outputs the edges of the Voronoi cell in POV-Ray format to an open file</span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;<span class="comment"> * stream, displacing the cell by given vector.</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement vector to be added to the cell&#39;s position.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a"> 1487</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">voronoicell_base::draw_pov</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE* fp) {</div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordtype">int</span> i,j,k;<span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>,*pt2;</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordtype">char</span> posbuf1[128],posbuf2[128];</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++,ptsp+=3) {</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; sprintf(posbuf1,<span class="stringliteral">&quot;%g,%g,%g&quot;</span>,x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; fprintf(fp,<span class="stringliteral">&quot;sphere{&lt;%s&gt;,r}\n&quot;</span>,posbuf1);</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">if</span>(k&lt;i) {</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; pt2=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>+3*k;</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; sprintf(posbuf2,<span class="stringliteral">&quot;%g,%g,%g&quot;</span>,x+*pt2*0.5,y+0.5*pt2[1],z+0.5*pt2[2]);</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span>(strcmp(posbuf1,posbuf2)!=0) fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%s&gt;,&lt;%s&gt;,r}\n&quot;</span>,posbuf1,posbuf2);</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; }</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; }</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;}</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;<span class="comment">/** Outputs the edges of the Voronoi cell in gnuplot format to an output stream.</span></div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement vector to be added to the cell&#39;s position.</span></div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l01507"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46"> 1507</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">voronoicell_base::draw_gnuplot</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp) {</div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m;</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n&quot;</span>,x+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i],y+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+1],z+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*i+2]);</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; l=i;m=j;</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[l][nu[l]+m]]=-1-l;</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[l][m]=-1-k;</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; l=k;</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n&quot;</span>,x+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k],y+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k+1],z+0.5*<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k+2]);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; } <span class="keywordflow">while</span> (search_edge(l,m,k));</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; fputs(<span class="stringliteral">&quot;\n\n&quot;</span>,fp);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; }</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; }</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;}</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::search_edge(<span class="keywordtype">int</span> l,<span class="keywordtype">int</span> &amp;m,<span class="keywordtype">int</span> &amp;k) {</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">for</span>(m=0;m&lt;nu[l];m++) {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[l][m];</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160;}</div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="comment">/** Outputs the Voronoi cell in the POV mesh2 format, described in section</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160;<span class="comment"> * 1.3.2.2 of the POV-Ray documentation. The mesh2 output consists of a list of</span></div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="comment"> * vertex vectors, followed by a list of triangular faces. The routine also</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment"> * makes use of the optional inside_vector specification, which makes the mesh</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment"> * object solid, so the the POV-Ray Constructive Solid Geometry (CSG) can be</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment"> * applied.</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement vector to be added to the cell&#39;s position.</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l01542"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40"> 1542</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">voronoicell_base::draw_pov_mesh</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp) {</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,n;</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; fprintf(fp,<span class="stringliteral">&quot;mesh2 {\nvertex_vectors {\n%d\n&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++,ptsp+=3) fprintf(fp,<span class="stringliteral">&quot;,&lt;%g,%g,%g&gt;\n&quot;</span>,x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; fprintf(fp,<span class="stringliteral">&quot;}\nface_indices {\n%d\n&quot;</span>,(p-2)&lt;&lt;1);</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; n=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; fprintf(fp,<span class="stringliteral">&quot;,&lt;%d,%d,%d&gt;\n&quot;</span>,i,k,m);</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; k=m;l=n;</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; }</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; }</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; fputs(<span class="stringliteral">&quot;}\ninside_vector &lt;0,0,1&gt;\n}\n&quot;</span>,fp);</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;}</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160;<span class="comment">/** Several routines in the class that gather cell-based statistics internally</span></div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;<span class="comment"> * track their progress by flipping edges to negative so that they know what</span></div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="comment"> * parts of the cell have already been tested. This function resets them back</span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;<span class="comment"> * to positive. When it is called, it assumes that every edge in the routine</span></div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;<span class="comment"> * should have already been flipped to negative, and it bails out with an</span></div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;<span class="comment"> * internal error if it encounters a positive edge. */</span></div>
+<div class="line"><a name="l01572"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61"> 1572</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">voronoicell_base::reset_edges</a>() {</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]&gt;=0) voro_fatal_error(<span class="stringliteral">&quot;Edge reset routine found a previously untested edge&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; }</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;}</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="comment">/** Checks to see if a given vertex is inside, outside or within the test</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="comment"> * plane. If the point is far away from the test plane, the routine immediately</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="comment"> * returns whether it is inside or outside. If the routine is close the the</span></div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="comment"> * plane and within the specified tolerance, then the special check_marginal()</span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;<span class="comment"> * routine is called.</span></div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;<span class="comment"> * \param[in] n the vertex to test.</span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160;<span class="comment"> * \param[out] ans the result of the scalar product used in evaluating the</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;<span class="comment"> * location of the point.</span></div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;<span class="comment"> * \return -1 if the point is inside the plane, 1 if the point is outside the</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="comment"> * plane, or 0 if the point is within the plane. */</span></div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> voronoicell_base::m_test(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> &amp;ans) {</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>+n+(n&lt;&lt;1);</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; ans=*(pp++)*px;</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; ans+=*(pp++)*py;</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; ans+=*pp*pz-prsq;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="keywordflow">if</span>(ans&lt;-tolerance2) {</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ans&gt;tolerance2) {</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; }</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <span class="keywordflow">return</span> check_marginal(n,ans);</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;}</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160;<span class="comment">/** Checks to see if a given vertex is inside, outside or within the test</span></div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="comment"> * plane, for the case when the point has been detected to be very close to the</span></div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;<span class="comment"> * plane. The routine ensures that the returned results are always consistent</span></div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="comment"> * with previous tests, by keeping a table of any marginal results. The routine</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="comment"> * first sees if the vertex is in the table, and if it finds a previously</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="comment"> * computed result it uses that. Otherwise, it computes a result for this</span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="comment"> * vertex and adds it the table.</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="comment"> * \param[in] n the vertex to test.</span></div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="comment"> * \param[in] ans the result of the scalar product used in evaluating</span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;<span class="comment"> * the location of the point.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="comment"> * \return -1 if the point is inside the plane, 1 if the point is outside the</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="comment"> * plane, or 0 if the point is within the plane. */</span></div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;<span class="keywordtype">int</span> voronoicell_base::check_marginal(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> &amp;ans) {</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;n_marg;i+=2) <span class="keywordflow">if</span>(marg[i]==n) <span class="keywordflow">return</span> marg[i+1];</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="keywordflow">if</span>(n_marg==current_marginal) {</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; current_marginal&lt;&lt;=1;</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="keywordflow">if</span>(current_marginal&gt;max_marginal)</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Marginal case buffer allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Marginal cases buffer scaled up to %d\n&quot;</span>,i);</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> *pmarg=<span class="keyword">new</span> <span class="keywordtype">int</span>[current_marginal];</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j&lt;n_marg;j++) pmarg[j]=marg[j];</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keyword">delete</span> [] marg;</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; marg=pmarg;</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; }</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; marg[n_marg++]=n;</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; marg[n_marg++]=ans&gt;tolerance?1:(ans&lt;-tolerance?-1:0);</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; <span class="keywordflow">return</span> marg[n_marg-1];</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;}</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="comment">/** For each face of the Voronoi cell, this routine prints the out the normal</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="comment"> * vector of the face, and scales it to the distance from the cell center to</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;<span class="comment"> * that plane.</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d"> 1639</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">voronoicell_base::normals</a>(std::vector&lt;double&gt; &amp;v) {</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; v.clear();</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) normals_search(v,i,j,k);</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; }</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160;}</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;<span class="comment">/** This inline routine is called by normals(). It attempts to construct a</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="comment"> * single normal vector that is associated with a particular face. It first</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"> * traces around the face, trying to find two vectors along the face edges</span></div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="comment"> * whose vector product is above the numerical tolerance. It then constructs</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="comment"> * the normal vector using this product. If the face is too small, and none of</span></div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160;<span class="comment"> * the vector products are large enough, the routine may return (0,0,0) as the</span></div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="comment"> * normal vector.</span></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;<span class="comment"> * \param[in] v the vector to store the results in.</span></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160;<span class="comment"> * \param[in] i the initial vertex of the face to test.</span></div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160;<span class="comment"> * \param[in] j the index of an edge of the vertex.</span></div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;<span class="comment"> * \param[in] k the neighboring vertex of i, set to ed[i][j]. */</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voronoicell_base::normals_search(std::vector&lt;double&gt; &amp;v,<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k) {</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="keywordtype">int</span> l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k),m;</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordtype">double</span> ux,uy,uz,vx,vy,vz,wx,wy,wz,wmag;</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; ux=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*m]-<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>[3*k];</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; uy=pts[3*m+1]-pts[3*k+1];</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; uz=pts[3*m+2]-pts[3*k+2];</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160;</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="comment">// Test to see if the length of this edge is above the tolerance</span></div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; <span class="keywordflow">if</span>(ux*ux+uy*uy+uz*uz&gt;tolerance_sq) {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; k=m;m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; vx=pts[3*m]-pts[3*k];</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; vy=pts[3*m+1]-pts[3*k+1];</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; vz=pts[3*m+2]-pts[3*k+2];</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="comment">// Construct the vector product of this edge with</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; <span class="comment">// the previous one</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; wx=uz*vy-uy*vz;</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; wy=ux*vz-uz*vx;</div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; wz=uy*vx-ux*vy;</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; wmag=wx*wx+wy*wy+wz*wz;</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="comment">// Test to see if this vector product of the</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <span class="comment">// two edges is above the tolerance</span></div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordflow">if</span>(wmag&gt;tolerance_sq) {</div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="comment">// Construct the normal vector and print it</span></div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; wmag=1/sqrt(wmag);</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; v.push_back(wx*wmag);</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; v.push_back(wy*wmag);</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; v.push_back(wz*wmag);</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <span class="comment">// Mark all of the remaining edges of this</span></div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <span class="comment">// face and exit</span></div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="keywordflow">while</span>(m!=i) {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; k=m;m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; }</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; }</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; }</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; }</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; k=m;</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160;}</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160;</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment">/** Returns the number of faces of a computed Voronoi cell.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> * \return The number of faces. */</span></div>
+<div class="line"><a name="l01721"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406"> 1721</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">voronoicell_base::number_of_faces</a>() {</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,s=0;</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; s++;</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; k=m;</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; }</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keywordflow">return</span> s;</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;}</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment">/** Returns a vector of the vertex orders.</span></div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01744"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08"> 1744</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">voronoicell_base::vertex_orders</a>(std::vector&lt;int&gt; &amp;v) {</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; v.resize(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) v[i]=nu[i];</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;}</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment">/** Outputs the vertex orders.</span></div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> * \param[out] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447"> 1751</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">voronoicell_base::output_vertex_orders</a>(FILE *fp) {</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>&gt;0) {</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,*nu);</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *nup=nu+1;nup&lt;nu+<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;nup++) fprintf(fp,<span class="stringliteral">&quot; %d&quot;</span>,*nup);</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; }</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;}</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="comment">/** Returns a vector of the vertex vectors using the local coordinate system.</span></div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01760"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a"> 1760</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">voronoicell_base::vertices</a>(std::vector&lt;double&gt; &amp;v) {</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; v.resize(3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i+=3) {</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; v[i]=*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; v[i+1]=*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; v[i+2]=*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;}</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="comment">/** Outputs the vertex vectors using the local coordinate system.</span></div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160;<span class="comment"> * \param[out] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l01772"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f"> 1772</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">voronoicell_base::output_vertices</a>(FILE *fp) {</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>&gt;0) {</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; fprintf(fp,<span class="stringliteral">&quot;(%g,%g,%g)&quot;</span>,*pts*0.5,pts[1]*0.5,pts[2]*0.5);</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">double</span> *ptsp=pts+3;ptsp&lt;pts+3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;ptsp+=3) fprintf(fp,<span class="stringliteral">&quot; (%g,%g,%g)&quot;</span>,*ptsp*0.5,ptsp[1]*0.5,ptsp[2]*0.5);</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; }</div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;}</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;<span class="comment">/** Returns a vector of the vertex vectors in the global coordinate system.</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in.</span></div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the particle in the global</span></div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;<span class="comment"> * coordinate system. */</span></div>
+<div class="line"><a name="l01784"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a4345486c4a2039f523d42fc670943fab"> 1784</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">voronoicell_base::vertices</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,std::vector&lt;double&gt; &amp;v) {</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; v.resize(3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; <span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i+=3) {</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; v[i]=x+*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; v[i+1]=y+*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; v[i+2]=z+*(ptsp++)*0.5;</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; }</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;}</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment">/** Outputs the vertex vectors using the global coordinate system.</span></div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment"> * \param[out] fp the file handle to write to.</span></div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the particle in the global</span></div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;<span class="comment"> * coordinate system. */</span></div>
+<div class="line"><a name="l01798"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aec32739bb3f9393f4ddc33d90796d494"> 1798</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">voronoicell_base::output_vertices</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp) {</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>&gt;0) {</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; fprintf(fp,<span class="stringliteral">&quot;(%g,%g,%g)&quot;</span>,x+*pts*0.5,y+pts[1]*0.5,z+pts[2]*0.5);</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">double</span> *ptsp=pts+3;ptsp&lt;pts+3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;ptsp+=3) fprintf(fp,<span class="stringliteral">&quot; (%g,%g,%g)&quot;</span>,x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; }</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;}</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="comment">/** This routine returns the perimeters of each face.</span></div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01807"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3"> 1807</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">voronoicell_base::face_perimeters</a>(std::vector&lt;double&gt; &amp;v) {</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; v.clear();</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m;</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordtype">double</span> dx,dy,dz,perim;</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; dx=pts[3*k]-pts[3*i];</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; dy=pts[3*k+1]-pts[3*i+1];</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; dz=pts[3*k+2]-pts[3*i+2];</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; perim=sqrt(dx*dx+dy*dy+dz*dz);</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; dx=pts[3*m]-pts[3*k];</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; dy=pts[3*m+1]-pts[3*k+1];</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; dz=pts[3*m+2]-pts[3*k+2];</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; perim+=sqrt(dx*dx+dy*dy+dz*dz);</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; k=m;</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; v.push_back(0.5*perim);</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; }</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; }</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160;}</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160;<span class="comment">/** For each face, this routine outputs a bracketed sequence of numbers</span></div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160;<span class="comment"> * containing a list of all the vertices that make up that face.</span></div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01839"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5"> 1839</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">voronoicell_base::face_vertices</a>(std::vector&lt;int&gt; &amp;v) {</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,vp(0),vn;</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; v.clear();</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; v.push_back(0);</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; v.push_back(i);</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; v.push_back(k);</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; k=m;</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; vn=v.size();</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; v[vp]=vn-vp-1;</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; vp=vn;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; }</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; }</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;}</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160;<span class="comment">/** Outputs a list of the number of edges in each face.</span></div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01866"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5"> 1866</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">voronoicell_base::face_orders</a>(std::vector&lt;int&gt; &amp;v) {</div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,q;</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; v.clear();</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; q=1;</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; q++;</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; k=m;</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; v.push_back(q);;</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; }</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; }</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160;}</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;<span class="comment">/** Computes the number of edges that each face has and outputs a frequency</span></div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160;<span class="comment"> * table of the results.</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160;<span class="comment"> * \param[out] v the vector to store the results in. */</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76"> 1891</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">voronoicell_base::face_freq_table</a>(std::vector&lt;int&gt; &amp;v) {</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,q;</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; v.clear();</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; q=1;</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; q++;</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; k=m;</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; <span class="keywordflow">if</span>((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) q&gt;=v.size()) v.resize(q+1,0);</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; v[q]++;</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; }</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; }</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;}</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;<span class="comment">/** This routine tests to see whether the cell intersects a plane by starting</span></div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160;<span class="comment"> * from the guess point up. If up intersects, then it immediately returns true.</span></div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;<span class="comment"> * Otherwise, it calls the plane_intersects_track() routine.</span></div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160;<span class="comment"> * \param[in] (x,y,z) the normal vector to the plane.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;<span class="comment"> * \param[in] rsq the distance along this vector of the plane.</span></div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;<span class="comment"> * \return False if the plane does not intersect the plane, true if it does. */</span></div>
+<div class="line"><a name="l01920"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1"> 1920</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">voronoicell_base::plane_intersects</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq) {</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordtype">double</span> g=x*pts[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+y*pts[3*up+1]+z*pts[3*up+2];</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordflow">if</span>(g&lt;rsq) <span class="keywordflow">return</span> plane_intersects_track(x,y,z,rsq,g);</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160;}</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;<span class="comment">/** This routine tests to see if a cell intersects a plane. It first tests a</span></div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;<span class="comment"> * random sample of approximately sqrt(p)/4 points. If any of those are</span></div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160;<span class="comment"> * intersect, then it immediately returns true. Otherwise, it takes the closest</span></div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160;<span class="comment"> * point and passes that to plane_intersect_track() routine.</span></div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160;<span class="comment"> * \param[in] (x,y,z) the normal vector to the plane.</span></div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;<span class="comment"> * \param[in] rsq the distance along this vector of the plane.</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160;<span class="comment"> * \return False if the plane does not intersect the plane, true if it does. */</span></div>
+<div class="line"><a name="l01933"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d"> 1933</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">voronoicell_base::plane_intersects_guess</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq) {</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; up=0;</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="keywordtype">double</span> g=x*pts[3*<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+y*pts[3*up+1]+z*pts[3*up+2];</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keywordflow">if</span>(g&lt;rsq) {</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keywordtype">int</span> ca=1,cc=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>&gt;&gt;3,mp=1;</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keywordtype">double</span> m;</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keywordflow">while</span>(ca&lt;cc) {</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; m=x*pts[3*mp]+y*pts[3*mp+1]+z*pts[3*mp+2];</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; <span class="keywordflow">if</span>(m&gt;g) {</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keywordflow">if</span>(m&gt;rsq) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; g=m;up=mp;</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; }</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; ca+=mp++;</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; }</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <span class="keywordflow">return</span> plane_intersects_track(x,y,z,rsq,g);</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; }</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;}</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;<span class="comment">/* This routine tests to see if a cell intersects a plane, by tracing over the cell from</span></div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment"> * vertex to vertex, starting at up. It is meant to be called either by plane_intersects()</span></div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;<span class="comment"> * or plane_intersects_track(), when those routines cannot immediately resolve the case.</span></div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment"> * \param[in] (x,y,z) the normal vector to the plane.</span></div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment"> * \param[in] rsq the distance along this vector of the plane.</span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment"> * \param[in] g the distance of up from the plane.</span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment"> * \return False if the plane does not intersect the plane, true if it does. */</span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voronoicell_base::plane_intersects_track(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq,<span class="keywordtype">double</span> g) {</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <span class="keywordtype">int</span> count=0,ls,us,tp;</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keywordtype">double</span> t;</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="comment">// The test point is outside of the cutting space</span></div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; <span class="keywordflow">for</span>(us=0;us&lt;nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>];us++) {</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; tp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; t=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; <span class="keywordflow">if</span>(t&gt;g) {</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; up=tp;</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <span class="keywordflow">while</span> (t&lt;rsq) {</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keywordflow">if</span>(++count&gt;=<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=1</span></div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160;<span class="preprocessor"></span> fputs(<span class="stringliteral">&quot;Bailed out of convex calculation&quot;</span>,stderr);</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">for</span>(tp=0;tp&lt;p;tp++) if(x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2]&gt;rsq) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="comment">// Test all the neighbors of the current point</span></div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <span class="comment">// and find the one which is closest to the</span></div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="comment">// plane</span></div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; <span class="keywordflow">for</span>(us=0;us&lt;ls;us++) {</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; tp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; g=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keywordflow">if</span>(g&gt;t) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; }</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">if</span>(us==ls) {</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; us++;</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; <span class="keywordflow">while</span>(us&lt;nu[up]) {</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; tp=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][us];</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; g=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span>(g&gt;t) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; us++;</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; }</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <span class="keywordflow">if</span>(us==nu[up]) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; }</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; ls=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>][nu[<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>]+us];up=tp;t=g;</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; }</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; }</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; }</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160;}</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;<span class="comment">/** Counts the number of edges of the Voronoi cell.</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160;<span class="comment"> * \return the number of edges. */</span></div>
+<div class="line"><a name="l02007"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0"> 2007</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">voronoicell_base::number_of_edges</a>() {</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordtype">int</span> edges=0,*nup=<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>;</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; <span class="keywordflow">while</span>(nup&lt;nu+<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) edges+=*(nup++);</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keywordflow">return</span> edges&gt;&gt;1;</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;}</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;<span class="comment">/** Outputs a custom string of information about the Voronoi cell. The string</span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160;<span class="comment"> * of information follows a similar style as the C printf command, and detailed</span></div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;<span class="comment"> * information about its format is available at</span></div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160;<span class="comment"> * http://math.lbl.gov/voro++/doc/custom.html.</span></div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160;<span class="comment"> * \param[in] format the custom string to print.</span></div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160;<span class="comment"> * \param[in] i the ID of the particle associated with this Voronoi cell.</span></div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle associated with this Voronoi</span></div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160;<span class="comment"> * cell.</span></div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;<span class="comment"> * \param[in] r a radius associated with the particle.</span></div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l02023"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ab6b8ff237f7b3e318c3756cd38586ec4"> 2023</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">voronoicell_base::output_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keywordtype">int</span> i,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r,FILE *fp) {</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <span class="keywordtype">char</span> *fmp=(<span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(format));</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; std::vector&lt;int&gt; vi;</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; std::vector&lt;double&gt; vd;</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; <span class="keywordflow">while</span>(*fmp!=0) {</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keywordflow">if</span>(*fmp==<span class="charliteral">&#39;%&#39;</span>) {</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; fmp++;</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; <span class="keywordflow">switch</span>(*fmp) {</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="comment">// Particle-related output</span></div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;i&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,i);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;x&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,x);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;y&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,y);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;z&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,z);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;q&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g %g %g&quot;</span>,x,y,z);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;r&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,r);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="comment">// Vertex-related output</span></div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;w&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;p&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a>(fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;P&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a>(x,y,z,fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;o&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">output_vertex_orders</a>(fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;m&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,0.25*<a class="code" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">max_radius_squared</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160;</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="comment">// Edge-related output</span></div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;g&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">number_of_edges</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;E&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">total_edge_distance</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a>(vd);voro_print_vector(vd,fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160;</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; <span class="comment">// Face-related output</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;s&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">number_of_faces</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;F&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">surface_area</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;A&#39;</span>: {</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a>(vi);</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; voro_print_vector(vi,fp);</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;a&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a>(vi);voro_print_vector(vi,fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a>(vd);voro_print_vector(vd,fp);<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>: {</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a>(vi);</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; voro_print_face_vertices(vi,fp);</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a>(vd);</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; voro_print_positions(vd,fp);</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>: <a class="code" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">neighbors</a>(vi);</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; voro_print_vector(vi,fp);</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <span class="comment">// Volume-related output</span></div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;v&#39;</span>: fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>());<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;c&#39;</span>: {</div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <span class="keywordtype">double</span> cx,cy,cz;</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a>(cx,cy,cz);</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g&quot;</span>,cx,cy,cz);</div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;C&#39;</span>: {</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160; <span class="keywordtype">double</span> cx,cy,cz;</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a>(cx,cy,cz);</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g&quot;</span>,x+cx,y+cy,z+cz);</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; } <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <span class="comment">// End-of-string reached</span></div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <span class="keywordflow">case</span> 0: fmp--;<span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; <span class="comment">// The percent sign is not part of a</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <span class="comment">// control sequence</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="keywordflow">default</span>: putc(<span class="charliteral">&#39;%&#39;</span>,fp);putc(*fmp,fp);</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; }</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; } <span class="keywordflow">else</span> putc(*fmp,fp);</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; fmp++;</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; }</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; fputs(<span class="stringliteral">&quot;\n&quot;</span>,fp);</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;}</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="comment">/** This initializes the class to be a rectangular box. It calls the base class</span></div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;<span class="comment"> * initialization routine to set up the edge and vertex information, and then</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="comment"> * sets up the neighbor information, with initial faces being assigned ID</span></div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;<span class="comment"> * numbers from -1 to -6.</span></div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;<span class="comment"> * \param[in] (xmin,xmax) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;<span class="comment"> * \param[in] (ymin,ymax) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;<span class="comment"> * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3"> 2105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">voronoicell_neighbor::init</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax) {</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a>(xmin,xmax,ymin,ymax,zmin,zmax);</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[3];</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; *q=-5;q[1]=-3;q[2]=-1;</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; q[3]=-5;q[4]=-2;q[5]=-3;</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; q[6]=-5;q[7]=-1;q[8]=-4;</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; q[9]=-5;q[10]=-4;q[11]=-2;</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; q[12]=-6;q[13]=-1;q[14]=-3;</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; q[15]=-6;q[16]=-3;q[17]=-2;</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; q[18]=-6;q[19]=-4;q[20]=-1;</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160; q[21]=-6;q[22]=-2;q[23]=-4;</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>=q;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[1]=q+3;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[2]=q+6;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[3]=q+9;</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[4]=q+12;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[5]=q+15;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[6]=q+18;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[7]=q+21;</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;}</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;<span class="comment">/** This initializes the class to be an octahedron. It calls the base class</span></div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160;<span class="comment"> * initialization routine to set up the edge and vertex information, and then</span></div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;<span class="comment"> * sets up the neighbor information, with the initial faces being assigned ID</span></div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;<span class="comment"> * numbers from -1 to -8.</span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="comment"> * \param[in] l The distance from the octahedron center to a vertex. Six</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="comment"> * vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0),</span></div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;<span class="comment"> * (0,l,0), (0,0,-l), and (0,0,l). */</span></div>
+<div class="line"><a name="l02127"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c"> 2127</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">voronoicell_neighbor::init_octahedron</a>(<span class="keywordtype">double</span> l) {</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a>(l);</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[4];</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; *q=-5;q[1]=-6;q[2]=-7;q[3]=-8;</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; q[4]=-1;q[5]=-2;q[6]=-3;q[7]=-4;</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; q[8]=-6;q[9]=-5;q[10]=-2;q[11]=-1;</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; q[12]=-8;q[13]=-7;q[14]=-4;q[15]=-3;</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; q[16]=-5;q[17]=-8;q[18]=-3;q[19]=-2;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; q[20]=-7;q[21]=-6;q[22]=-1;q[23]=-4;</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>=q;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[1]=q+4;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[2]=q+8;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[3]=q+12;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[4]=q+16;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[5]=q+20;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;}</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;<span class="comment">/** This initializes the class to be a tetrahedron. It calls the base class</span></div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;<span class="comment"> * initialization routine to set up the edge and vertex information, and then</span></div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;<span class="comment"> * sets up the neighbor information, with the initial faces being assigned ID</span></div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="comment"> * numbers from -1 to -4.</span></div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="comment"> * \param (x0,y0,z0) a position vector for the first vertex.</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;<span class="comment"> * \param (x1,y1,z1) a position vector for the second vertex.</span></div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160;<span class="comment"> * \param (x2,y2,z2) a position vector for the third vertex.</span></div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160;<span class="comment"> * \param (x3,y3,z3) a position vector for the fourth vertex. */</span></div>
+<div class="line"><a name="l02147"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9"> 2147</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">voronoicell_neighbor::init_tetrahedron</a>(<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1,<span class="keywordtype">double</span> x2,<span class="keywordtype">double</span> y2,<span class="keywordtype">double</span> z2,<span class="keywordtype">double</span> x3,<span class="keywordtype">double</span> y3,<span class="keywordtype">double</span> z3) {</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a>(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3);</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; <span class="keywordtype">int</span> *q=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[3];</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; *q=-4;q[1]=-3;q[2]=-2;</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; q[3]=-3;q[4]=-4;q[5]=-1;</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; q[6]=-4;q[7]=-2;q[8]=-1;</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; q[9]=-2;q[10]=-3;q[11]=-1;</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; *<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>=q;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[1]=q+3;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[2]=q+6;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[3]=q+9;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160;}</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;<span class="comment">/** This routine checks to make sure the neighbor information of each face is</span></div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;<span class="comment"> * consistent. */</span></div>
+<div class="line"><a name="l02159"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1"> 2159</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">voronoicell_neighbor::check_facets</a>() {</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m,q;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; q=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[i][j];</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[k][l]!=q) fprintf(stderr,<span class="stringliteral">&quot;Facet error at (%d,%d)=%d, started from (%d,%d)=%d\n&quot;</span>,k,l,<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[k][l],i,j,q);</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; k=m;</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; }</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; }</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160;}</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160;<span class="comment">/** The class constructor allocates memory for storing neighbor information. */</span></div>
+<div class="line"><a name="l02180"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0"> 2180</a></span>&#160;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voronoicell_neighbor::voronoicell_neighbor</a>() {</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <span class="keywordtype">int</span> i;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>=<span class="keyword">new</span> <span class="keywordtype">int</span>*[<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>];</div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>=<span class="keyword">new</span> <span class="keywordtype">int</span>*[<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>];</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; <span class="keywordflow">for</span>(i=0;i&lt;3;i++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_n_vertices*i];</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[3]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_3_vertices*3];</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; <span class="keywordflow">for</span>(i=4;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;i++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_n_vertices*i];</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;}</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;<span class="comment">/** The class destructor frees the dynamically allocated memory for storing</span></div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;<span class="comment"> * neighbor information. */</span></div>
+<div class="line"><a name="l02191"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe"> 2191</a></span>&#160;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">voronoicell_neighbor::~voronoicell_neighbor</a>() {</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=current_vertex_order-1;i&gt;=0;i--) <span class="keywordflow">if</span>(mem[i]&gt;0) <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i];</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>;</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>;</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;}</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;<span class="comment">/** Computes a vector list of neighbors. */</span></div>
+<div class="line"><a name="l02198"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca"> 2198</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">voronoicell_neighbor::neighbors</a>(std::vector&lt;int&gt; &amp;v) {</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160; v.clear();</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keywordtype">int</span> i,j,k,l,m;</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++) <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) {</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; k=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j];</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; <span class="keywordflow">if</span>(k&gt;=0) {</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; v.push_back(<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[i][j]);</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]=-1-k;</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][nu[i]+j],k);</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; m=<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l];</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][l]=-1-m;</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; l=<a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[k][nu[k]+l],m);</div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; k=m;</div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160; } <span class="keywordflow">while</span> (k!=i);</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; }</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; }</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;}</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;<span class="comment">/** Prints the vertices, their edges, the relation table, and also notifies if</span></div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;<span class="comment"> * any memory errors are visible. */</span></div>
+<div class="line"><a name="l02220"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a"> 2220</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">voronoicell_base::print_edges</a>() {</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160; <span class="keywordtype">int</span> j;</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <span class="keywordtype">double</span> *ptsp=<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;i++,ptsp+=3) {</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; printf(<span class="stringliteral">&quot;%d %d &quot;</span>,i,nu[i]);</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; <span class="keywordflow">for</span>(j=0;j&lt;nu[i];j++) printf(<span class="stringliteral">&quot; %d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]);</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; printf(<span class="stringliteral">&quot; &quot;</span>);</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <span class="keywordflow">while</span>(j&lt;(nu[i]&lt;&lt;1)) printf(<span class="stringliteral">&quot; %d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]);</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; printf(<span class="stringliteral">&quot; %d&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i][j]);</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">print_edges_neighbors</a>(i);</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; printf(<span class="stringliteral">&quot; %g %g %g %p&quot;</span>,*ptsp,ptsp[1],ptsp[2],(<span class="keywordtype">void</span>*) <a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i]);</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>[i]&gt;=<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>[nu[i]]+<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[nu[i]]*((nu[i]&lt;&lt;1)+1)) puts(<span class="stringliteral">&quot; Memory error&quot;</span>);</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; <span class="keywordflow">else</span> puts(<span class="stringliteral">&quot;&quot;</span>);</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; }</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;}</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="comment">/** This prints out the neighbor information for vertex i. */</span></div>
+<div class="line"><a name="l02237"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38"> 2237</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">voronoicell_neighbor::print_edges_neighbors</a>(<span class="keywordtype">int</span> i) {</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; <span class="keywordflow">if</span>(nu[i]&gt;0) {</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="keywordtype">int</span> j=0;</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160; printf(<span class="stringliteral">&quot; (&quot;</span>);</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="keywordflow">while</span>(j&lt;nu[i]-1) printf(<span class="stringliteral">&quot;%d,&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[i][j++]);</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; printf(<span class="stringliteral">&quot;%d)&quot;</span>,<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[i][j]);</div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160; } <span class="keywordflow">else</span> printf(<span class="stringliteral">&quot; ()&quot;</span>);</div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;}</div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="comment">// Explicit instantiation</span></div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voronoicell_base::nplane</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a>&amp;,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voronoicell_base::nplane</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a>&amp;,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voronoicell_base::check_memory_for_copy</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a>&amp;,<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>*);</div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voronoicell_base::check_memory_for_copy</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a>&amp;,<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>*);</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160;</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/cell_8hh.html b/lib/voro++/html/cell_8hh.html
new file mode 100644
index 000000000..dc6431fb8
--- /dev/null
+++ b/lib/voro++/html/cell_8hh.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: cell.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">cell.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the voronoicell and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+</div>
+<p><a href="cell_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class representing a single Voronoi cell. <a href="classvoro_1_1voronoicell__base.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html">voro::voronoicell</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell without neighbor information. <a href="classvoro_1_1voronoicell.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voro::voronoicell_neighbor</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell with neighbor information. <a href="classvoro_1_1voronoicell__neighbor.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/cell_8hh_source.html b/lib/voro++/html/cell_8hh_source.html
new file mode 100644
index 000000000..2b87c5fb5
--- /dev/null
+++ b/lib/voro++/html/cell_8hh_source.html
@@ -0,0 +1,569 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: cell.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">cell.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="cell_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file cell.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the voronoicell and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_CELL_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_CELL_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">/** \brief A class representing a single Voronoi cell.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * This class represents a single Voronoi cell, as a collection of vertices</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * that are connected by edges. The class contains routines for initializing</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * the Voronoi cell to be simple shapes such as a box, tetrahedron, or octahedron.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * It the contains routines for recomputing the cell based on cutting it</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * by a plane, which forms the key routine for the Voronoi cell computation.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * It contains numerous routine for computing statistics about the Voronoi cell,</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * and it can output the cell in several formats.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * This class is not intended for direct use, but forms the base of the</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * voronoicell and voronoicell_neighbor classes, which extend it based on</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * whether neighboring particle ID information needs to be tracked. */</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> {</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> /** This holds the current size of the arrays ed and nu, which</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * hold the vertex information. If more vertices are created</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * than can fit in this array, then it is dynamically extended</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * using the add_memory_vertices routine. */</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614"> 39</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> /** This holds the current maximum allowed order of a vertex,</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * which sets the size of the mem, mep, and mec arrays. If a</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * vertex is created with more vertices than this, the arrays</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * are dynamically extended using the add_memory_vorder routine.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274"> 45</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> /** This sets the size of the main delete stack. */</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04"> 47</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> /** This sets the size of the auxiliary delete stack. */</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9"> 49</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> /** This sets the total number of vertices in the current cell.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243"> 52</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> /** This is the index of particular point in the cell, which is</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * used to start the tracing routines for plane intersection</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * and cutting. These routines will work starting from any</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * point, but it&#39;s often most efficient to start from the last</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * point considered, since in many cases, the cell construction</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * algorithm may consider many planes with similar vectors</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * concurrently. */</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15"> 60</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> /** This is a two dimensional array that holds information</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * about the edge connections of the vertices that make up the</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * cell. The two dimensional array is not allocated in the</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * usual method. To account for the fact the different vertices</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * have different orders, and thus require different amounts of</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * storage, the elements of ed[i] point to one-dimensional</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * arrays in the mep[] array of different sizes.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * More specifically, if vertex i has order m, then ed[i]</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * points to a one-dimensional array in mep[m] that has 2*m+1</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * entries. The first m elements hold the neighboring edges, so</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * that the jth edge of vertex i is held in ed[i][j]. The next</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * m elements hold a table of relations which is redundant but</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * helps speed up the computation. It satisfies the relation</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * ed[ed[i][j]][ed[i][m+j]]=i. The final entry holds a back</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * pointer, so that ed[i+2*m]=i. The back pointers are used</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * when rearranging the memory. */</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342"> 78</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> /** This array holds the order of the vertices in the Voronoi</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * cell. This array is dynamically allocated, with its current</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * size held by current_vertices. */</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1"> 82</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> /** This in an array with size 3*current_vertices for holding</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * the positions of the vertices. */</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d"> 85</a></span>&#160; <span class="keywordtype">double</span> *<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a>();</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">~voronoicell_base</a>();</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax);</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a>(<span class="keywordtype">double</span> l);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a>(<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1,<span class="keywordtype">double</span> x2,<span class="keywordtype">double</span> y2,<span class="keywordtype">double</span> z2,<span class="keywordtype">double</span> x3,<span class="keywordtype">double</span> y3,<span class="keywordtype">double</span> z3);</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">translate</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> /** Outputs the cell in POV-Ray format, using cylinders for edges</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * and spheres for vertices, to a given file.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement to add to the cell&#39;s</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * position.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96"> 98</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96">draw_pov</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(x,y,z,fp);</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; };</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">draw_pov_mesh</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> /** Outputs the cell in POV-Ray format as a mesh2 object to a</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * given file.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement to add to the cell&#39;s</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * position.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099"> 109</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099">draw_pov_mesh</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">draw_pov_mesh</a>(x,y,z,fp);</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> /** Outputs the cell in Gnuplot format a given file.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * \param[in] (x,y,z) a displacement to add to the cell&#39;s</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * position.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e"> 119</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e">draw_gnuplot</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(x,y,z,fp);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>();</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">max_radius_squared</a>();</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">total_edge_distance</a>();</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">surface_area</a>();</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a>(<span class="keywordtype">double</span> &amp;cx,<span class="keywordtype">double</span> &amp;cy,<span class="keywordtype">double</span> &amp;cz);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">number_of_faces</a>();</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">number_of_edges</a>();</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">vertex_orders</a>(std::vector&lt;int&gt; &amp;v);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">output_vertex_orders</a>(FILE *fp=stdout);</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">vertices</a>(std::vector&lt;double&gt; &amp;v);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a>(FILE *fp=stdout);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">vertices</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,std::vector&lt;double&gt; &amp;v);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,FILE *fp=stdout);</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a>(std::vector&lt;double&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> /** Outputs the areas of the faces.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4"> 140</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">output_face_areas</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::vector&lt;double&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a>(v);</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; voro_print_vector(v,fp);</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a>(std::vector&lt;int&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> /** Outputs a list of the number of sides of each face.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d"> 147</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">output_face_orders</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; std::vector&lt;int&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a>(v);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; voro_print_vector(v,fp);</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a>(std::vector&lt;int&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> /** Outputs a */</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf"> 153</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">output_face_freq_table</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; std::vector&lt;int&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a>(v);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; voro_print_vector(v,fp);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a>(std::vector&lt;int&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> /** Outputs the */</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5"> 159</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">output_face_vertices</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; std::vector&lt;int&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a>(v);</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; voro_print_face_vertices(v,fp);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a>(std::vector&lt;double&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> /** Outputs a list of the perimeters of each face.</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba"> 166</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">output_face_perimeters</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; std::vector&lt;double&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a>(v);</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; voro_print_vector(v,fp);</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a>(std::vector&lt;double&gt; &amp;v);<span class="comment"></span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> /** Outputs a list of the perimeters of each face.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff"> 173</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">output_normals</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; std::vector&lt;double&gt; v;<a class="code" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a>(v);</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; voro_print_positions(v,fp);</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> /** Outputs a custom string of information about the Voronoi</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * cell to a file. It assumes the cell is at (0,0,0) and has a</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> * the default_radius associated with it.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> * \param[in] format the custom format string to use.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023"> 182</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp=stdout) {<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,0,0,0,0,default_radius,fp);}</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keywordtype">int</span> i,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r,FILE *fp=stdout);</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">nplane</a>(vc_class &amp;vc,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq,<span class="keywordtype">int</span> p_id);</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">plane_intersects</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq);</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">plane_intersects_guess</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq);</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">construct_relations</a>();</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">check_relations</a>();</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">check_duplicates</a>();</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">print_edges</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> /** Returns a list of IDs of neighboring particles</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * corresponding to each face.</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> * \param[out] v a reference to a vector in which to return the</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> * results. If no neighbor information is</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> * available, a blank vector is returned. */</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843"> 197</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">neighbors</a>(std::vector&lt;int&gt; &amp;v) {v.clear();}<span class="comment"></span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> /** This is a virtual function that is overridden by a routine</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * to print a list of IDs of neighboring particles</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * corresponding to each face. By default, when no neighbor</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * information is available, the routine does nothing.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f"> 203</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">output_neighbors</a>(FILE *fp=stdout) {}<span class="comment"></span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> /** This a virtual function that is overridden by a routine to</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * print the neighboring particle IDs for a given vertex. By</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * default, when no neighbor information is available, the</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * routine does nothing.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * \param[in] i the vertex to consider. */</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c"> 209</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">print_edges_neighbors</a>(<span class="keywordtype">int</span> i) {};<span class="comment"></span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> /** This is a simple inline function for picking out the index</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * of the next edge counterclockwise at the current vertex.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * \param[in] a the index of an edge of the current vertex.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> * \param[in] p the number of the vertex.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * \return 0 if a=nu[p]-1, or a+1 otherwise. */</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f"> 215</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a>(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {<span class="keywordflow">return</span> a==<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]-1?0:a+1;}<span class="comment"></span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> /** This is a simple inline function for picking out the index</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> * of the next edge clockwise from the current vertex.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"> * \param[in] a the index of an edge of the current vertex.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * \param[in] p the number of the vertex.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * \return nu[p]-1 if a=0, or a-1 otherwise. */</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b"> 221</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">cycle_down</a>(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {<span class="keywordflow">return</span> a==0?<a class="code" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]-1:a-1;}</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"> /** This a one dimensional array that holds the current sizes</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> * of the memory allocations for them mep array.*/</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6"> 225</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> /** This is a one dimensional array that holds the current</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * number of vertices of order p that are stored in the mep[p]</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * array. */</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571"> 229</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> /** This is a two dimensional array for holding the information</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * about the edges of the Voronoi cell. mep[p] is a</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> * one-dimensional array for holding the edge information about</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * all vertices of order p, with each vertex holding 2*p+1</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * integers of information. The total number of vertices held</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * on mep[p] is stored in mem[p]. If the space runs out, the</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * code allocates more using the add_memory() routine. */</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66"> 237</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a>;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a>();</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a>(vc_class &amp;vc,<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>* vb);</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a>(<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>* vb);</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> /** This is the delete stack, used to store the vertices which</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> * are going to be deleted during the plane cutting procedure.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordtype">int</span> *ds,*stacke;<span class="comment"></span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> /** This is the auxiliary delete stack, which has size set by</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> * current_delete2_size. */</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">int</span> *ds2,*stacke2;<span class="comment"></span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> /** This stores the current memory allocation for the marginal</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> * cases. */</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">int</span> current_marginal;<span class="comment"></span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> /** This stores the total number of marginal points which are</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * currently in the buffer. */</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">int</span> n_marg;<span class="comment"></span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> /** This array contains a list of the marginal points, and also</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> * the outcomes of the marginal tests. */</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordtype">int</span> *marg;<span class="comment"></span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> /** The x coordinate of the normal vector to the test plane. */</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">double</span> px;<span class="comment"></span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> /** The y coordinate of the normal vector to the test plane. */</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">double</span> py;<span class="comment"></span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> /** The z coordinate of the normal vector to the test plane. */</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">double</span> pz;<span class="comment"></span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> /** The magnitude of the normal vector to the test plane. */</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">double</span> prsq;</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">void</span> add_memory(vc_class &amp;vc,<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> *stackp2);</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordtype">void</span> add_memory_vertices(vc_class &amp;vc);</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordtype">void</span> add_memory_vorder(vc_class &amp;vc);</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">void</span> add_memory_ds(<span class="keywordtype">int</span> *&amp;stackp);</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">void</span> add_memory_ds2(<span class="keywordtype">int</span> *&amp;stackp2);</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> collapse_order1(vc_class &amp;vc);</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> collapse_order2(vc_class &amp;vc);</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> delete_connection(vc_class &amp;vc,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k,<span class="keywordtype">bool</span> hand);</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> search_for_outside_edge(vc_class &amp;vc,<span class="keywordtype">int</span> &amp;<a class="code" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a>);</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> vc_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_stack(vc_class &amp;vc,<span class="keywordtype">int</span> lp,<span class="keywordtype">int</span> *&amp;stackp2);</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> plane_intersects_track(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rs,<span class="keywordtype">double</span> g);</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> normals_search(std::vector&lt;double&gt; &amp;v,<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k);</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> search_edge(<span class="keywordtype">int</span> l,<span class="keywordtype">int</span> &amp;m,<span class="keywordtype">int</span> &amp;k);</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> m_test(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> &amp;ans);</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">int</span> check_marginal(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> &amp;ans);</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a>;</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;};</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment">/** \brief Extension of the voronoicell_base class to represent a Voronoi</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * cell without neighbor information.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * This class is an extension of the voronoicell_base class, in cases when</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * is not necessary to track the IDs of neighboring particles associated</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * with each face of the Voronoi cell. */</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html"> 300</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> {</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keyword">using</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">voronoicell_base::nplane</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> /** Copies the information from another voronoicell class into</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> * this class, extending memory allocation if necessary.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> * \param[in] c the class to copy. */</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68"> 306</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68">operator=</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>* vb((<a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a>*) &amp;c);</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a>(*<span class="keyword">this</span>,vb);<a class="code" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a>(vb);</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> /** Cuts a Voronoi cell using by the plane corresponding to the</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * perpendicular bisector of a particle.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> * \param[in] rsq the modulus squared of the vector.</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"> * \param[in] p_id the plane ID, ignored for this case where no</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> * neighbor tracking is enabled.</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9"> 318</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq,<span class="keywordtype">int</span> p_id) {</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment"> /** Cuts a Voronoi cell using by the plane corresponding to the</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> * perpendicular bisector of a particle.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * \param[in] p_id the plane ID, ignored for this case where no</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> * neighbor tracking is enabled.</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a"> 328</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a">nplane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> p_id) {</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordtype">double</span> rsq=x*x+y*y+z*z;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> /** Cuts a Voronoi cell using by the plane corresponding to the</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"> * perpendicular bisector of a particle.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"> * \param[in] rsq the modulus squared of the vector.</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e"> 338</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq) {</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> /** Cuts a Voronoi cell using by the plane corresponding to the</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"> * perpendicular bisector of a particle.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#ac2273c14b7bcc02696be10d9249670c0"> 346</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell.html#ac2273c14b7bcc02696be10d9249670c0">plane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordtype">double</span> rsq=x*x+y*y+z*z;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> /** Initializes the Voronoi cell to be rectangular box with the</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> * given dimensions.</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> * \param[in] (xmin,xmax) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> * \param[in] (ymin,ymax) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84"> 355</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">init</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax) {</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a>(xmin,xmax,ymin,ymax,zmin,zmax);</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> /** Initializes the cell to be an octahedron with vertices at</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * (l,0,0), (-l,0,0), (0,l,0), (0,-l,0), (0,0,l), and (0,0,-l).</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"> * \param[in] l a parameter setting the size of the octahedron.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9"> 362</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9">init_octahedron</a>(<span class="keywordtype">double</span> l) {</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a>(l);</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> /** Initializes the cell to be a tetrahedron.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> * \param[in] (x0,y0,z0) the coordinates of the first vertex.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> * \param[in] (x1,y1,z1) the coordinates of the second vertex.</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> * \param[in] (x2,y2,z2) the coordinates of the third vertex.</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"> * \param[in] (x3,y3,z3) the coordinates of the fourth vertex.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169"> 371</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169">init_tetrahedron</a>(<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1,<span class="keywordtype">double</span> x2,<span class="keywordtype">double</span> y2,<span class="keywordtype">double</span> z2,<span class="keywordtype">double</span> x3,<span class="keywordtype">double</span> y3,<span class="keywordtype">double</span> z3) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a>(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_allocate(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> m) {};</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_add_memory_vertices(<span class="keywordtype">int</span> i) {};</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_add_memory_vorder(<span class="keywordtype">int</span> i) {};</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_pointer(<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,<span class="keywordtype">int</span> n) {};</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b,<span class="keywordtype">int</span> c,<span class="keywordtype">int</span> d) {};</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b,<span class="keywordtype">int</span> c) {};</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_aux1(<span class="keywordtype">int</span> k) {};</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_aux1(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {};</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_aux1_shift(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {};</div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_aux2_copy(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {};</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_pointer(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {};</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux1(<span class="keywordtype">int</span> j) {};</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux2(<span class="keywordtype">int</span> j) {};</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_allocate_aux1(<span class="keywordtype">int</span> i) {};</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_switch_to_aux1(<span class="keywordtype">int</span> i) {};</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_to_aux1(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> m) {};</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux1_offset(<span class="keywordtype">int</span> k,<span class="keywordtype">int</span> m) {};</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_neighbors(std::vector&lt;int&gt; &amp;v) {v.clear();};</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a>;</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;};</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment">/** \brief Extension of the voronoicell_base class to represent a Voronoi cell</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> * with neighbor information.</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * This class is an extension of the voronoicell_base class, in cases when the</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> * IDs of neighboring particles associated with each face of the Voronoi cell.</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"> * It contains additional data structures mne and ne for storing this</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"> * information. */</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html"> 403</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> {</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keyword">using</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">voronoicell_base::nplane</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment"> /** This two dimensional array holds the neighbor information</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> * associated with each vertex. mne[p] is a one dimensional</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"> * array which holds all of the neighbor information for</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> * vertices of order p. */</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c"> 410</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> /** This is a two dimensional array that holds the neighbor</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> * information associated with each vertex. ne[i] points to a</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"> * one-dimensional array in mne[nu[i]]. ne[i][j] holds the</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> * neighbor information associated with the jth edge of vertex</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> * i. It is set to the ID number of the plane that made the</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment"> * face that is clockwise from the jth edge. */</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19"> 417</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>;</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voronoicell_neighbor</a>();</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">~voronoicell_neighbor</a>();</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">operator=</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c);</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">operator=</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c);<span class="comment"></span></div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment"> /** Cuts the Voronoi cell by a particle whose center is at a</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="comment"> * separation of (x,y,z) from the cell center. The value of rsq</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="comment"> * should be initially set to \f$x^2+y^2+z^2\f$.</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment"> * \param[in] (x,y,z) the normal vector to the plane.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="comment"> * \param[in] rsq the distance along this vector of the plane.</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="comment"> * \param[in] p_id the plane ID (for neighbor tracking only).</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f"> 430</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq,<span class="keywordtype">int</span> p_id) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,p_id);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="comment"> /** This routine calculates the modulus squared of the vector</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="comment"> * before passing it to the main nplane() routine with full</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="comment"> * arguments.</span></div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to cut the cell by.</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="comment"> * \param[in] p_id the plane ID (for neighbor tracking only).</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#aa8bc77ca240ae0675be493b26513eb18"> 440</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aa8bc77ca240ae0675be493b26513eb18">nplane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> p_id) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="keywordtype">double</span> rsq=x*x+y*y+z*z;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,p_id);</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"> /** This version of the plane routine just makes up the plane</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment"> * ID to be zero. It will only be referenced if neighbor</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="comment"> * tracking is enabled.</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to cut the cell by.</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment"> * \param[in] rsq the modulus squared of the vector.</span></div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0"> 451</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0">plane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> rsq) {</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> /** Cuts a Voronoi cell using the influence of a particle at</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * (x,y,z), first calculating the modulus squared of this</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"> * vector before passing it to the main nplane() routine. Zero</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="comment"> * is supplied as the plane ID, which will be ignored unless</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"> * neighbor tracking is enabled.</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to cut the cell by.</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"> * \return False if the plane cut deleted the cell entirely,</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"> * true otherwise. */</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a8bac2d46226b8dbb88ad3e3d58d10cf7"> 462</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a8bac2d46226b8dbb88ad3e3d58d10cf7">plane</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordtype">double</span> rsq=x*x+y*y+z*z;</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a>(*<span class="keyword">this</span>,x,y,z,rsq,0);</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">init</a>(<span class="keywordtype">double</span> xmin,<span class="keywordtype">double</span> xmax,<span class="keywordtype">double</span> ymin,<span class="keywordtype">double</span> ymax,<span class="keywordtype">double</span> zmin,<span class="keywordtype">double</span> zmax);</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">init_octahedron</a>(<span class="keywordtype">double</span> l);</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">init_tetrahedron</a>(<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1,<span class="keywordtype">double</span> x2,<span class="keywordtype">double</span> y2,<span class="keywordtype">double</span> z2,<span class="keywordtype">double</span> x3,<span class="keywordtype">double</span> y3,<span class="keywordtype">double</span> z3);</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">check_facets</a>();</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">neighbors</a>(std::vector&lt;int&gt; &amp;v);</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">print_edges_neighbors</a>(<span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00472"></a><span class="lineno"><a class="code" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1"> 472</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">output_neighbors</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; std::vector&lt;int&gt; v;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">neighbors</a>(v);</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; voro_print_vector(v,fp);</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordtype">int</span> *paux1;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordtype">int</span> *paux2;</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_allocate(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> m) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[m*i];}</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_add_memory_vertices(<span class="keywordtype">int</span> i) {</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordtype">int</span> **pp=<span class="keyword">new</span> <span class="keywordtype">int</span>*[i];</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a>;j++) pp[j]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[j];</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>=pp;</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_add_memory_vorder(<span class="keywordtype">int</span> i) {</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordtype">int</span> **p2=<span class="keyword">new</span> <span class="keywordtype">int</span>*[i];</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0;j&lt;<a class="code" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a>;j++) p2[j]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[j];</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>;<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>=p2;</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_pointer(<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>,<span class="keywordtype">int</span> n) {</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[n]+n*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[n];</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b,<span class="keywordtype">int</span> c,<span class="keywordtype">int</span> d) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a][b]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[c][d];}</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b,<span class="keywordtype">int</span> c) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a][b]=c;}</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_aux1(<span class="keywordtype">int</span> k) {paux1=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[k]+k*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[k];}</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_aux1(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {paux1[b]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a][b];}</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_aux1_shift(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {paux1[b]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a][b+1];}</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_aux2_copy(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; paux2=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[b]+b*<a class="code" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a>[b];</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;b;i++) <a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a][i]=paux2[i];</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; }</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_pointer(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[a]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[b];}</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux1(<span class="keywordtype">int</span> j) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[j]=paux1;}</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux2(<span class="keywordtype">int</span> j) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[j]=paux2;}</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_allocate_aux1(<span class="keywordtype">int</span> i) {paux1=<span class="keyword">new</span> <span class="keywordtype">int</span>[i*<a class="code" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a>[i]];}</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_switch_to_aux1(<span class="keywordtype">int</span> i) {<span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i];<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i]=paux1;}</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_copy_to_aux1(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> m) {paux1[m]=<a class="code" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a>[i][m];}</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> n_set_to_aux1_offset(<span class="keywordtype">int</span> k,<span class="keywordtype">int</span> m) {<a class="code" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a>[k]=paux1+m;}</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a>;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;};</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classes.html b/lib/voro++/html/classes.html
new file mode 100644
index 000000000..2ca1d262d
--- /dev/null
+++ b/lib/voro++/html/classes.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Structure Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Data Structure Index</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
+<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classvoro_1_1container__base.html">container_base</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1pre__container.html">pre_container</a> (voro)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_V"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;V&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structvoro_1_1wall__cone.html">wall_cone</a> (voro)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1container__periodic.html">container_periodic</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1pre__container__base.html">pre_container_base</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structvoro_1_1wall__cylinder.html">wall_cylinder</a> (voro)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__all.html">c_loop_all</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1container__periodic__base.html">container_periodic_base</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1pre__container__poly.html">pre_container_poly</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1voro__base.html">voro_base</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1wall__list.html">wall_list</a> (voro)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__all__periodic.html">c_loop_all_periodic</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1container__periodic__poly.html">container_periodic_poly</a> (voro)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classvoro_1_1voro__compute.html">voro_compute</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structvoro_1_1wall__plane.html">wall_plane</a> (voro)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__base.html">c_loop_base</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1container__poly.html">container_poly</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structvoro_1_1wall__sphere.html">wall_sphere</a> (voro)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__order.html">c_loop_order</a> (voro)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classvoro_1_1radius__mono.html">radius_mono</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> (voro)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__order__periodic.html">c_loop_order_periodic</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1radius__poly.html">radius_poly</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> (voro)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1c__loop__subset.html">c_loop_subset</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> (voro)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
+</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classvoro_1_1container.html">container</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structvoro_1_1particle__record.html">particle_record</a> (voro)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td><td valign="top"><a class="el" href="classvoro_1_1unitcell.html">unitcell</a> (voro)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> (voro)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_V">V</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__all.html b/lib/voro++/html/classvoro_1_1c__loop__all.html
new file mode 100644
index 000000000..d4601d9f9
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__all.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_all Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__all.html">c_loop_all</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_all Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for looping over all of the particles in a container.
+ <a href="classvoro_1_1c__loop__all.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_all:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__all.png" usemap="#voro::c_loop_all_map" alt=""/>
+ <map id="voro::c_loop_all_map" name="voro::c_loop_all_map">
+<area href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container." alt="voro::c_loop_base" shape="rect" coords="0,0,116,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a255049d5c5f878a24804ed2e29043e68"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:a255049d5c5f878a24804ed2e29043e68"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68">c_loop_all</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:acab7b0f3917a172844d4d2565913855d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a> ()</td></tr>
+<tr class="memitem:a322b26b0f78f73b345ee0af92f908df0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This is one of the simplest loop classes, that scans the computational blocks in order, and scans all the particles within each block in order. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00165">165</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a255049d5c5f878a24804ed2e29043e68"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_all::c_loop_all </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base container class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00171">171</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a322b26b0f78f73b345ee0af92f908df0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_all::inc </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Finds the next particle to test. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is another particle, false if no more particles are available. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00183">183</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acab7b0f3917a172844d4d2565913855d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_all::start </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets the class to consider the first particle. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any particle to consider, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00175">175</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__all.png b/lib/voro++/html/classvoro_1_1c__loop__all.png
new file mode 100644
index 000000000..621891cee
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__all.png differ
diff --git a/lib/voro++/html/classvoro_1_1c__loop__all__periodic.html b/lib/voro++/html/classvoro_1_1c__loop__all__periodic.html
new file mode 100644
index 000000000..716dc49f2
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__all__periodic.html
@@ -0,0 +1,211 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_all_periodic Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__all__periodic.html">c_loop_all_periodic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_all_periodic Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for looping over all particles in a <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> or <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> class.
+ <a href="classvoro_1_1c__loop__all__periodic.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_all_periodic:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__all__periodic.png" usemap="#voro::c_loop_all_periodic_map" alt=""/>
+ <map id="voro::c_loop_all_periodic_map" name="voro::c_loop_all_periodic_map">
+<area href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container." alt="voro::c_loop_base" shape="rect" coords="0,0,155,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a07dc6f74c7a503bb8cb4e7fa4f2e84ff"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:a07dc6f74c7a503bb8cb4e7fa4f2e84ff"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff">c_loop_all_periodic</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ab7b002f40adfe7116d3db77d6bb95f4c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a> ()</td></tr>
+<tr class="memitem:ac25d006faa31cee1d1b6bbc621532651"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>Since the <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> and <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> classes have a fundamentally different memory organization, the regular loop classes cannot be used with them. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00325">325</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a07dc6f74c7a503bb8cb4e7fa4f2e84ff"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_all_periodic::c_loop_all_periodic </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base periodic container class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the periodic container class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00331">331</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ac25d006faa31cee1d1b6bbc621532651"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_all_periodic::inc </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Finds the next particle to test. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is another particle, false if no more particles are available. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00348">348</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab7b002f40adfe7116d3db77d6bb95f4c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_all_periodic::start </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets the class to consider the first particle. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any particle to consider, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00336">336</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__all__periodic.png b/lib/voro++/html/classvoro_1_1c__loop__all__periodic.png
new file mode 100644
index 000000000..c00356197
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__all__periodic.png differ
diff --git a/lib/voro++/html/classvoro_1_1c__loop__base.html b/lib/voro++/html/classvoro_1_1c__loop__base.html
new file mode 100644
index 000000000..40a86aa32
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__base.html
@@ -0,0 +1,583 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__base.html">c_loop_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Base class for looping over particles in a container.
+ <a href="classvoro_1_1c__loop__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__base.png" usemap="#voro::c_loop_base_map" alt=""/>
+ <map id="voro::c_loop_base_map" name="voro::c_loop_base_map">
+<area href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container." alt="voro::c_loop_all" shape="rect" coords="0,56,173,80"/>
+<area href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class..." alt="voro::c_loop_all_periodic" shape="rect" coords="183,56,356,80"/>
+<area href="classvoro_1_1c__loop__order.html" title="Class for looping over all of the particles specified in a pre-assembled particle_order class..." alt="voro::c_loop_order" shape="rect" coords="366,56,539,80"/>
+<area href="classvoro_1_1c__loop__order__periodic.html" title="Class for looping over all of the particles specified in a pre-assembled particle_order class..." alt="voro::c_loop_order_periodic" shape="rect" coords="549,56,722,80"/>
+<area href="classvoro_1_1c__loop__subset.html" title="Class for looping over a subset of particles in a container." alt="voro::c_loop_subset" shape="rect" coords="732,56,905,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a0d6046f6de1f80849e5d1d8f3b7212e7"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:abb655606af4e184c2982f1a32cd47e12"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class forms the base of all classes that can loop over a subset of particles in a contaner in some order. When initialized, it stores constants about the corresponding container geometry. It also contains a number of routines for interrogating which particle currently being considered by the loop, which are common between all of the derived classes. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00078">78</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="acc2351174b5d0a163b172fb016e94216"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_base::c_loop_base </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base container class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00124">124</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa958fedbef8948a8a359ce00bdb52d07"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::pid </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the ID of the particle currently being considered by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00158">158</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac9f65f527282809c894c7094291fca83"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::c_loop_base::pos </td>
+ <td>(</td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the position vector of the particle currently being considered by the loop. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">(x,y,z)</td><td>the position vector of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00130">130</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33a5410ec11caa521d05c72e585bd155"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::c_loop_base::pos </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>pid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the ID, position vector, and radius of the particle currently being considered by the loop. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>the particle ID. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(x,y,z)</td><td>the position vector of the particle. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">r</td><td>the radius of the particle. If no radius information is available the default radius value is returned. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00141">141</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a759f4fc1cb4b7d5b41b1358c0e4fe4c3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::c_loop_base::x </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the x position of the particle currently being considered by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00149">149</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2f4b84b1453d680afe11b7877f191758"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::c_loop_base::y </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the y position of the particle currently being considered by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00152">152</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aec12d78b1e8282f84eac5a6fd67fc3c9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::c_loop_base::z </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the z position of the particle currently being considered by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00155">155</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a060e5b0e557141713b6897b0a0728f2d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::c_loop_base::co</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the particle counts in the associated container data structure. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00104">104</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aef465d2da85b963fa9e0e886ee273541"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::i</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current x-index of the block under consideration by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00107">107</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab64ac0420d5ebed7d3259dd5c861d5c1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::c_loop_base::id</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the particle ID information in the associated container data structure. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00101">101</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3cb6bc5c8b22e57325bb136feba93d9b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::ijk</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current index of the block under consideration by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00116">116</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abbaba2fc0d1fa07760220d37a3cc7ccf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::j</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current y-index of the block under consideration by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00110">110</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abf2dcc131f23212c15169e90ba30d6e4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::k</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current z-index of the block under consideration by the loop. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00113">113</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0d6046f6de1f80849e5d1d8f3b7212e7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::nx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the x direction. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00081">81</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abb655606af4e184c2982f1a32cd47e12"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::nxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of nx multiplied by ny, which is used in the routines that step through blocks in sequence. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00089">89</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a68cafa132e9028ed7b143e93e85a102d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::nxyz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of nx*ny*nz, which is used in the routines that step through blocks in sequence. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00092">92</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac8f42728e3a98149c2185aba833ac5ff"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::ny</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the y direction. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00083">83</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaec35b971352bff60f4a446c430f26f8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::nz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the z direction. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00085">85</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b6abbe65d550ae7071aaa28d0fbb534"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::c_loop_base::p</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the particle position information in the associated container data structure. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00098">98</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab42c93bbaf7cfc11e3c95f5d38f694e2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::c_loop_base::ps</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of floating point numbers per particle in the associated container data structure. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00095">95</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2eaa096a64736b5792cdf3d799b95786"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::c_loop_base::q</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The index of the particle under consideration within the current block. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00119">119</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__base.png b/lib/voro++/html/classvoro_1_1c__loop__base.png
new file mode 100644
index 000000000..916fe7f82
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1c__loop__order.html b/lib/voro++/html/classvoro_1_1c__loop__order.html
new file mode 100644
index 000000000..9fa6fd8b7
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__order.html
@@ -0,0 +1,270 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_order Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__order.html">c_loop_order</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_order Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class.
+ <a href="classvoro_1_1c__loop__order.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_order:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__order.png" usemap="#voro::c_loop_order_map" alt=""/>
+ <map id="voro::c_loop_order_map" name="voro::c_loop_order_map">
+<area href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container." alt="voro::c_loop_base" shape="rect" coords="0,0,120,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a08bc288a867bff0716d67fde7f18b892"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:a08bc288a867bff0716d67fde7f18b892"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892">c_loop_order</a> (c_class &amp;con, <a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo_)</td></tr>
+<tr class="memitem:a0e03892771119212847d1ea7c56c5228"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228">start</a> ()</td></tr>
+<tr class="memitem:ae2e1c198611110487e9b41c17cae65a7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7">inc</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a3a9be1df3e0f88e0e3e6fc0458949987"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">vo</a></td></tr>
+<tr class="memitem:a9b82e0a6ce7c6ed0456738cf23e08c61"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">cp</a></td></tr>
+<tr class="memitem:a6c2b7ac4d078f84490b9433523bf766f"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">op</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class can be used to create a specific order of particles within the container. This class can then loop over these particles in this order. The class is particularly useful in cases where the ordering of the output must match the ordering of particles as they were inserted into the container. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00268">268</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a08bc288a867bff0716d67fde7f18b892"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_order::c_loop_order </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base class, and sets up a reference to the ordering class to use. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo_</td><td>the ordering class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00282">282</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ae2e1c198611110487e9b41c17cae65a7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_order::inc </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Finds the next particle to test. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is another particle, false if no more particles are available. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00298">298</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0e03892771119212847d1ea7c56c5228"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_order::start </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets the class to consider the first particle. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any particle to consider, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00287">287</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a9b82e0a6ce7c6ed0456738cf23e08c61"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::c_loop_order::cp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the current position in the ordering class. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00273">273</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6c2b7ac4d078f84490b9433523bf766f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::c_loop_order::op</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the end position in the ordering class. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00275">275</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3a9be1df3e0f88e0e3e6fc0458949987"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a>&amp; voro::c_loop_order::vo</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A reference to the ordering class to use. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00271">271</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__order.png b/lib/voro++/html/classvoro_1_1c__loop__order.png
new file mode 100644
index 000000000..44a1d443a
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__order.png differ
diff --git a/lib/voro++/html/classvoro_1_1c__loop__order__periodic.html b/lib/voro++/html/classvoro_1_1c__loop__order__periodic.html
new file mode 100644
index 000000000..f1117c703
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__order__periodic.html
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_order_periodic Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__order__periodic.html">c_loop_order_periodic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_order_periodic Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class, for use with <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> classes.
+ <a href="classvoro_1_1c__loop__order__periodic.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_order_periodic:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__order__periodic.png" usemap="#voro::c_loop_order_periodic_map" alt=""/>
+ <map id="voro::c_loop_order_periodic_map" name="voro::c_loop_order_periodic_map">
+<area href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container." alt="voro::c_loop_base" shape="rect" coords="0,0,173,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:adb9aea9a009c1dfdd231b608257d04f9"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:adb9aea9a009c1dfdd231b608257d04f9"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9">c_loop_order_periodic</a> (c_class &amp;con, <a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo_)</td></tr>
+<tr class="memitem:a3734764b6b10670ce820de143d118d8e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e">start</a> ()</td></tr>
+<tr class="memitem:ae34027247718bedc32b705ceb5b029de"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de">inc</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a73e215fc8915ed65f17e633d85c0f018"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">vo</a></td></tr>
+<tr class="memitem:a281ac4b9e4f3c687081f067239fdd982"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">cp</a></td></tr>
+<tr class="memitem:a80063187d6d4ea8e8bb2efe02091a475"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">op</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class can be used to create a specific order of particles within the container. This class can then loop over these particles in this order. The class is particularly useful in cases where the ordering of the output must match the ordering of particles as they were inserted into the container. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00403">403</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="adb9aea9a009c1dfdd231b608257d04f9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_order_periodic::c_loop_order_periodic </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base class, and sets up a reference to the ordering class to use. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo_</td><td>the ordering class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00417">417</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ae34027247718bedc32b705ceb5b029de"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_order_periodic::inc </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Finds the next particle to test. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is another particle, false if no more particles are available. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00433">433</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3734764b6b10670ce820de143d118d8e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_order_periodic::start </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets the class to consider the first particle. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any particle to consider, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00422">422</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a281ac4b9e4f3c687081f067239fdd982"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::c_loop_order_periodic::cp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the current position in the ordering class. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00408">408</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a80063187d6d4ea8e8bb2efe02091a475"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::c_loop_order_periodic::op</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the end position in the ordering class. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00410">410</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a73e215fc8915ed65f17e633d85c0f018"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a>&amp; voro::c_loop_order_periodic::vo</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A reference to the ordering class to use. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00406">406</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__order__periodic.png b/lib/voro++/html/classvoro_1_1c__loop__order__periodic.png
new file mode 100644
index 000000000..7df8e4be9
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__order__periodic.png differ
diff --git a/lib/voro++/html/classvoro_1_1c__loop__subset.html b/lib/voro++/html/classvoro_1_1c__loop__subset.html
new file mode 100644
index 000000000..052f9e0a9
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1c__loop__subset.html
@@ -0,0 +1,412 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::c_loop_subset Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1c__loop__subset.html">c_loop_subset</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::c_loop_subset Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for looping over a subset of particles in a container.
+ <a href="classvoro_1_1c__loop__subset.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::c_loop_subset:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1c__loop__subset.png" usemap="#voro::c_loop_subset_map" alt=""/>
+ <map id="voro::c_loop_subset_map" name="voro::c_loop_subset_map">
+<area href="classvoro_1_1c__loop__base.html" title="Base class for looping over particles in a container." alt="voro::c_loop_base" shape="rect" coords="0,0,125,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:aab236b412de99f7a58d77d23a25ff44f"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:aab236b412de99f7a58d77d23a25ff44f"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f">c_loop_subset</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:a585f47e725dc0de645defc8dc0d463cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">setup_sphere</a> (double vx, double vy, double vz, double r, bool bounds_test=true)</td></tr>
+<tr class="memitem:a2aba9be724d35e088e3597dc9181182d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">setup_box</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, bool bounds_test=true)</td></tr>
+<tr class="memitem:a688ef02340f6a9bc64c77c2de4c4ae3d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">setup_intbox</a> (int ai_, int bi_, int aj_, int bj_, int ak_, int bk_)</td></tr>
+<tr class="memitem:a4c9709bc992e33668471e292474c39f4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">start</a> ()</td></tr>
+<tr class="memitem:af45a6a610d039dc8c8434caf61b092c6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6">inc</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:acc2351174b5d0a163b172fb016e94216"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">c_loop_base</a> (c_class &amp;con)</td></tr>
+<tr class="memitem:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">pos</a> (double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>)</td></tr>
+<tr class="memitem:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">pos</a> (int &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a>, double &amp;<a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a>, double &amp;r)</td></tr>
+<tr class="memitem:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">x</a> ()</td></tr>
+<tr class="memitem:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">y</a> ()</td></tr>
+<tr class="memitem:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">z</a> ()</td></tr>
+<tr class="memitem:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">pid</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ac5d8b2aa34f936022e9059ca093b914c"><td class="memItemLeft" align="right" valign="top">c_loop_subset_mode&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">mode</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1c__loop__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1c__loop__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></td></tr>
+<tr class="memitem:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">nx</a></td></tr>
+<tr class="memitem:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">ny</a></td></tr>
+<tr class="memitem:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">nz</a></td></tr>
+<tr class="memitem:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">nxy</a></td></tr>
+<tr class="memitem:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">nxyz</a></td></tr>
+<tr class="memitem:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">ps</a></td></tr>
+<tr class="memitem:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">p</a></td></tr>
+<tr class="memitem:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">id</a></td></tr>
+<tr class="memitem:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">co</a></td></tr>
+<tr class="memitem:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">i</a></td></tr>
+<tr class="memitem:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">j</a></td></tr>
+<tr class="memitem:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">k</a></td></tr>
+<tr class="memitem:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">ijk</a></td></tr>
+<tr class="memitem:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">q</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class can loop over a subset of particles in a certain geometrical region within the container. The class can be set up to loop over a rectangular box or sphere. It can also rectangular group of internal computational blocks. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00218">218</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="aab236b412de99f7a58d77d23a25ff44f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::c_loop_subset::c_loop_subset </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The constructor copies several necessary constants from the base container class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00228">228</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="af45a6a610d039dc8c8434caf61b092c6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_subset::inc </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Finds the next particle to test. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is another particle, false if no more particles are available. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00238">238</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2aba9be724d35e088e3597dc9181182d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::c_loop_subset::setup_box </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>bounds_test</em> = <code>true</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes the class to loop over all particles in a rectangular box. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xmin,xmax)</td><td>the minimum and maximum x coordinates of the box. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ymin,ymax)</td><td>the minimum and maximum y coordinates of the box. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(zmin,zmax)</td><td>the minimum and maximum z coordinates of the box. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">bounds_test</td><td>whether to do detailed bounds checking. If this is false then the class will loop over all particles in blocks that overlap the given box. If it is true, the particle will only loop over the particles which actually lie within the box. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any valid point to loop over, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8cc_source.html#l00098">98</a> of file <a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a688ef02340f6a9bc64c77c2de4c4ae3d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::c_loop_subset::setup_intbox </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ai_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>bi_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>aj_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>bj_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ak_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>bk_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes the class to loop over all particles in a rectangular subgrid of blocks. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ai_,bi_)</td><td>the subgrid range in the x-direction, inclusive of both ends. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(aj_,bj_)</td><td>the subgrid range in the y-direction, inclusive of both ends. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ak_,bk_)</td><td>the subgrid range in the z-direction, inclusive of both ends. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any valid point to loop over, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8cc_source.html#l00044">44</a> of file <a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a585f47e725dc0de645defc8dc0d463cb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::c_loop_subset::setup_sphere </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>vx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>vy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>vz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>bounds_test</em> = <code>true</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes a <a class="el" href="classvoro_1_1c__loop__subset.html" title="Class for looping over a subset of particles in a container.">c_loop_subset</a> object to scan over all particles within a given sphere. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(vx,vy,vz)</td><td>the position vector of the center of the sphere. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the sphere. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">bounds_test</td><td>whether to do detailed bounds checking. If this is false then the class will loop over all particles in blocks that overlap the given sphere. If it is true, the particle will only loop over the particles which actually lie within the sphere. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any valid point to loop over, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8cc_source.html#l00024">24</a> of file <a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c9709bc992e33668471e292474c39f4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::c_loop_subset::start </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Starts the loop by finding the first particle within the container to consider. </p>
+<dl class="section return"><dt>Returns:</dt><dd>True if there is any particle to consider, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="c__loops_8cc_source.html#l00079">79</a> of file <a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="ac5d8b2aa34f936022e9059ca093b914c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">c_loop_subset_mode voro::c_loop_subset::mode</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current mode of operation, determining whether tests should be applied to particles to ensure they are within a certain geometrical object. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00223">223</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+<li><a class="el" href="c__loops_8cc_source.html">c_loops.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1c__loop__subset.png b/lib/voro++/html/classvoro_1_1c__loop__subset.png
new file mode 100644
index 000000000..0b76bca93
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1c__loop__subset.png differ
diff --git a/lib/voro++/html/classvoro_1_1container.html b/lib/voro++/html/classvoro_1_1container.html
new file mode 100644
index 000000000..b9549c4b8
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container.html
@@ -0,0 +1,1362 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container.html">container</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing regular Voronoi tessellations.
+ <a href="classvoro_1_1container.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container_8hh_source.html">container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container.png" usemap="#voro::container_map" alt=""/>
+ <map id="voro::container_map" name="voro::container_map">
+<area href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box." alt="voro::container_base" shape="rect" coords="70,56,201,80"/>
+<area href="classvoro_1_1radius__mono.html" title="Class containing all of the routines that are specific to computing the regular Voronoi tessellation..." alt="voro::radius_mono" shape="rect" coords="211,56,342,80"/>
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="0,0,131,24"/>
+<area href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls." alt="voro::wall_list" shape="rect" coords="141,0,272,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a50aaf382a069b102930b88976215818f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f">container</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, int nx_, int ny_, int nz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int init_mem)</td></tr>
+<tr class="memitem:a0890eac6d9f02b8d7b8e41a8a98ff2ee"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee">clear</a> ()</td></tr>
+<tr class="memitem:a5c67c9998e4f174fb217967dcb41c7f3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a> (int n, double x, double y, double z)</td></tr>
+<tr class="memitem:a6e4a48cc9c31557457213923254fdda3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a6e4a48cc9c31557457213923254fdda3">put</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, int n, double x, double y, double z)</td></tr>
+<tr class="memitem:a1e4fe0c7b59c93cdd3f965c59dbb2f66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:a7b3aa6219cfb0fd538839aeeae4457cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a7b3aa6219cfb0fd538839aeeae4457cc">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, FILE *fp=stdin)</td></tr>
+<tr class="memitem:a74d328c0a3f574668ff5dd9e34d22f1f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a74d328c0a3f574668ff5dd9e34d22f1f">import</a> (const char *filename)</td></tr>
+<tr class="memitem:acd9da3dc12eecccd5db8af5ff111222c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#acd9da3dc12eecccd5db8af5ff111222c">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, const char *filename)</td></tr>
+<tr class="memitem:a2757cfc62be2f0496eddd0fccbc14ba6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6">compute_all_cells</a> ()</td></tr>
+<tr class="memitem:accce43f61281a3c5d69893ad5187e3ec"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec">sum_cell_volumes</a> ()</td></tr>
+<tr class="memitem:a39c6928b9e5d4351b01df6bbd4b8b72c"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a39c6928b9e5d4351b01df6bbd4b8b72c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">draw_particles</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:acf0d0e3a7cfb9c7445e99afc57dbee94"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#acf0d0e3a7cfb9c7445e99afc57dbee94">draw_particles</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4c5ac89711659787eba011afbee318be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a4c5ac89711659787eba011afbee318be">draw_particles</a> (const char *filename)</td></tr>
+<tr class="memitem:a4bfde4e186de8a12fbb5b5d7f16f9387"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a4bfde4e186de8a12fbb5b5d7f16f9387"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">draw_particles_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:adaebc99132288ce43dab36fe86b5497b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#adaebc99132288ce43dab36fe86b5497b">draw_particles_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ad90375e99cea7db7c1b82d00853e2659"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#ad90375e99cea7db7c1b82d00853e2659">draw_particles_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a13bc3a19033255fb04049288c7cd5818"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a13bc3a19033255fb04049288c7cd5818"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">draw_cells_gnuplot</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a5812915614c26d5e52697902556ed996"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a5812915614c26d5e52697902556ed996">draw_cells_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aa387c1b649fe6eabafe4546ae7410c6b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#aa387c1b649fe6eabafe4546ae7410c6b">draw_cells_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:af39b3d55e12a5b1d6acbab77d762cff3"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:af39b3d55e12a5b1d6acbab77d762cff3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">draw_cells_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:ac6ec5c8fec1cec5185af19bb21832fcb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#ac6ec5c8fec1cec5185af19bb21832fcb">draw_cells_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a3f9a6147040c60ff579dcd96c05800c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a3f9a6147040c60ff579dcd96c05800c9">draw_cells_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a35c0c0b78ca0ba3fa10e6a9c4eece492"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a35c0c0b78ca0ba3fa10e6a9c4eece492"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a> (c_loop &amp;vl, const char *format, FILE *fp)</td></tr>
+<tr class="memitem:a37508aa6ea56b625893bdde283d30e0c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a37508aa6ea56b625893bdde283d30e0c">print_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a7adccdf76ab5ee9e29e48292a2cc43d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a7adccdf76ab5ee9e29e48292a2cc43d9">print_custom</a> (const char *format, const char *filename)</td></tr>
+<tr class="memitem:a5e73bd52fe92985962a248fed566737b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b">find_voronoi_cell</a> (double x, double y, double z, double &amp;rx, double &amp;ry, double &amp;rz, int &amp;pid)</td></tr>
+<tr class="memitem:a9808b60d80f1d3ccc06ebd0a2495ac7a"><td class="memTemplParams" colspan="2">template&lt;class v_cell , class c_loop &gt; </td></tr>
+<tr class="memitem:a9808b60d80f1d3ccc06ebd0a2495ac7a"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a> (v_cell &amp;c, c_loop &amp;vl)</td></tr>
+<tr class="memitem:ad600a135ee01c2f1c08a5b9da58398ad"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ad600a135ee01c2f1c08a5b9da58398ad"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html#ad600a135ee01c2f1c08a5b9da58398ad">compute_cell</a> (v_cell &amp;c, int ijk, int q)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:a2f7bde3ec593d9f4b8c9ceb67b56f62f inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, int nx_, int ny_, int nz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int init_mem, int ps_)</td></tr>
+<tr class="memitem:a624a890b979cc8f989778e0b627bad44 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">~container_base</a> ()</td></tr>
+<tr class="memitem:a290c21ba694d02231d49d14881dfcfd1 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ac1205c5c189d3dd72057c4cf9fa8891d inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">region_count</a> ()</td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5 inherit pub_methods_classvoro_1_1container__base"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a30dbb059792c199f2526c13990cd8daf inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a08db44d4d57b8b19f1e101cc40c82e85 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:a76b645960fba43620e096b7bdf178603 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a67dbf4a79fac8527ccee72d881c6654d inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a019db0a854b71ac57886155422bb53d6 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a019db0a854b71ac57886155422bb53d6">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a6ff9d18058ab53c955cd44dea733e4fd inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aa1c0c293bae52c879eb42035a031d8e8 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa1c0c293bae52c879eb42035a031d8e8">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:ad9fe437b46f1e58908c393955e6d4217 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">total_particles</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:a248fb5d008de9a5a97d4720d47794698 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list</a> ()</td></tr>
+<tr class="memitem:a8b0402f2bfad31b7d0204d4120cd60be inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">~wall_list</a> ()</td></tr>
+<tr class="memitem:aca50327f246b61f6aeef5337327d957d inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> *w)</td></tr>
+<tr class="memitem:a8e3a5253fa0392bf0f8b7a84eb1b61d4 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> &amp;w)</td></tr>
+<tr class="memitem:af872ae39e2bb8fe1e6947644a84cb1a8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#af872ae39e2bb8fe1e6947644a84cb1a8">add_wall</a> (<a class="el" href="classvoro_1_1wall__list.html">wall_list</a> &amp;wl)</td></tr>
+<tr class="memitem:ae6d83d60ffa99fb6712445616883d1c8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019 inherit pub_methods_classvoro_1_1wall__list"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a> (c_class &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a49c42b672f2eb7535c3b3564bb6cf51f inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">deallocate</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:aa79dc715f483f666ffb6adf08265e86e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa79dc715f483f666ffb6adf08265e86e"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voro_compute&lt; container &gt;</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:ab33ca2a8d7282d65a731d854d27906f2 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a></td></tr>
+<tr class="memitem:afd9b8e6b3c6bb4376d1f755ef7ac789d inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a></td></tr>
+<tr class="memitem:ab64ef06e1e257e83a33422a044ef9858 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a></td></tr>
+<tr class="memitem:ae769a416d7a5520eddf026cec6f7fda6 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a></td></tr>
+<tr class="memitem:a78d795a863e401a5fc565c7dec31b6a6 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a></td></tr>
+<tr class="memitem:a27de2088113bb64a4b045bea7c590be3 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a></td></tr>
+<tr class="memitem:a6734b7147a71bb7e2a4a313d4153bebf inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a></td></tr>
+<tr class="memitem:a05a979d24c3d0fefe9f5cd96174863f8 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a></td></tr>
+<tr class="memitem:acd3bdff20b8b11a3e606e5581ebf3c06 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a></td></tr>
+<tr class="memitem:a50de485630d0b693fb418be1726826a7 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">id</a></td></tr>
+<tr class="memitem:a0798a7623a37b1a9da86f225119606e5 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a></td></tr>
+<tr class="memitem:a987e612ffd2c459adf8c1784d308ef51 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a></td></tr>
+<tr class="memitem:a633edc1737859a7dde8ca2e466e12cfe inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a></td></tr>
+<tr class="memitem:a235781536a17eab85b547787ff3618ba inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:abfc54768de5b596237d7eef5f589fe90 inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a></td></tr>
+<tr class="memitem:abb48a3e29042c51cf48fa6a6b6c2dc1d inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:aa0fe8c92c66463236a05924d466256da inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:a1ab1b31f6fcd3080cc9fd0948df61e1a inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:af070c53156c75171a13dacb2ef2148aa inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">put_remap</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:abe09747feba40102470c91f93d25fbfc inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:afb2cd60a3624dd4033ccddd690321489 inherit pro_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a> ()</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1radius__mono"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1radius__mono')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1radius__mono.html">voro::radius_mono</a></td></tr>
+<tr class="memitem:ab17c87e1f434718bec74e93387480be9 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:afc6e56b490ddf97d9ee924d58e128422 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a685b7e6b79c943b4fd083857b229cc14 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a5eaff13d2c5212e72032d24a8c376114 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:ab1b663f24d371a45e19fb8866151bb7f inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ae390a53c70f0295592d02fc9dd0a9086 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a4aa8de703ecce74dc1625aea73149720 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aaadf553614ec9390a37349bc7d7a7557 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class that has routines specifically for computing the regular Voronoi tessellation with no dependence on particle radii. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00285">285</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a50aaf382a069b102930b88976215818f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container::container </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_)</td><td>flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem</td><td>the initial memory allocation for each block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00064">64</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a0890eac6d9f02b8d7b8e41a8a98ff2ee"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::clear </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Clears a container of particles. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00384">384</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2757cfc62be2f0496eddd0fccbc14ba6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::compute_all_cells </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all of the Voronoi cells in the container, but does nothing with the output. It is useful for measuring the pure computation time of the Voronoi algorithm, without any additional calculations such as volume evaluation or cell output. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00435">435</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9808b60d80f1d3ccc06ebd0a2495ac7a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell , class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for a particle currently being referenced by a loop class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed, if it is removed entirely by a wall or boundary condition, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00460">460</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad600a135ee01c2f1c08a5b9da58398ad"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for given particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed, if it is removed entirely by a wall or boundary condition, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00472">472</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a13bc3a19033255fb04049288c7cd5818"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00376">376</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5812915614c26d5e52697902556ed996"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00386">386</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa387c1b649fe6eabafe4546ae7410c6b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00393">393</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af39b3d55e12a5b1d6acbab77d762cff3"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00403">403</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac6ec5c8fec1cec5185af19bb21832fcb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00414">414</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f9a6147040c60ff579dcd96c05800c9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00421">421</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a39c6928b9e5d4351b01df6bbd4b8b72c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00326">326</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acf0d0e3a7cfb9c7445e99afc57dbee94"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00335">335</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c5ac89711659787eba011afbee318be"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00341">341</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4bfde4e186de8a12fbb5b5d7f16f9387"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00350">350</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adaebc99132288ce43dab36fe86b5497b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00360">360</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad90375e99cea7db7c1b82d00853e2659"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00366">366</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5e73bd52fe92985962a248fed566737b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container::find_voronoi_cell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>ry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>pid</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Takes a vector and finds the particle whose Voronoi cell contains that vector. This is equivalent to finding the particle which is nearest to the vector. Additional wall classes are not considered by this routine. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(rx,ry,rz)</td><td>the position of the particle whose Voronoi cell contains the vector. If the container is periodic, this may point to a particle in a periodic image of the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>the ID of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if a particle was found. If the container has no particles, then the search will not find a Voronoi cell and false is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00234">234</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e4fe0c7b59c93cdd3f965c59dbb2f66"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00330">330</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7b3aa6219cfb0fd538839aeeae4457cc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>a reference to an ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00343">343</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a74d328c0a3f574668ff5dd9e34d22f1f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00301">301</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acd9da3dc12eecccd5db8af5ff111222c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. In addition, the order in which particles are read is saved into an ordering class. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00315">315</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a35c0c0b78ca0ba3fa10e6a9c4eece492"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00432">432</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a37508aa6ea56b625893bdde283d30e0c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00398">398</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7adccdf76ab5ee9e29e48292a2cc43d9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00415">415</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5c67c9998e4f174fb217967dcb41c7f3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00087">87</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6e4a48cc9c31557457213923254fdda3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container::put </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container, also recording into which region it was stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class in which to record the region. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00115">115</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accce43f61281a3c5d69893ad5187e3ec"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::container::sum_cell_volumes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates all of the Voronoi cells and sums their volumes. In most cases without walls, the sum of the Voronoi cell volumes should equal the volume of the container to numerical precision. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The sum of all of the computed Voronoi volumes. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00456">456</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container_8hh_source.html">container.hh</a></li>
+<li><a class="el" href="container_8cc_source.html">container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container.png b/lib/voro++/html/classvoro_1_1container.png
new file mode 100644
index 000000000..1abdf2aa8
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container.png differ
diff --git a/lib/voro++/html/classvoro_1_1container__base.html b/lib/voro++/html/classvoro_1_1container__base.html
new file mode 100644
index 000000000..be9224463
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container__base.html
@@ -0,0 +1,1348 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container__base.html">container_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for representing a particle system in a three-dimensional rectangular box.
+ <a href="classvoro_1_1container__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container_8hh_source.html">container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container__base.png" usemap="#voro::container_base_map" alt=""/>
+ <map id="voro::container_base_map" name="voro::container_base_map">
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="0,0,131,24"/>
+<area href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls." alt="voro::wall_list" shape="rect" coords="141,0,272,24"/>
+<area href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations." alt="voro::container" shape="rect" coords="0,112,131,136"/>
+<area href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations." alt="voro::container_poly" shape="rect" coords="141,112,272,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a2f7bde3ec593d9f4b8c9ceb67b56f62f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, int nx_, int ny_, int nz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int init_mem, int ps_)</td></tr>
+<tr class="memitem:a624a890b979cc8f989778e0b627bad44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">~container_base</a> ()</td></tr>
+<tr class="memitem:a290c21ba694d02231d49d14881dfcfd1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ac1205c5c189d3dd72057c4cf9fa8891d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">region_count</a> ()</td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a30dbb059792c199f2526c13990cd8daf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a08db44d4d57b8b19f1e101cc40c82e85"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:a76b645960fba43620e096b7bdf178603"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a67dbf4a79fac8527ccee72d881c6654d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a019db0a854b71ac57886155422bb53d6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a019db0a854b71ac57886155422bb53d6">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a6ff9d18058ab53c955cd44dea733e4fd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aa1c0c293bae52c879eb42035a031d8e8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa1c0c293bae52c879eb42035a031d8e8">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:ad9fe437b46f1e58908c393955e6d4217"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">total_particles</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:a248fb5d008de9a5a97d4720d47794698 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list</a> ()</td></tr>
+<tr class="memitem:a8b0402f2bfad31b7d0204d4120cd60be inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">~wall_list</a> ()</td></tr>
+<tr class="memitem:aca50327f246b61f6aeef5337327d957d inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> *w)</td></tr>
+<tr class="memitem:a8e3a5253fa0392bf0f8b7a84eb1b61d4 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> &amp;w)</td></tr>
+<tr class="memitem:af872ae39e2bb8fe1e6947644a84cb1a8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#af872ae39e2bb8fe1e6947644a84cb1a8">add_wall</a> (<a class="el" href="classvoro_1_1wall__list.html">wall_list</a> &amp;wl)</td></tr>
+<tr class="memitem:ae6d83d60ffa99fb6712445616883d1c8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019 inherit pub_methods_classvoro_1_1wall__list"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a> (c_class &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a49c42b672f2eb7535c3b3564bb6cf51f inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">deallocate</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ab33ca2a8d7282d65a731d854d27906f2"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a></td></tr>
+<tr class="memitem:afd9b8e6b3c6bb4376d1f755ef7ac789d"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a></td></tr>
+<tr class="memitem:ab64ef06e1e257e83a33422a044ef9858"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a></td></tr>
+<tr class="memitem:ae769a416d7a5520eddf026cec6f7fda6"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a></td></tr>
+<tr class="memitem:a78d795a863e401a5fc565c7dec31b6a6"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a></td></tr>
+<tr class="memitem:a27de2088113bb64a4b045bea7c590be3"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a></td></tr>
+<tr class="memitem:a6734b7147a71bb7e2a4a313d4153bebf"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a></td></tr>
+<tr class="memitem:a05a979d24c3d0fefe9f5cd96174863f8"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a></td></tr>
+<tr class="memitem:acd3bdff20b8b11a3e606e5581ebf3c06"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a></td></tr>
+<tr class="memitem:a50de485630d0b693fb418be1726826a7"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">id</a></td></tr>
+<tr class="memitem:a0798a7623a37b1a9da86f225119606e5"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a></td></tr>
+<tr class="memitem:a987e612ffd2c459adf8c1784d308ef51"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a></td></tr>
+<tr class="memitem:a633edc1737859a7dde8ca2e466e12cfe"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a></td></tr>
+<tr class="memitem:a235781536a17eab85b547787ff3618ba"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:abfc54768de5b596237d7eef5f589fe90 inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a></td></tr>
+<tr class="memitem:abb48a3e29042c51cf48fa6a6b6c2dc1d inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aa0fe8c92c66463236a05924d466256da"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:a1ab1b31f6fcd3080cc9fd0948df61e1a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:af070c53156c75171a13dacb2ef2148aa"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">put_remap</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:abe09747feba40102470c91f93d25fbfc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:afb2cd60a3624dd4033ccddd690321489 inherit pro_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_static_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Static Public Attributes inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:abc825bfa4bdb4b85d50058f016457445 inherit pub_static_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">wl</a> [wl_seq_length *wl_hgridcu]</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:a292491bc99b6bbc819bb3720fcfb08a1 inherit pro_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">wel</a></td></tr>
+<tr class="memitem:a8a06b6562bbf488ff30852cd1a548506 inherit pro_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a system of particles in a three-dimensional rectangular box. Any combination of non-periodic and periodic coordinates can be used in the three coordinate directions. The class is not intended for direct use, but instead forms the base of the container and <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> classes that add specialized routines for computing the regular and radical Voronoi tessellations respectively. It contains routines that are commonly between these two classes, such as those for drawing the domain, and placing particles within the internal data structure.</p>
+<p>The class is derived from the <a class="el" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> class, which encapsulates routines for associating walls with the container, and the <a class="el" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a> class, which encapsulates routines about the underlying computational grid. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00115">115</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a2f7bde3ec593d9f4b8c9ceb67b56f62f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_base::container_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ps_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction, and setting whether each direction is periodic or not. It divides the container into a rectangular grid of blocks, and allocates memory for each of these for storing particle positions and IDs. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_)</td><td>flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem</td><td>the initial memory allocation for each block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ps_</td><td>the number of floating point entries to store for each particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00030">30</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a624a890b979cc8f989778e0b627bad44"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_base::~container_base </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The container destructor frees the dynamically allocated memory. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00044">44</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa0fe8c92c66463236a05924d466256da"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::add_particle_memory </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Increase memory for a particular region. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">i</td><td>the index of the region to reallocate. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00302">302</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67dbf4a79fac8527ccee72d881c6654d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::draw_domain_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00488">488</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a019db0a854b71ac57886155422bb53d6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::draw_domain_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in Gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the filename to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00252">252</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6ff9d18058ab53c955cd44dea733e4fd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::draw_domain_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00497">497</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa1c0c293bae52c879eb42035a031d8e8"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::draw_domain_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in Gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the filename to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00260">260</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a08db44d4d57b8b19f1e101cc40c82e85"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::frac_pos </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fz</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the position of a particle currently being computed relative to the computational block that it is within. It is used to select the optimal worklist entry to use. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(fx,fy,fz)</td><td>the position relative to the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00224">224</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a30dbb059792c199f2526c13990cd8daf"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::initialize_search </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>j</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>k</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes parameters for a find_voronoi_cell call within the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> template. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the test block in the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the index of the test block </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell routine. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00211">211</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af6d18399db1c92816296bc70af8440b5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_base::initialize_voronoicell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>j</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>k</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes the Voronoi cell prior to a compute_cell operation for a specific particle being carried out by a <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> class. The cell is initialized to fill the entire container. For non-periodic coordinates, this is set by the position of the walls. For periodic coordinates, the space is equally divided in either direction from the particle's initial position. Plane cuts made by any walls that have been added are then applied to the cell. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>a reference to a voronoicell object. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within its block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the block in the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">disp</td><td>a block displacement used internally by the compute_cell routine. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cuts applied by walls completely removed the cell, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00189">189</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a290c21ba694d02231d49d14881dfcfd1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_base::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This function tests to see if a given vector lies within the container bounds and any walls. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector to be tested. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the point is inside the container, false if the point is outside. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00481">481</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1ab1b31f6fcd3080cc9fd0948df61e1a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_base::put_locate_block </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This routine takes a particle position vector, tries to remap it into the primary domain. If successful, it computes the region into which it can be stored and checks that there is enough memory within this region to store it. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the region index. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00151">151</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af070c53156c75171a13dacb2ef2148aa"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_base::put_remap </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Takes a particle position vector and computes the region index into which it should be stored. If the container is periodic, then the routine also maps the particle position to ensure it is in the primary domain. If the container is not periodic, the routine bails out. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the region index. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00171">171</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac1205c5c189d3dd72057c4cf9fa8891d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_base::region_count </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the a list of all the container regions along with the number of particles stored within each. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00377">377</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a76b645960fba43620e096b7bdf178603"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_base::region_index </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ei</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ej</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ek</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Calculates the index of block in the container structure corresponding to given coordinates. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the original block in the current computation, relative to the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ei,ej,ek)</td><td>the displacement of the current block from the original block. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(qx,qy,qz)</td><td>the periodic displacement that must be added to the particles within the computed block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell and compute_cell routines. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The block index. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00243">243</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abe09747feba40102470c91f93d25fbfc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_base::remap </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ai</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>aj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ak</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Takes a position vector and attempts to remap it into the primary domain. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the vector is in, with (0,0,0) corresponding to the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ci,cj,ck)</td><td>the index of the block that the position vector is within, once it has been remapped. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the position vector to consider, which is remapped into the primary domain during the routine. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the block index that the vector is within. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the particle is within the container or can be remapped into it, false if it lies outside of the container bounds. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00200">200</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad9fe437b46f1e58908c393955e6d4217"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_base::total_particles </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sums up the total number of stored particles. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The number of particles. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00267">267</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="ab33ca2a8d7282d65a731d854d27906f2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::ax</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum x coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00118">118</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab64ef06e1e257e83a33422a044ef9858"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::ay</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum y coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00122">122</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a78d795a863e401a5fc565c7dec31b6a6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::az</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum z coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00126">126</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd9b8e6b3c6bb4376d1f755ef7ac789d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::bx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum x coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00120">120</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae769a416d7a5520eddf026cec6f7fda6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::by</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum y coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00124">124</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a27de2088113bb64a4b045bea7c590be3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::container_base::bz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum z coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00128">128</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a987e612ffd2c459adf8c1784d308ef51"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::container_base::co</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the number of particles within each computational box of the container. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00147">147</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a50de485630d0b693fb418be1726826a7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::container_base::id</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the numerical IDs of each particle in each computational box. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00140">140</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a633edc1737859a7dde8ca2e466e12cfe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::container_base::mem</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the maximum amount of particle memory for each computational box of the container. If the number of particles in a particular box ever approaches this limit, more is allocated using the <a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory()</a> function. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00153">153</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0798a7623a37b1a9da86f225119606e5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::container_base::p</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A two dimensional array holding particle positions. For the derived <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class, this also holds particle radii. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00144">144</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a235781536a17eab85b547787ff3618ba"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::container_base::ps</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The amount of memory in the array structure for each particle. This is set to 3 when the basic class is initialized, so that the array holds (x,y,z) positions. If the container class is initialized as part of the derived class <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a>, then this is set to 4, to also hold the particle radii. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00160">160</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6734b7147a71bb7e2a4a313d4153bebf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::container_base::xperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the x coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00131">131</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a05a979d24c3d0fefe9f5cd96174863f8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::container_base::yperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the y coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00134">134</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acd3bdff20b8b11a3e606e5581ebf3c06"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::container_base::zperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the z coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00137">137</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container_8hh_source.html">container.hh</a></li>
+<li><a class="el" href="container_8cc_source.html">container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container__base.png b/lib/voro++/html/classvoro_1_1container__base.png
new file mode 100644
index 000000000..94d7b2f55
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1container__periodic.html b/lib/voro++/html/classvoro_1_1container__periodic.html
new file mode 100644
index 000000000..cc17cf125
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container__periodic.html
@@ -0,0 +1,1413 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container_periodic Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container__periodic.html">container_periodic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container_periodic Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing regular Voronoi tessellations.
+ <a href="classvoro_1_1container__periodic.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container_periodic:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container__periodic.png" usemap="#voro::container_periodic_map" alt=""/>
+ <map id="voro::container_periodic_map" name="voro::container_periodic_map">
+<area href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain..." alt="voro::container_periodic_base" shape="rect" coords="97,56,281,80"/>
+<area href="classvoro_1_1radius__mono.html" title="Class containing all of the routines that are specific to computing the regular Voronoi tessellation..." alt="voro::radius_mono" shape="rect" coords="291,56,475,80"/>
+<area href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain..." alt="voro::unitcell" shape="rect" coords="0,0,184,24"/>
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="194,0,378,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ace68f8fc6073edb7dd41c30761f899fd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd">container_periodic</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_)</td></tr>
+<tr class="memitem:a5394f52caa441d83c5aba6cf0e254116"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116">clear</a> ()</td></tr>
+<tr class="memitem:afa9abf680a0dc08650ada11a2eff0be6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a> (int n, double x, double y, double z)</td></tr>
+<tr class="memitem:a354f707360a7e51a56de2eafc10cb43f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a354f707360a7e51a56de2eafc10cb43f">put</a> (int n, double x, double y, double z, int &amp;ai, int &amp;aj, int &amp;ak)</td></tr>
+<tr class="memitem:ad3987d5710d793bdd604f12eeaa326f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ad3987d5710d793bdd604f12eeaa326f0">put</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, int n, double x, double y, double z)</td></tr>
+<tr class="memitem:ad5073f573187aa00569d3562cdfa4f49"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:a9ad39c3dcd9311183c671a78a5263c2c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a9ad39c3dcd9311183c671a78a5263c2c">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, FILE *fp=stdin)</td></tr>
+<tr class="memitem:ac2b38542ffabd95cb7f5bc5dab162a5d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ac2b38542ffabd95cb7f5bc5dab162a5d">import</a> (const char *filename)</td></tr>
+<tr class="memitem:ae586c7cf716fa84e91e9f801f5ac8a50"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ae586c7cf716fa84e91e9f801f5ac8a50">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, const char *filename)</td></tr>
+<tr class="memitem:a0b374a8ad39646bf22468e535b08a187"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187">compute_all_cells</a> ()</td></tr>
+<tr class="memitem:a0f60071a597dec1065a5ab122cf72415"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415">sum_cell_volumes</a> ()</td></tr>
+<tr class="memitem:a4b22d1868b96f049891a4f65e57497e8"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a4b22d1868b96f049891a4f65e57497e8"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">draw_particles</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a21a12c0ed7e67de10360cd3af8a5928f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a21a12c0ed7e67de10360cd3af8a5928f">draw_particles</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a0b7b5b922f383d0c8d05e499a887a3b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a0b7b5b922f383d0c8d05e499a887a3b9">draw_particles</a> (const char *filename)</td></tr>
+<tr class="memitem:a7086ad4c901827134b29a1bfc1b0bd3d"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a7086ad4c901827134b29a1bfc1b0bd3d"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">draw_particles_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a7279993d74b79966cfaeab40f8df5882"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a7279993d74b79966cfaeab40f8df5882">draw_particles_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af008d47998b895aeeb108361a642407d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#af008d47998b895aeeb108361a642407d">draw_particles_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:ad90cf825d916a83570382f7cfae0461b"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:ad90cf825d916a83570382f7cfae0461b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">draw_cells_gnuplot</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:adaf8256dd86c8c37618113cee774345f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#adaf8256dd86c8c37618113cee774345f">draw_cells_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4f2b088d20b479b62a3dcdfa42d62526"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a4f2b088d20b479b62a3dcdfa42d62526">draw_cells_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:adba11c6b4f9a20b1d5e0e16b94fe7dff"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:adba11c6b4f9a20b1d5e0e16b94fe7dff"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">draw_cells_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:ae35a7e24438d3290c5dbb39f2474f3f4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#ae35a7e24438d3290c5dbb39f2474f3f4">draw_cells_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a690edc7e6e23393d82faf320aac1b2d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a690edc7e6e23393d82faf320aac1b2d9">draw_cells_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:adeb50c6841166e59a6be150d7adb4212"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:adeb50c6841166e59a6be150d7adb4212"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a> (c_loop &amp;vl, const char *format, FILE *fp)</td></tr>
+<tr class="memitem:abdae5633b67aa3cfcc7b04f9381e4fcd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#abdae5633b67aa3cfcc7b04f9381e4fcd">print_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:adfe60b3e007ae8405ddca2e063957c3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#adfe60b3e007ae8405ddca2e063957c3e">print_custom</a> (const char *format, const char *filename)</td></tr>
+<tr class="memitem:a5fa97cb936062142acc29e5870add6c6"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6">find_voronoi_cell</a> (double x, double y, double z, double &amp;rx, double &amp;ry, double &amp;rz, int &amp;pid)</td></tr>
+<tr class="memitem:af5cc004a3be4a1eecb037fe9f4b9e2ff"><td class="memTemplParams" colspan="2">template&lt;class v_cell , class c_loop &gt; </td></tr>
+<tr class="memitem:af5cc004a3be4a1eecb037fe9f4b9e2ff"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a> (v_cell &amp;c, c_loop &amp;vl)</td></tr>
+<tr class="memitem:a5ed9e19316148b6af242887ccc8ccf60"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:a5ed9e19316148b6af242887ccc8ccf60"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html#a5ed9e19316148b6af242887ccc8ccf60">compute_cell</a> (v_cell &amp;c, int ijk, int q)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:a5319c976a873f9b10f80f9038f3460bd inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">container_periodic_base</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_, int <a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>)</td></tr>
+<tr class="memitem:a4eacfa1389d290c753df07df3c88e0a7 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">~container_periodic_base</a> ()</td></tr>
+<tr class="memitem:ac931a6c1cab4b2e910a0d07969b38785 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">print_all_particles</a> ()</td></tr>
+<tr class="memitem:a8462c3a3079586196e2bd9a764283173 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">region_count</a> ()</td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a812ed5572fcfece48b73517fcf913ec0 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a4f637efc5e56874aa9d68f44505e042c inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:aa0cd2a5bf51968b7af3334f4bbb8df8e inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a9e622a40386d97fcb015ff4ed792ff44 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">create_all_images</a> ()</td></tr>
+<tr class="memitem:a133f1be4a780183fd6bd7c008c65482d inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">check_compartmentalized</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:abbeb66edf9e36476cf47bee76ce8d9fc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_)</td></tr>
+<tr class="memitem:a630c635fd21cdd4e50bab118a4dadb13 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a9379963d63388ba4075c620ddfdd326f inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af476fca3dcc658abe2796aa9613f67bc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a04c955e90a9478e17fb2a0c5df15a498 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a04c955e90a9478e17fb2a0c5df15a498">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:acc445d2a964296dfca277e03fdc63ebd inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a> (double dx, double dy, double dz, double &amp;vol)</td></tr>
+<tr class="memitem:a15d4e5b0f906bba383b27d38497ec68d inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">images</a> (std::vector&lt; int &gt; &amp;vi, std::vector&lt; double &gt; &amp;vd)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:af171c7cc2dbd6cd5a33510edba2b9a24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af171c7cc2dbd6cd5a33510edba2b9a24"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voro_compute&lt; container_periodic &gt;</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:a407b759a2c2d6baec5183e18a726a4e6 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a></td></tr>
+<tr class="memitem:a9920ab99f51190399ceda8fb8689364f inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a></td></tr>
+<tr class="memitem:a012ffc20dd6379bcbd26ddc0c5cc8591 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a></td></tr>
+<tr class="memitem:afe16d21568925f78421122cdfb7b0cc0 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a></td></tr>
+<tr class="memitem:aa143ce1ecd9093f7c1889a0481b4cbb5 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a></td></tr>
+<tr class="memitem:ab1f18c51495f684dfc4d3372f9b311da inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a></td></tr>
+<tr class="memitem:ae1dfc876e56ec254053c7672b4454313 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a></td></tr>
+<tr class="memitem:a5abecf243780e08dd6cce6f5dd270c76 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">id</a></td></tr>
+<tr class="memitem:a301925d00d1d79f3df7b965d02e25608 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a></td></tr>
+<tr class="memitem:a8ae965b9dbb02a92e8dcb0d082d625a2 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a></td></tr>
+<tr class="memitem:a4ff4effc81e7b8908cda31f0c8c5ad70 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a></td></tr>
+<tr class="memitem:a90658551a7621bedfea141f052443fe1 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a></td></tr>
+<tr class="memitem:adeaa9eab58ba59f2fa3d7176ce617ff1 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a></td></tr>
+<tr class="memitem:a5213538964cf869c9751a27bccaf323e inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:aba3ac9d30b539fb0017799555199c2df inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a></td></tr>
+<tr class="memitem:a572a7b91539af3c0707b6caccbf15f35 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a></td></tr>
+<tr class="memitem:abaca9a0c853b9a53f164a2fbee783f83 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a></td></tr>
+<tr class="memitem:a000adf05e666f0fb4f57dbe8ca5b51db inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a></td></tr>
+<tr class="memitem:a434c1a7cd8ba84d4ad09845a1a0ddb5b inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a></td></tr>
+<tr class="memitem:a30bf0a4a6bff808301aa424683eb0481 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a></td></tr>
+<tr class="memitem:a0844f70778cc7b19024ed28a2c7ad02c inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:add72546a646600a12ccda1be8041213a inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:afcffffda4a00a48acb4243a74ed59c05 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:a8d0c8a32a6e31cdd8eecb335f5f68d22 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d0c8a32a6e31cdd8eecb335f5f68d22">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z, int &amp;ai, int &amp;aj, int &amp;ak)</td></tr>
+<tr class="memitem:a11b7428673e4791fe651036ecda0cd12 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:aa16ea029bbf80a1fdec3e6bba675e704 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">create_side_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a8d3545b219d91aee864b224829b6a644 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">create_vertical_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a72efe37cb7876149cac5f5ead579b353 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a> (int reg, int fijk, int l, double dx, double dy, double dz)</td></tr>
+<tr class="memitem:ac5b0b78cf8fe46f7e3c7124dbf4e0729 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1radius__mono"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1radius__mono')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1radius__mono.html">voro::radius_mono</a></td></tr>
+<tr class="memitem:ab17c87e1f434718bec74e93387480be9 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:afc6e56b490ddf97d9ee924d58e128422 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a685b7e6b79c943b4fd083857b229cc14 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a5eaff13d2c5212e72032d24a8c376114 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:ab1b663f24d371a45e19fb8866151bb7f inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ae390a53c70f0295592d02fc9dd0a9086 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a4aa8de703ecce74dc1625aea73149720 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aaadf553614ec9390a37349bc7d7a7557 inherit pro_methods_classvoro_1_1radius__mono"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> that has routines specifically for computing the regular Voronoi tessellation with no dependence on particle radii. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00212">212</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="ace68f8fc6073edb7dd41c30761f899fd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_periodic::container_periodic </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>byz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bx_)</td><td>The x coordinate of the first unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxy_,by_)</td><td>The x and y coordinates of the second unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxz_,byz_,bz_)</td><td>The x, y, and z coordinates of the third unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem_</td><td>the initial memory allocation for each block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00072">72</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a5394f52caa441d83c5aba6cf0e254116"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::clear </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Clears a container of particles. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00448">448</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b374a8ad39646bf22468e535b08a187"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::compute_all_cells </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all of the Voronoi cells in the container, but does nothing with the output. It is useful for measuring the pure computation time of the Voronoi algorithm, without any additional calculations such as volume evaluation or cell output. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00499">499</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af5cc004a3be4a1eecb037fe9f4b9e2ff"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell , class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for a particle currently being referenced by a loop class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00388">388</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5ed9e19316148b6af242887ccc8ccf60"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for given particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00400">400</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad90cf825d916a83570382f7cfae0461b"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00304">304</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adaf8256dd86c8c37618113cee774345f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00314">314</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f2b088d20b479b62a3dcdfa42d62526"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Compute all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00321">321</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adba11c6b4f9a20b1d5e0e16b94fe7dff"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00331">331</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae35a7e24438d3290c5dbb39f2474f3f4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00342">342</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a690edc7e6e23393d82faf320aac1b2d9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00349">349</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4b22d1868b96f049891a4f65e57497e8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00254">254</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a21a12c0ed7e67de10360cd3af8a5928f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00263">263</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b7b5b922f383d0c8d05e499a887a3b9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs and positions to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00269">269</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7086ad4c901827134b29a1bfc1b0bd3d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00278">278</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7279993d74b79966cfaeab40f8df5882"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00288">288</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af008d47998b895aeeb108361a642407d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00294">294</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5fa97cb936062142acc29e5870add6c6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic::find_voronoi_cell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>ry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>pid</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Takes a vector and finds the particle whose Voronoi cell contains that vector. This is equivalent to finding the particle which is nearest to the vector. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(rx,ry,rz)</td><td>the position of the particle whose Voronoi cell contains the vector. This may point to a particle in a periodic image of the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>the ID of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if a particle was found. If the container has no particles, then the search will not find a Voronoi cell and false is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00297">297</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad5073f573187aa00569d3562cdfa4f49"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00394">394</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ad39c3dcd9311183c671a78a5263c2c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>a reference to an ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00407">407</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac2b38542ffabd95cb7f5bc5dab162a5d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00229">229</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae586c7cf716fa84e91e9f801f5ac8a50"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. In addition, the order in which particles are read is saved into an ordering class. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00243">243</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adeb50c6841166e59a6be150d7adb4212"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00360">360</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abdae5633b67aa3cfcc7b04f9381e4fcd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00462">462</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adfe60b3e007ae8405ddca2e063957c3e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00479">479</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa9abf680a0dc08650ada11a2eff0be6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00093">93</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a354f707360a7e51a56de2eafc10cb43f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ai</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>aj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ak</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the particle is in, with (0,0,0) corresponding to the primary domain. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00120">120</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad3987d5710d793bdd604f12eeaa326f0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic::put </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container, also recording into which region it was stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class in which to record the region. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00149">149</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0f60071a597dec1065a5ab122cf72415"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::container_periodic::sum_cell_volumes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates all of the Voronoi cells and sums their volumes. In most cases without walls, the sum of the Voronoi cell volumes should equal the volume of the container to numerical precision. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The sum of all of the computed Voronoi volumes. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00520">520</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container__prd_8hh_source.html">container_prd.hh</a></li>
+<li><a class="el" href="container__prd_8cc_source.html">container_prd.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container__periodic.png b/lib/voro++/html/classvoro_1_1container__periodic.png
new file mode 100644
index 000000000..e6030630b
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container__periodic.png differ
diff --git a/lib/voro++/html/classvoro_1_1container__periodic__base.html b/lib/voro++/html/classvoro_1_1container__periodic__base.html
new file mode 100644
index 000000000..1229781c4
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container__periodic__base.html
@@ -0,0 +1,1443 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container_periodic_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container__periodic__base.html">container_periodic_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container_periodic_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for representing a particle system in a 3D periodic non-orthogonal periodic domain.
+ <a href="classvoro_1_1container__periodic__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container_periodic_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container__periodic__base.png" usemap="#voro::container_periodic_base_map" alt=""/>
+ <map id="voro::container_periodic_base_map" name="voro::container_periodic_base_map">
+<area href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain..." alt="voro::unitcell" shape="rect" coords="0,0,184,24"/>
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="194,0,378,24"/>
+<area href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations." alt="voro::container_periodic" shape="rect" coords="0,112,184,136"/>
+<area href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations." alt="voro::container_periodic_poly" shape="rect" coords="194,112,378,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a5319c976a873f9b10f80f9038f3460bd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">container_periodic_base</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_, int <a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>)</td></tr>
+<tr class="memitem:a4eacfa1389d290c753df07df3c88e0a7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">~container_periodic_base</a> ()</td></tr>
+<tr class="memitem:ac931a6c1cab4b2e910a0d07969b38785"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">print_all_particles</a> ()</td></tr>
+<tr class="memitem:a8462c3a3079586196e2bd9a764283173"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">region_count</a> ()</td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a812ed5572fcfece48b73517fcf913ec0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a4f637efc5e56874aa9d68f44505e042c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:aa0cd2a5bf51968b7af3334f4bbb8df8e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a9e622a40386d97fcb015ff4ed792ff44"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">create_all_images</a> ()</td></tr>
+<tr class="memitem:a133f1be4a780183fd6bd7c008c65482d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">check_compartmentalized</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:abbeb66edf9e36476cf47bee76ce8d9fc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_)</td></tr>
+<tr class="memitem:a630c635fd21cdd4e50bab118a4dadb13 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a9379963d63388ba4075c620ddfdd326f inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af476fca3dcc658abe2796aa9613f67bc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a04c955e90a9478e17fb2a0c5df15a498 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a04c955e90a9478e17fb2a0c5df15a498">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:acc445d2a964296dfca277e03fdc63ebd inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a> (double dx, double dy, double dz, double &amp;vol)</td></tr>
+<tr class="memitem:a15d4e5b0f906bba383b27d38497ec68d inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">images</a> (std::vector&lt; int &gt; &amp;vi, std::vector&lt; double &gt; &amp;vd)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a407b759a2c2d6baec5183e18a726a4e6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a></td></tr>
+<tr class="memitem:a9920ab99f51190399ceda8fb8689364f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a></td></tr>
+<tr class="memitem:a012ffc20dd6379bcbd26ddc0c5cc8591"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a></td></tr>
+<tr class="memitem:afe16d21568925f78421122cdfb7b0cc0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a></td></tr>
+<tr class="memitem:aa143ce1ecd9093f7c1889a0481b4cbb5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a></td></tr>
+<tr class="memitem:ab1f18c51495f684dfc4d3372f9b311da"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a></td></tr>
+<tr class="memitem:ae1dfc876e56ec254053c7672b4454313"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a></td></tr>
+<tr class="memitem:a5abecf243780e08dd6cce6f5dd270c76"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">id</a></td></tr>
+<tr class="memitem:a301925d00d1d79f3df7b965d02e25608"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a></td></tr>
+<tr class="memitem:a8ae965b9dbb02a92e8dcb0d082d625a2"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a></td></tr>
+<tr class="memitem:a4ff4effc81e7b8908cda31f0c8c5ad70"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a></td></tr>
+<tr class="memitem:a90658551a7621bedfea141f052443fe1"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a></td></tr>
+<tr class="memitem:adeaa9eab58ba59f2fa3d7176ce617ff1"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a></td></tr>
+<tr class="memitem:a5213538964cf869c9751a27bccaf323e"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:aba3ac9d30b539fb0017799555199c2df inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a></td></tr>
+<tr class="memitem:a572a7b91539af3c0707b6caccbf15f35 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a></td></tr>
+<tr class="memitem:abaca9a0c853b9a53f164a2fbee783f83 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a></td></tr>
+<tr class="memitem:a000adf05e666f0fb4f57dbe8ca5b51db inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a></td></tr>
+<tr class="memitem:a434c1a7cd8ba84d4ad09845a1a0ddb5b inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a></td></tr>
+<tr class="memitem:a30bf0a4a6bff808301aa424683eb0481 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a></td></tr>
+<tr class="memitem:a0844f70778cc7b19024ed28a2c7ad02c inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:add72546a646600a12ccda1be8041213a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:afcffffda4a00a48acb4243a74ed59c05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:a8d0c8a32a6e31cdd8eecb335f5f68d22"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d0c8a32a6e31cdd8eecb335f5f68d22">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z, int &amp;ai, int &amp;aj, int &amp;ak)</td></tr>
+<tr class="memitem:a11b7428673e4791fe651036ecda0cd12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:aa16ea029bbf80a1fdec3e6bba675e704"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">create_side_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a8d3545b219d91aee864b224829b6a644"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">create_vertical_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a72efe37cb7876149cac5f5ead579b353"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a> (int reg, int fijk, int l, double dx, double dy, double dz)</td></tr>
+<tr class="memitem:ac5b0b78cf8fe46f7e3c7124dbf4e0729"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_static_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Static Public Attributes inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:abc825bfa4bdb4b85d50058f016457445 inherit pub_static_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">wl</a> [wl_seq_length *wl_hgridcu]</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:a3f7cebe966d72935971c508fc64902f0 inherit pro_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a></td></tr>
+<tr class="memitem:a3ac0618230ffa0a382469530f97844e6 inherit pro_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a particle system in a three-dimensional non-orthogonal periodic domain. The domain is defined by three periodicity vectors (bx,0,0), (bxy,by,0), and (bxz,byz,bz) that represent a parallelepiped. Internally, the class stores particles in the box 0&lt;x&lt;bx, 0&lt;y&lt;by, 0&lt;z&lt;bz, and constructs periodic images of particles that displaced by the three periodicity vectors when they are necessary for the computation. The internal memory structure for this class is significantly different from the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class in order to handle the dynamic construction of these periodic images.</p>
+<p>The class is derived from the unitcell class, which encapsulates information about the domain geometry, and the <a class="el" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a> class, which encapsulates information about the underlying computational grid. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00043">43</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a5319c976a873f9b10f80f9038f3460bd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_periodic_base::container_periodic_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>byz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ps_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction, and setting whether each direction is periodic or not. It divides the container into a rectangular grid of blocks, and allocates memory for each of these for storing particle positions and IDs. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bx_)</td><td>The x coordinate of the first unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxy_,by_)</td><td>The x and y coordinates of the second unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxz_,byz_,bz_)</td><td>The x, y, and z coordinates of the third unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem_</td><td>the initial memory allocation for each block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ps_</td><td>the number of floating point entries to store for each particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00029">29</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4eacfa1389d290c753df07df3c88e0a7"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_periodic_base::~container_periodic_base </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The container destructor frees the dynamically allocated memory. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00052">52</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="add72546a646600a12ccda1be8041213a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::add_particle_memory </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Increase memory for a particular region. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">i</td><td>the index of the region to reallocate. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00357">357</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a133f1be4a780183fd6bd7c008c65482d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::check_compartmentalized </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Checks that the particles within each block lie within that block's bounds. This is useful for diagnosing problems with periodic image computation. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00550">550</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e622a40386d97fcb015ff4ed792ff44"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::create_all_images </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine creates all periodic images of the particles. It is meant for diagnostic purposes only, since usually periodic images are dynamically created in when they are referenced. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00543">543</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a11b7428673e4791fe651036ecda0cd12"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::create_periodic_image </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>di</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dk</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Creates particles within an image block by copying them from the primary domain and shifting them. If the given block is aligned with the primary domain in the z-direction, the routine calls the simpler create_side_image routine where the image block may comprise of particles from up to two primary blocks. Otherwise is calls the more complex create_vertical_image where the image block may comprise of particles from up to four primary blocks. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(di,dj,dk)</td><td>the coordinates of the image block to create. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00193">193</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa16ea029bbf80a1fdec3e6bba675e704"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::create_side_image </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>di</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dk</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Creates particles within an image block that is aligned with the primary domain in the z axis. In this case, the image block may be comprised of particles from two primary blocks. The routine considers these two primary blocks, and adds the needed particles to the image. The remaining particles from the primary blocks are also filled into the neighboring images. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(di,dj,dk)</td><td>the index of the block to consider. The z index must satisfy ez&lt;=dk&lt;wz. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00575">575</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d3545b219d91aee864b224829b6a644"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::create_vertical_image </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>di</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dk</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Creates particles within an image block that is not aligned with the primary domain in the z axis. In this case, the image block may be comprised of particles from four primary blocks. The routine considers these four primary blocks, and adds the needed particles to the image. The remaining particles from the primary blocks are also filled into the neighboring images. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(di,dj,dk)</td><td>the index of the block to consider. The z index must satisfy dk&lt;ez or dk&gt;=wz. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00627">627</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4f637efc5e56874aa9d68f44505e042c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::frac_pos </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>fz</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns the position of a particle currently being computed relative to the computational block that it is within. It is used to select the optimal worklist entry to use. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(fx,fy,fz)</td><td>the position relative to the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00152">152</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a812ed5572fcfece48b73517fcf913ec0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::initialize_search </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>j</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>k</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes parameters for a find_voronoi_cell call within the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> template. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the test block in the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the index of the test block </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell routine (but not needed in this instance.) </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00142">142</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae540389dc8845562c5f8cd45cec71edd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic_base::initialize_voronoicell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>j</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>k</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes the Voronoi cell prior to a compute_cell operation for a specific particle being carried out by a <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> class. The cell is initialized to be the pre-computed unit Voronoi cell based on planes formed by periodic images of the particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>a reference to a voronoicell object. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within its block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the block in the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">disp</td><td>a block displacement used internally by the compute_cell routine. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cuts applied by walls completely removed the cell, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00124">124</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac931a6c1cab4b2e910a0d07969b38785"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::print_all_particles </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Prints all particles in the container, including those that have been constructed in image blocks. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00099">99</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a72efe37cb7876149cac5f5ead579b353"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::put_image </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>reg</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>fijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>l</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dz</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Copies a particle position from the primary domain into an image block. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">reg</td><td>the block index within the primary domain that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fijk</td><td>the index of the image block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">l</td><td>the index of the particle entry within the primary block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(dx,dy,dz)</td><td>the displacement vector to add to the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00758">758</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afcffffda4a00a48acb4243a74ed59c05"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::put_locate_block </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Takes a particle position vector and computes the region index into which it should be stored. If the container is periodic, then the routine also maps the particle position to ensure it is in the primary domain. If the container is not periodic, the routine bails out. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the region index. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00183">183</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d0c8a32a6e31cdd8eecb335f5f68d22"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::put_locate_block </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ai</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>aj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ak</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Takes a particle position vector and computes the region index into which it should be stored. If the container is periodic, then the routine also maps the particle position to ensure it is in the primary domain. If the container is not periodic, the routine bails out. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the region index. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the particle is in, with (0,0,0) corresponding to the primary domain. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00223">223</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8462c3a3079586196e2bd9a764283173"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::region_count </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the a list of all the container regions along with the number of particles stored within each. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00441">441</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa0cd2a5bf51968b7af3334f4bbb8df8e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::region_index </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ei</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ej</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ek</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>qz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>disp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Calculates the index of block in the container structure corresponding to given coordinates. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the original block in the current computation, relative to the container coordinate system. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ei,ej,ek)</td><td>the displacement of the current block from the original block. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(qx,qy,qz)</td><td>the periodic displacement that must be added to the particles within the computed block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell and compute_cell routines (but not needed in this instance.) </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The block index. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00171">171</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac5b0b78cf8fe46f7e3c7124dbf4e0729"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_base::remap </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ai</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>aj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ak</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ijk</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Takes a position vector and remaps it into the primary domain. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the vector is in, with (0,0,0) corresponding to the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ci,cj,ck)</td><td>the index of the block that the position vector is within, once it has been remapped. </td></tr>
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the position vector to consider, which is remapped into the primary domain during the routine. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ijk</td><td>the block index that the vector is within. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00260">260</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a8ae965b9dbb02a92e8dcb0d082d625a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::container_periodic_base::co</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the number of particles within each computational box of the container. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00074">74</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a407b759a2c2d6baec5183e18a726a4e6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::ey</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The lower y index (inclusive) of the primary domain within the block structure. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00047">47</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9920ab99f51190399ceda8fb8689364f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::ez</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The lower z index (inclusive) of the primary domain within the block structure. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00050">50</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5abecf243780e08dd6cce6f5dd270c76"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::container_periodic_base::id</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the numerical IDs of each particle in each computational box. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00067">67</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a90658551a7621bedfea141f052443fe1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">char* voro::container_periodic_base::img</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An array holding information about periodic image construction at a given location. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00083">83</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adeaa9eab58ba59f2fa3d7176ce617ff1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::container_periodic_base::init_mem</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The initial amount of memory to allocate for particles for each block. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00086">86</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4ff4effc81e7b8908cda31f0c8c5ad70"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::container_periodic_base::mem</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the maximum amount of particle memory for each computational box of the container. If the number of particles in a particular box ever approaches this limit, more is allocated using the <a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory()</a> function. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00080">80</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae1dfc876e56ec254053c7672b4454313"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::oxyz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The total number of blocks. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00064">64</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa143ce1ecd9093f7c1889a0481b4cbb5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::oy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The total size of the block structure (including images) in the y direction. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00059">59</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1f18c51495f684dfc4d3372f9b311da"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::oz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The total size of the block structure (including images) in the z direction. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00062">62</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a301925d00d1d79f3df7b965d02e25608"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::container_periodic_base::p</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A two dimensional array holding particle positions. For the derived <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class, this also holds particle radii. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00071">71</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5213538964cf869c9751a27bccaf323e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::container_periodic_base::ps</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The amount of memory in the array structure for each particle. This is set to 3 when the basic class is initialized, so that the array holds (x,y,z) positions. If the container class is initialized as part of the derived class <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a>, then this is set to 4, to also hold the particle radii. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00093">93</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a012ffc20dd6379bcbd26ddc0c5cc8591"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::wy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The upper y index (exclusive) of the primary domain within the block structure. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00053">53</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afe16d21568925f78421122cdfb7b0cc0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::container_periodic_base::wz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The upper z index (exclusive) of the primary domain within the block structure. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00056">56</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container__prd_8hh_source.html">container_prd.hh</a></li>
+<li><a class="el" href="container__prd_8cc_source.html">container_prd.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container__periodic__base.png b/lib/voro++/html/classvoro_1_1container__periodic__base.png
new file mode 100644
index 000000000..6c68a4404
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container__periodic__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1container__periodic__poly.html b/lib/voro++/html/classvoro_1_1container__periodic__poly.html
new file mode 100644
index 000000000..43d73a2cc
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container__periodic__poly.html
@@ -0,0 +1,1439 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container_periodic_poly Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container__periodic__poly.html">container_periodic_poly</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container_periodic_poly Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing radical Voronoi tessellations.
+ <a href="classvoro_1_1container__periodic__poly.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container_periodic_poly:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container__periodic__poly.png" usemap="#voro::container_periodic_poly_map" alt=""/>
+ <map id="voro::container_periodic_poly_map" name="voro::container_periodic_poly_map">
+<area href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain..." alt="voro::container_periodic_base" shape="rect" coords="97,56,281,80"/>
+<area href="classvoro_1_1radius__poly.html" title="Class containing all of the routines that are specific to computing the radical Voronoi tessellation..." alt="voro::radius_poly" shape="rect" coords="291,56,475,80"/>
+<area href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain..." alt="voro::unitcell" shape="rect" coords="0,0,184,24"/>
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="194,0,378,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:adc3616c10fe7b40795951b5cd8dc8c74"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74">container_periodic_poly</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_)</td></tr>
+<tr class="memitem:a4dd33f8d67680a65864245a90ac883a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2">clear</a> ()</td></tr>
+<tr class="memitem:a1cbdd9c92900e08173e1ea3a6e2e6df4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a> (int n, double x, double y, double z, double r)</td></tr>
+<tr class="memitem:a4bc65fd86de5d00d3de49553aec76022"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a4bc65fd86de5d00d3de49553aec76022">put</a> (int n, double x, double y, double z, double r, int &amp;ai, int &amp;aj, int &amp;ak)</td></tr>
+<tr class="memitem:a2b0a71bfb4fb576df45d8a4bcbc888cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a2b0a71bfb4fb576df45d8a4bcbc888cd">put</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, int n, double x, double y, double z, double r)</td></tr>
+<tr class="memitem:afbd03ab4c06af15913d2641be39513c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:adaee2751c053589ba3eb1e5419e7d405"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#adaee2751c053589ba3eb1e5419e7d405">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, FILE *fp=stdin)</td></tr>
+<tr class="memitem:a2052ab1ed4c33c961fbc26a86c66a494"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a2052ab1ed4c33c961fbc26a86c66a494">import</a> (const char *filename)</td></tr>
+<tr class="memitem:a346b67c09850a78e8eb9144029fe3087"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a346b67c09850a78e8eb9144029fe3087">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, const char *filename)</td></tr>
+<tr class="memitem:ab19ca1d361472a1c7dc35023fd20297c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c">compute_all_cells</a> ()</td></tr>
+<tr class="memitem:ac3a665f34e5aee05a6d36abb5289f796"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796">sum_cell_volumes</a> ()</td></tr>
+<tr class="memitem:a3760b525f8c9dd5b360e6e4a80294d9a"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a3760b525f8c9dd5b360e6e4a80294d9a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">draw_particles</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:afa2993c7ef337244c73b073a3f546df7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#afa2993c7ef337244c73b073a3f546df7">draw_particles</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a7bfb4757df738760c59d4f8905a92c17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a7bfb4757df738760c59d4f8905a92c17">draw_particles</a> (const char *filename)</td></tr>
+<tr class="memitem:aa9c1c012d0826c2fd28682ded2dd90f1"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:aa9c1c012d0826c2fd28682ded2dd90f1"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1">draw_particles_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a5bf55c7e6ace75b00aa245636afb82b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a5bf55c7e6ace75b00aa245636afb82b7">draw_particles_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:acd3e09b90187ab0ebb521d16d914b9a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#acd3e09b90187ab0ebb521d16d914b9a0">draw_particles_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:aa4561672ab91f1064748dd18d340335c"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:aa4561672ab91f1064748dd18d340335c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">draw_cells_gnuplot</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:aed830c459b6f9b1a8ef130d0641c3ead"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#aed830c459b6f9b1a8ef130d0641c3ead">draw_cells_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a6bfd38989da6891d35111ad61a5b3634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a6bfd38989da6891d35111ad61a5b3634">draw_cells_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a78c92412a5127918249bc9fbe14e6b52"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a78c92412a5127918249bc9fbe14e6b52"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">draw_cells_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a23b1f79f3cc8cee7c4b4d9470a0ee6f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a23b1f79f3cc8cee7c4b4d9470a0ee6f0">draw_cells_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a7f64711de2a4ce09c1cc2c0e5cbdf9f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a7f64711de2a4ce09c1cc2c0e5cbdf9f5">draw_cells_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a7f4fc079c9386a4440417a38866acfa5"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a7f4fc079c9386a4440417a38866acfa5"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a> (c_loop &amp;vl, const char *format, FILE *fp)</td></tr>
+<tr class="memitem:a399d6b409b62005a0da290a89c4fdadb"><td class="memTemplParams" colspan="2">template&lt;class v_cell , class c_loop &gt; </td></tr>
+<tr class="memitem:a399d6b409b62005a0da290a89c4fdadb"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a> (v_cell &amp;c, c_loop &amp;vl)</td></tr>
+<tr class="memitem:abd0fd5314a1d1e50721d2320171064e8"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:abd0fd5314a1d1e50721d2320171064e8"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#abd0fd5314a1d1e50721d2320171064e8">compute_cell</a> (v_cell &amp;c, int ijk, int q)</td></tr>
+<tr class="memitem:ad4225ecfa4e188a773344ffa1f3127a0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#ad4225ecfa4e188a773344ffa1f3127a0">print_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a8f5e68c2068f0c73187acc9ad654335c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#a8f5e68c2068f0c73187acc9ad654335c">print_custom</a> (const char *format, const char *filename)</td></tr>
+<tr class="memitem:ac3536b067b34a16efada8286ebc50586"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586">find_voronoi_cell</a> (double x, double y, double z, double &amp;rx, double &amp;ry, double &amp;rz, int &amp;pid)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:a5319c976a873f9b10f80f9038f3460bd inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">container_periodic_base</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_, int <a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>)</td></tr>
+<tr class="memitem:a4eacfa1389d290c753df07df3c88e0a7 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">~container_periodic_base</a> ()</td></tr>
+<tr class="memitem:ac931a6c1cab4b2e910a0d07969b38785 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">print_all_particles</a> ()</td></tr>
+<tr class="memitem:a8462c3a3079586196e2bd9a764283173 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">region_count</a> ()</td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ae540389dc8845562c5f8cd45cec71edd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a812ed5572fcfece48b73517fcf913ec0 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a4f637efc5e56874aa9d68f44505e042c inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:aa0cd2a5bf51968b7af3334f4bbb8df8e inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a9e622a40386d97fcb015ff4ed792ff44 inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">create_all_images</a> ()</td></tr>
+<tr class="memitem:a133f1be4a780183fd6bd7c008c65482d inherit pub_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">check_compartmentalized</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:abbeb66edf9e36476cf47bee76ce8d9fc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_)</td></tr>
+<tr class="memitem:a630c635fd21cdd4e50bab118a4dadb13 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a9379963d63388ba4075c620ddfdd326f inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af476fca3dcc658abe2796aa9613f67bc inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a04c955e90a9478e17fb2a0c5df15a498 inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a04c955e90a9478e17fb2a0c5df15a498">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:acc445d2a964296dfca277e03fdc63ebd inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a> (double dx, double dy, double dz, double &amp;vol)</td></tr>
+<tr class="memitem:a15d4e5b0f906bba383b27d38497ec68d inherit pub_methods_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">images</a> (std::vector&lt; int &gt; &amp;vi, std::vector&lt; double &gt; &amp;vd)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:a54ca6935b6fe7eb28e924e5c2b0a2abd inherit pub_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">radius_poly</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a8aae5c427c7257f1f422cbffd45f38a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8aae5c427c7257f1f422cbffd45f38a0"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voro_compute&lt; container_periodic_poly &gt;</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:a407b759a2c2d6baec5183e18a726a4e6 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a></td></tr>
+<tr class="memitem:a9920ab99f51190399ceda8fb8689364f inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a></td></tr>
+<tr class="memitem:a012ffc20dd6379bcbd26ddc0c5cc8591 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a></td></tr>
+<tr class="memitem:afe16d21568925f78421122cdfb7b0cc0 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a></td></tr>
+<tr class="memitem:aa143ce1ecd9093f7c1889a0481b4cbb5 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a></td></tr>
+<tr class="memitem:ab1f18c51495f684dfc4d3372f9b311da inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a></td></tr>
+<tr class="memitem:ae1dfc876e56ec254053c7672b4454313 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a></td></tr>
+<tr class="memitem:a5abecf243780e08dd6cce6f5dd270c76 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">id</a></td></tr>
+<tr class="memitem:a301925d00d1d79f3df7b965d02e25608 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a></td></tr>
+<tr class="memitem:a8ae965b9dbb02a92e8dcb0d082d625a2 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a></td></tr>
+<tr class="memitem:a4ff4effc81e7b8908cda31f0c8c5ad70 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a></td></tr>
+<tr class="memitem:a90658551a7621bedfea141f052443fe1 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a></td></tr>
+<tr class="memitem:adeaa9eab58ba59f2fa3d7176ce617ff1 inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a></td></tr>
+<tr class="memitem:a5213538964cf869c9751a27bccaf323e inherit pub_attribs_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1unitcell"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1unitcell')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memitem:aba3ac9d30b539fb0017799555199c2df inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a></td></tr>
+<tr class="memitem:a572a7b91539af3c0707b6caccbf15f35 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a></td></tr>
+<tr class="memitem:abaca9a0c853b9a53f164a2fbee783f83 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a></td></tr>
+<tr class="memitem:a000adf05e666f0fb4f57dbe8ca5b51db inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a></td></tr>
+<tr class="memitem:a434c1a7cd8ba84d4ad09845a1a0ddb5b inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a></td></tr>
+<tr class="memitem:a30bf0a4a6bff808301aa424683eb0481 inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a></td></tr>
+<tr class="memitem:a0844f70778cc7b19024ed28a2c7ad02c inherit pub_attribs_classvoro_1_1unitcell"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:a9e40455c336c27b089c5a78ca94626d8 inherit pub_attribs_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a></td></tr>
+<tr class="memitem:a9faed3ac8ef95c646e376a7fe915fb0b inherit pub_attribs_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1container__periodic__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1container__periodic__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memitem:add72546a646600a12ccda1be8041213a inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:afcffffda4a00a48acb4243a74ed59c05 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:a8d0c8a32a6e31cdd8eecb335f5f68d22 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d0c8a32a6e31cdd8eecb335f5f68d22">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z, int &amp;ai, int &amp;aj, int &amp;ak)</td></tr>
+<tr class="memitem:a11b7428673e4791fe651036ecda0cd12 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:aa16ea029bbf80a1fdec3e6bba675e704 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">create_side_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a8d3545b219d91aee864b224829b6a644 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">create_vertical_image</a> (int di, int dj, int dk)</td></tr>
+<tr class="memitem:a72efe37cb7876149cac5f5ead579b353 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a> (int reg, int fijk, int l, double dx, double dy, double dz)</td></tr>
+<tr class="memitem:ac5b0b78cf8fe46f7e3c7124dbf4e0729 inherit pro_methods_classvoro_1_1container__periodic__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:aa8dcd117e31007933a37454ef9ccb4d9 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:a19b9bc7dd97869e6ac440662912f4911 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a5e74adfce3978911c901f0eb5dbb2c90 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a33cecd36b74cc748fb91b5c9f60f08e9 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:a86eda87db1ab281a251e43236bbc26c1 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ab9a81c60cf27739db39faa28591d5650 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a8357f4c9d6e20d739029dcb76705e316 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aba9f2a8086de090f84f714510e6914fb inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> that has routines specifically for computing the radical Voronoi tessellation that depends on the particle radii. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00415">415</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="adc3616c10fe7b40795951b5cd8dc8c74"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_periodic_poly::container_periodic_poly </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>byz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bx_)</td><td>The x coordinate of the first unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxy_,by_)</td><td>The x and y coordinates of the second unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxz_,byz_,bz_)</td><td>The x, y, and z coordinates of the third unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem_</td><td>the initial memory allocation for each block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00085">85</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a4dd33f8d67680a65864245a90ac883a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::clear </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Clears a container of particles, also clearing resetting the maximum radius to zero. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00454">454</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab19ca1d361472a1c7dc35023fd20297c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::compute_all_cells </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all of the Voronoi cells in the container, but does nothing with the output. It is useful for measuring the pure computation time of the Voronoi algorithm, without any additional calculations such as volume evaluation or cell output. </p>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00510">510</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a399d6b409b62005a0da290a89c4fdadb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell , class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic_poly::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for a particle currently being referenced by a loop class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00590">590</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abd0fd5314a1d1e50721d2320171064e8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic_poly::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for given particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00602">602</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa4561672ab91f1064748dd18d340335c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00509">509</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aed830c459b6f9b1a8ef130d0641c3ead"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Compute all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00519">519</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6bfd38989da6891d35111ad61a5b3634"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Compute all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00526">526</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a78c92412a5127918249bc9fbe14e6b52"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00536">536</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a23b1f79f3cc8cee7c4b4d9470a0ee6f0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00547">547</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7f64711de2a4ce09c1cc2c0e5cbdf9f5"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00554">554</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3760b525f8c9dd5b360e6e4a80294d9a"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00457">457</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afa2993c7ef337244c73b073a3f546df7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00467">467</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7bfb4757df738760c59d4f8905a92c17"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00474">474</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa9c1c012d0826c2fd28682ded2dd90f1"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00483">483</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5bf55c7e6ace75b00aa245636afb82b7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all the particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00493">493</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acd3e09b90187ab0ebb521d16d914b9a0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all the particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00499">499</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac3536b067b34a16efada8286ebc50586"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_periodic_poly::find_voronoi_cell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>ry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>pid</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Takes a vector and finds the particle whose Voronoi cell contains that vector. Additional wall classes are not considered by this routine. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(rx,ry,rz)</td><td>the position of the particle whose Voronoi cell contains the vector. If the container is periodic, this may point to a particle in a periodic image of the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>the ID of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if a particle was found. If the container has no particles, then the search will not find a Voronoi cell and false is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00331">331</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afbd03ab4c06af15913d2641be39513c9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream into the container. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00419">419</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adaee2751c053589ba3eb1e5419e7d405"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>a reference to an ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00432">432</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2052ab1ed4c33c961fbc26a86c66a494"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00432">432</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a346b67c09850a78e8eb9144029fe3087"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. In addition, the order in which particles are read is saved into an ordering class. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00446">446</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7f4fc079c9386a4440417a38866acfa5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8hh_source.html#l00565">565</a> of file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad4225ecfa4e188a773344ffa1f3127a0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00471">471</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8f5e68c2068f0c73187acc9ad654335c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00489">489</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1cbdd9c92900e08173e1ea3a6e2e6df4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00105">105</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4bc65fd86de5d00d3de49553aec76022"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ai</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>aj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ak</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the particle is in, with (0,0,0) corresponding to the primary domain. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00135">135</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b0a71bfb4fb576df45d8a4bcbc888cd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_periodic_poly::put </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container, also recording into which region it was stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class in which to record the region. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00164">164</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac3a665f34e5aee05a6d36abb5289f796"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::container_periodic_poly::sum_cell_volumes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates all of the Voronoi cells and sums their volumes. In most cases without walls, the sum of the Voronoi cell volumes should equal the volume of the container to numerical precision. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The sum of all of the computed Voronoi volumes. </dd></dl>
+
+<p>Definition at line <a class="el" href="container__prd_8cc_source.html#l00532">532</a> of file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container__prd_8hh_source.html">container_prd.hh</a></li>
+<li><a class="el" href="container__prd_8cc_source.html">container_prd.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container__periodic__poly.png b/lib/voro++/html/classvoro_1_1container__periodic__poly.png
new file mode 100644
index 000000000..28addbfe2
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container__periodic__poly.png differ
diff --git a/lib/voro++/html/classvoro_1_1container__poly.html b/lib/voro++/html/classvoro_1_1container__poly.html
new file mode 100644
index 000000000..5fb402e8b
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1container__poly.html
@@ -0,0 +1,1381 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::container_poly Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1container__poly.html">container_poly</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::container_poly Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing radical Voronoi tessellations.
+ <a href="classvoro_1_1container__poly.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container_8hh_source.html">container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::container_poly:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1container__poly.png" usemap="#voro::container_poly_map" alt=""/>
+ <map id="voro::container_poly_map" name="voro::container_poly_map">
+<area href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box." alt="voro::container_base" shape="rect" coords="70,56,201,80"/>
+<area href="classvoro_1_1radius__poly.html" title="Class containing all of the routines that are specific to computing the radical Voronoi tessellation..." alt="voro::radius_poly" shape="rect" coords="211,56,342,80"/>
+<area href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes." alt="voro::voro_base" shape="rect" coords="0,0,131,24"/>
+<area href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls." alt="voro::wall_list" shape="rect" coords="141,0,272,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a1d782b31e7d6f5b2040ee2d25753cb53"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53">container_poly</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, int nx_, int ny_, int nz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int init_mem)</td></tr>
+<tr class="memitem:a0012f95f5666a347e6585efc76b63b83"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83">clear</a> ()</td></tr>
+<tr class="memitem:a61689312fb6f8ee36f1fbb0fe00e4fe3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a> (int n, double x, double y, double z, double r)</td></tr>
+<tr class="memitem:aa0c81a2be68ed2a8b799ad7682c9b853"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#aa0c81a2be68ed2a8b799ad7682c9b853">put</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, int n, double x, double y, double z, double r)</td></tr>
+<tr class="memitem:a65ddee05ee3b3677c7a48f67ce64a1d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:aecedca4f256e9382d54efb805877c68f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#aecedca4f256e9382d54efb805877c68f">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, FILE *fp=stdin)</td></tr>
+<tr class="memitem:a0b8b64b39bab75e3cfc9282a23706bab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a0b8b64b39bab75e3cfc9282a23706bab">import</a> (const char *filename)</td></tr>
+<tr class="memitem:af897ea09b80064d4b492862884ba316c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#af897ea09b80064d4b492862884ba316c">import</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, const char *filename)</td></tr>
+<tr class="memitem:a40a4b63b1ac5980b92ca526ac2183489"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489">compute_all_cells</a> ()</td></tr>
+<tr class="memitem:a081af78a1c9c863393fd07a548a84a2e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e">sum_cell_volumes</a> ()</td></tr>
+<tr class="memitem:af67af614b2b3ad084dfab83470fa8616"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:af67af614b2b3ad084dfab83470fa8616"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">draw_particles</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a25b1e68cf0ad4f60c7723afc9ad97bb2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a25b1e68cf0ad4f60c7723afc9ad97bb2">draw_particles</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a8a20a1a70dd32c3323307be038bebb1d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a8a20a1a70dd32c3323307be038bebb1d">draw_particles</a> (const char *filename)</td></tr>
+<tr class="memitem:a56313161f9104ef0356238569317a34c"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a56313161f9104ef0356238569317a34c"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">draw_particles_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a477ecfe9e0943e71a2e389d7cc85ab20"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a477ecfe9e0943e71a2e389d7cc85ab20">draw_particles_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a866cce7547f14634e432d510050962ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a866cce7547f14634e432d510050962ae">draw_particles_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:ab1efabec22bdbff42302d94620a71937"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:ab1efabec22bdbff42302d94620a71937"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">draw_cells_gnuplot</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:ac0700e38ce6ed742dcb52ab6523b1956"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ac0700e38ce6ed742dcb52ab6523b1956">draw_cells_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ad360a8ec2c8d59b69b65f34fdba92887"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ad360a8ec2c8d59b69b65f34fdba92887">draw_cells_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:aaaddce8c16e4df211db3cbe9f9ca83de"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:aaaddce8c16e4df211db3cbe9f9ca83de"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">draw_cells_pov</a> (c_loop &amp;vl, FILE *fp)</td></tr>
+<tr class="memitem:a8d56858927fc6686696e4338f9ac784d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a8d56858927fc6686696e4338f9ac784d">draw_cells_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ae949e1e7d3207212db3c99677e4906cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ae949e1e7d3207212db3c99677e4906cd">draw_cells_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a60907bce91cfacfa054a69872fb10ee3"><td class="memTemplParams" colspan="2">template&lt;class c_loop &gt; </td></tr>
+<tr class="memitem:a60907bce91cfacfa054a69872fb10ee3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a> (c_loop &amp;vl, const char *format, FILE *fp)</td></tr>
+<tr class="memitem:ae01c610b46aad0aae4998697b69a4b1c"><td class="memTemplParams" colspan="2">template&lt;class v_cell , class c_loop &gt; </td></tr>
+<tr class="memitem:ae01c610b46aad0aae4998697b69a4b1c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a> (v_cell &amp;c, c_loop &amp;vl)</td></tr>
+<tr class="memitem:a12b9eeac5c7f409e1d75f77876c7bd3d"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:a12b9eeac5c7f409e1d75f77876c7bd3d"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#a12b9eeac5c7f409e1d75f77876c7bd3d">compute_cell</a> (v_cell &amp;c, int ijk, int q)</td></tr>
+<tr class="memitem:adf5dcfbba15c482285c23e0ee54155d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#adf5dcfbba15c482285c23e0ee54155d4">print_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab2eb9f5480fb9560b71ef1b1ed29b592"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#ab2eb9f5480fb9560b71ef1b1ed29b592">print_custom</a> (const char *format, const char *filename)</td></tr>
+<tr class="memitem:aa02b6b6e5605b28fc8ecf0cd0a757903"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903">find_voronoi_cell</a> (double x, double y, double z, double &amp;rx, double &amp;ry, double &amp;rz, int &amp;pid)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:a2f7bde3ec593d9f4b8c9ceb67b56f62f inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, int nx_, int ny_, int nz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int init_mem, int ps_)</td></tr>
+<tr class="memitem:a624a890b979cc8f989778e0b627bad44 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">~container_base</a> ()</td></tr>
+<tr class="memitem:a290c21ba694d02231d49d14881dfcfd1 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ac1205c5c189d3dd72057c4cf9fa8891d inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">region_count</a> ()</td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5 inherit pub_methods_classvoro_1_1container__base"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:af6d18399db1c92816296bc70af8440b5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">initialize_voronoicell</a> (v_cell &amp;c, int ijk, int q, int ci, int cj, int ck, int &amp;i, int &amp;j, int &amp;k, double &amp;x, double &amp;y, double &amp;z, int &amp;disp)</td></tr>
+<tr class="memitem:a30dbb059792c199f2526c13990cd8daf inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">initialize_search</a> (int ci, int cj, int ck, int ijk, int &amp;i, int &amp;j, int &amp;k, int &amp;disp)</td></tr>
+<tr class="memitem:a08db44d4d57b8b19f1e101cc40c82e85 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">frac_pos</a> (double x, double y, double z, double ci, double cj, double ck, double &amp;fx, double &amp;fy, double &amp;fz)</td></tr>
+<tr class="memitem:a76b645960fba43620e096b7bdf178603 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &amp;qx, double &amp;qy, double &amp;qz, int &amp;disp)</td></tr>
+<tr class="memitem:a67dbf4a79fac8527ccee72d881c6654d inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a019db0a854b71ac57886155422bb53d6 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a019db0a854b71ac57886155422bb53d6">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a6ff9d18058ab53c955cd44dea733e4fd inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aa1c0c293bae52c879eb42035a031d8e8 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa1c0c293bae52c879eb42035a031d8e8">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:ad9fe437b46f1e58908c393955e6d4217 inherit pub_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">total_particles</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88 inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:a248fb5d008de9a5a97d4720d47794698 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list</a> ()</td></tr>
+<tr class="memitem:a8b0402f2bfad31b7d0204d4120cd60be inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">~wall_list</a> ()</td></tr>
+<tr class="memitem:aca50327f246b61f6aeef5337327d957d inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> *w)</td></tr>
+<tr class="memitem:a8e3a5253fa0392bf0f8b7a84eb1b61d4 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> &amp;w)</td></tr>
+<tr class="memitem:af872ae39e2bb8fe1e6947644a84cb1a8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#af872ae39e2bb8fe1e6947644a84cb1a8">add_wall</a> (<a class="el" href="classvoro_1_1wall__list.html">wall_list</a> &amp;wl)</td></tr>
+<tr class="memitem:ae6d83d60ffa99fb6712445616883d1c8 inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019 inherit pub_methods_classvoro_1_1wall__list"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a> (c_class &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a49c42b672f2eb7535c3b3564bb6cf51f inherit pub_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">deallocate</a> ()</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:a54ca6935b6fe7eb28e924e5c2b0a2abd inherit pub_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">radius_poly</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:ac8fa1655406b9024de42e415c15f6d2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8fa1655406b9024de42e415c15f6d2e"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voro_compute&lt; container_poly &gt;</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:ab33ca2a8d7282d65a731d854d27906f2 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a></td></tr>
+<tr class="memitem:afd9b8e6b3c6bb4376d1f755ef7ac789d inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a></td></tr>
+<tr class="memitem:ab64ef06e1e257e83a33422a044ef9858 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a></td></tr>
+<tr class="memitem:ae769a416d7a5520eddf026cec6f7fda6 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a></td></tr>
+<tr class="memitem:a78d795a863e401a5fc565c7dec31b6a6 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a></td></tr>
+<tr class="memitem:a27de2088113bb64a4b045bea7c590be3 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a></td></tr>
+<tr class="memitem:a6734b7147a71bb7e2a4a313d4153bebf inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a></td></tr>
+<tr class="memitem:a05a979d24c3d0fefe9f5cd96174863f8 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a></td></tr>
+<tr class="memitem:acd3bdff20b8b11a3e606e5581ebf3c06 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a></td></tr>
+<tr class="memitem:a50de485630d0b693fb418be1726826a7 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">id</a></td></tr>
+<tr class="memitem:a0798a7623a37b1a9da86f225119606e5 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a></td></tr>
+<tr class="memitem:a987e612ffd2c459adf8c1784d308ef51 inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a></td></tr>
+<tr class="memitem:a633edc1737859a7dde8ca2e466e12cfe inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a></td></tr>
+<tr class="memitem:a235781536a17eab85b547787ff3618ba inherit pub_attribs_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775 inherit pub_attribs_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:abfc54768de5b596237d7eef5f589fe90 inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a></td></tr>
+<tr class="memitem:abb48a3e29042c51cf48fa6a6b6c2dc1d inherit pub_attribs_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:a9e40455c336c27b089c5a78ca94626d8 inherit pub_attribs_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a></td></tr>
+<tr class="memitem:a9faed3ac8ef95c646e376a7fe915fb0b inherit pub_attribs_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memitem:aa0fe8c92c66463236a05924d466256da inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory</a> (int i)</td></tr>
+<tr class="memitem:a1ab1b31f6fcd3080cc9fd0948df61e1a inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:af070c53156c75171a13dacb2ef2148aa inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">put_remap</a> (int &amp;ijk, double &amp;x, double &amp;y, double &amp;z)</td></tr>
+<tr class="memitem:abe09747feba40102470c91f93d25fbfc inherit pro_methods_classvoro_1_1container__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a> (int &amp;ai, int &amp;aj, int &amp;ak, int &amp;ci, int &amp;cj, int &amp;ck, double &amp;x, double &amp;y, double &amp;z, int &amp;ijk)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voro__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1wall__list"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1wall__list')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memitem:afb2cd60a3624dd4033ccddd690321489 inherit pro_methods_classvoro_1_1wall__list"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a> ()</td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1radius__poly"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1radius__poly')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memitem:aa8dcd117e31007933a37454ef9ccb4d9 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:a19b9bc7dd97869e6ac440662912f4911 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a5e74adfce3978911c901f0eb5dbb2c90 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a33cecd36b74cc748fb91b5c9f60f08e9 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:a86eda87db1ab281a251e43236bbc26c1 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ab9a81c60cf27739db39faa28591d5650 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a8357f4c9d6e20d739029dcb76705e316 inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aba9f2a8086de090f84f714510e6914fb inherit pro_methods_classvoro_1_1radius__poly"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class that has routines specifically for computing the radical Voronoi tessellation that depends on the particle radii. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00487">487</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a1d782b31e7d6f5b2040ee2d25753cb53"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::container_poly::container_poly </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_mem</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_)</td><td>flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_mem</td><td>the initial memory allocation for each block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00079">79</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a0012f95f5666a347e6585efc76b63b83"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::clear </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Clears a container of particles, also clearing resetting the maximum radius to zero. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00390">390</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a40a4b63b1ac5980b92ca526ac2183489"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::compute_all_cells </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all of the Voronoi cells in the container, but does nothing with the output. It is useful for measuring the pure computation time of the Voronoi algorithm, without any additional calculations such as volume evaluation or cell output. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00446">446</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae01c610b46aad0aae4998697b69a4b1c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell , class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_poly::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for a particle currently being referenced by a loop class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed, if it is removed entirely by a wall or boundary condition, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00661">661</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a12b9eeac5c7f409e1d75f77876c7bd3d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_poly::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cell for given particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">c</td><td>a Voronoi cell class in which to store the computed cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell was computed. If the cell cannot be computed, if it is removed entirely by a wall or boundary condition, then the routine returns false. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00673">673</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1efabec22bdbff42302d94620a71937"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00580">580</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac0700e38ce6ed742dcb52ab6523b1956"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Compute all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00590">590</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad360a8ec2c8d59b69b65f34fdba92887"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Compute all Voronoi cells and saves the output in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00597">597</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaaddce8c16e4df211db3cbe9f9ca83de"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00607">607</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d56858927fc6686696e4338f9ac784d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00618">618</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae949e1e7d3207212db3c99677e4906cd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_cells_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes all Voronoi cells and saves the output in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00625">625</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af67af614b2b3ad084dfab83470fa8616"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00528">528</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a25b1e68cf0ad4f60c7723afc9ad97bb2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00538">538</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8a20a1a70dd32c3323307be038bebb1d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all of the particle IDs, positions and radii to a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00545">545</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a56313161f9104ef0356238569317a34c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00554">554</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a477ecfe9e0943e71a2e389d7cc85ab20"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all the particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00564">564</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a866cce7547f14634e432d510050962ae"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::draw_particles_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Dumps all the particle positions in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00570">570</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa02b6b6e5605b28fc8ecf0cd0a757903"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::container_poly::find_voronoi_cell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>ry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>pid</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Takes a vector and finds the particle whose Voronoi cell contains that vector. Additional wall classes are not considered by this routine. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">(rx,ry,rz)</td><td>the position of the particle whose Voronoi cell contains the vector. If the container is periodic, this may point to a particle in a periodic image of the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">pid</td><td>the ID of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if a particle was found. If the container has no particles, then the search will not find a Voronoi cell and false is returned. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00272">272</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a65ddee05ee3b3677c7a48f67ce64a1d5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream into the container. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00355">355</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aecedca4f256e9382d54efb805877c68f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>a reference to an ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00368">368</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b8b64b39bab75e3cfc9282a23706bab"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00503">503</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af897ea09b80064d4b492862884ba316c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports a list of particles from an open file stream into the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. In addition, the order in which particles are read is saved into an ordering class. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to open and read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00517">517</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a60907bce91cfacfa054a69872fb10ee3"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_loop &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">c_loop &amp;&#160;</td>
+ <td class="paramname"><em>vl</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vl</td><td>the loop class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00636">636</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adf5dcfbba15c482285c23e0ee54155d4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00407">407</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab2eb9f5480fb9560b71ef1b1ed29b592"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::print_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes all the Voronoi cells and saves customized information about them </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom output string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00425">425</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a61689312fb6f8ee36f1fbb0fe00e4fe3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00100">100</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa0c81a2be68ed2a8b799ad7682c9b853"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::container_poly::put </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Put a particle into the correct region of the container, also recording into which region it was stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class in which to record the region. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00131">131</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a081af78a1c9c863393fd07a548a84a2e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::container_poly::sum_cell_volumes </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates all of the Voronoi cells and sums their volumes. In most cases without walls, the sum of the Voronoi cell volumes should equal the volume of the container to numerical precision. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The sum of all of the computed Voronoi volumes. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00468">468</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container_8hh_source.html">container.hh</a></li>
+<li><a class="el" href="container_8cc_source.html">container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1container__poly.png b/lib/voro++/html/classvoro_1_1container__poly.png
new file mode 100644
index 000000000..a7fdd8438
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1container__poly.png differ
diff --git a/lib/voro++/html/classvoro_1_1particle__order.html b/lib/voro++/html/classvoro_1_1particle__order.html
new file mode 100644
index 000000000..e5cdf17eb
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1particle__order.html
@@ -0,0 +1,240 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::particle_order Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::particle_order Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for storing ordering information when particles are added to a container.
+ <a href="classvoro_1_1particle__order.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a205b5e4a472043123d091b1a3bc103c8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8">particle_order</a> (int init_size=init_ordering_size)</td></tr>
+<tr class="memitem:aec68354015eedbde68752a58a8457c90"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90">~particle_order</a> ()</td></tr>
+<tr class="memitem:adabcf6cd995eb03fe007844ba5637a8a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a> (int ijk, int q)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:af8bef46cbdfdee608090aa5df0666df2"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">o</a></td></tr>
+<tr class="memitem:a6aeb89179930977f344416a0ba1c38a4"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">op</a></td></tr>
+<tr class="memitem:a742bc941dfd87ecd64b42f6e50df19db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">size</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>When particles are added to a container class, they are sorted into an internal computational grid of blocks. The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class provides a mechanism for remembering which block particles were sorted into. The import and put routines in the container class have variants that also take a <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class. Each time they are called, they will store the block that the particle was sorted into, plus the position of the particle within the block. The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class can used by the <a class="el" href="classvoro_1_1c__loop__order.html" title="Class for looping over all of the particles specified in a pre-assembled particle_order class...">c_loop_order</a> class to specifically loop over the particles that have their information stored within it. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00037">37</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a205b5e4a472043123d091b1a3bc103c8"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::particle_order::particle_order </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>init_size</em> = <code>init_ordering_size</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> constructor allocates memory to store the ordering information. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">init_size</td><td>the initial amount of memory to allocate. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00051">51</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aec68354015eedbde68752a58a8457c90"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::particle_order::~particle_order </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> destructor frees the dynamically allocated memory used to store the ordering information. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00055">55</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="adabcf6cd995eb03fe007844ba5637a8a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::particle_order::add </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Adds a record to the order, corresponding to the memory address of where a particle was placed into the container. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block into which the particle was placed. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the position within the block where the particle was placed. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00063">63</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="af8bef46cbdfdee608090aa5df0666df2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::particle_order::o</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the array holding the ordering. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00040">40</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6aeb89179930977f344416a0ba1c38a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::particle_order::op</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the next position in the ordering array in which to store an entry. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00043">43</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a742bc941dfd87ecd64b42f6e50df19db"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_order::size</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current memory allocation for the class, set to the number of entries which can be stored. </p>
+
+<p>Definition at line <a class="el" href="c__loops_8hh_source.html#l00046">46</a> of file <a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="c__loops_8hh_source.html">c_loops.hh</a></li>
+<li><a class="el" href="c__loops_8cc_source.html">c_loops.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1pre__container.html b/lib/voro++/html/classvoro_1_1pre__container.html
new file mode 100644
index 000000000..75b5ed797
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1pre__container.html
@@ -0,0 +1,385 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::pre_container Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1pre__container.html">pre_container</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::pre_container Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for storing an arbitrary number of particles without radius information, prior to setting up a container geometry.
+ <a href="classvoro_1_1pre__container.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::pre_container:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1pre__container.png" usemap="#voro::pre_container_map" alt=""/>
+ <map id="voro::pre_container_map" name="voro::pre_container_map">
+<area href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry..." alt="voro::pre_container_base" shape="rect" coords="0,0,157,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a6b1faf934a8f416c595b6f0be5832bbe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#a6b1faf934a8f416c595b6f0be5832bbe">pre_container</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, bool xperiodic_, bool yperiodic_, bool zperiodic_)</td></tr>
+<tr class="memitem:ac68ce0449cf83ee282325d5302ffa4cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">put</a> (int n, double x, double y, double z)</td></tr>
+<tr class="memitem:a0d62168ad0379672e038ec07cc362567"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#a0d62168ad0379672e038ec07cc362567">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:a84488a4453d94d6fef9afe2578c35adf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#a84488a4453d94d6fef9afe2578c35adf">import</a> (const char *filename)</td></tr>
+<tr class="memitem:a7a2e73ad34fbfe1001f59ea3b69f992f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">setup</a> (<a class="el" href="classvoro_1_1container.html">container</a> &amp;con)</td></tr>
+<tr class="memitem:a81aae000e3b787c58deef7a8f197bdc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html#a81aae000e3b787c58deef7a8f197bdc3">setup</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, <a class="el" href="classvoro_1_1container.html">container</a> &amp;con)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a8e1fcadbeedc63f205a36c2fa9333ab6 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">guess_optimal</a> (int &amp;nx, int &amp;ny, int &amp;nz)</td></tr>
+<tr class="memitem:a522bd57b4a0e4af6b197c04d103adc68 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">pre_container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int ps_)</td></tr>
+<tr class="memitem:a9832a92c7e6dbc2959ab958ea821ca9a inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">~pre_container_base</a> ()</td></tr>
+<tr class="memitem:a253ea1bdfa1b82c3fb0ab12f1685d695 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">total_particles</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a7ffde3944d0899b6ae9abe42e6567789 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a></td></tr>
+<tr class="memitem:a34dfa63f38cf870b32004e12558463a0 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a></td></tr>
+<tr class="memitem:a397c0ae141594e1868eb6248a6d57d52 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a></td></tr>
+<tr class="memitem:a6acac844ab71a02ea6a990fccdbd5c59 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a></td></tr>
+<tr class="memitem:a68952c93198e0623604a049aa4140d52 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a></td></tr>
+<tr class="memitem:a9049eaba232b13aa3a9562dffa57bc24 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a></td></tr>
+<tr class="memitem:aa7cffdaee881f941e421d0e9e3f38db3 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a></td></tr>
+<tr class="memitem:aa86a0e8ac0bafbc2bf2fefbafce005be inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a></td></tr>
+<tr class="memitem:a5df09b1ba1e3fe49c3efba11ed44efb2 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a3b9e5b59a4fd8477321d9412feffac4f inherit pro_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a> ()</td></tr>
+<tr class="memitem:abc281e0f5b042046451b1d86ee94880d inherit pro_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">extend_chunk_index</a> ()</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a4a3ff1d6bee289e53f5015327384444a inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a></td></tr>
+<tr class="memitem:a9ae49ab1c51dc851e7ddf3035b719a6b inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a></td></tr>
+<tr class="memitem:a927440d3390000b94cce98733d81811c inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a></td></tr>
+<tr class="memitem:a687bc9acac994d7918e1e34c27df68e3 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a></td></tr>
+<tr class="memitem:a49cb1c584f78ac8fdce353fd2f43b5f6 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a></td></tr>
+<tr class="memitem:a432897c62a5d0c1acc39a97ffe27b506 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a></td></tr>
+<tr class="memitem:a73bcad154008325e074bea734fc4125b inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a></td></tr>
+<tr class="memitem:a8f3fadf0d9d115fec92eedbcb2c5af9c inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a></td></tr>
+<tr class="memitem:ae4dc10b744019a92efffbcc1ece189e4 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a></td></tr>
+<tr class="memitem:abe6c99e9fa26d0764014c5f2913ed6c9 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1pre__container.html" title="A class for storing an arbitrary number of particles without radius information, prior to setting up ...">pre_container</a> class is an extension of the <a class="el" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> class for cases when no particle radius information is available. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00101">101</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a6b1faf934a8f416c595b6f0be5832bbe"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::pre_container::pre_container </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_</td><td>) flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00112">112</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a0d62168ad0379672e038ec07cc362567"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream into the container. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00190">190</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a84488a4453d94d6fef9afe2578c35adf"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports particles from a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00119">119</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac68ce0449cf83ee282325d5302ffa4cd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Stores a particle ID and position, allocating a new memory chunk if necessary. For coordinate directions in which the container is not periodic, the routine checks to make sure that the particle is within the container bounds. If the particle is out of bounds, it is not stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00071">71</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7a2e73ad34fbfe1001f59ea3b69f992f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container::setup </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1container.html">container</a> &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Transfers the particles stored within the class to a container class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to transfer to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00099">99</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a81aae000e3b787c58deef7a8f197bdc3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container::setup </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1container.html">container</a> &amp;&#160;</td>
+ <td class="paramname"><em>con</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Transfers the particles stored within the class to a container class, also recording the order in which particles were stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the container class to transfer to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00143">143</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="pre__container_8hh_source.html">pre_container.hh</a></li>
+<li><a class="el" href="pre__container_8cc_source.html">pre_container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1pre__container.png b/lib/voro++/html/classvoro_1_1pre__container.png
new file mode 100644
index 000000000..8e9bab4e3
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1pre__container.png differ
diff --git a/lib/voro++/html/classvoro_1_1pre__container__base.html b/lib/voro++/html/classvoro_1_1pre__container__base.html
new file mode 100644
index 000000000..b32082a7c
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1pre__container__base.html
@@ -0,0 +1,722 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::pre_container_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1pre__container__base.html">pre_container_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> </div>
+ <div class="headertitle">
+<div class="title">voro::pre_container_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for storing an arbitrary number of particles, prior to setting up a container geometry.
+ <a href="classvoro_1_1pre__container__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::pre_container_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1pre__container__base.png" usemap="#voro::pre_container_base_map" alt=""/>
+ <map id="voro::pre_container_base_map" name="voro::pre_container_base_map">
+<area href="classvoro_1_1pre__container.html" title="A class for storing an arbitrary number of particles without radius information, prior to setting up ..." alt="voro::pre_container" shape="rect" coords="0,56,157,80"/>
+<area href="classvoro_1_1pre__container__poly.html" title="A class for storing an arbitrary number of particles with radius information, prior to setting up a c..." alt="voro::pre_container_poly" shape="rect" coords="167,56,324,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a8e1fcadbeedc63f205a36c2fa9333ab6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">guess_optimal</a> (int &amp;nx, int &amp;ny, int &amp;nz)</td></tr>
+<tr class="memitem:a522bd57b4a0e4af6b197c04d103adc68"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">pre_container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int ps_)</td></tr>
+<tr class="memitem:a9832a92c7e6dbc2959ab958ea821ca9a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">~pre_container_base</a> ()</td></tr>
+<tr class="memitem:a253ea1bdfa1b82c3fb0ab12f1685d695"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">total_particles</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a7ffde3944d0899b6ae9abe42e6567789"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a></td></tr>
+<tr class="memitem:a34dfa63f38cf870b32004e12558463a0"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a></td></tr>
+<tr class="memitem:a397c0ae141594e1868eb6248a6d57d52"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a></td></tr>
+<tr class="memitem:a6acac844ab71a02ea6a990fccdbd5c59"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a></td></tr>
+<tr class="memitem:a68952c93198e0623604a049aa4140d52"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a></td></tr>
+<tr class="memitem:a9049eaba232b13aa3a9562dffa57bc24"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a></td></tr>
+<tr class="memitem:aa7cffdaee881f941e421d0e9e3f38db3"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a></td></tr>
+<tr class="memitem:aa86a0e8ac0bafbc2bf2fefbafce005be"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a></td></tr>
+<tr class="memitem:a5df09b1ba1e3fe49c3efba11ed44efb2"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a3b9e5b59a4fd8477321d9412feffac4f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a> ()</td></tr>
+<tr class="memitem:abc281e0f5b042046451b1d86ee94880d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">extend_chunk_index</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a4a3ff1d6bee289e53f5015327384444a"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a></td></tr>
+<tr class="memitem:a9ae49ab1c51dc851e7ddf3035b719a6b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a></td></tr>
+<tr class="memitem:a927440d3390000b94cce98733d81811c"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a></td></tr>
+<tr class="memitem:a687bc9acac994d7918e1e34c27df68e3"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a></td></tr>
+<tr class="memitem:a49cb1c584f78ac8fdce353fd2f43b5f6"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a></td></tr>
+<tr class="memitem:a432897c62a5d0c1acc39a97ffe27b506"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a></td></tr>
+<tr class="memitem:a73bcad154008325e074bea734fc4125b"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a></td></tr>
+<tr class="memitem:a8f3fadf0d9d115fec92eedbcb2c5af9c"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a></td></tr>
+<tr class="memitem:ae4dc10b744019a92efffbcc1ece189e4"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a></td></tr>
+<tr class="memitem:abe6c99e9fa26d0764014c5f2913ed6c9"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> class can dynamically import and store an arbitrary number of particles. Once the particles have been read in, an appropriate container class can be set up with the optimal grid size, and the particles can be transferred.</p>
+<p>The <a class="el" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> class is not intended for direct use, but forms the base of the <a class="el" href="classvoro_1_1pre__container.html" title="A class for storing an arbitrary number of particles without radius information, prior to setting up ...">pre_container</a> and <a class="el" href="classvoro_1_1pre__container__poly.html" title="A class for storing an arbitrary number of particles with radius information, prior to setting up a c...">pre_container_poly</a> classes, that add routines depending on whether particle radii need to be tracked or not. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00031">31</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a522bd57b4a0e4af6b197c04d103adc68"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::pre_container_base::pre_container_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ps_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction. It allocates an initial chunk into which to store particle information. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_</td><td>) flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ps_</td><td>the number of floating point entries to store for each particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00029">29</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9832a92c7e6dbc2959ab958ea821ca9a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::pre_container_base::~pre_container_base </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The destructor frees the dynamically allocated memory. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00041">41</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="abc281e0f5b042046451b1d86ee94880d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_base::extend_chunk_index </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Extends the index of chunks. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00219">219</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8e1fcadbeedc63f205a36c2fa9333ab6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_base::guess_optimal </td>
+ <td>(</td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>nx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>ny</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int &amp;&#160;</td>
+ <td class="paramname"><em>nz</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Makes a guess at the optimal grid of blocks to use, computing in a way that </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">(nx,ny,nz)</td><td>the number of blocks to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00057">57</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3b9e5b59a4fd8477321d9412feffac4f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_base::new_chunk </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Allocates a new chunk of memory for storing particles. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00210">210</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a253ea1bdfa1b82c3fb0ab12f1685d695"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::pre_container_base::total_particles </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Calculates and returns the total number of particles stored within the class. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The number of particles. </dd></dl>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00060">60</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a7ffde3944d0899b6ae9abe42e6567789"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::ax</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum x coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00034">34</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a397c0ae141594e1868eb6248a6d57d52"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::ay</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum y coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00038">38</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a68952c93198e0623604a049aa4140d52"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::az</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The minimum z coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00042">42</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a34dfa63f38cf870b32004e12558463a0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::bx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum x coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00036">36</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6acac844ab71a02ea6a990fccdbd5c59"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::by</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum y coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00040">40</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9049eaba232b13aa3a9562dffa57bc24"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::pre_container_base::bz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The maximum z coordinate of the container. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00044">44</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a432897c62a5d0c1acc39a97ffe27b506"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::pre_container_base::ch_id</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the next available slot on the current particle ID chunk. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00082">82</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abe6c99e9fa26d0764014c5f2913ed6c9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double* voro::pre_container_base::ch_p</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the next available slot on the current floating point chunk. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00093">93</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a73bcad154008325e074bea734fc4125b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::pre_container_base::e_id</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the end of the current integer chunk. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00084">84</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a687bc9acac994d7918e1e34c27df68e3"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::pre_container_base::end_id</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the last allocated integer ID chunk. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00076">76</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae4dc10b744019a92efffbcc1ece189e4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::pre_container_base::end_p</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the last allocated chunk of floating point information. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00090">90</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9ae49ab1c51dc851e7ddf3035b719a6b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::pre_container_base::index_sz</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The size of the chunk index. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00071">71</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a49cb1c584f78ac8fdce353fd2f43b5f6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::pre_container_base::l_id</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the end of the integer ID chunk index, used to determine when the chunk index is full. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00079">79</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a927440d3390000b94cce98733d81811c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::pre_container_base::pre_id</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the chunk index to store the integer particle IDs. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00074">74</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8f3fadf0d9d115fec92eedbcb2c5af9c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::pre_container_base::pre_p</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the chunk index to store the floating point information associated with particles. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00087">87</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4a3ff1d6bee289e53f5015327384444a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::pre_container_base::ps</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The number of doubles associated with a single particle (three for the standard container, four when radius information is stored). </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00067">67</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa7cffdaee881f941e421d0e9e3f38db3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::pre_container_base::xperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the x coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00047">47</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa86a0e8ac0bafbc2bf2fefbafce005be"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::pre_container_base::yperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the y coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00050">50</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5df09b1ba1e3fe49c3efba11ed44efb2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const bool voro::pre_container_base::zperiodic</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A boolean value that determines if the z coordinate in periodic or not. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00053">53</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="pre__container_8hh_source.html">pre_container.hh</a></li>
+<li><a class="el" href="pre__container_8cc_source.html">pre_container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1pre__container__base.png b/lib/voro++/html/classvoro_1_1pre__container__base.png
new file mode 100644
index 000000000..3c007e9b4
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1pre__container__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1pre__container__poly.html b/lib/voro++/html/classvoro_1_1pre__container__poly.html
new file mode 100644
index 000000000..bd50d501f
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1pre__container__poly.html
@@ -0,0 +1,392 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::pre_container_poly Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1pre__container__poly.html">pre_container_poly</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::pre_container_poly Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for storing an arbitrary number of particles with radius information, prior to setting up a container geometry.
+ <a href="classvoro_1_1pre__container__poly.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::pre_container_poly:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1pre__container__poly.png" usemap="#voro::pre_container_poly_map" alt=""/>
+ <map id="voro::pre_container_poly_map" name="voro::pre_container_poly_map">
+<area href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry..." alt="voro::pre_container_base" shape="rect" coords="0,0,157,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a80a9be51f0cd441544ea5c7a59002e19"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#a80a9be51f0cd441544ea5c7a59002e19">pre_container_poly</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, bool xperiodic_, bool yperiodic_, bool zperiodic_)</td></tr>
+<tr class="memitem:abc5d9009deec44c1f5fc88e4da10e89a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">put</a> (int n, double x, double y, double z, double r)</td></tr>
+<tr class="memitem:aa6aab61ad68e90a513e53433313c2a4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#aa6aab61ad68e90a513e53433313c2a4a">import</a> (FILE *fp=stdin)</td></tr>
+<tr class="memitem:aa78a3577ba7d11c65f5941e22638f015"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#aa78a3577ba7d11c65f5941e22638f015">import</a> (const char *filename)</td></tr>
+<tr class="memitem:ac71c0ee24182a115ce79da4cc91ee356"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356">setup</a> (<a class="el" href="classvoro_1_1container__poly.html">container_poly</a> &amp;con)</td></tr>
+<tr class="memitem:ac18d16204c7769ec554d14f84b6517f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html#ac18d16204c7769ec554d14f84b6517f0">setup</a> (<a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;vo, <a class="el" href="classvoro_1_1container__poly.html">container_poly</a> &amp;con)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a8e1fcadbeedc63f205a36c2fa9333ab6 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">guess_optimal</a> (int &amp;nx, int &amp;ny, int &amp;nz)</td></tr>
+<tr class="memitem:a522bd57b4a0e4af6b197c04d103adc68 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">pre_container_base</a> (double ax_, double bx_, double ay_, double by_, double az_, double bz_, bool xperiodic_, bool yperiodic_, bool zperiodic_, int ps_)</td></tr>
+<tr class="memitem:a9832a92c7e6dbc2959ab958ea821ca9a inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">~pre_container_base</a> ()</td></tr>
+<tr class="memitem:a253ea1bdfa1b82c3fb0ab12f1685d695 inherit pub_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">total_particles</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a7ffde3944d0899b6ae9abe42e6567789 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a></td></tr>
+<tr class="memitem:a34dfa63f38cf870b32004e12558463a0 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a></td></tr>
+<tr class="memitem:a397c0ae141594e1868eb6248a6d57d52 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a></td></tr>
+<tr class="memitem:a6acac844ab71a02ea6a990fccdbd5c59 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a></td></tr>
+<tr class="memitem:a68952c93198e0623604a049aa4140d52 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a></td></tr>
+<tr class="memitem:a9049eaba232b13aa3a9562dffa57bc24 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a></td></tr>
+<tr class="memitem:aa7cffdaee881f941e421d0e9e3f38db3 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a></td></tr>
+<tr class="memitem:aa86a0e8ac0bafbc2bf2fefbafce005be inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a></td></tr>
+<tr class="memitem:a5df09b1ba1e3fe49c3efba11ed44efb2 inherit pub_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a3b9e5b59a4fd8477321d9412feffac4f inherit pro_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a> ()</td></tr>
+<tr class="memitem:abc281e0f5b042046451b1d86ee94880d inherit pro_methods_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">extend_chunk_index</a> ()</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1pre__container__base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1pre__container__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memitem:a4a3ff1d6bee289e53f5015327384444a inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a></td></tr>
+<tr class="memitem:a9ae49ab1c51dc851e7ddf3035b719a6b inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a></td></tr>
+<tr class="memitem:a927440d3390000b94cce98733d81811c inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a></td></tr>
+<tr class="memitem:a687bc9acac994d7918e1e34c27df68e3 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a></td></tr>
+<tr class="memitem:a49cb1c584f78ac8fdce353fd2f43b5f6 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a></td></tr>
+<tr class="memitem:a432897c62a5d0c1acc39a97ffe27b506 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a></td></tr>
+<tr class="memitem:a73bcad154008325e074bea734fc4125b inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a></td></tr>
+<tr class="memitem:a8f3fadf0d9d115fec92eedbcb2c5af9c inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a></td></tr>
+<tr class="memitem:ae4dc10b744019a92efffbcc1ece189e4 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a></td></tr>
+<tr class="memitem:abe6c99e9fa26d0764014c5f2913ed6c9 inherit pro_attribs_classvoro_1_1pre__container__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1pre__container__poly.html" title="A class for storing an arbitrary number of particles with radius information, prior to setting up a c...">pre_container_poly</a> class is an extension of the <a class="el" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> class for cases when particle radius information is available. </p>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00133">133</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a80a9be51f0cd441544ea5c7a59002e19"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::pre_container_poly::pre_container_poly </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ax_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ay_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>az_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>xperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>yperiodic_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>zperiodic_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xperiodic_,yperiodic_,zperiodic_</td><td>) flags setting whether the container is periodic in each coordinate direction. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00144">144</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa6aab61ad68e90a513e53433313c2a4a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdin</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position) are searched for. If the file cannot be successfully read, then the routine causes a fatal error. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00202">202</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa78a3577ba7d11c65f5941e22638f015"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_poly::import </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Imports particles from a file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to read from. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8hh_source.html#l00151">151</a> of file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc5d9009deec44c1f5fc88e4da10e89a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_poly::put </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Stores a particle ID and position, allocating a new memory chunk if necessary. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>the numerical ID of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the inserted particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>the radius of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00086">86</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac71c0ee24182a115ce79da4cc91ee356"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_poly::setup </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1container__poly.html">container_poly</a> &amp;&#160;</td>
+ <td class="paramname"><em>con</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Transfers the particles stored within the class to a <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class to transfer to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00120">120</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac18d16204c7769ec554d14f84b6517f0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::pre_container_poly::setup </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1particle__order.html">particle_order</a> &amp;&#160;</td>
+ <td class="paramname"><em>vo</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1container__poly.html">container_poly</a> &amp;&#160;</td>
+ <td class="paramname"><em>con</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Transfers the particles stored within the class to a <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class, also recording the order in which particles were stored. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vo</td><td>the ordering class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">con</td><td>the <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class to transfer to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="pre__container_8cc_source.html#l00166">166</a> of file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="pre__container_8hh_source.html">pre_container.hh</a></li>
+<li><a class="el" href="pre__container_8cc_source.html">pre_container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1pre__container__poly.png b/lib/voro++/html/classvoro_1_1pre__container__poly.png
new file mode 100644
index 000000000..473b0e4a0
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1pre__container__poly.png differ
diff --git a/lib/voro++/html/classvoro_1_1radius__mono.html b/lib/voro++/html/classvoro_1_1radius__mono.html
new file mode 100644
index 000000000..60fd7e07d
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1radius__mono.html
@@ -0,0 +1,446 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::radius_mono Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1radius__mono.html">radius_mono</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pro-methods">Protected Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::radius_mono Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class containing all of the routines that are specific to computing the regular Voronoi tessellation.
+ <a href="classvoro_1_1radius__mono.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::radius_mono:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1radius__mono.png" usemap="#voro::radius_mono_map" alt=""/>
+ <map id="voro::radius_mono_map" name="voro::radius_mono_map">
+<area href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations." alt="voro::container" shape="rect" coords="0,56,150,80"/>
+<area href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations." alt="voro::container_periodic" shape="rect" coords="160,56,310,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:ab17c87e1f434718bec74e93387480be9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:afc6e56b490ddf97d9ee924d58e128422"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a685b7e6b79c943b4fd083857b229cc14"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a5eaff13d2c5212e72032d24a8c376114"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:ab1b663f24d371a45e19fb8866151bb7f"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ae390a53c70f0295592d02fc9dd0a9086"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a4aa8de703ecce74dc1625aea73149720"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aaadf553614ec9390a37349bc7d7a7557"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The container and <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> classes are derived from this class, and during the Voronoi cell computation, these routines are used to create the regular Voronoi tessellation. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00024">24</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+</div><hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a685b7e6b79c943b4fd083857b229cc14"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::radius_mono::r_ctest </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>crs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>mrs</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Carries out a radius bounds check. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">crs</td><td>the radius squared to be tested. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mrs</td><td>the current maximum distance to a Voronoi vertex multiplied by two. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if particles at this radius could not possibly cut the cell, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00040">40</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae390a53c70f0295592d02fc9dd0a9086"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_mono::r_current_sub </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Subtracts the radius squared of a particle from a given value. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the value to consider. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value with the radius squared subtracted. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00055">55</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5eaff13d2c5212e72032d24a8c376114"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_mono::r_cutoff </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>lrs</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement during a plane bounds check. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lrs</td><td>the plane displacement. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The scaled value. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00044">44</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab17c87e1f434718bec74e93387480be9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::radius_mono::r_init </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is called prior to computing a Voronoi cell for a given particle to initialize any required constants. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00030">30</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab1b663f24d371a45e19fb8866151bb7f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_mono::r_max_add </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Adds the maximum radius squared to a given value. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the value to consider. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value with the radius squared added. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00048">48</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afc6e56b490ddf97d9ee924d58e128422"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::radius_mono::r_prime </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rv</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets a required constant to be used when carrying out a plane bounds check. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00033">33</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4aa8de703ecce74dc1625aea73149720"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_mono::r_scale </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement prior to use in the plane cutting algorithm. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the initial plane displacement. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The scaled plane displacement. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00062">62</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaadf553614ec9390a37349bc7d7a7557"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::radius_mono::r_scale_check </td>
+ <td>(</td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>mrs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement prior to use in the plane cutting algorithm, and also checks if it could possibly cut the cell. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">rs</td><td>the plane displacement to be scaled. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mrs</td><td>the current maximum distance to a Voronoi vertex multiplied by two. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell could possibly cut the cell, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00073">73</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="rad__option_8hh_source.html">rad_option.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1radius__mono.png b/lib/voro++/html/classvoro_1_1radius__mono.png
new file mode 100644
index 000000000..b1120274b
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1radius__mono.png differ
diff --git a/lib/voro++/html/classvoro_1_1radius__poly.html b/lib/voro++/html/classvoro_1_1radius__poly.html
new file mode 100644
index 000000000..631a180fa
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1radius__poly.html
@@ -0,0 +1,515 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::radius_poly Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1radius__poly.html">radius_poly</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::radius_poly Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class containing all of the routines that are specific to computing the radical Voronoi tessellation.
+ <a href="classvoro_1_1radius__poly.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::radius_poly:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1radius__poly.png" usemap="#voro::radius_poly_map" alt=""/>
+ <map id="voro::radius_poly_map" name="voro::radius_poly_map">
+<area href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations." alt="voro::container_periodic_poly" shape="rect" coords="0,56,181,80"/>
+<area href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations." alt="voro::container_poly" shape="rect" coords="191,56,372,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a54ca6935b6fe7eb28e924e5c2b0a2abd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">radius_poly</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a9e40455c336c27b089c5a78ca94626d8"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a></td></tr>
+<tr class="memitem:a9faed3ac8ef95c646e376a7fe915fb0b"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:aa8dcd117e31007933a37454ef9ccb4d9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">r_init</a> (int ijk, int s)</td></tr>
+<tr class="memitem:a19b9bc7dd97869e6ac440662912f4911"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">r_prime</a> (double rv)</td></tr>
+<tr class="memitem:a5e74adfce3978911c901f0eb5dbb2c90"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">r_ctest</a> (double crs, double mrs)</td></tr>
+<tr class="memitem:a33cecd36b74cc748fb91b5c9f60f08e9"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">r_cutoff</a> (double lrs)</td></tr>
+<tr class="memitem:a86eda87db1ab281a251e43236bbc26c1"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">r_max_add</a> (double rs)</td></tr>
+<tr class="memitem:ab9a81c60cf27739db39faa28591d5650"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">r_current_sub</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:a8357f4c9d6e20d739029dcb76705e316"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">r_scale</a> (double rs, int ijk, int q)</td></tr>
+<tr class="memitem:aba9f2a8086de090f84f714510e6914fb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">r_scale_check</a> (double &amp;rs, double mrs, int ijk, int q)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>The <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> and <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> classes are derived from this class, and during the Voronoi cell computation, these routines are used to create the radical Voronoi tessellation. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00082">82</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a54ca6935b6fe7eb28e924e5c2b0a2abd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::radius_poly::radius_poly </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The class constructor sets the maximum particle radius to be zero. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00092">92</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a5e74adfce3978911c901f0eb5dbb2c90"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::radius_poly::r_ctest </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>crs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>mrs</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Carries out a radius bounds check. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">crs</td><td>the radius squared to be tested. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mrs</td><td>the current maximum distance to a Voronoi vertex multiplied by two. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if particles at this radius could not possibly cut the cell, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00111">111</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab9a81c60cf27739db39faa28591d5650"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_poly::r_current_sub </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Subtracts the radius squared of a particle from a given value. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the value to consider. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value with the radius squared subtracted. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00126">126</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33cecd36b74cc748fb91b5c9f60f08e9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_poly::r_cutoff </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>lrs</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement during a plane bounds check. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lrs</td><td>the plane displacement. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The scaled value. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00115">115</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa8dcd117e31007933a37454ef9ccb4d9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::radius_poly::r_init </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>s</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is called prior to computing a Voronoi cell for a given particle to initialize any required constants. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00098">98</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a86eda87db1ab281a251e43236bbc26c1"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_poly::r_max_add </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Adds the maximum radius squared to a given value. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the value to consider. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value with the radius squared added. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00119">119</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a19b9bc7dd97869e6ac440662912f4911"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::radius_poly::r_prime </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rv</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Sets a required constant to be used when carrying out a plane bounds check. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00104">104</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8357f4c9d6e20d739029dcb76705e316"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_poly::r_scale </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement prior to use in the plane cutting algorithm. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">rs</td><td>the initial plane displacement. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The scaled plane displacement. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00135">135</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aba9f2a8086de090f84f714510e6914fb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::radius_poly::r_scale_check </td>
+ <td>(</td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>rs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>mrs</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>q</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Scales a plane displacement prior to use in the plane cutting algorithm, and also checks if it could possibly cut the cell. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">rs</td><td>the plane displacement to be scaled. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mrs</td><td>the current maximum distance to a Voronoi vertex multiplied by two. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the block that the particle is within. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">q</td><td>the index of the particle within the block. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell could possibly cut the cell, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00148">148</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a9faed3ac8ef95c646e376a7fe915fb0b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::radius_poly::max_radius</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The current maximum radius of any particle, used to determine when to cut off the radical Voronoi computation. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00089">89</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9e40455c336c27b089c5a78ca94626d8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double** voro::radius_poly::ppr</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A two-dimensional array holding particle positions and radii. </p>
+
+<p>Definition at line <a class="el" href="rad__option_8hh_source.html#l00085">85</a> of file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="rad__option_8hh_source.html">rad_option.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1radius__poly.png b/lib/voro++/html/classvoro_1_1radius__poly.png
new file mode 100644
index 000000000..e36821f14
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1radius__poly.png differ
diff --git a/lib/voro++/html/classvoro_1_1unitcell.html b/lib/voro++/html/classvoro_1_1unitcell.html
new file mode 100644
index 000000000..1c8f7f213
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1unitcell.html
@@ -0,0 +1,531 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::unitcell Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1unitcell.html">unitcell</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> </div>
+ <div class="headertitle">
+<div class="title">voro::unitcell Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain.
+</p>
+
+<p><code>#include &lt;<a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::unitcell:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1unitcell.png" usemap="#voro::unitcell_map" alt=""/>
+ <map id="voro::unitcell_map" name="voro::unitcell_map">
+<area href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain..." alt="voro::container_periodic_base" shape="rect" coords="97,56,281,80"/>
+<area href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations." alt="voro::container_periodic" shape="rect" coords="0,112,184,136"/>
+<area href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations." alt="voro::container_periodic_poly" shape="rect" coords="194,112,378,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:abbeb66edf9e36476cf47bee76ce8d9fc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell</a> (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_)</td></tr>
+<tr class="memitem:a630c635fd21cdd4e50bab118a4dadb13"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a> (const char *filename)</td></tr>
+<tr class="memitem:a9379963d63388ba4075c620ddfdd326f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f">draw_domain_gnuplot</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af476fca3dcc658abe2796aa9613f67bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a> (const char *filename)</td></tr>
+<tr class="memitem:a04c955e90a9478e17fb2a0c5df15a498"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a04c955e90a9478e17fb2a0c5df15a498">draw_domain_pov</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:acc445d2a964296dfca277e03fdc63ebd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a> (double dx, double dy, double dz, double &amp;vol)</td></tr>
+<tr class="memitem:a15d4e5b0f906bba383b27d38497ec68d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">images</a> (std::vector&lt; int &gt; &amp;vi, std::vector&lt; double &gt; &amp;vd)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aba3ac9d30b539fb0017799555199c2df"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a></td></tr>
+<tr class="memitem:a572a7b91539af3c0707b6caccbf15f35"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a></td></tr>
+<tr class="memitem:abaca9a0c853b9a53f164a2fbee783f83"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a></td></tr>
+<tr class="memitem:a000adf05e666f0fb4f57dbe8ca5b51db"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a></td></tr>
+<tr class="memitem:a434c1a7cd8ba84d4ad09845a1a0ddb5b"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a></td></tr>
+<tr class="memitem:a30bf0a4a6bff808301aa424683eb0481"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a></td></tr>
+<tr class="memitem:a0844f70778cc7b19024ed28a2c7ad02c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a3f7cebe966d72935971c508fc64902f0"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a></td></tr>
+<tr class="memitem:a3ac0618230ffa0a382469530f97844e6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00022">22</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="abbeb66edf9e36476cf47bee76ce8d9fc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::unitcell::unitcell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>by_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bxz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>byz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>bz_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes the unit cell class for a particular non-orthogonal periodic geometry, corresponding to a parallelepiped with sides given by three vectors. The class constructs the unit Voronoi cell corresponding to this geometry. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bx_)</td><td>The x coordinate of the first unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxy_,by_)</td><td>The x and y coordinates of the second unit vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(bxz_,byz_,bz_)</td><td>The x, y, and z coordinates of the third unit vector. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8cc_source.html#l00026">26</a> of file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a630c635fd21cdd4e50bab118a4dadb13"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::unitcell::draw_domain_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in Gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the filename to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00048">48</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9379963d63388ba4075c620ddfdd326f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::unitcell::draw_domain_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Draws the periodic domain in gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8cc_source.html#l00203">203</a> of file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af476fca3dcc658abe2796aa9613f67bc"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::unitcell::draw_domain_pov </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Draws an outline of the domain in Gnuplot format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the filename to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00056">56</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a04c955e90a9478e17fb2a0c5df15a498"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::unitcell::draw_domain_pov </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Draws the periodic domain in POV-Ray format. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8cc_source.html#l00212">212</a> of file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a15d4e5b0f906bba383b27d38497ec68d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::unitcell::images </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>vi</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>vd</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes a list of periodic domain images that intersect the unit Voronoi cell. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">vi</td><td>a vector containing triplets (i,j,k) corresponding to domain images that intersect the unit Voronoi cell, when it is centered in the middle of the primary domain. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">vd</td><td>a vector containing the fraction of the Voronoi cell volume within each corresponding image listed in vi. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="unitcell_8cc_source.html#l00122">122</a> of file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="acc445d2a964296dfca277e03fdc63ebd"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::unitcell::intersects_image </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>dz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>vol</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates whether the unit Voronoi cell intersects a given periodic image of the domain. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(dx,dy,dz)</td><td>the displacement of the periodic image. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">vol</td><td>the proportion of the unit cell volume within this image, only computed in the case that the two intersect. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if they intersect, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="unitcell_8cc_source.html#l00101">101</a> of file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aba3ac9d30b539fb0017799555199c2df"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::bx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The x coordinate of the first vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00026">26</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a572a7b91539af3c0707b6caccbf15f35"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::bxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The x coordinate of the second vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00029">29</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a000adf05e666f0fb4f57dbe8ca5b51db"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::bxz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The x coordinate of the third vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00035">35</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abaca9a0c853b9a53f164a2fbee783f83"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::by</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The y coordinate of the second vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00032">32</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a434c1a7cd8ba84d4ad09845a1a0ddb5b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::byz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The y coordinate of the third vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00038">38</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a30bf0a4a6bff808301aa424683eb0481"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::unitcell::bz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The z coordinate of the third vector defining the periodic domain. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00041">41</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f7cebe966d72935971c508fc64902f0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::unitcell::max_uv_y</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The maximum y-coordinate that could possibly cut the computed unit Voronoi cell. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00067">67</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3ac0618230ffa0a382469530f97844e6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::unitcell::max_uv_z</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The maximum z-coordinate that could possibly cut the computed unit Voronoi cell. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00070">70</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0844f70778cc7b19024ed28a2c7ad02c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> voro::unitcell::unit_voro</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The computed unit Voronoi cell corresponding the given 3D non-rectangular periodic domain geometry. </p>
+
+<p>Definition at line <a class="el" href="unitcell_8hh_source.html#l00044">44</a> of file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="unitcell_8hh_source.html">unitcell.hh</a></li>
+<li><a class="el" href="unitcell_8cc_source.html">unitcell.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1unitcell.png b/lib/voro++/html/classvoro_1_1unitcell.png
new file mode 100644
index 000000000..8c2425051
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1unitcell.png differ
diff --git a/lib/voro++/html/classvoro_1_1voro__base.html b/lib/voro++/html/classvoro_1_1voro__base.html
new file mode 100644
index 000000000..02947025b
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1voro__base.html
@@ -0,0 +1,533 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::voro_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1voro__base.html">voro_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::voro_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Class containing data structures common across all particle container classes.
+ <a href="classvoro_1_1voro__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="v__base_8hh_source.html">v_base.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::voro_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1voro__base.png" usemap="#voro::voro_base_map" alt=""/>
+ <map id="voro::voro_base_map" name="voro::voro_base_map">
+<area href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box." alt="voro::container_base" shape="rect" coords="97,56,281,80"/>
+<area href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain..." alt="voro::container_periodic_base" shape="rect" coords="485,56,669,80"/>
+<area href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations." alt="voro::container" shape="rect" coords="0,112,184,136"/>
+<area href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations." alt="voro::container_poly" shape="rect" coords="194,112,378,136"/>
+<area href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations." alt="voro::container_periodic" shape="rect" coords="388,112,572,136"/>
+<area href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations." alt="voro::container_periodic_poly" shape="rect" coords="582,112,766,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a95d9ee6c1610afccf265198ae63b5e88"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a> (const char *format)</td></tr>
+<tr class="memitem:a74f367e3bcffcd95c800ce9be85c29dc"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a8aed82f1468c9bb7e2a779ea53a22594"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a></td></tr>
+<tr class="memitem:a83da5297e87173733d92d9024cebbbdb"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a></td></tr>
+<tr class="memitem:aae461fbdf42c8975fb43d963d002298f"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a></td></tr>
+<tr class="memitem:aad5f41101fce781214d2f0b69487a729"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a></td></tr>
+<tr class="memitem:a4309aca04ab561bd3b3921e9b73016a4"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a></td></tr>
+<tr class="memitem:ac8986e621bd70cf5113e231cb8694d37"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a></td></tr>
+<tr class="memitem:a3ad6b0eefbdff03e92d30f5035defdd1"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a></td></tr>
+<tr class="memitem:afd53f018c9641c8b8066e9429c88a4e0"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a></td></tr>
+<tr class="memitem:ad708515772990e5b2fa4e93c330f7aa0"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a></td></tr>
+<tr class="memitem:a300808cb0ccab85eb61dd0b25a5076de"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a></td></tr>
+<tr class="memitem:ac51553412117b42816210e54805ad278"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a></td></tr>
+<tr class="memitem:ab59b5feedb35ea611b05d65df1216775"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-static-attribs"></a>
+Static Public Attributes</h2></td></tr>
+<tr class="memitem:abc825bfa4bdb4b85d50058f016457445"><td class="memItemLeft" align="right" valign="top">static const unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">wl</a> [wl_seq_length *wl_hgridcu]</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a37fd9fdedc5d415e55f3bbb22a786d8c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a> (double a)</td></tr>
+<tr class="memitem:ab432b8bee0def0666ac39a132c721135"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
+<tr class="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class contains constants and data structures that are common across all particle container classes. It contains constants setting the size of the underlying subgrid of blocks that forms the basis of the Voronoi cell computations. It also constructs bound tables that are used in the Voronoi cell computation, and contains a number of routines that are common across all container classes. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00025">25</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a74f367e3bcffcd95c800ce9be85c29dc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::voro_base::voro_base </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ny_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>nz_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>boxx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>boxy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>boxz_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This function is called during container construction. The routine scans all of the worklists in the wl[] array. For a given worklist of blocks labeled <img class="formulaInl" alt="$w_1$" src="form_1.png"/> to <img class="formulaInl" alt="$w_n$" src="form_2.png"/>, it computes a sequence <img class="formulaInl" alt="$r_0$" src="form_3.png"/> to <img class="formulaInl" alt="$r_n$" src="form_4.png"/> so that $r_i$ is the minimum distance to all the blocks <img class="formulaInl" alt="$w_{j}$" src="form_5.png"/> where <img class="formulaInl" alt="$j>i$" src="form_6.png"/> and all blocks outside the worklist. The values of <img class="formulaInl" alt="$r_n$" src="form_4.png"/> is calculated first, as the minimum distance to any block in the shell surrounding the worklist. The <img class="formulaInl" alt="$r_i$" src="form_7.png"/> are then computed in reverse order by considering the distance to <img class="formulaInl" alt="$w_{i+1}$" src="form_8.png"/>. </p>
+
+<p>Definition at line <a class="el" href="v__base_8cc_source.html#l00023">23</a> of file <a class="el" href="v__base_8cc_source.html">v_base.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a95d9ee6c1610afccf265198ae63b5e88"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voro_base::contains_neighbor </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Checks to see whether "%n" appears in a format sequence to determine whether neighbor information is required or not. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the format string to check. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if a "%n" is found, false otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="v__base_8cc_source.html#l00100">100</a> of file <a class="el" href="v__base_8cc_source.html">v_base.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59a281a5e25e13f681c4f6a2c8bd1ca7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voro_base::step_div </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A custom integer division function that returns consistent stepping for negative numbers. For example, (-2,-1,0,1,2) step_div 2 is (-1,-1,0,0,1). </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(a,b)</td><td>the input integers. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value of a div b, consistent for negative numbers. </dd></dl>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00081">81</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a37fd9fdedc5d415e55f3bbb22a786d8c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voro_base::step_int </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>a</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A custom int function that returns consistent stepping for negative numbers, so that (-1.5, -0.5, 0.5, 1.5) maps to (-2,-1,0,1). </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>the number to consider. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value of the custom int operation. </dd></dl>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00067">67</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab432b8bee0def0666ac39a132c721135"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voro_base::step_mod </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>b</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A custom modulo function that returns consistent stepping for negative numbers. For example, (-2,-1,0,1,2) step_mod 2 is (0,1,0,1,0). </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(a,b)</td><td>the input integers. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>The value of a modulo b, consistent for negative numbers. </dd></dl>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00074">74</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="ac8986e621bd70cf5113e231cb8694d37"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::boxx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of a computational block in the x direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00041">41</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3ad6b0eefbdff03e92d30f5035defdd1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::boxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of a computational block in the y direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00043">43</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afd53f018c9641c8b8066e9429c88a4e0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::boxz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of a computational block in the z direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00045">45</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab59b5feedb35ea611b05d65df1216775"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double* voro::voro_base::mrad</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An array to hold the minimum distances associated with the worklists. This array is initialized during container construction, by the initialize_radii() routine. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00055">55</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8aed82f1468c9bb7e2a779ea53a22594"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::voro_base::nx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the x direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00028">28</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aad5f41101fce781214d2f0b69487a729"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::voro_base::nxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of nx multiplied by ny, which is used in the routines that step through blocks in sequence. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00036">36</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4309aca04ab561bd3b3921e9b73016a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::voro_base::nxyz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of nx*ny*nz, which is used in the routines that step through blocks in sequence. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00039">39</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a83da5297e87173733d92d9024cebbbdb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::voro_base::ny</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the y direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00030">30</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aae461fbdf42c8975fb43d963d002298f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const int voro::voro_base::nz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of blocks in the z direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00032">32</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc825bfa4bdb4b85d50058f016457445"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const unsigned int voro_base::wl</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The pre-computed block worklists. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00057">57</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad708515772990e5b2fa4e93c330f7aa0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::xsp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the x direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00047">47</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a300808cb0ccab85eb61dd0b25a5076de"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::ysp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the y direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00049">49</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac51553412117b42816210e54805ad278"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const double voro::voro_base::zsp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the z direction. </p>
+
+<p>Definition at line <a class="el" href="v__base_8hh_source.html#l00051">51</a> of file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="v__base_8hh_source.html">v_base.hh</a></li>
+<li><a class="el" href="v__base_8cc_source.html">v_base.cc</a></li>
+<li><a class="el" href="v__base__wl_8cc_source.html">v_base_wl.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1voro__base.png b/lib/voro++/html/classvoro_1_1voro__base.png
new file mode 100644
index 000000000..1335783d7
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1voro__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1voro__compute.html b/lib/voro++/html/classvoro_1_1voro__compute.html
new file mode 100644
index 000000000..ff4af77c5
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1voro__compute.html
@@ -0,0 +1,609 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::voro_compute&lt; c_class &gt; Class Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1voro__compute.html">voro_compute</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::voro_compute&lt; c_class &gt; Class Template Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Template for carrying out Voronoi cell computations.
+</p>
+
+<p><code>#include &lt;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a4f268f7749e431df1a54b2dd17bb090f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute</a> (c_class &amp;con_, int hx_, int hy_, int hz_)</td></tr>
+<tr class="memitem:a7ce0dfe1b2ef4eb14832a82c01360e63"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a7ce0dfe1b2ef4eb14832a82c01360e63">~voro_compute</a> ()</td></tr>
+<tr class="memitem:ab08b085875db63f46b0bcecd57bedea9"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ab08b085875db63f46b0bcecd57bedea9"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a> (v_cell &amp;c, int ijk, int s, int ci, int cj, int ck)</td></tr>
+<tr class="memitem:aa0b01474a0cf0b230b736e7352404d8d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a> (double x, double y, double z, int ci, int cj, int ck, int ijk, <a class="el" href="structvoro_1_1particle__record.html">particle_record</a> &amp;w, double &amp;mrs)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a64cc1ec4cea792c438c3767918e265c9"><td class="memItemLeft" align="right" valign="top">c_class &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a64cc1ec4cea792c438c3767918e265c9">con</a></td></tr>
+<tr class="memitem:a9db4da1c50c7777ea67a3340457772da"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a9db4da1c50c7777ea67a3340457772da">boxx</a></td></tr>
+<tr class="memitem:a0612cf10336241a8b39f53c684b215f4"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a0612cf10336241a8b39f53c684b215f4">boxy</a></td></tr>
+<tr class="memitem:a437a130ef80dc2e0939060abc5bcb462"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a437a130ef80dc2e0939060abc5bcb462">boxz</a></td></tr>
+<tr class="memitem:a4d1613a14697f4aff5b743d64db661b6"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a4d1613a14697f4aff5b743d64db661b6">xsp</a></td></tr>
+<tr class="memitem:a384a2be3d85828fc0f7114d93096ed66"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a384a2be3d85828fc0f7114d93096ed66">ysp</a></td></tr>
+<tr class="memitem:a0ac78232aa7234e0d17adf763c0f3c9f"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a0ac78232aa7234e0d17adf763c0f3c9f">zsp</a></td></tr>
+<tr class="memitem:aaf168ea2924df41ece6ea2771aebbb72"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#aaf168ea2924df41ece6ea2771aebbb72">hx</a></td></tr>
+<tr class="memitem:a8693c6f8e16e426f7b870a2b8bd4330d"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a8693c6f8e16e426f7b870a2b8bd4330d">hy</a></td></tr>
+<tr class="memitem:a9a64242973c903d26973de1fbb03f93f"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a9a64242973c903d26973de1fbb03f93f">hz</a></td></tr>
+<tr class="memitem:a157da0cf7efcdfc256c04a430962360e"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a157da0cf7efcdfc256c04a430962360e">hxy</a></td></tr>
+<tr class="memitem:a8f5d72ef1dcd441d760d793ed0f935eb"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb">hxyz</a></td></tr>
+<tr class="memitem:ab3dbe9810de52793dfaf753b8504567c"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#ab3dbe9810de52793dfaf753b8504567c">ps</a></td></tr>
+<tr class="memitem:a9dd2372829ff4078615f994fc36a4c76"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a9dd2372829ff4078615f994fc36a4c76">id</a></td></tr>
+<tr class="memitem:a57e2978b1a5fac350a35f7358502b2eb"><td class="memItemLeft" align="right" valign="top">double **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a57e2978b1a5fac350a35f7358502b2eb">p</a></td></tr>
+<tr class="memitem:a3f2f879cc43a586b602a2f2ce14294af"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html#a3f2f879cc43a586b602a2f2ce14294af">co</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><h3>template&lt;class c_class&gt;<br/>
+class voro::voro_compute&lt; c_class &gt;</h3>
+
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00039">39</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a4f268f7749e431df1a54b2dd17bb090f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">template <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::<a class="el" href="classvoro_1_1voro__compute.html">voro_compute</a> </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>con_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hx_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hy_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hz_</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor initializes constants from the container class, and sets up the mask and queue used for Voronoi computations. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">con_</td><td>a reference to the container class to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(hx_,hy_,hz_)</td><td>the size of the mask to use. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="v__compute_8cc_source.html#l00023">23</a> of file <a class="el" href="v__compute_8cc_source.html">v_compute.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7ce0dfe1b2ef4eb14832a82c01360e63"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::~<a class="el" href="classvoro_1_1voro__compute.html">voro_compute</a> </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The class destructor frees the dynamically allocated memory for the mask and queue. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00090">90</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ab08b085875db63f46b0bcecd57bedea9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">template bool <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::compute_cell </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>s</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine computes a Voronoi cell for a single particle in the container. It can be called by the user, but is also forms the core part of several of the main functions, such as store_cell_volumes(), print_all(), and the drawing routines. The algorithm constructs the cell by testing over the neighbors of the particle, working outwards until it reaches those particles which could not possibly intersect the cell. For maximum efficiency, this algorithm is divided into three parts. In the first section, the algorithm tests over the blocks which are in the immediate vicinity of the particle, by making use of one of the precomputed worklists. The code then continues to test blocks on the worklist, but also begins to construct a list of neighboring blocks outside the worklist which may need to be test. In the third section, the routine starts testing these neighboring blocks, evaluating whether or not a particle in them could possibly intersect the cell. For blocks that intersect the cell, it tests the particles in that block, and then adds the block neighbors to the list of potential places to consider. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>a reference to a voronoicell object. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the index of the block that the test particle is in. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>the index of the particle within the test block. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the block that the test particle is in relative to the container data structure. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the Voronoi cell was completely removed during the computation and has zero volume, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="v__compute_8cc_source.html#l00291">291</a> of file <a class="el" href="v__compute_8cc_source.html">v_compute.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa0b01474a0cf0b230b736e7352404d8d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">template void <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::find_voronoi_cell </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ci</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>cj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ck</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ijk</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structvoro_1_1particle__record.html">particle_record</a> &amp;&#160;</td>
+ <td class="paramname"><em>w</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>mrs</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Finds the Voronoi cell that given vector is within. For containers that are not radially dependent, this corresponds to findig the particle that is closest to the vector; for the radical tessellation containers, this corresponds to a finding the minimum weighted distance. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to consider. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ci,cj,ck)</td><td>the coordinates of the block that the test particle is in relative to the container data structure. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ijk</td><td>the index of the block that the test particle is in. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">w</td><td>a reference to a particle record in which to store information about the particle whose Voronoi cell the vector is within. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">mrs</td><td>the minimum computed distance. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="v__compute_8cc_source.html#l00071">71</a> of file <a class="el" href="v__compute_8cc_source.html">v_compute.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a9db4da1c50c7777ea67a3340457772da"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::boxx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of an internal computational block in the x direction. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00045">45</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0612cf10336241a8b39f53c684b215f4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::boxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of an internal computational block in the y direction. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00048">48</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a437a130ef80dc2e0939060abc5bcb462"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::boxz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The size of an internal computational block in the z direction. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00051">51</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f2f879cc43a586b602a2f2ce14294af"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">int* <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::co</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An array holding the number of particles within each computational box of the container. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00086">86</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a64cc1ec4cea792c438c3767918e265c9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">c_class&amp; <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::con</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A reference to the container class on which to carry out </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00042">42</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf168ea2924df41ece6ea2771aebbb72"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::hx</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of boxes in the x direction for the searching mask. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00062">62</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a157da0cf7efcdfc256c04a430962360e"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::hxy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of hx multiplied by hy, which is used in the routines which step through mask boxes in sequence. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00070">70</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8f5d72ef1dcd441d760d793ed0f935eb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::hxyz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A constant, set to the value of hx*hy*hz, which is used in the routines which step through mask boxes in sequence. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00073">73</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8693c6f8e16e426f7b870a2b8bd4330d"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::hy</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of boxes in the y direction for the searching mask. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00064">64</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9a64242973c903d26973de1fbb03f93f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::hz</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of boxes in the z direction for the searching mask. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00066">66</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9dd2372829ff4078615f994fc36a4c76"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">int** <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::id</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the numerical IDs of each particle in each computational box. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00079">79</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a57e2978b1a5fac350a35f7358502b2eb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">double** <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::p</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A two dimensional array holding particle positions. For the derived <a class="el" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class, this also holds particle radii. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00083">83</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab3dbe9810de52793dfaf753b8504567c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const int <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::ps</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of floating point entries to store for each particle. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00076">76</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4d1613a14697f4aff5b743d64db661b6"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::xsp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the x direction, set to nx/(bx-ax). </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00054">54</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a384a2be3d85828fc0f7114d93096ed66"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::ysp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the y direction, set to ny/(by-ay). </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00057">57</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0ac78232aa7234e0d17adf763c0f3c9f"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">const double <a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute</a>&lt; c_class &gt;::zsp</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The inverse box length in the z direction, set to nz/(bz-az). </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00060">60</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="v__compute_8hh_source.html">v_compute.hh</a></li>
+<li><a class="el" href="v__compute_8cc_source.html">v_compute.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1voronoicell.html b/lib/voro++/html/classvoro_1_1voronoicell.html
new file mode 100644
index 000000000..7f5f0e2ef
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1voronoicell.html
@@ -0,0 +1,648 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::voronoicell Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::voronoicell Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell without neighbor information.
+ <a href="classvoro_1_1voronoicell.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="cell_8hh_source.html">cell.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::voronoicell:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1voronoicell.png" usemap="#voro::voronoicell_map" alt=""/>
+ <map id="voro::voronoicell_map" name="voro::voronoicell_map">
+<area href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell." alt="voro::voronoicell_base" shape="rect" coords="0,0,141,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a00ff7480ad31fbf06dcca83cb0683e68"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68">operator=</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c)</td></tr>
+<tr class="memitem:a9918d33d62ce9afaff9ed8549ff637f9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">nplane</a> (double x, double y, double z, double rsq, int p_id)</td></tr>
+<tr class="memitem:a3f334a0d45c764677418ded3687f005a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a">nplane</a> (double x, double y, double z, int p_id)</td></tr>
+<tr class="memitem:a6e95394d82fd835c75a77462c872594e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:ac2273c14b7bcc02696be10d9249670c0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#ac2273c14b7bcc02696be10d9249670c0">plane</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a573257366d690af4fd8646b4c431ca84"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">init</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</td></tr>
+<tr class="memitem:a10e64245beac741327913dbe25a6abc9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9">init_octahedron</a> (double l)</td></tr>
+<tr class="memitem:a63e460f0fdabffedd31c0e90a26ec169"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169">init_tetrahedron</a> (double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:a83d13bf519c98bf0ea5804763ffc967d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a> ()</td></tr>
+<tr class="memitem:ac959634a1ae2e3201e96624f44e7e71e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">~voronoicell_base</a> ()</td></tr>
+<tr class="memitem:a4c7f5406ba3beb1aa0d047592316c68d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</td></tr>
+<tr class="memitem:aab954caa57c67a26c03b0377f5778bb1 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a> (double l)</td></tr>
+<tr class="memitem:ae71280e1c36c5f840f870d55e91c027b inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a> (double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)</td></tr>
+<tr class="memitem:ab2c8534b380907975eb60f3441d50e1e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">translate</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a923ffa62bd5d62070cd29e01f3a1327a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a8138dc62fc6288c772b0483d0eb4eb96 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96">draw_pov</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1b52986eadcea3b6b230626a6dbddc40 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">draw_pov_mesh</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac572b3e8ed428c12f38243b48bf39099 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099">draw_pov_mesh</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1c0657c1d89313089bbd437170c97d46 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac7cb75aa645c98107c9c0162fabf698e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e">draw_gnuplot</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a92f69986a6f78e7b8b6d9f5778ed99ba inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a> ()</td></tr>
+<tr class="memitem:a6a29a361a158db038a5c4c8e47322bd5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">max_radius_squared</a> ()</td></tr>
+<tr class="memitem:a94fc0aba05c11fba465449bc1c4217e9 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">total_edge_distance</a> ()</td></tr>
+<tr class="memitem:af1a68eea414a0a52b072005af7bd710a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">surface_area</a> ()</td></tr>
+<tr class="memitem:a7ea57c92bba3110da745381c5877cec3 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a> (double &amp;cx, double &amp;cy, double &amp;cz)</td></tr>
+<tr class="memitem:a56b835abe6d47cb67b206202125eb406 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">number_of_faces</a> ()</td></tr>
+<tr class="memitem:a5dbd3cd4e9e9a41744e1a2a4c8f550c0 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">number_of_edges</a> ()</td></tr>
+<tr class="memitem:adfed605232f7e6d1b52276010facbf08 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">vertex_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:af92d19d0e7fc07006bcd8ea30c9df447 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">output_vertex_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b1755fb46b262df8f8bc2980c7470a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">vertices</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aee879731b1f4feb9f630d9b7f9c0062f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4345486c4a2039f523d42fc670943fab inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4345486c4a2039f523d42fc670943fab">vertices</a> (double x, double y, double z, std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aec32739bb3f9393f4ddc33d90796d494 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aec32739bb3f9393f4ddc33d90796d494">output_vertices</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4e6698c49580b3a64046230e02f0f8ea inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a0492ecd057449172ca6d3993cb0661e4 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">output_face_areas</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af9bad3fddace8e63ac4c0a5874aee7c5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:ad14069d3bebcda9353b07488f512800d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">output_face_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a9df53445116446fafea8ffc4ee1afa76 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a38929ec0787bb1acac5f1f7b9ec7cadf inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">output_face_freq_table</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a83e74ffece2b313f6691f467769a16f5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a67d6682dd62b76162f83822a17de6fe5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">output_face_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a335daba5a84e43c278384cae6ecefff3 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a5dc3ae580a5f25424d50d4015aa878ba inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">output_face_perimeters</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aebbbd4815cfbbe5cb1c71a682872664d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aae096d26d957c3e5b0f02b20d493a3ff inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">output_normals</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a095c6bfc1b9b7a087d0b35b443e5c023 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b8ff237f7b3e318c3756cd38586ec4 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b8ff237f7b3e318c3756cd38586ec4">output_custom</a> (const char *format, int i, double x, double y, double z, double r, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">nplane</a> (vc_class &amp;vc, double x, double y, double z, double rsq, int p_id)</td></tr>
+<tr class="memitem:af6fd00a511226fd8dc4f27e34f002fc1 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">plane_intersects</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:afe3d860ac52be1326e69ba8c0750530d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">plane_intersects_guess</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:af49d85cd2a3daf84d623ab09ab7037cf inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">construct_relations</a> ()</td></tr>
+<tr class="memitem:ae7bb21f644a45946001beef598a1da1f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">check_relations</a> ()</td></tr>
+<tr class="memitem:a3f6c0b98feb914c324248cd3d3baf43d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">check_duplicates</a> ()</td></tr>
+<tr class="memitem:a8a7e29d041abbd58406e2c05a9a6248a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">print_edges</a> ()</td></tr>
+<tr class="memitem:a59dd181ccbcc66370ef8b5c4bf250843 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">neighbors</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a99837f8d963c57c2c244518ba0ae4b8f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">output_neighbors</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac164b3767ce186360fb3308e349e058c inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">print_edges_neighbors</a> (int i)</td></tr>
+<tr class="memitem:a1d86762311d8860960a45cc409b14f0f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+<tr class="memitem:adfccfa7dce395277535f61f780d87c8b inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">cycle_down</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a4370063e32384c34b2f412a1b931b593"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4370063e32384c34b2f412a1b931b593"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voronoicell_base</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:ab0b624e4e72fca14c99bf1c41c430614 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a></td></tr>
+<tr class="memitem:a14c97918200da778388673728da29274 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a></td></tr>
+<tr class="memitem:a7dbec3b0b6ea24e22e651cf76f06dc04 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a></td></tr>
+<tr class="memitem:a2a238c710c2e91045ef9deae0faf8dc9 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a></td></tr>
+<tr class="memitem:a7e69469f95464afbeb9feec927507243 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a></td></tr>
+<tr class="memitem:a7746d94ae036439d60c3e4a9e37f6d15 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a></td></tr>
+<tr class="memitem:a85fec05865342d7efca9d9fd11b60342 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a></td></tr>
+<tr class="memitem:abc7ec6777725e0ddffbbe2ecbe81c6a1 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a></td></tr>
+<tr class="memitem:aa4e3f22d4ff450097571e95caeda1b3d inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:a5d09c9e36ad159fcd23cfef8855cae61 inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a> ()</td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a> (vc_class &amp;vc, <a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+<tr class="memitem:a47d450e9b9be0fab103f401ddcaeefac inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a> (<a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:aafad86ca11af64de2788637b466479f6 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a></td></tr>
+<tr class="memitem:accebb51f721d72fc6d460f1368180571 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a></td></tr>
+<tr class="memitem:a2b115cbde725e468000a1da234b2fc66 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class, in cases when is not necessary to track the IDs of neighboring particles associated with each face of the Voronoi cell. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00300">300</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+</div><hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a573257366d690af4fd8646b4c431ca84"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell::init </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmax</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes the Voronoi cell to be rectangular box with the given dimensions. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xmin,xmax)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ymin,ymax)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(zmin,zmax)</td><td>the minimum and maximum z coordinates. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00355">355</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a10e64245beac741327913dbe25a6abc9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell::init_octahedron </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>l</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes the cell to be an octahedron with vertices at (l,0,0), (-l,0,0), (0,l,0), (0,-l,0), (0,0,l), and (0,0,-l). </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">l</td><td>a parameter setting the size of the octahedron. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00362">362</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a63e460f0fdabffedd31c0e90a26ec169"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell::init_tetrahedron </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Initializes the cell to be a tetrahedron. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x0,y0,z0)</td><td>the coordinates of the first vertex. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x1,y1,z1)</td><td>the coordinates of the second vertex. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x2,y2,z2)</td><td>the coordinates of the third vertex. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x3,y3,z3)</td><td>the coordinates of the fourth vertex. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00371">371</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9918d33d62ce9afaff9ed8549ff637f9"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell::nplane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell using by the plane corresponding to the perpendicular bisector of a particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the modulus squared of the vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p_id</td><td>the plane ID, ignored for this case where no neighbor tracking is enabled. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00318">318</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f334a0d45c764677418ded3687f005a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell::nplane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell using by the plane corresponding to the perpendicular bisector of a particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p_id</td><td>the plane ID, ignored for this case where no neighbor tracking is enabled. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00328">328</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a00ff7480ad31fbf06dcca83cb0683e68"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell::operator= </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Copies the information from another voronoicell class into this class, extending memory allocation if necessary. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>the class to copy. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00306">306</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6e95394d82fd835c75a77462c872594e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell::plane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell using by the plane corresponding to the perpendicular bisector of a particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the modulus squared of the vector. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00338">338</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac2273c14b7bcc02696be10d9249670c0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell::plane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell using by the plane corresponding to the perpendicular bisector of a particle. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00346">346</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="cell_8hh_source.html">cell.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1voronoicell.png b/lib/voro++/html/classvoro_1_1voronoicell.png
new file mode 100644
index 000000000..bbb04c61f
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1voronoicell.png differ
diff --git a/lib/voro++/html/classvoro_1_1voronoicell__base.html b/lib/voro++/html/classvoro_1_1voronoicell__base.html
new file mode 100644
index 000000000..adf07a556
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1voronoicell__base.html
@@ -0,0 +1,2296 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::voronoicell_base Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::voronoicell_base Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class representing a single Voronoi cell.
+ <a href="classvoro_1_1voronoicell__base.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="cell_8hh_source.html">cell.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::voronoicell_base:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1voronoicell__base.png" usemap="#voro::voronoicell_base_map" alt=""/>
+ <map id="voro::voronoicell_base_map" name="voro::voronoicell_base_map">
+<area href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information..." alt="voro::voronoicell" shape="rect" coords="0,56,164,80"/>
+<area href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information..." alt="voro::voronoicell_neighbor" shape="rect" coords="174,56,338,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a83d13bf519c98bf0ea5804763ffc967d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a> ()</td></tr>
+<tr class="memitem:ac959634a1ae2e3201e96624f44e7e71e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">~voronoicell_base</a> ()</td></tr>
+<tr class="memitem:a4c7f5406ba3beb1aa0d047592316c68d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</td></tr>
+<tr class="memitem:aab954caa57c67a26c03b0377f5778bb1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a> (double l)</td></tr>
+<tr class="memitem:ae71280e1c36c5f840f870d55e91c027b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a> (double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)</td></tr>
+<tr class="memitem:ab2c8534b380907975eb60f3441d50e1e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">translate</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a923ffa62bd5d62070cd29e01f3a1327a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a8138dc62fc6288c772b0483d0eb4eb96"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96">draw_pov</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1b52986eadcea3b6b230626a6dbddc40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">draw_pov_mesh</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac572b3e8ed428c12f38243b48bf39099"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099">draw_pov_mesh</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1c0657c1d89313089bbd437170c97d46"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac7cb75aa645c98107c9c0162fabf698e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e">draw_gnuplot</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a92f69986a6f78e7b8b6d9f5778ed99ba"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a> ()</td></tr>
+<tr class="memitem:a6a29a361a158db038a5c4c8e47322bd5"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">max_radius_squared</a> ()</td></tr>
+<tr class="memitem:a94fc0aba05c11fba465449bc1c4217e9"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">total_edge_distance</a> ()</td></tr>
+<tr class="memitem:af1a68eea414a0a52b072005af7bd710a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">surface_area</a> ()</td></tr>
+<tr class="memitem:a7ea57c92bba3110da745381c5877cec3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a> (double &amp;cx, double &amp;cy, double &amp;cz)</td></tr>
+<tr class="memitem:a56b835abe6d47cb67b206202125eb406"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">number_of_faces</a> ()</td></tr>
+<tr class="memitem:a5dbd3cd4e9e9a41744e1a2a4c8f550c0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">number_of_edges</a> ()</td></tr>
+<tr class="memitem:adfed605232f7e6d1b52276010facbf08"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">vertex_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:af92d19d0e7fc07006bcd8ea30c9df447"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">output_vertex_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b1755fb46b262df8f8bc2980c7470a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">vertices</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aee879731b1f4feb9f630d9b7f9c0062f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4345486c4a2039f523d42fc670943fab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4345486c4a2039f523d42fc670943fab">vertices</a> (double x, double y, double z, std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aec32739bb3f9393f4ddc33d90796d494"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aec32739bb3f9393f4ddc33d90796d494">output_vertices</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4e6698c49580b3a64046230e02f0f8ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a0492ecd057449172ca6d3993cb0661e4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">output_face_areas</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af9bad3fddace8e63ac4c0a5874aee7c5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:ad14069d3bebcda9353b07488f512800d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">output_face_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a9df53445116446fafea8ffc4ee1afa76"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a38929ec0787bb1acac5f1f7b9ec7cadf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">output_face_freq_table</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a83e74ffece2b313f6691f467769a16f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a67d6682dd62b76162f83822a17de6fe5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">output_face_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a335daba5a84e43c278384cae6ecefff3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a5dc3ae580a5f25424d50d4015aa878ba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">output_face_perimeters</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aebbbd4815cfbbe5cb1c71a682872664d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aae096d26d957c3e5b0f02b20d493a3ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">output_normals</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a095c6bfc1b9b7a087d0b35b443e5c023"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b8ff237f7b3e318c3756cd38586ec4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b8ff237f7b3e318c3756cd38586ec4">output_custom</a> (const char *format, int i, double x, double y, double z, double r, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">nplane</a> (vc_class &amp;vc, double x, double y, double z, double rsq, int p_id)</td></tr>
+<tr class="memitem:af6fd00a511226fd8dc4f27e34f002fc1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">plane_intersects</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:afe3d860ac52be1326e69ba8c0750530d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">plane_intersects_guess</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:af49d85cd2a3daf84d623ab09ab7037cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">construct_relations</a> ()</td></tr>
+<tr class="memitem:ae7bb21f644a45946001beef598a1da1f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">check_relations</a> ()</td></tr>
+<tr class="memitem:a3f6c0b98feb914c324248cd3d3baf43d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">check_duplicates</a> ()</td></tr>
+<tr class="memitem:a8a7e29d041abbd58406e2c05a9a6248a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">print_edges</a> ()</td></tr>
+<tr class="memitem:a59dd181ccbcc66370ef8b5c4bf250843"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">neighbors</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a99837f8d963c57c2c244518ba0ae4b8f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">output_neighbors</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac164b3767ce186360fb3308e349e058c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">print_edges_neighbors</a> (int i)</td></tr>
+<tr class="memitem:a1d86762311d8860960a45cc409b14f0f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+<tr class="memitem:adfccfa7dce395277535f61f780d87c8b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">cycle_down</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ab0b624e4e72fca14c99bf1c41c430614"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a></td></tr>
+<tr class="memitem:a14c97918200da778388673728da29274"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a></td></tr>
+<tr class="memitem:a7dbec3b0b6ea24e22e651cf76f06dc04"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a></td></tr>
+<tr class="memitem:a2a238c710c2e91045ef9deae0faf8dc9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a></td></tr>
+<tr class="memitem:a7e69469f95464afbeb9feec927507243"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a></td></tr>
+<tr class="memitem:a7746d94ae036439d60c3e4a9e37f6d15"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a></td></tr>
+<tr class="memitem:a85fec05865342d7efca9d9fd11b60342"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a></td></tr>
+<tr class="memitem:abc7ec6777725e0ddffbbe2ecbe81c6a1"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a></td></tr>
+<tr class="memitem:aa4e3f22d4ff450097571e95caeda1b3d"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:a5d09c9e36ad159fcd23cfef8855cae61"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a> ()</td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a> (vc_class &amp;vc, <a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+<tr class="memitem:a47d450e9b9be0fab103f401ddcaeefac"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a> (<a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:aafad86ca11af64de2788637b466479f6"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a></td></tr>
+<tr class="memitem:accebb51f721d72fc6d460f1368180571"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a></td></tr>
+<tr class="memitem:a2b115cbde725e468000a1da234b2fc66"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a85309950568779a7e68089f34fdace12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a85309950568779a7e68089f34fdace12"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voronoicell</b></td></tr>
+<tr class="memitem:acf08adbb46393002b1d9c817131de822"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf08adbb46393002b1d9c817131de822"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voronoicell_neighbor</b></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a single Voronoi cell, as a collection of vertices that are connected by edges. The class contains routines for initializing the Voronoi cell to be simple shapes such as a box, tetrahedron, or octahedron. It the contains routines for recomputing the cell based on cutting it by a plane, which forms the key routine for the Voronoi cell computation. It contains numerous routine for computing statistics about the Voronoi cell, and it can output the cell in several formats.</p>
+<p>This class is not intended for direct use, but forms the base of the voronoicell and <a class="el" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> classes, which extend it based on whether neighboring particle ID information needs to be tracked. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00033">33</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a83d13bf519c98bf0ea5804763ffc967d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::voronoicell_base::voronoicell_base </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Constructs a Voronoi cell and sets up the initial memory. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00020">20</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac959634a1ae2e3201e96624f44e7e71e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::voronoicell_base::~voronoicell_base </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The voronoicell destructor deallocates all the dynamic memory. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00043">43</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a7ea57c92bba3110da745381c5877cec3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::centroid </td>
+ <td>(</td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>cx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>cy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double &amp;&#160;</td>
+ <td class="paramname"><em>cz</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates the centroid of the Voronoi cell, by decomposing the cell into tetrahedra extending outward from the zeroth vertex. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">(cx,cy,cz)</td><td>references to floating point numbers in which to pass back the centroid vector. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01408">1408</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3f6c0b98feb914c324248cd3d3baf43d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::check_duplicates </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine checks for any two vertices that are connected by more than one edge. The plane algorithm is designed so that this should not happen, so any occurrences are most likely errors. Note that the routine is O(p), so running it every time the plane routine is called will result in a significant slowdown. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00342">342</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af2c9d916f946ba8d9c7e4c0a7e65215b"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class vc_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">template void voro::voronoicell_base::check_memory_for_copy </td>
+ <td>(</td>
+ <td class="paramtype">vc_class &amp;&#160;</td>
+ <td class="paramname"><em>vc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *&#160;</td>
+ <td class="paramname"><em>vb</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Ensures that enough memory is allocated prior to carrying out a copy. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vc</td><td>a reference to the specialized version of the calling class. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vb</td><td>a pointered to the class to be copied. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00056">56</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae7bb21f644a45946001beef598a1da1f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::check_relations </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Checks that the relational table of the Voronoi cell is accurate, and prints out any errors. This algorithm is O(p), so running it every time the plane routine is called will result in a significant slowdown. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00331">331</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af49d85cd2a3daf84d623ab09ab7037cf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::construct_relations </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Constructs the relational table if the edges have been specified. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00349">349</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a47d450e9b9be0fab103f401ddcaeefac"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::copy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *&#160;</td>
+ <td class="paramname"><em>vb</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Copies the vertex and edge information from another class. The routine assumes that enough memory is available for the copy. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vb</td><td>a pointer to the class to copy. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00065">65</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adfccfa7dce395277535f61f780d87c8b"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::cycle_down </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a simple inline function for picking out the index of the next edge clockwise from the current vertex. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>the index of an edge of the current vertex. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>the number of the vertex. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>nu[p]-1 if a=0, or a-1 otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00221">221</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1d86762311d8860960a45cc409b14f0f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::cycle_up </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a simple inline function for picking out the index of the next edge counterclockwise at the current vertex. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">a</td><td>the index of an edge of the current vertex. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>the number of the vertex. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>0 if a=nu[p]-1, or a+1 otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00215">215</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1c0657c1d89313089bbd437170c97d46"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the edges of the Voronoi cell in gnuplot format to an output stream. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement vector to be added to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01507">1507</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac7cb75aa645c98107c9c0162fabf698e"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_gnuplot </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs the cell in Gnuplot format a given file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement to add to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00119">119</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a923ffa62bd5d62070cd29e01f3a1327a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_pov </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the edges of the Voronoi cell in POV-Ray format to an open file stream, displacing the cell by given vector. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement vector to be added to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01487">1487</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8138dc62fc6288c772b0483d0eb4eb96"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_pov </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs the cell in POV-Ray format, using cylinders for edges and spheres for vertices, to a given file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement to add to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00098">98</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1b52986eadcea3b6b230626a6dbddc40"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_pov_mesh </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the Voronoi cell in the POV mesh2 format, described in section 1.3.2.2 of the POV-Ray documentation. The mesh2 output consists of a list of vertex vectors, followed by a list of triangular faces. The routine also makes use of the optional inside_vector specification, which makes the mesh object solid, so the the POV-Ray Constructive Solid Geometry (CSG) can be applied. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement vector to be added to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>a file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01542">1542</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac572b3e8ed428c12f38243b48bf39099"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::draw_pov_mesh </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>filename</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs the cell in POV-Ray format as a mesh2 object to a given file. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>a displacement to add to the cell's position. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">filename</td><td>the name of the file to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00109">109</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4e6698c49580b3a64046230e02f0f8ea"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::face_areas </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates the areas of each face of the Voronoi cell and prints the results to an output stream. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01336">1336</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9df53445116446fafea8ffc4ee1afa76"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::face_freq_table </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes the number of edges that each face has and outputs a frequency table of the results. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01891">1891</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af9bad3fddace8e63ac4c0a5874aee7c5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::face_orders </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs a list of the number of edges in each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01866">1866</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a335daba5a84e43c278384cae6ecefff3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::face_perimeters </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine returns the perimeters of each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01807">1807</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a83e74ffece2b313f6691f467769a16f5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::face_vertices </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>For each face, this routine outputs a bracketed sequence of numbers containing a list of all the vertices that make up that face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01839">1839</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4c7f5406ba3beb1aa0d047592316c68d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::init_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmax</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes a Voronoi cell as a rectangular box with the given dimensions. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xmin,xmax)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ymin,ymax)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(zmin,zmax)</td><td>the minimum and maximum z coordinates. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00257">257</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aab954caa57c67a26c03b0377f5778bb1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::init_octahedron_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>l</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes a Voronoi cell as a regular octahedron. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">l</td><td>The distance from the octahedron center to a vertex. Six vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0), (0,l,0), (0,0,-l), and (0,0,l). </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00286">286</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae71280e1c36c5f840f870d55e91c027b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::init_tetrahedron_base </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initializes a Voronoi cell as a tetrahedron. It assumes that the normal to the face for the first three vertices points inside. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">(x0,y0,z0)</td><td>a position vector for the first vertex. </td></tr>
+ <tr><td class="paramname">(x1,y1,z1)</td><td>a position vector for the second vertex. </td></tr>
+ <tr><td class="paramname">(x2,y2,z2)</td><td>a position vector for the third vertex. </td></tr>
+ <tr><td class="paramname">(x3,y3,z3)</td><td>a position vector for the fourth vertex. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00312">312</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6a29a361a158db038a5c4c8e47322bd5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::voronoicell_base::max_radius_squared </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Computes the maximum radius squared of a vertex from the center of the cell. It can be used to determine when enough particles have been testing an all planes that could cut the cell have been considered. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The maximum radius squared of a vertex. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01454">1454</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a59dd181ccbcc66370ef8b5c4bf250843"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void voro::voronoicell_base::neighbors </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Returns a list of IDs of neighboring particles corresponding to each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>a reference to a vector in which to return the results. If no neighbor information is available, a blank vector is returned. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">voro::voronoicell_neighbor</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00197">197</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aebbbd4815cfbbe5cb1c71a682872664d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::normals </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>For each face of the Voronoi cell, this routine prints the out the normal vector of the face, and scales it to the distance from the cell center to that plane. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01639">1639</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a33184cd45a3090291a080c4aff08a2fd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class vc_class &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">template bool voro::voronoicell_base::nplane </td>
+ <td>(</td>
+ <td class="paramtype">vc_class &amp;&#160;</td>
+ <td class="paramname"><em>vc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Cuts the Voronoi cell by a particle whose center is at a separation of (x,y,z) from the cell center. The value of rsq should be initially set to <img class="formulaInl" alt="$x^2+y^2+z^2$" src="form_0.png"/>. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vc</td><td>a reference to the specialized version of the calling class. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the normal vector to the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the distance along this vector of the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p_id</td><td>the plane ID (for neighbor tracking only). </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00404">404</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5dbd3cd4e9e9a41744e1a2a4c8f550c0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::number_of_edges </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Counts the number of edges of the Voronoi cell. </p>
+<dl class="section return"><dt>Returns:</dt><dd>the number of edges. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02007">2007</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a56b835abe6d47cb67b206202125eb406"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::number_of_faces </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns the number of faces of a computed Voronoi cell. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The number of faces. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01721">1721</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a095c6bfc1b9b7a087d0b35b443e5c023"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs a custom string of information about the Voronoi cell to a file. It assumes the cell is at (0,0,0) and has a the default_radius associated with it. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom format string to use. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00182">182</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab6b8ff237f7b3e318c3756cd38586ec4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_custom </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>r</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs a custom string of information about the Voronoi cell. The string of information follows a similar style as the C printf command, and detailed information about its format is available at <a href="http://math.lbl.gov/voro++/doc/custom.html">http://math.lbl.gov/voro++/doc/custom.html</a>. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>the custom string to print. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">i</td><td>the ID of the particle associated with this Voronoi cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the particle associated with this Voronoi cell. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">r</td><td>a radius associated with the particle. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02023">2023</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0492ecd057449172ca6d3993cb0661e4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_face_areas </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs the areas of the faces. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00140">140</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a38929ec0787bb1acac5f1f7b9ec7cadf"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_face_freq_table </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs a </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00153">153</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad14069d3bebcda9353b07488f512800d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_face_orders </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs a list of the number of sides of each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00147">147</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5dc3ae580a5f25424d50d4015aa878ba"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_face_perimeters </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs a list of the perimeters of each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00166">166</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67d6682dd62b76162f83822a17de6fe5"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_face_vertices </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs the </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00159">159</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a99837f8d963c57c2c244518ba0ae4b8f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void voro::voronoicell_base::output_neighbors </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a virtual function that is overridden by a routine to print a list of IDs of neighboring particles corresponding to each face. By default, when no neighbor information is available, the routine does nothing. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">voro::voronoicell_neighbor</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00203">203</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aae096d26d957c3e5b0f02b20d493a3ff"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_normals </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Outputs a list of the perimeters of each face. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00173">173</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af92d19d0e7fc07006bcd8ea30c9df447"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_vertex_orders </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the vertex orders. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01751">1751</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aee879731b1f4feb9f630d9b7f9c0062f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_vertices </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the vertex vectors using the local coordinate system. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01772">1772</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aec32739bb3f9393f4ddc33d90796d494"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::output_vertices </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Outputs the vertex vectors using the global coordinate system. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the particle in the global coordinate system. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01798">1798</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af6fd00a511226fd8dc4f27e34f002fc1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_base::plane_intersects </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine tests to see whether the cell intersects a plane by starting from the guess point up. If up intersects, then it immediately returns true. Otherwise, it calls the plane_intersects_track() routine. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the normal vector to the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the distance along this vector of the plane. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane does not intersect the plane, true if it does. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01920">1920</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afe3d860ac52be1326e69ba8c0750530d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_base::plane_intersects_guess </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine tests to see if a cell intersects a plane. It first tests a random sample of approximately sqrt(p)/4 points. If any of those are intersect, then it immediately returns true. Otherwise, it takes the closest point and passes that to plane_intersect_track() routine. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the normal vector to the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the distance along this vector of the plane. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane does not intersect the plane, true if it does. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01933">1933</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8a7e29d041abbd58406e2c05a9a6248a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::print_edges </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Prints the vertices, their edges, the relation table, and also notifies if any memory errors are visible. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02220">2220</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac164b3767ce186360fb3308e349e058c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void voro::voronoicell_base::print_edges_neighbors </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This a virtual function that is overridden by a routine to print the neighboring particle IDs for a given vertex. By default, when no neighbor information is available, the routine does nothing. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">i</td><td>the vertex to consider. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Reimplemented in <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">voro::voronoicell_neighbor</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00209">209</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5d09c9e36ad159fcd23cfef8855cae61"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::reset_edges </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Several routines in the class that gather cell-based statistics internally track their progress by flipping edges to negative so that they know what parts of the cell have already been tested. This function resets them back to positive. When it is called, it assumes that every edge in the routine should have already been flipped to negative, and it bails out with an internal error if it encounters a positive edge. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01572">1572</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af1a68eea414a0a52b072005af7bd710a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::voronoicell_base::surface_area </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates the total surface area of the Voronoi cell. </p>
+<dl class="section return"><dt>Returns:</dt><dd>The computed area. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01372">1372</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a94fc0aba05c11fba465449bc1c4217e9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::voronoicell_base::total_edge_distance </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates the total edge distance of the Voronoi cell. </p>
+<dl class="section return"><dt>Returns:</dt><dd>A floating point number holding the calculated distance. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01468">1468</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab2c8534b380907975eb60f3441d50e1e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::translate </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Translates the vertices of the Voronoi cell by a given vector. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the coordinates of the vector. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00105">105</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adfed605232f7e6d1b52276010facbf08"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::vertex_orders </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns a vector of the vertex orders. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01744">1744</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab6b1755fb46b262df8f8bc2980c7470a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::vertices </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns a vector of the vertex vectors using the local coordinate system. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01760">1760</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4345486c4a2039f523d42fc670943fab"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_base::vertices </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">std::vector&lt; double &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns a vector of the vertex vectors in the global coordinate system. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>the vector to store the results in. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position vector of the particle in the global coordinate system. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01784">1784</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a92f69986a6f78e7b8b6d9f5778ed99ba"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double voro::voronoicell_base::volume </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Calculates the volume of the Voronoi cell, by decomposing the cell into tetrahedra extending outward from the zeroth vertex, whose volumes are evaluated using a scalar triple product. </p>
+<dl class="section return"><dt>Returns:</dt><dd>A floating point number holding the calculated volume. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l01299">1299</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a2a238c710c2e91045ef9deae0faf8dc9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::current_delete2_size</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This sets the size of the auxiliary delete stack. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00049">49</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7dbec3b0b6ea24e22e651cf76f06dc04"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::current_delete_size</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This sets the size of the main delete stack. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00047">47</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a14c97918200da778388673728da29274"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::current_vertex_order</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This holds the current maximum allowed order of a vertex, which sets the size of the mem, mep, and mec arrays. If a vertex is created with more vertices than this, the arrays are dynamically extended using the add_memory_vorder routine. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00045">45</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab0b624e4e72fca14c99bf1c41c430614"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::current_vertices</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This holds the current size of the arrays ed and nu, which hold the vertex information. If more vertices are created than can fit in this array, then it is dynamically extended using the add_memory_vertices routine. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00039">39</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a85fec05865342d7efca9d9fd11b60342"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::voronoicell_base::ed</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This is a two dimensional array that holds information about the edge connections of the vertices that make up the cell. The two dimensional array is not allocated in the usual method. To account for the fact the different vertices have different orders, and thus require different amounts of storage, the elements of ed[i] point to one-dimensional arrays in the mep[] array of different sizes.</p>
+<p>More specifically, if vertex i has order m, then ed[i] points to a one-dimensional array in mep[m] that has 2*m+1 entries. The first m elements hold the neighboring edges, so that the jth edge of vertex i is held in ed[i][j]. The next m elements hold a table of relations which is redundant but helps speed up the computation. It satisfies the relation ed[ed[i][j]][ed[i][m+j]]=i. The final entry holds a back pointer, so that ed[i+2*m]=i. The back pointers are used when rearranging the memory. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00078">78</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="accebb51f721d72fc6d460f1368180571"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::voronoicell_base::mec</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a one dimensional array that holds the current number of vertices of order p that are stored in the mep[p] array. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00229">229</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aafad86ca11af64de2788637b466479f6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::voronoicell_base::mem</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This a one dimensional array that holds the current sizes of the memory allocations for them mep array. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00225">225</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b115cbde725e468000a1da234b2fc66"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::voronoicell_base::mep</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a two dimensional array for holding the information about the edges of the Voronoi cell. mep[p] is a one-dimensional array for holding the edge information about all vertices of order p, with each vertex holding 2*p+1 integers of information. The total number of vertices held on mep[p] is stored in mem[p]. If the space runs out, the code allocates more using the add_memory() routine. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00237">237</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abc7ec6777725e0ddffbbe2ecbe81c6a1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int* voro::voronoicell_base::nu</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This array holds the order of the vertices in the Voronoi cell. This array is dynamically allocated, with its current size held by current_vertices. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00082">82</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7e69469f95464afbeb9feec927507243"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::p</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This sets the total number of vertices in the current cell. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00052">52</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa4e3f22d4ff450097571e95caeda1b3d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double* voro::voronoicell_base::pts</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This in an array with size 3*current_vertices for holding the positions of the vertices. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00085">85</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7746d94ae036439d60c3e4a9e37f6d15"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::voronoicell_base::up</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This is the index of particular point in the cell, which is used to start the tracing routines for plane intersection and cutting. These routines will work starting from any point, but it's often most efficient to start from the last point considered, since in many cases, the cell construction algorithm may consider many planes with similar vectors concurrently. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00060">60</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="cell_8hh_source.html">cell.hh</a></li>
+<li><a class="el" href="cell_8cc_source.html">cell.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1voronoicell__base.png b/lib/voro++/html/classvoro_1_1voronoicell__base.png
new file mode 100644
index 000000000..1d5f3fb4f
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1voronoicell__base.png differ
diff --git a/lib/voro++/html/classvoro_1_1voronoicell__neighbor.html b/lib/voro++/html/classvoro_1_1voronoicell__neighbor.html
new file mode 100644
index 000000000..7ee555c70
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1voronoicell__neighbor.html
@@ -0,0 +1,831 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::voronoicell_neighbor Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#friends">Friends</a> </div>
+ <div class="headertitle">
+<div class="title">voro::voronoicell_neighbor Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell with neighbor information.
+ <a href="classvoro_1_1voronoicell__neighbor.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="cell_8hh_source.html">cell.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::voronoicell_neighbor:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1voronoicell__neighbor.png" usemap="#voro::voronoicell_neighbor_map" alt=""/>
+ <map id="voro::voronoicell_neighbor_map" name="voro::voronoicell_neighbor_map">
+<area href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell." alt="voro::voronoicell_base" shape="rect" coords="0,0,164,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a4fdf7a7b46bb5b8e6c9613308ad399c0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voronoicell_neighbor</a> ()</td></tr>
+<tr class="memitem:a196e44ab9b3caf7d5862fa47ee3341fe"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">~voronoicell_neighbor</a> ()</td></tr>
+<tr class="memitem:ac6036ae44845e301da1e3656e0e98403"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">operator=</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c)</td></tr>
+<tr class="memitem:a0754fe4a44916b68bf3cda3d129b3a69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a0754fe4a44916b68bf3cda3d129b3a69">operator=</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c)</td></tr>
+<tr class="memitem:a1f0d64e7c42503ada9204cfaeb61027f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane</a> (double x, double y, double z, double rsq, int p_id)</td></tr>
+<tr class="memitem:aa8bc77ca240ae0675be493b26513eb18"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#aa8bc77ca240ae0675be493b26513eb18">nplane</a> (double x, double y, double z, int p_id)</td></tr>
+<tr class="memitem:ab71c4487bbca2d20b00e9af2fc6d1ed0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0">plane</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:a8bac2d46226b8dbb88ad3e3d58d10cf7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a8bac2d46226b8dbb88ad3e3d58d10cf7">plane</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ac20bf4f827fd1fc20c1596a8cec95fa3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">init</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</td></tr>
+<tr class="memitem:a3648ccb2b3bdf7832779ea7d311d129c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">init_octahedron</a> (double l)</td></tr>
+<tr class="memitem:a71f908538fa59e4a1ab1d44834f1f3f9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">init_tetrahedron</a> (double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)</td></tr>
+<tr class="memitem:aa3d80872ecb0dbccbc951082428c13c1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">check_facets</a> ()</td></tr>
+<tr class="memitem:a1b18405092d2229e1001933925f403ca"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">neighbors</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a868581daaec73455618629e668c92d38"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">print_edges_neighbors</a> (int i)</td></tr>
+<tr class="memitem:a2b212f8abaf92200e8ee4b5eee0e60d1"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">output_neighbors</a> (FILE *fp=stdout)</td></tr>
+<tr class="inherit_header pub_methods_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Public Member Functions inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:a83d13bf519c98bf0ea5804763ffc967d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voronoicell_base</a> ()</td></tr>
+<tr class="memitem:ac959634a1ae2e3201e96624f44e7e71e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">~voronoicell_base</a> ()</td></tr>
+<tr class="memitem:a4c7f5406ba3beb1aa0d047592316c68d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">init_base</a> (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</td></tr>
+<tr class="memitem:aab954caa57c67a26c03b0377f5778bb1 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">init_octahedron_base</a> (double l)</td></tr>
+<tr class="memitem:ae71280e1c36c5f840f870d55e91c027b inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">init_tetrahedron_base</a> (double x0, double y0, double z0, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3)</td></tr>
+<tr class="memitem:ab2c8534b380907975eb60f3441d50e1e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">translate</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a923ffa62bd5d62070cd29e01f3a1327a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a8138dc62fc6288c772b0483d0eb4eb96 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96">draw_pov</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1b52986eadcea3b6b230626a6dbddc40 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">draw_pov_mesh</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac572b3e8ed428c12f38243b48bf39099 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099">draw_pov_mesh</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a1c0657c1d89313089bbd437170c97d46 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ac7cb75aa645c98107c9c0162fabf698e inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e">draw_gnuplot</a> (double x, double y, double z, const char *filename)</td></tr>
+<tr class="memitem:a92f69986a6f78e7b8b6d9f5778ed99ba inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a> ()</td></tr>
+<tr class="memitem:a6a29a361a158db038a5c4c8e47322bd5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">max_radius_squared</a> ()</td></tr>
+<tr class="memitem:a94fc0aba05c11fba465449bc1c4217e9 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">total_edge_distance</a> ()</td></tr>
+<tr class="memitem:af1a68eea414a0a52b072005af7bd710a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">surface_area</a> ()</td></tr>
+<tr class="memitem:a7ea57c92bba3110da745381c5877cec3 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">centroid</a> (double &amp;cx, double &amp;cy, double &amp;cz)</td></tr>
+<tr class="memitem:a56b835abe6d47cb67b206202125eb406 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">number_of_faces</a> ()</td></tr>
+<tr class="memitem:a5dbd3cd4e9e9a41744e1a2a4c8f550c0 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">number_of_edges</a> ()</td></tr>
+<tr class="memitem:adfed605232f7e6d1b52276010facbf08 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">vertex_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:af92d19d0e7fc07006bcd8ea30c9df447 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">output_vertex_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b1755fb46b262df8f8bc2980c7470a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">vertices</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aee879731b1f4feb9f630d9b7f9c0062f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">output_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4345486c4a2039f523d42fc670943fab inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4345486c4a2039f523d42fc670943fab">vertices</a> (double x, double y, double z, std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aec32739bb3f9393f4ddc33d90796d494 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aec32739bb3f9393f4ddc33d90796d494">output_vertices</a> (double x, double y, double z, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a4e6698c49580b3a64046230e02f0f8ea inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">face_areas</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a0492ecd057449172ca6d3993cb0661e4 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">output_face_areas</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:af9bad3fddace8e63ac4c0a5874aee7c5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">face_orders</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:ad14069d3bebcda9353b07488f512800d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">output_face_orders</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a9df53445116446fafea8ffc4ee1afa76 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">face_freq_table</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a38929ec0787bb1acac5f1f7b9ec7cadf inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">output_face_freq_table</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a83e74ffece2b313f6691f467769a16f5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">face_vertices</a> (std::vector&lt; int &gt; &amp;v)</td></tr>
+<tr class="memitem:a67d6682dd62b76162f83822a17de6fe5 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">output_face_vertices</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a335daba5a84e43c278384cae6ecefff3 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">face_perimeters</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:a5dc3ae580a5f25424d50d4015aa878ba inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">output_face_perimeters</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:aebbbd4815cfbbe5cb1c71a682872664d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">normals</a> (std::vector&lt; double &gt; &amp;v)</td></tr>
+<tr class="memitem:aae096d26d957c3e5b0f02b20d493a3ff inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">output_normals</a> (FILE *fp=stdout)</td></tr>
+<tr class="memitem:a095c6bfc1b9b7a087d0b35b443e5c023 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a> (const char *format, FILE *fp=stdout)</td></tr>
+<tr class="memitem:ab6b8ff237f7b3e318c3756cd38586ec4 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab6b8ff237f7b3e318c3756cd38586ec4">output_custom</a> (const char *format, int i, double x, double y, double z, double r, FILE *fp=stdout)</td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:a33184cd45a3090291a080c4aff08a2fd"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">nplane</a> (vc_class &amp;vc, double x, double y, double z, double rsq, int p_id)</td></tr>
+<tr class="memitem:af6fd00a511226fd8dc4f27e34f002fc1 inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">plane_intersects</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:afe3d860ac52be1326e69ba8c0750530d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">plane_intersects_guess</a> (double x, double y, double z, double rsq)</td></tr>
+<tr class="memitem:af49d85cd2a3daf84d623ab09ab7037cf inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">construct_relations</a> ()</td></tr>
+<tr class="memitem:ae7bb21f644a45946001beef598a1da1f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">check_relations</a> ()</td></tr>
+<tr class="memitem:a3f6c0b98feb914c324248cd3d3baf43d inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">check_duplicates</a> ()</td></tr>
+<tr class="memitem:a8a7e29d041abbd58406e2c05a9a6248a inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">print_edges</a> ()</td></tr>
+<tr class="memitem:a1d86762311d8860960a45cc409b14f0f inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">cycle_up</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+<tr class="memitem:adfccfa7dce395277535f61f780d87c8b inherit pub_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">cycle_down</a> (int a, int <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>)</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:aaa1c991b6f5af826bac0f4c7d5f6bf5c"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">mne</a></td></tr>
+<tr class="memitem:a7c061d08eac012b23588032779603a19"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">ne</a></td></tr>
+<tr class="inherit_header pub_attribs_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Data Fields inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:ab0b624e4e72fca14c99bf1c41c430614 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">current_vertices</a></td></tr>
+<tr class="memitem:a14c97918200da778388673728da29274 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">current_vertex_order</a></td></tr>
+<tr class="memitem:a7dbec3b0b6ea24e22e651cf76f06dc04 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">current_delete_size</a></td></tr>
+<tr class="memitem:a2a238c710c2e91045ef9deae0faf8dc9 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">current_delete2_size</a></td></tr>
+<tr class="memitem:a7e69469f95464afbeb9feec927507243 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a></td></tr>
+<tr class="memitem:a7746d94ae036439d60c3e4a9e37f6d15 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">up</a></td></tr>
+<tr class="memitem:a85fec05865342d7efca9d9fd11b60342 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">ed</a></td></tr>
+<tr class="memitem:abc7ec6777725e0ddffbbe2ecbe81c6a1 inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">nu</a></td></tr>
+<tr class="memitem:aa4e3f22d4ff450097571e95caeda1b3d inherit pub_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
+Friends</h2></td></tr>
+<tr class="memitem:a4370063e32384c34b2f412a1b931b593"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4370063e32384c34b2f412a1b931b593"></a>
+class&#160;</td><td class="memItemRight" valign="bottom"><b>voronoicell_base</b></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_methods_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Member Functions inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:a5d09c9e36ad159fcd23cfef8855cae61 inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">reset_edges</a> ()</td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memTemplParams" colspan="2">template&lt;class vc_class &gt; </td></tr>
+<tr class="memitem:af2c9d916f946ba8d9c7e4c0a7e65215b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">check_memory_for_copy</a> (vc_class &amp;vc, <a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+<tr class="memitem:a47d450e9b9be0fab103f401ddcaeefac inherit pro_methods_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">copy</a> (<a class="el" href="classvoro_1_1voronoicell__base.html">voronoicell_base</a> *vb)</td></tr>
+<tr class="inherit_header pro_attribs_classvoro_1_1voronoicell__base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classvoro_1_1voronoicell__base')"><img src="closed.png" alt="-"/>&nbsp;Protected Attributes inherited from <a class="el" href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></td></tr>
+<tr class="memitem:aafad86ca11af64de2788637b466479f6 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">mem</a></td></tr>
+<tr class="memitem:accebb51f721d72fc6d460f1368180571 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">mec</a></td></tr>
+<tr class="memitem:a2b115cbde725e468000a1da234b2fc66 inherit pro_attribs_classvoro_1_1voronoicell__base"><td class="memItemLeft" align="right" valign="top">int **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">mep</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class is an extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class, in cases when the IDs of neighboring particles associated with each face of the Voronoi cell. It contains additional data structures mne and ne for storing this information. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00403">403</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a4fdf7a7b46bb5b8e6c9613308ad399c0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::voronoicell_neighbor::voronoicell_neighbor </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class constructor allocates memory for storing neighbor information. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02180">2180</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a196e44ab9b3caf7d5862fa47ee3341fe"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::voronoicell_neighbor::~voronoicell_neighbor </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The class destructor frees the dynamically allocated memory for storing neighbor information. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02191">2191</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aa3d80872ecb0dbccbc951082428c13c1"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::check_facets </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This routine checks to make sure the neighbor information of each face is consistent. </p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02159">2159</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac20bf4f827fd1fc20c1596a8cec95fa3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::init </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xmax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ymax</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmin</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zmax</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This initializes the class to be a rectangular box. It calls the base class initialization routine to set up the edge and vertex information, and then sets up the neighbor information, with initial faces being assigned ID numbers from -1 to -6. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xmin,xmax)</td><td>the minimum and maximum x coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(ymin,ymax)</td><td>the minimum and maximum y coordinates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(zmin,zmax)</td><td>the minimum and maximum z coordinates. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02105">2105</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3648ccb2b3bdf7832779ea7d311d129c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::init_octahedron </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>l</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This initializes the class to be an octahedron. It calls the base class initialization routine to set up the edge and vertex information, and then sets up the neighbor information, with the initial faces being assigned ID numbers from -1 to -8. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">l</td><td>The distance from the octahedron center to a vertex. Six vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0), (0,l,0), (0,0,-l), and (0,0,l). </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02127">2127</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a71f908538fa59e4a1ab1d44834f1f3f9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::init_tetrahedron </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z0</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y3</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This initializes the class to be a tetrahedron. It calls the base class initialization routine to set up the edge and vertex information, and then sets up the neighbor information, with the initial faces being assigned ID numbers from -1 to -4. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">(x0,y0,z0)</td><td>a position vector for the first vertex. </td></tr>
+ <tr><td class="paramname">(x1,y1,z1)</td><td>a position vector for the second vertex. </td></tr>
+ <tr><td class="paramname">(x2,y2,z2)</td><td>a position vector for the third vertex. </td></tr>
+ <tr><td class="paramname">(x3,y3,z3)</td><td>a position vector for the fourth vertex. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02147">2147</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1b18405092d2229e1001933925f403ca"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::neighbors </td>
+ <td>(</td>
+ <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
+ <td class="paramname"><em>v</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Computes a vector list of neighbors. </p>
+
+<p>Reimplemented from <a class="el" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">voro::voronoicell_base</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02198">2198</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1f0d64e7c42503ada9204cfaeb61027f"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_neighbor::nplane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts the Voronoi cell by a particle whose center is at a separation of (x,y,z) from the cell center. The value of rsq should be initially set to <img class="formulaInl" alt="$x^2+y^2+z^2$" src="form_0.png"/>. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the normal vector to the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the distance along this vector of the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p_id</td><td>the plane ID (for neighbor tracking only). </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00430">430</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa8bc77ca240ae0675be493b26513eb18"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_neighbor::nplane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>p_id</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This routine calculates the modulus squared of the vector before passing it to the main <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane()</a> routine with full arguments. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to cut the cell by. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p_id</td><td>the plane ID (for neighbor tracking only). </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00440">440</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac6036ae44845e301da1e3656e0e98403"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::operator= </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Copies the information from another voronoicell class into this class, extending memory allocation if necessary. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>the class to copy. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00080">80</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0754fe4a44916b68bf3cda3d129b3a69"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::operator= </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Copies the information from another <a class="el" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> class into this class, extending memory allocation if necessary. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>the class to copy. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l00093">93</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2b212f8abaf92200e8ee4b5eee0e60d1"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual void voro::voronoicell_neighbor::output_neighbors </td>
+ <td>(</td>
+ <td class="paramtype">FILE *&#160;</td>
+ <td class="paramname"><em>fp</em> = <code>stdout</code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This is a virtual function that is overridden by a routine to print a list of IDs of neighboring particles corresponding to each face. By default, when no neighbor information is available, the routine does nothing. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">fp</td><td>the file handle to write to. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Reimplemented from <a class="el" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">voro::voronoicell_base</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00472">472</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab71c4487bbca2d20b00e9af2fc6d1ed0"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_neighbor::plane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rsq</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This version of the plane routine just makes up the plane ID to be zero. It will only be referenced if neighbor tracking is enabled. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to cut the cell by. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rsq</td><td>the modulus squared of the vector. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00451">451</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8bac2d46226b8dbb88ad3e3d58d10cf7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::voronoicell_neighbor::plane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell using the influence of a particle at (x,y,z), first calculating the modulus squared of this vector before passing it to the main <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">nplane()</a> routine. Zero is supplied as the plane ID, which will be ignored unless neighbor tracking is enabled. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to cut the cell by. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>False if the plane cut deleted the cell entirely, true otherwise. </dd></dl>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00462">462</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a868581daaec73455618629e668c92d38"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::voronoicell_neighbor::print_edges_neighbors </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>i</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>This prints out the neighbor information for vertex i. </p>
+
+<p>Reimplemented from <a class="el" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">voro::voronoicell_base</a>.</p>
+
+<p>Definition at line <a class="el" href="cell_8cc_source.html#l02237">2237</a> of file <a class="el" href="cell_8cc_source.html">cell.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="aaa1c991b6f5af826bac0f4c7d5f6bf5c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::voronoicell_neighbor::mne</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This two dimensional array holds the neighbor information associated with each vertex. mne[p] is a one dimensional array which holds all of the neighbor information for vertices of order p. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00410">410</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7c061d08eac012b23588032779603a19"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int** voro::voronoicell_neighbor::ne</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>This is a two dimensional array that holds the neighbor information associated with each vertex. ne[i] points to a one-dimensional array in mne[nu[i]]. ne[i][j] holds the neighbor information associated with the jth edge of vertex i. It is set to the ID number of the plane that made the face that is clockwise from the jth edge. </p>
+
+<p>Definition at line <a class="el" href="cell_8hh_source.html#l00417">417</a> of file <a class="el" href="cell_8hh_source.html">cell.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="cell_8hh_source.html">cell.hh</a></li>
+<li><a class="el" href="cell_8cc_source.html">cell.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1voronoicell__neighbor.png b/lib/voro++/html/classvoro_1_1voronoicell__neighbor.png
new file mode 100644
index 000000000..2dab9ff97
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1voronoicell__neighbor.png differ
diff --git a/lib/voro++/html/classvoro_1_1wall.html b/lib/voro++/html/classvoro_1_1wall.html
new file mode 100644
index 000000000..ccd822b4f
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1wall.html
@@ -0,0 +1,237 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1wall.html">wall</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Pure virtual class from which wall objects are derived.
+ <a href="classvoro_1_1wall.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container_8hh_source.html">container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1wall.png" usemap="#voro::wall_map" alt=""/>
+ <map id="voro::wall_map" name="voro::wall_map">
+<area href="structvoro_1_1wall__cone.html" title="A class representing a conical wall object." alt="voro::wall_cone" shape="rect" coords="0,56,119,80"/>
+<area href="structvoro_1_1wall__cylinder.html" title="A class representing a cylindrical wall object." alt="voro::wall_cylinder" shape="rect" coords="129,56,248,80"/>
+<area href="structvoro_1_1wall__plane.html" title="A class representing a plane wall object." alt="voro::wall_plane" shape="rect" coords="258,56,377,80"/>
+<area href="structvoro_1_1wall__sphere.html" title="A class representing a spherical wall object." alt="voro::wall_sphere" shape="rect" coords="387,56,506,80"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ae49edf1ae1036be9ffaa5c2bd7fcd82d"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">point_inside</a> (double x, double y, double z)=0</td></tr>
+<tr class="memitem:ab54b4c6d37223584f1fbf653d0b17d14"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c, double x, double y, double z)=0</td></tr>
+<tr class="memitem:a1e246285ea5a5879e4370db9633e75a6"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c, double x, double y, double z)=0</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This is a pure virtual class for a generic wall object. A wall object can be specified by deriving a new class from this and specifying the functions. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00031">31</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div><hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ab54b4c6d37223584f1fbf653d0b17d14"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool voro::wall::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell without neighbor-tracking with a wall. </p>
+
+<p>Implemented in <a class="el" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261">voro::wall_cone</a>, <a class="el" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99">voro::wall_cylinder</a>, <a class="el" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd">voro::wall_plane</a>, and <a class="el" href="structvoro_1_1wall__sphere.html#a0ded43a5ed66e6099203c780e03e1fff">voro::wall_sphere</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1e246285ea5a5879e4370db9633e75a6"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool voro::wall::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell with neighbor-tracking enabled with a wall. </p>
+
+<p>Implemented in <a class="el" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb">voro::wall_cone</a>, <a class="el" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb">voro::wall_cylinder</a>, <a class="el" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713">voro::wall_plane</a>, and <a class="el" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197">voro::wall_sphere</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae49edf1ae1036be9ffaa5c2bd7fcd82d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual bool voro::wall::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for testing whether a point is inside the wall object. </p>
+
+<p>Implemented in <a class="el" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">voro::wall_cone</a>, <a class="el" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">voro::wall_cylinder</a>, <a class="el" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">voro::wall_plane</a>, and <a class="el" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">voro::wall_sphere</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="container_8hh_source.html">container.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1wall.png b/lib/voro++/html/classvoro_1_1wall.png
new file mode 100644
index 000000000..c29007461
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1wall.png differ
diff --git a/lib/voro++/html/classvoro_1_1wall__list.html b/lib/voro++/html/classvoro_1_1wall__list.html
new file mode 100644
index 000000000..e36d0f086
--- /dev/null
+++ b/lib/voro++/html/classvoro_1_1wall__list.html
@@ -0,0 +1,477 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall_list Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="classvoro_1_1wall__list.html">wall_list</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> &#124;
+<a href="#pro-methods">Protected Member Functions</a> &#124;
+<a href="#pro-attribs">Protected Attributes</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall_list Class Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class for storing a list of pointers to walls.
+ <a href="classvoro_1_1wall__list.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="container_8hh_source.html">container.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall_list:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="classvoro_1_1wall__list.png" usemap="#voro::wall_list_map" alt=""/>
+ <map id="voro::wall_list_map" name="voro::wall_list_map">
+<area href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box." alt="voro::container_base" shape="rect" coords="70,56,201,80"/>
+<area href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations." alt="voro::container" shape="rect" coords="0,112,131,136"/>
+<area href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations." alt="voro::container_poly" shape="rect" coords="141,112,272,136"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a248fb5d008de9a5a97d4720d47794698"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list</a> ()</td></tr>
+<tr class="memitem:a8b0402f2bfad31b7d0204d4120cd60be"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">~wall_list</a> ()</td></tr>
+<tr class="memitem:aca50327f246b61f6aeef5337327d957d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> *w)</td></tr>
+<tr class="memitem:a8e3a5253fa0392bf0f8b7a84eb1b61d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a> (<a class="el" href="classvoro_1_1wall.html">wall</a> &amp;w)</td></tr>
+<tr class="memitem:af872ae39e2bb8fe1e6947644a84cb1a8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#af872ae39e2bb8fe1e6947644a84cb1a8">add_wall</a> (<a class="el" href="classvoro_1_1wall__list.html">wall_list</a> &amp;wl)</td></tr>
+<tr class="memitem:ae6d83d60ffa99fb6712445616883d1c8"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019"><td class="memTemplParams" colspan="2">template&lt;class c_class &gt; </td></tr>
+<tr class="memitem:ae3d367bca20c8d5714e2978ed67fe019"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a> (c_class &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a49c42b672f2eb7535c3b3564bb6cf51f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">deallocate</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:abfc54768de5b596237d7eef5f589fe90"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a></td></tr>
+<tr class="memitem:abb48a3e29042c51cf48fa6a6b6c2dc1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
+Protected Member Functions</h2></td></tr>
+<tr class="memitem:afb2cd60a3624dd4033ccddd690321489"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a> ()</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a>
+Protected Attributes</h2></td></tr>
+<tr class="memitem:a292491bc99b6bbc819bb3720fcfb08a1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classvoro_1_1wall.html">wall</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">wel</a></td></tr>
+<tr class="memitem:a8a06b6562bbf488ff30852cd1a548506"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class stores a list of pointers to wall classes. It contains several simple routines that make use of the wall classes (such as telling whether a given position is inside all of the walls or not). It can be used by itself, but also forms part of <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a>, for associating walls with this class. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00052">52</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a248fb5d008de9a5a97d4720d47794698"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_list::wall_list </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The <a class="el" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> constructor sets up an array of pointers to wall classes. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00518">518</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8b0402f2bfad31b7d0204d4120cd60be"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_list::~wall_list </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The <a class="el" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> destructor frees the array of pointers to the wall classes. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00523">523</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="aca50327f246b61f6aeef5337327d957d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::wall_list::add_wall </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1wall.html">wall</a> *&#160;</td>
+ <td class="paramname"><em>w</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Adds a wall to the list. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">w</td><td>the wall to add. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00063">63</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8e3a5253fa0392bf0f8b7a84eb1b61d4"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::wall_list::add_wall </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1wall.html">wall</a> &amp;&#160;</td>
+ <td class="paramname"><em>w</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Adds a wall to the list. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">w</td><td>a reference to the wall to add. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00069">69</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af872ae39e2bb8fe1e6947644a84cb1a8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::wall_list::add_wall </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1wall__list.html">wall_list</a> &amp;&#160;</td>
+ <td class="paramname"><em>wl</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Adds all of the walls on another <a class="el" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> to this class. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">wl</td><td>a reference to the wall class. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00529">529</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae3d367bca20c8d5714e2978ed67fe019"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class c_class &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_list::apply_walls </td>
+ <td>(</td>
+ <td class="paramtype">c_class &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Cuts a Voronoi cell by all of the walls currently on the list. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">c</td><td>a reference to the Voronoi cell class. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position of the cell. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell still exists, false if the cell is deleted. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00086">86</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a49c42b672f2eb7535c3b3564bb6cf51f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::wall_list::deallocate </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Deallocates all of the wall classes pointed to by the <a class="el" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a>. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00534">534</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="afb2cd60a3624dd4033ccddd690321489"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void voro::wall_list::increase_wall_memory </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Increases the memory allocation for the walls array. </p>
+
+<p>Definition at line <a class="el" href="container_8cc_source.html#l00539">539</a> of file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae6d83d60ffa99fb6712445616883d1c8"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_list::point_inside_walls </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Determines whether a given position is inside all of the walls on the list. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the position to test. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if it is inside, false if it is outside. </dd></dl>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00075">75</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a8a06b6562bbf488ff30852cd1a548506"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::wall_list::current_wall_size</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>The current amount of memory allocated for walls. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00097">97</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abfc54768de5b596237d7eef5f589fe90"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1wall.html">wall</a>** voro::wall_list::walls</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An array holding pointers to wall objects. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00055">55</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a292491bc99b6bbc819bb3720fcfb08a1"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1wall.html">wall</a>** voro::wall_list::wel</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">protected</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pointer to the limit of the walls array, used to determine when array is full. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00095">95</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="abb48a3e29042c51cf48fa6a6b6c2dc1d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classvoro_1_1wall.html">wall</a>** voro::wall_list::wep</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>A pointer to the next free position to add a wall pointer. </p>
+
+<p>Definition at line <a class="el" href="container_8hh_source.html#l00058">58</a> of file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="container_8hh_source.html">container.hh</a></li>
+<li><a class="el" href="container_8cc_source.html">container.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/classvoro_1_1wall__list.png b/lib/voro++/html/classvoro_1_1wall__list.png
new file mode 100644
index 000000000..4d382f272
Binary files /dev/null and b/lib/voro++/html/classvoro_1_1wall__list.png differ
diff --git a/lib/voro++/html/closed.png b/lib/voro++/html/closed.png
new file mode 100644
index 000000000..98cc2c909
Binary files /dev/null and b/lib/voro++/html/closed.png differ
diff --git a/lib/voro++/html/common_8cc.html b/lib/voro++/html/common_8cc.html
new file mode 100644
index 000000000..ccba9d5d4
--- /dev/null
+++ b/lib/voro++/html/common_8cc.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: common.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">common.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Implementations of the small helper functions.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+</div>
+<p><a href="common_8cc_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:aeaf79f7ede69e27e75d30528f0837c27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_vector</b> (std::vector&lt; int &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:aeaf79f7ede69e27e75d30528f0837c27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector of integers. <a href="#aeaf79f7ede69e27e75d30528f0837c27"></a><br/></td></tr>
+<tr class="memitem:a3595e6e5307cf443d7bccbb3d02ac6dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_vector</b> (std::vector&lt; double &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:a3595e6e5307cf443d7bccbb3d02ac6dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector of doubles. <a href="#a3595e6e5307cf443d7bccbb3d02ac6dd"></a><br/></td></tr>
+<tr class="memitem:a11f6a7d9f6034dbfa2f8f3705bc1cb7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_face_vertices</b> (std::vector&lt; int &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:a11f6a7d9f6034dbfa2f8f3705bc1cb7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector a face vertex information. <a href="#a11f6a7d9f6034dbfa2f8f3705bc1cb7a"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="common_8cc_source.html">common.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/common_8cc_source.html b/lib/voro++/html/common_8cc_source.html
new file mode 100644
index 000000000..c6cd07b06
--- /dev/null
+++ b/lib/voro++/html/common_8cc_source.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: common.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">common.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="common_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file common.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Implementations of the small helper functions. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/** \brief Prints a vector of integers.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * Prints a vector of integers.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * \param[in] v the vector to print.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * \param[in] fp the file stream to print to. */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keywordtype">void</span> voro_print_vector(std::vector&lt;int&gt; &amp;v,FILE *fp) {</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">int</span> k=0,s=v.size();</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">while</span>(k+4&lt;s) {</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d %d %d %d &quot;</span>,v[k],v[k+1],v[k+2],v[k+3]);</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; k+=4;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">if</span>(k+3&lt;=s) {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keywordflow">if</span>(k+4==s) fprintf(fp,<span class="stringliteral">&quot;%d %d %d %d&quot;</span>,v[k],v[k+1],v[k+2],v[k+3]);</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">else</span> fprintf(fp,<span class="stringliteral">&quot;%d %d %d&quot;</span>,v[k],v[k+1],v[k+2]);</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">if</span>(k+2==s) fprintf(fp,<span class="stringliteral">&quot;%d %d&quot;</span>,v[k],v[k+1]);</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">else</span> fprintf(fp,<span class="stringliteral">&quot;%d&quot;</span>,v[k]);</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; }</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;}</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">/** \brief Prints a vector of doubles.</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * Prints a vector of doubles.</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * \param[in] v the vector to print.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * \param[in] fp the file stream to print to. */</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keywordtype">void</span> voro_print_vector(std::vector&lt;double&gt; &amp;v,FILE *fp) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">int</span> k=0,s=v.size();</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">while</span>(k+4&lt;s) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g %g &quot;</span>,v[k],v[k+1],v[k+2],v[k+3]);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; k+=4;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; }</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">if</span>(k+3&lt;=s) {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>(k+4==s) fprintf(fp,<span class="stringliteral">&quot;%g %g %g %g&quot;</span>,v[k],v[k+1],v[k+2],v[k+3]);</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">else</span> fprintf(fp,<span class="stringliteral">&quot;%g %g %g&quot;</span>,v[k],v[k+1],v[k+2]);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span>(k+2==s) fprintf(fp,<span class="stringliteral">&quot;%g %g&quot;</span>,v[k],v[k+1]);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">else</span> fprintf(fp,<span class="stringliteral">&quot;%g&quot;</span>,v[k]);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/** \brief Prints a vector a face vertex information.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * Prints a vector of face vertex information. A value is read, which</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * corresponds to the number of vertices in the next face. The routine reads</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * this number of values and prints them as a bracked list. This is repeated</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * until the end of the vector is reached.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * \param[in] v the vector to interpret and print.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * \param[in] fp the file stream to print to. */</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">void</span> voro_print_face_vertices(std::vector&lt;int&gt; &amp;v,FILE *fp) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> j,k=0,l;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span>(v.size()&gt;0) {</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; l=v[k++];</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span>(l&lt;=1) {</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(l==1) fprintf(fp,<span class="stringliteral">&quot;(%d)&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span> fputs(<span class="stringliteral">&quot;()&quot;</span>,fp);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; j=k+l;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; fprintf(fp,<span class="stringliteral">&quot;(%d&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">while</span>(k&lt;j) fprintf(fp,<span class="stringliteral">&quot;,%d&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; fputs(<span class="stringliteral">&quot;)&quot;</span>,fp);</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; }</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">while</span>((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) k&lt;v.size()) {</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; l=v[k++];</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">if</span>(l&lt;=1) {</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(l==1) fprintf(fp,<span class="stringliteral">&quot; (%d)&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">else</span> fputs(<span class="stringliteral">&quot; ()&quot;</span>,fp);</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; j=k+l;</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; fprintf(fp,<span class="stringliteral">&quot; (%d&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">while</span>(k&lt;j) fprintf(fp,<span class="stringliteral">&quot;,%d&quot;</span>,v[k++]);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; fputs(<span class="stringliteral">&quot;)&quot;</span>,fp);</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/common_8hh.html b/lib/voro++/html/common_8hh.html
new file mode 100644
index 000000000..28dbe6a8e
--- /dev/null
+++ b/lib/voro++/html/common_8hh.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: common.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">common.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the small helper functions.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cstdio&gt;</code><br/>
+<code>#include &lt;cstdlib&gt;</code><br/>
+<code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+</div>
+<p><a href="common_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a05bc69954a2bedaae0ff67959f5c41b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_fatal_error</b> (const char *p, int status)</td></tr>
+<tr class="memdesc:a05bc69954a2bedaae0ff67959f5c41b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function for printing fatal error messages and exiting. <a href="#a05bc69954a2bedaae0ff67959f5c41b7"></a><br/></td></tr>
+<tr class="memitem:aad33c93bac2437365df9a5576e0f58d5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_positions</b> (std::vector&lt; double &gt; &amp;v, FILE *fp=stdout)</td></tr>
+<tr class="memdesc:aad33c93bac2437365df9a5576e0f58d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector of positions. <a href="#aad33c93bac2437365df9a5576e0f58d5"></a><br/></td></tr>
+<tr class="memitem:aeb6ce4b7155ead270878e32d7fb355c0"><td class="memItemLeft" align="right" valign="top">FILE *&#160;</td><td class="memItemRight" valign="bottom"><b>voro::safe_fopen</b> (const char *filename, const char *mode)</td></tr>
+<tr class="memdesc:aeb6ce4b7155ead270878e32d7fb355c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opens a file and checks the operation was successful. <a href="#aeb6ce4b7155ead270878e32d7fb355c0"></a><br/></td></tr>
+<tr class="memitem:aeaf79f7ede69e27e75d30528f0837c27"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_vector</b> (std::vector&lt; int &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:aeaf79f7ede69e27e75d30528f0837c27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector of integers. <a href="#aeaf79f7ede69e27e75d30528f0837c27"></a><br/></td></tr>
+<tr class="memitem:a3595e6e5307cf443d7bccbb3d02ac6dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_vector</b> (std::vector&lt; double &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:a3595e6e5307cf443d7bccbb3d02ac6dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector of doubles. <a href="#a3595e6e5307cf443d7bccbb3d02ac6dd"></a><br/></td></tr>
+<tr class="memitem:a11f6a7d9f6034dbfa2f8f3705bc1cb7a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><b>voro::voro_print_face_vertices</b> (std::vector&lt; int &gt; &amp;v, FILE *fp)</td></tr>
+<tr class="memdesc:a11f6a7d9f6034dbfa2f8f3705bc1cb7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints a vector a face vertex information. <a href="#a11f6a7d9f6034dbfa2f8f3705bc1cb7a"></a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="common_8hh_source.html">common.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/common_8hh_source.html b/lib/voro++/html/common_8hh_source.html
new file mode 100644
index 000000000..dc443bf3d
--- /dev/null
+++ b/lib/voro++/html/common_8hh_source.html
@@ -0,0 +1,122 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: common.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">common.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="common_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file common.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the small helper functions. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_COMMON_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_COMMON_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">/** \brief Function for printing fatal error messages and exiting.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * Function for printing fatal error messages and exiting.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] p a pointer to the message to print.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * \param[in] status the status code to return with. */</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voro_fatal_error(<span class="keyword">const</span> <span class="keywordtype">char</span> *p,<span class="keywordtype">int</span> status) {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; fprintf(stderr,<span class="stringliteral">&quot;voro++: %s\n&quot;</span>,p);</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; exit(status);</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;}</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">/** \brief Prints a vector of positions.</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * Prints a vector of positions as bracketed triplets.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * \param[in] v the vector to print.</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * \param[in] fp the file stream to print to. */</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voro_print_positions(std::vector&lt;double&gt; &amp;v,FILE *fp=stdout) {</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">if</span>(v.size()&gt;0) {</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; fprintf(fp,<span class="stringliteral">&quot;(%g,%g,%g)&quot;</span>,v[0],v[1],v[2]);</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> k=3;(<span class="keywordtype">unsigned</span> int) k&lt;v.size();k+=3) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; fprintf(fp,<span class="stringliteral">&quot; (%g,%g,%g)&quot;</span>,v[k],v[k+1],v[k+2]);</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/** \brief Opens a file and checks the operation was successful.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * Opens a file, and checks the return value to ensure that the operation</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * was successful.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * \param[in] filename the file to open.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * \param[in] mode the cstdio fopen mode to use.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * \return The file handle. */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">inline</span> FILE* safe_fopen(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename,<span class="keyword">const</span> <span class="keywordtype">char</span> *mode) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; FILE *fp=fopen(filename,mode);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(fp==NULL) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; fprintf(stderr,<span class="stringliteral">&quot;voro++: Unable to open file &#39;%s&#39;\n&quot;</span>,filename);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; exit(<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> fp;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keywordtype">void</span> voro_print_vector(std::vector&lt;int&gt; &amp;v,FILE *fp=stdout);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">void</span> voro_print_vector(std::vector&lt;double&gt; &amp;v,FILE *fp=stdout);</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keywordtype">void</span> voro_print_face_vertices(std::vector&lt;int&gt; &amp;v,FILE *fp=stdout);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;}</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/config_8hh.html b/lib/voro++/html/config_8hh.html
new file mode 100644
index 000000000..7ea22a755
--- /dev/null
+++ b/lib/voro++/html/config_8hh.html
@@ -0,0 +1,198 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: config.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">config.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Master configuration file for setting various compile-time options.
+<a href="#details">More...</a></p>
+
+<p><a href="config_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a692da825f7adf94704ec4bc7f8b6e388"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#a692da825f7adf94704ec4bc7f8b6e388">VOROPP_VERBOSE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memitem:a67fdb1741ce5fa942c0bea4d8d1322cb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#a67fdb1741ce5fa942c0bea4d8d1322cb">VOROPP_REPORT_OUT_OF_BOUNDS</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memitem:a8de7f106cac2556a67bcc61bd364ed38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>&#160;&#160;&#160;1</td></tr>
+<tr class="memitem:a5dc0616f8a67ae3d1c2ba8a3dcf5612b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>&#160;&#160;&#160;2</td></tr>
+<tr class="memitem:ad8e0de9d48da06e86dd87884e4a2d47e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>&#160;&#160;&#160;3</td></tr>
+<tr class="memitem:af88f7ba675d82866fea2342f26203384"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="config_8hh.html#af88f7ba675d82866fea2342f26203384">VOROPP_CMD_LINE_ERROR</a>&#160;&#160;&#160;4</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:ab4baeec7fbf62c1e95c8b8b047d0e124"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_vertices</b> = 256</td></tr>
+<tr class="memitem:af9626e7b2de87823a37aed6ecadb4694"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_vertex_order</b> = 64</td></tr>
+<tr class="memitem:a6738d1e6071a37607c283d83f42c0c25"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_3_vertices</b> = 256</td></tr>
+<tr class="memitem:a0df73db79037e0a4b679a0d5a25ed088"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_n_vertices</b> = 8</td></tr>
+<tr class="memitem:a35b06c9a6de24efe70bc1224b2a1f863"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_marginal</b> = 64</td></tr>
+<tr class="memitem:ad8c6a3d3dab779886e45fd9ee63b120a"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_delete_size</b> = 256</td></tr>
+<tr class="memitem:a3ecd0c93281f6b28953341fb7719881a"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_delete2_size</b> = 256</td></tr>
+<tr class="memitem:add929a058b34e995eb6262890eee572e"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_wall_size</b> = 32</td></tr>
+<tr class="memitem:aa1b17cf70edd0f21ff9639bbbf7aabad"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_ordering_size</b> = 4096</td></tr>
+<tr class="memitem:a366002e60d950644bdd7df771176feb0"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::init_chunk_size</b> = 256</td></tr>
+<tr class="memitem:a55c3c6415307c7a983cee6b6a0b93a55"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_vertices</b> = 16777216</td></tr>
+<tr class="memitem:a15abb768c589a2960db655e16789799b"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_vertex_order</b> = 2048</td></tr>
+<tr class="memitem:aaf2263ea4a81c4d0d9953ea20fa926ac"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_n_vertices</b> = 16777216</td></tr>
+<tr class="memitem:af213891b8c7b7878757c83a962237704"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_marginal</b> = 16777216</td></tr>
+<tr class="memitem:a5cfbdee0e63274285dbbc2fe41808c78"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_delete_size</b> = 16777216</td></tr>
+<tr class="memitem:a74c621b3308cfe62f9d17fdd1338ee2d"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_delete2_size</b> = 16777216</td></tr>
+<tr class="memitem:aea418890c2d30d39beea3033ebff4d14"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_particle_memory</b> = 16777216</td></tr>
+<tr class="memitem:acc3b2225212e2e99b2585c311bee134e"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_wall_size</b> = 2048</td></tr>
+<tr class="memitem:a1aa84b6ce2b29d1673baf433fc3d26dc"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_ordering_size</b> = 67108864</td></tr>
+<tr class="memitem:a8ea1ea5cda28845eaa8143c6dd7afdc0"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_chunk_size</b> = 65536</td></tr>
+<tr class="memitem:aaf0a47621a8112c0666e21584216ab23"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::pre_container_chunk_size</b> = 1024</td></tr>
+<tr class="memitem:abc5f0de010d79451a5ce9b097bfbb106"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::tolerance</b> = 1e-11</td></tr>
+<tr class="memitem:aa4b52802c4f037f8de8f869777bbd648"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::tolerance2</b> = 2e-11</td></tr>
+<tr class="memitem:ad249096037b103c1228e439ada32b7f0"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::tolerance_sq</b> = tolerance*tolerance</td></tr>
+<tr class="memitem:a4b3cec3b82f1f452310773c467048dcf"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::large_number</b> = 1e30</td></tr>
+<tr class="memitem:ae31396d7659e624201dd4d335245b402"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::default_radius</b> = 0.5</td></tr>
+<tr class="memitem:a17ef186ac43bf71f48f4d687da081a40"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::max_unit_voro_shells</b> = 10</td></tr>
+<tr class="memitem:afa6763c0f7876dfa041acbb3322d78cd"><td class="memItemLeft" align="right" valign="top">const double&#160;</td><td class="memItemRight" valign="bottom"><b>voro::optimal_particles</b> = 5.6</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+</div><hr/><h2>Macro Definition Documentation</h2>
+<a class="anchor" id="af88f7ba675d82866fea2342f26203384"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_CMD_LINE_ERROR&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Voro++ returns this status code if it could not interpret the command line arguments passed to the command line utility. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00123">123</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8de7f106cac2556a67bcc61bd364ed38"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_FILE_ERROR&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Voro++ returns this status code if there is a file-related error, such as not being able to open file. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00109">109</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad8e0de9d48da06e86dd87884e4a2d47e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_INTERNAL_ERROR&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Voro++ returns this status code if there is any type of internal error, if it detects that representation of the Voronoi cell is inconsistent. This status code will generally indicate a bug, and the developer should be contacted. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00119">119</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5dc0616f8a67ae3d1c2ba8a3dcf5612b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_MEMORY_ERROR&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Voro++ returns this status code if there is a memory allocation error, if one of the safe memory limits is exceeded. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00113">113</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67fdb1741ce5fa942c0bea4d8d1322cb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_REPORT_OUT_OF_BOUNDS&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>If this is set to 1, then the code reports any instances of particles being put outside of the container geometry. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00105">105</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a692da825f7adf94704ec4bc7f8b6e388"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define VOROPP_VERBOSE&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Voro++ can print a number of different status and debugging messages to notify the user of special behavior, and this macro sets the amount which are displayed. At level 0, no messages are printed. At level 1, messages about unusual cases during cell construction are printed, such as when the plane routine bails out due to floating point problems. At level 2, general messages about memory expansion are printed. At level 3, technical details about memory management are printed. </p>
+
+<p>Definition at line <a class="el" href="config_8hh_source.html#l00073">73</a> of file <a class="el" href="config_8hh_source.html">config.hh</a>.</p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/config_8hh_source.html b/lib/voro++/html/config_8hh_source.html
new file mode 100644
index 000000000..63d934710
--- /dev/null
+++ b/lib/voro++/html/config_8hh_source.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: config.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">config.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="config_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file config.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Master configuration file for setting various compile-time options. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_CONFIG_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_CONFIG_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// These constants set the initial memory allocation for the Voronoi cell</span><span class="comment"></span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">/** The initial memory allocation for the number of vertices. */</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_vertices=256;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** The initial memory allocation for the maximum vertex order. */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_vertex_order=64;<span class="comment"></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">/** The initial memory allocation for the number of regular vertices of order</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * 3. */</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_3_vertices=256;<span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/** The initial memory allocation for the number of vertices of higher order.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_n_vertices=8;<span class="comment"></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/** The initial buffer size for marginal cases used by the suretest class. */</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_marginal=64;<span class="comment"></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">/** The initial size for the delete stack. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_delete_size=256;<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">/** The initial size for the auxiliary delete stack. */</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_delete2_size=256;<span class="comment"></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">/** The initial size for the wall pointer array. */</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_wall_size=32;<span class="comment"></span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">/** The default initial size for the ordering class. */</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_ordering_size=4096;<span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">/** The initial size of the pre_container chunk index. */</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> init_chunk_size=256;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// If the initial memory is too small, the program dynamically allocates more.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// However, if the limits below are reached, then the program bails out.</span><span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">/** The maximum memory allocation for the number of vertices. */</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_vertices=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/** The maximum memory allocation for the maximum vertex order. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_vertex_order=2048;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/** The maximum memory allocation for the any particular order of vertex. */</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_n_vertices=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">/** The maximum buffer size for marginal cases used by the suretest class. */</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_marginal=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">/** The maximum size for the delete stack. */</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_delete_size=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/** The maximum size for the auxiliary delete stack. */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_delete2_size=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">/** The maximum amount of particle memory allocated for a single region. */</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_particle_memory=16777216;<span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">/** The maximum size for the wall pointer array. */</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_wall_size=2048;<span class="comment"></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">/** The maximum size for the ordering class. */</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_ordering_size=67108864;<span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">/** The maximum size for the pre_container chunk index. */</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_chunk_size=65536;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">/** The chunk size in the pre_container classes. */</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> pre_container_chunk_size=1024;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#ifndef VOROPP_VERBOSE</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor"></span><span class="comment">/** Voro++ can print a number of different status and debugging messages to</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * notify the user of special behavior, and this macro sets the amount which</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * are displayed. At level 0, no messages are printed. At level 1, messages</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * about unusual cases during cell construction are printed, such as when the</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * plane routine bails out due to floating point problems. At level 2, general</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * messages about memory expansion are printed. At level 3, technical details</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * about memory management are printed. */</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="config_8hh.html#a692da825f7adf94704ec4bc7f8b6e388"> 73</a></span>&#160;<span class="preprocessor">#define VOROPP_VERBOSE 0</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">/** If a point is within this distance of a cutting plane, then the code</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * assumes that point exactly lies on the plane. */</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> tolerance=1e-11;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">/** If a point is within this distance of a cutting plane, then the code stores</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * whether this point is inside, outside, or exactly on the cutting plane in</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * the marginal cases buffer, to prevent the test giving a different result on</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * a subsequent evaluation due to floating point rounding errors. */</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> tolerance2=2e-11;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">/** The square of the tolerance, used when deciding whether some squared</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * quantities are large enough to be used. */</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> tolerance_sq=tolerance*tolerance;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">/** A large number that is used in the computation. */</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> large_number=1e30;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">/** A radius to use as a placeholder when no other information is available. */</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> default_radius=0.5;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/** The maximum number of shells of periodic images to test over. */</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> max_unit_voro_shells=10;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">/** A guess for the optimal number of particles per block, used to set up the</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * container grid. */</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">const</span> <span class="keywordtype">double</span> optimal_particles=5.6;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">/** If this is set to 1, then the code reports any instances of particles being</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * put outside of the container geometry. */</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="config_8hh.html#a67fdb1741ce5fa942c0bea4d8d1322cb"> 105</a></span>&#160;<span class="preprocessor">#define VOROPP_REPORT_OUT_OF_BOUNDS 0</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">/** Voro++ returns this status code if there is a file-related error, such as</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * not being able to open file. */</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38"> 109</a></span>&#160;<span class="preprocessor">#define VOROPP_FILE_ERROR 1</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">/** Voro++ returns this status code if there is a memory allocation error, if</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * one of the safe memory limits is exceeded. */</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b"> 113</a></span>&#160;<span class="preprocessor">#define VOROPP_MEMORY_ERROR 2</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">/** Voro++ returns this status code if there is any type of internal error, if</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * it detects that representation of the Voronoi cell is inconsistent. This</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * status code will generally indicate a bug, and the developer should be</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * contacted. */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e"> 119</a></span>&#160;<span class="preprocessor">#define VOROPP_INTERNAL_ERROR 3</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">/** Voro++ returns this status code if it could not interpret the command line</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * arguments passed to the command line utility. */</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="config_8hh.html#af88f7ba675d82866fea2342f26203384"> 123</a></span>&#160;<span class="preprocessor">#define VOROPP_CMD_LINE_ERROR 4</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;}</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container_8cc.html b/lib/voro++/html/container_8cc.html
new file mode 100644
index 000000000..1e99fab45
--- /dev/null
+++ b/lib/voro++/html/container_8cc.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the container and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="container_8hh_source.html">container.hh</a>&quot;</code><br/>
+</div>
+<p><a href="container_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="container_8cc_source.html">container.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container_8cc_source.html b/lib/voro++/html/container_8cc_source.html
new file mode 100644
index 000000000..bf2a5522b
--- /dev/null
+++ b/lib/voro++/html/container_8cc_source.html
@@ -0,0 +1,604 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="container_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file container.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the container and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8hh.html" title="Header file for the container_base and related classes.">container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container, initializing the</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * minimum and maximum coordinates in each direction, and setting whether each</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * direction is periodic or not. It divides the container into a rectangular</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * grid of blocks, and allocates memory for each of these for storing particle</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * positions and IDs.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * container is periodic in each</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * coordinate direction.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * \param[in] init_mem the initial memory allocation for each block.</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * \param[in] ps_ the number of floating point entries to store for each</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * particle. */</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f"> 30</a></span>&#160;<a class="code" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">container_base::container_base</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> init_mem,<span class="keywordtype">int</span> ps_)</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; : <a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a>(nx_,ny_,nz_,(bx_-ax_)/nx_,(by_-ay_)/ny_,(bz_-az_)/nz_),</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; ax(ax_), bx(bx_), ay(ay_), by(by_), az(az_), bz(bz_),</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; xperiodic(xperiodic_), yperiodic(yperiodic_), zperiodic(zperiodic_),</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; id(new int*[nxyz]), p(new double*[nxyz]), co(new int[nxyz]), mem(new int[nxyz]), ps(ps_) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordtype">int</span> l;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[l]=0;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>[l]=init_mem;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <span class="keywordtype">id</span>[l]=<span class="keyword">new</span> <span class="keywordtype">int</span>[init_mem];</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[l]=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*init_mem];</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/** The container destructor frees the dynamically allocated memory. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44"> 44</a></span>&#160;<a class="code" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">container_base::~container_base</a>() {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">int</span> l;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[l];</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;l++) <span class="keyword">delete</span> [] <span class="keywordtype">id</span>[l];</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">id</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * container is periodic in each</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * coordinate direction.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * \param[in] init_mem the initial memory allocation for each block. */</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f"> 64</a></span>&#160;<a class="code" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f">container::container</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> init_mem)</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; : <a class="code" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a>(ax_,bx_,ay_,by_,az_,bz_,nx_,ny_,nz_,xperiodic_,yperiodic_,zperiodic_,init_mem,3),</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; vc(*this,xperiodic_?2*nx_+1:nx_,yperiodic_?2*ny_+1:ny_,zperiodic_?2*nz_+1:nz_) {}</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * container is periodic in each</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * coordinate direction.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * \param[in] init_mem the initial memory allocation for each block. */</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53"> 79</a></span>&#160;<a class="code" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53">container_poly::container_poly</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> init_mem)</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; : <a class="code" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a>(ax_,bx_,ay_,by_,az_,bz_,nx_,ny_,nz_,xperiodic_,yperiodic_,zperiodic_,init_mem,4),</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; vc(*this,xperiodic_?2*nx_+1:nx_,yperiodic_?2*ny_+1:ny_,zperiodic_?2*nz_+1:nz_) {<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>;}</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle. */</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3"> 87</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">container::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a>(ijk,x,y,z)) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+3*co[ijk]++;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; *(pp++)=x;*(pp++)=y;*pp=z;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * \param[in] r the radius of the particle. */</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3"> 100</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">container_poly::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r) {</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a>(ijk,x,y,z)) {</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+4*co[ijk]++;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>&lt;r) <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=r;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;}</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">/** Put a particle into the correct region of the container, also recording</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> * into which region it was stored.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * \param[in] vo the ordering class in which to record the region.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle. */</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a6e4a48cc9c31557457213923254fdda3"> 115</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">container::put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a>(ijk,x,y,z)) {</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; vo.<a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a>(ijk,co[ijk]);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+3*co[ijk]++;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; *(pp++)=x;*(pp++)=y;*pp=z;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;}</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">/** Put a particle into the correct region of the container, also recording</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * into which region it was stored.</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * \param[in] vo the ordering class in which to record the region.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * \param[in] r the radius of the particle. */</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#aa0c81a2be68ed2a8b799ad7682c9b853"> 131</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">container_poly::put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r) {</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a>(ijk,x,y,z)) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; vo.<a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a>(ijk,co[ijk]);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+4*co[ijk]++;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>&lt;r) <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=r;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;}</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">/** This routine takes a particle position vector, tries to remap it into the</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * primary domain. If successful, it computes the region into which it can be</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> * stored and checks that there is enough memory within this region to store</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> * it.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * \param[out] ijk the region index.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the particle position, remapped into the primary</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * domain if necessary.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> * \return True if the particle can be successfully placed into the container,</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> * false otherwise. */</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a"> 151</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">container_base::put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">put_remap</a>(ijk,x,y,z)) {</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[ijk]==<a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>[ijk]) <a class="code" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory</a>(ijk);</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#if VOROPP_REPORT_OUT_OF_BOUNDS ==1</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Out of bounds: (x,y,z)=(%g,%g,%g)\n&quot;</span>,x,y,z);</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">/** Takes a particle position vector and computes the region index into which</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * it should be stored. If the container is periodic, then the routine also</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * maps the particle position to ensure it is in the primary domain. If the</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> * container is not periodic, the routine bails out.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> * \param[out] ijk the region index.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the particle position, remapped into the primary</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * domain if necessary.</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * \return True if the particle can be successfully placed into the container,</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * false otherwise. */</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa"> 171</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">container_base::put_remap</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z) {</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">int</span> l;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; ijk=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((x-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>)*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>);</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {l=<a class="code" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a>(ijk,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);x+=<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>*(l-ijk);ijk=l;}</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ijk&lt;0||ijk&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">int</span> j=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((y-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>)*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>);</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {l=<a class="code" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a>(j,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);y+=<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>*(l-j);j=l;}</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(j&lt;0||j&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">int</span> k=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((z-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>)*<a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>);</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {l=<a class="code" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a>(k,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);z+=<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>*(l-k);k=l;}</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(k&lt;0||k&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; ijk+=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*j+<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>*k;</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;}</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">/** Takes a position vector and attempts to remap it into the primary domain.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> * \param[out] (ai,aj,ak) the periodic image displacement that the vector is in,</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * with (0,0,0) corresponding to the primary domain.</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * \param[out] (ci,cj,ck) the index of the block that the position vector is</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> * within, once it has been remapped.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the position vector to consider, which is remapped</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> * into the primary domain during the routine.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> * \param[out] ijk the block index that the vector is within.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * \return True if the particle is within the container or can be remapped into</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * it, false if it lies outside of the container bounds. */</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc"> 200</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">container_base::remap</a>(<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak,<span class="keywordtype">int</span> &amp;ci,<span class="keywordtype">int</span> &amp;cj,<span class="keywordtype">int</span> &amp;ck,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ijk) {</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; ci=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((x-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>)*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>);</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {ai=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);x-=ai*(<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>);ci-=ai*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;}</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; } <span class="keywordflow">else</span> ai=0;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; cj=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((y-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>)*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>);</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span>(cj&lt;0||cj&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) {</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {aj=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(cj,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);y-=aj*(<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>);cj-=aj*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;}</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; } <span class="keywordflow">else</span> aj=0;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; ck=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((z-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>)*<a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>);</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span>(ck&lt;0||ck&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) {</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {ak=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ck,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);z-=ak*(<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);ck-=ak*<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;}</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; } <span class="keywordflow">else</span> ak=0;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; ijk=ci+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*cj+<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>*ck;</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment">/** Takes a vector and finds the particle whose Voronoi cell contains that</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> * vector. This is equivalent to finding the particle which is nearest to the</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * vector. Additional wall classes are not considered by this routine.</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * contains the vector. If the container is periodic,</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> * this may point to a particle in a periodic image of</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> * the primary domain.</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * \param[out] pid the ID of the particle.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> * \return True if a particle was found. If the container has no particles,</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * then the search will not find a Voronoi cell and false is returned. */</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b"> 234</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b">container::find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">int</span> ai,aj,ak,ci,cj,ck,ijk;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> w;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">double</span> mrs;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// If the given vector lies outside the domain, but the container</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// is periodic, then remap it back into the domain</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a>(ai,aj,ak,ci,cj,ck,x,y,z,ijk)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; vc.<a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a>(x,y,z,ci,cj,ck,ijk,w,mrs);</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>!=-1) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Assemble the position vector of the particle to be returned,</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// applying a periodic remapping if necessary</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {ci+=w.<a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>;<span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) ai+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);}</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {cj+=w.<a class="code" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">dj</a>;<span class="keywordflow">if</span>(cj&lt;0||cj&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) aj+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(cj,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);}</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {ck+=w.<a class="code" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">dk</a>;<span class="keywordflow">if</span>(ck&lt;0||ck&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) ak+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ck,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);}</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; rx=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>]+ai*(<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>);</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; ry=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+1]+aj*(<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>);</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; rz=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+2]+ak*(<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; pid=<span class="keywordtype">id</span>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>];</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="comment">// If no particle if found then just return false</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment">/** Takes a vector and finds the particle whose Voronoi cell contains that</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * vector. Additional wall classes are not considered by this routine.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> * contains the vector. If the container is periodic,</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * this may point to a particle in a periodic image of</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * the primary domain.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> * \param[out] pid the ID of the particle.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> * \return True if a particle was found. If the container has no particles,</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> * then the search will not find a Voronoi cell and false is returned. */</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903"> 272</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903">container_poly::find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid) {</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">int</span> ai,aj,ak,ci,cj,ck,ijk;</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> w;</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordtype">double</span> mrs;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// If the given vector lies outside the domain, but the container</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// is periodic, then remap it back into the domain</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a>(ai,aj,ak,ci,cj,ck,x,y,z,ijk)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; vc.<a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a>(x,y,z,ci,cj,ck,ijk,w,mrs);</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>!=-1) {</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Assemble the position vector of the particle to be returned,</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// applying a periodic remapping if necessary</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {ci+=w.<a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>;<span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) ai+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);}</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {cj+=w.<a class="code" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">dj</a>;<span class="keywordflow">if</span>(cj&lt;0||cj&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) aj+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(cj,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);}</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {ck+=w.<a class="code" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">dk</a>;<span class="keywordflow">if</span>(ck&lt;0||ck&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) ak+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ck,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);}</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; rx=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>]+ai*(<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>);</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; ry=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+1]+aj*(<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>);</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; rz=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+2]+ak*(<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; pid=<span class="keywordtype">id</span>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>];</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; }</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">// If no particle if found then just return false</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment">/** Increase memory for a particular region.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> * \param[in] i the index of the region to reallocate. */</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">container_base::add_particle_memory</a>(<span class="keywordtype">int</span> i) {</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordtype">int</span> l,nmem=<a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>[i]&lt;&lt;1;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="comment">// Carry out a check on the memory allocation size, and</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="comment">// print a status message if requested</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(nmem&gt;max_particle_memory)</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Absolute maximum memory allocation exceeded&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=3</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Particle memory in region %d scaled up to %d\n&quot;</span>,i,nmem);</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Allocate new memory and copy in the contents of the old arrays</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">int</span> *idp=<span class="keyword">new</span> <span class="keywordtype">int</span>[nmem];</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>[i];l++) idp[l]=<span class="keywordtype">id</span>[i][l];</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordtype">double</span> *pp=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*nmem];</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*co[i];l++) pp[l]=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[i][l];</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// Update pointers and delete old arrays</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>[i]=nmem;</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">delete</span> [] <span class="keywordtype">id</span>[i];<span class="keywordtype">id</span>[i]=idp;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[i];<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[i]=pp;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment">/** Import a list of particles from an open file stream into the container.</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> * Entries of four numbers (Particle ID, x position, y position, z position)</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * are searched for. If the file cannot be successfully read, then the routine</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * causes a fatal error.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66"> 330</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66">container::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">double</span> x,y,z;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z))==4) <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(i,x,y,z);</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment">/** Import a list of particles from an open file stream, also storing the order</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> * of that the particles are read. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> * position, y position, z position) are searched for. If the file cannot be</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> * successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> * \param[in,out] vo a reference to an ordering class to use.</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a7b3aa6219cfb0fd538839aeeae4457cc"> 343</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66">container::import</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordtype">double</span> x,y,z;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z))==4) <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(vo,i,x,y,z);</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment">/** Import a list of particles from an open file stream into the container.</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> * Entries of five numbers (Particle ID, x position, y position, z position,</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> * radius) are searched for. If the file cannot be successfully read, then the</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> * routine causes a fatal error.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5"> 355</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5">container_poly::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">double</span> x,y,z,r;</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z,&amp;r))==5) <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(i,x,y,z,r);</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;}</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment">/** Import a list of particles from an open file stream, also storing the order</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> * of that the particles are read. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> * position, y position, z position, radius) are searched for. If the file</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> * cannot be successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> * \param[in,out] vo a reference to an ordering class to use.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#aecedca4f256e9382d54efb805877c68f"> 368</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5">container_poly::import</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp) {</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">double</span> x,y,z,r;</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z,&amp;r))==5) <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(vo,i,x,y,z,r);</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;}</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment">/** Outputs the a list of all the container regions along with the number of</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> * particles stored within each. */</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d"> 377</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">container_base::region_count</a>() {</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">int</span> i,j,k,*cop=<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;k++) <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;j++) <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;i++)</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; printf(<span class="stringliteral">&quot;Region (%d,%d,%d): %d particles\n&quot;</span>,i,j,k,*(cop++));</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;}</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment">/** Clears a container of particles. */</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee"> 384</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee">container::clear</a>() {</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *cop=<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;cop&lt;<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>+<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;cop++) *cop=0;</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment">/** Clears a container of particles, also clearing resetting the maximum radius</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> * to zero. */</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83"> 390</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83">container_poly::clear</a>() {</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *cop=<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;cop&lt;<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>+<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;cop++) *cop=0;</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=0;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;}</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized information about them.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a37508aa6ea56b625893bdde283d30e0c"> 398</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">container::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a>(vl,format,fp);</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;}</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> * information about them.</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#adf5dcfbba15c482285c23e0ee54155d4"> 407</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">container_poly::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a>(vl,format,fp);</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;}</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized information about them.</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a7adccdf76ab5ee9e29e48292a2cc43d9"> 415</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">container::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a>(format,fp);</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;}</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment"> * information about them</span></div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ab2eb9f5480fb9560b71ef1b1ed29b592"> 425</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">container_poly::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a>(format,fp);</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment">/** Computes all of the Voronoi cells in the container, but does nothing</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="comment"> * with the output. It is useful for measuring the pure computation time</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="comment"> * of the Voronoi algorithm, without any additional calculations such as</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="comment"> * volume evaluation or cell output. */</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6"> 435</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6">container::compute_all_cells</a>() {</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a>()) <span class="keywordflow">do</span> <a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl);</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a>());</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;}</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="comment">/** Computes all of the Voronoi cells in the container, but does nothing</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="comment"> * with the output. It is useful for measuring the pure computation time</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"> * of the Voronoi algorithm, without any additional calculations such as</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment"> * volume evaluation or cell output. */</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489"> 446</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489">container_poly::compute_all_cells</a>() {</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a>()) <span class="keywordflow">do</span> <a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl);<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a>());</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment">/** Calculates all of the Voronoi cells and sums their volumes. In most cases</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> * without walls, the sum of the Voronoi cell volumes should equal the volume</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> * of the container to numerical precision.</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * \return The sum of all of the computed Voronoi volumes. */</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec"> 456</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec">container::sum_cell_volumes</a>() {</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordtype">double</span> vol=0;</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a>()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl)) vol+=c.<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>();<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a>());</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> vol;</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;}</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment">/** Calculates all of the Voronoi cells and sums their volumes. In most cases</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> * without walls, the sum of the Voronoi cell volumes should equal the volume</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"> * of the container to numerical precision.</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> * \return The sum of all of the computed Voronoi volumes. */</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e"> 468</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e">container_poly::sum_cell_volumes</a>() {</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">double</span> vol=0;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">start</a>()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl)) vol+=c.<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>();<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">inc</a>());</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> vol;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;}</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment">/** This function tests to see if a given vector lies within the container</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment"> * bounds and any walls.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector to be tested.</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="comment"> * \return True if the point is inside the container, false if the point is</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="comment"> * outside. */</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1"> 481</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">container_base::point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">if</span>(x&lt;ax||x&gt;<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>||y&lt;ay||y&gt;<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>||z&lt;az||z&gt;<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a>(x,y,z);</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;}</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment">/** Draws an outline of the domain in gnuplot format.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d"> 488</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">container_base::draw_domain_gnuplot</a>(FILE *fp) {</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n\n%g %g %g\n%g %g %g\n\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n%g %g %g\n\n%g %g %g\n%g %g %g\n\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment">/** Draws an outline of the domain in POV-Ray format.</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd"> 497</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">container_base::draw_domain_pov</a>(FILE *fp) {</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; fprintf(fp,<span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; fprintf(fp,<span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>,<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>,<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>,<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>);</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment">/** The wall_list constructor sets up an array of pointers to wall classes. */</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698"> 518</a></span>&#160;<a class="code" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list::wall_list</a>() : walls(new <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a>*[init_wall_size]), wep(walls), wel(walls+init_wall_size),</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; current_wall_size(init_wall_size) {}</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment">/** The wall_list destructor frees the array of pointers to the wall classes.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be"> 523</a></span>&#160;<a class="code" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">wall_list::~wall_list</a>() {</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment">/** Adds all of the walls on another wall_list to this class.</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"> * \param[in] wl a reference to the wall class. */</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#af872ae39e2bb8fe1e6947644a84cb1a8"> 529</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">wall_list::add_wall</a>(<a class="code" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> &amp;wl) {</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **wp=wl.<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;wp&lt;wl.<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>;wp++) <a class="code" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a>(*wp);</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;}</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">/** Deallocates all of the wall classes pointed to by the wall_list. */</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f"> 534</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">wall_list::deallocate</a>() {</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **wp=<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;wp&lt;<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>;wp++) <span class="keyword">delete</span> *wp;</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;}</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment">/** Increases the memory allocation for the walls array. */</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489"> 539</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">wall_list::increase_wall_memory</a>() {</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a>&lt;&lt;=1;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a>&gt;max_wall_size)</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Wall memory allocation exceeded absolute maximum&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **nwalls=<span class="keyword">new</span> <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a>*[<a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a>],**nwp=nwalls,**wp=<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">while</span>(wp&lt;<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>) *(nwp++)=*(wp++);</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>=nwalls;<a class="code" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">wel</a>=<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>+<a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a>;<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>=nwp;</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;}</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container_8hh.html b/lib/voro++/html/container_8hh.html
new file mode 100644
index 000000000..ed254101c
--- /dev/null
+++ b/lib/voro++/html/container_8hh.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">container.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the container_base and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cstdio&gt;</code><br/>
+<code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__base_8hh_source.html">v_base.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&quot;</code><br/>
+</div>
+<p><a href="container_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall.html">voro::wall</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pure virtual class from which wall objects are derived. <a href="classvoro_1_1wall.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for storing a list of pointers to walls. <a href="classvoro_1_1wall__list.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__base.html">voro::container_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for representing a particle system in a three-dimensional rectangular box. <a href="classvoro_1_1container__base.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container.html">voro::container</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing regular Voronoi tessellations. <a href="classvoro_1_1container.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__poly.html">voro::container_poly</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing radical Voronoi tessellations. <a href="classvoro_1_1container__poly.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="container_8hh_source.html">container.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container_8hh_source.html b/lib/voro++/html/container_8hh_source.html
new file mode 100644
index 000000000..f9a425fad
--- /dev/null
+++ b/lib/voro++/html/container_8hh_source.html
@@ -0,0 +1,742 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="container_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file container.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the container_base and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_CONTAINER_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_CONTAINER_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base_8hh.html" title="Header file for the base Voronoi container class.">v_base.hh</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8hh.html" title="Header file for the loop classes.">c_loops.hh</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__compute_8hh.html" title="Header file for the voro_compute template and related classes.">v_compute.hh</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rad__option_8hh.html" title="Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellat...">rad_option.hh</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/** \brief Pure virtual class from which wall objects are derived.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * This is a pure virtual class for a generic wall object. A wall object</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * can be specified by deriving a new class from this and specifying the</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * functions.*/</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classvoro_1_1wall.html"> 31</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a>() {}<span class="comment"></span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> /** A pure virtual function for testing whether a point is</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * inside the wall object. */</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) = 0;<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> /** A pure virtual function for cutting a cell without</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * neighbor-tracking with a wall. */</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) = 0;<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> /** A pure virtual function for cutting a cell with</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * neighbor-tracking enabled with a wall. */</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) = 0;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;};</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/** \brief A class for storing a list of pointers to walls.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * This class stores a list of pointers to wall classes. It contains several</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * simple routines that make use of the wall classes (such as telling whether a</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * given position is inside all of the walls or not). It can be used by itself,</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * but also forms part of container_base, for associating walls with this</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * class. */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html"> 52</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> /** An array holding pointers to wall objects. */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90"> 55</a></span>&#160; <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> /** A pointer to the next free position to add a wall pointer.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d"> 58</a></span>&#160; <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">wall_list</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">~wall_list</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> /** Adds a wall to the list.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * \param[in] w the wall to add. */</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d"> 63</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> *w) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>==<a class="code" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">wel</a>) <a class="code" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a>();</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; *(<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>++)=w;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> /** Adds a wall to the list.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * \param[in] w a reference to the wall to add. */</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4"> 69</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> &amp;w) {<a class="code" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">add_wall</a>(&amp;w);}</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">add_wall</a>(<a class="code" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> &amp;wl);<span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> /** Determines whether a given position is inside all of the</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * walls on the list.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position to test.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * \return True if it is inside, false if it is outside. */</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8"> 75</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">point_inside_walls</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **wp=<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;wp&lt;<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>;wp++) <span class="keywordflow">if</span>(!((*wp)-&gt;point_inside(x,y,z))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> /** Cuts a Voronoi cell by all of the walls currently on</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * the list.</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * \param[in] c a reference to the Voronoi cell class.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the cell.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * \return True if the cell still exists, false if the cell is</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * deleted. */</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019"> 86</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a>(c_class &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **wp=<a class="code" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">walls</a>;wp&lt;<a class="code" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">wep</a>;wp++) <span class="keywordflow">if</span>(!((*wp)-&gt;cut_cell(c,x,y,z))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">deallocate</a>();</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">increase_wall_memory</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> /** A pointer to the limit of the walls array, used to</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * determine when array is full. */</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1"> 95</a></span>&#160; <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> **<a class="code" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">wel</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> /** The current amount of memory allocated for walls. */</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506"> 97</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">current_wall_size</a>;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;};</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">/** \brief Class for representing a particle system in a three-dimensional</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * rectangular box.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * This class represents a system of particles in a three-dimensional</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * rectangular box. Any combination of non-periodic and periodic coordinates</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * can be used in the three coordinate directions. The class is not intended</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * for direct use, but instead forms the base of the container and</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * container_poly classes that add specialized routines for computing the</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * regular and radical Voronoi tessellations respectively. It contains routines</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * that are commonly between these two classes, such as those for drawing the</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * domain, and placing particles within the internal data structure.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * The class is derived from the wall_list class, which encapsulates routines</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * for associating walls with the container, and the voro_base class, which</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * encapsulates routines about the underlying computational grid. */</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html"> 115</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1wall__list.html" title="A class for storing a list of pointers to walls.">wall_list</a> {</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> /** The minimum x coordinate of the container. */</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2"> 118</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> /** The maximum x coordinate of the container. */</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d"> 120</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> /** The minimum y coordinate of the container. */</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858"> 122</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> /** The maximum y coordinate of the container. */</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6"> 124</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> /** The minimum z coordinate of the container. */</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6"> 126</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> /** The maximum z coordinate of the container. */</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3"> 128</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> /** A boolean value that determines if the x coordinate in</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf"> 131</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> /** A boolean value that determines if the y coordinate in</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8"> 134</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> /** A boolean value that determines if the z coordinate in</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06"> 137</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> /** This array holds the numerical IDs of each particle in each</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * computational box. */</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7"> 140</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> /** A two dimensional array holding particle positions. For the</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * derived container_poly class, this also holds particle</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * radii. */</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5"> 144</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> /** This array holds the number of particles within each</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * computational box of the container. */</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51"> 147</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> /** This array holds the maximum amount of particle memory for</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> * each computational box of the container. If the number of</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> * particles in a particular box ever approaches this limit,</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> * more is allocated using the add_particle_memory() function.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe"> 153</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">mem</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> /** The amount of memory in the array structure for each</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> * particle. This is set to 3 when the basic class is</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> * initialized, so that the array holds (x,y,z) positions. If</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> * the container class is initialized as part of the derived</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> * class container_poly, then this is set to 4, to also hold</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> * the particle radii. */</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba"> 160</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">container_base</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">int</span> init_mem,<span class="keywordtype">int</span> ps_);</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">~container_base</a>();</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">region_count</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> /** Initializes the Voronoi cell prior to a compute_cell</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * operation for a specific particle being carried out by a</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * voro_compute class. The cell is initialized to fill the</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * entire container. For non-periodic coordinates, this is set</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * by the position of the walls. For periodic coordinates, the</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * space is equally divided in either direction from the</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * particle&#39;s initial position. Plane cuts made by any walls</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * that have been added are then applied to the cell.</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * \param[in,out] c a reference to a voronoicell object.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * \param[in] q the index of the particle within its block.</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the block in the</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> * container coordinate system.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> * \param[out] (i,j,k) the coordinates of the test block</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * relative to the voro_compute</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * coordinate system.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> * \param[out] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * \param[out] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * compute_cell routine.</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * \return False if the plane cuts applied by walls completely</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * removed the cell, true otherwise. */</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5"> 189</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">initialize_voronoicell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">int</span> &amp;i,<span class="keywordtype">int</span> &amp;j,<span class="keywordtype">int</span> &amp;k,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">double</span> x1,x2,y1,y2,z1,z2,*pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*q;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; x=*(pp++);y=*(pp++);z=*pp;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {x1=-(x2=0.5*(<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>));i=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;} <span class="keywordflow">else</span> {x1=<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>-x;x2=<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-x;i=ci;}</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {y1=-(y2=0.5*(<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>));j=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;} <span class="keywordflow">else</span> {y1=<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>-y;y2=<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-y;j=cj;}</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {z1=-(z2=0.5*(<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>));k=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;} <span class="keywordflow">else</span> {z1=<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>-z;z2=<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-z;k=ck;}</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; c.init(x1,x2,y1,y2,z1,z2);</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">apply_walls</a>(c,x,y,z)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; disp=ijk-i-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(j+<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>*k);</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> /** Initializes parameters for a find_voronoi_cell call within</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * the voro_compute template.</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the test block in</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> * the container coordinate system.</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * \param[in] ijk the index of the test block</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * \param[out] (i,j,k) the coordinates of the test block</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * relative to the voro_compute</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * coordinate system.</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * \param[out] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * find_voronoi_cell routine. */</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf"> 211</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">initialize_search</a>(<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> &amp;i,<span class="keywordtype">int</span> &amp;j,<span class="keywordtype">int</span> &amp;k,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; i=<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>?<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>:ci;</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; j=<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>?<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>:cj;</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; k=<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>?<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>:ck;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; disp=ijk-i-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(j+<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>*k);</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> /** Returns the position of a particle currently being computed</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"> * relative to the computational block that it is within. It is</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * used to select the optimal worklist entry to use.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the block that the particle is within.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> * \param[out] (fx,fy,fz) the position relative to the block.</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85"> 224</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">frac_pos</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> ci,<span class="keywordtype">double</span> cj,<span class="keywordtype">double</span> ck,</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordtype">double</span> &amp;fx,<span class="keywordtype">double</span> &amp;fy,<span class="keywordtype">double</span> &amp;fz) {</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; fx=x-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>-<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>*ci;</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; fy=y-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>-<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>*cj;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; fz=z-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>-<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>*ck;</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> /** Calculates the index of block in the container structure</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * corresponding to given coordinates.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the original block</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * in the current computation, relative</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * to the container coordinate system.</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * \param[in] (ei,ej,ek) the displacement of the current block</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * from the original block.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * \param[in,out] (qx,qy,qz) the periodic displacement that</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * must be added to the particles</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * within the computed block.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * \param[in] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> * find_voronoi_cell and compute_cell routines.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> * \return The block index. */</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">region_index</a>(<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">double</span> &amp;qx,<span class="keywordtype">double</span> &amp;qy,<span class="keywordtype">double</span> &amp;qz,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">xperiodic</a>) {<span class="keywordflow">if</span>(ci+ei&lt;<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) {ei+=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;qx=-(<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>);} <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ci+ei&gt;=(<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>&lt;&lt;1)) {ei-=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;qx=<a class="code" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">bx</a>-<a class="code" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">ax</a>;} <span class="keywordflow">else</span> qx=0;}</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">yperiodic</a>) {<span class="keywordflow">if</span>(cj+ej&lt;<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) {ej+=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;qy=-(<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>);} <span class="keywordflow">else</span> <span class="keywordflow">if</span>(cj+ej&gt;=(<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>&lt;&lt;1)) {ej-=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;qy=<a class="code" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">by</a>-<a class="code" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">ay</a>;} <span class="keywordflow">else</span> qy=0;}</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">zperiodic</a>) {<span class="keywordflow">if</span>(ck+ek&lt;<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) {ek+=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;qz=-(<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>);} <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ck+ek&gt;=(<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>&lt;&lt;1)) {ek-=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;qz=<a class="code" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">bz</a>-<a class="code" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">az</a>;} <span class="keywordflow">else</span> qz=0;}</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> disp+ei+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(ej+<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>*ek);</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">draw_domain_gnuplot</a>(FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> /** Draws an outline of the domain in Gnuplot format.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> * \param[in] filename the filename to write to. */</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#a019db0a854b71ac57886155422bb53d6"> 252</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a019db0a854b71ac57886155422bb53d6">draw_domain_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">draw_domain_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">draw_domain_pov</a>(FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> /** Draws an outline of the domain in Gnuplot format.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> * \param[in] filename the filename to write to. */</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#aa1c0c293bae52c879eb42035a031d8e8"> 260</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#aa1c0c293bae52c879eb42035a031d8e8">draw_domain_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">draw_domain_pov</a>(fp);</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> /** Sums up the total number of stored particles.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> * \return The number of particles. */</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="code" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217"> 267</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">total_particles</a>() {</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">int</span> tp=*<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *cop=<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>+1;cop&lt;<a class="code" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">co</a>+<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;cop++) tp+=*cop;</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> tp;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; }</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory</a>(<span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z);</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">put_remap</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z);</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a>(<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak,<span class="keywordtype">int</span> &amp;ci,<span class="keywordtype">int</span> &amp;cj,<span class="keywordtype">int</span> &amp;ck,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ijk);</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;};</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment">/** \brief Extension of the container_base class for computing regular Voronoi</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> * tessellations.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> * This class is an extension of the container_base class that has routines</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> * specifically for computing the regular Voronoi tessellation with no</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * dependence on particle radii. */</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html"> 285</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1radius__mono.html" title="Class containing all of the routines that are specific to computing the regular Voronoi tessellation...">radius_mono</a> {</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <a class="code" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f">container</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> init_mem);</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee">clear</a>();</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * the container. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * position, y position, z position) are searched for. If the</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * file cannot be successfully read, then the routine causes a</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * fatal error.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a74d328c0a3f574668ff5dd9e34d22f1f"> 301</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> * the container. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> * position, y position, z position) are searched for. In</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment"> * addition, the order in which particles are read is saved</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> * into an ordering class. If the file cannot be successfully</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> * \param[in,out] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#acd9da3dc12eecccd5db8af5ff111222c"> 315</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">import</span>(vo,fp);</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6">compute_all_cells</a>();</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec">sum_cell_volumes</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> /** Dumps particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c"> 326</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">draw_particles</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+3*vl.q;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d %g %g %g\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2]);</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"> /** Dumps all of the particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#acf0d0e3a7cfb9c7445e99afc57dbee94"> 335</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#acf0d0e3a7cfb9c7445e99afc57dbee94">draw_particles</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">draw_particles</a>(vl,fp);</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> /** Dumps all of the particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a4c5ac89711659787eba011afbee318be"> 341</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a4c5ac89711659787eba011afbee318be">draw_particles</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">draw_particles</a>(fp);</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> /** Dumps particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387"> 350</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">draw_particles_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+3*vl.q;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// id %d\nsphere{&lt;%g,%g,%g&gt;,s}\n&quot;</span>,</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2]);</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> /** Dumps all particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#adaebc99132288ce43dab36fe86b5497b"> 360</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#adaebc99132288ce43dab36fe86b5497b">draw_particles_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">draw_particles_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> /** Dumps all particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#ad90375e99cea7db7c1b82d00853e2659"> 366</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#ad90375e99cea7db7c1b82d00853e2659">draw_particles_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <a class="code" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">draw_particles_pov</a>(fp);</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818"> 376</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">draw_cells_gnuplot</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*vl.q;</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a5812915614c26d5e52697902556ed996"> 386</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a5812915614c26d5e52697902556ed996">draw_cells_gnuplot</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <a class="code" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">draw_cells_gnuplot</a>(vl,fp);</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#aa387c1b649fe6eabafe4546ae7410c6b"> 393</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#aa387c1b649fe6eabafe4546ae7410c6b">draw_cells_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">draw_cells_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3"> 403</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">draw_cells_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// cell %d\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q]);</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*vl.q;</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#ac6ec5c8fec1cec5185af19bb21832fcb"> 414</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#ac6ec5c8fec1cec5185af19bb21832fcb">draw_cells_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">draw_cells_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a3f9a6147040c60ff579dcd96c05800c9"> 421</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a3f9a6147040c60ff579dcd96c05800c9">draw_cells_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">draw_cells_pov</a>(fp);</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="comment"> /** Computes the Voronoi cells and saves customized information</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="comment"> * about them.</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00432"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492"> 432</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a>(c_loop &amp;vl,<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordtype">int</span> ijk,q;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a>(format)) {</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> c;</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*q;</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],default_radius,fp);</div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*q;</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],default_radius,fp);</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp=stdout);</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b">find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid);<span class="comment"></span></div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"> /** Computes the Voronoi cell for a particle currently being</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> * referenced by a loop class.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="comment"> * computed, if it is removed entirely by a wall or boundary</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"> * condition, then the routine returns false. */</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell,<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00460"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a"> 460</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">compute_cell</a>(v_cell &amp;c,c_loop &amp;vl) {</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment"> /** Computes the Voronoi cell for given particle.</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * computed, if it is removed entirely by a wall or boundary</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment"> * condition, then the routine returns false. */</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00472"></a><span class="lineno"><a class="code" href="classvoro_1_1container.html#ad600a135ee01c2f1c08a5b9da58398ad"> 472</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container.html#ad600a135ee01c2f1c08a5b9da58398ad">compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordtype">int</span> k=ijk/<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>,ijkt=ijk-<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>*k,j=ijkt/<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>,i=ijkt-j*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,ijk,q,i,j,k);</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="classvoro_1_1voro__compute.html">voro_compute&lt;container&gt;</a> vc;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a>&lt;<a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a>&gt;;</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;};</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment">/** \brief Extension of the container_base class for computing radical Voronoi</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment"> * tessellations.</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"> * This class is an extension of container_base class that has routines</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment"> * specifically for computing the radical Voronoi tessellation that depends on</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"> * the particle radii. */</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html"> 487</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1radius__poly.html" title="Class containing all of the routines that are specific to computing the radical Voronoi tessellation...">radius_poly</a> {</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53">container_poly</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> init_mem);</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83">clear</a>();</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r);</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r);</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"> * the container_poly class. Entries of five numbers (Particle</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment"> * ID, x position, y position, z position, radius) are searched</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment"> * for. If the file cannot be successfully read, then the</span></div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="comment"> * routine causes a fatal error.</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a0b8b64b39bab75e3cfc9282a23706bab"> 503</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment"> * the container_poly class. Entries of five numbers (Particle</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="comment"> * ID, x position, y position, z position, radius) are searched</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="comment"> * for. In addition, the order in which particles are read is</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="comment"> * saved into an ordering class. If the file cannot be</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment"> * successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="comment"> * \param[in,out] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#af897ea09b80064d4b492862884ba316c"> 517</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keyword">import</span>(vo,fp);</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489">compute_all_cells</a>();</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e">sum_cell_volumes</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"> /** Dumps particle IDs, positions and radii to a file.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00528"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616"> 528</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">draw_particles</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+4*vl.q;</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d %g %g %g %g\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment"> /** Dumps all of the particle IDs, positions and radii to a</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment"> * file.</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a25b1e68cf0ad4f60c7723afc9ad97bb2"> 538</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a25b1e68cf0ad4f60c7723afc9ad97bb2">draw_particles</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">draw_particles</a>(vl,fp);</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"> /** Dumps all of the particle IDs, positions and radii to a</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment"> * file.</span></div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a8a20a1a70dd32c3323307be038bebb1d"> 545</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a8a20a1a70dd32c3323307be038bebb1d">draw_particles</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">draw_particles</a>(fp);</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="comment"> /** Dumps particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00554"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c"> 554</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">draw_particles_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+4*vl.q;</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// id %d\nsphere{&lt;%g,%g,%g&gt;,%g}\n&quot;</span>,</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="comment"> /** Dumps all the particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a477ecfe9e0943e71a2e389d7cc85ab20"> 564</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a477ecfe9e0943e71a2e389d7cc85ab20">draw_particles_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">draw_particles_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="comment"> /** Dumps all the particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a866cce7547f14634e432d510050962ae"> 570</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a866cce7547f14634e432d510050962ae">draw_particles_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">draw_particles_pov</a>(fp);</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00580"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937"> 580</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">draw_cells_gnuplot</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*vl.q;</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"> /** Compute all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ac0700e38ce6ed742dcb52ab6523b1956"> 590</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#ac0700e38ce6ed742dcb52ab6523b1956">draw_cells_gnuplot</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">draw_cells_gnuplot</a>(vl,fp);</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> /** Compute all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ad360a8ec2c8d59b69b65f34fdba92887"> 597</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#ad360a8ec2c8d59b69b65f34fdba92887">draw_cells_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">draw_cells_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00607"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de"> 607</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">draw_cells_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// cell %d\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q]);</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*vl.q;</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a8d56858927fc6686696e4338f9ac784d"> 618</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a8d56858927fc6686696e4338f9ac784d">draw_cells_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classvoro_1_1c__loop__all.html" title="Class for looping over all of the particles in a container.">c_loop_all</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">draw_cells_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ae949e1e7d3207212db3c99677e4906cd"> 625</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#ae949e1e7d3207212db3c99677e4906cd">draw_cells_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">draw_cells_pov</a>(fp);</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="comment"> /** Computes the Voronoi cells and saves customized information</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment"> * about them.</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00636"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3"> 636</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a>(c_loop &amp;vl,<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordtype">int</span> ijk,q;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a>(format)) {</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> c;</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*q;</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],pp[3],fp);</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">p</a>[ijk]+<a class="code" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">ps</a>*q;</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],pp[3],fp);</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; }</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"> /** Computes the Voronoi cell for a particle currently being</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment"> * referenced by a loop class.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="comment"> * computed, if it is removed entirely by a wall or boundary</span></div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment"> * condition, then the routine returns false. */</span></div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell,<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00661"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c"> 661</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">compute_cell</a>(v_cell &amp;c,c_loop &amp;vl) {</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="comment"> /** Computes the Voronoi cell for given particle.</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"> * computed, if it is removed entirely by a wall or boundary</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> * condition, then the routine returns false. */</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00673"></a><span class="lineno"><a class="code" href="classvoro_1_1container__poly.html#a12b9eeac5c7f409e1d75f77876c7bd3d"> 673</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__poly.html#a12b9eeac5c7f409e1d75f77876c7bd3d">compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordtype">int</span> k=ijk/<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>,ijkt=ijk-<a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>*k,j=ijkt/<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>,i=ijkt-j*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,ijk,q,i,j,k);</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp=stdout);</div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903">find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid);</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <a class="code" href="classvoro_1_1voro__compute.html">voro_compute&lt;container_poly&gt;</a> vc;</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a>&lt;<a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a>&gt;;</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;};</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;}</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container__prd_8cc.html b/lib/voro++/html/container__prd_8cc.html
new file mode 100644
index 000000000..8d0a8e6c8
--- /dev/null
+++ b/lib/voro++/html/container__prd_8cc.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container_prd.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container_prd.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the container_periodic_base and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&quot;</code><br/>
+</div>
+<p><a href="container__prd_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container__prd_8cc_source.html b/lib/voro++/html/container__prd_8cc_source.html
new file mode 100644
index 000000000..1cfd1537f
--- /dev/null
+++ b/lib/voro++/html/container__prd_8cc_source.html
@@ -0,0 +1,823 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container_prd.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container_prd.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="container__prd_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file container_prd.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the container_periodic_base and</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * related classes. */</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container__prd_8hh.html" title="Header file for the container_periodic_base and related classes.">container_prd.hh</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container, initializing the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * minimum and maximum coordinates in each direction, and setting whether each</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * direction is periodic or not. It divides the container into a rectangular</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * grid of blocks, and allocates memory for each of these for storing particle</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * positions and IDs.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * \param[in] (bx_) The x coordinate of the first unit vector.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * vector.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * \param[in] init_mem_ the initial memory allocation for each block.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * \param[in] ps_ the number of floating point entries to store for each</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * particle. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd"> 29</a></span>&#160;<a class="code" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">container_periodic_base::container_periodic_base</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,<span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_,<span class="keywordtype">int</span> ps_)</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; : <a class="code" href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain...">unitcell</a>(bx_,bxy_,by_,bxz_,byz_,bz_), <a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a>(nx_,ny_,nz_,bx_/nx_,by_/ny_,bz_/nz_),</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; ey(int(max_uv_y*ysp+1)), ez(int(max_uv_z*zsp+1)), wy(ny+ey), wz(nz+ez),</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; oy(ny+2*ey), oz(nz+2*ez), oxyz(nx*oy*oz), id(new int*[oxyz]), p(new double*[oxyz]),</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; co(new int[oxyz]), mem(new int[oxyz]), img(new char[oxyz]), init_mem(init_mem_), ps(ps_) {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordtype">int</span> i,j,k,l;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Clear the global arrays</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">int</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;<span class="keywordflow">while</span>(pp&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>+<a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>) *(pp++)=0;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>;<span class="keywordflow">while</span>(pp&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>+<a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>) *(pp++)=0;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">char</span> *cp=<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>;<span class="keywordflow">while</span>(cp&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>+<a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>) *(cp++)=0;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// Set up memory for the blocks in the primary domain</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">for</span>(k=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;k&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a>;k++) <span class="keywordflow">for</span>(j=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;j&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a>;j++) <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;i++) {</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; l=i+nx*(j+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*k);</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[l]=<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">id</span>[l]=<span class="keyword">new</span> <span class="keywordtype">int</span>[<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>];</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[l]=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>];</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;}</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/** The container destructor frees the dynamically allocated memory. */</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7"> 52</a></span>&#160;<a class="code" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">container_periodic_base::~container_periodic_base</a>() {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l=<a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>-1;l&gt;=0;l--) <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[l]&gt;0) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[l];</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">delete</span> [] <span class="keywordtype">id</span>[l];</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">id</a>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * \param[in] (bx_) The x coordinate of the first unit vector.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * vector.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \param[in] init_mem_ the initial memory allocation for each block. */</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd"> 72</a></span>&#160;<a class="code" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd">container_periodic::container_periodic</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_)</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; : <a class="code" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a>(bx_,bxy_,by_,bxz_,byz_,bz_,nx_,ny_,nz_,init_mem_,3),</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; vc(*this,2*nx_+1,2*ey+1,2*ez+1) {}</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * \param[in] (bx_) The x coordinate of the first unit vector.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * vector.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * coordinate directions.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * \param[in] init_mem_ the initial memory allocation for each block. */</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74"> 85</a></span>&#160;<a class="code" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74">container_periodic_poly::container_periodic_poly</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_)</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; : <a class="code" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a>(bx_,bxy_,by_,bxz_,byz_,bz_,nx_,ny_,nz_,init_mem_,4),</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; vc(*this,2*nx_+1,2*ey+1,2*ez+1) {<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle. */</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">container_periodic::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+3*co[ijk]++;</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; *(pp++)=x;*(pp++)=y;*pp=z;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;}</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * \param[in] r the radius of the particle. */</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4"> 105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">container_periodic_poly::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z);</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+4*co[ijk]++;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>&lt;r) <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=r;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;}</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * \param[out] (ai,aj,ak) the periodic image displacement that the particle is</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * in, with (0,0,0) corresponding to the primary domain.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a354f707360a7e51a56de2eafc10cb43f"> 120</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">container_periodic::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z,ai,aj,ak);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+3*co[ijk]++;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; *(pp++)=x;*(pp++)=y;*pp=z;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">/** Put a particle into the correct region of the container.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * \param[in] r the radius of the particle.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * \param[out] (ai,aj,ak) the periodic image displacement that the particle is</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * in, with (0,0,0) corresponding to the primary domain.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a4bc65fd86de5d00d3de49553aec76022"> 135</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">container_periodic_poly::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak) {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z,ai,aj,ak);</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+4*co[ijk]++;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>&lt;r) <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=r;</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">/** Put a particle into the correct region of the container, also recording</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> * into which region it was stored.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * \param[in] vo the ordering class in which to record the region.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle. */</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ad3987d5710d793bdd604f12eeaa326f0"> 149</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">container_periodic::put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; vo.<a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a>(ijk,co[ijk]);</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+3*co[ijk]++;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; *(pp++)=x;*(pp++)=y;*pp=z;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">/** Put a particle into the correct region of the container, also recording</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> * into which region it was stored.</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> * \param[in] vo the ordering class in which to record the region.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * \param[in] r the radius of the particle. */</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a2b0a71bfb4fb576df45d8a4bcbc888cd"> 164</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">container_periodic_poly::put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r) {</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">int</span> ijk;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(ijk,x,y,z);</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">id</span>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]]=n;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; vo.<a class="code" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">add</a>(ijk,co[ijk]);</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+4*co[ijk]++;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>&lt;r) <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=r;</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;}</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">/** Takes a particle position vector and computes the region index into which</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * it should be stored. If the container is periodic, then the routine also</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * maps the particle position to ensure it is in the primary domain. If the</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * container is not periodic, the routine bails out.</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * \param[out] ijk the region index.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the particle position, remapped into the primary</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> * domain if necessary.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * \return True if the particle can be successfully placed into the container,</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * false otherwise. */</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05"> 183</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">container_periodic_base::put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z) {</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// Remap particle in the z direction if necessary</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">int</span> k=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(z*<a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>);</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span>(k&lt;0||k&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">int</span> ak=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(k,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; z-=ak*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;y-=ak*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>;x-=ak*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>;k-=ak*<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// Remap particle in the y direction if necessary</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">int</span> j=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(y*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>);</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(j&lt;0||j&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) {</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">int</span> aj=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(j,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; y-=aj*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;x-=aj*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>;j-=aj*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// Remap particle in the x direction if necessary</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; ijk=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(x*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>);</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span>(ijk&lt;0||ijk&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">int</span> ai=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ijk,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; x-=ai*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;ijk-=ai*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Compute the block index and check memory allocation</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; j+=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;k+=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; ijk+=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(j+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*k);</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]==<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[ijk]) <a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a>(ijk);</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;}</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment">/** Takes a particle position vector and computes the region index into which</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> * it should be stored. If the container is periodic, then the routine also</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * maps the particle position to ensure it is in the primary domain. If the</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> * container is not periodic, the routine bails out.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> * \param[out] ijk the region index.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the particle position, remapped into the primary</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"> * domain if necessary.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * \param[out] (ai,aj,ak) the periodic image displacement that the particle is</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * in, with (0,0,0) corresponding to the primary domain.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * \return True if the particle can be successfully placed into the container,</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> * false otherwise. */</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a8d0c8a32a6e31cdd8eecb335f5f68d22"> 223</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">container_periodic_base::put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="comment">// Remap particle in the z direction if necessary</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">int</span> k=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(z*<a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span>(k&lt;0||k&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) {</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; ak=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(k,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; z-=ak*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;y-=ak*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>;x-=ak*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>;k-=ak*<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; } <span class="keywordflow">else</span> ak=0;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Remap particle in the y direction if necessary</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">int</span> j=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(y*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(j&lt;0||j&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; aj=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(j,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; y-=aj*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;x-=aj*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>;j-=aj*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; } <span class="keywordflow">else</span> aj=0;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Remap particle in the x direction if necessary</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; ijk=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(x*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>);</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(ijk&lt;0||ijk&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) {</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; ai=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ijk,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; x-=ai*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;ijk-=ai*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; } <span class="keywordflow">else</span> ai=0;</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Compute the block index and check memory allocation</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; j+=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;k+=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; ijk+=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(j+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*k);</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk]==<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[ijk]) <a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a>(ijk);</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment">/** Takes a position vector and remaps it into the primary domain.</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * \param[out] (ai,aj,ak) the periodic image displacement that the vector is in,</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * with (0,0,0) corresponding to the primary domain.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * \param[out] (ci,cj,ck) the index of the block that the position vector is</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> * within, once it has been remapped.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the position vector to consider, which is remapped</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> * into the primary domain during the routine.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> * \param[out] ijk the block index that the vector is within. */</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729"> 260</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">container_periodic_base::remap</a>(<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak,<span class="keywordtype">int</span> &amp;ci,<span class="keywordtype">int</span> &amp;cj,<span class="keywordtype">int</span> &amp;ck,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ijk) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Remap particle in the z direction if necessary</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; ck=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(z*<a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>);</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span>(ck&lt;0||ck&gt;=<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>) {</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; ak=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ck,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; z-=ak*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;y-=ak*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>;x-=ak*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>;ck-=ak*<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;</div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; } <span class="keywordflow">else</span> ak=0;</div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// Remap particle in the y direction if necessary</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; cj=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(y*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>);</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(cj&lt;0||cj&gt;=<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>) {</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; aj=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(cj,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; y-=aj*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;x-=aj*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>;cj-=aj*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; } <span class="keywordflow">else</span> aj=0;</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="comment">// Remap particle in the x direction if necessary</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; ci=<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(x*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>);</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) {</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; ai=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; x-=ai*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;ci-=ai*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; } <span class="keywordflow">else</span> ai=0;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; cj+=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;ck+=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; ijk=ci+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(cj+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*ck);</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;}</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">/** Takes a vector and finds the particle whose Voronoi cell contains that</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> * vector. This is equivalent to finding the particle which is nearest to the</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> * vector.</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> * contains the vector. This may point to a particle in</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> * a periodic image of the primary domain.</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> * \param[out] pid the ID of the particle.</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * \return True if a particle was found. If the container has no particles,</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * then the search will not find a Voronoi cell and false is returned. */</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6"> 297</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6">container_periodic::find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid) {</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordtype">int</span> ai,aj,ak,ci,cj,ck,ijk;</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> w;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">double</span> mrs;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// Remap the vector into the primary domain and then search for the</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// Voronoi cell that it is within</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a>(ai,aj,ak,ci,cj,ck,x,y,z,ijk);</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; vc.<a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a>(x,y,z,ci,cj,ck,ijk,w,mrs);</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span>(w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>!=-1) {</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="comment">// Assemble the position vector of the particle to be returned,</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// applying a periodic remapping if necessary</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; ci+=w.<a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>;<span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) ai+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; rx=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>]+ak*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>+aj*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+ai*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ry=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+1]+ak*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>+aj*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; rz=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][3*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+2]+ak*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; pid=<span class="keywordtype">id</span>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>];</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;}</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment">/** Takes a vector and finds the particle whose Voronoi cell contains that</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> * vector. Additional wall classes are not considered by this routine.</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"> * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> * contains the vector. If the container is periodic,</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> * this may point to a particle in a periodic image of</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * the primary domain.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * \param[out] pid the ID of the particle.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * \return True if a particle was found. If the container has no particles,</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> * then the search will not find a Voronoi cell and false is returned. */</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586"> 331</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586">container_periodic_poly::find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid) {</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">int</span> ai,aj,ak,ci,cj,ck,ijk;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> w;</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordtype">double</span> mrs;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="comment">// Remap the vector into the primary domain and then search for the</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// Voronoi cell that it is within</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a>(ai,aj,ak,ci,cj,ck,x,y,z,ijk);</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; vc.<a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a>(x,y,z,ci,cj,ck,ijk,w,mrs);</div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">if</span>(w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>!=-1) {</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// Assemble the position vector of the particle to be returned,</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="comment">// applying a periodic remapping if necessary</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; ci+=w.<a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>;<span class="keywordflow">if</span>(ci&lt;0||ci&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>) ai+=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(ci,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; rx=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>]+ak*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>+aj*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+ai*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; ry=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+1]+ak*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>+aj*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; rz=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][4*w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>+2]+ak*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; pid=<span class="keywordtype">id</span>[w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>][w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>];</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;}</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">/** Increase memory for a particular region.</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"> * \param[in] i the index of the region to reallocate. */</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a"> 357</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">container_periodic_base::add_particle_memory</a>(<span class="keywordtype">int</span> i) {</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// Handle the case when no memory has been allocated for this block</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[i]==0) {</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[i]=<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordtype">id</span>[i]=<span class="keyword">new</span> <span class="keywordtype">int</span>[<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>];</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[i]=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*<a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>];</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="comment">// Otherwise, double the memory allocation for this block. Carry out a</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// check on the memory allocation size, and print a status message if</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// requested.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">int</span> l,nmem(<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[i]&lt;&lt;1);</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span>(nmem&gt;max_particle_memory)</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Absolute maximum memory allocation exceeded&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=3</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Particle memory in region %d scaled up to %d\n&quot;</span>,i,nmem);</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">// Allocate new memory and copy in the contents of the old arrays</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">int</span> *idp=<span class="keyword">new</span> <span class="keywordtype">int</span>[nmem];</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[i];l++) idp[l]=<span class="keywordtype">id</span>[i][l];</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordtype">double</span> *pp=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*nmem];</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*co[i];l++) pp[l]=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[i][l];</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// Update pointers and delete old arrays</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[i]=nmem;</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">delete</span> [] <span class="keywordtype">id</span>[i];<span class="keywordtype">id</span>[i]=idp;</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[i];<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[i]=pp;</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment">/** Import a list of particles from an open file stream into the container.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"> * Entries of four numbers (Particle ID, x position, y position, z position)</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> * are searched for. If the file cannot be successfully read, then the routine</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> * causes a fatal error.</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49"> 394</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49">container_periodic::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordtype">double</span> x,y,z;</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z))==4) <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a>(i,x,y,z);</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;}</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment">/** Import a list of particles from an open file stream, also storing the order</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"> * of that the particles are read. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> * position, y position, z position) are searched for. If the file cannot be</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> * successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> * \param[in,out] vo a reference to an ordering class to use.</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a9ad39c3dcd9311183c671a78a5263c2c"> 407</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49">container_periodic::import</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp) {</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordtype">double</span> x,y,z;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z))==4) <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a>(vo,i,x,y,z);</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment">/** Import a list of particles from an open file stream into the container.</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> * Entries of five numbers (Particle ID, x position, y position, z position,</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment"> * radius) are searched for. If the file cannot be successfully read, then the</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment"> * routine causes a fatal error.</span></div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9"> 419</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9">container_periodic_poly::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">double</span> x,y,z,r;</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z,&amp;r))==5) <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a>(i,x,y,z,r);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;}</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="comment">/** Import a list of particles from an open file stream, also storing the order</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="comment"> * of that the particles are read. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment"> * position, y position, z position, radius) are searched for. If the file</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"> * cannot be successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment"> * \param[in,out] vo a reference to an ordering class to use.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#adaee2751c053589ba3eb1e5419e7d405"> 432</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9">container_periodic_poly::import</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp) {</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordtype">double</span> x,y,z,r;</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z,&amp;r))==5) <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a>(vo,i,x,y,z,r);</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;}</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="comment">/** Outputs the a list of all the container regions along with the number of</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="comment"> * particles stored within each. */</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173"> 441</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">container_periodic_base::region_count</a>() {</div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordtype">int</span> i,j,k,*cop=<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;</div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;k++) <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;j++) <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;i++)</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; printf(<span class="stringliteral">&quot;Region (%d,%d,%d): %d particles\n&quot;</span>,i,j,k,*(cop++));</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="comment">/** Clears a container of particles. */</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116"> 448</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116">container_periodic::clear</a>() {</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *cop=<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;cop&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>+<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;cop++) *cop=0;</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;}</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment">/** Clears a container of particles, also clearing resetting the maximum radius</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> * to zero. */</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2"> 454</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2">container_periodic_poly::clear</a>() {</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> *cop=<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;cop&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>+<a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;cop++) *cop=0;</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>=0;</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;}</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized information about them.</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#abdae5633b67aa3cfcc7b04f9381e4fcd"> 462</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">container_periodic::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a>(vl,format,fp);</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;}</div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized</span></div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> * information about them.</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#ad4225ecfa4e188a773344ffa1f3127a0"> 471</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">container_periodic_poly::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a>(vl,format,fp);</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;}</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized information about them.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#adfe60b3e007ae8405ddca2e063957c3e"> 479</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">container_periodic::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a>(format,fp);</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;}</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">/** Computes all the Voronoi cells and saves customized</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"> * information about them</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a8f5e68c2068f0c73187acc9ad654335c"> 489</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">container_periodic_poly::print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a>(format,fp);</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment">/** Computes all of the Voronoi cells in the container, but does nothing</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> * with the output. It is useful for measuring the pure computation time</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"> * of the Voronoi algorithm, without any additional calculations such as</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment"> * volume evaluation or cell output. */</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187"> 499</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187">container_periodic::compute_all_cells</a>() {</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a>()) <span class="keywordflow">do</span> <a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl);</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a>());</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;}</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="comment">/** Computes all of the Voronoi cells in the container, but does nothing</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="comment"> * with the output. It is useful for measuring the pure computation time</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"> * of the Voronoi algorithm, without any additional calculations such as</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment"> * volume evaluation or cell output. */</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c"> 510</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c">container_periodic_poly::compute_all_cells</a>() {</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a>()) <span class="keywordflow">do</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl);<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a>());</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;}</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment">/** Calculates all of the Voronoi cells and sums their volumes. In most cases</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment"> * without walls, the sum of the Voronoi cell volumes should equal the volume</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"> * of the container to numerical precision.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment"> * \return The sum of all of the computed Voronoi volumes. */</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415"> 520</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415">container_periodic::sum_cell_volumes</a>() {</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordtype">double</span> vol=0;</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a>()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl)) vol+=c.<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>();<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a>());</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">return</span> vol;</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;}</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment">/** Calculates all of the Voronoi cells and sums their volumes. In most cases</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> * without walls, the sum of the Voronoi cell volumes should equal the volume</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> * of the container to numerical precision.</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"> * \return The sum of all of the computed Voronoi volumes. */</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796"> 532</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796">container_periodic_poly::sum_cell_volumes</a>() {</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordtype">double</span> vol=0;</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">start</a>()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl)) vol+=c.<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>();<span class="keywordflow">while</span>(vl.<a class="code" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">inc</a>());</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">return</span> vol;</div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;}</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">/** This routine creates all periodic images of the particles. It is meant for</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"> * diagnostic purposes only, since usually periodic images are dynamically</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"> * created in when they are referenced. */</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44"> 543</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">container_periodic_base::create_all_images</a>() {</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">for</span>(k=0;k&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a>;k++) <span class="keywordflow">for</span>(j=0;j&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>;j++) <span class="keywordflow">for</span>(i=0;i&lt;<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;i++) <a class="code" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a>(i,j,k);</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;}</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment">/** Checks that the particles within each block lie within that block&#39;s bounds.</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"> * This is useful for diagnosing problems with periodic image computation. */</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d"> 550</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">container_periodic_base::check_compartmentalized</a>() {</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordtype">int</span> c,l,i,j,k;</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordtype">double</span> mix,miy,miz,max,may,maz,*pp;</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">for</span>(k=l=0;k&lt;oz;k++) for(j=0;j&lt;oy;j++) for(i=0;i&lt;nx;i++,l++) if(mem[l]&gt;0) {</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="comment">// Compute the block&#39;s bounds, adding in a small tolerance</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; mix=i*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>-tolerance;max=mix+<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>+tolerance;</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; miy=(j-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>)*<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>-tolerance;may=miy+<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>+tolerance;</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; miz=(k-<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>)*<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>-tolerance;maz=miz+<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>+tolerance;</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="comment">// Print entries for any particles that lie outside the block&#39;s</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// bounds</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">for</span>(pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[l],c=0;c&lt;co[l];c++,pp+=ps) if(*pp&lt;mix||*pp&gt;max||pp[1]&lt;miy||pp[1]&gt;may||pp[2]&lt;miz||pp[2]&gt;maz)</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; printf(<span class="stringliteral">&quot;%d %d %d %d %f %f %f %f %f %f %f %f %f\n&quot;</span>,</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordtype">id</span>[l][c],i,j,k,*pp,pp[1],pp[2],mix,max,miy,may,miz,maz);</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; }</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;}</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="comment">/** Creates particles within an image block that is aligned with the primary</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="comment"> * domain in the z axis. In this case, the image block may be comprised of</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="comment"> * particles from two primary blocks. The routine considers these two primary</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"> * blocks, and adds the needed particles to the image. The remaining particles</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"> * from the primary blocks are also filled into the neighboring images.</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="comment"> * \param[in] (di,dj,dk) the index of the block to consider. The z index must</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment"> * satisfy ez&lt;=dk&lt;wz. */</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704"> 575</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">container_periodic_base::create_side_image</a>(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk) {</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">int</span> l,dijk=di+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(dj+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*dk),odijk,ima=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(dj-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordtype">int</span> qua=di+<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(-ima*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>),quadiv=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(qua,nx);</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordtype">int</span> fi=qua-quadiv*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>,fijk=fi+nx*(dj-ima*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*dk);</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordtype">double</span> dis=ima*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+quadiv*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,switchx=di*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>-ima*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>-quadiv*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,adis;</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="comment">// Left image computation</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;1)==0) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span>(di&gt;0) {</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; odijk=dijk-1;adis=dis;</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; odijk=dijk+nx-1;adis=dis+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[odijk]|=2;</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk];l++) {</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk,l,dis,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*ima,0);</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(odijk,fijk,l,adis,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*ima,0);</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// Right image computation</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;2)==0) {</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordflow">if</span>(fi==nx-1) {</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; fijk+=1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;switchx+=(1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>)*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;dis+=<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; fijk++;switchx+=<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span>(di==nx-1) {</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; odijk=dijk-nx+1;adis=dis-<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; odijk=dijk+1;adis=dis;</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[odijk]|=1;</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk];l++) {</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&lt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk,l,dis,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*ima,0);</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(odijk,fijk,l,adis,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*ima,0);</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// All contributions to the block now added, so set both two bits of</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// the image information</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]=3;</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;}</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment">/** Creates particles within an image block that is not aligned with the</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment"> * primary domain in the z axis. In this case, the image block may be comprised</span></div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment"> * of particles from four primary blocks. The routine considers these four</span></div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"> * primary blocks, and adds the needed particles to the image. The remaining</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment"> * particles from the primary blocks are also filled into the neighboring</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"> * images.</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> * \param[in] (di,dj,dk) the index of the block to consider. The z index must</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="comment"> * satisfy dk&lt;ez or dk&gt;=wz. */</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644"> 627</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">container_periodic_base::create_vertical_image</a>(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk) {</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordtype">int</span> l,dijk=di+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(dj+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*dk),dijkl,dijkr,ima=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(dk-<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>,<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>);</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordtype">int</span> qj=dj+<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(-ima*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>*<a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>),qjdiv=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(qj-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>,<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>);</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordtype">int</span> qi=di+<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>((-ima*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>-qjdiv*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>)*<a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>),qidiv=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(qi,nx);</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordtype">int</span> fi=qi-qidiv*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>,fj=qj-qjdiv*<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>,fijk=fi+nx*(fj+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*(dk-ima*<a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>)),fijk2;</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordtype">double</span> disy=ima*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>+qjdiv*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,switchy=(dj-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>)*<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>-ima*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>-qjdiv*by;</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordtype">double</span> disx=ima*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>+qjdiv*bxy+qidiv*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,switchx=di*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>-ima*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>-qjdiv*bxy-qidiv*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">double</span> switchx2,disxl,disxr,disx2,disxr2;</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span>(di==0) {dijkl=dijk+nx-1;disxl=disx+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;}</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span> {dijkl=dijk-1;disxl=disx;}</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span>(di==nx-1) {dijkr=dijk-nx+1;disxr=disx-<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;}</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">else</span> {dijkr=dijk+1;disxr=disx;}</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="comment">// Down-left image computation</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordtype">bool</span> y_exist=dj!=0;</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;1)==0) {</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkl]|=2;</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">if</span>(y_exist) {</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkl-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=8;</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=4;</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; }</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk];l++) {</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l+1]&gt;switchy) {</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk,l,disx,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkl,fijk,l,disxl,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span>(!y_exist) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk-nx,fijk,l,disx,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkl-nx,fijk,l,disxl,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; }</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// Down-right image computation</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;2)==0) {</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span>(fi==nx-1) {</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; fijk2=fijk+1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;switchx2=switchx+(1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>)*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;disx2=disx+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;disxr2=disxr+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; fijk2=fijk+1;switchx2=switchx+<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;disx2=disx;disxr2=disxr;</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkr]|=1;</div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span>(y_exist) {</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkr-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=4;</div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=8;</div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk2];l++) {</div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l+1]&gt;switchy) {</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx2) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkr,fijk2,l,disxr2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk2,l,disx2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">if</span>(!y_exist) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx2) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkr-nx,fijk2,l,disxr2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk-nx,fijk2,l,disx2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="comment">// Recomputation of some intermediate quantities for boundary cases</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span>(fj==<a class="code" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a>-1) {</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; fijk+=nx*(1-<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>)-fi;</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; switchy+=(1-<a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>)*<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>;</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; disy+=<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; qi=di+<a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(-(ima*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>+(qjdiv+1)*bxy)*xsp);</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordtype">int</span> dqidiv=<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(qi,nx)-qidiv;qidiv+=dqidiv;</div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; fi=qi-qidiv*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; fijk+=fi;</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; disx+=bxy+bx*dqidiv;</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; disxl+=bxy+bx*dqidiv;</div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; disxr+=bxy+bx*dqidiv;</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; switchx-=bxy+bx*dqidiv;</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; fijk+=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;switchy+=<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>;</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="comment">// Up-left image computation</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; y_exist=dj!=<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>-1;</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;4)==0) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkl]|=8;</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span>(y_exist) {</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkl+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=2;</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=1;</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk];l++) {</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l+1]&gt;switchy) {</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span>(!y_exist) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk+nx,fijk,l,disx,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkl+nx,fijk,l,disxl,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk,l,disx,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkl,fijk,l,disxl,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; }</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; }</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="comment">// Up-right image computation</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]&amp;8)==0) {</div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span>(fi==nx-1) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; fijk2=fijk+1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;switchx2=switchx+(1-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>)*<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;disx2=disx+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;disxr2=disxr+<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;</div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; fijk2=fijk+1;switchx2=switchx+<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;disx2=disx;disxr2=disxr;</div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkr]|=4;</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span>(y_exist) {</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijkr+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=1;</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>]|=2;</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[fijk2];l++) {</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l+1]&gt;switchy) {</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span>(!y_exist) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx2) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkr+nx,fijk2,l,disxr2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk+nx,fijk2,l,disx2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk2][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l]&gt;switchx2) <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijkr,fijk2,l,disxr2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(dijk,fijk2,l,disx2,disy,<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>*ima);</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; }</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; }</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="comment">// All contributions to the block now added, so set all four bits of</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <span class="comment">// the image information</span></div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>[dijk]=15;</div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment">/** Copies a particle position from the primary domain into an image block.</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment"> * \param[in] reg the block index within the primary domain that the particle</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment"> * is within.</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"> * \param[in] fijk the index of the image block.</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment"> * \param[in] l the index of the particle entry within the primary block.</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="comment"> * \param[in] (dx,dy,dz) the displacement vector to add to the particle. */</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353"> 758</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">container_periodic_base::put_image</a>(<span class="keywordtype">int</span> reg,<span class="keywordtype">int</span> fijk,<span class="keywordtype">int</span> l,<span class="keywordtype">double</span> dx,<span class="keywordtype">double</span> dy,<span class="keywordtype">double</span> dz) {</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[reg]==<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>[reg]) <a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a>(reg);</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordtype">double</span> *p1=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[reg]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[reg],*p2=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[fijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*l;</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; *(p1++)=*(p2++)+dx;</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; *(p1++)=*(p2++)+dy;</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; *p1=*p2+dz;</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>==4) *(++p1)=*(++p2);</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordtype">id</span>[reg][co[reg]++]=<span class="keywordtype">id</span>[fijk][l];</div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;}</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container__prd_8hh.html b/lib/voro++/html/container__prd_8hh.html
new file mode 100644
index 000000000..a86ec392c
--- /dev/null
+++ b/lib/voro++/html/container__prd_8hh.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container_prd.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">container_prd.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the container_periodic_base and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cstdio&gt;</code><br/>
+<code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__base_8hh_source.html">v_base.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&quot;</code><br/>
+</div>
+<p><a href="container__prd_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__base.html">voro::container_periodic_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for representing a particle system in a 3D periodic non-orthogonal periodic domain. <a href="classvoro_1_1container__periodic__base.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic.html">voro::container_periodic</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing regular Voronoi tessellations. <a href="classvoro_1_1container__periodic.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1container__periodic__poly.html">voro::container_periodic_poly</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing radical Voronoi tessellations. <a href="classvoro_1_1container__periodic__poly.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/container__prd_8hh_source.html b/lib/voro++/html/container__prd_8hh_source.html
new file mode 100644
index 000000000..063040bfc
--- /dev/null
+++ b/lib/voro++/html/container__prd_8hh_source.html
@@ -0,0 +1,671 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: container_prd.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">container_prd.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="container__prd_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file container_prd.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the container_periodic_base and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_CONTAINER_PRD_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_CONTAINER_PRD_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base_8hh.html" title="Header file for the base Voronoi container class.">v_base.hh</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8hh.html" title="Header file for the loop classes.">c_loops.hh</a>&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__compute_8hh.html" title="Header file for the voro_compute template and related classes.">v_compute.hh</a>&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="unitcell_8hh.html" title="Header file for the unitcell class.">unitcell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rad__option_8hh.html" title="Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellat...">rad_option.hh</a>&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/** \brief Class for representing a particle system in a 3D periodic</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * non-orthogonal periodic domain.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * This class represents a particle system in a three-dimensional</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * non-orthogonal periodic domain. The domain is defined by three periodicity</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * vectors (bx,0,0), (bxy,by,0), and (bxz,byz,bz) that represent a</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * parallelepiped. Internally, the class stores particles in the box 0&lt;x&lt;bx,</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * 0&lt;y&lt;by, 0&lt;z&lt;bz, and constructs periodic images of particles that displaced</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * by the three periodicity vectors when they are necessary for the</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * computation. The internal memory structure for this class is significantly</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * different from the container_base class in order to handle the dynamic</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * construction of these periodic images.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * The class is derived from the unitcell class, which encapsulates information</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * about the domain geometry, and the voro_base class, which encapsulates</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * information about the underlying computational grid. */</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain...">unitcell</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a> {</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> /** The lower y index (inclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6"> 47</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> /** The lower z index (inclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f"> 50</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> /** The upper y index (exclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591"> 53</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> /** The upper z index (exclusive) of the primary domain within</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * the block structure. */</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0"> 56</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> /** The total size of the block structure (including images) in</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * the y direction. */</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5"> 59</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> /** The total size of the block structure (including images) in</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * the z direction. */</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da"> 62</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> /** The total number of blocks. */</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313"> 64</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> /** This array holds the numerical IDs of each particle in each</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * computational box. */</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76"> 67</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> /** A two dimensional array holding particle positions. For the</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * derived container_poly class, this also holds particle</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * radii. */</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608"> 71</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> /** This array holds the number of particles within each</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * computational box of the container. */</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2"> 74</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> /** This array holds the maximum amount of particle memory for</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * each computational box of the container. If the number of</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * particles in a particular box ever approaches this limit,</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * more is allocated using the add_particle_memory() function.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70"> 80</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">mem</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> /** An array holding information about periodic image</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * construction at a given location. */</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1"> 83</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">img</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> /** The initial amount of memory to allocate for particles</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * for each block. */</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1"> 86</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">init_mem</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> /** The amount of memory in the array structure for each</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * particle. This is set to 3 when the basic class is</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * initialized, so that the array holds (x,y,z) positions. If</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * the container class is initialized as part of the derived</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * class container_poly, then this is set to 4, to also hold</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * the particle radii. */</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e"> 93</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">container_periodic_base</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_,<span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">~container_periodic_base</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> /** Prints all particles in the container, including those that</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * have been constructed in image blocks. */</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785"> 99</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">print_all_particles</a>() {</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">int</span> ijk,q;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span>(ijk=0;ijk&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">oxyz</a>;ijk++) <span class="keywordflow">for</span>(q=0;q&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">co</a>[ijk];q++)</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; printf(<span class="stringliteral">&quot;%d %g %g %g\n&quot;</span>,<span class="keywordtype">id</span>[ijk][q],<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q],<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q+1],<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk][<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q+2]);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">region_count</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> /** Initializes the Voronoi cell prior to a compute_cell</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * operation for a specific particle being carried out by a</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * voro_compute class. The cell is initialized to be the</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * pre-computed unit Voronoi cell based on planes formed by</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * periodic images of the particle.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * \param[in,out] c a reference to a voronoicell object.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * \param[in] q the index of the particle within its block.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the block in the</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * container coordinate system.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * \param[out] (i,j,k) the coordinates of the test block</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * relative to the voro_compute</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * coordinate system.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * \param[out] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * \param[out] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> * compute_cell routine.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * \return False if the plane cuts applied by walls completely</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * removed the cell, true otherwise. */</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd"> 124</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">initialize_voronoicell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> &amp;i,<span class="keywordtype">int</span> &amp;j,<span class="keywordtype">int</span> &amp;k,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; c=<a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">double</span> *pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; x=*(pp++);y=*(pp++);z=*pp;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; i=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;j=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;k=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> /** Initializes parameters for a find_voronoi_cell call within</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * the voro_compute template.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the test block in</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> * the container coordinate system.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> * \param[in] ijk the index of the test block</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * \param[out] (i,j,k) the coordinates of the test block</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * relative to the voro_compute</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * coordinate system.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * \param[out] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * find_voronoi_cell routine (but not needed</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * in this instance.) */</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0"> 142</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">initialize_search</a>(<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> &amp;i,<span class="keywordtype">int</span> &amp;j,<span class="keywordtype">int</span> &amp;k,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; i=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;j=<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>;k=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> /** Returns the position of a particle currently being computed</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * relative to the computational block that it is within. It is</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> * used to select the optimal worklist entry to use.</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position of the particle.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the block that the particle is within.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> * \param[out] (fx,fy,fz) the position relative to the block.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c"> 152</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">frac_pos</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> ci,<span class="keywordtype">double</span> cj,<span class="keywordtype">double</span> ck,<span class="keywordtype">double</span> &amp;fx,<span class="keywordtype">double</span> &amp;fy,<span class="keywordtype">double</span> &amp;fz) {</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; fx=x-<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>*ci;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; fy=y-<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>*(cj-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; fz=z-<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>*(ck-<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> /** Calculates the index of block in the container structure</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> * corresponding to given coordinates.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the original block</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> * in the current computation, relative</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> * to the container coordinate system.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> * \param[in] (ei,ej,ek) the displacement of the current block</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * from the original block.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * \param[in,out] (qx,qy,qz) the periodic displacement that</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> * must be added to the particles</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> * within the computed block.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> * \param[in] disp a block displacement used internally by the</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * find_voronoi_cell and compute_cell routines</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * (but not needed in this instance.)</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * \return The block index. */</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e"> 171</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">region_index</a>(<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">double</span> &amp;qx,<span class="keywordtype">double</span> &amp;qy,<span class="keywordtype">double</span> &amp;qz,<span class="keywordtype">int</span> &amp;disp) {</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">int</span> qi=ci+(ei-<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>),qj=cj+(ej-<a class="code" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">ey</a>),qk=ck+(ek-<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>);</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">int</span> iv(<a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(qi,<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>));<span class="keywordflow">if</span>(iv!=0) {qx=iv*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;qi-=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*iv;} <span class="keywordflow">else</span> qx=0;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a>(qi,qj,qk);</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> qi+<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*(qj+<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>*qk);</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">create_all_images</a>();</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">check_compartmentalized</a>();</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">add_particle_memory</a>(<span class="keywordtype">int</span> i);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z);</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">put_locate_block</a>(<span class="keywordtype">int</span> &amp;ijk,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak);<span class="comment"></span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> /** Creates particles within an image block by copying them</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * from the primary domain and shifting them. If the given</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * block is aligned with the primary domain in the z-direction,</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * the routine calls the simpler create_side_image routine</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * where the image block may comprise of particles from up to</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * two primary blocks. Otherwise is calls the more complex</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> * create_vertical_image where the image block may comprise of</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> * particles from up to four primary blocks.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> * \param[in] (di,dj,dk) the coordinates of the image block to</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * create. */</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12"> 193</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">create_periodic_image</a>(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk) {</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(di&lt;0||di&gt;=<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>||dj&lt;0||dj&gt;=<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>||dk&lt;0||dk&gt;=<a class="code" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">oz</a>)</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Constructing periodic image for nonexistent point&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span>(dk&gt;=<a class="code" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">ez</a>&amp;&amp;dk&lt;<a class="code" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">wz</a>) {</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span>(dj&lt;ey||dj&gt;=<a class="code" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">wy</a>) <a class="code" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">create_side_image</a>(di,dj,dk);</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; } <span class="keywordflow">else</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">create_vertical_image</a>(di,dj,dk);</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">create_side_image</a>(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk);</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">create_vertical_image</a>(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk);</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">put_image</a>(<span class="keywordtype">int</span> reg,<span class="keywordtype">int</span> fijk,<span class="keywordtype">int</span> l,<span class="keywordtype">double</span> dx,<span class="keywordtype">double</span> dy,<span class="keywordtype">double</span> dz);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">remap</a>(<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak,<span class="keywordtype">int</span> &amp;ci,<span class="keywordtype">int</span> &amp;cj,<span class="keywordtype">int</span> &amp;ck,<span class="keywordtype">double</span> &amp;x,<span class="keywordtype">double</span> &amp;y,<span class="keywordtype">double</span> &amp;z,<span class="keywordtype">int</span> &amp;ijk);</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;};</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">/** \brief Extension of the container_periodic_base class for computing regular</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * Voronoi tessellations.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * This class is an extension of the container_periodic_base that has routines</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * specifically for computing the regular Voronoi tessellation with no</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * dependence on particle radii. */</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html"> 212</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1radius__mono.html" title="Class containing all of the routines that are specific to computing the regular Voronoi tessellation...">radius_mono</a> {</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd">container_periodic</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_);</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116">clear</a>();</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak);</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"> * the container. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> * position, y position, z position) are searched for. If the</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * file cannot be successfully read, then the routine causes a</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> * fatal error.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ac2b38542ffabd95cb7f5bc5dab162a5d"> 229</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * the container. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * position, y position, z position) are searched for. In</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * addition, the order in which particles are read is saved</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * into an ordering class. If the file cannot be successfully</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * \param[in,out] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ae586c7cf716fa84e91e9f801f5ac8a50"> 243</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">import</span>(vo,fp);</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187">compute_all_cells</a>();</div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415">sum_cell_volumes</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> /** Dumps particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8"> 254</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">draw_particles</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+3*vl.q;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d %g %g %g\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2]);</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> /** Dumps all of the particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a21a12c0ed7e67de10360cd3af8a5928f"> 263</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a21a12c0ed7e67de10360cd3af8a5928f">draw_particles</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">draw_particles</a>(vl,fp);</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> /** Dumps all of the particle IDs and positions to a file.</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a0b7b5b922f383d0c8d05e499a887a3b9"> 269</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a0b7b5b922f383d0c8d05e499a887a3b9">draw_particles</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">draw_particles</a>(fp);</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> /** Dumps particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d"> 278</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">draw_particles_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+3*vl.q;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// id %d\nsphere{&lt;%g,%g,%g&gt;,s}\n&quot;</span>,</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2]);</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> /** Dumps all particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a7279993d74b79966cfaeab40f8df5882"> 288</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a7279993d74b79966cfaeab40f8df5882">draw_particles_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">draw_particles_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> /** Dumps all particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#af008d47998b895aeeb108361a642407d"> 294</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#af008d47998b895aeeb108361a642407d">draw_particles_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">draw_particles_pov</a>(fp);</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b"> 304</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">draw_cells_gnuplot</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*vl.q;</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#adaf8256dd86c8c37618113cee774345f"> 314</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adaf8256dd86c8c37618113cee774345f">draw_cells_gnuplot</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">draw_cells_gnuplot</a>(vl,fp);</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"> /** Compute all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a4f2b088d20b479b62a3dcdfa42d62526"> 321</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a4f2b088d20b479b62a3dcdfa42d62526">draw_cells_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">draw_cells_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff"> 331</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">draw_cells_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// cell %d\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q]);</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*vl.q;</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#ae35a7e24438d3290c5dbb39f2474f3f4"> 342</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#ae35a7e24438d3290c5dbb39f2474f3f4">draw_cells_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">draw_cells_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a690edc7e6e23393d82faf320aac1b2d9"> 349</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#a690edc7e6e23393d82faf320aac1b2d9">draw_cells_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <a class="code" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">draw_cells_pov</a>(fp);</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> /** Computes the Voronoi cells and saves customized information</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"> * about them.</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00360"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212"> 360</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a>(c_loop &amp;vl,<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordtype">int</span> ijk,q;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a>(format)) {</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> c;</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q;</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],default_radius,fp);</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q;</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],default_radius,fp);</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp=stdout);</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6">find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid);<span class="comment"></span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment"> /** Computes the Voronoi cell for a particle currently being</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"> * referenced by a loop class.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"> * computed because it was removed entirely for some reason,</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> * then the routine returns false. */</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell,<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00388"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff"> 388</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">compute_cell</a>(v_cell &amp;c,c_loop &amp;vl) {</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);</div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> /** Computes the Voronoi cell for given particle.</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> * computed because it was removed entirely for some reason,</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> * then the routine returns false. */</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00400"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic.html#a5ed9e19316148b6af242887ccc8ccf60"> 400</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic.html#a5ed9e19316148b6af242887ccc8ccf60">compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">int</span> k(ijk/(<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>)),ijkt(ijk-(<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*oy)*k),j(ijkt/<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>),i(ijkt-j*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,ijk,q,i,j,k);</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classvoro_1_1voro__compute.html">voro_compute&lt;container_periodic&gt;</a> vc;</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a>&lt;<a class="code" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a>&gt;;</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;};</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment">/** \brief Extension of the container_periodic_base class for computing radical</span></div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> * Voronoi tessellations.</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> * This class is an extension of container_periodic_base that has routines</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"> * specifically for computing the radical Voronoi tessellation that depends</span></div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> * on the particle radii. */</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html"> 415</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a>, <span class="keyword">public</span> <a class="code" href="classvoro_1_1radius__poly.html" title="Class containing all of the routines that are specific to computing the radical Voronoi tessellation...">radius_poly</a> {</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74">container_periodic_poly</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">int</span> init_mem_);</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2">clear</a>();</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r);</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r,<span class="keywordtype">int</span> &amp;ai,<span class="keywordtype">int</span> &amp;aj,<span class="keywordtype">int</span> &amp;ak);</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">put</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r);</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="comment"> * the container_poly class. Entries of five numbers (Particle</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="comment"> * ID, x position, y position, z position, radius) are searched</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment"> * for. If the file cannot be successfully read, then the</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"> * routine causes a fatal error.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a2052ab1ed4c33c961fbc26a86c66a494"> 432</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="comment"> /** Imports a list of particles from an open file stream into</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="comment"> * the container_poly class. Entries of five numbers (Particle</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="comment"> * ID, x position, y position, z position, radius) are searched</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="comment"> * for. In addition, the order in which particles are read is</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="comment"> * saved into an ordering class. If the file cannot be</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="comment"> * successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="comment"> * \param[in,out] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"> * \param[in] filename the name of the file to open and read</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment"> * from. */</span></div>
+<div class="line"><a name="l00446"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a346b67c09850a78e8eb9144029fe3087"> 446</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">import</span>(vo,fp);</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c">compute_all_cells</a>();</div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796">sum_cell_volumes</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> /** Dumps particle IDs, positions and radii to a file.</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00457"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a"> 457</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">draw_particles</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+4*vl.q;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%d %g %g %g %g\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment"> /** Dumps all of the particle IDs, positions and radii to a</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> * file.</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00467"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#afa2993c7ef337244c73b073a3f546df7"> 467</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#afa2993c7ef337244c73b073a3f546df7">draw_particles</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">draw_particles</a>(vl,fp);</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"> /** Dumps all of the particle IDs, positions and radii to a</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment"> * file.</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a7bfb4757df738760c59d4f8905a92c17"> 474</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7bfb4757df738760c59d4f8905a92c17">draw_particles</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>);</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">draw_particles</a>(fp);</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="comment"> /** Dumps particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00483"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1"> 483</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1">draw_particles_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+4*vl.q;</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// id %d\nsphere{&lt;%g,%g,%g&gt;,%g}\n&quot;</span>,</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordtype">id</span>[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment"> /** Dumps all the particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a5bf55c7e6ace75b00aa245636afb82b7"> 493</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a5bf55c7e6ace75b00aa245636afb82b7">draw_particles_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1">draw_particles_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"> /** Dumps all the particle positions in POV-Ray format.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#acd3e09b90187ab0ebb521d16d914b9a0"> 499</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#acd3e09b90187ab0ebb521d16d914b9a0">draw_particles_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; FILE *fp(safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>));</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1">draw_particles_pov</a>(fp);</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00509"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c"> 509</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">draw_cells_gnuplot</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*vl.q;</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">draw_gnuplot</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment"> /** Compute all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#aed830c459b6f9b1a8ef130d0641c3ead"> 519</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#aed830c459b6f9b1a8ef130d0641c3ead">draw_cells_gnuplot</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">draw_cells_gnuplot</a>(vl,fp);</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"> /** Compute all Voronoi cells and saves the output in gnuplot</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a6bfd38989da6891d35111ad61a5b3634"> 526</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a6bfd38989da6891d35111ad61a5b3634">draw_cells_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; FILE *fp(safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>));</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">draw_cells_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"> /** Computes Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00536"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52"> 536</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">draw_cells_pov</a>(c_loop &amp;vl,FILE *fp) {</div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; fprintf(fp,<span class="stringliteral">&quot;// cell %d\n&quot;</span>,<span class="keywordtype">id</span>[vl.ijk][vl.q]);</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[vl.ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*vl.q;</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">draw_pov</a>(*pp,pp[1],pp[2],fp);</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a23b1f79f3cc8cee7c4b4d9470a0ee6f0"> 547</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a23b1f79f3cc8cee7c4b4d9470a0ee6f0">draw_cells_pov</a>(FILE *fp=stdout) {</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <a class="code" href="classvoro_1_1c__loop__all__periodic.html" title="A class for looping over all particles in a container_periodic or container_periodic_poly class...">c_loop_all_periodic</a> vl(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">draw_cells_pov</a>(vl,fp);</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> /** Computes all Voronoi cells and saves the output in POV-Ray</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment"> * format.</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="comment"> * \param[in] filename the name of the file to write to. */</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a7f64711de2a4ce09c1cc2c0e5cbdf9f5"> 554</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f64711de2a4ce09c1cc2c0e5cbdf9f5">draw_cells_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; FILE *fp(safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>));</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">draw_cells_pov</a>(fp);</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="comment"> /** Computes the Voronoi cells and saves customized information</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="comment"> * about them.</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="comment"> * \param[in] format the custom output string to use.</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="comment"> * \param[in] fp a file handle to write to. */</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00565"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5"> 565</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a>(c_loop &amp;vl,<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp) {</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordtype">int</span> ijk,q;<span class="keywordtype">double</span> *pp;</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a>(format)) {</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> c;</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q;</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],pp[3],fp);</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">if</span>(vl.start()) <span class="keywordflow">do</span> <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(c,vl)) {</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; ijk=vl.ijk;q=vl.q;pp=<a class="code" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">p</a>[ijk]+<a class="code" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">ps</a>*q;</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; c.<a class="code" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">output_custom</a>(format,<span class="keywordtype">id</span>[ijk][q],*pp,pp[1],pp[2],pp[3],fp);</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; } <span class="keywordflow">while</span>(vl.inc());</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; }</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="comment"> /** Computes the Voronoi cell for a particle currently being</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="comment"> * referenced by a loop class.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment"> * \param[in] vl the loop class to use.</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"> * computed because it was removed entirely for some reason,</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment"> * then the routine returns false. */</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell,<span class="keyword">class</span> c_loop&gt;</div>
+<div class="line"><a name="l00590"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb"> 590</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">compute_cell</a>(v_cell &amp;c,c_loop &amp;vl) {</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"> /** Computes the Voronoi cell for given particle.</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> * \param[out] c a Voronoi cell class in which to store the</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> * computed cell.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"> * \return True if the cell was computed. If the cell cannot be</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment"> * computed because it was removed entirely for some reason,</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"> * then the routine returns false. */</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00602"></a><span class="lineno"><a class="code" href="classvoro_1_1container__periodic__poly.html#abd0fd5314a1d1e50721d2320171064e8"> 602</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#abd0fd5314a1d1e50721d2320171064e8">compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordtype">int</span> k(ijk/(<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*<a class="code" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">oy</a>)),ijkt(ijk-(<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>*oy)*k),j(ijkt/<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>),i(ijkt-j*<a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>);</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> vc.<a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(c,ijk,q,i,j,k);</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,FILE *fp=stdout);</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">print_custom</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format,<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586">find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> &amp;rx,<span class="keywordtype">double</span> &amp;ry,<span class="keywordtype">double</span> &amp;rz,<span class="keywordtype">int</span> &amp;pid);</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classvoro_1_1voro__compute.html">voro_compute&lt;container_periodic_poly&gt;</a> vc;</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a>&lt;<a class="code" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a>&gt;;</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;};</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;}</div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/doxygen.css b/lib/voro++/html/doxygen.css
new file mode 100644
index 000000000..858945074
--- /dev/null
+++ b/lib/voro++/html/doxygen.css
@@ -0,0 +1,1156 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+ font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+ font-size: 13px;
+ line-height: 1.3;
+}
+
+/* @group Heading Levels */
+
+h1 {
+ font-size: 150%;
+}
+
+.title {
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2 {
+ font-size: 120%;
+}
+
+h3 {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+ margin-top: 2px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px;
+ margin: 4px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+ border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+}
+
+
+
+/* @end */
+
+/* these are for tree view when not used as main index */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ width: 100%;
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ width: 100%;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 7px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/lib/voro++/html/doxygen.png b/lib/voro++/html/doxygen.png
new file mode 100644
index 000000000..3ff17d807
Binary files /dev/null and b/lib/voro++/html/doxygen.png differ
diff --git a/lib/voro++/html/dynsections.js b/lib/voro++/html/dynsections.js
new file mode 100644
index 000000000..116542f18
--- /dev/null
+++ b/lib/voro++/html/dynsections.js
@@ -0,0 +1,78 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function(){
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.attr('src','ftv2folderopen.png');
+ a.attr('src','ftv2mnode.png');
+ $(this).show();
+ } else if (l==level+1) {
+ i.attr('src','ftv2folderclosed.png');
+ a.attr('src','ftv2pnode.png');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+function toggleFolder(id)
+{
+ var n = $('[id^=row_'+id+']');
+ var i = $('[id^=img_'+id+']');
+ var a = $('[id^=arr_'+id+']');
+ var c = n.slice(1);
+ if (c.filter(':first').is(':visible')===true) {
+ i.attr('src','ftv2folderclosed.png');
+ a.attr('src','ftv2pnode.png');
+ c.hide();
+ } else {
+ i.attr('src','ftv2folderopen.png');
+ a.attr('src','ftv2mnode.png');
+ c.show();
+ }
+ updateStripes();
+}
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+
diff --git a/lib/voro++/html/files.html b/lib/voro++/html/files.html
new file mode 100644
index 000000000..007bff3e1
--- /dev/null
+++ b/lib/voro++/html/files.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="c__loops_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="c__loops_8cc.html" target="_self">c_loops.cc</a></td><td class="desc">Function implementations for the loop classes</td></tr>
+<tr id="row_1_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="c__loops_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="c__loops_8hh.html" target="_self">c_loops.hh</a></td><td class="desc">Header file for the loop classes</td></tr>
+<tr id="row_2_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="cell_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="cell_8cc.html" target="_self">cell.cc</a></td><td class="desc">Function implementations for the voronoicell and related classes</td></tr>
+<tr id="row_3_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="cell_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="cell_8hh.html" target="_self">cell.hh</a></td><td class="desc">Header file for the voronoicell and related classes</td></tr>
+<tr id="row_4_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="common_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="common_8cc.html" target="_self">common.cc</a></td><td class="desc">Implementations of the small helper functions</td></tr>
+<tr id="row_5_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="common_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="common_8hh.html" target="_self">common.hh</a></td><td class="desc">Header file for the small helper functions</td></tr>
+<tr id="row_6_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="config_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="config_8hh.html" target="_self">config.hh</a></td><td class="desc">Master configuration file for setting various compile-time options</td></tr>
+<tr id="row_7_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="container_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="container_8cc.html" target="_self">container.cc</a></td><td class="desc">Function implementations for the container and related classes</td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="container_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="container_8hh.html" target="_self">container.hh</a></td><td class="desc">Header file for the container_base and related classes</td></tr>
+<tr id="row_9_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="container__prd_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="container__prd_8cc.html" target="_self">container_prd.cc</a></td><td class="desc">Function implementations for the container_periodic_base and related classes</td></tr>
+<tr id="row_10_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="container__prd_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="container__prd_8hh.html" target="_self">container_prd.hh</a></td><td class="desc">Header file for the container_periodic_base and related classes</td></tr>
+<tr id="row_11_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pre__container_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="pre__container_8cc.html" target="_self">pre_container.cc</a></td><td class="desc">Function implementations for the pre_container and related classes</td></tr>
+<tr id="row_12_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="pre__container_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="pre__container_8hh.html" target="_self">pre_container.hh</a></td><td class="desc">Header file for the pre_container and related classes</td></tr>
+<tr id="row_13_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="rad__option_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="rad__option_8hh.html" target="_self">rad_option.hh</a></td><td class="desc">Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellations</td></tr>
+<tr id="row_14_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="unitcell_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="unitcell_8cc.html" target="_self">unitcell.cc</a></td><td class="desc">Function implementations for the unitcell class</td></tr>
+<tr id="row_15_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="unitcell_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="unitcell_8hh.html" target="_self">unitcell.hh</a></td><td class="desc">Header file for the unitcell class</td></tr>
+<tr id="row_16_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="v__base_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="v__base_8cc.html" target="_self">v_base.cc</a></td><td class="desc">Function implementations for the base Voronoi container class</td></tr>
+<tr id="row_17_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="v__base_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="v__base_8hh.html" target="_self">v_base.hh</a></td><td class="desc">Header file for the base Voronoi container class</td></tr>
+<tr id="row_18_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="v__base__wl_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="v__base__wl_8cc.html" target="_self">v_base_wl.cc</a></td><td class="desc">The table of block worklists that are used during the cell computation, which is part of the voro_base class</td></tr>
+<tr id="row_19_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="v__compute_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="v__compute_8cc.html" target="_self">v_compute.cc</a></td><td class="desc">Function implementantions for the voro_compute template</td></tr>
+<tr id="row_20_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="v__compute_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="v__compute_8hh.html" target="_self">v_compute.hh</a></td><td class="desc">Header file for the voro_compute template and related classes</td></tr>
+<tr id="row_21_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="voro_09_09_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="voro_09_09_8cc.html" target="_self">voro++.cc</a></td><td class="desc">A file that loads all of the function implementation files</td></tr>
+<tr id="row_22_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="voro_09_09_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="voro_09_09_8hh.html" target="_self">voro++.hh</a></td><td class="desc">A file that loads all of the Voro++ header files</td></tr>
+<tr id="row_23_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="wall_8cc_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="wall_8cc.html" target="_self">wall.cc</a></td><td class="desc">Function implementations for the derived wall classes</td></tr>
+<tr id="row_24_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="wall_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="wall_8hh.html" target="_self">wall.hh</a></td><td class="desc">Header file for the derived wall classes</td></tr>
+<tr id="row_25_"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="worklist_8hh_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="worklist_8hh.html" target="_self">worklist.hh</a></td><td class="desc">Header file for setting constants used in the block worklists that are used during cell computation</td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/form_0.png b/lib/voro++/html/form_0.png
new file mode 100644
index 000000000..f3f14af64
Binary files /dev/null and b/lib/voro++/html/form_0.png differ
diff --git a/lib/voro++/html/form_1.png b/lib/voro++/html/form_1.png
new file mode 100644
index 000000000..8568acfe8
Binary files /dev/null and b/lib/voro++/html/form_1.png differ
diff --git a/lib/voro++/html/form_2.png b/lib/voro++/html/form_2.png
new file mode 100644
index 000000000..f89240c9a
Binary files /dev/null and b/lib/voro++/html/form_2.png differ
diff --git a/lib/voro++/html/form_3.png b/lib/voro++/html/form_3.png
new file mode 100644
index 000000000..3002bc960
Binary files /dev/null and b/lib/voro++/html/form_3.png differ
diff --git a/lib/voro++/html/form_4.png b/lib/voro++/html/form_4.png
new file mode 100644
index 000000000..6115e4066
Binary files /dev/null and b/lib/voro++/html/form_4.png differ
diff --git a/lib/voro++/html/form_5.png b/lib/voro++/html/form_5.png
new file mode 100644
index 000000000..61b4b7560
Binary files /dev/null and b/lib/voro++/html/form_5.png differ
diff --git a/lib/voro++/html/form_6.png b/lib/voro++/html/form_6.png
new file mode 100644
index 000000000..508cb207b
Binary files /dev/null and b/lib/voro++/html/form_6.png differ
diff --git a/lib/voro++/html/form_7.png b/lib/voro++/html/form_7.png
new file mode 100644
index 000000000..dbf99d060
Binary files /dev/null and b/lib/voro++/html/form_7.png differ
diff --git a/lib/voro++/html/form_8.png b/lib/voro++/html/form_8.png
new file mode 100644
index 000000000..4db44b0e2
Binary files /dev/null and b/lib/voro++/html/form_8.png differ
diff --git a/lib/voro++/html/formula.repository b/lib/voro++/html/formula.repository
new file mode 100644
index 000000000..d83f71631
--- /dev/null
+++ b/lib/voro++/html/formula.repository
@@ -0,0 +1,9 @@
+\form#0:$x^2+y^2+z^2$
+\form#1:$w_1$
+\form#2:$w_n$
+\form#3:$r_0$
+\form#4:$r_n$
+\form#5:$w_{j}$
+\form#6:$j>i$
+\form#7:$r_i$
+\form#8:$w_{i+1}$
diff --git a/lib/voro++/html/ftv2blank.png b/lib/voro++/html/ftv2blank.png
new file mode 100644
index 000000000..63c605bb4
Binary files /dev/null and b/lib/voro++/html/ftv2blank.png differ
diff --git a/lib/voro++/html/ftv2cl.png b/lib/voro++/html/ftv2cl.png
new file mode 100644
index 000000000..132f6577b
Binary files /dev/null and b/lib/voro++/html/ftv2cl.png differ
diff --git a/lib/voro++/html/ftv2doc.png b/lib/voro++/html/ftv2doc.png
new file mode 100644
index 000000000..17edabff9
Binary files /dev/null and b/lib/voro++/html/ftv2doc.png differ
diff --git a/lib/voro++/html/ftv2folderclosed.png b/lib/voro++/html/ftv2folderclosed.png
new file mode 100644
index 000000000..bb8ab35ed
Binary files /dev/null and b/lib/voro++/html/ftv2folderclosed.png differ
diff --git a/lib/voro++/html/ftv2folderopen.png b/lib/voro++/html/ftv2folderopen.png
new file mode 100644
index 000000000..d6c7f676a
Binary files /dev/null and b/lib/voro++/html/ftv2folderopen.png differ
diff --git a/lib/voro++/html/ftv2lastnode.png b/lib/voro++/html/ftv2lastnode.png
new file mode 100644
index 000000000..63c605bb4
Binary files /dev/null and b/lib/voro++/html/ftv2lastnode.png differ
diff --git a/lib/voro++/html/ftv2link.png b/lib/voro++/html/ftv2link.png
new file mode 100644
index 000000000..17edabff9
Binary files /dev/null and b/lib/voro++/html/ftv2link.png differ
diff --git a/lib/voro++/html/ftv2mlastnode.png b/lib/voro++/html/ftv2mlastnode.png
new file mode 100644
index 000000000..0b63f6d38
Binary files /dev/null and b/lib/voro++/html/ftv2mlastnode.png differ
diff --git a/lib/voro++/html/ftv2mnode.png b/lib/voro++/html/ftv2mnode.png
new file mode 100644
index 000000000..0b63f6d38
Binary files /dev/null and b/lib/voro++/html/ftv2mnode.png differ
diff --git a/lib/voro++/html/ftv2mo.png b/lib/voro++/html/ftv2mo.png
new file mode 100644
index 000000000..4bfb80f76
Binary files /dev/null and b/lib/voro++/html/ftv2mo.png differ
diff --git a/lib/voro++/html/ftv2node.png b/lib/voro++/html/ftv2node.png
new file mode 100644
index 000000000..63c605bb4
Binary files /dev/null and b/lib/voro++/html/ftv2node.png differ
diff --git a/lib/voro++/html/ftv2ns.png b/lib/voro++/html/ftv2ns.png
new file mode 100644
index 000000000..72e3d71c2
Binary files /dev/null and b/lib/voro++/html/ftv2ns.png differ
diff --git a/lib/voro++/html/ftv2plastnode.png b/lib/voro++/html/ftv2plastnode.png
new file mode 100644
index 000000000..c6ee22f93
Binary files /dev/null and b/lib/voro++/html/ftv2plastnode.png differ
diff --git a/lib/voro++/html/ftv2pnode.png b/lib/voro++/html/ftv2pnode.png
new file mode 100644
index 000000000..c6ee22f93
Binary files /dev/null and b/lib/voro++/html/ftv2pnode.png differ
diff --git a/lib/voro++/html/ftv2splitbar.png b/lib/voro++/html/ftv2splitbar.png
new file mode 100644
index 000000000..fe895f2c5
Binary files /dev/null and b/lib/voro++/html/ftv2splitbar.png differ
diff --git a/lib/voro++/html/ftv2vertline.png b/lib/voro++/html/ftv2vertline.png
new file mode 100644
index 000000000..63c605bb4
Binary files /dev/null and b/lib/voro++/html/ftv2vertline.png differ
diff --git a/lib/voro++/html/functions.html b/lib/voro++/html/functions.html
new file mode 100644
index 000000000..65f8e1ae2
--- /dev/null
+++ b/lib/voro++/html/functions.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>add()
+: <a class="el" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">voro::particle_order</a>
+</li>
+<li>add_particle_memory()
+: <a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">voro::container_periodic_base</a>
+</li>
+<li>add_wall()
+: <a class="el" href="classvoro_1_1wall__list.html#aca50327f246b61f6aeef5337327d957d">voro::wall_list</a>
+</li>
+<li>apply_walls()
+: <a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">voro::wall_list</a>
+</li>
+<li>ax
+: <a class="el" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">voro::pre_container_base</a>
+</li>
+<li>ay
+: <a class="el" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">voro::container_base</a>
+</li>
+<li>az
+: <a class="el" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">voro::container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x62.html b/lib/voro++/html/functions_0x62.html
new file mode 100644
index 000000000..2f8ad9381
--- /dev/null
+++ b/lib/voro++/html/functions_0x62.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li class="current"><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>boxx
+: <a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a9db4da1c50c7777ea67a3340457772da">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>boxy
+: <a class="el" href="classvoro_1_1voro__compute.html#a0612cf10336241a8b39f53c684b215f4">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">voro::voro_base</a>
+</li>
+<li>boxz
+: <a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a437a130ef80dc2e0939060abc5bcb462">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>bx
+: <a class="el" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">voro::container_base</a>
+</li>
+<li>bxy
+: <a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">voro::unitcell</a>
+</li>
+<li>bxz
+: <a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">voro::unitcell</a>
+</li>
+<li>by
+: <a class="el" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">voro::container_base</a>
+</li>
+<li>byz
+: <a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">voro::unitcell</a>
+</li>
+<li>bz
+: <a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">voro::pre_container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x63.html b/lib/voro++/html/functions_0x63.html
new file mode 100644
index 000000000..2583d6f04
--- /dev/null
+++ b/lib/voro++/html/functions_0x63.html
@@ -0,0 +1,246 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li class="current"><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>c_loop_all()
+: <a class="el" href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68">voro::c_loop_all</a>
+</li>
+<li>c_loop_all_periodic()
+: <a class="el" href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff">voro::c_loop_all_periodic</a>
+</li>
+<li>c_loop_base()
+: <a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">voro::c_loop_base</a>
+</li>
+<li>c_loop_order()
+: <a class="el" href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892">voro::c_loop_order</a>
+</li>
+<li>c_loop_order_periodic()
+: <a class="el" href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9">voro::c_loop_order_periodic</a>
+</li>
+<li>c_loop_subset()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f">voro::c_loop_subset</a>
+</li>
+<li>centroid()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">voro::voronoicell_base</a>
+</li>
+<li>ch_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">voro::pre_container_base</a>
+</li>
+<li>ch_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">voro::pre_container_base</a>
+</li>
+<li>check_compartmentalized()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">voro::container_periodic_base</a>
+</li>
+<li>check_duplicates()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">voro::voronoicell_base</a>
+</li>
+<li>check_facets()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">voro::voronoicell_neighbor</a>
+</li>
+<li>check_memory_for_copy()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voro::voronoicell_base</a>
+</li>
+<li>check_relations()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">voro::voronoicell_base</a>
+</li>
+<li>clear()
+: <a class="el" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee">voro::container</a>
+</li>
+<li>co
+: <a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a3f2f879cc43a586b602a2f2ce14294af">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>compute_all_cells()
+: <a class="el" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c">voro::container_periodic_poly</a>
+</li>
+<li>compute_cell()
+: <a class="el" href="classvoro_1_1container__periodic.html#a5ed9e19316148b6af242887ccc8ccf60">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">voro::container_periodic</a>
+</li>
+<li>con
+: <a class="el" href="classvoro_1_1voro__compute.html#a64cc1ec4cea792c438c3767918e265c9">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>construct_relations()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">voro::voronoicell_base</a>
+</li>
+<li>container()
+: <a class="el" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f">voro::container</a>
+</li>
+<li>container_base()
+: <a class="el" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">voro::container_base</a>
+</li>
+<li>container_periodic()
+: <a class="el" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd">voro::container_periodic</a>
+</li>
+<li>container_periodic_base()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">voro::container_periodic_base</a>
+</li>
+<li>container_periodic_poly()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74">voro::container_periodic_poly</a>
+</li>
+<li>container_poly()
+: <a class="el" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53">voro::container_poly</a>
+</li>
+<li>contains_neighbor()
+: <a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">voro::voro_base</a>
+</li>
+<li>copy()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">voro::voronoicell_base</a>
+</li>
+<li>cp
+: <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">voro::c_loop_order_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">voro::c_loop_order</a>
+</li>
+<li>create_all_images()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">voro::container_periodic_base</a>
+</li>
+<li>create_periodic_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">voro::container_periodic_base</a>
+</li>
+<li>create_side_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">voro::container_periodic_base</a>
+</li>
+<li>create_vertical_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">voro::container_periodic_base</a>
+</li>
+<li>current_delete2_size
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">voro::voronoicell_base</a>
+</li>
+<li>current_delete_size
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">voro::voronoicell_base</a>
+</li>
+<li>current_vertex_order
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">voro::voronoicell_base</a>
+</li>
+<li>current_vertices
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">voro::voronoicell_base</a>
+</li>
+<li>current_wall_size
+: <a class="el" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">voro::wall_list</a>
+</li>
+<li>cut_cell()
+: <a class="el" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197">voro::wall_sphere</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb">voro::wall_cylinder</a>
+, <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb">voro::wall_cone</a>
+, <a class="el" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99">voro::wall_cylinder</a>
+, <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261">voro::wall_cone</a>
+</li>
+<li>cut_cell_base()
+: <a class="el" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">voro::wall_cylinder</a>
+, <a class="el" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">voro::wall_sphere</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">voro::wall_cone</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">voro::wall_plane</a>
+</li>
+<li>cycle_down()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">voro::voronoicell_base</a>
+</li>
+<li>cycle_up()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x64.html b/lib/voro++/html/functions_0x64.html
new file mode 100644
index 000000000..d826ef107
--- /dev/null
+++ b/lib/voro++/html/functions_0x64.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li class="current"><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>deallocate()
+: <a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">voro::wall_list</a>
+</li>
+<li>di
+: <a class="el" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">voro::particle_record</a>
+</li>
+<li>dj
+: <a class="el" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">voro::particle_record</a>
+</li>
+<li>dk
+: <a class="el" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">voro::particle_record</a>
+</li>
+<li>draw_cells_gnuplot()
+: <a class="el" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a6bfd38989da6891d35111ad61a5b3634">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ac0700e38ce6ed742dcb52ab6523b1956">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ad360a8ec2c8d59b69b65f34fdba92887">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a5812915614c26d5e52697902556ed996">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#adaf8256dd86c8c37618113cee774345f">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#aa387c1b649fe6eabafe4546ae7410c6b">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">voro::container_periodic_poly</a>
+</li>
+<li>draw_cells_pov()
+: <a class="el" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">voro::container_periodic_poly</a>
+</li>
+<li>draw_domain_gnuplot()
+: <a class="el" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">voro::container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">voro::unitcell</a>
+</li>
+<li>draw_domain_pov()
+: <a class="el" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">voro::container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">voro::unitcell</a>
+</li>
+<li>draw_gnuplot()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">voro::voronoicell_base</a>
+</li>
+<li>draw_particles()
+: <a class="el" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0b7b5b922f383d0c8d05e499a887a3b9">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a8a20a1a70dd32c3323307be038bebb1d">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a21a12c0ed7e67de10360cd3af8a5928f">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a25b1e68cf0ad4f60c7723afc9ad97bb2">voro::container_poly</a>
+</li>
+<li>draw_particles_pov()
+: <a class="el" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#ad90375e99cea7db7c1b82d00853e2659">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a7279993d74b79966cfaeab40f8df5882">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#adaebc99132288ce43dab36fe86b5497b">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#af008d47998b895aeeb108361a642407d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a5bf55c7e6ace75b00aa245636afb82b7">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a477ecfe9e0943e71a2e389d7cc85ab20">voro::container_poly</a>
+</li>
+<li>draw_pov()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">voro::voronoicell_base</a>
+</li>
+<li>draw_pov_mesh()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x65.html b/lib/voro++/html/functions_0x65.html
new file mode 100644
index 000000000..894ae0d93
--- /dev/null
+++ b/lib/voro++/html/functions_0x65.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li class="current"><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>e_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">voro::pre_container_base</a>
+</li>
+<li>ed
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">voro::voronoicell_base</a>
+</li>
+<li>end_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">voro::pre_container_base</a>
+</li>
+<li>end_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">voro::pre_container_base</a>
+</li>
+<li>extend_chunk_index()
+: <a class="el" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">voro::pre_container_base</a>
+</li>
+<li>ey
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">voro::container_periodic_base</a>
+</li>
+<li>ez
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">voro::container_periodic_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x66.html b/lib/voro++/html/functions_0x66.html
new file mode 100644
index 000000000..425af319f
--- /dev/null
+++ b/lib/voro++/html/functions_0x66.html
@@ -0,0 +1,120 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li class="current"><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>face_areas()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">voro::voronoicell_base</a>
+</li>
+<li>face_freq_table()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">voro::voronoicell_base</a>
+</li>
+<li>face_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">voro::voronoicell_base</a>
+</li>
+<li>face_perimeters()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">voro::voronoicell_base</a>
+</li>
+<li>face_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">voro::voronoicell_base</a>
+</li>
+<li>find_voronoi_cell()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b">voro::container</a>
+</li>
+<li>frac_pos()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">voro::container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x67.html b/lib/voro++/html/functions_0x67.html
new file mode 100644
index 000000000..64c0ed195
--- /dev/null
+++ b/lib/voro++/html/functions_0x67.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li class="current"><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>guess_optimal()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">voro::pre_container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x68.html b/lib/voro++/html/functions_0x68.html
new file mode 100644
index 000000000..f95b801de
--- /dev/null
+++ b/lib/voro++/html/functions_0x68.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li class="current"><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hx
+: <a class="el" href="classvoro_1_1voro__compute.html#aaf168ea2924df41ece6ea2771aebbb72">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hxy
+: <a class="el" href="classvoro_1_1voro__compute.html#a157da0cf7efcdfc256c04a430962360e">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hxyz
+: <a class="el" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hy
+: <a class="el" href="classvoro_1_1voro__compute.html#a8693c6f8e16e426f7b870a2b8bd4330d">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hz
+: <a class="el" href="classvoro_1_1voro__compute.html#a9a64242973c903d26973de1fbb03f93f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x69.html b/lib/voro++/html/functions_0x69.html
new file mode 100644
index 000000000..613f71e44
--- /dev/null
+++ b/lib/voro++/html/functions_0x69.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li class="current"><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>i
+: <a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">voro::c_loop_base</a>
+</li>
+<li>id
+: <a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a9dd2372829ff4078615f994fc36a4c76">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">voro::container_base</a>
+</li>
+<li>ijk
+: <a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">voro::c_loop_base</a>
+, <a class="el" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">voro::particle_record</a>
+</li>
+<li>images()
+: <a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">voro::unitcell</a>
+</li>
+<li>img
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">voro::container_periodic_base</a>
+</li>
+<li>import()
+: <a class="el" href="classvoro_1_1container__poly.html#a0b8b64b39bab75e3cfc9282a23706bab">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ac2b38542ffabd95cb7f5bc5dab162a5d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a7b3aa6219cfb0fd538839aeeae4457cc">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a74d328c0a3f574668ff5dd9e34d22f1f">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a2052ab1ed4c33c961fbc26a86c66a494">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#acd9da3dc12eecccd5db8af5ff111222c">voro::container</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#aa78a3577ba7d11c65f5941e22638f015">voro::pre_container_poly</a>
+, <a class="el" href="classvoro_1_1pre__container.html#a0d62168ad0379672e038ec07cc362567">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#aa6aab61ad68e90a513e53433313c2a4a">voro::pre_container_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aecedca4f256e9382d54efb805877c68f">voro::container_poly</a>
+</li>
+<li>inc()
+: <a class="el" href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">voro::c_loop_all_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de">voro::c_loop_order_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">voro::c_loop_all</a>
+, <a class="el" href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6">voro::c_loop_subset</a>
+</li>
+<li>increase_wall_memory()
+: <a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">voro::wall_list</a>
+</li>
+<li>index_sz
+: <a class="el" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">voro::pre_container_base</a>
+</li>
+<li>init()
+: <a class="el" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">voro::voronoicell_neighbor</a>
+</li>
+<li>init_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">voro::voronoicell_base</a>
+</li>
+<li>init_mem
+: <a class="el" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">voro::container_periodic_base</a>
+</li>
+<li>init_octahedron()
+: <a class="el" href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">voro::voronoicell_neighbor</a>
+</li>
+<li>init_octahedron_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">voro::voronoicell_base</a>
+</li>
+<li>init_tetrahedron()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169">voro::voronoicell</a>
+</li>
+<li>init_tetrahedron_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">voro::voronoicell_base</a>
+</li>
+<li>initialize_search()
+: <a class="el" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">voro::container_periodic_base</a>
+</li>
+<li>initialize_voronoicell()
+: <a class="el" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">voro::container_periodic_base</a>
+</li>
+<li>intersects_image()
+: <a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">voro::unitcell</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6a.html b/lib/voro++/html/functions_0x6a.html
new file mode 100644
index 000000000..2ae858400
--- /dev/null
+++ b/lib/voro++/html/functions_0x6a.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
+<li>j
+: <a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6b.html b/lib/voro++/html/functions_0x6b.html
new file mode 100644
index 000000000..c59e5a221
--- /dev/null
+++ b/lib/voro++/html/functions_0x6b.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li class="current"><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<li>k
+: <a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6c.html b/lib/voro++/html/functions_0x6c.html
new file mode 100644
index 000000000..59c0e6667
--- /dev/null
+++ b/lib/voro++/html/functions_0x6c.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li class="current"><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<li>l
+: <a class="el" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">voro::particle_record</a>
+</li>
+<li>l_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">voro::pre_container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6d.html b/lib/voro++/html/functions_0x6d.html
new file mode 100644
index 000000000..90c18c947
--- /dev/null
+++ b/lib/voro++/html/functions_0x6d.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li class="current"><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>max_radius
+: <a class="el" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">voro::radius_poly</a>
+</li>
+<li>max_radius_squared()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">voro::voronoicell_base</a>
+</li>
+<li>max_uv_y
+: <a class="el" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">voro::unitcell</a>
+</li>
+<li>max_uv_z
+: <a class="el" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">voro::unitcell</a>
+</li>
+<li>mec
+: <a class="el" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">voro::voronoicell_base</a>
+</li>
+<li>mem
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">voro::container_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">voro::voronoicell_base</a>
+</li>
+<li>mep
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">voro::voronoicell_base</a>
+</li>
+<li>mne
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">voro::voronoicell_neighbor</a>
+</li>
+<li>mode
+: <a class="el" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">voro::c_loop_subset</a>
+</li>
+<li>mrad
+: <a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">voro::voro_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6e.html b/lib/voro++/html/functions_0x6e.html
new file mode 100644
index 000000000..516810f85
--- /dev/null
+++ b/lib/voro++/html/functions_0x6e.html
@@ -0,0 +1,142 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li class="current"><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>ne
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">voro::voronoicell_neighbor</a>
+</li>
+<li>neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">voro::voronoicell_neighbor</a>
+</li>
+<li>new_chunk()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">voro::pre_container_base</a>
+</li>
+<li>normals()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">voro::voronoicell_base</a>
+</li>
+<li>nplane()
+: <a class="el" href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">voro::voronoicell</a>
+</li>
+<li>nu
+: <a class="el" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">voro::voronoicell_base</a>
+</li>
+<li>number_of_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">voro::voronoicell_base</a>
+</li>
+<li>number_of_faces()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">voro::voronoicell_base</a>
+</li>
+<li>nx
+: <a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">voro::c_loop_base</a>
+</li>
+<li>nxy
+: <a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">voro::voro_base</a>
+</li>
+<li>nxyz
+: <a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">voro::voro_base</a>
+</li>
+<li>ny
+: <a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">voro::voro_base</a>
+</li>
+<li>nz
+: <a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x6f.html b/lib/voro++/html/functions_0x6f.html
new file mode 100644
index 000000000..e637d8e05
--- /dev/null
+++ b/lib/voro++/html/functions_0x6f.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li class="current"><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>o
+: <a class="el" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">voro::particle_order</a>
+</li>
+<li>op
+: <a class="el" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">voro::particle_order</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">voro::c_loop_order_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">voro::c_loop_order</a>
+</li>
+<li>operator=()
+: <a class="el" href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">voro::voronoicell_neighbor</a>
+</li>
+<li>output_custom()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">voro::voronoicell_base</a>
+</li>
+<li>output_face_areas()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">voro::voronoicell_base</a>
+</li>
+<li>output_face_freq_table()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">voro::voronoicell_base</a>
+</li>
+<li>output_face_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">voro::voronoicell_base</a>
+</li>
+<li>output_face_perimeters()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">voro::voronoicell_base</a>
+</li>
+<li>output_face_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">voro::voronoicell_base</a>
+</li>
+<li>output_neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">voro::voronoicell_base</a>
+</li>
+<li>output_normals()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">voro::voronoicell_base</a>
+</li>
+<li>output_vertex_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">voro::voronoicell_base</a>
+</li>
+<li>output_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">voro::voronoicell_base</a>
+</li>
+<li>oxyz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">voro::container_periodic_base</a>
+</li>
+<li>oy
+: <a class="el" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">voro::container_periodic_base</a>
+</li>
+<li>oz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">voro::container_periodic_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x70.html b/lib/voro++/html/functions_0x70.html
new file mode 100644
index 000000000..8644940af
--- /dev/null
+++ b/lib/voro++/html/functions_0x70.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li class="current"><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>p
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a57e2978b1a5fac350a35f7358502b2eb">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">voro::container_base</a>
+</li>
+<li>particle_order()
+: <a class="el" href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8">voro::particle_order</a>
+</li>
+<li>pid()
+: <a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">voro::c_loop_base</a>
+</li>
+<li>plane()
+: <a class="el" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0">voro::voronoicell_neighbor</a>
+</li>
+<li>plane_intersects()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">voro::voronoicell_base</a>
+</li>
+<li>plane_intersects_guess()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">voro::voronoicell_base</a>
+</li>
+<li>point_inside()
+: <a class="el" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">voro::wall_sphere</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">voro::wall_cylinder</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">voro::wall_cone</a>
+, <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>
+, <a class="el" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">voro::container_base</a>
+</li>
+<li>point_inside_walls()
+: <a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">voro::wall_list</a>
+</li>
+<li>pos()
+: <a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">voro::c_loop_base</a>
+</li>
+<li>ppr
+: <a class="el" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">voro::radius_poly</a>
+</li>
+<li>pre_container()
+: <a class="el" href="classvoro_1_1pre__container.html#a6b1faf934a8f416c595b6f0be5832bbe">voro::pre_container</a>
+</li>
+<li>pre_container_base()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">voro::pre_container_base</a>
+</li>
+<li>pre_container_poly()
+: <a class="el" href="classvoro_1_1pre__container__poly.html#a80a9be51f0cd441544ea5c7a59002e19">voro::pre_container_poly</a>
+</li>
+<li>pre_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">voro::pre_container_base</a>
+</li>
+<li>pre_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">voro::pre_container_base</a>
+</li>
+<li>print_all_particles()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">voro::container_periodic_base</a>
+</li>
+<li>print_custom()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#a7f4fc079c9386a4440417a38866acfa5">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a7adccdf76ab5ee9e29e48292a2cc43d9">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#ad4225ecfa4e188a773344ffa1f3127a0">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">voro::container</a>
+</li>
+<li>print_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">voro::voronoicell_base</a>
+</li>
+<li>print_edges_neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">voro::voronoicell_base</a>
+</li>
+<li>ps
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#ab3dbe9810de52793dfaf753b8504567c">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>pts
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">voro::voronoicell_base</a>
+</li>
+<li>put()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#a1cbdd9c92900e08173e1ea3a6e2e6df4">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aa0c81a2be68ed2a8b799ad7682c9b853">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a6e4a48cc9c31557457213923254fdda3">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a4bc65fd86de5d00d3de49553aec76022">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#afa9abf680a0dc08650ada11a2eff0be6">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">voro::pre_container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a354f707360a7e51a56de2eafc10cb43f">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a2b0a71bfb4fb576df45d8a4bcbc888cd">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">voro::container</a>
+</li>
+<li>put_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">voro::container_periodic_base</a>
+</li>
+<li>put_locate_block()
+: <a class="el" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a8d0c8a32a6e31cdd8eecb335f5f68d22">voro::container_periodic_base</a>
+</li>
+<li>put_remap()
+: <a class="el" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">voro::container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x71.html b/lib/voro++/html/functions_0x71.html
new file mode 100644
index 000000000..b90911ab4
--- /dev/null
+++ b/lib/voro++/html/functions_0x71.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li class="current"><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
+<li>q
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x72.html b/lib/voro++/html/functions_0x72.html
new file mode 100644
index 000000000..a55e5de6d
--- /dev/null
+++ b/lib/voro++/html/functions_0x72.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li class="current"><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>r_ctest()
+: <a class="el" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">voro::radius_poly</a>
+</li>
+<li>r_current_sub()
+: <a class="el" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">voro::radius_poly</a>
+, <a class="el" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">voro::radius_mono</a>
+</li>
+<li>r_cutoff()
+: <a class="el" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">voro::radius_poly</a>
+</li>
+<li>r_init()
+: <a class="el" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">voro::radius_poly</a>
+, <a class="el" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">voro::radius_mono</a>
+</li>
+<li>r_max_add()
+: <a class="el" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">voro::radius_poly</a>
+</li>
+<li>r_prime()
+: <a class="el" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">voro::radius_poly</a>
+</li>
+<li>r_scale()
+: <a class="el" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">voro::radius_poly</a>
+</li>
+<li>r_scale_check()
+: <a class="el" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">voro::radius_poly</a>
+</li>
+<li>radius_poly()
+: <a class="el" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">voro::radius_poly</a>
+</li>
+<li>region_count()
+: <a class="el" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">voro::container_periodic_base</a>
+</li>
+<li>region_index()
+: <a class="el" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">voro::container_periodic_base</a>
+</li>
+<li>remap()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">voro::container_base</a>
+</li>
+<li>reset_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x73.html b/lib/voro++/html/functions_0x73.html
new file mode 100644
index 000000000..d3163b1f6
--- /dev/null
+++ b/lib/voro++/html/functions_0x73.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li class="current"><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>setup()
+: <a class="el" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#ac18d16204c7769ec554d14f84b6517f0">voro::pre_container_poly</a>
+</li>
+<li>setup_box()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">voro::c_loop_subset</a>
+</li>
+<li>setup_intbox()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">voro::c_loop_subset</a>
+</li>
+<li>setup_sphere()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">voro::c_loop_subset</a>
+</li>
+<li>size
+: <a class="el" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">voro::particle_order</a>
+</li>
+<li>start()
+: <a class="el" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">voro::c_loop_all</a>
+, <a class="el" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">voro::c_loop_subset</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">voro::c_loop_all_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e">voro::c_loop_order_periodic</a>
+</li>
+<li>step_div()
+: <a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">voro::voro_base</a>
+</li>
+<li>step_int()
+: <a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">voro::voro_base</a>
+</li>
+<li>step_mod()
+: <a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">voro::voro_base</a>
+</li>
+<li>sum_cell_volumes()
+: <a class="el" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e">voro::container_poly</a>
+</li>
+<li>surface_area()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x74.html b/lib/voro++/html/functions_0x74.html
new file mode 100644
index 000000000..becdabd8a
--- /dev/null
+++ b/lib/voro++/html/functions_0x74.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li class="current"><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>total_edge_distance()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">voro::voronoicell_base</a>
+</li>
+<li>total_particles()
+: <a class="el" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">voro::pre_container_base</a>
+</li>
+<li>translate()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x75.html b/lib/voro++/html/functions_0x75.html
new file mode 100644
index 000000000..534b6177f
--- /dev/null
+++ b/lib/voro++/html/functions_0x75.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li class="current"><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>unit_voro
+: <a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">voro::unitcell</a>
+</li>
+<li>unitcell()
+: <a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">voro::unitcell</a>
+</li>
+<li>up
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x76.html b/lib/voro++/html/functions_0x76.html
new file mode 100644
index 000000000..ca1118a45
--- /dev/null
+++ b/lib/voro++/html/functions_0x76.html
@@ -0,0 +1,119 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li class="current"><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<li>vertex_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">voro::voronoicell_base</a>
+</li>
+<li>vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">voro::voronoicell_base</a>
+</li>
+<li>vo
+: <a class="el" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">voro::c_loop_order_periodic</a>
+</li>
+<li>volume()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">voro::voronoicell_base</a>
+</li>
+<li>voro_base()
+: <a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro::voro_base</a>
+</li>
+<li>voro_compute()
+: <a class="el" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>voronoicell_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voro::voronoicell_base</a>
+</li>
+<li>voronoicell_neighbor()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voro::voronoicell_neighbor</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x77.html b/lib/voro++/html/functions_0x77.html
new file mode 100644
index 000000000..43d1a693d
--- /dev/null
+++ b/lib/voro++/html/functions_0x77.html
@@ -0,0 +1,127 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li class="current"><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<li>wall_cone()
+: <a class="el" href="structvoro_1_1wall__cone.html#a7ff2b2acc21eeb2539d08970b3aeb010">voro::wall_cone</a>
+</li>
+<li>wall_cylinder()
+: <a class="el" href="structvoro_1_1wall__cylinder.html#a15485959acf214d9eafa8a03e066196c">voro::wall_cylinder</a>
+</li>
+<li>wall_list()
+: <a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">voro::wall_list</a>
+</li>
+<li>wall_plane()
+: <a class="el" href="structvoro_1_1wall__plane.html#adb486dd12e7369e4791b625f362c4df2">voro::wall_plane</a>
+</li>
+<li>wall_sphere()
+: <a class="el" href="structvoro_1_1wall__sphere.html#ad37f5096c5b84ffe6c011047a5ac9f78">voro::wall_sphere</a>
+</li>
+<li>walls
+: <a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">voro::wall_list</a>
+</li>
+<li>wel
+: <a class="el" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">voro::wall_list</a>
+</li>
+<li>wep
+: <a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">voro::wall_list</a>
+</li>
+<li>wl
+: <a class="el" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">voro::voro_base</a>
+</li>
+<li>wy
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">voro::container_periodic_base</a>
+</li>
+<li>wz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">voro::container_periodic_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x78.html b/lib/voro++/html/functions_0x78.html
new file mode 100644
index 000000000..d4b36827d
--- /dev/null
+++ b/lib/voro++/html/functions_0x78.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li class="current"><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
+<li>x()
+: <a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">voro::c_loop_base</a>
+</li>
+<li>xperiodic
+: <a class="el" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">voro::pre_container_base</a>
+</li>
+<li>xsp
+: <a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a4d1613a14697f4aff5b743d64db661b6">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x79.html b/lib/voro++/html/functions_0x79.html
new file mode 100644
index 000000000..ecbcbecec
--- /dev/null
+++ b/lib/voro++/html/functions_0x79.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li class="current"><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
+<li>y()
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">voro::c_loop_base</a>
+</li>
+<li>yperiodic
+: <a class="el" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">voro::pre_container_base</a>
+</li>
+<li>ysp
+: <a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a384a2be3d85828fc0f7114d93096ed66">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x7a.html b/lib/voro++/html/functions_0x7a.html
new file mode 100644
index 000000000..8f9006938
--- /dev/null
+++ b/lib/voro++/html/functions_0x7a.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li class="current"><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_z"></a>- z -</h3><ul>
+<li>z()
+: <a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">voro::c_loop_base</a>
+</li>
+<li>zperiodic
+: <a class="el" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">voro::pre_container_base</a>
+</li>
+<li>zsp
+: <a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a0ac78232aa7234e0d17adf763c0f3c9f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_0x7e.html b/lib/voro++/html/functions_0x7e.html
new file mode 100644
index 000000000..2e56d6144
--- /dev/null
+++ b/lib/voro++/html/functions_0x7e.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_0x62.html#index_b"><span>b</span></a></li>
+ <li><a href="functions_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_0x68.html#index_h"><span>h</span></a></li>
+ <li><a href="functions_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_0x6a.html#index_j"><span>j</span></a></li>
+ <li><a href="functions_0x6b.html#index_k"><span>k</span></a></li>
+ <li><a href="functions_0x6c.html#index_l"><span>l</span></a></li>
+ <li><a href="functions_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_0x71.html#index_q"><span>q</span></a></li>
+ <li><a href="functions_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_0x7a.html#index_z"><span>z</span></a></li>
+ <li class="current"><a href="functions_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:</div>
+
+<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
+<li>~container_base()
+: <a class="el" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">voro::container_base</a>
+</li>
+<li>~container_periodic_base()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">voro::container_periodic_base</a>
+</li>
+<li>~particle_order()
+: <a class="el" href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90">voro::particle_order</a>
+</li>
+<li>~pre_container_base()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">voro::pre_container_base</a>
+</li>
+<li>~voro_compute()
+: <a class="el" href="classvoro_1_1voro__compute.html#a7ce0dfe1b2ef4eb14832a82c01360e63">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>~voronoicell_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">voro::voronoicell_base</a>
+</li>
+<li>~voronoicell_neighbor()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">voro::voronoicell_neighbor</a>
+</li>
+<li>~wall_list()
+: <a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">voro::wall_list</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func.html b/lib/voro++/html/functions_func.html
new file mode 100644
index 000000000..d0f275d1f
--- /dev/null
+++ b/lib/voro++/html/functions_func.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li class="current"><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>add()
+: <a class="el" href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">voro::particle_order</a>
+</li>
+<li>add_particle_memory()
+: <a class="el" href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#add72546a646600a12ccda1be8041213a">voro::container_periodic_base</a>
+</li>
+<li>add_wall()
+: <a class="el" href="classvoro_1_1wall__list.html#a8e3a5253fa0392bf0f8b7a84eb1b61d4">voro::wall_list</a>
+</li>
+<li>apply_walls()
+: <a class="el" href="classvoro_1_1wall__list.html#ae3d367bca20c8d5714e2978ed67fe019">voro::wall_list</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x63.html b/lib/voro++/html/functions_func_0x63.html
new file mode 100644
index 000000000..4b1435eee
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x63.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li class="current"><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>c_loop_all()
+: <a class="el" href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68">voro::c_loop_all</a>
+</li>
+<li>c_loop_all_periodic()
+: <a class="el" href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff">voro::c_loop_all_periodic</a>
+</li>
+<li>c_loop_base()
+: <a class="el" href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">voro::c_loop_base</a>
+</li>
+<li>c_loop_order()
+: <a class="el" href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892">voro::c_loop_order</a>
+</li>
+<li>c_loop_order_periodic()
+: <a class="el" href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9">voro::c_loop_order_periodic</a>
+</li>
+<li>c_loop_subset()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f">voro::c_loop_subset</a>
+</li>
+<li>centroid()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">voro::voronoicell_base</a>
+</li>
+<li>check_compartmentalized()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a133f1be4a780183fd6bd7c008c65482d">voro::container_periodic_base</a>
+</li>
+<li>check_duplicates()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">voro::voronoicell_base</a>
+</li>
+<li>check_facets()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">voro::voronoicell_neighbor</a>
+</li>
+<li>check_memory_for_copy()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voro::voronoicell_base</a>
+</li>
+<li>check_relations()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">voro::voronoicell_base</a>
+</li>
+<li>clear()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#a4dd33f8d67680a65864245a90ac883a2">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a0890eac6d9f02b8d7b8e41a8a98ff2ee">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a0012f95f5666a347e6585efc76b63b83">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a5394f52caa441d83c5aba6cf0e254116">voro::container_periodic</a>
+</li>
+<li>compute_all_cells()
+: <a class="el" href="classvoro_1_1container.html#a2757cfc62be2f0496eddd0fccbc14ba6">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a40a4b63b1ac5980b92ca526ac2183489">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0b374a8ad39646bf22468e535b08a187">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#ab19ca1d361472a1c7dc35023fd20297c">voro::container_periodic_poly</a>
+</li>
+<li>compute_cell()
+: <a class="el" href="classvoro_1_1container.html#a9808b60d80f1d3ccc06ebd0a2495ac7a">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ae01c610b46aad0aae4998697b69a4b1c">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#af5cc004a3be4a1eecb037fe9f4b9e2ff">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a399d6b409b62005a0da290a89c4fdadb">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>construct_relations()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">voro::voronoicell_base</a>
+</li>
+<li>container()
+: <a class="el" href="classvoro_1_1container.html#a50aaf382a069b102930b88976215818f">voro::container</a>
+</li>
+<li>container_base()
+: <a class="el" href="classvoro_1_1container__base.html#a2f7bde3ec593d9f4b8c9ceb67b56f62f">voro::container_base</a>
+</li>
+<li>container_periodic()
+: <a class="el" href="classvoro_1_1container__periodic.html#ace68f8fc6073edb7dd41c30761f899fd">voro::container_periodic</a>
+</li>
+<li>container_periodic_base()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a5319c976a873f9b10f80f9038f3460bd">voro::container_periodic_base</a>
+</li>
+<li>container_periodic_poly()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#adc3616c10fe7b40795951b5cd8dc8c74">voro::container_periodic_poly</a>
+</li>
+<li>container_poly()
+: <a class="el" href="classvoro_1_1container__poly.html#a1d782b31e7d6f5b2040ee2d25753cb53">voro::container_poly</a>
+</li>
+<li>contains_neighbor()
+: <a class="el" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">voro::voro_base</a>
+</li>
+<li>copy()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">voro::voronoicell_base</a>
+</li>
+<li>create_all_images()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a9e622a40386d97fcb015ff4ed792ff44">voro::container_periodic_base</a>
+</li>
+<li>create_periodic_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a11b7428673e4791fe651036ecda0cd12">voro::container_periodic_base</a>
+</li>
+<li>create_side_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#aa16ea029bbf80a1fdec3e6bba675e704">voro::container_periodic_base</a>
+</li>
+<li>create_vertical_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a8d3545b219d91aee864b224829b6a644">voro::container_periodic_base</a>
+</li>
+<li>cut_cell()
+: <a class="el" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb">voro::wall_cylinder</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb">voro::wall_cone</a>
+, <a class="el" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197">voro::wall_sphere</a>
+, <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261">voro::wall_cone</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd">voro::wall_plane</a>
+, <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99">voro::wall_cylinder</a>
+</li>
+<li>cut_cell_base()
+: <a class="el" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">voro::wall_cylinder</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">voro::wall_sphere</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">voro::wall_cone</a>
+</li>
+<li>cycle_down()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">voro::voronoicell_base</a>
+</li>
+<li>cycle_up()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x64.html b/lib/voro++/html/functions_func_0x64.html
new file mode 100644
index 000000000..d14a0c3bb
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x64.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li class="current"><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>deallocate()
+: <a class="el" href="classvoro_1_1wall__list.html#a49c42b672f2eb7535c3b3564bb6cf51f">voro::wall_list</a>
+</li>
+<li>draw_cells_gnuplot()
+: <a class="el" href="classvoro_1_1container.html#a13bc3a19033255fb04049288c7cd5818">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ad90cf825d916a83570382f7cfae0461b">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ab1efabec22bdbff42302d94620a71937">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a4f2b088d20b479b62a3dcdfa42d62526">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#aa4561672ab91f1064748dd18d340335c">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a5812915614c26d5e52697902556ed996">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ac0700e38ce6ed742dcb52ab6523b1956">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#aed830c459b6f9b1a8ef130d0641c3ead">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#ad360a8ec2c8d59b69b65f34fdba92887">voro::container_poly</a>
+</li>
+<li>draw_cells_pov()
+: <a class="el" href="classvoro_1_1container.html#a3f9a6147040c60ff579dcd96c05800c9">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aaaddce8c16e4df211db3cbe9f9ca83de">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#adba11c6b4f9a20b1d5e0e16b94fe7dff">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a78c92412a5127918249bc9fbe14e6b52">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#af39b3d55e12a5b1d6acbab77d762cff3">voro::container</a>
+</li>
+<li>draw_domain_gnuplot()
+: <a class="el" href="classvoro_1_1container__base.html#a67dbf4a79fac8527ccee72d881c6654d">voro::container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">voro::unitcell</a>
+</li>
+<li>draw_domain_pov()
+: <a class="el" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#a6ff9d18058ab53c955cd44dea733e4fd">voro::container_base</a>
+</li>
+<li>draw_gnuplot()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">voro::voronoicell_base</a>
+</li>
+<li>draw_particles()
+: <a class="el" href="classvoro_1_1container.html#a39c6928b9e5d4351b01df6bbd4b8b72c">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a3760b525f8c9dd5b360e6e4a80294d9a">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a25b1e68cf0ad4f60c7723afc9ad97bb2">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a7bfb4757df738760c59d4f8905a92c17">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a4b22d1868b96f049891a4f65e57497e8">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#afa2993c7ef337244c73b073a3f546df7">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0b7b5b922f383d0c8d05e499a887a3b9">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#af67af614b2b3ad084dfab83470fa8616">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a21a12c0ed7e67de10360cd3af8a5928f">voro::container_periodic</a>
+</li>
+<li>draw_particles_pov()
+: <a class="el" href="classvoro_1_1container.html#adaebc99132288ce43dab36fe86b5497b">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#aa9c1c012d0826c2fd28682ded2dd90f1">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a866cce7547f14634e432d510050962ae">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a7279993d74b79966cfaeab40f8df5882">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#acd3e09b90187ab0ebb521d16d914b9a0">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#af008d47998b895aeeb108361a642407d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a4bfde4e186de8a12fbb5b5d7f16f9387">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a7086ad4c901827134b29a1bfc1b0bd3d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#ad90375e99cea7db7c1b82d00853e2659">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a56313161f9104ef0356238569317a34c">voro::container_poly</a>
+</li>
+<li>draw_pov()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">voro::voronoicell_base</a>
+</li>
+<li>draw_pov_mesh()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x65.html b/lib/voro++/html/functions_func_0x65.html
new file mode 100644
index 000000000..c2a3c92bc
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x65.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li class="current"><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>extend_chunk_index()
+: <a class="el" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">voro::pre_container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x66.html b/lib/voro++/html/functions_func_0x66.html
new file mode 100644
index 000000000..38233cd98
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x66.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li class="current"><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<li>face_areas()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">voro::voronoicell_base</a>
+</li>
+<li>face_freq_table()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">voro::voronoicell_base</a>
+</li>
+<li>face_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">voro::voronoicell_base</a>
+</li>
+<li>face_perimeters()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">voro::voronoicell_base</a>
+</li>
+<li>face_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">voro::voronoicell_base</a>
+</li>
+<li>find_voronoi_cell()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#ac3536b067b34a16efada8286ebc50586">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aa02b6b6e5605b28fc8ecf0cd0a757903">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a5fa97cb936062142acc29e5870add6c6">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container.html#a5e73bd52fe92985962a248fed566737b">voro::container</a>
+</li>
+<li>frac_pos()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a4f637efc5e56874aa9d68f44505e042c">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a08db44d4d57b8b19f1e101cc40c82e85">voro::container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x67.html b/lib/voro++/html/functions_func_0x67.html
new file mode 100644
index 000000000..77e382b0b
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x67.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li class="current"><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<li>guess_optimal()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">voro::pre_container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x69.html b/lib/voro++/html/functions_func_0x69.html
new file mode 100644
index 000000000..9050d797f
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x69.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li class="current"><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>images()
+: <a class="el" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">voro::unitcell</a>
+</li>
+<li>import()
+: <a class="el" href="classvoro_1_1container.html#a1e4fe0c7b59c93cdd3f965c59dbb2f66">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a0b8b64b39bab75e3cfc9282a23706bab">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a2052ab1ed4c33c961fbc26a86c66a494">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__poly.html#af897ea09b80064d4b492862884ba316c">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1pre__container.html#a0d62168ad0379672e038ec07cc362567">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1container.html#acd9da3dc12eecccd5db8af5ff111222c">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ad5073f573187aa00569d3562cdfa4f49">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#aa6aab61ad68e90a513e53433313c2a4a">voro::pre_container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a9ad39c3dcd9311183c671a78a5263c2c">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#a7b3aa6219cfb0fd538839aeeae4457cc">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a65ddee05ee3b3677c7a48f67ce64a1d5">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ac2b38542ffabd95cb7f5bc5dab162a5d">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aecedca4f256e9382d54efb805877c68f">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#afbd03ab4c06af15913d2641be39513c9">voro::container_periodic_poly</a>
+</li>
+<li>inc()
+: <a class="el" href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">voro::c_loop_all</a>
+, <a class="el" href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6">voro::c_loop_subset</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">voro::c_loop_all_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de">voro::c_loop_order_periodic</a>
+</li>
+<li>increase_wall_memory()
+: <a class="el" href="classvoro_1_1wall__list.html#afb2cd60a3624dd4033ccddd690321489">voro::wall_list</a>
+</li>
+<li>init()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">voro::voronoicell</a>
+</li>
+<li>init_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">voro::voronoicell_base</a>
+</li>
+<li>init_octahedron()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9">voro::voronoicell</a>
+</li>
+<li>init_octahedron_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">voro::voronoicell_base</a>
+</li>
+<li>init_tetrahedron()
+: <a class="el" href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">voro::voronoicell_neighbor</a>
+</li>
+<li>init_tetrahedron_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">voro::voronoicell_base</a>
+</li>
+<li>initialize_search()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a812ed5572fcfece48b73517fcf913ec0">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">voro::container_base</a>
+</li>
+<li>initialize_voronoicell()
+: <a class="el" href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#ae540389dc8845562c5f8cd45cec71edd">voro::container_periodic_base</a>
+</li>
+<li>intersects_image()
+: <a class="el" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">voro::unitcell</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x6d.html b/lib/voro++/html/functions_func_0x6d.html
new file mode 100644
index 000000000..6ccdaa1ad
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x6d.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li class="current"><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>max_radius_squared()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x6e.html b/lib/voro++/html/functions_func_0x6e.html
new file mode 100644
index 000000000..af51f93d0
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x6e.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li class="current"><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">voro::voronoicell_neighbor</a>
+</li>
+<li>new_chunk()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">voro::pre_container_base</a>
+</li>
+<li>normals()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">voro::voronoicell_base</a>
+</li>
+<li>nplane()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#aa8bc77ca240ae0675be493b26513eb18">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">voro::voronoicell</a>
+</li>
+<li>number_of_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">voro::voronoicell_base</a>
+</li>
+<li>number_of_faces()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x6f.html b/lib/voro++/html/functions_func_0x6f.html
new file mode 100644
index 000000000..58210ab37
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x6f.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li class="current"><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>operator=()
+: <a class="el" href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">voro::voronoicell_neighbor</a>
+</li>
+<li>output_custom()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">voro::voronoicell_base</a>
+</li>
+<li>output_face_areas()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">voro::voronoicell_base</a>
+</li>
+<li>output_face_freq_table()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">voro::voronoicell_base</a>
+</li>
+<li>output_face_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">voro::voronoicell_base</a>
+</li>
+<li>output_face_perimeters()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">voro::voronoicell_base</a>
+</li>
+<li>output_face_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">voro::voronoicell_base</a>
+</li>
+<li>output_neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">voro::voronoicell_neighbor</a>
+</li>
+<li>output_normals()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">voro::voronoicell_base</a>
+</li>
+<li>output_vertex_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">voro::voronoicell_base</a>
+</li>
+<li>output_vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x70.html b/lib/voro++/html/functions_func_0x70.html
new file mode 100644
index 000000000..bbc16f6c9
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x70.html
@@ -0,0 +1,166 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li class="current"><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>particle_order()
+: <a class="el" href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8">voro::particle_order</a>
+</li>
+<li>pid()
+: <a class="el" href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">voro::c_loop_base</a>
+</li>
+<li>plane()
+: <a class="el" href="classvoro_1_1voronoicell.html#ac2273c14b7bcc02696be10d9249670c0">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">voro::voronoicell</a>
+, <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a8bac2d46226b8dbb88ad3e3d58d10cf7">voro::voronoicell_neighbor</a>
+</li>
+<li>plane_intersects()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">voro::voronoicell_base</a>
+</li>
+<li>plane_intersects_guess()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">voro::voronoicell_base</a>
+</li>
+<li>point_inside()
+: <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>
+, <a class="el" href="classvoro_1_1container__base.html#a290c21ba694d02231d49d14881dfcfd1">voro::container_base</a>
+, <a class="el" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">voro::wall_sphere</a>
+, <a class="el" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">voro::wall_plane</a>
+, <a class="el" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">voro::wall_cylinder</a>
+, <a class="el" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">voro::wall_cone</a>
+</li>
+<li>point_inside_walls()
+: <a class="el" href="classvoro_1_1wall__list.html#ae6d83d60ffa99fb6712445616883d1c8">voro::wall_list</a>
+</li>
+<li>pos()
+: <a class="el" href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">voro::c_loop_base</a>
+</li>
+<li>pre_container()
+: <a class="el" href="classvoro_1_1pre__container.html#a6b1faf934a8f416c595b6f0be5832bbe">voro::pre_container</a>
+</li>
+<li>pre_container_base()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">voro::pre_container_base</a>
+</li>
+<li>pre_container_poly()
+: <a class="el" href="classvoro_1_1pre__container__poly.html#a80a9be51f0cd441544ea5c7a59002e19">voro::pre_container_poly</a>
+</li>
+<li>print_all_particles()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ac931a6c1cab4b2e910a0d07969b38785">voro::container_periodic_base</a>
+</li>
+<li>print_custom()
+: <a class="el" href="classvoro_1_1container__periodic__poly.html#ad4225ecfa4e188a773344ffa1f3127a0">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container.html#a35c0c0b78ca0ba3fa10e6a9c4eece492">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a60907bce91cfacfa054a69872fb10ee3">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#adeb50c6841166e59a6be150d7adb4212">voro::container_periodic</a>
+</li>
+<li>print_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">voro::voronoicell_base</a>
+</li>
+<li>print_edges_neighbors()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">voro::voronoicell_neighbor</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">voro::voronoicell_base</a>
+</li>
+<li>put()
+: <a class="el" href="classvoro_1_1container.html#a6e4a48cc9c31557457213923254fdda3">voro::container</a>
+, <a class="el" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">voro::container</a>
+, <a class="el" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a4bc65fd86de5d00d3de49553aec76022">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#ad3987d5710d793bdd604f12eeaa326f0">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container__poly.html#aa0c81a2be68ed2a8b799ad7682c9b853">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#a2b0a71bfb4fb576df45d8a4bcbc888cd">voro::container_periodic_poly</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">voro::pre_container_poly</a>
+</li>
+<li>put_image()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a72efe37cb7876149cac5f5ead579b353">voro::container_periodic_base</a>
+</li>
+<li>put_locate_block()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#afcffffda4a00a48acb4243a74ed59c05">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a1ab1b31f6fcd3080cc9fd0948df61e1a">voro::container_base</a>
+</li>
+<li>put_remap()
+: <a class="el" href="classvoro_1_1container__base.html#af070c53156c75171a13dacb2ef2148aa">voro::container_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x72.html b/lib/voro++/html/functions_func_0x72.html
new file mode 100644
index 000000000..420b49136
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x72.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li class="current"><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<li>r_ctest()
+: <a class="el" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">voro::radius_poly</a>
+</li>
+<li>r_current_sub()
+: <a class="el" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">voro::radius_poly</a>
+, <a class="el" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">voro::radius_mono</a>
+</li>
+<li>r_cutoff()
+: <a class="el" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">voro::radius_poly</a>
+</li>
+<li>r_init()
+: <a class="el" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">voro::radius_poly</a>
+, <a class="el" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">voro::radius_mono</a>
+</li>
+<li>r_max_add()
+: <a class="el" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">voro::radius_poly</a>
+</li>
+<li>r_prime()
+: <a class="el" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">voro::radius_poly</a>
+</li>
+<li>r_scale()
+: <a class="el" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">voro::radius_poly</a>
+</li>
+<li>r_scale_check()
+: <a class="el" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">voro::radius_mono</a>
+, <a class="el" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">voro::radius_poly</a>
+</li>
+<li>radius_poly()
+: <a class="el" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">voro::radius_poly</a>
+</li>
+<li>region_count()
+: <a class="el" href="classvoro_1_1container__base.html#ac1205c5c189d3dd72057c4cf9fa8891d">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a8462c3a3079586196e2bd9a764283173">voro::container_periodic_base</a>
+</li>
+<li>region_index()
+: <a class="el" href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#aa0cd2a5bf51968b7af3334f4bbb8df8e">voro::container_periodic_base</a>
+</li>
+<li>remap()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ac5b0b78cf8fe46f7e3c7124dbf4e0729">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">voro::container_base</a>
+</li>
+<li>reset_edges()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x73.html b/lib/voro++/html/functions_func_0x73.html
new file mode 100644
index 000000000..49b127c6a
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x73.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li class="current"><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>setup()
+: <a class="el" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">voro::pre_container</a>
+, <a class="el" href="classvoro_1_1pre__container__poly.html#ac18d16204c7769ec554d14f84b6517f0">voro::pre_container_poly</a>
+</li>
+<li>setup_box()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">voro::c_loop_subset</a>
+</li>
+<li>setup_intbox()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">voro::c_loop_subset</a>
+</li>
+<li>setup_sphere()
+: <a class="el" href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">voro::c_loop_subset</a>
+</li>
+<li>start()
+: <a class="el" href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">voro::c_loop_all</a>
+, <a class="el" href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">voro::c_loop_subset</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">voro::c_loop_all_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e">voro::c_loop_order_periodic</a>
+</li>
+<li>step_div()
+: <a class="el" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">voro::voro_base</a>
+</li>
+<li>step_int()
+: <a class="el" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">voro::voro_base</a>
+</li>
+<li>step_mod()
+: <a class="el" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">voro::voro_base</a>
+</li>
+<li>sum_cell_volumes()
+: <a class="el" href="classvoro_1_1container__poly.html#a081af78a1c9c863393fd07a548a84a2e">voro::container_poly</a>
+, <a class="el" href="classvoro_1_1container__periodic.html#a0f60071a597dec1065a5ab122cf72415">voro::container_periodic</a>
+, <a class="el" href="classvoro_1_1container.html#accce43f61281a3c5d69893ad5187e3ec">voro::container</a>
+, <a class="el" href="classvoro_1_1container__periodic__poly.html#ac3a665f34e5aee05a6d36abb5289f796">voro::container_periodic_poly</a>
+</li>
+<li>surface_area()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x74.html b/lib/voro++/html/functions_func_0x74.html
new file mode 100644
index 000000000..be856a71d
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x74.html
@@ -0,0 +1,98 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li class="current"><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<li>total_edge_distance()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">voro::voronoicell_base</a>
+</li>
+<li>total_particles()
+: <a class="el" href="classvoro_1_1container__base.html#ad9fe437b46f1e58908c393955e6d4217">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">voro::pre_container_base</a>
+</li>
+<li>translate()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">voro::voronoicell_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x75.html b/lib/voro++/html/functions_func_0x75.html
new file mode 100644
index 000000000..3ad2c21a1
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x75.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li class="current"><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>unitcell()
+: <a class="el" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">voro::unitcell</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x76.html b/lib/voro++/html/functions_func_0x76.html
new file mode 100644
index 000000000..67b59c846
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x76.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li class="current"><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<li>vertex_orders()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">voro::voronoicell_base</a>
+</li>
+<li>vertices()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">voro::voronoicell_base</a>
+</li>
+<li>volume()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">voro::voronoicell_base</a>
+</li>
+<li>voro_base()
+: <a class="el" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro::voro_base</a>
+</li>
+<li>voro_compute()
+: <a class="el" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>voronoicell_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voro::voronoicell_base</a>
+</li>
+<li>voronoicell_neighbor()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voro::voronoicell_neighbor</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x77.html b/lib/voro++/html/functions_func_0x77.html
new file mode 100644
index 000000000..aa5ac5d87
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x77.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li class="current"><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<li>wall_cone()
+: <a class="el" href="structvoro_1_1wall__cone.html#a7ff2b2acc21eeb2539d08970b3aeb010">voro::wall_cone</a>
+</li>
+<li>wall_cylinder()
+: <a class="el" href="structvoro_1_1wall__cylinder.html#a15485959acf214d9eafa8a03e066196c">voro::wall_cylinder</a>
+</li>
+<li>wall_list()
+: <a class="el" href="classvoro_1_1wall__list.html#a248fb5d008de9a5a97d4720d47794698">voro::wall_list</a>
+</li>
+<li>wall_plane()
+: <a class="el" href="structvoro_1_1wall__plane.html#adb486dd12e7369e4791b625f362c4df2">voro::wall_plane</a>
+</li>
+<li>wall_sphere()
+: <a class="el" href="structvoro_1_1wall__sphere.html#ad37f5096c5b84ffe6c011047a5ac9f78">voro::wall_sphere</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x78.html b/lib/voro++/html/functions_func_0x78.html
new file mode 100644
index 000000000..91aadf074
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x78.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li class="current"><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
+<li>x()
+: <a class="el" href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x79.html b/lib/voro++/html/functions_func_0x79.html
new file mode 100644
index 000000000..ceb8e33d5
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x79.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li class="current"><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
+<li>y()
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x7a.html b/lib/voro++/html/functions_func_0x7a.html
new file mode 100644
index 000000000..1fbeb2261
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x7a.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li class="current"><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_z"></a>- z -</h3><ul>
+<li>z()
+: <a class="el" href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">voro::c_loop_base</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_func_0x7e.html b/lib/voro++/html/functions_func_0x7e.html
new file mode 100644
index 000000000..104cc283f
--- /dev/null
+++ b/lib/voro++/html/functions_func_0x7e.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Functions</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
+ <li><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="functions_func.html#index_a"><span>a</span></a></li>
+ <li><a href="functions_func_0x63.html#index_c"><span>c</span></a></li>
+ <li><a href="functions_func_0x64.html#index_d"><span>d</span></a></li>
+ <li><a href="functions_func_0x65.html#index_e"><span>e</span></a></li>
+ <li><a href="functions_func_0x66.html#index_f"><span>f</span></a></li>
+ <li><a href="functions_func_0x67.html#index_g"><span>g</span></a></li>
+ <li><a href="functions_func_0x69.html#index_i"><span>i</span></a></li>
+ <li><a href="functions_func_0x6d.html#index_m"><span>m</span></a></li>
+ <li><a href="functions_func_0x6e.html#index_n"><span>n</span></a></li>
+ <li><a href="functions_func_0x6f.html#index_o"><span>o</span></a></li>
+ <li><a href="functions_func_0x70.html#index_p"><span>p</span></a></li>
+ <li><a href="functions_func_0x72.html#index_r"><span>r</span></a></li>
+ <li><a href="functions_func_0x73.html#index_s"><span>s</span></a></li>
+ <li><a href="functions_func_0x74.html#index_t"><span>t</span></a></li>
+ <li><a href="functions_func_0x75.html#index_u"><span>u</span></a></li>
+ <li><a href="functions_func_0x76.html#index_v"><span>v</span></a></li>
+ <li><a href="functions_func_0x77.html#index_w"><span>w</span></a></li>
+ <li><a href="functions_func_0x78.html#index_x"><span>x</span></a></li>
+ <li><a href="functions_func_0x79.html#index_y"><span>y</span></a></li>
+ <li><a href="functions_func_0x7a.html#index_z"><span>z</span></a></li>
+ <li class="current"><a href="functions_func_0x7e.html#index_0x7e"><span>~</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul>
+<li>~container_base()
+: <a class="el" href="classvoro_1_1container__base.html#a624a890b979cc8f989778e0b627bad44">voro::container_base</a>
+</li>
+<li>~container_periodic_base()
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a4eacfa1389d290c753df07df3c88e0a7">voro::container_periodic_base</a>
+</li>
+<li>~particle_order()
+: <a class="el" href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90">voro::particle_order</a>
+</li>
+<li>~pre_container_base()
+: <a class="el" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">voro::pre_container_base</a>
+</li>
+<li>~voro_compute()
+: <a class="el" href="classvoro_1_1voro__compute.html#a7ce0dfe1b2ef4eb14832a82c01360e63">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>~voronoicell_base()
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">voro::voronoicell_base</a>
+</li>
+<li>~voronoicell_neighbor()
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">voro::voronoicell_neighbor</a>
+</li>
+<li>~wall_list()
+: <a class="el" href="classvoro_1_1wall__list.html#a8b0402f2bfad31b7d0204d4120cd60be">voro::wall_list</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/functions_vars.html b/lib/voro++/html/functions_vars.html
new file mode 100644
index 000000000..bcf11438d
--- /dev/null
+++ b/lib/voro++/html/functions_vars.html
@@ -0,0 +1,487 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Data Fields - Variables</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li class="current"><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="functions.html"><span>All</span></a></li>
+ <li><a href="functions_func.html"><span>Functions</span></a></li>
+ <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow4" class="tabs3">
+ <ul class="tablist">
+ <li><a href="#index_a"><span>a</span></a></li>
+ <li><a href="#index_b"><span>b</span></a></li>
+ <li><a href="#index_c"><span>c</span></a></li>
+ <li><a href="#index_d"><span>d</span></a></li>
+ <li><a href="#index_e"><span>e</span></a></li>
+ <li><a href="#index_h"><span>h</span></a></li>
+ <li><a href="#index_i"><span>i</span></a></li>
+ <li><a href="#index_j"><span>j</span></a></li>
+ <li><a href="#index_k"><span>k</span></a></li>
+ <li><a href="#index_l"><span>l</span></a></li>
+ <li><a href="#index_m"><span>m</span></a></li>
+ <li><a href="#index_n"><span>n</span></a></li>
+ <li><a href="#index_o"><span>o</span></a></li>
+ <li><a href="#index_p"><span>p</span></a></li>
+ <li><a href="#index_q"><span>q</span></a></li>
+ <li><a href="#index_s"><span>s</span></a></li>
+ <li><a href="#index_u"><span>u</span></a></li>
+ <li><a href="#index_v"><span>v</span></a></li>
+ <li><a href="#index_w"><span>w</span></a></li>
+ <li><a href="#index_x"><span>x</span></a></li>
+ <li><a href="#index_y"><span>y</span></a></li>
+ <li><a href="#index_z"><span>z</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<li>ax
+: <a class="el" href="classvoro_1_1container__base.html#ab33ca2a8d7282d65a731d854d27906f2">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">voro::pre_container_base</a>
+</li>
+<li>ay
+: <a class="el" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#ab64ef06e1e257e83a33422a044ef9858">voro::container_base</a>
+</li>
+<li>az
+: <a class="el" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a78d795a863e401a5fc565c7dec31b6a6">voro::container_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<li>boxx
+: <a class="el" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a9db4da1c50c7777ea67a3340457772da">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>boxy
+: <a class="el" href="classvoro_1_1voro__compute.html#a0612cf10336241a8b39f53c684b215f4">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">voro::voro_base</a>
+</li>
+<li>boxz
+: <a class="el" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a437a130ef80dc2e0939060abc5bcb462">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>bx
+: <a class="el" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#afd9b8e6b3c6bb4376d1f755ef7ac789d">voro::container_base</a>
+</li>
+<li>bxy
+: <a class="el" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">voro::unitcell</a>
+</li>
+<li>bxz
+: <a class="el" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">voro::unitcell</a>
+</li>
+<li>by
+: <a class="el" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#ae769a416d7a5520eddf026cec6f7fda6">voro::container_base</a>
+</li>
+<li>byz
+: <a class="el" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">voro::unitcell</a>
+</li>
+<li>bz
+: <a class="el" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">voro::unitcell</a>
+, <a class="el" href="classvoro_1_1container__base.html#a27de2088113bb64a4b045bea7c590be3">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">voro::pre_container_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<li>ch_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">voro::pre_container_base</a>
+</li>
+<li>ch_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">voro::pre_container_base</a>
+</li>
+<li>co
+: <a class="el" href="classvoro_1_1container__base.html#a987e612ffd2c459adf8c1784d308ef51">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a8ae965b9dbb02a92e8dcb0d082d625a2">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a3f2f879cc43a586b602a2f2ce14294af">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>con
+: <a class="el" href="classvoro_1_1voro__compute.html#a64cc1ec4cea792c438c3767918e265c9">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>cp
+: <a class="el" href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">voro::c_loop_order_periodic</a>
+</li>
+<li>current_delete2_size
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">voro::voronoicell_base</a>
+</li>
+<li>current_delete_size
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">voro::voronoicell_base</a>
+</li>
+<li>current_vertex_order
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">voro::voronoicell_base</a>
+</li>
+<li>current_vertices
+: <a class="el" href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">voro::voronoicell_base</a>
+</li>
+<li>current_wall_size
+: <a class="el" href="classvoro_1_1wall__list.html#a8a06b6562bbf488ff30852cd1a548506">voro::wall_list</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<li>di
+: <a class="el" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">voro::particle_record</a>
+</li>
+<li>dj
+: <a class="el" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">voro::particle_record</a>
+</li>
+<li>dk
+: <a class="el" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">voro::particle_record</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>e_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">voro::pre_container_base</a>
+</li>
+<li>ed
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">voro::voronoicell_base</a>
+</li>
+<li>end_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">voro::pre_container_base</a>
+</li>
+<li>end_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">voro::pre_container_base</a>
+</li>
+<li>ey
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a407b759a2c2d6baec5183e18a726a4e6">voro::container_periodic_base</a>
+</li>
+<li>ez
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a9920ab99f51190399ceda8fb8689364f">voro::container_periodic_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<li>hx
+: <a class="el" href="classvoro_1_1voro__compute.html#aaf168ea2924df41ece6ea2771aebbb72">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hxy
+: <a class="el" href="classvoro_1_1voro__compute.html#a157da0cf7efcdfc256c04a430962360e">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hxyz
+: <a class="el" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hy
+: <a class="el" href="classvoro_1_1voro__compute.html#a8693c6f8e16e426f7b870a2b8bd4330d">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+<li>hz
+: <a class="el" href="classvoro_1_1voro__compute.html#a9a64242973c903d26973de1fbb03f93f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<li>i
+: <a class="el" href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">voro::c_loop_base</a>
+</li>
+<li>id
+: <a class="el" href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a5abecf243780e08dd6cce6f5dd270c76">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a9dd2372829ff4078615f994fc36a4c76">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container__base.html#a50de485630d0b693fb418be1726826a7">voro::container_base</a>
+</li>
+<li>ijk
+: <a class="el" href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">voro::c_loop_base</a>
+, <a class="el" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">voro::particle_record</a>
+</li>
+<li>img
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a90658551a7621bedfea141f052443fe1">voro::container_periodic_base</a>
+</li>
+<li>index_sz
+: <a class="el" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">voro::pre_container_base</a>
+</li>
+<li>init_mem
+: <a class="el" href="classvoro_1_1container__periodic__base.html#adeaa9eab58ba59f2fa3d7176ce617ff1">voro::container_periodic_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_j"></a>- j -</h3><ul>
+<li>j
+: <a class="el" href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">voro::c_loop_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<li>k
+: <a class="el" href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">voro::c_loop_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<li>l
+: <a class="el" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">voro::particle_record</a>
+</li>
+<li>l_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">voro::pre_container_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<li>max_radius
+: <a class="el" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">voro::radius_poly</a>
+</li>
+<li>max_uv_y
+: <a class="el" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">voro::unitcell</a>
+</li>
+<li>max_uv_z
+: <a class="el" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">voro::unitcell</a>
+</li>
+<li>mec
+: <a class="el" href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">voro::voronoicell_base</a>
+</li>
+<li>mem
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a4ff4effc81e7b8908cda31f0c8c5ad70">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1container__base.html#a633edc1737859a7dde8ca2e466e12cfe">voro::container_base</a>
+</li>
+<li>mep
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">voro::voronoicell_base</a>
+</li>
+<li>mne
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">voro::voronoicell_neighbor</a>
+</li>
+<li>mode
+: <a class="el" href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">voro::c_loop_subset</a>
+</li>
+<li>mrad
+: <a class="el" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">voro::voro_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>ne
+: <a class="el" href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">voro::voronoicell_neighbor</a>
+</li>
+<li>nu
+: <a class="el" href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">voro::voronoicell_base</a>
+</li>
+<li>nx
+: <a class="el" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">voro::c_loop_base</a>
+</li>
+<li>nxy
+: <a class="el" href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">voro::voro_base</a>
+</li>
+<li>nxyz
+: <a class="el" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">voro::c_loop_base</a>
+</li>
+<li>ny
+: <a class="el" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">voro::c_loop_base</a>
+</li>
+<li>nz
+: <a class="el" href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">voro::voro_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<li>o
+: <a class="el" href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">voro::particle_order</a>
+</li>
+<li>op
+: <a class="el" href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">voro::particle_order</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">voro::c_loop_order_periodic</a>
+, <a class="el" href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">voro::c_loop_order</a>
+</li>
+<li>oxyz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ae1dfc876e56ec254053c7672b4454313">voro::container_periodic_base</a>
+</li>
+<li>oy
+: <a class="el" href="classvoro_1_1container__periodic__base.html#aa143ce1ecd9093f7c1889a0481b4cbb5">voro::container_periodic_base</a>
+</li>
+<li>oz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#ab1f18c51495f684dfc4d3372f9b311da">voro::container_periodic_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<li>p
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">voro::c_loop_base</a>
+, <a class="el" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">voro::voronoicell_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a301925d00d1d79f3df7b965d02e25608">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a57e2978b1a5fac350a35f7358502b2eb">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1container__base.html#a0798a7623a37b1a9da86f225119606e5">voro::container_base</a>
+</li>
+<li>ppr
+: <a class="el" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">voro::radius_poly</a>
+</li>
+<li>pre_id
+: <a class="el" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">voro::pre_container_base</a>
+</li>
+<li>pre_p
+: <a class="el" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">voro::pre_container_base</a>
+</li>
+<li>ps
+: <a class="el" href="classvoro_1_1container__base.html#a235781536a17eab85b547787ff3618ba">voro::container_base</a>
+, <a class="el" href="classvoro_1_1container__periodic__base.html#a5213538964cf869c9751a27bccaf323e">voro::container_periodic_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#ab3dbe9810de52793dfaf753b8504567c">voro::voro_compute&lt; c_class &gt;</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">voro::pre_container_base</a>
+, <a class="el" href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">voro::c_loop_base</a>
+</li>
+<li>pts
+: <a class="el" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">voro::voronoicell_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_q"></a>- q -</h3><ul>
+<li>q
+: <a class="el" href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">voro::c_loop_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>size
+: <a class="el" href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">voro::particle_order</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<li>unit_voro
+: <a class="el" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">voro::unitcell</a>
+</li>
+<li>up
+: <a class="el" href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">voro::voronoicell_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<li>vo
+: <a class="el" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">voro::c_loop_order</a>
+, <a class="el" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">voro::c_loop_order_periodic</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<li>walls
+: <a class="el" href="classvoro_1_1wall__list.html#abfc54768de5b596237d7eef5f589fe90">voro::wall_list</a>
+</li>
+<li>wel
+: <a class="el" href="classvoro_1_1wall__list.html#a292491bc99b6bbc819bb3720fcfb08a1">voro::wall_list</a>
+</li>
+<li>wep
+: <a class="el" href="classvoro_1_1wall__list.html#abb48a3e29042c51cf48fa6a6b6c2dc1d">voro::wall_list</a>
+</li>
+<li>wl
+: <a class="el" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">voro::voro_base</a>
+</li>
+<li>wy
+: <a class="el" href="classvoro_1_1container__periodic__base.html#a012ffc20dd6379bcbd26ddc0c5cc8591">voro::container_periodic_base</a>
+</li>
+<li>wz
+: <a class="el" href="classvoro_1_1container__periodic__base.html#afe16d21568925f78421122cdfb7b0cc0">voro::container_periodic_base</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_x"></a>- x -</h3><ul>
+<li>xperiodic
+: <a class="el" href="classvoro_1_1container__base.html#a6734b7147a71bb7e2a4a313d4153bebf">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">voro::pre_container_base</a>
+</li>
+<li>xsp
+: <a class="el" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a4d1613a14697f4aff5b743d64db661b6">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_y"></a>- y -</h3><ul>
+<li>yperiodic
+: <a class="el" href="classvoro_1_1container__base.html#a05a979d24c3d0fefe9f5cd96174863f8">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">voro::pre_container_base</a>
+</li>
+<li>ysp
+: <a class="el" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a384a2be3d85828fc0f7114d93096ed66">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_z"></a>- z -</h3><ul>
+<li>zperiodic
+: <a class="el" href="classvoro_1_1container__base.html#acd3bdff20b8b11a3e606e5581ebf3c06">voro::container_base</a>
+, <a class="el" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">voro::pre_container_base</a>
+</li>
+<li>zsp
+: <a class="el" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">voro::voro_base</a>
+, <a class="el" href="classvoro_1_1voro__compute.html#a0ac78232aa7234e0d17adf763c0f3c9f">voro::voro_compute&lt; c_class &gt;</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/globals.html b/lib/voro++/html/globals.html
new file mode 100644
index 000000000..5ccb39bec
--- /dev/null
+++ b/lib/voro++/html/globals.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li class="current"><a href="globals.html"><span>All</span></a></li>
+ <li><a href="globals_defs.html"><span>Macros</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:</div><ul>
+<li>VOROPP_CMD_LINE_ERROR
+: <a class="el" href="config_8hh.html#af88f7ba675d82866fea2342f26203384">config.hh</a>
+</li>
+<li>VOROPP_FILE_ERROR
+: <a class="el" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">config.hh</a>
+</li>
+<li>VOROPP_INTERNAL_ERROR
+: <a class="el" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">config.hh</a>
+</li>
+<li>VOROPP_MEMORY_ERROR
+: <a class="el" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">config.hh</a>
+</li>
+<li>VOROPP_REPORT_OUT_OF_BOUNDS
+: <a class="el" href="config_8hh.html#a67fdb1741ce5fa942c0bea4d8d1322cb">config.hh</a>
+</li>
+<li>VOROPP_VERBOSE
+: <a class="el" href="config_8hh.html#a692da825f7adf94704ec4bc7f8b6e388">config.hh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/globals_defs.html b/lib/voro++/html/globals_defs.html
new file mode 100644
index 000000000..fbe15e3a6
--- /dev/null
+++ b/lib/voro++/html/globals_defs.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li class="current"><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow3" class="tabs2">
+ <ul class="tablist">
+ <li><a href="globals.html"><span>All</span></a></li>
+ <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="contents">
+&#160;<ul>
+<li>VOROPP_CMD_LINE_ERROR
+: <a class="el" href="config_8hh.html#af88f7ba675d82866fea2342f26203384">config.hh</a>
+</li>
+<li>VOROPP_FILE_ERROR
+: <a class="el" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">config.hh</a>
+</li>
+<li>VOROPP_INTERNAL_ERROR
+: <a class="el" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">config.hh</a>
+</li>
+<li>VOROPP_MEMORY_ERROR
+: <a class="el" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">config.hh</a>
+</li>
+<li>VOROPP_REPORT_OUT_OF_BOUNDS
+: <a class="el" href="config_8hh.html#a67fdb1741ce5fa942c0bea4d8d1322cb">config.hh</a>
+</li>
+<li>VOROPP_VERBOSE
+: <a class="el" href="config_8hh.html#a692da825f7adf94704ec4bc7f8b6e388">config.hh</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/hierarchy.html b/lib/voro++/html/hierarchy.html
new file mode 100644
index 000000000..2569e60b2
--- /dev/null
+++ b/lib/voro++/html/hierarchy.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Class Hierarchy</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Class Hierarchy</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__base.html" target="_self">voro::c_loop_base</a></td><td class="desc">Base class for looping over particles in a container</td></tr>
+<tr id="row_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__all.html" target="_self">voro::c_loop_all</a></td><td class="desc">Class for looping over all of the particles in a container</td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__all__periodic.html" target="_self">voro::c_loop_all_periodic</a></td><td class="desc">A class for looping over all particles in a <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> or <a class="el" href="classvoro_1_1container__periodic__poly.html" title="Extension of the container_periodic_base class for computing radical Voronoi tessellations.">container_periodic_poly</a> class</td></tr>
+<tr id="row_0_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__order.html" target="_self">voro::c_loop_order</a></td><td class="desc">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class</td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__order__periodic.html" target="_self">voro::c_loop_order_periodic</a></td><td class="desc">Class for looping over all of the particles specified in a pre-assembled <a class="el" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> class, for use with <a class="el" href="classvoro_1_1container__periodic.html" title="Extension of the container_periodic_base class for computing regular Voronoi tessellations.">container_periodic</a> classes</td></tr>
+<tr id="row_0_4_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1c__loop__subset.html" target="_self">voro::c_loop_subset</a></td><td class="desc">Class for looping over a subset of particles in a container</td></tr>
+<tr id="row_1_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1particle__order.html" target="_self">voro::particle_order</a></td><td class="desc">A class for storing ordering information when particles are added to a container</td></tr>
+<tr id="row_2_"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1particle__record.html" target="_self">voro::particle_record</a></td><td class="desc">Structure for holding information about a particle</td></tr>
+<tr id="row_3_" class="even"><td class="entry"><img id="arr_3_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('3_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container__base.html" target="_self">voro::pre_container_base</a></td><td class="desc">A class for storing an arbitrary number of particles, prior to setting up a container geometry</td></tr>
+<tr id="row_3_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container.html" target="_self">voro::pre_container</a></td><td class="desc">A class for storing an arbitrary number of particles without radius information, prior to setting up a container geometry</td></tr>
+<tr id="row_3_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1pre__container__poly.html" target="_self">voro::pre_container_poly</a></td><td class="desc">A class for storing an arbitrary number of particles with radius information, prior to setting up a container geometry</td></tr>
+<tr id="row_4_"><td class="entry"><img id="arr_4_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('4_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1radius__mono.html" target="_self">voro::radius_mono</a></td><td class="desc">Class containing all of the routines that are specific to computing the regular Voronoi tessellation</td></tr>
+<tr id="row_4_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container.html" target="_self">voro::container</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_4_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic.html" target="_self">voro::container_periodic</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_5_" class="even"><td class="entry"><img id="arr_5_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('5_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1radius__poly.html" target="_self">voro::radius_poly</a></td><td class="desc">Class containing all of the routines that are specific to computing the radical Voronoi tessellation</td></tr>
+<tr id="row_5_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__poly.html" target="_self">voro::container_periodic_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_5_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__poly.html" target="_self">voro::container_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_6_"><td class="entry"><img id="arr_6_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('6_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1unitcell.html" target="_self">voro::unitcell</a></td><td class="desc">Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain</td></tr>
+<tr id="row_6_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_6_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('6_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__base.html" target="_self">voro::container_periodic_base</a></td><td class="desc">Class for representing a particle system in a 3D periodic non-orthogonal periodic domain</td></tr>
+<tr id="row_6_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic.html" target="_self">voro::container_periodic</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_6_0_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__poly.html" target="_self">voro::container_periodic_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__periodic__base.html" title="Class for representing a particle system in a 3D periodic non-orthogonal periodic domain...">container_periodic_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_7_"><td class="entry"><img id="arr_7_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voro__base.html" target="_self">voro::voro_base</a></td><td class="desc">Class containing data structures common across all particle container classes</td></tr>
+<tr id="row_7_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img id="arr_7_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('7_0_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__base.html" target="_self">voro::container_base</a></td><td class="desc">Class for representing a particle system in a three-dimensional rectangular box</td></tr>
+<tr id="row_7_0_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container.html" target="_self">voro::container</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing regular Voronoi tessellations</td></tr>
+<tr id="row_7_0_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__poly.html" target="_self">voro::container_poly</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1container__base.html" title="Class for representing a particle system in a three-dimensional rectangular box.">container_base</a> class for computing radical Voronoi tessellations</td></tr>
+<tr id="row_7_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__periodic__base.html" target="_self">voro::container_periodic_base</a></td><td class="desc">Class for representing a particle system in a 3D periodic non-orthogonal periodic domain</td></tr>
+<tr id="row_8_" class="even"><td class="entry"><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voro__compute.html" target="_self">voro::voro_compute&lt; c_class &gt;</a></td><td class="desc">Template for carrying out Voronoi cell computations</td></tr>
+<tr id="row_9_"><td class="entry"><img id="arr_9_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('9_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell__base.html" target="_self">voro::voronoicell_base</a></td><td class="desc">A class representing a single Voronoi cell</td></tr>
+<tr id="row_9_0_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell.html" target="_self">voro::voronoicell</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell without neighbor information</td></tr>
+<tr id="row_9_1_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1voronoicell__neighbor.html" target="_self">voro::voronoicell_neighbor</a></td><td class="desc">Extension of the <a class="el" href="classvoro_1_1voronoicell__base.html" title="A class representing a single Voronoi cell.">voronoicell_base</a> class to represent a Voronoi cell with neighbor information</td></tr>
+<tr id="row_10_" class="even"><td class="entry"><img id="arr_10_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('10_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1wall.html" target="_self">voro::wall</a></td><td class="desc">Pure virtual class from which wall objects are derived</td></tr>
+<tr id="row_10_0_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__cone.html" target="_self">voro::wall_cone</a></td><td class="desc">A class representing a conical wall object</td></tr>
+<tr id="row_10_1_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__cylinder.html" target="_self">voro::wall_cylinder</a></td><td class="desc">A class representing a cylindrical wall object</td></tr>
+<tr id="row_10_2_"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__plane.html" target="_self">voro::wall_plane</a></td><td class="desc">A class representing a plane wall object</td></tr>
+<tr id="row_10_3_" class="even"><td class="entry"><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="structvoro_1_1wall__sphere.html" target="_self">voro::wall_sphere</a></td><td class="desc">A class representing a spherical wall object</td></tr>
+<tr id="row_11_"><td class="entry"><img id="arr_11_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('11_')"/><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1wall__list.html" target="_self">voro::wall_list</a></td><td class="desc">A class for storing a list of pointers to walls</td></tr>
+<tr id="row_11_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt="&#160;" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="classvoro_1_1container__base.html" target="_self">voro::container_base</a></td><td class="desc">Class for representing a particle system in a three-dimensional rectangular box</td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/index.html b/lib/voro++/html/index.html
new file mode 100644
index 000000000..6933d98ae
--- /dev/null
+++ b/lib/voro++/html/index.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: Voro++ class reference manual</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">Voro++ class reference manual </div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><h1><a class="anchor" id="intro"></a>
+Introduction</h1>
+<p>Voro++ is a software library for carrying out three-dimensional computations of the Voronoi tessellation. A distinguishing feature of the Voro++ library is that it carries out cell-based calculations, computing the Voronoi cell for each particle individually, rather than computing the Voronoi tessellation as a global network of vertices and edges. It is particularly well-suited for applications that rely on cell-based statistics, where features of Voronoi cells (eg. volume, centroid, number of faces) can be used to analyze a system of particles.</p>
+<p>Voro++ is written in C++ and can be built as a static library that can be linked to. This manual provides a reference for every function in the class structure. For a general overview of the program, see the Voro++ website at <a href="http://math.lbl.gov/voro++/">http://math.lbl.gov/voro++/</a> and in particular the example programs at <a href="http://math.lbl.gov/voro++/examples/">http://math.lbl.gov/voro++/examples/</a> that demonstrate many of the library's features.</p>
+<h1><a class="anchor" id="class"></a>
+C++ class structure</h1>
+<p>The code is structured around several C++ classes. The voronoicell_base class contains all of the routines for constructing a single Voronoi cell. It represents the cell as a collection of vertices that are connected by edges, and there are routines for initializing, making, and outputting the cell. The voronoicell_base class form the base of the voronoicell and voronoicell_neighbor classes, which add specialized routines depending on whether neighboring particle ID information for each face must be tracked or not. Collectively, these classes are referred to as "voronoicell classes" within the documentation.</p>
+<p>There is a hierarchy of classes that represent three-dimensional particle systems. All of these are derived from the voro_base class, which contains constants that divide a three-dimensional system into a rectangular grid of equally-sized rectangular blocks; this grid is used for computational efficiency during the Voronoi calculations.</p>
+<p>The container_base, container, and container_poly are then derived from the voro_base class to represent a particle system in a specific three-dimensional rectangular box using both periodic and non-periodic boundary conditions. In addition, the container_periodic_base, container_periodic, and container_periodic_poly classes represent a particle system in a three-dimensional non-orthogonal periodic domain, defined by three periodicity vectors that represent a parallelepiped. Collectively, these classes are referred to as "container classes" within the documentation.</p>
+<p>The voro_compute template encapsulates all of the routines for computing Voronoi cells. Each container class has a voro_compute template within it, that accesses the container's particle system, and computes the Voronoi cells.</p>
+<p>There are several wall classes that can be used to apply certain boundary conditions using additional plane cuts during the Voronoi cell compution. The code also contains a number of small loop classes, c_loop_all, c_loop_subset, c_loop_all_periodic, and c_loop_order that can be used to iterate over a certain subset of particles in a container. The latter class makes use of a special particle_order class that stores a specific order of particles within the container. The library also contains the classes pre_container_base, pre_container, and pre_container_poly, that can be used as temporary storage when importing data of unknown size.</p>
+<h1><a class="anchor" id="voronoicell"></a>
+The voronoicell classes</h1>
+<p>The voronoicell class represents a single Voronoi cell as a convex polyhedron, with a set of vertices that are connected by edges. The class contains a variety of functions that can be used to compute and output the Voronoi cell corresponding to a particular particle. The command init() can be used to initialize a cell as a large rectangular box. The Voronoi cell can then be computed by repeatedly cutting it with planes that correspond to the perpendicular bisectors between that particle and its neighbors.</p>
+<p>This is achieved by using the plane() routine, which will recompute the cell's vertices and edges after cutting it with a single plane. This is the key routine in voronoicell class. It begins by exploiting the convexity of the underlying cell, tracing between edges to work out if the cell intersects the cutting plane. If it does not intersect, then the routine immediately exits. Otherwise, it finds an edge or vertex that intersects the plane, and from there, traces out a new face on the cell, recomputing the edge and vertex structure accordingly.</p>
+<p>Once the cell is computed, there are many routines for computing features of the the Voronoi cell, such as its volume, surface area, or centroid. There are also many routines for outputting features of the Voronoi cell, or writing its shape in formats that can be read by Gnuplot or POV-Ray.</p>
+<h2><a class="anchor" id="internal"></a>
+Internal data representation</h2>
+<p>The voronoicell class has a public member p representing the number of vertices. The polyhedral structure of the cell is stored in the following arrays:</p>
+<ul>
+<li>pts: a one-dimensional array of floating point numbers, that represent the position vectors x_0, x_1, ..., x_{p-1} of the polyhedron vertices.</li>
+<li>nu: the order of each vertex n_0, n_1, ..., n_{p-1}, corresponding to the number of other vertices to which each is connected.</li>
+<li>ed: a two-dimensional table of edges and relations. For the ith vertex, ed[i] has 2n_i+1 elements. The first n_i elements are the edges e(j,i), where e(j,i) is the jth neighbor of vertex i. The edges are ordered according to a right-hand rule with respect to an outward-pointing normal. The next n_i elements are the relations l(j,i) which satisfy the property e(l(j,i),e(j,i)) = i. The final element of the ed[i] list is a back pointer used in memory allocation.</li>
+</ul>
+<p>In a very large number of cases, the values of n_i will be 3. This is because the only way that a higher-order vertex can be created in the plane() routine is if the cutting plane perfectly intersects an existing vertex. For random particle arrangements with position vectors specified to double precision this should happen very rarely. A preliminary version of this code was quite successful with only making use of vertices of order 3. However, when calculating millions of cells, it was found that this approach is not robust, since a single floating point error can invalidate the computation. This can also be a problem for cases featuring crystalline arrangements of particles where the corresponding Voronoi cells may have high-order vertices by construction.</p>
+<p>Because of this, Voro++ takes the approach that it if an existing vertex is within a small numerical tolerance of the cutting plane, it is treated as being exactly on the plane, and the polyhedral topology is recomputed accordingly. However, while this improves robustness, it also adds the complexity that n_i may no longer always be 3. This causes memory management to be significantly more complicated, as different vertices require a different number of elements in the ed[][] array. To accommodate this, the voronoicell class allocated edge memory in a different array called mep[][], in such a way that all vertices of order k are held in mep[k]. If vertex i has order k, then ed[i] points to memory within mep[k]. The array ed[][] is never directly initialized as a two-dimensional array itself, but points at allocations within mep[][]. To the user, it appears as though each row of ed[][] has a different number of elements. When vertices are added or deleted, care must be taken to reorder and reassign elements in these arrays.</p>
+<p>During the plane() routine, the code traces around the vertices of the cell, and adds new vertices along edges which intersect the cutting plane to create a new face. The values of l(j,i) are used in this computation, as when the code is traversing from one vertex on the cell to another, this information allows the code to immediately work out which edge of a vertex points back to the one it came from. As new vertices are created, the l(j,i) are also updated to ensure consistency. To ensure robustness, the plane cutting algorithm should work with any possible combination of vertices which are inside, outside, or exactly on the cutting plane.</p>
+<p>Vertices exactly on the cutting plane create some additional computational difficulties. If there are two marginal vertices connected by an existing edge, then it would be possible for duplicate edges to be created between those two vertices, if the plane routine traces along both sides of this edge while constructing the new face. The code recognizes these cases and prevents the double edge from being formed. Another possibility is the formation of vertices of order two or one. At the end of the plane cutting routine, the code checks to see if any of these are present, removing the order one vertices by just deleting them, and removing the order two vertices by connecting the two neighbors of each vertex together. It is possible that the removal of a single low-order vertex could result in the creation of additional low-order vertices, so the process is applied recursively until no more are left.</p>
+<h1><a class="anchor" id="container"></a>
+The container classes</h1>
+<p>There are four container classes available for general usage: container, container_poly, container_periodic, and container_periodic_poly. Each of these represent a system of particles in a specific three-dimensional geometry. They contain routines for importing particles from a text file, and adding particles individually. They also contain a large number of analyzing and outputting the particle system. Internally, the routines that compute Voronoi cells do so by making use of the voro_compute template. Each container class contains routines that tell the voro_compute template about the specific geometry of this container.</p>
+<h1><a class="anchor" id="voro_compute"></a>
+The voro_compute template</h1>
+<p>The voro_compute template encapsulates the routines for carrying out the Voronoi cell computations. It contains data structures suchs as a mask and a queue that are used in the computations. The voro_compute template is associated with a specific container class, and during the computation, it calls routines in the container class to access the particle positions that are stored there.</p>
+<p>The key routine in this class is compute_cell(), which makes use of a voronoicell class to construct a Voronoi cell for a specific particle in the container. The basic approach that this function takes is to repeatedly cut the Voronoi cell by planes corresponding neighboring particles, and stop when it recognizes that all the remaining particles in the container are too far away to possibly influence cell's shape. The code makes use of two possible methods for working out when a cell computation is complete:</p>
+<ul>
+<li>Radius test: if the maximum distance of a Voronoi cell vertex from the cell center is R, then no particles more than a distance 2R away can possibly influence the cell. This a very fast computation to do, but it has no directionality: if the cell extends a long way in one direction then particles a long distance in other directions will still need to be tested.</li>
+<li>Region test: it is possible to test whether a specific region can possibly influence the cell by applying a series of plane tests at the point on the region which is closest to the Voronoi cell center. This is a slower computation to do, but it has directionality.</li>
+</ul>
+<p>Another useful observation is that the regions that need to be tested are simply connected, meaning that if a particular region does not need to be tested, then neighboring regions which are further away do not need to be tested.</p>
+<p>For maximum efficiency, it was found that a hybrid approach making use of both of the above tests worked well in practice. Radius tests work well for the first few blocks, but switching to region tests after then prevent the code from becoming extremely slow, due to testing over very large spherical shells of particles. The compute_cell() routine therefore takes the following approach:</p>
+<ul>
+<li>Initialize the voronoicell class to fill the entire computational domain.</li>
+<li>Cut the cell by any wall objects that have been added to the container.</li>
+<li>Apply plane cuts to the cell corresponding to the other particles which are within the current particle's region.</li>
+<li>Test over a pre-computed worklist of neighboring regions, that have been ordered according to the minimum distance away from the particle's position. Apply radius tests after every few regions to see if the calculation can terminate.</li>
+<li>If the code reaches the end of the worklist, add all the neighboring regions to a new list.</li>
+<li>Carry out a region test on the first item of the list. If the region needs to be tested, apply the plane() routine for all of its particles, and then add any neighboring regions to the end of the list that need to be tested. Continue until the list has no elements left.</li>
+</ul>
+<p>The compute_cell() routine forms the basis of many other routines, such as store_cell_volumes() and draw_cells_gnuplot() that can be used to calculate and draw the cells in a container.</p>
+<h1><a class="anchor" id="walls"></a>
+Wall computation</h1>
+<p>Wall computations are handled by making use of a pure virtual wall class. Specific wall types are derived from this class, and require the specification of two routines: point_inside() that tests to see if a point is inside a wall or not, and cut_cell() that cuts a cell according to the wall's position. The walls can be added to the container using the add_wall() command, and these are called each time a compute_cell() command is carried out. At present, wall types for planes, spheres, cylinders, and cones are provided, although custom walls can be added by creating new classes derived from the pure virtual class. Currently all wall types approximate the wall surface with a single plane, which produces some small errors, but generally gives good results for dense particle packings in direct contact with a wall surface. It would be possible to create more accurate walls by making cut_cell() routines that approximate the curved surface with multiple plane cuts.</p>
+<p>The wall objects can used for periodic calculations, although to obtain valid results, the walls should also be periodic as well. For example, in a domain that is periodic in the x direction, a cylinder aligned along the x axis could be added. At present, the interior of all wall objects are convex domains, and consequently any superposition of them will be a convex domain also. Carrying out computations in non-convex domains poses some problems, since this could theoretically lead to non-convex Voronoi cells, which the internal data representation of the voronoicell class does not support. For non-convex cases where the wall surfaces feature just a small amount of negative curvature (eg. a torus) approximating the curved surface with a single plane cut may give an acceptable level of accuracy. For non-convex cases that feature internal angles, the best strategy may be to decompose the domain into several convex subdomains, carry out a calculation in each, and then add the results together. The voronoicell class cannot be easily modified to handle non-convex cells as this would fundamentally alter the algorithms that it uses, and cases could arise where a single plane cut could create several new faces as opposed to just one.</p>
+<h1><a class="anchor" id="loops"></a>
+Loop classes</h1>
+<p>The container classes have a number of simple routines for calculating Voronoi cells for all particles within them. However, in some situations it is desirable to iterate over a specific subset of particles. This can be achieved with the c_loop classes that are all derived from the c_loop_base class. Each class can iterate over a specific subset of particles in a container. There are three loop classes for use with the container and container_poly classes:</p>
+<ul>
+<li>c_loop_all will loop over all of the particles in a container.</li>
+<li>c_loop_subset will loop over a subset of particles in a container that lie within some geometrical region. It can loop over particles in a rectangular box, particles in a sphere, or particles that lie within specific internal computational blocks.</li>
+<li>c_loop_order will loop over a specific list of particles that were previously stored in a particle_order class.</li>
+</ul>
+<p>Several of the key routines within the container classes (such as draw_cells_gnuplot and print_custom) have versions where they can be passed a loop class to use. Loop classes can also be used directly and there are some examples on the library website that demonstrate this. It is also possible to write custom loop classes.</p>
+<p>In addition to the loop classes mentioned above, there is also a c_loop_all_periodic class, that is specifically for use with the container_periodic and container_periodic_poly classes. Since the data structures of these containers differ considerably, it requires a different loop class that is not interoperable with the others.</p>
+<h1><a class="anchor" id="pre_container"></a>
+The pre_container classes</h1>
+<p>Voro++ makes use of internal computational grid of blocks that are used to configure the code for maximum efficiency. As discussed on the library website, the best performance is achieved for around 5 particles per block, with anything in the range from 3 to 12 giving good performance. Usually the size of the grid can be chosen by ensuring that the number of blocks is equal to the number of particles divided by 5.</p>
+<p>However, this can be difficult to choose in cases when the number of particles is not known a priori, and in thes cases the pre_container classes can be used. They can import an arbitrary number of particle positions from a file, dynamically allocating memory in chunks as necessary. Once particles are imported, they can guess an optimal block arrangement to use for the container class, and then transfer the particles to the container. By default, this procedure is used by the command-line utility to enable it to work well with arbitrary sizes of input data.</p>
+<p>The pre_container class can be used when no particle radius information is available, and the pre_container_poly class can be used when radius information is available. At present, the pre_container classes can only be used with the container and container_poly classes. They do not support the container_periodic and container_periodic_poly classes. </p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:39 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/jquery.js b/lib/voro++/html/jquery.js
new file mode 100644
index 000000000..63939e76d
--- /dev/null
+++ b/lib/voro++/html/jquery.js
@@ -0,0 +1,8 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function()
+{g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d
+&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),
+f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c)
+{if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
diff --git a/lib/voro++/html/nav_f.png b/lib/voro++/html/nav_f.png
new file mode 100644
index 000000000..72a58a529
Binary files /dev/null and b/lib/voro++/html/nav_f.png differ
diff --git a/lib/voro++/html/nav_g.png b/lib/voro++/html/nav_g.png
new file mode 100644
index 000000000..2093a237a
Binary files /dev/null and b/lib/voro++/html/nav_g.png differ
diff --git a/lib/voro++/html/nav_h.png b/lib/voro++/html/nav_h.png
new file mode 100644
index 000000000..33389b101
Binary files /dev/null and b/lib/voro++/html/nav_h.png differ
diff --git a/lib/voro++/html/open.png b/lib/voro++/html/open.png
new file mode 100644
index 000000000..30f75c7ef
Binary files /dev/null and b/lib/voro++/html/open.png differ
diff --git a/lib/voro++/html/pre__container_8cc.html b/lib/voro++/html/pre__container_8cc.html
new file mode 100644
index 000000000..bd4c511ed
--- /dev/null
+++ b/lib/voro++/html/pre__container_8cc.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: pre_container.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">pre_container.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the pre_container and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cmath&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>&quot;</code><br/>
+</div>
+<p><a href="pre__container_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/pre__container_8cc_source.html b/lib/voro++/html/pre__container_8cc_source.html
new file mode 100644
index 000000000..35f47e714
--- /dev/null
+++ b/lib/voro++/html/pre__container_8cc_source.html
@@ -0,0 +1,291 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: pre_container.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">pre_container.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="pre__container_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file pre_container.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the pre_container and related classes.</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pre__container_8hh.html" title="Header file for the pre_container and related classes.">pre_container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** The class constructor sets up the geometry of container, initializing the</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * minimum and maximum coordinates in each direction. It allocates an initial</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * chunk into which to store particle information.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * container is periodic in each</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * coordinate direction.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * \param[in] ps_ the number of floating point entries to store for each</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * particle. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68"> 29</a></span>&#160;<a class="code" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">pre_container_base::pre_container_base</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> ps_) :</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; ax(ax_), bx(bx_), ay(ay_), by(by_), az(az_), bz(bz_),</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; xperiodic(xperiodic_), yperiodic(yperiodic_), zperiodic(zperiodic_), ps(ps_),</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; index_sz(init_chunk_size), pre_id(new int*[index_sz]), end_id(pre_id),</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; pre_p(new double*[index_sz]), end_p(pre_p) {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>=*<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>=<span class="keyword">new</span> <span class="keywordtype">int</span>[pre_container_chunk_size];</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a>=<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>+<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>;<a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a>=<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>+pre_container_chunk_size;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>=*<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a>*pre_container_chunk_size];</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;}</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">/** The destructor frees the dynamically allocated memory. */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a"> 41</a></span>&#160;<a class="code" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">pre_container_base::~pre_container_base</a>() {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">delete</span> [] *<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">delete</span> [] *<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>!=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>--;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">delete</span> [] *<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>--;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">delete</span> [] *<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/** Makes a guess at the optimal grid of blocks to use, computing in</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * a way that</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * \param[out] (nx,ny,nz) the number of blocks to use. */</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6"> 57</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">pre_container_base::guess_optimal</a>(<span class="keywordtype">int</span> &amp;nx,<span class="keywordtype">int</span> &amp;ny,<span class="keywordtype">int</span> &amp;nz) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">double</span> dx=<a class="code" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a>-<a class="code" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a>,dy=<a class="code" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a>-<a class="code" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a>,dz=<a class="code" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a>-<a class="code" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a>;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">double</span> ilscale=pow(<a class="code" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">total_particles</a>()/(optimal_particles*dx*dy*dz),1/3.0);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; nx=int(dx*ilscale+1);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; ny=int(dy*ilscale+1);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; nz=int(dz*ilscale+1);</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">/** Stores a particle ID and position, allocating a new memory chunk if</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * necessary. For coordinate directions in which the container is not periodic,</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * the routine checks to make sure that the particle is within the container</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * bounds. If the particle is out of bounds, it is not stored.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle. */</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd"> 71</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">pre_container::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a>||(x&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a>&amp;&amp;x&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a>))&amp;&amp;(<a class="code" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a>||(y&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a>&amp;&amp;y&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a>))&amp;&amp;(<a class="code" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a>||(z&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a>&amp;&amp;z&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a>))) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>==<a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a>) <a class="code" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; *(<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>++)=n;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; *(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=x;*(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=y;*(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=z;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#if VOROPP_REPORT_OUT_OF_BOUNDS ==1</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span> fprintf(stderr,<span class="stringliteral">&quot;Out of bounds: (x,y,z)=(%g,%g,%g)\n&quot;</span>,x,y,z);</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">/** Stores a particle ID and position, allocating a new memory chunk if necessary.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * \param[in] n the numerical ID of the inserted particle.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * \param[in] (x,y,z) the position vector of the inserted particle.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * \param[in] r the radius of the particle. */</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a"> 86</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">pre_container_poly::put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r) {</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a>||(x&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a>&amp;&amp;x&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a>))&amp;&amp;(<a class="code" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a>||(y&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a>&amp;&amp;y&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a>))&amp;&amp;(<a class="code" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a>||(z&gt;=<a class="code" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a>&amp;&amp;z&lt;=<a class="code" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a>))) {</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>==<a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a>) <a class="code" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a>();</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; *(<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>++)=n;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; *(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=x;*(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=y;*(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=z;*(<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>++)=r;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor">#if VOROPP_REPORT_OUT_OF_BOUNDS ==1</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">else</span> fprintf(stderr,<span class="stringliteral">&quot;Out of bounds: (x,y,z)=(%g,%g,%g)\n&quot;</span>,x,y,z);</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/** Transfers the particles stored within the class to a container class.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * \param[in] con the container class to transfer to. */</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f"> 99</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">pre_container::setup</a>(<a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a> &amp;con) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">int</span> **c_id=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>,*idp,*ide,n;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">double</span> **c_p=<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>,*pp,x,y,z;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">while</span>(c_id&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>) {</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; idp=*(c_id++);ide=idp+pre_container_chunk_size;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; pp=*(c_p++);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">while</span>(idp&lt;ide) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; con.<a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(n,x,y,z);</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; idp=*c_id;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; pp=*c_p;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">while</span>(idp&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>) {</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; con.<a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(n,x,y,z);</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">/** Transfers the particles stored within the class to a container_poly class.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * \param[in] con the container_poly class to transfer to. */</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356"> 120</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356">pre_container_poly::setup</a>(<a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> &amp;con) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">int</span> **c_id=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>,*idp,*ide,n;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">double</span> **c_p=<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>,*pp,x,y,z,r;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">while</span>(c_id&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; idp=*(c_id++);ide=idp+pre_container_chunk_size;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; pp=*(c_p++);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">while</span>(idp&lt;ide) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; con.<a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(n,x,y,z,r);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; idp=*c_id;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; pp=*c_p;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">while</span>(idp&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; con.<a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(n,x,y,z,r);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;}</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">/** Transfers the particles stored within the class to a container class, also</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * recording the order in which particles were stored.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * \param[in] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * \param[in] con the container class to transfer to. */</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#a81aae000e3b787c58deef7a8f197bdc3"> 143</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">pre_container::setup</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a> &amp;con) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordtype">int</span> **c_id=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>,*idp,*ide,n;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">double</span> **c_p=<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>,*pp,x,y,z;</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span>(c_id&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>) {</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; idp=*(c_id++);ide=idp+pre_container_chunk_size;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; pp=*(c_p++);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">while</span>(idp&lt;ide) {</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; con.<a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(vo,n,x,y,z);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; idp=*c_id;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; pp=*c_p;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">while</span>(idp&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>) {</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; con.<a class="code" href="classvoro_1_1container.html#a5c67c9998e4f174fb217967dcb41c7f3">put</a>(vo,n,x,y,z);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">/** Transfers the particles stored within the class to a container_poly class,</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * also recording the order in which particles were stored.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * \param[in] vo the ordering class to use.</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> * \param[in] con the container_poly class to transfer to. */</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#ac18d16204c7769ec554d14f84b6517f0"> 166</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356">pre_container_poly::setup</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> &amp;con) {</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">int</span> **c_id=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>,*idp,*ide,n;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordtype">double</span> **c_p=<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>,*pp,x,y,z,r;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">while</span>(c_id&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; idp=*(c_id++);ide=idp+pre_container_chunk_size;</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; pp=*(c_p++);</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">while</span>(idp&lt;ide) {</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; con.<a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(vo,n,x,y,z,r);</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; idp=*c_id;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; pp=*c_p;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">while</span>(idp&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; con.<a class="code" href="classvoro_1_1container__poly.html#a61689312fb6f8ee36f1fbb0fe00e4fe3">put</a>(vo,n,x,y,z,r);</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;}</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">/** Import a list of particles from an open file stream into the container.</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * Entries of four numbers (Particle ID, x position, y position, z position)</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * are searched for. If the file cannot be successfully read, then the routine</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> * causes a fatal error.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#a0d62168ad0379672e038ec07cc362567"> 190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#a0d62168ad0379672e038ec07cc362567">pre_container::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">double</span> x,y,z;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z))==4) <a class="code" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">put</a>(i,x,y,z);</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;}</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">/** Import a list of particles from an open file stream, also storing the order</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * of that the particles are read. Entries of four numbers (Particle ID, x</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> * position, y position, z position) are searched for. If the file cannot be</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * successfully read, then the routine causes a fatal error.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * \param[in] fp the file handle to read from. */</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#aa6aab61ad68e90a513e53433313c2a4a"> 202</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#aa6aab61ad68e90a513e53433313c2a4a">pre_container_poly::import</a>(FILE *fp) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">double</span> x,y,z,r;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">while</span>((j=fscanf(fp,<span class="stringliteral">&quot;%d %lg %lg %lg %lg&quot;</span>,&amp;i,&amp;x,&amp;y,&amp;z,&amp;r))==5) <a class="code" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">put</a>(i,x,y,z,r);</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span>(j!=EOF) voro_fatal_error(<span class="stringliteral">&quot;File import error&quot;</span>,<a class="code" href="config_8hh.html#a8de7f106cac2556a67bcc61bd364ed38">VOROPP_FILE_ERROR</a>);</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment">/** Allocates a new chunk of memory for storing particles. */</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f"> 210</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">pre_container_base::new_chunk</a>() {</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>++;<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>++;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>==<a class="code" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a>) <a class="code" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">extend_chunk_index</a>();</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>=*<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>=<span class="keyword">new</span> <span class="keywordtype">int</span>[pre_container_chunk_size];</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a>=<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>+pre_container_chunk_size;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>=*<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>=<span class="keyword">new</span> <span class="keywordtype">double</span>[<a class="code" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a>*pre_container_chunk_size];</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;}</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">/** Extends the index of chunks. */</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d"> 219</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">pre_container_base::extend_chunk_index</a>() {</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>&lt;&lt;=1;</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>&gt;max_chunk_size)</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Absolute memory limit on chunk index reached&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;Pre-container chunk index scaled up to %d\n&quot;</span>,<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>);</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"></span> <span class="keywordtype">int</span> **n_id=<span class="keyword">new</span> <span class="keywordtype">int</span>*[<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>],**p_id=n_id,**c_id=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>;</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">double</span> **n_p=<span class="keyword">new</span> <span class="keywordtype">double</span>*[<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>],**p_p=n_p,**c_p=<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">while</span>(c_id&lt;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>) {</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; *(p_id++)=*(c_id++);</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; *(p_p++)=*(c_p++);</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>;<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>=n_id;<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>=p_id;<a class="code" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a>=<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>+<a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>;</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>;<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>=n_p;<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>=p_p;</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;}</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:30 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/pre__container_8hh.html b/lib/voro++/html/pre__container_8hh.html
new file mode 100644
index 000000000..9d343a4c1
--- /dev/null
+++ b/lib/voro++/html/pre__container_8hh.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: pre_container.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">pre_container.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the pre_container and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cstdio&gt;</code><br/>
+<code>#include &quot;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container_8hh_source.html">container.hh</a>&quot;</code><br/>
+</div>
+<p><a href="pre__container_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__base.html">voro::pre_container_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for storing an arbitrary number of particles, prior to setting up a container geometry. <a href="classvoro_1_1pre__container__base.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container.html">voro::pre_container</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for storing an arbitrary number of particles without radius information, prior to setting up a container geometry. <a href="classvoro_1_1pre__container.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1pre__container__poly.html">voro::pre_container_poly</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class for storing an arbitrary number of particles with radius information, prior to setting up a container geometry. <a href="classvoro_1_1pre__container__poly.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/pre__container_8hh_source.html b/lib/voro++/html/pre__container_8hh_source.html
new file mode 100644
index 000000000..16ee61156
--- /dev/null
+++ b/lib/voro++/html/pre__container_8hh_source.html
@@ -0,0 +1,217 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: pre_container.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">pre_container.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="pre__container_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file pre_container.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the pre_container and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_PRE_CONTAINER_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_PRE_CONTAINER_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8hh.html" title="Header file for the loop classes.">c_loops.hh</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8hh.html" title="Header file for the container_base and related classes.">container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">/** \brief A class for storing an arbitrary number of particles, prior to setting</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * up a container geometry.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * The pre_container_base class can dynamically import and store an arbitrary</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * number of particles. Once the particles have been read in, an appropriate</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * container class can be set up with the optimal grid size, and the particles</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * can be transferred.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * The pre_container_base class is not intended for direct use, but forms the</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * base of the pre_container and pre_container_poly classes, that add routines</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * depending on whether particle radii need to be tracked or not. */</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html"> 31</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> /** The minimum x coordinate of the container. */</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789"> 34</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a7ffde3944d0899b6ae9abe42e6567789">ax</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> /** The maximum x coordinate of the container. */</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0"> 36</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a34dfa63f38cf870b32004e12558463a0">bx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> /** The minimum y coordinate of the container. */</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52"> 38</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a397c0ae141594e1868eb6248a6d57d52">ay</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> /** The maximum y coordinate of the container. */</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59"> 40</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a6acac844ab71a02ea6a990fccdbd5c59">by</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> /** The minimum z coordinate of the container. */</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52"> 42</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a68952c93198e0623604a049aa4140d52">az</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> /** The maximum z coordinate of the container. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24"> 44</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1pre__container__base.html#a9049eaba232b13aa3a9562dffa57bc24">bz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> /** A boolean value that determines if the x coordinate in</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3"> 47</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1pre__container__base.html#aa7cffdaee881f941e421d0e9e3f38db3">xperiodic</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> /** A boolean value that determines if the y coordinate in</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be"> 50</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1pre__container__base.html#aa86a0e8ac0bafbc2bf2fefbafce005be">yperiodic</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> /** A boolean value that determines if the z coordinate in</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * periodic or not. */</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2"> 53</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1pre__container__base.html#a5df09b1ba1e3fe49c3efba11ed44efb2">zperiodic</a>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#a8e1fcadbeedc63f205a36c2fa9333ab6">guess_optimal</a>(<span class="keywordtype">int</span> &amp;nx,<span class="keywordtype">int</span> &amp;ny,<span class="keywordtype">int</span> &amp;nz);</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a522bd57b4a0e4af6b197c04d103adc68">pre_container_base</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,<span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_,<span class="keywordtype">int</span> ps_);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classvoro_1_1pre__container__base.html#a9832a92c7e6dbc2959ab958ea821ca9a">~pre_container_base</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> /** Calculates and returns the total number of particles stored</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * within the class.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * \return The number of particles. */</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695"> 60</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1pre__container__base.html#a253ea1bdfa1b82c3fb0ab12f1685d695">total_particles</a>() {</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> (<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>-<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>)*pre_container_chunk_size+(<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>-*<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> /** The number of doubles associated with a single particle</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * (three for the standard container, four when radius</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * information is stored). */</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a"> 67</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1pre__container__base.html#a4a3ff1d6bee289e53f5015327384444a">ps</a>;</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#a3b9e5b59a4fd8477321d9412feffac4f">new_chunk</a>();</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__base.html#abc281e0f5b042046451b1d86ee94880d">extend_chunk_index</a>();<span class="comment"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> /** The size of the chunk index. */</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b"> 71</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1pre__container__base.html#a9ae49ab1c51dc851e7ddf3035b719a6b">index_sz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> /** A pointer to the chunk index to store the integer particle</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * IDs. */</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c"> 74</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1pre__container__base.html#a927440d3390000b94cce98733d81811c">pre_id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> /** A pointer to the last allocated integer ID chunk. */</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3"> 76</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1pre__container__base.html#a687bc9acac994d7918e1e34c27df68e3">end_id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> /** A pointer to the end of the integer ID chunk index, used to</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * determine when the chunk index is full. */</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6"> 79</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1pre__container__base.html#a49cb1c584f78ac8fdce353fd2f43b5f6">l_id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> /** A pointer to the next available slot on the current</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * particle ID chunk. */</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506"> 82</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1pre__container__base.html#a432897c62a5d0c1acc39a97ffe27b506">ch_id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> /** A pointer to the end of the current integer chunk. */</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b"> 84</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1pre__container__base.html#a73bcad154008325e074bea734fc4125b">e_id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> /** A pointer to the chunk index to store the floating point</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * information associated with particles. */</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c"> 87</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1pre__container__base.html#a8f3fadf0d9d115fec92eedbcb2c5af9c">pre_p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> /** A pointer to the last allocated chunk of floating point</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * information. */</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4"> 90</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1pre__container__base.html#ae4dc10b744019a92efffbcc1ece189e4">end_p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> /** A pointer to the next available slot on the current</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * floating point chunk. */</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9"> 93</a></span>&#160; <span class="keywordtype">double</span> *<a class="code" href="classvoro_1_1pre__container__base.html#abe6c99e9fa26d0764014c5f2913ed6c9">ch_p</a>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/** \brief A class for storing an arbitrary number of particles without radius</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * information, prior to setting up a container geometry.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * The pre_container class is an extension of the pre_container_base class for</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * cases when no particle radius information is available. */</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html"> 101</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1pre__container.html" title="A class for storing an arbitrary number of particles without radius information, prior to setting up ...">pre_container</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> {</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> /** The class constructor sets up the geometry of container,</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * initializing the minimum and maximum coordinates in each</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * direction.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * container is periodic in</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> * each coordinate direction. */</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#a6b1faf934a8f416c595b6f0be5832bbe"> 112</a></span>&#160; <a class="code" href="classvoro_1_1pre__container.html#a6b1faf934a8f416c595b6f0be5832bbe">pre_container</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_)</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; : <a class="code" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a>(ax_,bx_,ay_,by_,az_,bz_,xperiodic_,yperiodic_,zperiodic_,3) {};</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#ac68ce0449cf83ee282325d5302ffa4cd">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> /** Imports particles from a file.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * \param[in] filename the name of the file to read from. */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container.html#a84488a4453d94d6fef9afe2578c35adf"> 119</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">setup</a>(<a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a> &amp;con);</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container.html#a7a2e73ad34fbfe1001f59ea3b69f992f">setup</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<a class="code" href="classvoro_1_1container.html" title="Extension of the container_base class for computing regular Voronoi tessellations.">container</a> &amp;con);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;};</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">/** \brief A class for storing an arbitrary number of particles with radius</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * information, prior to setting up a container geometry.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * The pre_container_poly class is an extension of the pre_container_base class</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * for cases when particle radius information is available. */</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html"> 133</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1pre__container__poly.html" title="A class for storing an arbitrary number of particles with radius information, prior to setting up a c...">pre_container_poly</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a> {</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> /** The class constructor sets up the geometry of container,</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * initializing the minimum and maximum coordinates in each</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> * direction.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * \param[in] (ax_,bx_) the minimum and maximum x coordinates.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * \param[in] (ay_,by_) the minimum and maximum y coordinates.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * \param[in] (az_,bz_) the minimum and maximum z coordinates.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * container is periodic in</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * each coordinate direction. */</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#a80a9be51f0cd441544ea5c7a59002e19"> 144</a></span>&#160; <a class="code" href="classvoro_1_1pre__container__poly.html#a80a9be51f0cd441544ea5c7a59002e19">pre_container_poly</a>(<span class="keywordtype">double</span> ax_,<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> ay_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> az_,<span class="keywordtype">double</span> bz_,</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordtype">bool</span> xperiodic_,<span class="keywordtype">bool</span> yperiodic_,<span class="keywordtype">bool</span> zperiodic_)</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; : <a class="code" href="classvoro_1_1pre__container__base.html" title="A class for storing an arbitrary number of particles, prior to setting up a container geometry...">pre_container_base</a>(ax_,bx_,ay_,by_,az_,bz_,xperiodic_,yperiodic_,zperiodic_,4) {};</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#abc5d9009deec44c1f5fc88e4da10e89a">put</a>(<span class="keywordtype">int</span> n,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">double</span> r);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordtype">void</span> <span class="keyword">import</span>(FILE *fp=stdin);<span class="comment"></span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> /** Imports particles from a file.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> * \param[in] filename the name of the file to read from. */</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classvoro_1_1pre__container__poly.html#aa78a3577ba7d11c65f5941e22638f015"> 151</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <span class="keyword">import</span>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; FILE *fp=safe_fopen(filename,<span class="stringliteral">&quot;r&quot;</span>);</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">import</span>(fp);</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356">setup</a>(<a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> &amp;con);</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1pre__container__poly.html#ac71c0ee24182a115ce79da4cc91ee356">setup</a>(<a class="code" href="classvoro_1_1particle__order.html" title="A class for storing ordering information when particles are added to a container.">particle_order</a> &amp;vo,<a class="code" href="classvoro_1_1container__poly.html" title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> &amp;con);</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;};</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;}</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/rad__option_8hh.html b/lib/voro++/html/rad__option_8hh.html
new file mode 100644
index 000000000..ca8e0b93b
--- /dev/null
+++ b/lib/voro++/html/rad__option_8hh.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: rad_option.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">rad_option.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellations.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cmath&gt;</code><br/>
+</div>
+<p><a href="rad__option_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__mono.html">voro::radius_mono</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class containing all of the routines that are specific to computing the regular Voronoi tessellation. <a href="classvoro_1_1radius__mono.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1radius__poly.html">voro::radius_poly</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class containing all of the routines that are specific to computing the radical Voronoi tessellation. <a href="classvoro_1_1radius__poly.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/rad__option_8hh_source.html b/lib/voro++/html/rad__option_8hh_source.html
new file mode 100644
index 000000000..a7838cb46
--- /dev/null
+++ b/lib/voro++/html/rad__option_8hh_source.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: rad_option.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">rad_option.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="rad__option_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file rad_option.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the classes encapsulating functionality for the</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * regular and radical Voronoi tessellations. */</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#ifndef VOROPP_RAD_OPTION_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_RAD_OPTION_HH</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** \brief Class containing all of the routines that are specific to computing </span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * the regular Voronoi tessellation.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * The container and container_periodic classes are derived from this class,</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * and during the Voronoi cell computation, these routines are used to create</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * the regular Voronoi tessellation. */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html"> 24</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1radius__mono.html" title="Class containing all of the routines that are specific to computing the regular Voronoi tessellation...">radius_mono</a> {</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> /** This is called prior to computing a Voronoi cell for a</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * given particle to initialize any required constants.</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * \param[in] s the index of the particle within the block. */</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9"> 30</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1radius__mono.html#ab17c87e1f434718bec74e93387480be9">r_init</a>(<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> s) {}<span class="comment"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> /** Sets a required constant to be used when carrying out a</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * plane bounds check. */</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422"> 33</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1radius__mono.html#afc6e56b490ddf97d9ee924d58e128422">r_prime</a>(<span class="keywordtype">double</span> rv) {}<span class="comment"></span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> /** Carries out a radius bounds check.</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * \param[in] crs the radius squared to be tested.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * \param[in] mrs the current maximum distance to a Voronoi</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * vertex multiplied by two.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * \return True if particles at this radius could not possibly</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * cut the cell, false otherwise. */</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14"> 40</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1radius__mono.html#a685b7e6b79c943b4fd083857b229cc14">r_ctest</a>(<span class="keywordtype">double</span> crs,<span class="keywordtype">double</span> mrs) {<span class="keywordflow">return</span> crs&gt;mrs;}<span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> /** Scales a plane displacement during a plane bounds check.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * \param[in] lrs the plane displacement.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * \return The scaled value. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114"> 44</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__mono.html#a5eaff13d2c5212e72032d24a8c376114">r_cutoff</a>(<span class="keywordtype">double</span> lrs) {<span class="keywordflow">return</span> lrs;}<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> /** Adds the maximum radius squared to a given value.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * \param[in] rs the value to consider.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * \return The value with the radius squared added. */</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f"> 48</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__mono.html#ab1b663f24d371a45e19fb8866151bb7f">r_max_add</a>(<span class="keywordtype">double</span> rs) {<span class="keywordflow">return</span> rs;}<span class="comment"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> /** Subtracts the radius squared of a particle from a given </span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * value.</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * \param[in] rs the value to consider.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block. </span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * \return The value with the radius squared subtracted. */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086"> 55</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__mono.html#ae390a53c70f0295592d02fc9dd0a9086">r_current_sub</a>(<span class="keywordtype">double</span> rs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {<span class="keywordflow">return</span> rs;}<span class="comment"></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> /** Scales a plane displacement prior to use in the plane cutting</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * algorithm.</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * \param[in] rs the initial plane displacement.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * \return The scaled plane displacement. */</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720"> 62</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__mono.html#a4aa8de703ecce74dc1625aea73149720">r_scale</a>(<span class="keywordtype">double</span> rs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {<span class="keywordflow">return</span> rs;}<span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> /** Scales a plane displacement prior to use in the plane</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * cutting algorithm, and also checks if it could possibly cut</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * the cell.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * \param[in,out] rs the plane displacement to be scaled.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * \param[in] mrs the current maximum distance to a Voronoi</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * vertex multiplied by two.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \return True if the cell could possibly cut the cell, false</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * otherwise. */</span> </div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557"> 73</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1radius__mono.html#aaadf553614ec9390a37349bc7d7a7557">r_scale_check</a>(<span class="keywordtype">double</span> &amp;rs,<span class="keywordtype">double</span> mrs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {<span class="keywordflow">return</span> rs&lt;mrs;}</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;};</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">/** \brief Class containing all of the routines that are specific to computing </span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * the radical Voronoi tessellation.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * The container_poly and container_periodic_poly classes are derived from this</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * class, and during the Voronoi cell computation, these routines are used to</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * create the radical Voronoi tessellation. */</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html"> 82</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1radius__poly.html" title="Class containing all of the routines that are specific to computing the radical Voronoi tessellation...">radius_poly</a> {</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> /** A two-dimensional array holding particle positions and radii. */</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8"> 85</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> /** The current maximum radius of any particle, used to</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * determine when to cut off the radical Voronoi computation.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * */</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b"> 89</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> /** The class constructor sets the maximum particle radius to</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * be zero. */</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd"> 92</a></span>&#160; <a class="code" href="classvoro_1_1radius__poly.html#a54ca6935b6fe7eb28e924e5c2b0a2abd">radius_poly</a>() : <a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>(0) {}</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> /** This is called prior to computing a Voronoi cell for a</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * given particle to initialize any required constants.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \param[in] s the index of the particle within the block. */</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9"> 98</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1radius__poly.html#aa8dcd117e31007933a37454ef9ccb4d9">r_init</a>(<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> s) {</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; r_rad=<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*s+3]*<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*s+3];</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; r_mul=r_rad-<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>*<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> /** Sets a required constant to be used when carrying out a</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * plane bounds check. */</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911"> 104</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1radius__poly.html#a19b9bc7dd97869e6ac440662912f4911">r_prime</a>(<span class="keywordtype">double</span> rv) {r_val=1+r_mul/rv;}<span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> /** Carries out a radius bounds check.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * \param[in] crs the radius squared to be tested.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * \param[in] mrs the current maximum distance to a Voronoi</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * vertex multiplied by two.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * \return True if particles at this radius could not possibly</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * cut the cell, false otherwise. */</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90"> 111</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1radius__poly.html#a5e74adfce3978911c901f0eb5dbb2c90">r_ctest</a>(<span class="keywordtype">double</span> crs,<span class="keywordtype">double</span> mrs) {<span class="keywordflow">return</span> crs+r_mul&gt;sqrt(mrs*crs);}<span class="comment"></span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> /** Scales a plane displacement during a plane bounds check.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * \param[in] lrs the plane displacement.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * \return The scaled value. */</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9"> 115</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__poly.html#a33cecd36b74cc748fb91b5c9f60f08e9">r_cutoff</a>(<span class="keywordtype">double</span> lrs) {<span class="keywordflow">return</span> lrs*r_val;}<span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> /** Adds the maximum radius squared to a given value.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * \param[in] rs the value to consider.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * \return The value with the radius squared added. */</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1"> 119</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__poly.html#a86eda87db1ab281a251e43236bbc26c1">r_max_add</a>(<span class="keywordtype">double</span> rs) {<span class="keywordflow">return</span> rs+<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>*<a class="code" href="classvoro_1_1radius__poly.html#a9faed3ac8ef95c646e376a7fe915fb0b">max_radius</a>;}<span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> /** Subtracts the radius squared of a particle from a given </span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * value.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * \param[in] rs the value to consider.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block. </span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * \return The value with the radius squared subtracted. */</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650"> 126</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__poly.html#ab9a81c60cf27739db39faa28591d5650">r_current_sub</a>(<span class="keywordtype">double</span> rs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> rs-<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3]*<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3];</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> /** Scales a plane displacement prior to use in the plane cutting</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * algorithm.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * \param[in] rs the initial plane displacement.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> * \return The scaled plane displacement. */</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316"> 135</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1radius__poly.html#a8357f4c9d6e20d739029dcb76705e316">r_scale</a>(<span class="keywordtype">double</span> rs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> rs+r_rad-<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3]*<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3];</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }<span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> /** Scales a plane displacement prior to use in the plane</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * cutting algorithm, and also checks if it could possibly cut</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * the cell.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * \param[in,out] rs the plane displacement to be scaled.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * \param[in] mrs the current maximum distance to a Voronoi</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * vertex multiplied by two.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> * \param[in] ijk the block that the particle is within.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> * \param[in] q the index of the particle within the block.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * \return True if the cell could possibly cut the cell, false</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> * otherwise. */</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="code" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb"> 148</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1radius__poly.html#aba9f2a8086de090f84f714510e6914fb">r_scale_check</a>(<span class="keywordtype">double</span> &amp;rs,<span class="keywordtype">double</span> mrs,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> q) {</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">double</span> trs=rs;</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; rs+=r_rad-<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3]*<a class="code" href="classvoro_1_1radius__poly.html#a9e40455c336c27b089c5a78ca94626d8">ppr</a>[ijk][4*q+3];</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> rs&lt;sqrt(mrs*trs);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">double</span> r_rad,r_mul,r_val;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;};</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1particle__record.html b/lib/voro++/html/structvoro_1_1particle__record.html
new file mode 100644
index 000000000..88b933046
--- /dev/null
+++ b/lib/voro++/html/structvoro_1_1particle__record.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::particle_record Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="structvoro_1_1particle__record.html">particle_record</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">voro::particle_record Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Structure for holding information about a particle.
+ <a href="structvoro_1_1particle__record.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ac65fa5fc929dda2dd454369eab68ef8b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a></td></tr>
+<tr class="memitem:a5faf0f540ad3ee3ffcee5cae5a8b20fc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a></td></tr>
+<tr class="memitem:a36ea6a17eb9dc145a3e5f14720b30d15"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a></td></tr>
+<tr class="memitem:a25c3b01e32ccdb6bb37e279f14899bab"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">dj</a></td></tr>
+<tr class="memitem:a56e78394cc8a114cedf353a2d54c0077"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">dk</a></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This small structure holds information about a single particle, and is used by several of the routines in the <a class="el" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> template for passing information by reference between functions. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00024">24</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+</div><hr/><h2>Field Documentation</h2>
+<a class="anchor" id="a36ea6a17eb9dc145a3e5f14720b30d15"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_record::di</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The x-index of the block. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00030">30</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a25c3b01e32ccdb6bb37e279f14899bab"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_record::dj</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The y-index of the block. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00032">32</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a56e78394cc8a114cedf353a2d54c0077"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_record::dk</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The z-index of the block. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00034">34</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac65fa5fc929dda2dd454369eab68ef8b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_record::ijk</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The index of the block that the particle is within. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00026">26</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5faf0f540ad3ee3ffcee5cae5a8b20fc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int voro::particle_record::l</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>The number of particle within its block. </p>
+
+<p>Definition at line <a class="el" href="v__compute_8hh_source.html#l00028">28</a> of file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="v__compute_8hh_source.html">v_compute.hh</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1wall__cone.html b/lib/voro++/html/structvoro_1_1wall__cone.html
new file mode 100644
index 000000000..448e57b5b
--- /dev/null
+++ b/lib/voro++/html/structvoro_1_1wall__cone.html
@@ -0,0 +1,385 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall_cone Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="structvoro_1_1wall__cone.html">wall_cone</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall_cone Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class representing a conical wall object.
+ <a href="structvoro_1_1wall__cone.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="wall_8hh_source.html">wall.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall_cone:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="structvoro_1_1wall__cone.png" usemap="#voro::wall_cone_map" alt=""/>
+ <map id="voro::wall_cone_map" name="voro::wall_cone_map">
+<area href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived." alt="voro::wall" shape="rect" coords="0,0,101,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a7ff2b2acc21eeb2539d08970b3aeb010"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html#a7ff2b2acc21eeb2539d08970b3aeb010">wall_cone</a> (double xc_, double yc_, double zc_, double xa_, double ya_, double za_, double ang, int w_id_=-99)</td></tr>
+<tr class="memitem:a5bcbbcdbe0c36285c6630dd92380a091"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ad39d47ee5d007dab3728e45efdaf0db7"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ad39d47ee5d007dab3728e45efdaf0db7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">cut_cell_base</a> (v_cell &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a2a007e376f93c3ae5608eb53e4a52261"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:ab8ac7eb3a051ba3c3816dd941bdf4eeb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c, double x, double y, double z)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a cone wall object. </p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00093">93</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a7ff2b2acc21eeb2539d08970b3aeb010"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_cone::wall_cone </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>yc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xa_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ya_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>za_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ang</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>w_id_</em> = <code>-99</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Constructs a cone wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xc_,yc_,zc_)</td><td>the apex of the cone. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xa_,ya_,za_)</td><td>a vector pointing along the axis of the cone. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ang</td><td>the angle (in radians) of the cone, measured from the axis. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">w_id_</td><td>an ID number to associate with the wall for neighbor tracking. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00103">103</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a2a007e376f93c3ae5608eb53e4a52261"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cone::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell without neighbor-tracking with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00110">110</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab8ac7eb3a051ba3c3816dd941bdf4eeb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cone::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell with neighbor-tracking enabled with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00111">111</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad39d47ee5d007dab3728e45efdaf0db7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cone::cut_cell_base </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Cuts a cell by the cone wall object. The conical wall is approximated by a single plane applied at the point on the cone which is closest to the center of the cell. This works well for particle arrangements that are packed against the wall, but loses accuracy for sparse particle distributions. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>the Voronoi cell to be cut. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the location of the Voronoi cell. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell still exists, false if the cell is deleted. </dd></dl>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00106">106</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a5bcbbcdbe0c36285c6630dd92380a091"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cone::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Tests to see whether a point is inside the cone wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the point is inside, false if the point is outside. </dd></dl>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00088">88</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="wall_8hh_source.html">wall.hh</a></li>
+<li><a class="el" href="wall_8cc_source.html">wall.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1wall__cone.png b/lib/voro++/html/structvoro_1_1wall__cone.png
new file mode 100644
index 000000000..bcfb30038
Binary files /dev/null and b/lib/voro++/html/structvoro_1_1wall__cone.png differ
diff --git a/lib/voro++/html/structvoro_1_1wall__cylinder.html b/lib/voro++/html/structvoro_1_1wall__cylinder.html
new file mode 100644
index 000000000..be4e3eb1e
--- /dev/null
+++ b/lib/voro++/html/structvoro_1_1wall__cylinder.html
@@ -0,0 +1,385 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall_cylinder Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="structvoro_1_1wall__cylinder.html">wall_cylinder</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall_cylinder Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class representing a cylindrical wall object.
+ <a href="structvoro_1_1wall__cylinder.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="wall_8hh_source.html">wall.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall_cylinder:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="structvoro_1_1wall__cylinder.png" usemap="#voro::wall_cylinder_map" alt=""/>
+ <map id="voro::wall_cylinder_map" name="voro::wall_cylinder_map">
+<area href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived." alt="voro::wall" shape="rect" coords="0,0,119,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a15485959acf214d9eafa8a03e066196c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html#a15485959acf214d9eafa8a03e066196c">wall_cylinder</a> (double xc_, double yc_, double zc_, double xa_, double ya_, double za_, double rc_, int w_id_=-99)</td></tr>
+<tr class="memitem:a338b12542139088159acac3f5face2f7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:ada478166ad7607c53d691608c7806cca"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:ada478166ad7607c53d691608c7806cca"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">cut_cell_base</a> (v_cell &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a8121adc120f17770099eadc73b5c4f99"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:af10e0a8cd87d46629b42b8443daf95cb"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c, double x, double y, double z)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a open cylinder wall object. </p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00066">66</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a15485959acf214d9eafa8a03e066196c"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_cylinder::wall_cylinder </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>yc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xa_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ya_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>za_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>w_id_</em> = <code>-99</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Constructs a cylinder wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xc_,yc_,zc_)</td><td>a point on the axis of the cylinder. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xa_,ya_,za_)</td><td>a vector pointing along the direction of the cylinder. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rc_</td><td>the radius of the cylinder </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">w_id_</td><td>an ID number to associate with the wall for neighbor tracking. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00076">76</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a8121adc120f17770099eadc73b5c4f99"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cylinder::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell without neighbor-tracking with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00082">82</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af10e0a8cd87d46629b42b8443daf95cb"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cylinder::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell with neighbor-tracking enabled with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00083">83</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ada478166ad7607c53d691608c7806cca"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cylinder::cut_cell_base </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Cuts a cell by the cylindrical wall object. The cylindrical wall is approximated by a single plane applied at the point on the cylinder which is closest to the center of the cell. This works well for particle arrangements that are packed against the wall, but loses accuracy for sparse particle distributions. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>the Voronoi cell to be cut. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the location of the Voronoi cell. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell still exists, false if the cell is deleted. </dd></dl>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00074">74</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a338b12542139088159acac3f5face2f7"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_cylinder::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Tests to see whether a point is inside the cylindrical wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the point is inside, false if the point is outside. </dd></dl>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00058">58</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="wall_8hh_source.html">wall.hh</a></li>
+<li><a class="el" href="wall_8cc_source.html">wall.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1wall__cylinder.png b/lib/voro++/html/structvoro_1_1wall__cylinder.png
new file mode 100644
index 000000000..df3c7133d
Binary files /dev/null and b/lib/voro++/html/structvoro_1_1wall__cylinder.png differ
diff --git a/lib/voro++/html/structvoro_1_1wall__plane.html b/lib/voro++/html/structvoro_1_1wall__plane.html
new file mode 100644
index 000000000..f6eab28dc
--- /dev/null
+++ b/lib/voro++/html/structvoro_1_1wall__plane.html
@@ -0,0 +1,366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall_plane Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="structvoro_1_1wall__plane.html">wall_plane</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall_plane Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class representing a plane wall object.
+ <a href="structvoro_1_1wall__plane.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="wall_8hh_source.html">wall.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall_plane:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="structvoro_1_1wall__plane.png" usemap="#voro::wall_plane_map" alt=""/>
+ <map id="voro::wall_plane_map" name="voro::wall_plane_map">
+<area href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived." alt="voro::wall" shape="rect" coords="0,0,104,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:adb486dd12e7369e4791b625f362c4df2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html#adb486dd12e7369e4791b625f362c4df2">wall_plane</a> (double xc_, double yc_, double zc_, double ac_, int w_id_=-99)</td></tr>
+<tr class="memitem:a8168f370f6817ccbd4870b1494b4321d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a8d2515cef30dbd7594a4403d502b4fe5"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:a8d2515cef30dbd7594a4403d502b4fe5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">cut_cell_base</a> (v_cell &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a879c5551eb1d97677b0b0651b7da0ddd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:ae2103d51a50887cea07671b4e8a0b713"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c, double x, double y, double z)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a single plane wall object. </p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00044">44</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="adb486dd12e7369e4791b625f362c4df2"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_plane::wall_plane </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>yc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ac_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>w_id_</em> = <code>-99</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Constructs a plane wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xc_,yc_,zc_)</td><td>a normal vector to the plane. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ac_</td><td>a displacement along the normal vector. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">w_id_</td><td>an ID number to associate with the wall for neighbor tracking. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00051">51</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a879c5551eb1d97677b0b0651b7da0ddd"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_plane::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell without neighbor-tracking with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00056">56</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae2103d51a50887cea07671b4e8a0b713"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_plane::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell with neighbor-tracking enabled with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00057">57</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8d2515cef30dbd7594a4403d502b4fe5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_plane::cut_cell_base </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Cuts a cell by the plane wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>the Voronoi cell to be cut. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the location of the Voronoi cell. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell still exists, false if the cell is deleted. </dd></dl>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00050">50</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a8168f370f6817ccbd4870b1494b4321d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_plane::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Tests to see whether a point is inside the plane wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the point is inside, false if the point is outside. </dd></dl>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00041">41</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="wall_8hh_source.html">wall.hh</a></li>
+<li><a class="el" href="wall_8cc_source.html">wall.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1wall__plane.png b/lib/voro++/html/structvoro_1_1wall__plane.png
new file mode 100644
index 000000000..64db519ea
Binary files /dev/null and b/lib/voro++/html/structvoro_1_1wall__plane.png differ
diff --git a/lib/voro++/html/structvoro_1_1wall__sphere.html b/lib/voro++/html/structvoro_1_1wall__sphere.html
new file mode 100644
index 000000000..856be4e7d
--- /dev/null
+++ b/lib/voro++/html/structvoro_1_1wall__sphere.html
@@ -0,0 +1,366 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro::wall_sphere Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
+ </ul>
+ </div>
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><b>voro</b></li><li class="navelem"><a class="el" href="structvoro_1_1wall__sphere.html">wall_sphere</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> </div>
+ <div class="headertitle">
+<div class="title">voro::wall_sphere Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A class representing a spherical wall object.
+ <a href="structvoro_1_1wall__sphere.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="wall_8hh_source.html">wall.hh</a>&gt;</code></p>
+<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
+ <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for voro::wall_sphere:</div>
+<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
+</div>
+<div id="dynsection-0-content" class="dyncontent" style="display:none;">
+ <div class="center">
+ <img src="structvoro_1_1wall__sphere.png" usemap="#voro::wall_sphere_map" alt=""/>
+ <map id="voro::wall_sphere_map" name="voro::wall_sphere_map">
+<area href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived." alt="voro::wall" shape="rect" coords="0,0,112,24"/>
+</map>
+ </div></div>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ad37f5096c5b84ffe6c011047a5ac9f78"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html#ad37f5096c5b84ffe6c011047a5ac9f78">wall_sphere</a> (double xc_, double yc_, double zc_, double rc_, int w_id_=-99)</td></tr>
+<tr class="memitem:a08695201299833a5ccebecc016fe8413"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">point_inside</a> (double x, double y, double z)</td></tr>
+<tr class="memitem:a3779ab19fab2ed104f8a8c0bdb5773b4"><td class="memTemplParams" colspan="2">template&lt;class v_cell &gt; </td></tr>
+<tr class="memitem:a3779ab19fab2ed104f8a8c0bdb5773b4"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">cut_cell_base</a> (v_cell &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a0ded43a5ed66e6099203c780e03e1fff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html#a0ded43a5ed66e6099203c780e03e1fff">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;c, double x, double y, double z)</td></tr>
+<tr class="memitem:a67f806cace710d4cbca901ef9228a197"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197">cut_cell</a> (<a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;c, double x, double y, double z)</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This class represents a spherical wall object. </p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00021">21</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="ad37f5096c5b84ffe6c011047a5ac9f78"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">voro::wall_sphere::wall_sphere </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>yc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>zc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>rc_</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>w_id_</em> = <code>-99</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Constructs a spherical wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">w_id_</td><td>an ID number to associate with the wall for neighbor tracking. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(xc_,yc_,zc_)</td><td>a position vector for the sphere's center. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rc_</td><td>the radius of the sphere. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00029">29</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="a0ded43a5ed66e6099203c780e03e1fff"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_sphere::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell.html">voronoicell</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell without neighbor-tracking with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ab54b4c6d37223584f1fbf653d0b17d14">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00034">34</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a67f806cace710d4cbca901ef9228a197"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_sphere::cut_cell </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>A pure virtual function for cutting a cell with neighbor-tracking enabled with a wall. </p>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#a1e246285ea5a5879e4370db9633e75a6">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8hh_source.html#l00035">35</a> of file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3779ab19fab2ed104f8a8c0bdb5773b4"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class v_cell &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_sphere::cut_cell_base </td>
+ <td>(</td>
+ <td class="paramtype">v_cell &amp;&#160;</td>
+ <td class="paramname"><em>c</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Cuts a cell by the sphere wall object. The spherical wall is approximated by a single plane applied at the point on the sphere which is closest to the center of the cell. This works well for particle arrangements that are packed against the wall, but loses accuracy for sparse particle distributions. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">c</td><td>the Voronoi cell to be cut. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">(x,y,z)</td><td>the location of the Voronoi cell. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the cell still exists, false if the cell is deleted. </dd></dl>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00029">29</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a08695201299833a5ccebecc016fe8413"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool voro::wall_sphere::point_inside </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>z</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Tests to see whether a point is inside the sphere wall object. </p>
+<dl class="params"><dt>Parameters:</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in,out]</td><td class="paramname">(x,y,z)</td><td>the vector to test. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns:</dt><dd>True if the point is inside, false if the point is outside. </dd></dl>
+
+<p>Implements <a class="el" href="classvoro_1_1wall.html#ae49edf1ae1036be9ffaa5c2bd7fcd82d">voro::wall</a>.</p>
+
+<p>Definition at line <a class="el" href="wall_8cc_source.html#l00017">17</a> of file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following files:<ul>
+<li><a class="el" href="wall_8hh_source.html">wall.hh</a></li>
+<li><a class="el" href="wall_8cc_source.html">wall.cc</a></li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/structvoro_1_1wall__sphere.png b/lib/voro++/html/structvoro_1_1wall__sphere.png
new file mode 100644
index 000000000..def2a942c
Binary files /dev/null and b/lib/voro++/html/structvoro_1_1wall__sphere.png differ
diff --git a/lib/voro++/html/tab_a.png b/lib/voro++/html/tab_a.png
new file mode 100644
index 000000000..3b725c41c
Binary files /dev/null and b/lib/voro++/html/tab_a.png differ
diff --git a/lib/voro++/html/tab_b.png b/lib/voro++/html/tab_b.png
new file mode 100644
index 000000000..258c14161
Binary files /dev/null and b/lib/voro++/html/tab_b.png differ
diff --git a/lib/voro++/html/tab_h.png b/lib/voro++/html/tab_h.png
new file mode 100644
index 000000000..4ca910284
Binary files /dev/null and b/lib/voro++/html/tab_h.png differ
diff --git a/lib/voro++/html/tab_s.png b/lib/voro++/html/tab_s.png
new file mode 100644
index 000000000..ab478c95b
Binary files /dev/null and b/lib/voro++/html/tab_s.png differ
diff --git a/lib/voro++/html/tabs.css b/lib/voro++/html/tabs.css
new file mode 100644
index 000000000..21920562a
--- /dev/null
+++ b/lib/voro++/html/tabs.css
@@ -0,0 +1,59 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #283A5D;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/lib/voro++/html/unitcell_8cc.html b/lib/voro++/html/unitcell_8cc.html
new file mode 100644
index 000000000..c596644fc
--- /dev/null
+++ b/lib/voro++/html/unitcell_8cc.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: unitcell.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">unitcell.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the unitcell class.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;cmath&gt;</code><br/>
+<code>#include &lt;queue&gt;</code><br/>
+<code>#include &quot;<a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+</div>
+<p><a href="unitcell_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/unitcell_8cc_source.html b/lib/voro++/html/unitcell_8cc_source.html
new file mode 100644
index 000000000..c0208d9f7
--- /dev/null
+++ b/lib/voro++/html/unitcell_8cc_source.html
@@ -0,0 +1,286 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: unitcell.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">unitcell.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="unitcell_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file unitcell.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the unitcell class. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;queue&gt;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="unitcell_8hh.html" title="Header file for the unitcell class.">unitcell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** Initializes the unit cell class for a particular non-orthogonal periodic</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * geometry, corresponding to a parallelepiped with sides given by three</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * vectors. The class constructs the unit Voronoi cell corresponding to this</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * geometry.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * \param[in] (bx_) The x coordinate of the first unit vector.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * vector. */</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc"> 26</a></span>&#160;<a class="code" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell::unitcell</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_)</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; : bx(bx_), bxy(bxy_), by(by_), bxz(bxz_), byz(byz_), bz(bz_) {</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">int</span> i,j,l=1;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="comment">// Initialize the Voronoi cell to be a very large rectangular box</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> ucx=max_unit_voro_shells*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,ucy=max_unit_voro_shells*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,ucz=max_unit_voro_shells*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">init</a>(-ucx,ucx,-ucy,ucy,-ucz,ucz);</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">// Repeatedly cut the cell by shells of periodic image particles</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">while</span>(l&lt;2*max_unit_voro_shells) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Check to see if any of the planes from the current shell</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// will cut the cell</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordflow">if</span>(unit_voro_intersect(l)) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="comment">// If they do, apply the plane cuts from the current</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="comment">// shell</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; unit_voro_apply(l,0,0);</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;l;i++) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; unit_voro_apply(l,i,0);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; unit_voro_apply(-l,i,0);</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">for</span>(i=-l;i&lt;=l;i++) unit_voro_apply(i,l,0);</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;l;i++) <span class="keywordflow">for</span>(j=-l+1;j&lt;=l;j++) {</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; unit_voro_apply(l,j,i);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; unit_voro_apply(-j,l,i);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; unit_voro_apply(-l,-j,i);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; unit_voro_apply(j,-l,i);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span>(i=-l;i&lt;=l;i++) <span class="keywordflow">for</span>(j=-l;j&lt;=l;j++) unit_voro_apply(i,j,l);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Calculate a bound on the maximum y and z coordinates</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="comment">// that could possibly cut the cell. This is based upon</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// a geometric result that particles with z&gt;l can&#39;t cut</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="comment">// a cell lying within the paraboloid</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// z&lt;=(l*l-x*x-y*y)/(2*l). It is always a tighter bound</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="comment">// than the one based on computing the maximum radius</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// of a Voronoi cell vertex.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a>=<a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a>=0;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">double</span> y,z,q,*pts=<a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">pts</a>,*pp=pts;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">while</span>(pp&lt;pts+3*<a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">p</a>) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; q=*(pp++);y=*(pp++);z=*(pp++);q=sqrt(q*q+y*y+z*z);</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(y+q&gt;<a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a>) <a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a>=y+q;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span>(z+q&gt;<a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a>) <a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a>=z+q;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a>*=0.5;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a>*=0.5;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; l++;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// If the routine makes it here, then the unit cell still hasn&#39;t been</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// completely bounded by the plane cuts. Give the memory error code,</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// because this is mainly a case of hitting a safe limit, than any</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// inherent problem.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Periodic cell computation failed&quot;</span>,<a class="code" href="config_8hh.html#a5dc0616f8a67ae3d1c2ba8a3dcf5612b">VOROPP_MEMORY_ERROR</a>);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;}</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">/** Applies a pair of opposing plane cuts from a periodic image point</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * to the unit Voronoi cell.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * \param[in] (i,j,k) the index of the periodic image to consider. */</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> unitcell::unit_voro_apply(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k) {</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordtype">double</span> x=i*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+j*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+k*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>,y=j*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+k*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>,z=k*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(x,y,z);</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(-x,-y,-z);</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">/** Calculates whether the unit Voronoi cell intersects a given periodic image</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * of the domain.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \param[in] (dx,dy,dz) the displacement of the periodic image.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * \param[out] vol the proportion of the unit cell volume within this image,</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * only computed in the case that the two intersect.</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * \return True if they intersect, false otherwise. */</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd"> 101</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">unitcell::intersects_image</a>(<span class="keywordtype">double</span> dx,<span class="keywordtype">double</span> dy,<span class="keywordtype">double</span> dz,<span class="keywordtype">double</span> &amp;vol) {</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> bxinv=1/<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,byinv=1/<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,bzinv=1/<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>,ivol=bxinv*byinv*bzinv;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> c;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; c=<a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; dx*=2;dy*=2;dz*=2;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(0,0,bzinv,dz+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(0,0,-bzinv,-dz+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(0,byinv,-byz*byinv*bzinv,dy+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(0,-byinv,byz*byinv*bzinv,-dy+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(bxinv,-<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>*bxinv*byinv,(<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>*byz-<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*bxz)*ivol,dx+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span>(!c.<a class="code" href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">plane</a>(-bxinv,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>*bxinv*byinv,(-<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>*byz+<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>*bxz)*ivol,-dx+1)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; vol=c.<a class="code" href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">volume</a>()*ivol;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;}</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">/** Computes a list of periodic domain images that intersect the unit Voronoi cell.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * \param[out] vi a vector containing triplets (i,j,k) corresponding to domain</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * images that intersect the unit Voronoi cell, when it is</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * centered in the middle of the primary domain.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> * \param[out] vd a vector containing the fraction of the Voronoi cell volume</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> * within each corresponding image listed in vi. */</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d"> 122</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">unitcell::images</a>(std::vector&lt;int&gt; &amp;vi,std::vector&lt;double&gt; &amp;vd) {</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> ms2=max_unit_voro_shells*2+1,mss=ms2*ms2*ms2;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordtype">bool</span> *a=<span class="keyword">new</span> <span class="keywordtype">bool</span>[mss],*ac=a+max_unit_voro_shells*(1+ms2*(1+ms2)),*ap=a;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">int</span> i,j,k;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">double</span> vol;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// Initialize mask</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">while</span>(ap&lt;ac) *(ap++)=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; *(ap++)=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">while</span>(ap&lt;a+mss) *(ap++)=<span class="keyword">true</span>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// Set up the queue and add (0,0,0) image to it</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; std::queue&lt;int&gt; q;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; q.push(0);q.push(0);q.push(0);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">while</span>(!q.empty()) {</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// Read the next entry on the queue</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; i=q.front();q.pop();</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; j=q.front();q.pop();</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; k=q.front();q.pop();</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="comment">// Check intersection of this image</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a>(i,j,k,vol)) {</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// Add this entry to the output vectors</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; vi.push_back(i);</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; vi.push_back(j);</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; vi.push_back(k);</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; vd.push_back(vol);</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// Add neighbors to the queue if they have not been</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// tested</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ap=ac+i+ms2*(j+ms2*k);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span>(k&gt;-max_unit_voro_shells&amp;&amp;*(ap-ms2*ms2)) {q.push(i);q.push(j);q.push(k-1);*(ap-ms2*ms2)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span>(j&gt;-max_unit_voro_shells&amp;&amp;*(ap-ms2)) {q.push(i);q.push(j-1);q.push(k);*(ap-ms2)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">if</span>(i&gt;-max_unit_voro_shells&amp;&amp;*(ap-1)) {q.push(i-1);q.push(j);q.push(k);*(ap-1)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span>(i&lt;max_unit_voro_shells&amp;&amp;*(ap+1)) {q.push(i+1);q.push(j);q.push(k);*(ap+1)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span>(j&lt;max_unit_voro_shells&amp;&amp;*(ap+ms2)) {q.push(i);q.push(j+1);q.push(k);*(ap+ms2)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span>(k&lt;max_unit_voro_shells&amp;&amp;*(ap+ms2*ms2)) {q.push(i);q.push(j);q.push(k+1);*(ap+ms2*ms2)=<span class="keyword">false</span>;}</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; }</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// Remove mask memory</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">delete</span> [] a;</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;}</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">/** Tests to see if a shell of periodic images could possibly cut the periodic</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * unit cell.</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * \param[in] l the index of the shell to consider.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> * \return True if a point in the shell cuts the cell, false otherwise. */</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keywordtype">bool</span> unitcell::unit_voro_intersect(<span class="keywordtype">int</span> l) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">int</span> i,j;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(l,0,0)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;l;i++) {</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(l,i,0)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(-l,i,0)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span>(i=-l;i&lt;=l;i++) <span class="keywordflow">if</span>(unit_voro_test(i,l,0)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">for</span>(i=1;i&lt;l;i++) <span class="keywordflow">for</span>(j=-l+1;j&lt;=l;j++) {</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(l,j,i)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(-j,l,i)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(-l,-j,i)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span>(unit_voro_test(j,-l,i)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span>(i=-l;i&lt;=l;i++) <span class="keywordflow">for</span>(j=-l;j&lt;=l;j++) <span class="keywordflow">if</span>(unit_voro_test(i,j,l)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;}</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">/** Tests to see if a plane cut from a particular periodic image will cut th</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * unit Voronoi cell.</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * \param[in] (i,j,k) the index of the periodic image to consider.</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> * \return True if the image cuts the cell, false otherwise. */</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> unitcell::unit_voro_test(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k) {</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">double</span> x=i*<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+j*<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+k*<a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>,y=j*<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+k*<a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>,z=k*<a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">double</span> rsq=x*x+y*y+z*z;</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>.<a class="code" href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">plane_intersects</a>(x,y,z,rsq);</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;}</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">/** Draws the periodic domain in gnuplot format.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a9379963d63388ba4075c620ddfdd326f"> 203</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">unitcell::draw_domain_gnuplot</a>(FILE *fp) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; fprintf(fp,<span class="stringliteral">&quot;0 0 0\n%g 0 0\n%g %g 0\n%g %g 0\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>);</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz,bxz,byz,bz);</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; fprintf(fp,<span class="stringliteral">&quot;0 0 0\n%g %g 0\n\n%g %g %g\n%g %g %g\n\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; fprintf(fp,<span class="stringliteral">&quot;%g 0 0\n%g %g %g\n\n%g %g 0\n%g %g %g\n\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;}</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">/** Draws the periodic domain in POV-Ray format.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> * \param[in] fp the file handle to write to. */</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a04c955e90a9478e17fb2a0c5df15a498"> 212</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">unitcell::draw_domain_pov</a>(FILE *fp) {</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{0,0,0&gt;,&lt;%g,0,0&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,0&gt;,&lt;%g,%g,0&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>);</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;0,0,0&gt;,&lt;%g,%g,0&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,0,0&gt;,&lt;%g,%g,0&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>);</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,%g&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;0,0,0&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,0,0&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz);</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; fprintf(fp,<span class="stringliteral">&quot;cylinder{&lt;%g,%g,0&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="stringliteral">&quot;cylinder{&lt;%g,%g,0&gt;,&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; fprintf(fp,<span class="stringliteral">&quot;sphere{&lt;0,0,0&gt;,rr}\nsphere{&lt;%g,0,0&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="stringliteral">&quot;sphere{&lt;%g,%g,0&gt;,rr}\nsphere{&lt;%g,%g,0&gt;,rr}\n&quot;</span>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; fprintf(fp,<span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="stringliteral">&quot;sphere{&lt;%g,%g,%g&gt;,rr}\nsphere{&lt;%g,%g,%g&gt;,rr}\n&quot;</span>,bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+bxz,byz,bz,<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz,<a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>+<a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>+bxz,<a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>+byz,bz);</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/unitcell_8hh.html b/lib/voro++/html/unitcell_8hh.html
new file mode 100644
index 000000000..d5c95555b
--- /dev/null
+++ b/lib/voro++/html/unitcell_8hh.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: unitcell.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">unitcell.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the unitcell class.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &lt;vector&gt;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+</div>
+<p><a href="unitcell_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1unitcell.html">voro::unitcell</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain. <a href="classvoro_1_1unitcell.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/unitcell_8hh_source.html b/lib/voro++/html/unitcell_8hh_source.html
new file mode 100644
index 000000000..4c5278aa7
--- /dev/null
+++ b/lib/voro++/html/unitcell_8hh_source.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: unitcell.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">unitcell.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="unitcell_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file unitcell.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the unitcell class. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_UNITCELL_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_UNITCELL_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">/** \brief Class for computation of the unit Voronoi cell associated with</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * a 3D non-rectangular periodic domain. */</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html"> 22</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1unitcell.html" title="Class for computation of the unit Voronoi cell associated with a 3D non-rectangular periodic domain...">unitcell</a> {</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> /** The x coordinate of the first vector defining the periodic</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df"> 26</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#aba3ac9d30b539fb0017799555199c2df">bx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> /** The x coordinate of the second vector defining the periodic</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35"> 29</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a572a7b91539af3c0707b6caccbf15f35">bxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> /** The y coordinate of the second vector defining the periodic</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83"> 32</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#abaca9a0c853b9a53f164a2fbee783f83">by</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> /** The x coordinate of the third vector defining the periodic</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db"> 35</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a000adf05e666f0fb4f57dbe8ca5b51db">bxz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> /** The y coordinate of the third vector defining the periodic</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b"> 38</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a434c1a7cd8ba84d4ad09845a1a0ddb5b">byz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> /** The z coordinate of the third vector defining the periodic</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * domain. */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481"> 41</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a30bf0a4a6bff808301aa424683eb0481">bz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> /** The computed unit Voronoi cell corresponding the given</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * 3D non-rectangular periodic domain geometry. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c"> 44</a></span>&#160; <a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> <a class="code" href="classvoro_1_1unitcell.html#a0844f70778cc7b19024ed28a2c7ad02c">unit_voro</a>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#abbeb66edf9e36476cf47bee76ce8d9fc">unitcell</a>(<span class="keywordtype">double</span> bx_,<span class="keywordtype">double</span> bxy_,<span class="keywordtype">double</span> by_,<span class="keywordtype">double</span> bxz_,<span class="keywordtype">double</span> byz_,<span class="keywordtype">double</span> bz_);<span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> /** Draws an outline of the domain in Gnuplot format.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * \param[in] filename the filename to write to. */</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13"> 48</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; FILE *fp(safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>));</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a>(fp);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#a630c635fd21cdd4e50bab118a4dadb13">draw_domain_gnuplot</a>(FILE *fp=stdout);<span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> /** Draws an outline of the domain in Gnuplot format.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * \param[in] filename the filename to write to. */</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc"> 56</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* filename) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; FILE *fp(safe_fopen(filename,<span class="stringliteral">&quot;w&quot;</span>));</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a>(fp);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; fclose(fp);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#af476fca3dcc658abe2796aa9613f67bc">draw_domain_pov</a>(FILE *fp=stdout);</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1unitcell.html#acc445d2a964296dfca277e03fdc63ebd">intersects_image</a>(<span class="keywordtype">double</span> dx,<span class="keywordtype">double</span> dy,<span class="keywordtype">double</span> dz,<span class="keywordtype">double</span> &amp;vol);</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1unitcell.html#a15d4e5b0f906bba383b27d38497ec68d">images</a>(std::vector&lt;int&gt; &amp;vi,std::vector&lt;double&gt; &amp;vd);</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> /** The maximum y-coordinate that could possibly cut the</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * computed unit Voronoi cell. */</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0"> 67</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a3f7cebe966d72935971c508fc64902f0">max_uv_y</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> /** The maximum z-coordinate that could possibly cut the</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * computed unit Voronoi cell. */</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6"> 70</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1unitcell.html#a3ac0618230ffa0a382469530f97844e6">max_uv_z</a>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> unit_voro_apply(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k);</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">bool</span> unit_voro_intersect(<span class="keywordtype">int</span> l);</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> unit_voro_test(<span class="keywordtype">int</span> i,<span class="keywordtype">int</span> j,<span class="keywordtype">int</span> k);</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;};</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base_8cc.html b/lib/voro++/html/v__base_8cc.html
new file mode 100644
index 000000000..be561ecd0
--- /dev/null
+++ b/lib/voro++/html/v__base_8cc.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_base.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the base Voronoi container class.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="v__base_8hh_source.html">v_base.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__base__wl_8cc_source.html">v_base_wl.cc</a>&quot;</code><br/>
+</div>
+<p><a href="v__base_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="v__base_8cc_source.html">v_base.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base_8cc_source.html b/lib/voro++/html/v__base_8cc_source.html
new file mode 100644
index 000000000..760fab514
--- /dev/null
+++ b/lib/voro++/html/v__base_8cc_source.html
@@ -0,0 +1,173 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_base.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="v__base_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file v_base.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the base Voronoi container class. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base_8hh.html" title="Header file for the base Voronoi container class.">v_base.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">/** This function is called during container construction. The routine scans</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * all of the worklists in the wl[] array. For a given worklist of blocks</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * labeled \f$w_1\f$ to \f$w_n\f$, it computes a sequence \f$r_0\f$ to</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * \f$r_n\f$ so that $r_i$ is the minimum distance to all the blocks</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * \f$w_{j}\f$ where \f$j&gt;i\f$ and all blocks outside the worklist. The values</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * of \f$r_n\f$ is calculated first, as the minimum distance to any block in</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * the shell surrounding the worklist. The \f$r_i\f$ are then computed in</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * reverse order by considering the distance to \f$w_{i+1}\f$. */</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc"> 23</a></span>&#160;<a class="code" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base::voro_base</a>(<span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">double</span> boxx_,<span class="keywordtype">double</span> boxy_,<span class="keywordtype">double</span> boxz_) :</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; nx(nx_), ny(ny_), nz(nz_), nxy(nx_*ny_), nxyz(nxy*nz_), boxx(boxx_), boxy(boxy_), boxz(boxz_),</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; xsp(1/boxx_), ysp(1/boxy_), zsp(1/boxz_), mrad(new double[wl_hgridcu*wl_seq_length]) {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b1=1&lt;&lt;21,b2=1&lt;&lt;22,b3=1&lt;&lt;24,b4=1&lt;&lt;25,b5=1&lt;&lt;27,b6=1&lt;&lt;28;</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> xstep=<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>/wl_fgrid,ystep=<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>/wl_fgrid,zstep=<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>/wl_fgrid;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordtype">int</span> i,j,k,lx,ly,lz,q;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> f,*e=<span class="keyword">const_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*<span class="keyword">&gt;</span> (<a class="code" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">wl</a>);</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">double</span> xlo,ylo,zlo,xhi,yhi,zhi,minr,*radp=<a class="code" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">for</span>(zlo=0,zhi=zstep,lz=0;lz&lt;wl_hgrid;zlo=zhi,zhi+=zstep,lz++) {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">for</span>(ylo=0,yhi=ystep,ly=0;ly&lt;wl_hgrid;ylo=yhi,yhi+=ystep,ly++) {</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">for</span>(xlo=0,xhi=xstep,lx=0;lx&lt;wl_hgrid;xlo=xhi,xhi+=xstep,lx++) {</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; minr=large_number;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">for</span>(q=e[0]+1;q&lt;wl_seq_length;q++) {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; f=e[q];</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; i=(f&amp;127)-64;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; j=(f&gt;&gt;7&amp;127)-64;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; k=(f&gt;&gt;14&amp;127)-64;</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">if</span>((f&amp;b2)==b2) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i-1,j,k);</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span>((f&amp;b1)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((f&amp;b1)==b1) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span>((f&amp;b4)==b4) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j-1,k);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span>((f&amp;b3)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((f&amp;b3)==b3) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span>((f&amp;b6)==b6) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k-1);</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span>((f&amp;b5)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((f&amp;b5)==b5) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; q--;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">while</span>(q&gt;0) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; radp[q]=minr;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; f=e[q];</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; i=(f&amp;127)-64;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; j=(f&gt;&gt;7&amp;127)-64;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; k=(f&gt;&gt;14&amp;127)-64;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; q--;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; *radp=minr;</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; e+=wl_seq_length;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; radp+=wl_seq_length;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; }</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;}</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">/** Computes the minimum distance from a subregion to a given block. If this distance</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * is smaller than the value of minr, then it passes</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * \param[in,out] minr a pointer to the current minimum distance. If the distance</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * computed in this function is smaller, then this distance is</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * set to the new one.</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * \param[out] (xlo,ylo,zlo) the lower coordinates of the subregion being</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * considered.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * \param[out] (xhi,yhi,zhi) the upper coordinates of the subregion being</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * considered.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * \param[in] (ti,tj,tk) the coordinates of the block. */</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keywordtype">void</span> voro_base::compute_minimum(<span class="keywordtype">double</span> &amp;minr,<span class="keywordtype">double</span> &amp;xlo,<span class="keywordtype">double</span> &amp;xhi,<span class="keywordtype">double</span> &amp;ylo,<span class="keywordtype">double</span> &amp;yhi,<span class="keywordtype">double</span> &amp;zlo,<span class="keywordtype">double</span> &amp;zhi,<span class="keywordtype">int</span> ti,<span class="keywordtype">int</span> tj,<span class="keywordtype">int</span> tk) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">double</span> radsq,temp;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span>(ti&gt;0) {temp=<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>*ti-xhi;radsq=temp*temp;}</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ti&lt;0) {temp=xlo-<a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>*(1+ti);radsq=temp*temp;}</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span> radsq=0;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(tj&gt;0) {temp=<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>*tj-yhi;radsq+=temp*temp;}</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tj&lt;0) {temp=ylo-<a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>*(1+tj);radsq+=temp*temp;}</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span>(tk&gt;0) {temp=<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>*tk-zhi;radsq+=temp*temp;}</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(tk&lt;0) {temp=zlo-<a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>*(1+tk);radsq+=temp*temp;}</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span>(radsq&lt;minr) minr=radsq;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">/** Checks to see whether &quot;%n&quot; appears in a format sequence to determine</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * whether neighbor information is required or not.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * \param[in] format the format string to check.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * \return True if a &quot;%n&quot; is found, false otherwise. */</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88"> 100</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">voro_base::contains_neighbor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *format) {</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">char</span> *fmp=(<span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(format));</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="comment">// Check to see if &quot;%n&quot; appears in the format sequence</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">while</span>(*fmp!=0) {</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">if</span>(*fmp==<span class="charliteral">&#39;%&#39;</span>) {</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; fmp++;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(*fmp==<span class="charliteral">&#39;n&#39;</span>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(*fmp==0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; fmp++;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;}</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base__wl_8cc.html" title="The table of block worklists that are used during the cell computation, which is part of the voro_bas...">v_base_wl.cc</a>&quot;</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base_8hh.html b/lib/voro++/html/v__base_8hh.html
new file mode 100644
index 000000000..aaf58a577
--- /dev/null
+++ b/lib/voro++/html/v__base_8hh.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">v_base.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the base Voronoi container class.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="worklist_8hh_source.html">worklist.hh</a>&quot;</code><br/>
+</div>
+<p><a href="v__base_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Class containing data structures common across all particle container classes. <a href="classvoro_1_1voro__base.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="v__base_8hh_source.html">v_base.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base_8hh_source.html b/lib/voro++/html/v__base_8hh_source.html
new file mode 100644
index 000000000..12037d388
--- /dev/null
+++ b/lib/voro++/html/v__base_8hh_source.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_base.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="v__base_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file v_base.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the base Voronoi container class. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_V_BASE_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_V_BASE_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="worklist_8hh.html" title="Header file for setting constants used in the block worklists that are used during cell computation...">worklist.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">/** \brief Class containing data structures common across all particle container classes.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * This class contains constants and data structures that are common across all</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * particle container classes. It contains constants setting the size of the</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * underlying subgrid of blocks that forms the basis of the Voronoi cell</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * computations. It also constructs bound tables that are used in the Voronoi</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * cell computation, and contains a number of routines that are common across</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * all container classes. */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html"> 25</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a> {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> /** The number of blocks in the x direction. */</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594"> 28</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#a8aed82f1468c9bb7e2a779ea53a22594">nx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> /** The number of blocks in the y direction. */</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb"> 30</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#a83da5297e87173733d92d9024cebbbdb">ny</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> /** The number of blocks in the z direction. */</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f"> 32</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#aae461fbdf42c8975fb43d963d002298f">nz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> /** A constant, set to the value of nx multiplied by ny, which</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * is used in the routines that step through blocks in</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * sequence. */</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729"> 36</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#aad5f41101fce781214d2f0b69487a729">nxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> /** A constant, set to the value of nx*ny*nz, which is used in</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * the routines that step through blocks in sequence. */</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4"> 39</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#a4309aca04ab561bd3b3921e9b73016a4">nxyz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> /** The size of a computational block in the x direction. */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37"> 41</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#ac8986e621bd70cf5113e231cb8694d37">boxx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> /** The size of a computational block in the y direction. */</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1"> 43</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#a3ad6b0eefbdff03e92d30f5035defdd1">boxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> /** The size of a computational block in the z direction. */</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0"> 45</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#afd53f018c9641c8b8066e9429c88a4e0">boxz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> /** The inverse box length in the x direction. */</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0"> 47</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#ad708515772990e5b2fa4e93c330f7aa0">xsp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> /** The inverse box length in the y direction. */</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de"> 49</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#a300808cb0ccab85eb61dd0b25a5076de">ysp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> /** The inverse box length in the z direction. */</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278"> 51</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__base.html#ac51553412117b42816210e54805ad278">zsp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> /** An array to hold the minimum distances associated with the</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * worklists. This array is initialized during container</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * construction, by the initialize_radii() routine. */</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775"> 55</a></span>&#160; <span class="keywordtype">double</span> *<a class="code" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> /** The pre-computed block worklists. */</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445"> 57</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#abc825bfa4bdb4b85d50058f016457445">wl</a>[wl_seq_length*wl_hgridcu];</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__base.html#a95d9ee6c1610afccf265198ae63b5e88">contains_neighbor</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* format);</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a>(<span class="keywordtype">int</span> nx_,<span class="keywordtype">int</span> ny_,<span class="keywordtype">int</span> nz_,<span class="keywordtype">double</span> boxx_,<span class="keywordtype">double</span> boxy_,<span class="keywordtype">double</span> boxz_);</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; ~<a class="code" href="classvoro_1_1voro__base.html" title="Class containing data structures common across all particle container classes.">voro_base</a>() {<span class="keyword">delete</span> [] <a class="code" href="classvoro_1_1voro__base.html#ab59b5feedb35ea611b05d65df1216775">mrad</a>;}</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> /** A custom int function that returns consistent stepping</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * for negative numbers, so that (-1.5, -0.5, 0.5, 1.5) maps</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * to (-2,-1,0,1).</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * \param[in] a the number to consider.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * \return The value of the custom int operation. */</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c"> 67</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#a37fd9fdedc5d415e55f3bbb22a786d8c">step_int</a>(<span class="keywordtype">double</span> a) {<span class="keywordflow">return</span> a&lt;0?int(a)-1:int(a);}<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> /** A custom modulo function that returns consistent stepping</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * for negative numbers. For example, (-2,-1,0,1,2) step_mod 2</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * is (0,1,0,1,0).</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \param[in] (a,b) the input integers.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * \return The value of a modulo b, consistent for negative</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * numbers. */</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135"> 74</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a>(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {<span class="keywordflow">return</span> a&gt;=0?a%b:b-1-(b-1-a)%b;}<span class="comment"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> /** A custom integer division function that returns consistent</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * stepping for negative numbers. For example, (-2,-1,0,1,2)</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * step_div 2 is (-1,-1,0,0,1).</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * \param[in] (a,b) the input integers.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * \return The value of a div b, consistent for negative</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * numbers. */</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7"> 81</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a>(<span class="keywordtype">int</span> a,<span class="keywordtype">int</span> b) {<span class="keywordflow">return</span> a&gt;=0?a/b:-1+(a+1)/b;}</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">void</span> compute_minimum(<span class="keywordtype">double</span> &amp;minr,<span class="keywordtype">double</span> &amp;xlo,<span class="keywordtype">double</span> &amp;xhi,<span class="keywordtype">double</span> &amp;ylo,<span class="keywordtype">double</span> &amp;yhi,<span class="keywordtype">double</span> &amp;zlo,<span class="keywordtype">double</span> &amp;zhi,<span class="keywordtype">int</span> ti,<span class="keywordtype">int</span> tj,<span class="keywordtype">int</span> tk);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;};</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base__wl_8cc.html b/lib/voro++/html/v__base__wl_8cc.html
new file mode 100644
index 000000000..370467601
--- /dev/null
+++ b/lib/voro++/html/v__base__wl_8cc.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base_wl.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_base_wl.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>The table of block worklists that are used during the cell computation, which is part of the voro_base class.
+<a href="#details">More...</a></p>
+
+<p><a href="v__base__wl_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This file is automatically generated by worklist_gen.pl and it is not intended to be edited by hand. </p>
+
+<p>Definition in file <a class="el" href="v__base__wl_8cc_source.html">v_base_wl.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__base__wl_8cc_source.html b/lib/voro++/html/v__base__wl_8cc_source.html
new file mode 100644
index 000000000..cfa62e694
--- /dev/null
+++ b/lib/voro++/html/v__base__wl_8cc_source.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_base_wl.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_base_wl.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="v__base__wl_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file v_base_wl.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief The table of block worklists that are used during the cell</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * computation, which is part of the voro_base class.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * This file is automatically generated by worklist_gen.pl and it is not</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * intended to be edited by hand. */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> voro_base::wl[wl_seq_length*wl_hgridcu]={</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; 7,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x10fe0bf,0x11020bf,0x11020c0,0x10fe0c0,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x30fdf3f,0x3101f3f,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x12fe0c1,0x13020c1,0x91060c0,0x91060bf,0x8306041,0x8305fc1,0x3301f41,0x32fdf41,0x182f9fc1,0x182fa041,0x190fa0c0,0x190fa0bf,0x16fe0be,0x17020be,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x3701f3e,0x36fdf3e,0x186f9fbe,0x186fa03e,0x1b0f9f3f,0x1b0f9f40,0x93060c1,0x192fa0c1,0x97060be,0xb305f41,0x1b2f9f41,0x196fa0be,0xb705f3e,0x1b6f9f3e,</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0xfdfc1,0x101fc1,0x102041,0xfe041,0x10fe0c0,0x11020c0,0x8106040,0x8105fc0,0x8105fbf,0x810603f,0x11020bf,0x10fe0bf,0x180fa040,0x180f9fc0,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x180f9fbf,0x180fa03f,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x8105fc1,0x8106041,0x11020c1,0x10fe0c1,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x91060c0,0x91060bf,0x190fa0c0,0x190fa0bf,0xb105f40,0xb105f3f,0x8705fbe,0x870603e,0x97020be,0x16fe0be,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x1b6f9fbe,0x196fa03e,0x93060c1,0xb305f41,0x192fa0c1,0x1b2f9f41,0x1b2fdfc2,0xb301fc2,0x9302042,0x192fe042,</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0xfdfbf,0x101fbf,0x10203f,0xfe03f,0xfe041,0x102041,0x101fc1,0xfdfc1,0x8105fc0,0x8106040,0x11020c0,0x10fe0c0,0x10fe0bf,0x11020bf,0x810603f,0x8105fbf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x8105fc1,0x8106041,0x11020c1,0x10fe0c1,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x91060c0,0x91060bf,0xb105f40,0xb105f3f,0x190fa0c0,0x190fa0bf,0x93060c1,0x1b0f9f40,0x1b0f9f3f,0xb305f41,0x192fa0c1,0x16fe0be,0x17020be,0x970603e,0x8705fbe,0xb701f3e,0x36fdf3e,0x1b2f9f41,0x1b2fdfc2,0x192fe042,0x9302042,0xb301fc2,0x1b6f9fbe,0x196fa03e,</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0xfdfbf,0x101fbf,0x10203f,0xfe03f,0xfe041,0x102041,0x101fc1,0xfdfc1,0x8105fc0,0x8106040,0x11020c0,0x10fe0c0,0x10fe0bf,0x11020bf,0x810603f,0x8105fbf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x10fe0c1,0x11020c1,0x8106041,0x8105fc1,0x3101f3f,0x30fdf3f,0x180f9fbf,0x180fa03f,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x91060c0,0x91060bf,0x70203e,0x701fbe,0x6fdfbe,0x6fe03e,0x190fa0c0,0xb105f40,0xb105f3f,0x93060c1,0x190fa0bf,0x192fa0c1,0x1b0f9f40,0x1b0f9f3f,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f41,0x16fe0be,0x17020be,0x970603e,0x8705fbe,0xb701f3e,0x36fdf3e,0x1b6f9fbe,0x196fa03e,</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0xfe0bf,0x1020bf,0x1020c0,0xfe0c0,0x2fe041,0x302041,0x8106040,0x810603f,0x8105fbf,0x8105fc0,0x301fc1,0x2fdfc1,0x180fa040,0x180fa03f,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x180f9fbf,0x180f9fc0,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x81060bf,0x81060c0,0x3020c1,0x2fe0c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x8306041,0x8305fc1,0x182fa041,0x182f9fc1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0xb301f41,0x32fdf41,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x1b6f9f3f,0x1b2f9f40,0x93060c1,0x97060be,0x192fa0c1,0x196fa0be,0x196fe13f,0x970213f,0x9302140,0x192fe140,</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; 9,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0xfdfbf,0x101fbf,0x102041,0xfe041,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0xfdfc1,0x101fc1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x10fe0c1,0x11020c1,0x70203e,0x6fe03e,0x6fdfbe,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x8106041,0x91060c0,0x91060bf,0x8305fc1,0x180fa041,0x190fa0c0,0x190fa0bf,0x180f9fc1,0x30fdf41,0x3301f41,0x17020be,0x16fe0be,0x93060c1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x192fa0c1,0x1b0f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0x1b6fdf3e,0xb701f3e,0x97060be,0xb305f41,0x1b2f9f41,0x1b2fdfc2,0x192fe042,0xa302042,</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; 11,0xfe040,0x101fc0,0xfdfc0,0xfe03f,0x10203f,0x101fbf,0xfdfbf,0xfe041,0x102041,0x101fc1,0xfdfc1,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0x8106040,0x8105fc0,0x810603f,0x8105fbf,0x11020c1,0x10fe0c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x30fdf40,0x3101f40,0x8106041,0x8105fc1,0x3101f3f,0x30fdf3f,0x91060c0,0x91060bf,0x180fa041,0x180f9fc1,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x190fa0c0,0x190fa0bf,0x30fdf41,0x3101f41,0x93060c1,0x192fa0c1,0xb105f40,0xb105f3f,0x17020be,0x16fe0be,0x970603e,0x8705fbe,0x1b0f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f41,0x1b6fdf3e,0xb701f3e,</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; 11,0xfe040,0x101fc0,0xfdfc0,0xfe03f,0x10203f,0x101fbf,0xfdfbf,0xfe041,0x102041,0x101fc1,0xfdfc1,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0x8106040,0x8105fc0,0x11020c1,0x10fe0c1,0x810603f,0x8105fbf,0x180fa040,0x180f9fc0,0x8106041,0x8105fc1,0x3101f40,0x180fa03f,0x180f9fbf,0x30fdf40,0x180fa041,0x180f9fc1,0x91060c0,0x3101f3f,0x30fdf3f,0x30fdf41,0x3101f41,0x91060bf,0x190fa0c0,0x91060c1,0x190fa0bf,0x186fe03e,0x70203e,0x3701fbe,0x1b6fdfbe,0x190fa0c1,0x182fe042,0xb105f40,0xb105f3f,0x302042,0x3301fc2,0x1b2fdfc2,0x1b0f9f40,0x1b6f9f3f,0xb105f41,0x17020be,0x196fe0be,0x970603e,0xb705fbe,0x1b2f9f41,0x192fe0c2,0x13020c2,0x9306042,0xb305fc2,</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0xfdfbf,0x101fbf,0x101fc0,0xfdfc0,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x810603f,0x8106040,0x302041,0x2fe041,0x2fdfc1,0x301fc1,0x8105fc0,0x8105fbf,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x81060bf,0x81060c0,0x3020c1,0x2fe0c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x8306041,0x8305fc1,0x870603e,0x8705fbe,0x182fa041,0x182f9fc1,0x93060c1,0x186fa03e,0x186f9fbe,0x97060be,0x192fa0c1,0x32fdf41,0x3301f41,0xb305f40,0xb105f3f,0xb701f3e,0x36fdf3e,0x196fa0be,0x196fe13f,0x192fe140,0x9302140,0x970213f,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; 11,0xfe040,0x10203f,0xfe03f,0xfdfc0,0x101fc0,0x101fbf,0xfdfbf,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x3020c1,0x2fe0c1,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x6fe03e,0x70203e,0x81060c0,0x81060bf,0x701fbe,0x6fdfbe,0x8306041,0x8305fc1,0x180fa0c0,0x180fa0bf,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x182fa041,0x182f9fc1,0x6fe0be,0x7020be,0x93060c1,0x192fa0c1,0x870603e,0x8705fbe,0x3301f41,0x32fdf41,0xb305f40,0xb105f3f,0x186fa03e,0x186f9fbe,0x1b0f9f3f,0x1b2f9f40,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa0be,0x1b6fdf3e,0xb701f3e,</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; 15,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfdfbf,0x101fbf,0x102041,0xfe041,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0xfdfc1,0x101fc1,0x8106040,0x1020c1,0xfe0c1,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x8106041,0x81060c0,0x81060bf,0x8105fc1,0x180fa041,0x180fa0c0,0x180fa0bf,0x6fe03e,0x70203e,0x3101f40,0x30fdf40,0x180f9fc1,0x30fdf3f,0x3101f3f,0x3701fbe,0x36fdfbe,0x93060c1,0x192fa0c1,0x6fe0be,0x7020be,0x3101f41,0x30fdf41,0xb305f40,0xb105f3f,0x970603e,0xb705fbe,0x196fa03e,0x186f9fbe,0x1b2f9f40,0x1b6f9f3f,0x192fe042,0x9302042,0xb301fc2,0x1b2fdfc2,0x192fe140,0x9302140,0x970213f,0x196fe13f,</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; 15,0xfe040,0xfdfc0,0x101fc0,0x10203f,0xfe03f,0xfdfbf,0x101fbf,0x102041,0xfe041,0xfdfc1,0x101fc1,0x1020c0,0xfe0c0,0xfe0bf,0x1020bf,0x1020c1,0xfe0c1,0x8106040,0x8105fc0,0x810603f,0x8105fbf,0x180fa040,0x180f9fc0,0x8106041,0x8105fc1,0x81060c0,0x180fa03f,0x180f9fbf,0x180fa041,0x180f9fc1,0x180fa0c0,0x81060bf,0x91060c1,0x3101f40,0x30fdf40,0x30fdf3f,0x180fa0bf,0x190fa0c1,0x3101f3f,0x3101f41,0x30fdf41,0x186fe03e,0x70203e,0x3701fbe,0x1b6fdfbe,0x186fe0be,0x7020be,0x8302042,0x182fe042,0x1b2fdfc2,0xb301fc2,0xb105f40,0xb705f3f,0xb305f41,0x1b2f9f40,0x1b6f9f3f,0x192fe140,0x9302140,0x93020c2,0x192fe0c2,0x196fe13f,0x970213f,0xa70603e,</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0xfdfbf,0x101fbf,0x101fc0,0xfdfc0,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x810603f,0x8106040,0x302041,0x2fe041,0x2fdfc1,0x301fc1,0x8105fc0,0x8105fbf,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x2fe0c1,0x3020c1,0x81060c0,0x81060bf,0x701fbe,0x6fdfbe,0x180f9fbf,0x180f9fc0,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x8306041,0x8305fc1,0x3101f40,0x3101f3f,0x30fdf3f,0x30fdf40,0x182fa041,0x870603e,0x8705fbe,0x93060c1,0x182f9fc1,0x192fa0c1,0x186fa03e,0x186f9fbe,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa0be,0x32fdf41,0x3301f41,0xb305f40,0xb105f3f,0xb701f3e,0x36fdf3e,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; 11,0xfe040,0x10203f,0xfe03f,0xfdfc0,0x101fc0,0x101fbf,0xfdfbf,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8106040,0x810603f,0x3020c1,0x2fe0c1,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x81060c0,0x81060bf,0x70203e,0x180f9fc0,0x180f9fbf,0x6fe03e,0x180fa0c0,0x180fa0bf,0x8306041,0x701fbe,0x6fdfbe,0x6fe0be,0x7020be,0x8305fc1,0x182fa041,0x83060c1,0x182f9fc1,0x1b0fdf40,0x3101f40,0x3701f3f,0x1b6fdf3f,0x182fa0c1,0x190fe140,0x870603e,0x8705fbe,0x1102140,0x170213f,0x196fe13f,0x186fa03e,0x1b6f9fbe,0x87060be,0x3301f41,0x1b2fdf41,0xb305f40,0xb705f3f,0x196fa0be,0x192fe141,0x1302141,0x9306140,0x970613f,</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; 15,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfdfbf,0x101fbf,0x1020c0,0xfe0c0,0xfe0bf,0x1020bf,0x102041,0xfe041,0xfdfc1,0x101fc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x81060c0,0x81060bf,0x8106041,0x180f9fc0,0x180f9fbf,0x180fa0c0,0x180fa0bf,0x180fa041,0x8105fc1,0x83060c1,0x70203e,0x6fe03e,0x6fdfbe,0x180f9fc1,0x182fa0c1,0x701fbe,0x7020be,0x6fe0be,0x1b0fdf40,0x3101f40,0x3701f3f,0x1b6fdf3f,0x1b0fdf41,0x3101f41,0x9102140,0x190fe140,0x196fe13f,0x970213f,0x870603e,0xb705fbe,0x97060be,0x196fa03e,0x1b6f9fbe,0x192fe042,0x9302042,0x9302141,0x192fe141,0x1b2fdfc2,0xb301fc2,0xb505f40,</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; 17,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfe041,0x102041,0x1020c0,0xfe0c0,0xfdfbf,0x101fbf,0x1020bf,0xfe0bf,0xfdfc1,0x101fc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8106041,0x81060c0,0x180fa040,0x180fa03f,0x180f9fc0,0x8105fbf,0x81060bf,0x8105fc1,0x180fa041,0x180fa0c0,0x180f9fbf,0x81060c1,0x180fa0bf,0x180f9fc1,0x180fa0c1,0x186fe03e,0x70203e,0x3101f40,0x1b0fdf40,0x1b0fdf3f,0x3101f3f,0x3701fbe,0x1b6fdfbe,0x186fe0be,0x7020be,0x9102140,0x190fe140,0x182fe042,0x8302042,0x3101f41,0x1b0fdf41,0x1b2fdfc2,0xb301fc2,0x83020c2,0x182fe0c2,0x196fe13f,0x970213f,0x9302141,0x192fe141,0x970603e,0xb305f40,0xb105f3f,0xb705fbe,</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x105fbf,0x10603f,0x106040,0x105fc0,0x301fc1,0x302041,0x11020c0,0x11020bf,0x10fe0bf,0x10fe0c0,0x2fe041,0x2fdfc1,0x3101f40,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x30fdf3f,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x11060bf,0x11060c0,0x306041,0x305fc1,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x13020c1,0x12fe0c1,0x3301f41,0x32fdf41,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0x192fa041,0x182f9fc1,0x3701f3e,0x36fdf3e,0x186f9fbe,0x196fa03e,0x1b6f9f3f,0x1b2f9f40,0x93060c1,0x97060be,0xb305f41,0xb705f3e,0xb709fbf,0x970a03f,0x930a040,0xb309fc0,</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; 9,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0xfdfbf,0xfe03f,0x102041,0x101fc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0xfdfc1,0xfe041,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x8105fc1,0x8106041,0x70203e,0x701fbe,0x6fdfbe,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x11020c1,0x91060c0,0x91060bf,0x12fe0c1,0x3101f41,0xb105f40,0xb105f3f,0x30fdf41,0x180f9fc1,0x182fa041,0x870603e,0x8705fbe,0x93060c1,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0xb305f41,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x1b6f9fbe,0x196fa03e,0x97060be,0x192fa0c1,0x1b2f9f41,0x1b2fdfc2,0xb301fc2,0x11302042,</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0x101fbf,0x10203f,0xfe03f,0xfdfbf,0x101fc1,0x102041,0xfe041,0xfdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x11020c0,0x10fe0c0,0x11020bf,0x10fe0bf,0x8106041,0x8105fc1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x180f9fc0,0x180fa040,0x11020c1,0x10fe0c1,0x180fa03f,0x180f9fbf,0x91060c0,0x91060bf,0x3101f41,0x30fdf41,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0xb105f40,0xb105f3f,0x180f9fc1,0x180fa041,0x93060c1,0xb305f41,0x190fa0c0,0x190fa0bf,0x870603e,0x8705fbe,0x97020be,0x16fe0be,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x192fa0c1,0x192fe042,0x9302042,0xb301fc2,0x1b2fdfc2,0x1b2f9f41,0x1b6f9fbe,0x196fa03e,</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0x101fbf,0x10203f,0xfe03f,0xfdfbf,0x101fc1,0x102041,0xfe041,0xfdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x11020c0,0x10fe0c0,0x8106041,0x8105fc1,0x11020bf,0x10fe0bf,0x3101f40,0x30fdf40,0x11020c1,0x10fe0c1,0x180fa040,0x3101f3f,0x30fdf3f,0x180f9fc0,0x3101f41,0x30fdf41,0x91060c0,0x180fa03f,0x180f9fbf,0x180f9fc1,0x180fa041,0x91060bf,0xb105f40,0x91060c1,0xb105f3f,0x3701fbe,0x70203e,0x186fe03e,0x1b6fdfbe,0xb105f41,0x3301fc2,0x190fa0c0,0x190fa0bf,0x302042,0x182fe042,0x1b2fdfc2,0x1b0f9f40,0x1b6f9f3f,0x190fa0c1,0x870603e,0xb705fbe,0x97020be,0x196fe0be,0x1b2f9f41,0xb305fc2,0x8306042,0x93020c2,0x192fe0c2,</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; 9,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0xfe0bf,0xfe0c0,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x81060bf,0x81060c0,0x3101f40,0x3101f3f,0x30fdf3f,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x3020c1,0x8306041,0x8305fc1,0x12fe0c1,0x7020be,0x870603e,0x8705fbe,0x6fe0be,0x180fa0bf,0x190fa0c0,0xb105f40,0xb105f3f,0x93060c1,0x3301f41,0x32fdf41,0x182f9fc1,0x182fa041,0x97060be,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x1b6f9f3f,0x1b2f9f40,0xb305f41,0x192fa0c1,0x196fa0be,0x196fe13f,0x970213f,0x11302140,</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; 7,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x302041,0x1020c0,0x8106040,0x810603f,0x1020bf,0xfe0c0,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0xfe0bf,0x2fdfc1,0x3020c1,0x8306041,0x81060c0,0x81060bf,0x2fe0c1,0x8305fc1,0x3101f40,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x30fdf40,0x30fdf3f,0x6fdfbe,0x180f9fbf,0x180fa0c0,0x182fa041,0x93060c1,0x870603e,0x7020be,0x6fe0be,0x180fa0bf,0x182f9fc1,0x32fdf41,0x3301f41,0xb105f40,0xb105f3f,0x8705fbe,0x97060be,0x192fa0c1,0xb305f41,0xb701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x1b6f9fbe,0x196fa03e,0x196fe13f,0x9302140,0x970213f,0x192fe140,</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x11020c0,0x8106040,0x8105fc0,0x10fe0c0,0x11020bf,0x810603f,0x8105fbf,0x10fe0bf,0x11020c1,0x8106041,0x8105fc1,0x10fe0c1,0x91060c0,0x91060bf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x93060c1,0x3101f41,0x30fdf41,0x180f9fc1,0x180fa041,0x190fa0c0,0x190fa0bf,0xb105f40,0xb105f3f,0x8705fbe,0x870603e,0x17020be,0x16fe0be,0x192fa0c1,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0x97060be,0xb701f3e,0x1b6fdf3e,</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x11020c0,0x8106040,0x8105fc0,0x10fe0c0,0x11020bf,0x810603f,0x8105fbf,0x10fe0bf,0x11020c1,0x8106041,0x8105fc1,0x10fe0c1,0x91060c0,0x91060bf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x3101f41,0x91060c1,0x180fa041,0x180f9fc1,0x30fdf41,0xb105f40,0x70203e,0x3701fbe,0x186fe03e,0x1b6fdfbe,0x190fa0c0,0x190fa0bf,0x190fa0c1,0xb105f3f,0xb105f41,0x3301fc2,0x302042,0x182fe042,0x1b2fdfc2,0x1b0f9f40,0x17020be,0x970603e,0xb705fbe,0x196fe0be,0x1b6f9f3f,0x1b2f9f41,0x13020c2,0x9306042,0xb305fc2,0x192fe0c2,</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0x101fbf,0x101fc0,0xfdfc0,0xfdfbf,0x1020bf,0x1020c0,0xfe0c0,0xfe0bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0x302041,0x2fe041,0x301fc1,0x2fdfc1,0x81060c0,0x81060bf,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x180fa03f,0x180fa040,0x3020c1,0x2fe0c1,0x180f9fc0,0x180f9fbf,0x8306041,0x8305fc1,0x7020be,0x6fe0be,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x870603e,0x8705fbe,0x180fa0bf,0x180fa0c0,0x93060c1,0x97060be,0x182fa041,0x182f9fc1,0xb105f40,0xb105f3f,0xb301f41,0x32fdf41,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x192fa0c1,0x192fe140,0x9302140,0x970213f,0x196fe13f,0x196fa0be,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x302041,0x8106040,0x810603f,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0x2fdfc1,0x3020c1,0x81060c0,0x81060bf,0x2fe0c1,0x8306041,0x8305fc1,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x93060c1,0x7020be,0x6fe0be,0x180fa0bf,0x180fa0c0,0x182fa041,0x182f9fc1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x3301f41,0x32fdf41,0x192fa0c1,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa03e,0x186f9fbe,0x1b0f9f3f,0x1b2f9f40,0xb305f41,0xb701f3e,0x1b6fdf3e,</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; 15,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x101fbf,0xfdfbf,0x102041,0x1020c0,0xfe0c0,0xfe041,0x101fc1,0xfdfc1,0x1020bf,0xfe0bf,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x1020c1,0xfe0c1,0x8106041,0x81060c0,0x81060bf,0x8105fc1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x93060c1,0x70203e,0x6fe03e,0x3101f40,0x1b0fdf40,0x3101f3f,0x3701fbe,0x6fdfbe,0x1b6fdf3f,0x180fa041,0x180fa0c0,0x180fa0bf,0x180f9fc1,0x1b0fdf41,0x3101f41,0x7020be,0x6fe0be,0x870603e,0x8705fbe,0xb105f40,0xb705f3f,0x192fa0c1,0x192fe140,0x9302140,0x970213f,0x97060be,0x9302042,0x192fe042,0xb301fc2,0xb305f41,0x1b2fdfc2,0x196fe13f,0x196fa03e,0x1b6f9fbe,</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; 14,0xfe040,0x101fc0,0xfdfc0,0x10203f,0xfe03f,0x101fbf,0xfdfbf,0x102041,0xfe041,0x101fc1,0xfdfc1,0x1020c0,0xfe0c0,0x1020bf,0x8106040,0xfe0bf,0x8105fc0,0x1020c1,0xfe0c1,0x810603f,0x8105fbf,0x8106041,0x8105fc1,0x81060c0,0x81060bf,0x91060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x180fa041,0x180f9fc1,0x1b0fdf40,0x3101f40,0x3101f3f,0x1b0fdf3f,0x180fa0c0,0x190fa0bf,0x186fe03e,0x70203e,0x3701fbe,0x3101f41,0x1b0fdf41,0x1b6fdfbe,0x190fa0c1,0x182fe042,0x302042,0xb105f40,0xb105f3f,0x3301fc2,0x1b2fdfc2,0x7020be,0x196fe0be,0x970603e,0xb705fbe,0xb105f41,0x9302140,0x192fe140,0x13020c2,0x192fe0c2,0x9306042,0xb305fc2,0x1170213f,</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0x101fbf,0x101fc0,0xfdfc0,0xfdfbf,0x1020bf,0x1020c0,0xfe0c0,0xfe0bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0x302041,0x2fe041,0x81060c0,0x81060bf,0x301fc1,0x2fdfc1,0x70203e,0x6fe03e,0x3020c1,0x2fe0c1,0x180fa040,0x701fbe,0x6fdfbe,0x180fa03f,0x7020be,0x6fe0be,0x8306041,0x180f9fc0,0x180f9fbf,0x180fa0bf,0x180fa0c0,0x8305fc1,0x870603e,0x83060c1,0x8705fbe,0x3701f3f,0x3101f40,0x1b0fdf40,0x1b6fdf3f,0x87060be,0x170213f,0x182fa041,0x182f9fc1,0x1102140,0x190fe140,0x196fe13f,0x186fa03e,0x1b6f9fbe,0x182fa0c1,0xb105f40,0xb705f3f,0xb301f41,0x1b2fdf41,0x196fa0be,0x970613f,0x9106140,0x9302141,0x192fe141,</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x302041,0x8106040,0x810603f,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0x2fdfc1,0x3020c1,0x81060c0,0x81060bf,0x2fe0c1,0x8306041,0x8305fc1,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x7020be,0x83060c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x870603e,0x3101f40,0x3701f3f,0x1b0fdf40,0x1b6fdf3f,0x182fa041,0x182f9fc1,0x182fa0c1,0x8705fbe,0x87060be,0x170213f,0x1102140,0x190fe140,0x196fe13f,0x186fa03e,0x3301f41,0xb305f40,0xb705f3f,0x1b2fdf41,0x1b6f9fbe,0x196fa0be,0x1302141,0x9306140,0x970613f,0x192fe141,</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; 14,0xfe040,0x10203f,0xfe03f,0x101fc0,0xfdfc0,0x101fbf,0xfdfbf,0x1020c0,0xfe0c0,0x1020bf,0xfe0bf,0x102041,0xfe041,0x101fc1,0x8106040,0xfdfc1,0x810603f,0x1020c1,0xfe0c1,0x8105fc0,0x8105fbf,0x81060c0,0x81060bf,0x8106041,0x8105fc1,0x83060c1,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x180fa0c0,0x180fa0bf,0x186fe03e,0x70203e,0x701fbe,0x186fdfbe,0x180fa041,0x182f9fc1,0x1b0fdf40,0x3101f40,0x3701f3f,0x7020be,0x186fe0be,0x1b6fdf3f,0x182fa0c1,0x190fe140,0x1102140,0x870603e,0x8705fbe,0x170213f,0x196fe13f,0x3101f41,0x1b2fdf41,0xb305f40,0xb705f3f,0x87060be,0x9302042,0x192fe042,0x1302141,0x192fe141,0x9306140,0x970613f,0x13301fc2,</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; 17,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x1020c0,0x102041,0xfe041,0xfe0c0,0x101fbf,0xfdfbf,0x1020bf,0xfe0bf,0x101fc1,0xfdfc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8106041,0x81060c0,0x8105fbf,0x81060bf,0x8105fc1,0x81060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180fa0c0,0x180fa041,0x180f9fbf,0x180fa0bf,0x180f9fc1,0x180fa0c1,0x70203e,0x186fe03e,0x3101f40,0x1b0fdf40,0x3101f3f,0x3701fbe,0x186fdfbe,0x1b6fdf3f,0x3101f41,0x1b0fdf41,0x8302042,0x182fe042,0x9102140,0x7020be,0x186fe0be,0x190fe140,0x970213f,0x196fe13f,0x9102141,0xb301fc2,0x1b2fdfc2,0x93020c2,0x182fe0c2,0x192fe141,0x970603e,0xb305f40,0xb105f3f,0xb705fbe,</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfdfbf,0xfe03f,0xfe040,0xfdfc0,0x105fc0,0x106040,0x10603f,0x105fbf,0x11020bf,0x11020c0,0x302041,0x301fc1,0x2fdfc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x11060bf,0x11060c0,0x306041,0x305fc1,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x13020c1,0x12fe0c1,0x17020be,0x16fe0be,0x3301f41,0x32fdf41,0x93060c1,0x3701f3e,0x36fdf3e,0x97060be,0xb305f41,0x182f9fc1,0x182fa041,0x192fa0c0,0x190fa0bf,0x196fa03e,0x186f9fbe,0xb705f3e,0xb709fbf,0xb309fc0,0x930a040,0x970a03f,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; 11,0x101fc0,0x10203f,0x101fbf,0xfdfc0,0xfe040,0xfe03f,0xfdfbf,0x105fc0,0x106040,0x10603f,0x105fbf,0x301fc1,0x302041,0x2fe041,0x2fdfc1,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x306041,0x305fc1,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x701fbe,0x70203e,0x11060c0,0x11060bf,0x6fe03e,0x6fdfbe,0x13020c1,0x12fe0c1,0x3105f40,0x3105f3f,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x3301f41,0x32fdf41,0x705fbe,0x70603e,0x93060c1,0xb305f41,0x17020be,0x16fe0be,0x182fa041,0x182f9fc1,0x192fa0c0,0x190fa0bf,0x3701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb705f3e,0x1b6f9fbe,0x196fa03e,</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; 15,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0xfdfbf,0xfe03f,0x102041,0x101fc1,0x105fc0,0x106040,0x10603f,0x105fbf,0xfdfc1,0xfe041,0x11020c0,0x106041,0x105fc1,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x11020c1,0x11060c0,0x11060bf,0x10fe0c1,0x3101f41,0x3105f40,0x3105f3f,0x701fbe,0x70203e,0x180fa040,0x180f9fc0,0x30fdf41,0x180f9fbf,0x180fa03f,0x186fe03e,0x186fdfbe,0x93060c1,0xb305f41,0x705fbe,0x70603e,0x180fa041,0x180f9fc1,0x192fa0c0,0x190fa0bf,0x97020be,0x196fe0be,0xb701f3e,0x36fdf3e,0x1b2f9f40,0x1b6f9f3f,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0xb309fc0,0x930a040,0x970a03f,0xb709fbf,</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; 15,0x101fc0,0xfdfc0,0xfe040,0x10203f,0x101fbf,0xfdfbf,0xfe03f,0x102041,0x101fc1,0xfdfc1,0xfe041,0x106040,0x105fc0,0x105fbf,0x10603f,0x106041,0x105fc1,0x11020c0,0x10fe0c0,0x11020bf,0x10fe0bf,0x3101f40,0x30fdf40,0x11020c1,0x10fe0c1,0x11060c0,0x3101f3f,0x30fdf3f,0x3101f41,0x30fdf41,0x3105f40,0x11060bf,0x91060c1,0x180fa040,0x180f9fc0,0x180f9fbf,0x3105f3f,0xb105f41,0x180fa03f,0x180fa041,0x180f9fc1,0x3701fbe,0x70203e,0x186fe03e,0x1b6fdfbe,0x3705fbe,0x70603e,0x1302042,0x3301fc2,0x1b2fdfc2,0x192fe042,0x190fa0c0,0x196fa0bf,0x192fa0c1,0x1b2f9f40,0x1b6f9f3f,0xb309fc0,0x930a040,0x9306042,0xb305fc2,0xb709fbf,0x970a03f,0x117020be,</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfe03f,0xfe040,0xfdfc0,0xfdfbf,0x10603f,0x106040,0x105fc0,0x105fbf,0x11020bf,0x11020c0,0x10fe0c0,0x10fe0bf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x11060c0,0x11060bf,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x3101f3f,0x3101f40,0x306041,0x305fc1,0x30fdf40,0x30fdf3f,0x13020c1,0x12fe0c1,0x70603e,0x705fbe,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x17020be,0x16fe0be,0x3105f3f,0x3105f40,0x93060c1,0x97060be,0x3301f41,0x32fdf41,0x190fa0c0,0x190fa0bf,0x192fa041,0x182f9fc1,0x3701f3e,0x36fdf3e,0x186f9fbe,0x196fa03e,0xb305f41,0xb309fc0,0x930a040,0x970a03f,0xb709fbf,0xb705f3e,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x302041,0x11020c0,0x11020bf,0x301fc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x2fdfc1,0x306041,0x11060c0,0x11060bf,0x305fc1,0x13020c1,0x12fe0c1,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x93060c1,0x70603e,0x705fbe,0x3105f3f,0x3105f40,0x3301f41,0x32fdf41,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0x182fa041,0x182f9fc1,0xb305f41,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x192fa0c1,0x196fa03e,0x1b6f9fbe,</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; 15,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x106040,0x105fc0,0x101fc1,0xfe041,0xfdfc1,0x10603f,0x105fbf,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x106041,0x105fc1,0x11020c1,0x11060c0,0x11060bf,0x10fe0c1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x93060c1,0x70203e,0x701fbe,0x180fa040,0x1b0f9fc0,0x180fa03f,0x186fe03e,0x6fdfbe,0x1b6f9fbf,0x3101f41,0x3105f40,0x3105f3f,0x30fdf41,0x1b0f9fc1,0x180fa041,0x70603e,0x705fbe,0x17020be,0x16fe0be,0x190fa0c0,0x196fa0bf,0xb305f41,0xb309fc0,0x930a040,0x970a03f,0x97060be,0x9302042,0xb301fc2,0x192fe042,0x192fa0c1,0x1b2fdfc2,0xb709fbf,0xb701f3e,0x1b6fdf3e,</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; 14,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x106040,0x105fc0,0x10603f,0x11020c0,0x105fbf,0x10fe0c0,0x106041,0x105fc1,0x11020bf,0x10fe0bf,0x11020c1,0x10fe0c1,0x11060c0,0x11060bf,0x91060c1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x3101f41,0x30fdf41,0x1b0f9fc0,0x180fa040,0x180fa03f,0x1b0f9fbf,0x3105f40,0xb105f3f,0x3701fbe,0x70203e,0x186fe03e,0x180fa041,0x1b0f9fc1,0x1b6fdfbe,0xb105f41,0x3301fc2,0x302042,0x190fa0c0,0x190fa0bf,0x182fe042,0x1b2fdfc2,0x70603e,0xb705fbe,0x97020be,0x196fe0be,0x190fa0c1,0x930a040,0xb309fc0,0x8306042,0xb305fc2,0x93020c2,0x192fe0c2,0xa70a03f,</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; 15,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0x10603f,0x106040,0x105fc0,0x105fbf,0xfe0bf,0xfe0c0,0x302041,0x1060c0,0x1060bf,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x3020c1,0x306041,0x305fc1,0x2fe0c1,0x7020be,0x70603e,0x705fbe,0x3101f3f,0x3101f40,0x180fa040,0x180fa03f,0x6fe0be,0x180f9fbf,0x180f9fc0,0x1b0fdf40,0x1b0fdf3f,0x93060c1,0x97060be,0x3105f3f,0x3105f40,0x180fa0c0,0x180fa0bf,0x192fa041,0x182f9fc1,0xb301f41,0x1b2fdf41,0xb701f3e,0x36fdf3e,0x196fa03e,0x1b6f9fbe,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; 15,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x106040,0x10603f,0x1020bf,0xfe0c0,0xfe0bf,0x105fc0,0x105fbf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x1060c0,0x1060bf,0x3020c1,0x306041,0x305fc1,0x2fe0c1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x93060c1,0x3101f40,0x3101f3f,0x180fa040,0x186fa03f,0x180f9fc0,0x1b0fdf40,0x30fdf3f,0x1b6f9fbf,0x7020be,0x70603e,0x705fbe,0x6fe0be,0x186fa0bf,0x180fa0c0,0x3105f40,0x3105f3f,0x3301f41,0x32fdf41,0x182fa041,0x1b2f9fc1,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb305f41,0x9302140,0x970213f,0x192fe140,0x192fa0c1,0x196fe13f,0xb709fbf,0xb701f3e,0x1b6fdf3e,</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; 16,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x102041,0x1020c0,0x106040,0x10603f,0x1020bf,0xfe0c0,0xfe041,0x101fc1,0x105fc0,0x105fbf,0xfe0bf,0xfdfc1,0x1020c1,0x106041,0x1060c0,0x1060bf,0xfe0c1,0x105fc1,0x93060c1,0x70203e,0x3101f40,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x3701f3f,0x30fdf40,0x1b0f9fc0,0x180f9fbf,0x186fdfbe,0x1b6fdf3f,0x3101f41,0x3105f40,0xb105f3f,0x70603e,0x7020be,0x6fe0be,0x180fa0c0,0x180fa041,0x182f9fc1,0x1b2fdf41,0xb705fbe,0x186fa0bf,0x192fa0c1,0x97060be,0xb305f41,0x9302042,0x192fe042,0x13301fc2,0x930a040,0x970a03f,0xb509fc0,0x9302140,0x970213f,0x192fe140,0x196fe13f,</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; 15,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0x102041,0x101fc1,0xfdfbf,0xfe041,0x1020c0,0x106040,0xfdfc1,0x105fc0,0xfe0c0,0x1020bf,0x10603f,0x105fbf,0xfe0bf,0x1020c1,0x106041,0x105fc1,0xfe0c1,0x1060c0,0x11060bf,0x91060c1,0x3101f40,0x180fa040,0x180f9fc0,0x1b0fdf40,0x3101f3f,0x30fdf3f,0x180fa03f,0x1b0f9fbf,0x180fa041,0x180f9fc1,0x3101f41,0x1b0fdf41,0x70203e,0x3701fbe,0x186fe03e,0x1b6fdfbe,0x3105f40,0xb105f3f,0x180fa0c0,0x190fa0bf,0x192fa0c1,0x302042,0x3301fc2,0xb305f41,0x182fe042,0x1b2fdfc2,0x17020be,0x170603e,0xb705fbe,0x196fe0be,0x9502140,0x194fe140,0x193020c2,0xa306042,0x930a040,0xb309fc0,0xa70a03f,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; 15,0x10203f,0xfe03f,0xfe040,0x101fc0,0x101fbf,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0xfe0bf,0xfe0c0,0x106040,0x10603f,0x105fbf,0x105fc0,0x1060c0,0x1060bf,0x302041,0x2fe041,0x301fc1,0x2fdfc1,0x70203e,0x6fe03e,0x3020c1,0x2fe0c1,0x306041,0x701fbe,0x6fdfbe,0x7020be,0x6fe0be,0x70603e,0x305fc1,0x83060c1,0x180fa040,0x180fa03f,0x180f9fbf,0x705fbe,0x87060be,0x180f9fc0,0x180fa0c0,0x180fa0bf,0x3701f3f,0x3101f40,0x1b0fdf40,0x1b6fdf3f,0x3705f3f,0x3105f40,0x1302140,0x170213f,0x196fe13f,0x192fe140,0x182fa041,0x1b2f9fc1,0x192fa0c1,0x196fa03e,0x1b6f9fbe,0x970a03f,0x930a040,0x9306140,0x970613f,0xb709fbf,0xb309fc0,0x13301f41,</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; 14,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x106040,0x10603f,0x105fc0,0x302041,0x105fbf,0x2fe041,0x1060c0,0x1060bf,0x301fc1,0x2fdfc1,0x3020c1,0x2fe0c1,0x306041,0x305fc1,0x83060c1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x7020be,0x6fe0be,0x186fa03f,0x180fa040,0x180f9fc0,0x186f9fbf,0x70603e,0x8705fbe,0x3701f3f,0x3101f40,0x1b0fdf40,0x180fa0c0,0x186fa0bf,0x1b6fdf3f,0x87060be,0x170213f,0x1102140,0x182fa041,0x182f9fc1,0x190fe140,0x196fe13f,0x3105f40,0xb705f3f,0xb301f41,0x1b2fdf41,0x182fa0c1,0x930a040,0x970a03f,0x9106140,0x970613f,0x9302141,0x192fe141,0xb509fc0,</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; 15,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0x1020c0,0x1020bf,0xfdfbf,0xfe0c0,0x102041,0x106040,0xfe0bf,0x10603f,0xfe041,0x101fc1,0x105fc0,0x105fbf,0xfdfc1,0x1020c1,0x1060c0,0x1060bf,0xfe0c1,0x106041,0x305fc1,0x83060c1,0x70203e,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x6fdfbe,0x180f9fc0,0x186f9fbf,0x180fa0c0,0x180fa0bf,0x7020be,0x186fe0be,0x3101f40,0x3701f3f,0x1b0fdf40,0x1b6fdf3f,0x70603e,0x8705fbe,0x180fa041,0x182f9fc1,0x192fa0c1,0x1102140,0x170213f,0x97060be,0x190fe140,0x196fe13f,0x3301f41,0x3305f40,0xb705f3f,0x1b2fdf41,0xa302042,0x1a2fe042,0x19302141,0x9506140,0x930a040,0x970a03f,0xb509fc0,</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; 17,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x1020c0,0x102041,0x101fbf,0xfe041,0xfe0c0,0x106040,0xfdfbf,0x1020bf,0x101fc1,0xfdfc1,0xfe0bf,0x1020c1,0x10603f,0x105fc0,0xfe0c1,0x1060c0,0x106041,0x8105fbf,0x81060bf,0x8105fc1,0x81060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180fa0c0,0x180fa041,0x180f9fbf,0x70203e,0x186fe03e,0x3101f40,0x1b0fdf40,0x180f9fc1,0x180fa0bf,0x701fbe,0x3701f3f,0x1b0fdf3f,0x1b6fdfbe,0x7020be,0x186fe0be,0x192fa0c1,0x9102140,0x190fe140,0x8302042,0x3101f41,0x1b0fdf41,0x182fe042,0xb301fc2,0xb305f40,0x870603e,0x970213f,0x196fe13f,0x11102141,0x113020c2,0x1b2fdfc2,0xb105f3f,0xb705fbe,0x97060be,0xa50a040,</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfdfbf,0xfe03f,0xfe040,0xfdfc0,0x105fc0,0x106040,0x10603f,0x105fbf,0x11020bf,0x11020c0,0x302041,0x301fc1,0x2fdfc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x305fc1,0x306041,0x11060c0,0x11060bf,0x6fe03e,0x6fdfbe,0x30fdf3f,0x30fdf40,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x13020c1,0x12fe0c1,0x180fa040,0x180fa03f,0x180f9fbf,0x180f9fc0,0x3301f41,0x17020be,0x16fe0be,0x93060c1,0x32fdf41,0xb305f41,0x3701f3e,0x36fdf3e,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb705f3e,0x182f9fc1,0x182fa041,0x192fa0c0,0x190fa0bf,0x196fa03e,0x186f9fbe,0x1b6f9f3f,0x1b2f9f40,</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; 11,0x101fc0,0x10203f,0x101fbf,0xfdfc0,0xfe040,0xfe03f,0xfdfbf,0x105fc0,0x106040,0x10603f,0x105fbf,0x301fc1,0x302041,0x2fe041,0x2fdfc1,0x11020c0,0x11020bf,0x306041,0x305fc1,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x11060c0,0x11060bf,0x70203e,0x30fdf40,0x30fdf3f,0x701fbe,0x3105f40,0x3105f3f,0x13020c1,0x6fe03e,0x6fdfbe,0x705fbe,0x70603e,0x12fe0c1,0x3301f41,0x13060c1,0x32fdf41,0x1b0f9fc0,0x180fa040,0x186fa03f,0x1b6f9fbf,0x3305f41,0xb109fc0,0x17020be,0x16fe0be,0x810a040,0x870a03f,0xb709fbf,0x3701f3e,0x1b6fdf3e,0x17060be,0x182fa041,0x1b2f9fc1,0x192fa0c0,0x196fa0bf,0xb705f3e,0xb309fc1,0x830a041,0x930a0c0,0x970a0bf,</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; 15,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0xfdfbf,0xfe03f,0x106040,0x105fc0,0x105fbf,0x10603f,0x102041,0x101fc1,0xfdfc1,0xfe041,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x11060c0,0x11060bf,0x11020c1,0x30fdf40,0x30fdf3f,0x3105f40,0x3105f3f,0x3101f41,0x10fe0c1,0x13060c1,0x70203e,0x701fbe,0x6fdfbe,0x30fdf41,0x3305f41,0x6fe03e,0x70603e,0x705fbe,0x1b0f9fc0,0x180fa040,0x186fa03f,0x1b6f9fbf,0x1b0f9fc1,0x180fa041,0x910a040,0xb109fc0,0xb709fbf,0x970a03f,0x17020be,0x196fe0be,0x97060be,0xb701f3e,0x1b6fdf3e,0xb301fc2,0x9302042,0x930a041,0xb309fc1,0x1b2fdfc2,0x192fe042,0x194fa0c0,</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; 17,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0x101fc1,0x102041,0x106040,0x105fc0,0xfdfbf,0xfe03f,0x10603f,0x105fbf,0xfdfc1,0xfe041,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x11020c1,0x11060c0,0x3101f40,0x3101f3f,0x30fdf40,0x10fe0bf,0x11060bf,0x10fe0c1,0x3101f41,0x3105f40,0x30fdf3f,0x11060c1,0x3105f3f,0x30fdf41,0x3105f41,0x3701fbe,0x70203e,0x180fa040,0x1b0f9fc0,0x1b0f9fbf,0x180fa03f,0x186fe03e,0x1b6fdfbe,0x3705fbe,0x70603e,0x910a040,0xb109fc0,0x3301fc2,0x1302042,0x180fa041,0x1b0f9fc1,0x1b2fdfc2,0x192fe042,0x1306042,0x3305fc2,0xb709fbf,0x970a03f,0x930a041,0xb309fc1,0x97020be,0x192fa0c0,0x190fa0bf,0x196fe0be,</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfe03f,0xfe040,0xfdfc0,0xfdfbf,0x10603f,0x106040,0x105fc0,0x105fbf,0x11020bf,0x11020c0,0x10fe0c0,0x10fe0bf,0x302041,0x301fc1,0x11060c0,0x11060bf,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x306041,0x305fc1,0x3101f40,0x6fe03e,0x6fdfbe,0x3101f3f,0x70603e,0x705fbe,0x13020c1,0x30fdf40,0x30fdf3f,0x3105f3f,0x3105f40,0x12fe0c1,0x17020be,0x13060c1,0x16fe0be,0x186fa03f,0x180fa040,0x1b0f9fc0,0x1b6f9fbf,0x17060be,0x870a03f,0x3301f41,0x32fdf41,0x810a040,0xb109fc0,0xb709fbf,0x3701f3e,0x1b6fdf3e,0x3305f41,0x190fa0c0,0x196fa0bf,0x192fa041,0x1b2f9fc1,0xb705f3e,0x970a0bf,0x910a0c0,0x930a041,0xb309fc1,</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x302041,0x11020c0,0x11020bf,0x301fc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x2fdfc1,0x306041,0x11060c0,0x11060bf,0x305fc1,0x13020c1,0x12fe0c1,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x70603e,0x13060c1,0x3105f40,0x3105f3f,0x705fbe,0x17020be,0x180fa040,0x186fa03f,0x1b0f9fc0,0x1b6f9fbf,0x3301f41,0x32fdf41,0x3305f41,0x16fe0be,0x17060be,0x870a03f,0x810a040,0xb109fc0,0xb709fbf,0x3701f3e,0x182fa041,0x192fa0c0,0x196fa0bf,0x1b2f9fc1,0x1b6fdf3e,0xb705f3e,0x830a041,0x930a0c0,0x970a0bf,0xb309fc1,</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; 14,0x101fc0,0x10203f,0x101fbf,0xfe040,0xfdfc0,0xfe03f,0xfdfbf,0x106040,0x105fc0,0x10603f,0x105fbf,0x102041,0x101fc1,0xfe041,0x11020c0,0xfdfc1,0x11020bf,0x106041,0x105fc1,0x10fe0c0,0x10fe0bf,0x11060c0,0x11060bf,0x11020c1,0x10fe0c1,0x13060c1,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x3105f40,0x3105f3f,0x3701fbe,0x70203e,0x6fe03e,0x36fdfbe,0x3101f41,0x32fdf41,0x1b0f9fc0,0x180fa040,0x186fa03f,0x70603e,0x3705fbe,0x1b6f9fbf,0x3305f41,0xb109fc0,0x810a040,0x17020be,0x16fe0be,0x870a03f,0xb709fbf,0x180fa041,0x1b2f9fc1,0x192fa0c0,0x196fa0bf,0x17060be,0x9302042,0xb301fc2,0x830a041,0xb309fc1,0x930a0c0,0x970a0bf,0x1a2fe042,</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; 17,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0x106040,0x102041,0x101fc1,0x105fc0,0xfe03f,0xfdfbf,0x10603f,0x105fbf,0xfe041,0xfdfc1,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x11020c1,0x11060c0,0x10fe0bf,0x11060bf,0x10fe0c1,0x11060c1,0x3101f40,0x30fdf40,0x3101f3f,0x3105f40,0x3101f41,0x30fdf3f,0x3105f3f,0x30fdf41,0x3105f41,0x70203e,0x3701fbe,0x180fa040,0x1b0f9fc0,0x180fa03f,0x186fe03e,0x36fdfbe,0x1b6f9fbf,0x180fa041,0x1b0f9fc1,0x1302042,0x3301fc2,0x910a040,0x70603e,0x3705fbe,0xb109fc0,0x970a03f,0xb709fbf,0x910a041,0x192fe042,0x1b2fdfc2,0x9306042,0x3305fc2,0xb309fc1,0x97020be,0x192fa0c0,0x190fa0bf,0x196fe0be,</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; 15,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0xfdfbf,0xfdfc0,0x106040,0x10603f,0x105fbf,0x105fc0,0x1020c0,0x1020bf,0xfe0bf,0xfe0c0,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x306041,0x305fc1,0x3020c1,0x6fe03e,0x6fdfbe,0x70603e,0x705fbe,0x7020be,0x2fe0c1,0x13060c1,0x3101f40,0x3101f3f,0x30fdf3f,0x6fe0be,0x17060be,0x30fdf40,0x3105f40,0x3105f3f,0x186fa03f,0x180fa040,0x1b0f9fc0,0x1b6f9fbf,0x186fa0bf,0x180fa0c0,0x830a040,0x870a03f,0xb709fbf,0xb309fc0,0x3301f41,0x1b2fdf41,0xb305f41,0xb701f3e,0x1b6fdf3e,0x970213f,0x9302140,0x930a0c0,0x970a0bf,0x196fe13f,0x192fe140,0x1a2fa041,</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; 14,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x1020c0,0x1020bf,0xfe0c0,0x302041,0xfe0bf,0x301fc1,0x1060c0,0x1060bf,0x2fe041,0x2fdfc1,0x306041,0x305fc1,0x3020c1,0x2fe0c1,0x13060c1,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x70603e,0x705fbe,0x3701f3f,0x3101f40,0x30fdf40,0x36fdf3f,0x7020be,0x16fe0be,0x186fa03f,0x180fa040,0x1b0f9fc0,0x3105f40,0x3705f3f,0x1b6f9fbf,0x17060be,0x870a03f,0x810a040,0x3301f41,0x32fdf41,0xb109fc0,0xb709fbf,0x180fa0c0,0x196fa0bf,0x192fa041,0x1b2f9fc1,0x3305f41,0x9302140,0x970213f,0x910a0c0,0x970a0bf,0x930a041,0xb309fc1,0x194fe140,</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; 15,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0x106040,0x10603f,0xfdfbf,0x105fc0,0x102041,0x1020c0,0x105fbf,0x1020bf,0x101fc1,0xfe041,0xfe0c0,0xfe0bf,0xfdfc1,0x106041,0x1060c0,0x1060bf,0x105fc1,0x1020c1,0x2fe0c1,0x13060c1,0x70203e,0x3101f40,0x3101f3f,0x3701fbe,0x6fe03e,0x6fdfbe,0x30fdf40,0x36fdf3f,0x3105f40,0x3105f3f,0x70603e,0x3705fbe,0x180fa040,0x186fa03f,0x1b0f9fc0,0x1b6f9fbf,0x7020be,0x16fe0be,0x3101f41,0x32fdf41,0xb305f41,0x810a040,0x870a03f,0x97060be,0xb109fc0,0xb709fbf,0x182fa041,0x182fa0c0,0x196fa0bf,0x1b2f9fc1,0x11302042,0x13301fc2,0xb30a041,0x950a0c0,0x9302140,0x970213f,0x194fe140,</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; 17,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0x106040,0x102041,0xfe03f,0x101fc1,0x105fc0,0x1020c0,0xfdfbf,0x10603f,0xfe041,0xfdfc1,0x105fbf,0x106041,0x1020bf,0xfe0c0,0x105fc1,0x1060c0,0x1020c1,0x10fe0bf,0x11060bf,0x10fe0c1,0x11060c1,0x3101f40,0x30fdf40,0x3101f3f,0x3105f40,0x3101f41,0x30fdf3f,0x70203e,0x3701fbe,0x180fa040,0x1b0f9fc0,0x30fdf41,0x3105f3f,0x6fe03e,0x186fa03f,0x1b0f9fbf,0x1b6fdfbe,0x70603e,0x3705fbe,0xb305f41,0x910a040,0xb109fc0,0x1302042,0x180fa041,0x1b0f9fc1,0x3301fc2,0x192fe042,0x192fa0c0,0x17020be,0x970a03f,0xb709fbf,0xa10a041,0xa306042,0x1b2fdfc2,0x190fa0bf,0x196fe0be,0x97060be,0x11502140,</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; 17,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0x1020bf,0x1020c0,0x106040,0x10603f,0xfdfbf,0xfdfc0,0x105fc0,0x105fbf,0xfe0bf,0xfe0c0,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x3020c1,0x306041,0x70203e,0x701fbe,0x6fe03e,0x2fdfc1,0x305fc1,0x2fe0c1,0x7020be,0x70603e,0x6fdfbe,0x3060c1,0x705fbe,0x6fe0be,0x7060be,0x3701f3f,0x3101f40,0x180fa040,0x186fa03f,0x186f9fbf,0x180f9fc0,0x1b0fdf40,0x1b6fdf3f,0x3705f3f,0x3105f40,0x830a040,0x870a03f,0x170213f,0x1302140,0x180fa0c0,0x186fa0bf,0x196fe13f,0x192fe140,0x1306140,0x170613f,0xb709fbf,0xb309fc0,0x930a0c0,0x970a0bf,0xb301f41,0x192fa041,0x182f9fc1,0x1b2fdf41,</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; 17,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0x106040,0x1020c0,0x1020bf,0x10603f,0xfdfc0,0xfdfbf,0x105fc0,0x105fbf,0xfe0c0,0xfe0bf,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x3020c1,0x306041,0x2fdfc1,0x305fc1,0x2fe0c1,0x3060c1,0x70203e,0x6fe03e,0x701fbe,0x70603e,0x7020be,0x6fdfbe,0x705fbe,0x6fe0be,0x7060be,0x3101f40,0x3701f3f,0x180fa040,0x186fa03f,0x180f9fc0,0x1b0fdf40,0x36fdf3f,0x1b6f9fbf,0x180fa0c0,0x186fa0bf,0x1302140,0x170213f,0x830a040,0x3105f40,0x3705f3f,0x870a03f,0xb309fc0,0xb709fbf,0x830a0c0,0x192fe140,0x196fe13f,0x9306140,0x170613f,0x970a0bf,0xb301f41,0x192fa041,0x182f9fc1,0x1b2fdf41,</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; 17,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0x106040,0x1020c0,0xfdfc0,0x1020bf,0x10603f,0x102041,0xfdfbf,0x105fc0,0xfe0c0,0xfe0bf,0x105fbf,0x1060c0,0x101fc1,0xfe041,0x1060bf,0x106041,0x1020c1,0x2fdfc1,0x305fc1,0x2fe0c1,0x3060c1,0x70203e,0x6fe03e,0x701fbe,0x70603e,0x7020be,0x6fdfbe,0x3101f40,0x3701f3f,0x180fa040,0x186fa03f,0x6fe0be,0x705fbe,0x30fdf40,0x1b0f9fc0,0x186f9fbf,0x1b6fdf3f,0x3105f40,0x3705f3f,0x97060be,0x830a040,0x870a03f,0x1302140,0x180fa0c0,0x186fa0bf,0x170213f,0x192fe140,0x192fa041,0x3301f41,0xb309fc0,0xb709fbf,0x850a0c0,0x9506140,0x196fe13f,0x182f9fc1,0x1b2fdf41,0xb305f41,0x12302042,</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; 16,0x10203f,0x101fc0,0xfe040,0x102041,0x1020c0,0x106040,0x101fbf,0xfe03f,0xfdfc0,0x101fc1,0x105fc0,0x10603f,0x1020bf,0xfe0c0,0xfe041,0xfdfbf,0x1020c1,0x106041,0x1060c0,0x105fbf,0xfe0bf,0xfdfc1,0x105fc1,0x1060bf,0xfe0c1,0x83060c1,0x70203e,0x3101f40,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x3701f3f,0x30fdf40,0x1b0f9fc0,0x180fa041,0x180fa0c0,0x7020be,0x70603e,0x3105f40,0xb101f41,0x9302042,0x1102140,0x930a040,0x6fdfbe,0x36fdf3f,0x1b6f9fbf,0x190fa0bf,0x196fe0be,0x170213f,0x196fe140,0x182f9fc1,0x1b2fdf41,0xb301fc2,0x1a2fe042,0x192fa0c1,0x8705fbe,0xb705f3f,0xb309fc0,0xa70a03f,0x97060be,0x9706140,0x11302141</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;};</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__compute_8cc.html b/lib/voro++/html/v__compute_8cc.html
new file mode 100644
index 000000000..27947dbce
--- /dev/null
+++ b/lib/voro++/html/v__compute_8cc.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_compute.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_compute.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementantions for the voro_compute template.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="worklist_8hh_source.html">worklist.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container_8hh_source.html">container.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&quot;</code><br/>
+</div>
+<p><a href="v__compute_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="v__compute_8cc_source.html">v_compute.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__compute_8cc_source.html b/lib/voro++/html/v__compute_8cc_source.html
new file mode 100644
index 000000000..ada705f7e
--- /dev/null
+++ b/lib/voro++/html/v__compute_8cc_source.html
@@ -0,0 +1,1061 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_compute.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_compute.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="v__compute_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file v_compute.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementantions for the voro_compute template. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="worklist_8hh.html" title="Header file for setting constants used in the block worklists that are used during cell computation...">worklist.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__compute_8hh.html" title="Header file for the voro_compute template and related classes.">v_compute.hh</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rad__option_8hh.html" title="Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellat...">rad_option.hh</a>&quot;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8hh.html" title="Header file for the container_base and related classes.">container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container__prd_8hh.html" title="Header file for the container_periodic_base and related classes.">container_prd.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** The class constructor initializes constants from the container class, and</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * sets up the mask and queue used for Voronoi computations.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * \param[in] con_ a reference to the container class to use.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * \param[in] (hx_,hy_,hz_) the size of the mask to use. */</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f"> 23</a></span>&#160;<a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute&lt;c_class&gt;::voro_compute</a>(c_class &amp;con_,<span class="keywordtype">int</span> hx_,<span class="keywordtype">int</span> hy_,<span class="keywordtype">int</span> hz_) :</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; con(con_), boxx(con_.boxx), boxy(con_.boxy), boxz(con_.boxz),</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; xsp(con_.xsp), ysp(con_.ysp), zsp(con_.zsp),</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; hx(hx_), hy(hy_), hz(hz_), hxy(hx_*hy_), hxyz(hxy*hz_), ps(con_.ps),</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; id(con_.id), p(con_.p), co(con_.co), bxsq(boxx*boxx+boxy*boxy+boxz*boxz),</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; mv(0), qu_size(3*(3+hxy+hz*(hx+hy))), wl(con_.wl), mrad(con_.mrad),</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; mask(new unsigned int[hxyz]), qu(new int[qu_size]), qu_l(qu+qu_size) {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; reset_mask();</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">/** Scans all of the particles within a block to see if any of them have a</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * smaller distance to the given test vector. If one is found, the routine</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * updates the minimum distance and store information about this particle.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * \param[in] ijk the index of the block.</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * \param[in] (x,y,z) the test vector to consider (which may have already had a</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * periodic displacement applied to it).</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * \param[in] (di,dj,dk) the coordinates of the current block, to store if the</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * particle record is updated.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * \param[in,out] w a reference to a particle record in which to store</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * information about the particle whose Voronoi cell the</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * vector is within.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * \param[in,out] mrs the current minimum distance, that may be updated if a</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * closer particle is found. */</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute&lt;c_class&gt;::scan_all</a>(<span class="keywordtype">int</span> ijk,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> &amp;w,<span class="keywordtype">double</span> &amp;mrs) {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">double</span> x1,y1,z1,rs;<span class="keywordtype">bool</span> in_block=<span class="keyword">false</span>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> l=0;l&lt;co[ijk];l++) {</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; x1=p[ijk][ps*l]-x;</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; y1=p[ijk][ps*l+1]-y;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; z1=p[ijk][ps*l+2]-z;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; rs=con.r_current_sub(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">if</span>(rs&lt;mrs) {mrs=rs;w.<a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>=l;in_block=<span class="keyword">true</span>;}</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span>(in_block) {w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>=ijk;w.<a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>=di;w.<a class="code" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">dj</a>=dj,w.<a class="code" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">dk</a>=dk;}</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;}</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">/** Finds the Voronoi cell that given vector is within. For containers that are</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * not radially dependent, this corresponds to findig the particle that is</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * closest to the vector; for the radical tessellation containers, this</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * corresponds to a finding the minimum weighted distance.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to consider.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the block that the test particle is</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * in relative to the container data structure.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * \param[in] ijk the index of the block that the test particle is in.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * \param[out] w a reference to a particle record in which to store information</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * about the particle whose Voronoi cell the vector is within.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * \param[out] mrs the minimum computed distance. */</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d"> 71</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro_compute&lt;c_class&gt;::find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ijk,<a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> &amp;w,<span class="keywordtype">double</span> &amp;mrs) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordtype">double</span> qx=0,qy=0,qz=0,rs;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">int</span> i,j,k,di,dj,dk,ei,ej,ek,f,g,disp;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">double</span> fx,fy,fz,mxs,mys,mzs,*radp;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q,*e,*mijk;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// Init setup for parameters to return</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; w.<a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>=-1;mrs=large_number;</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; con.initialize_search(ci,cj,ck,ijk,i,j,k,disp);</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// Test all particles in the particle&#39;s local region first</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; scan_all(ijk,x,y,z,0,0,0,w,mrs);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="comment">// Now compute the fractional position of the particle within its</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// region and store it in (fx,fy,fz). We use this to compute an index</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="comment">// (di,dj,dk) of which subregion the particle is within.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m1,m2;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; con.frac_pos(x,y,z,ci,cj,ck,fx,fy,fz);</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; di=int(fx*xsp*wl_fgrid);dj=int(fy*ysp*wl_fgrid);dk=int(fz*zsp*wl_fgrid);</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// The indices (di,dj,dk) tell us which worklist to use, to test the</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// blocks in the optimal order. But we only store worklists for the</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// eighth of the region where di, dj, and dk are all less than half the</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">// full grid. The rest of the cases are handled by symmetry. In this</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// section, we detect for these cases, by reflecting high values of di,</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// dj, and dk. For these cases, a mask is constructed in m1 and m2</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// which is used to flip the worklist information when it is loaded.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span>(di&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; mxs=boxx-fx;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; m1=127+(3&lt;&lt;21);m2=1+(1&lt;&lt;21);di=wl_fgrid-1-di;<span class="keywordflow">if</span>(di&lt;0) di=0;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; } <span class="keywordflow">else</span> {m1=m2=0;mxs=fx;}</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span>(dj&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; mys=boxy-fy;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; m1|=(127&lt;&lt;7)+(3&lt;&lt;24);m2|=(1&lt;&lt;7)+(1&lt;&lt;24);dj=wl_fgrid-1-dj;<span class="keywordflow">if</span>(dj&lt;0) dj=0;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; } <span class="keywordflow">else</span> mys=fy;</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span>(dk&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; mzs=boxz-fz;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; m1|=(127&lt;&lt;14)+(3&lt;&lt;27);m2|=(1&lt;&lt;14)+(1&lt;&lt;27);dk=wl_fgrid-1-dk;<span class="keywordflow">if</span>(dk&lt;0) dk=0;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; } <span class="keywordflow">else</span> mzs=fz;</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Do a quick test to account for the case when the minimum radius is</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// small enought that no other blocks need to be considered</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rs=con.r_max_add(mrs);</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span>(mxs*mxs&gt;rs&amp;&amp;mys*mys&gt;rs&amp;&amp;mzs*mzs&gt;rs) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="comment">// Now compute which worklist we are going to use, and set radp and e to</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="comment">// point at the right offsets</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; ijk=di+wl_hgrid*(dj+wl_hgrid*dk);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; radp=mrad+ijk*wl_seq_length;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; e=(<span class="keyword">const_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*<span class="keyword">&gt;</span> (wl))+ijk*wl_seq_length;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// Read in how many items in the worklist can be tested without having to</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// worry about writing to the mask</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; f=e[0];g=0;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="comment">// If mrs is less than the minimum distance to any untested</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// block, then we are done</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">if</span>(con.r_max_add(mrs)&lt;radp[g]) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; g++;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// Load in a block off the worklist, permute it with the</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// symmetry mask, and decode its position. These are all</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// integer bit operations so they should run very fast.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; q=e[g];q^=m1;q+=m2;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; di=q&amp;127;di-=64;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; dj=(q&gt;&gt;7)&amp;127;dj-=64;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; dk=(q&gt;&gt;14)&amp;127;dk-=64;</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// Check that the worklist position is in range</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; ei=di+i;<span class="keywordflow">if</span>(ei&lt;0||ei&gt;=hx) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; ej=dj+j;<span class="keywordflow">if</span>(ej&lt;0||ej&gt;=hy) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; ek=dk+k;<span class="keywordflow">if</span>(ek&lt;0||ek&gt;=hz) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="comment">// Call the compute_min_max_radius() function. This returns</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// true if the minimum distance to the block is bigger than the</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// current mrs, in which case we skip this block and move on.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Otherwise, it computes the maximum distance to the block and</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// returns it in crs.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span>(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="comment">// Now compute which region we are going to loop over, adding a</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// displacement for the periodic cases</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// If mrs is bigger than the maximum distance to the block,</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// then we have to test all particles in the block for</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// intersections. Otherwise, we do additional checks and skip</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// those particles which can&#39;t possibly intersect the block.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; } <span class="keywordflow">while</span>(g&lt;f);</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// Update mask value and initialize queue</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; mv++;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span>(mv==0) {reset_mask();mv=1;}</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">int</span> *qu_s=qu,*qu_e=qu;</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">while</span>(g&lt;wl_seq_length-1) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// If mrs is less than the minimum distance to any untested</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// block, then we are done</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span>(con.r_max_add(mrs)&lt;radp[g]) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; g++;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// Load in a block off the worklist, permute it with the</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// symmetry mask, and decode its position. These are all</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">// integer bit operations so they should run very fast.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; q=e[g];q^=m1;q+=m2;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; di=q&amp;127;di-=64;</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; dj=(q&gt;&gt;7)&amp;127;dj-=64;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; dk=(q&gt;&gt;14)&amp;127;dk-=64;</div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// Compute the position in the mask of the current block. If</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// this lies outside the mask, then skip it. Otherwise, mark</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// it.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ei=di+i;<span class="keywordflow">if</span>(ei&lt;0||ei&gt;=hx) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; ej=dj+j;<span class="keywordflow">if</span>(ej&lt;0||ej&gt;=hy) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; ek=dk+k;<span class="keywordflow">if</span>(ek&lt;0||ek&gt;=hz) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; mijk=mask+ei+hx*(ej+hy*ek);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; *mijk=mv;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// Skip this block if it is further away than the current</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// minimum radius</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span>(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// Now compute which region we are going to loop over, adding a</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">// displacement for the periodic cases</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span>(qu_e&gt;qu_l-18) add_list_memory(qu_s,qu_e);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; scan_bits_mask_add(q,mijk,ei,ej,ek,qu_e);</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// Do a check to see if we&#39;ve reached the radius cutoff</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span>(con.r_max_add(mrs)&lt;radp[g]) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// We were unable to completely compute the cell based on the blocks in</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// the worklist, so now we have to go block by block, reading in items</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// off the list</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">while</span>(qu_s!=qu_e) {</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Read the next entry of the queue</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(qu_s==qu_l) qu_s=qu;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; ei=*(qu_s++);ej=*(qu_s++);ek=*(qu_s++);</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; di=ei-i;dj=ej-j;dk=ek-k;</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span>(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">// Test the neighbors of the current block, and add them to the</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// block list if they haven&#39;t already been tested</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span>((qu_s&lt;=qu_e?(qu_l-qu_e)+(qu_s-qu):qu_s-qu_e)&lt;18) add_list_memory(qu_s,qu_e);</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; add_to_mask(ei,ej,ek,qu_e);</div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;}</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">/** Scans the six orthogonal neighbors of a given block and adds them to the</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * queue if they haven&#39;t been considered already. It assumes that the queue</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> * will definitely have enough memory to add six entries at the end.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * \param[in] (ei,ej,ek) the block to consider.</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * \param[in,out] qu_e a pointer to the end of the queue. */</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute&lt;c_class&gt;::add_to_mask</a>(<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">int</span> *&amp;qu_e) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *mijk=mask+ei+hx*(ej+hy*ek);</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span>(ek&gt;0) <span class="keywordflow">if</span>(*(mijk-hxy)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk-hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek-1;}</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span>(ej&gt;0) <span class="keywordflow">if</span>(*(mijk-hx)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk-hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej-1;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span>(ei&gt;0) <span class="keywordflow">if</span>(*(mijk-1)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk-1)=mv;*(qu_e++)=ei-1;*(qu_e++)=ej;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(ei&lt;hx-1) <span class="keywordflow">if</span>(*(mijk+1)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span>(ej&lt;hy-1) <span class="keywordflow">if</span>(*(mijk+hx)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">if</span>(ek&lt;hz-1) <span class="keywordflow">if</span>(*(mijk+hxy)!=mv) {<span class="keywordflow">if</span>(qu_e==qu_l) qu_e=qu;*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;}</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">/** Scans a worklist entry and adds any blocks to the queue</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> * \param[in] (ei,ej,ek) the block to consider.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> * \param[in,out] qu_e a pointer to the end of the queue. */</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voro_compute&lt;c_class&gt;::scan_bits_mask_add(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *mijk,<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">int</span> *&amp;qu_e) {</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> b1=1&lt;&lt;21,b2=1&lt;&lt;22,b3=1&lt;&lt;24,b4=1&lt;&lt;25,b5=1&lt;&lt;27,b6=1&lt;&lt;28;</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span>((q&amp;b2)==b2) {</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(ei&gt;0) {*(mijk-1)=mv;*(qu_e++)=ei-1;*(qu_e++)=ej;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>((q&amp;b1)==0&amp;&amp;ei&lt;hx-1) {*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((q&amp;b1)==b1&amp;&amp;ei&lt;hx-1) {*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>((q&amp;b4)==b4) {</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span>(ej&gt;0) {*(mijk-hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej-1;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span>((q&amp;b3)==0&amp;&amp;ej&lt;hy-1) {*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((q&amp;b3)==b3&amp;&amp;ej&lt;hy-1) {*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}</div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>((q&amp;b6)==b6) {</div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">if</span>(ek&gt;0) {*(mijk-hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek-1;}</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span>((q&amp;b5)==0&amp;&amp;ek&lt;hz-1) {*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>((q&amp;b5)==b5&amp;&amp;ek&lt;hz-1) {*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment">/** This routine computes a Voronoi cell for a single particle in the</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * container. It can be called by the user, but is also forms the core part of</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * several of the main functions, such as store_cell_volumes(), print_all(),</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> * and the drawing routines. The algorithm constructs the cell by testing over</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> * the neighbors of the particle, working outwards until it reaches those</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> * particles which could not possibly intersect the cell. For maximum</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> * efficiency, this algorithm is divided into three parts. In the first</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> * section, the algorithm tests over the blocks which are in the immediate</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> * vicinity of the particle, by making use of one of the precomputed worklists.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"> * The code then continues to test blocks on the worklist, but also begins to</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> * construct a list of neighboring blocks outside the worklist which may need</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> * to be test. In the third section, the routine starts testing these</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> * neighboring blocks, evaluating whether or not a particle in them could</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> * possibly intersect the cell. For blocks that intersect the cell, it tests</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> * the particles in that block, and then adds the block neighbors to the list</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> * of potential places to consider.</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> * \param[in,out] c a reference to a voronoicell object.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> * \param[in] ijk the index of the block that the test particle is in.</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * \param[in] s the index of the particle within the test block.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> * \param[in] (ci,cj,ck) the coordinates of the block that the test particle is</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> * in relative to the container data structure.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> * \return False if the Voronoi cell was completely removed during the</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> * computation and has zero volume, true otherwise. */</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00291"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9"> 291</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;c_class&gt;::compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> s,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck) {</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> count_list[8]={7,11,15,19,26,35,45,59},*count_e=count_list+8;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">double</span> x,y,z,x1,y1,z1,qx=0,qy=0,qz=0;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">double</span> xlo,ylo,zlo,xhi,yhi,zhi,x2,y2,z2,rs;</div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordtype">int</span> i,j,k,di,dj,dk,ei,ej,ek,f,g,l,disp;</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">double</span> fx,fy,fz,gxs,gys,gzs,*radp;</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q,*e,*mijk;</div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span>(!con.initialize_voronoicell(c,ijk,s,ci,cj,ck,i,j,k,x,y,z,disp)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; con.r_init(ijk,s);</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="comment">// Initialize the Voronoi cell to fill the entire container</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordtype">double</span> crs,mrs;</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">int</span> next_count=3,*count_p=(<span class="keyword">const_cast&lt;</span><span class="keywordtype">int</span>*<span class="keyword">&gt;</span> (count_list));</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="comment">// Test all particles in the particle&#39;s local region first</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span>(l=0;l&lt;s;l++) {</div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; x1=p[ijk][ps*l]-x;</div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; y1=p[ijk][ps*l+1]-y;</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; z1=p[ijk][ps*l+2]-z;</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">if</span>(!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; l++;</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">while</span>(l&lt;co[ijk]) {</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; x1=p[ijk][ps*l]-x;</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; y1=p[ijk][ps*l+1]-y;</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; z1=p[ijk][ps*l+2]-z;</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span>(!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; l++;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">// Now compute the maximum distance squared from the cell center to a</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="comment">// vertex. This is used to cut off the calculation since we only need</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="comment">// to test out to twice this range.</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; mrs=c.max_radius_squared();</div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="comment">// Now compute the fractional position of the particle within its</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// region and store it in (fx,fy,fz). We use this to compute an index</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="comment">// (di,dj,dk) of which subregion the particle is within.</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> m1,m2;</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; con.frac_pos(x,y,z,ci,cj,ck,fx,fy,fz);</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; di=int(fx*xsp*wl_fgrid);dj=int(fy*ysp*wl_fgrid);dk=int(fz*zsp*wl_fgrid);</div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
+<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// The indices (di,dj,dk) tell us which worklist to use, to test the</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="comment">// blocks in the optimal order. But we only store worklists for the</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="comment">// eighth of the region where di, dj, and dk are all less than half the</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// full grid. The rest of the cases are handled by symmetry. In this</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// section, we detect for these cases, by reflecting high values of di,</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// dj, and dk. For these cases, a mask is constructed in m1 and m2</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="comment">// which is used to flip the worklist information when it is loaded.</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span>(di&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; gxs=fx;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; m1=127+(3&lt;&lt;21);m2=1+(1&lt;&lt;21);di=wl_fgrid-1-di;<span class="keywordflow">if</span>(di&lt;0) di=0;</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; } <span class="keywordflow">else</span> {m1=m2=0;gxs=boxx-fx;}</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">if</span>(dj&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; gys=fy;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; m1|=(127&lt;&lt;7)+(3&lt;&lt;24);m2|=(1&lt;&lt;7)+(1&lt;&lt;24);dj=wl_fgrid-1-dj;<span class="keywordflow">if</span>(dj&lt;0) dj=0;</div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; } <span class="keywordflow">else</span> gys=boxy-fy;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span>(dk&gt;=wl_hgrid) {</div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; gzs=fz;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; m1|=(127&lt;&lt;14)+(3&lt;&lt;27);m2|=(1&lt;&lt;14)+(1&lt;&lt;27);dk=wl_fgrid-1-dk;<span class="keywordflow">if</span>(dk&lt;0) dk=0;</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; } <span class="keywordflow">else</span> gzs=boxz-fz;</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; gxs*=gxs;gys*=gys;gzs*=gzs;</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="comment">// Now compute which worklist we are going to use, and set radp and e to</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="comment">// point at the right offsets</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; ijk=di+wl_hgrid*(dj+wl_hgrid*dk);</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; radp=mrad+ijk*wl_seq_length;</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; e=(<span class="keyword">const_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>*<span class="keyword">&gt;</span> (wl))+ijk*wl_seq_length;</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">// Read in how many items in the worklist can be tested without having to</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="comment">// worry about writing to the mask</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; f=e[0];g=0;</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;</div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// At the intervals specified by count_list, we recompute the</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="comment">// maximum radius squared</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span>(g==next_count) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; mrs=c.max_radius_squared();</div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">if</span>(count_p!=count_e) next_count=*(count_p++);</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="comment">// If mrs is less than the minimum distance to any untested</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="comment">// block, then we are done</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(radp[g],mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; g++;</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="comment">// Load in a block off the worklist, permute it with the</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">// symmetry mask, and decode its position. These are all</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="comment">// integer bit operations so they should run very fast.</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; q=e[g];q^=m1;q+=m2;</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; di=q&amp;127;di-=64;</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; dj=(q&gt;&gt;7)&amp;127;dj-=64;</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; dk=(q&gt;&gt;14)&amp;127;dk-=64;</div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="comment">// Check that the worklist position is in range</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; ei=di+i;<span class="keywordflow">if</span>(ei&lt;0||ei&gt;=hx) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; ej=dj+j;<span class="keywordflow">if</span>(ej&lt;0||ej&gt;=hy) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; ek=dk+k;<span class="keywordflow">if</span>(ek&lt;0||ek&gt;=hz) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="comment">// Call the compute_min_max_radius() function. This returns</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// true if the minimum distance to the block is bigger than the</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// current mrs, in which case we skip this block and move on.</span></div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="comment">// Otherwise, it computes the maximum distance to the block and</span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="comment">// returns it in crs.</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span>(compute_min_max_radius(di,dj,dk,fx,fy,fz,gxs,gys,gzs,crs,mrs)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="comment">// Now compute which region we are going to loop over, adding a</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// displacement for the periodic cases</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="comment">// If mrs is bigger than the maximum distance to the block,</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="comment">// then we have to test all particles in the block for</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="comment">// intersections. Otherwise, we do additional checks and skip</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="comment">// those particles which can&#39;t possibly intersect the block.</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">if</span>(co[ijk]&gt;0) {</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; l=0;x2=x-qx;y2=y-qy;z2=z-qz;</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">if</span>(!con.r_ctest(crs,mrs)) {</div>
+<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; x1=p[ijk][ps*l]-x2;</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; y1=p[ijk][ps*l+1]-y2;</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; z1=p[ijk][ps*l+2]-z2;</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span>(!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; l++;</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; } <span class="keywordflow">while</span> (l&lt;co[ijk]);</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; x1=p[ijk][ps*l]-x2;</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; y1=p[ijk][ps*l+1]-y2;</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; z1=p[ijk][ps*l+2]-z2;</div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; rs=x1*x1+y1*y1+z1*z1;</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">if</span>(con.r_scale_check(rs,mrs,ijk,l)&amp;&amp;!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; l++;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; } <span class="keywordflow">while</span> (l&lt;co[ijk]);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; } <span class="keywordflow">while</span>(g&lt;f);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="comment">// If we reach here, we were unable to compute the entire cell using</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="comment">// the first part of the worklist. This section of the algorithm</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">// continues the worklist, but it now starts preparing the mask that we</span></div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// need if we end up going block by block. We do the same as before,</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="comment">// but we put a mark down on the mask for every block that&#39;s tested.</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="comment">// The worklist also contains information about which neighbors of each</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="comment">// block are not also on the worklist, and we start storing those</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// points in a list in case we have to go block by block. Update the</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; <span class="comment">// mask counter, and if it wraps around then reset the whole mask; that</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="comment">// will only happen once every 2^32 tries.</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; mv++;</div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">if</span>(mv==0) {reset_mask();mv=1;}</div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="comment">// Set the queue pointers</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordtype">int</span> *qu_s=qu,*qu_e=qu;</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">while</span>(g&lt;wl_seq_length-1) {</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="comment">// At the intervals specified by count_list, we recompute the</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">// maximum radius squared</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">if</span>(g==next_count) {</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; mrs=c.max_radius_squared();</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span>(count_p!=count_e) next_count=*(count_p++);</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; }</div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="comment">// If mrs is less than the minimum distance to any untested</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="comment">// block, then we are done</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(radp[g],mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; g++;</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="comment">// Load in a block off the worklist, permute it with the</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// symmetry mask, and decode its position. These are all</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// integer bit operations so they should run very fast.</span></div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; q=e[g];q^=m1;q+=m2;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; di=q&amp;127;di-=64;</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; dj=(q&gt;&gt;7)&amp;127;dj-=64;</div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; dk=(q&gt;&gt;14)&amp;127;dk-=64;</div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="comment">// Compute the position in the mask of the current block. If</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="comment">// this lies outside the mask, then skip it. Otherwise, mark</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="comment">// it.</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; ei=di+i;<span class="keywordflow">if</span>(ei&lt;0||ei&gt;=hx) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; ej=dj+j;<span class="keywordflow">if</span>(ej&lt;0||ej&gt;=hy) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; ek=dk+k;<span class="keywordflow">if</span>(ek&lt;0||ek&gt;=hz) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; mijk=mask+ei+hx*(ej+hy*ek);</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; *mijk=mv;</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="comment">// Call the compute_min_max_radius() function. This returns</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="comment">// true if the minimum distance to the block is bigger than the</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="comment">// current mrs, in which case we skip this block and move on.</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="comment">// Otherwise, it computes the maximum distance to the block and</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="comment">// returns it in crs.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">if</span>(compute_min_max_radius(di,dj,dk,fx,fy,fz,gxs,gys,gzs,crs,mrs)) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="comment">// Now compute which region we are going to loop over, adding a</span></div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="comment">// displacement for the periodic cases</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="comment">// If mrs is bigger than the maximum distance to the block,</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="comment">// then we have to test all particles in the block for</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="comment">// intersections. Otherwise, we do additional checks and skip</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="comment">// those particles which can&#39;t possibly intersect the block.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">if</span>(co[ijk]&gt;0) {</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; l=0;x2=x-qx;y2=y-qy;z2=z-qz;</div>
+<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span>(!con.r_ctest(crs,mrs)) {</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; x1=p[ijk][ps*l]-x2;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; y1=p[ijk][ps*l+1]-y2;</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; z1=p[ijk][ps*l+2]-z2;</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span>(!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; l++;</div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; } <span class="keywordflow">while</span> (l&lt;co[ijk]);</div>
+<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; x1=p[ijk][ps*l]-x2;</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; y1=p[ijk][ps*l+1]-y2;</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; z1=p[ijk][ps*l+2]-z2;</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; rs=x1*x1+y1*y1+z1*z1;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span>(con.r_scale_check(rs,mrs,ijk,l)&amp;&amp;!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; l++;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; } <span class="keywordflow">while</span> (l&lt;co[ijk]);</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// If there might not be enough memory on the list for these</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="comment">// additions, then add more</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span>(qu_e&gt;qu_l-18) add_list_memory(qu_s,qu_e);</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// Test the parts of the worklist element which tell us what</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// neighbors of this block are not on the worklist. Store them</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// on the block list, and mark the mask.</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; scan_bits_mask_add(q,mijk,ei,ej,ek,qu_e);</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="comment">// Do a check to see if we&#39;ve reached the radius cutoff</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(radp[g],mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="comment">// We were unable to completely compute the cell based on the blocks in</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">// the worklist, so now we have to go block by block, reading in items</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// off the list</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">while</span>(qu_s!=qu_e) {</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// If we reached the end of the list memory loop back to the</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="comment">// start</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">if</span>(qu_s==qu_l) qu_s=qu;</div>
+<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="comment">// Read in a block off the list, and compute the upper and lower</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="comment">// coordinates in each of the three dimensions</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; ei=*(qu_s++);ej=*(qu_s++);ek=*(qu_s++);</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; xlo=(ei-i)*boxx-fx;xhi=xlo+boxx;</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; ylo=(ej-j)*boxy-fy;yhi=ylo+boxy;</div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; zlo=(ek-k)*boxz-fz;zhi=zlo+boxz;</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="comment">// Carry out plane tests to see if any particle in this block</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="comment">// could possibly intersect the cell</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordflow">if</span>(ei&gt;i) {</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span>(ej&gt;j) {</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(corner_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(corner_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(edge_z_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ej&lt;j) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(corner_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(corner_test(c,xlo,yhi,zhi,xhi,ylo,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(edge_z_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(edge_y_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(edge_y_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(face_x_test(c,xlo,ylo,zlo,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ei&lt;i) {</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">if</span>(ej&gt;j) {</div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(corner_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(corner_test(c,xhi,ylo,zhi,xlo,yhi,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(edge_z_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ej&lt;j) {</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(corner_test(c,xhi,yhi,zlo,xlo,ylo,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(corner_test(c,xhi,yhi,zhi,xlo,ylo,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(edge_z_test(c,xhi,yhi,zlo,xlo,ylo,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(edge_y_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(edge_y_test(c,xhi,ylo,zhi,xlo,yhi,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(face_x_test(c,xhi,ylo,zlo,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span>(ej&gt;j) {</div>
+<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(edge_x_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(edge_x_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(face_y_test(c,xlo,ylo,zlo,xhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ej&lt;j) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(edge_x_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(edge_x_test(c,xlo,yhi,zhi,xhi,ylo,zlo)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">else</span> {<span class="keywordflow">if</span>(face_y_test(c,xlo,yhi,zlo,xhi,zhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span>(ek&gt;k) {<span class="keywordflow">if</span>(face_z_test(c,xlo,ylo,zlo,xhi,yhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ek&lt;k) {<span class="keywordflow">if</span>(face_z_test(c,xlo,ylo,zhi,xhi,yhi)) <span class="keywordflow">continue</span>;}</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">else</span> voro_fatal_error(<span class="stringliteral">&quot;Compute cell routine revisiting central block, which should never\nhappen.&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="comment">// Now compute the region that we are going to test over, and</span></div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// set a displacement vector for the periodic cases</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);</div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="comment">// Loop over all the elements in the block to test for cuts. It</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">// would be possible to exclude some of these cases by testing</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="comment">// against mrs, but this will probably not save time.</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span>(co[ijk]&gt;0) {</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; l=0;x2=x-qx;y2=y-qy;z2=z-qz;</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; x1=p[ijk][ps*l]-x2;</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; y1=p[ijk][ps*l+1]-y2;</div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; z1=p[ijk][ps*l+2]-z2;</div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span>(!c.nplane(x1,y1,z1,rs,<span class="keywordtype">id</span>[ijk][l])) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; l++;</div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; } <span class="keywordflow">while</span> (l&lt;co[ijk]);</div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; }</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="comment">// If there&#39;s not much memory on the block list then add more</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span>((qu_s&lt;=qu_e?(qu_l-qu_e)+(qu_s-qu):qu_s-qu_e)&lt;18) add_list_memory(qu_s,qu_e);</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div>
+<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// Test the neighbors of the current block, and add them to the</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="comment">// block list if they haven&#39;t already been tested</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; add_to_mask(ei,ej,ek,qu_e);</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> * from the cell center to the block is at a corner.</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="comment"> * \param[in] (xl,yl,zl) the relative coordinates of the corner of the block</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="comment"> * closest to the cell center.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="comment"> * \param[in] (xh,yh,zh) the relative coordinates of the corner of the block</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="comment"> * furthest away from the cell center.</span></div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute&lt;c_class&gt;::corner_test</a>(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> zh) {</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; con.r_prime(xl*xl+yl*yl+zl*zl);</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(xh,yl,zl,con.r_cutoff(xl*xh+yl*yl+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,yh,zl,con.r_cutoff(xl*xh+yl*yh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yh,zl,con.r_cutoff(xl*xl+yl*yh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yh,zh,con.r_cutoff(xl*xl+yl*yh+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yl,zh,con.r_cutoff(xl*xl+yl*yl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,yl,zh,con.r_cutoff(xl*xh+yl*yl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;}</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="comment"> * from the cell center to the block is on an edge which points along the x</span></div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="comment"> * direction.</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="comment"> * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the</span></div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"> * \param[in] (yl,zl) the relative y and z coordinates of the corner of the</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment"> * block closest to the cell center.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"> * \param[in] (yh,zh) the relative y and z coordinates of the corner of the</span></div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="comment"> * block furthest away from the cell center.</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::edge_x_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> zh) {</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; con.r_prime(yl*yl+zl*zl);</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(x0,yl,zh,con.r_cutoff(yl*yl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,yl,zh,con.r_cutoff(yl*yl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,yl,zl,con.r_cutoff(yl*yl+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x0,yl,zl,con.r_cutoff(yl*yl+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x0,yh,zl,con.r_cutoff(yl*yh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,yh,zl,con.r_cutoff(yl*yh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;}</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment"> * from the cell center to the block is on an edge which points along the y</span></div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> * direction.</span></div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"> * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> * \param[in] (xl,zl) the relative x and z coordinates of the corner of the</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> * block closest to the cell center.</span></div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> * \param[in] (xh,zh) the relative x and z coordinates of the corner of the</span></div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"> * block furthest away from the cell center.</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::edge_y_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> zh) {</div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; con.r_prime(xl*xl+zl*zl);</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(xl,y0,zh,con.r_cutoff(xl*xl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y1,zh,con.r_cutoff(xl*xl+zl*zh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y1,zl,con.r_cutoff(xl*xl+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y0,zl,con.r_cutoff(xl*xl+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,y0,zl,con.r_cutoff(xl*xh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,y1,zl,con.r_cutoff(xl*xh+zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;}</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment"> * from the cell center to the block is on an edge which points along the z</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"> * direction.</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="comment"> * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the block.</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"> * \param[in] (xl,yl) the relative x and y coordinates of the corner of the</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> * block closest to the cell center.</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"> * \param[in] (xh,yh) the relative x and y coordinates of the corner of the</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="comment"> * block furthest away from the cell center.</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::edge_z_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> z1) {</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; con.r_prime(xl*xl+yl*yl);</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(xl,yh,z0,con.r_cutoff(xl*xl+yl*yh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yh,z1,con.r_cutoff(xl*xl+yl*yh))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yl,z1,con.r_cutoff(xl*xl+yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,yl,z0,con.r_cutoff(xl*xl+yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,yl,z0,con.r_cutoff(xl*xh+yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xh,yl,z1,con.r_cutoff(xl*xh+yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;}</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="comment"> * from the cell center to the block is on a face aligned with the x direction.</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="comment"> * \param[in] xl the minimum distance from the cell center to the face.</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="comment"> * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="comment"> * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::face_x_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1) {</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; con.r_prime(xl*xl);</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(xl,y0,z0,con.r_cutoff(xl*xl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y0,z1,con.r_cutoff(xl*xl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y1,z1,con.r_cutoff(xl*xl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(xl,y1,z0,con.r_cutoff(xl*xl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;}</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="comment"> * from the cell center to the block is on a face aligned with the y direction.</span></div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="comment"> * \param[in] yl the minimum distance from the cell center to the face.</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="comment"> * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the</span></div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="comment"> * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the</span></div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::face_y_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> z1) {</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; con.r_prime(yl*yl);</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(x0,yl,z0,con.r_cutoff(yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x0,yl,z1,con.r_cutoff(yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,yl,z1,con.r_cutoff(yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,yl,z0,con.r_cutoff(yl*yl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;}</div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment">/** This function checks to see whether a particular block can possibly have</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="comment"> * any intersection with a Voronoi cell, for the case when the closest point</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="comment"> * from the cell center to the block is on a face aligned with the z direction.</span></div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="comment"> * \param[in,out] c a reference to a Voronoi cell.</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;<span class="comment"> * \param[in] zl the minimum distance from the cell center to the face.</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="comment"> * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;<span class="comment"> * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;<span class="comment"> * block.</span></div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="comment"> * \return False if the block may intersect, true if does not. */</span></div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::face_z_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1) {</div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; con.r_prime(zl*zl);</div>
+<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects_guess(x0,y0,zl,con.r_cutoff(zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x0,y1,zl,con.r_cutoff(zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,y1,zl,con.r_cutoff(zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span>(c.plane_intersects(x1,y0,zl,con.r_cutoff(zl*zl))) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;}</div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;</div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;<span class="comment">/** This routine checks to see whether a point is within a particular distance</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="comment"> * of a nearby region. If the point is within the distance of the region, then</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="comment"> * the routine returns true, and computes the maximum distance from the point</span></div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="comment"> * to the region. Otherwise, the routine returns false.</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> * \param[in] (di,dj,dk) the position of the nearby region to be tested,</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> * relative to the region that the point is in.</span></div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> * \param[in] (fx,fy,fz) the displacement of the point within its region.</span></div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="comment"> * \param[in] (gxs,gys,gzs) the maximum squared distances from the point to the</span></div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="comment"> * sides of its region.</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="comment"> * \param[out] crs a reference in which to return the maximum distance to the</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment"> * region (only computed if the routine returns false).</span></div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment"> * \param[in] mrs the distance to be tested.</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"> * \return True if the region is further away than mrs, false if the region in</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment"> * within mrs. */</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::compute_min_max_radius(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<span class="keywordtype">double</span> fx,<span class="keywordtype">double</span> fy,<span class="keywordtype">double</span> fz,<span class="keywordtype">double</span> gxs,<span class="keywordtype">double</span> gys,<span class="keywordtype">double</span> gzs,<span class="keywordtype">double</span> &amp;crs,<span class="keywordtype">double</span> mrs) {</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordtype">double</span> xlo,ylo,zlo;</div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">if</span>(di&gt;0) {</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; xlo=di*boxx-fx;</div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; crs=xlo*xlo;</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keywordflow">if</span>(dj&gt;0) {</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; ylo=dj*boxy-fy;</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; crs+=ylo*ylo;</div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; crs+=bxsq+2*(boxx*xlo+boxy*ylo+boxz*zlo);</div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; crs+=bxsq+2*(boxx*xlo+boxy*ylo-boxz*zlo);</div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; crs+=boxx*(2*xlo+boxx)+boxy*(2*ylo+boxy)+gzs;</div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dj&lt;0) {</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; ylo=(dj+1)*boxy-fy;</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; crs+=ylo*ylo;</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; crs+=bxsq+2*(boxx*xlo-boxy*ylo+boxz*zlo);</div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; crs+=bxsq+2*(boxx*xlo-boxy*ylo-boxz*zlo);</div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; crs+=boxx*(2*xlo+boxx)+boxy*(-2*ylo+boxy)+gzs;</div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; crs+=boxz*(2*zlo+boxz);</div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; crs+=boxz*(-2*zlo+boxz);</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; crs+=gzs;</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; }</div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; crs+=gys+boxx*(2*xlo+boxx);</div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(di&lt;0) {</div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; xlo=(di+1)*boxx-fx;</div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; crs=xlo*xlo;</div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span>(dj&gt;0) {</div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; ylo=dj*boxy-fy;</div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; crs+=ylo*ylo;</div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; crs+=bxsq+2*(-boxx*xlo+boxy*ylo+boxz*zlo);</div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; crs+=bxsq+2*(-boxx*xlo+boxy*ylo-boxz*zlo);</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; crs+=boxx*(-2*xlo+boxx)+boxy*(2*ylo+boxy)+gzs;</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dj&lt;0) {</div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; ylo=(dj+1)*boxy-fy;</div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; crs+=ylo*ylo;</div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; crs+=bxsq+2*(-boxx*xlo-boxy*ylo+boxz*zlo);</div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; crs+=bxsq+2*(-boxx*xlo-boxy*ylo-boxz*zlo);</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; crs+=boxx*(-2*xlo+boxx)+boxy*(-2*ylo+boxy)+gzs;</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; crs+=boxz*(2*zlo+boxz);</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; crs+=boxz*(-2*zlo+boxz);</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; crs+=gzs;</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; }</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; crs+=gys+boxx*(-2*xlo+boxx);</div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; }</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">if</span>(dj&gt;0) {</div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; ylo=dj*boxy-fy;</div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; crs=ylo*ylo;</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; crs+=boxz*(2*zlo+boxz);</div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; crs+=boxz*(-2*zlo+boxz);</div>
+<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; crs+=gzs;</div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; crs+=boxy*(2*ylo+boxy);</div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dj&lt;0) {</div>
+<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; ylo=(dj+1)*boxy-fy;</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; crs=ylo*ylo;</div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; zlo=dk*boxz-fz;</div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; crs+=boxz*(2*zlo+boxz);</div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; zlo=(dk+1)*boxz-fz;</div>
+<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; crs+=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; crs+=boxz*(-2*zlo+boxz);</div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; crs+=gzs;</div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
+<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; crs+=boxy*(-2*ylo+boxy);</div>
+<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {</div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; zlo=dk*boxz-fz;crs=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; crs+=boxz*(2*zlo+boxz);</div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {</div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; zlo=(dk+1)*boxz-fz;crs=zlo*zlo;<span class="keywordflow">if</span>(con.r_ctest(crs,mrs)) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; crs+=boxz*(-2*zlo+boxz);</div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; crs=0;</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; voro_fatal_error(<span class="stringliteral">&quot;Min/max radius function called for central block, which should never\nhappen.&quot;</span>,<a class="code" href="config_8hh.html#ad8e0de9d48da06e86dd87884e4a2d47e">VOROPP_INTERNAL_ERROR</a>);</div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; crs+=gys;</div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; }</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; crs+=gxs;</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; }</div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;}</div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;<span class="keywordtype">bool</span> voro_compute&lt;c_class&gt;::compute_min_radius(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<span class="keywordtype">double</span> fx,<span class="keywordtype">double</span> fy,<span class="keywordtype">double</span> fz,<span class="keywordtype">double</span> mrs) {</div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordtype">double</span> t,crs;</div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;</div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span>(di&gt;0) {t=di*boxx-fx;crs=t*t;}</div>
+<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(di&lt;0) {t=(di+1)*boxx-fx;crs=t*t;}</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">else</span> crs=0;</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">if</span>(dj&gt;0) {t=dj*boxy-fy;crs+=t*t;}</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dj&lt;0) {t=(dj+1)*boxy-fy;crs+=t*t;}</div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">if</span>(dk&gt;0) {t=dk*boxz-fz;crs+=t*t;}</div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(dk&lt;0) {t=(dk+1)*boxz-fz;crs+=t*t;}</div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;</div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <span class="keywordflow">return</span> crs&gt;con.r_max_add(mrs);</div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;}</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;<span class="comment">/** Adds memory to the queue.</span></div>
+<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="comment"> * \param[in,out] qu_s a reference to the queue start pointer.</span></div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;<span class="comment"> * \param[in,out] qu_e a reference to the queue end pointer. */</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> voro_compute&lt;c_class&gt;::add_list_memory(<span class="keywordtype">int</span>*&amp; qu_s,<span class="keywordtype">int</span>*&amp; qu_e) {</div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; qu_size&lt;&lt;=1;</div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordtype">int</span> *qu_n=<span class="keyword">new</span> <span class="keywordtype">int</span>[qu_size],*qu_c=qu_n;</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="preprocessor">#if VOROPP_VERBOSE &gt;=2</span></div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="preprocessor"></span> fprintf(stderr,<span class="stringliteral">&quot;List memory scaled up to %d\n&quot;</span>,qu_size);</div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="preprocessor"></span> <span class="keywordflow">if</span>(qu_s&lt;=qu_e) {</div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">while</span>(qu_s&lt;qu_e) *(qu_c++)=*(qu_s++);</div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; <span class="keywordflow">while</span>(qu_s&lt;qu_l) *(qu_c++)=*(qu_s++);qu_s=qu;</div>
+<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; <span class="keywordflow">while</span>(qu_s&lt;qu_e) *(qu_c++)=*(qu_s++);</div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; }</div>
+<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">delete</span> [] qu;</div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; qu_s=qu=qu_n;</div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; qu_l=qu+qu_size;</div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; qu_e=qu_c;</div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;}</div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="comment">// Explicit template instantiation</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="keyword">template</span> <a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute&lt;container&gt;::voro_compute</a>(container&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="keyword">template</span> <a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute&lt;container_poly&gt;::voro_compute</a>(container_poly&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container&gt;::compute_cell</a>(voronoicell&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container&gt;::compute_cell</a>(voronoicell_neighbor&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro_compute&lt;container&gt;::find_voronoi_cell</a>(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,particle_record&amp;,<span class="keywordtype">double</span>&amp;);</div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_poly&gt;::compute_cell</a>(voronoicell&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_poly&gt;::compute_cell</a>(voronoicell_neighbor&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro_compute&lt;container_poly&gt;::find_voronoi_cell</a>(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,particle_record&amp;,<span class="keywordtype">double</span>&amp;);</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;</div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160;<span class="comment">// Explicit template instantiation</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;<span class="keyword">template</span> <a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute&lt;container_periodic&gt;::voro_compute</a>(container_periodic&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;<span class="keyword">template</span> <a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute&lt;container_periodic_poly&gt;::voro_compute</a>(container_periodic_poly&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_periodic&gt;::compute_cell</a>(voronoicell&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_periodic&gt;::compute_cell</a>(voronoicell_neighbor&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro_compute&lt;container_periodic&gt;::find_voronoi_cell</a>(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,particle_record&amp;,<span class="keywordtype">double</span>&amp;);</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_periodic_poly&gt;::compute_cell</a>(voronoicell&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;<span class="keyword">template</span> <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">voro_compute&lt;container_periodic_poly&gt;::compute_cell</a>(voronoicell_neighbor&amp;,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>);</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;<span class="keyword">template</span> <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">voro_compute&lt;container_periodic_poly&gt;::find_voronoi_cell</a>(<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">double</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,<span class="keywordtype">int</span>,particle_record&amp;,<span class="keywordtype">double</span>&amp;);</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160;</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__compute_8hh.html b/lib/voro++/html/v__compute_8hh.html
new file mode 100644
index 000000000..0ebb7c004
--- /dev/null
+++ b/lib/voro++/html/v__compute_8hh.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_compute.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">v_compute.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the voro_compute template and related classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="worklist_8hh_source.html">worklist.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+</div>
+<p><a href="v__compute_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1particle__record.html">voro::particle_record</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Structure for holding information about a particle. <a href="structvoro_1_1particle__record.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classvoro_1_1voro__compute.html">voro::voro_compute&lt; c_class &gt;</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template for carrying out Voronoi cell computations. <a href="classvoro_1_1voro__compute.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/v__compute_8hh_source.html b/lib/voro++/html/v__compute_8hh_source.html
new file mode 100644
index 000000000..d6e217b78
--- /dev/null
+++ b/lib/voro++/html/v__compute_8hh_source.html
@@ -0,0 +1,204 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: v_compute.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">v_compute.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="v__compute_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file v_compute.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the voro_compute template and related classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_V_COMPUTE_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_V_COMPUTE_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="worklist_8hh.html" title="Header file for setting constants used in the block worklists that are used during cell computation...">worklist.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/** \brief Structure for holding information about a particle.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * This small structure holds information about a single particle, and is used</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * by several of the routines in the voro_compute template for passing</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * information by reference between functions. */</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html"> 24</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> /** The index of the block that the particle is within. */</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b"> 26</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structvoro_1_1particle__record.html#ac65fa5fc929dda2dd454369eab68ef8b">ijk</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> /** The number of particle within its block. */</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc"> 28</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structvoro_1_1particle__record.html#a5faf0f540ad3ee3ffcee5cae5a8b20fc">l</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> /** The x-index of the block. */</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15"> 30</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structvoro_1_1particle__record.html#a36ea6a17eb9dc145a3e5f14720b30d15">di</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> /** The y-index of the block. */</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab"> 32</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structvoro_1_1particle__record.html#a25c3b01e32ccdb6bb37e279f14899bab">dj</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> /** The z-index of the block. */</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077"> 34</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="structvoro_1_1particle__record.html#a56e78394cc8a114cedf353a2d54c0077">dk</a>;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;};</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/** \brief Template for carrying out Voronoi cell computations. */</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> c_<span class="keyword">class</span>&gt;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voro__compute.html" title="Template for carrying out Voronoi cell computations.">voro_compute</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> /** A reference to the container class on which to carry out*/</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a64cc1ec4cea792c438c3767918e265c9"> 42</a></span>&#160; c_class &amp;<a class="code" href="classvoro_1_1voro__compute.html#a64cc1ec4cea792c438c3767918e265c9">con</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> /** The size of an internal computational block in the x</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> * direction. */</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a9db4da1c50c7777ea67a3340457772da"> 45</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a9db4da1c50c7777ea67a3340457772da">boxx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> /** The size of an internal computational block in the y</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * direction. */</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a0612cf10336241a8b39f53c684b215f4"> 48</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a0612cf10336241a8b39f53c684b215f4">boxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> /** The size of an internal computational block in the z</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * direction. */</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a437a130ef80dc2e0939060abc5bcb462"> 51</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a437a130ef80dc2e0939060abc5bcb462">boxz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> /** The inverse box length in the x direction, set to</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * nx/(bx-ax). */</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a4d1613a14697f4aff5b743d64db661b6"> 54</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a4d1613a14697f4aff5b743d64db661b6">xsp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> /** The inverse box length in the y direction, set to</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * ny/(by-ay). */</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a384a2be3d85828fc0f7114d93096ed66"> 57</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a384a2be3d85828fc0f7114d93096ed66">ysp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> /** The inverse box length in the z direction, set to</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * nz/(bz-az). */</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a0ac78232aa7234e0d17adf763c0f3c9f"> 60</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> <a class="code" href="classvoro_1_1voro__compute.html#a0ac78232aa7234e0d17adf763c0f3c9f">zsp</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> /** The number of boxes in the x direction for the searching mask. */</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#aaf168ea2924df41ece6ea2771aebbb72"> 62</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#aaf168ea2924df41ece6ea2771aebbb72">hx</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> /** The number of boxes in the y direction for the searching mask. */</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a8693c6f8e16e426f7b870a2b8bd4330d"> 64</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#a8693c6f8e16e426f7b870a2b8bd4330d">hy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> /** The number of boxes in the z direction for the searching mask. */</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a9a64242973c903d26973de1fbb03f93f"> 66</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#a9a64242973c903d26973de1fbb03f93f">hz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> /** A constant, set to the value of hx multiplied by hy, which</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * is used in the routines which step through mask boxes in</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * sequence. */</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a157da0cf7efcdfc256c04a430962360e"> 70</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#a157da0cf7efcdfc256c04a430962360e">hxy</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> /** A constant, set to the value of hx*hy*hz, which is used in</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * the routines which step through mask boxes in sequence. */</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb"> 73</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb">hxyz</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> /** The number of floating point entries to store for each</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * particle. */</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#ab3dbe9810de52793dfaf753b8504567c"> 76</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classvoro_1_1voro__compute.html#ab3dbe9810de52793dfaf753b8504567c">ps</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> /** This array holds the numerical IDs of each particle in each</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> * computational box. */</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a9dd2372829ff4078615f994fc36a4c76"> 79</a></span>&#160; <span class="keywordtype">int</span> **<a class="code" href="classvoro_1_1voro__compute.html#a9dd2372829ff4078615f994fc36a4c76">id</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> /** A two dimensional array holding particle positions. For the</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * derived container_poly class, this also holds particle</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * radii. */</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a57e2978b1a5fac350a35f7358502b2eb"> 83</a></span>&#160; <span class="keywordtype">double</span> **<a class="code" href="classvoro_1_1voro__compute.html#a57e2978b1a5fac350a35f7358502b2eb">p</a>;<span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> /** An array holding the number of particles within each</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * computational box of the container. */</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a3f2f879cc43a586b602a2f2ce14294af"> 86</a></span>&#160; <span class="keywordtype">int</span> *<a class="code" href="classvoro_1_1voro__compute.html#a3f2f879cc43a586b602a2f2ce14294af">co</a>;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classvoro_1_1voro__compute.html#a4f268f7749e431df1a54b2dd17bb090f">voro_compute</a>(c_class &amp;con_,<span class="keywordtype">int</span> hx_,<span class="keywordtype">int</span> hy_,<span class="keywordtype">int</span> hz_);<span class="comment"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> /** The class destructor frees the dynamically allocated memory</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * for the mask and queue. */</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classvoro_1_1voro__compute.html#a7ce0dfe1b2ef4eb14832a82c01360e63"> 90</a></span>&#160; <a class="code" href="classvoro_1_1voro__compute.html#a7ce0dfe1b2ef4eb14832a82c01360e63">~voro_compute</a>() {</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">delete</span> [] qu;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">delete</span> [] mask;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classvoro_1_1voro__compute.html#ab08b085875db63f46b0bcecd57bedea9">compute_cell</a>(v_cell &amp;c,<span class="keywordtype">int</span> ijk,<span class="keywordtype">int</span> s,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck);</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classvoro_1_1voro__compute.html#aa0b01474a0cf0b230b736e7352404d8d">find_voronoi_cell</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> ci,<span class="keywordtype">int</span> cj,<span class="keywordtype">int</span> ck,<span class="keywordtype">int</span> ijk,<a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> &amp;w,<span class="keywordtype">double</span> &amp;mrs);</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> /** A constant set to boxx*boxx+boxy*boxy+boxz*boxz, which is</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * frequently used in the computation. */</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> bxsq;<span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> /** This sets the current value being used to mark tested blocks</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * in the mask. */</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mv;<span class="comment"></span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> /** The current size of the search list. */</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">int</span> qu_size;<span class="comment"></span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> /** A pointer to the array of worklists. */</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *wl;<span class="comment"></span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> /** An pointer to the array holding the minimum distances</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> * associated with the worklists. */</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">double</span> *mrad;<span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> /** This array is used during the cell computation to determine</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * which blocks have been considered. */</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *mask;<span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> /** An array is used to store the queue of blocks to test</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * during the Voronoi cell computation. */</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> *qu;<span class="comment"></span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> /** A pointer to the end of the queue array, used to determine</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * when the queue is full. */</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> *qu_l;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">bool</span> corner_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> zh);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> edge_x_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> zh);</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> edge_y_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> zh);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> edge_z_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> xh,<span class="keywordtype">double</span> yh,<span class="keywordtype">double</span> z1);</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> face_x_test(v_cell &amp;c,<span class="keywordtype">double</span> xl,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> y1,<span class="keywordtype">double</span> z1);</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> face_y_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> yl,<span class="keywordtype">double</span> z0,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> z1);</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> face_z_test(v_cell &amp;c,<span class="keywordtype">double</span> x0,<span class="keywordtype">double</span> y0,<span class="keywordtype">double</span> zl,<span class="keywordtype">double</span> x1,<span class="keywordtype">double</span> y1);</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordtype">bool</span> compute_min_max_radius(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<span class="keywordtype">double</span> fx,<span class="keywordtype">double</span> fy,<span class="keywordtype">double</span> fz,<span class="keywordtype">double</span> gx,<span class="keywordtype">double</span> gy,<span class="keywordtype">double</span> gz,<span class="keywordtype">double</span>&amp; crs,<span class="keywordtype">double</span> mrs);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordtype">bool</span> compute_min_radius(<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<span class="keywordtype">double</span> fx,<span class="keywordtype">double</span> fy,<span class="keywordtype">double</span> fz,<span class="keywordtype">double</span> mrs);</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> add_to_mask(<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">int</span> *&amp;qu_e);</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> scan_bits_mask_add(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> q,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *mijk,<span class="keywordtype">int</span> ei,<span class="keywordtype">int</span> ej,<span class="keywordtype">int</span> ek,<span class="keywordtype">int</span> *&amp;qu_e);</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> scan_all(<span class="keywordtype">int</span> ijk,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z,<span class="keywordtype">int</span> di,<span class="keywordtype">int</span> dj,<span class="keywordtype">int</span> dk,<a class="code" href="structvoro_1_1particle__record.html" title="Structure for holding information about a particle.">particle_record</a> &amp;w,<span class="keywordtype">double</span> &amp;mrs);</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">void</span> add_list_memory(<span class="keywordtype">int</span>*&amp; qu_s,<span class="keywordtype">int</span>*&amp; qu_e);<span class="comment"></span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> /** Resets the mask in cases where the mask counter wraps</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * around. */</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> reset_mask() {</div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *mp(mask);mp&lt;mask+<a class="code" href="classvoro_1_1voro__compute.html#a8f5d72ef1dcd441d760d793ed0f935eb">hxyz</a>;mp++) *mp=0;</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;};</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/voro_09_09_8cc.html b/lib/voro++/html/voro_09_09_8cc.html
new file mode 100644
index 000000000..0801040a7
--- /dev/null
+++ b/lib/voro++/html/voro_09_09_8cc.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro++.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">voro++.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A file that loads all of the function implementation files.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="cell_8cc_source.html">cell.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8cc_source.html">common.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__base_8cc_source.html">v_base.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container_8cc_source.html">container.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="unitcell_8cc_source.html">unitcell.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container__prd_8cc_source.html">container_prd.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="pre__container_8cc_source.html">pre_container.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__compute_8cc_source.html">v_compute.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="c__loops_8cc_source.html">c_loops.cc</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="wall_8cc_source.html">wall.cc</a>&quot;</code><br/>
+</div>
+<p><a href="voro_09_09_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="voro_09_09_8cc_source.html">voro++.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/voro_09_09_8cc_source.html b/lib/voro++/html/voro_09_09_8cc_source.html
new file mode 100644
index 000000000..10ff73bb0
--- /dev/null
+++ b/lib/voro++/html/voro_09_09_8cc_source.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro++.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">voro++.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="voro_09_09_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file voro++.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief A file that loads all of the function implementation files. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8cc.html" title="Function implementations for the voronoicell and related classes.">cell.cc</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8cc.html" title="Implementations of the small helper functions.">common.cc</a>&quot;</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base_8cc.html" title="Function implementations for the base Voronoi container class.">v_base.cc</a>&quot;</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8cc.html" title="Function implementations for the container and related classes.">container.cc</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="unitcell_8cc.html" title="Function implementations for the unitcell class.">unitcell.cc</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container__prd_8cc.html" title="Function implementations for the container_periodic_base and related classes.">container_prd.cc</a>&quot;</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pre__container_8cc.html" title="Function implementations for the pre_container and related classes.">pre_container.cc</a>&quot;</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__compute_8cc.html" title="Function implementantions for the voro_compute template.">v_compute.cc</a>&quot;</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8cc.html" title="Function implementations for the loop classes.">c_loops.cc</a>&quot;</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="wall_8cc.html" title="Function implementations for the derived wall classes.">wall.cc</a>&quot;</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/voro_09_09_8hh.html b/lib/voro++/html/voro_09_09_8hh.html
new file mode 100644
index 000000000..c843f7301
--- /dev/null
+++ b/lib/voro++/html/voro_09_09_8hh.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro++.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">voro++.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>A file that loads all of the Voro++ header files.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="config_8hh_source.html">config.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="common_8hh_source.html">common.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__base_8hh_source.html">v_base.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="rad__option_8hh_source.html">rad_option.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container_8hh_source.html">container.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="unitcell_8hh_source.html">unitcell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container__prd_8hh_source.html">container_prd.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="pre__container_8hh_source.html">pre_container.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="v__compute_8hh_source.html">v_compute.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="c__loops_8hh_source.html">c_loops.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="wall_8hh_source.html">wall.hh</a>&quot;</code><br/>
+</div>
+<p><a href="voro_09_09_8hh_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="voro_09_09_8hh_source.html">voro++.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/voro_09_09_8hh_source.html b/lib/voro++/html/voro_09_09_8hh_source.html
new file mode 100644
index 000000000..f2a2c5041
--- /dev/null
+++ b/lib/voro++/html/voro_09_09_8hh_source.html
@@ -0,0 +1,388 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: voro++.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">voro++.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="voro_09_09_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file voro++.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief A file that loads all of the Voro++ header files. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">/** \mainpage Voro++ class reference manual</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * \section intro Introduction</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * Voro++ is a software library for carrying out three-dimensional computations</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * of the Voronoi tessellation. A distinguishing feature of the Voro++ library</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * is that it carries out cell-based calculations, computing the Voronoi cell</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * for each particle individually, rather than computing the Voronoi</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * tessellation as a global network of vertices and edges. It is particularly</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * well-suited for applications that rely on cell-based statistics, where</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * features of Voronoi cells (eg. volume, centroid, number of faces) can be</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * used to analyze a system of particles.</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> * Voro++ is written in C++ and can be built as a static library that can be</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * linked to. This manual provides a reference for every function in the class</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * structure. For a general overview of the program, see the Voro++ website at</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * http://math.lbl.gov/voro++/ and in particular the example programs at</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * http://math.lbl.gov/voro++/examples/ that demonstrate many of the library&#39;s</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * features.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * \section class C++ class structure</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> * The code is structured around several C++ classes. The voronoicell_base</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * class contains all of the routines for constructing a single Voronoi cell.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * It represents the cell as a collection of vertices that are connected by</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * edges, and there are routines for initializing, making, and outputting the</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> * cell. The voronoicell_base class form the base of the voronoicell and</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * voronoicell_neighbor classes, which add specialized routines depending on</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * whether neighboring particle ID information for each face must be tracked or</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * not. Collectively, these classes are referred to as &quot;voronoicell classes&quot;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> * within the documentation.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * There is a hierarchy of classes that represent three-dimensional particle</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * systems. All of these are derived from the voro_base class, which contains</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * constants that divide a three-dimensional system into a rectangular grid of</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> * equally-sized rectangular blocks; this grid is used for computational</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * efficiency during the Voronoi calculations.</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> * The container_base, container, and container_poly are then derived from the</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * voro_base class to represent a particle system in a specific</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * three-dimensional rectangular box using both periodic and non-periodic</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * boundary conditions. In addition, the container_periodic_base,</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * container_periodic, and container_periodic_poly classes represent</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * a particle system in a three-dimensional non-orthogonal periodic domain,</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> * defined by three periodicity vectors that represent a parallelepiped.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * Collectively, these classes are referred to as &quot;container classes&quot; within</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * the documentation.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * The voro_compute template encapsulates all of the routines for computing</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * Voronoi cells. Each container class has a voro_compute template within</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * it, that accesses the container&#39;s particle system, and computes the Voronoi</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * cells.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * There are several wall classes that can be used to apply certain boundary</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * conditions using additional plane cuts during the Voronoi cell compution.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> * The code also contains a number of small loop classes, c_loop_all,</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> * c_loop_subset, c_loop_all_periodic, and c_loop_order that can be used to</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * iterate over a certain subset of particles in a container. The latter class</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * makes use of a special particle_order class that stores a specific order of</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * particles within the container. The library also contains the classes</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * pre_container_base, pre_container, and pre_container_poly, that can be used</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * as temporary storage when importing data of unknown size.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * \section voronoicell The voronoicell classes</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * The voronoicell class represents a single Voronoi cell as a convex</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * polyhedron, with a set of vertices that are connected by edges. The class</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * contains a variety of functions that can be used to compute and output the</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * Voronoi cell corresponding to a particular particle. The command init()</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * can be used to initialize a cell as a large rectangular box. The Voronoi cell</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> * can then be computed by repeatedly cutting it with planes that correspond to</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> * the perpendicular bisectors between that particle and its neighbors.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> * This is achieved by using the plane() routine, which will recompute the</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> * cell&#39;s vertices and edges after cutting it with a single plane. This is the</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> * key routine in voronoicell class. It begins by exploiting the convexity</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> * of the underlying cell, tracing between edges to work out if the cell</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> * intersects the cutting plane. If it does not intersect, then the routine</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> * immediately exits. Otherwise, it finds an edge or vertex that intersects</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> * the plane, and from there, traces out a new face on the cell, recomputing</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * the edge and vertex structure accordingly.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> * Once the cell is computed, there are many routines for computing features of</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> * the the Voronoi cell, such as its volume, surface area, or centroid. There</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> * are also many routines for outputting features of the Voronoi cell, or</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> * writing its shape in formats that can be read by Gnuplot or POV-Ray.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> * \subsection internal Internal data representation</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> * The voronoicell class has a public member p representing the</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> * number of vertices. The polyhedral structure of the cell is stored</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * in the following arrays:</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * - pts: a one-dimensional array of floating point numbers, that represent the</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * position vectors x_0, x_1, ..., x_{p-1} of the polyhedron vertices.</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * - nu: the order of each vertex n_0, n_1, ..., n_{p-1}, corresponding to</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * the number of other vertices to which each is connected.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * - ed: a two-dimensional table of edges and relations. For the ith vertex,</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * ed[i] has 2n_i+1 elements. The first n_i elements are the edges e(j,i),</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * where e(j,i) is the jth neighbor of vertex i. The edges are ordered</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> * according to a right-hand rule with respect to an outward-pointing normal.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> * The next n_i elements are the relations l(j,i) which satisfy the property</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> * e(l(j,i),e(j,i)) = i. The final element of the ed[i] list is a back</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> * pointer used in memory allocation.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> * In a very large number of cases, the values of n_i will be 3. This is because</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> * the only way that a higher-order vertex can be created in the plane()</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> * routine is if the cutting plane perfectly intersects an existing vertex. For</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> * random particle arrangements with position vectors specified to double</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> * precision this should happen very rarely. A preliminary version of this code</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> * was quite successful with only making use of vertices of order 3. However,</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> * when calculating millions of cells, it was found that this approach is not</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> * robust, since a single floating point error can invalidate the computation.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> * This can also be a problem for cases featuring crystalline arrangements of</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> * particles where the corresponding Voronoi cells may have high-order vertices</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> * by construction.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> * Because of this, Voro++ takes the approach that it if an existing vertex is</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> * within a small numerical tolerance of the cutting plane, it is treated as</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> * being exactly on the plane, and the polyhedral topology is recomputed</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> * accordingly. However, while this improves robustness, it also adds the</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> * complexity that n_i may no longer always be 3. This causes memory management</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> * to be significantly more complicated, as different vertices require a</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> * different number of elements in the ed[][] array. To accommodate this, the</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> * voronoicell class allocated edge memory in a different array called mep[][],</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> * in such a way that all vertices of order k are held in mep[k]. If vertex</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> * i has order k, then ed[i] points to memory within mep[k]. The array ed[][]</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> * is never directly initialized as a two-dimensional array itself, but points</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> * at allocations within mep[][]. To the user, it appears as though each row of</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> * ed[][] has a different number of elements. When vertices are added or</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> * deleted, care must be taken to reorder and reassign elements in these</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> * arrays.</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> * During the plane() routine, the code traces around the vertices of the cell,</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"> * and adds new vertices along edges which intersect the cutting plane to</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * create a new face. The values of l(j,i) are used in this computation, as</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * when the code is traversing from one vertex on the cell to another, this</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> * information allows the code to immediately work out which edge of a vertex</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> * points back to the one it came from. As new vertices are created, the l(j,i)</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> * are also updated to ensure consistency. To ensure robustness, the plane</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> * cutting algorithm should work with any possible combination of vertices</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> * which are inside, outside, or exactly on the cutting plane.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> * Vertices exactly on the cutting plane create some additional computational</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> * difficulties. If there are two marginal vertices connected by an existing</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> * edge, then it would be possible for duplicate edges to be created between</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> * those two vertices, if the plane routine traces along both sides of this</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> * edge while constructing the new face. The code recognizes these cases and</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> * prevents the double edge from being formed. Another possibility is the</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> * formation of vertices of order two or one. At the end of the plane cutting</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> * routine, the code checks to see if any of these are present, removing the</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> * order one vertices by just deleting them, and removing the order two</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> * vertices by connecting the two neighbors of each vertex together. It is</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> * possible that the removal of a single low-order vertex could result in the</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> * creation of additional low-order vertices, so the process is applied</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> * recursively until no more are left.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> * \section container The container classes</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> * There are four container classes available for general usage: container,</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> * container_poly, container_periodic, and container_periodic_poly. Each of</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> * these represent a system of particles in a specific three-dimensional</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> * geometry. They contain routines for importing particles from a text file,</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> * and adding particles individually. They also contain a large number of</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> * analyzing and outputting the particle system. Internally, the routines that</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> * compute Voronoi cells do so by making use of the voro_compute template.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> * Each container class contains routines that tell the voro_compute template</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> * about the specific geometry of this container.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> * \section voro_compute The voro_compute template</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> * The voro_compute template encapsulates the routines for carrying out the</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> * Voronoi cell computations. It contains data structures suchs as a mask and a</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> * queue that are used in the computations. The voro_compute template is</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> * associated with a specific container class, and during the computation, it</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> * calls routines in the container class to access the particle positions that</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> * are stored there.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> * The key routine in this class is compute_cell(), which makes use of a</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"> * voronoicell class to construct a Voronoi cell for a specific particle in the</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> * container. The basic approach that this function takes is to repeatedly cut</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> * the Voronoi cell by planes corresponding neighboring particles, and stop</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> * when it recognizes that all the remaining particles in the container are too</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> * far away to possibly influence cell&#39;s shape. The code makes use of two</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> * possible methods for working out when a cell computation is complete:</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> * - Radius test: if the maximum distance of a Voronoi cell</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> * vertex from the cell center is R, then no particles more than a distance</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> * 2R away can possibly influence the cell. This a very fast computation to</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> * do, but it has no directionality: if the cell extends a long way in one</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> * direction then particles a long distance in other directions will still</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> * need to be tested.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> * - Region test: it is possible to test whether a specific region can</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> * possibly influence the cell by applying a series of plane tests at the</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> * point on the region which is closest to the Voronoi cell center. This is a</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> * slower computation to do, but it has directionality.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> * Another useful observation is that the regions that need to be tested are</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> * simply connected, meaning that if a particular region does not need to be</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> * tested, then neighboring regions which are further away do not need to be</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> * tested.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> * For maximum efficiency, it was found that a hybrid approach making use of</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> * both of the above tests worked well in practice. Radius tests work well for</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> * the first few blocks, but switching to region tests after then prevent the</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> * code from becoming extremely slow, due to testing over very large spherical</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> * shells of particles. The compute_cell() routine therefore takes the</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> * following approach:</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> * - Initialize the voronoicell class to fill the entire computational domain.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment"> * - Cut the cell by any wall objects that have been added to the container.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> * - Apply plane cuts to the cell corresponding to the other particles which</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"> * are within the current particle&#39;s region.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment"> * - Test over a pre-computed worklist of neighboring regions, that have been</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment"> * ordered according to the minimum distance away from the particle&#39;s</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"> * position. Apply radius tests after every few regions to see if the</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment"> * calculation can terminate.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> * - If the code reaches the end of the worklist, add all the neighboring</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"> * regions to a new list.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> * - Carry out a region test on the first item of the list. If the region needs</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"> * to be tested, apply the plane() routine for all of its particles, and then</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> * add any neighboring regions to the end of the list that need to be tested.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> * Continue until the list has no elements left.</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> * The compute_cell() routine forms the basis of many other routines, such as</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> * store_cell_volumes() and draw_cells_gnuplot() that can be used to calculate</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> * and draw the cells in a container.</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> * \section walls Wall computation</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"> * Wall computations are handled by making use of a pure virtual wall class.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> * Specific wall types are derived from this class, and require the</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> * specification of two routines: point_inside() that tests to see if a point</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> * is inside a wall or not, and cut_cell() that cuts a cell according to the</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> * wall&#39;s position. The walls can be added to the container using the</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> * add_wall() command, and these are called each time a compute_cell() command</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> * is carried out. At present, wall types for planes, spheres, cylinders, and</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> * cones are provided, although custom walls can be added by creating new</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> * classes derived from the pure virtual class. Currently all wall types</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> * approximate the wall surface with a single plane, which produces some small</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> * errors, but generally gives good results for dense particle packings in</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> * direct contact with a wall surface. It would be possible to create more</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> * accurate walls by making cut_cell() routines that approximate the curved</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> * surface with multiple plane cuts.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> * The wall objects can used for periodic calculations, although to obtain</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> * valid results, the walls should also be periodic as well. For example, in a</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> * domain that is periodic in the x direction, a cylinder aligned along the x</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> * axis could be added. At present, the interior of all wall objects are convex</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> * domains, and consequently any superposition of them will be a convex domain</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> * also. Carrying out computations in non-convex domains poses some problems,</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> * since this could theoretically lead to non-convex Voronoi cells, which the</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * internal data representation of the voronoicell class does not support. For</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * non-convex cases where the wall surfaces feature just a small amount of</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> * negative curvature (eg. a torus) approximating the curved surface with a</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> * single plane cut may give an acceptable level of accuracy. For non-convex</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> * cases that feature internal angles, the best strategy may be to decompose</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> * the domain into several convex subdomains, carry out a calculation in each,</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> * and then add the results together. The voronoicell class cannot be easily</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> * modified to handle non-convex cells as this would fundamentally alter the</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> * algorithms that it uses, and cases could arise where a single plane cut</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> * could create several new faces as opposed to just one.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> * \section loops Loop classes</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> * The container classes have a number of simple routines for calculating</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> * Voronoi cells for all particles within them. However, in some situations it</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"> * is desirable to iterate over a specific subset of particles. This can be</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> * achieved with the c_loop classes that are all derived from the c_loop_base</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> * class. Each class can iterate over a specific subset of particles in a</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> * container. There are three loop classes for use with the container and</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> * container_poly classes:</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> * - c_loop_all will loop over all of the particles in a container.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"> * - c_loop_subset will loop over a subset of particles in a container that lie</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> * within some geometrical region. It can loop over particles in a</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> * rectangular box, particles in a sphere, or particles that lie within</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> * specific internal computational blocks.</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> * - c_loop_order will loop over a specific list of particles that were</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> * previously stored in a particle_order class.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> * Several of the key routines within the container classes (such as</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> * draw_cells_gnuplot and print_custom) have versions where they can be passed</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * a loop class to use. Loop classes can also be used directly and there are</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> * some examples on the library website that demonstrate this. It is also</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> * possible to write custom loop classes.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> * In addition to the loop classes mentioned above, there is also a</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> * c_loop_all_periodic class, that is specifically for use with the</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> * container_periodic and container_periodic_poly classes. Since the data</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> * structures of these containers differ considerably, it requires a different</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> * loop class that is not interoperable with the others.</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> * \section pre_container The pre_container classes</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * Voro++ makes use of internal computational grid of blocks that are used to</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * configure the code for maximum efficiency. As discussed on the library</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * website, the best performance is achieved for around 5 particles per block,</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * with anything in the range from 3 to 12 giving good performance. Usually</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * the size of the grid can be chosen by ensuring that the number of blocks is</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> * equal to the number of particles divided by 5.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> * However, this can be difficult to choose in cases when the number of</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> * particles is not known a priori, and in thes cases the pre_container classes</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> * can be used. They can import an arbitrary number of particle positions from</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> * a file, dynamically allocating memory in chunks as necessary. Once particles</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> * are imported, they can guess an optimal block arrangement to use for the</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> * container class, and then transfer the particles to the container. By</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> * default, this procedure is used by the command-line utility to enable it to</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="comment"> * work well with arbitrary sizes of input data.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> * The pre_container class can be used when no particle radius information is</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"> * available, and the pre_container_poly class can be used when radius</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> * information is available. At present, the pre_container classes can only be</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"> * used with the container and container_poly classes. They do not support</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> * the container_periodic and container_periodic_poly classes. */</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#ifndef VOROPP_HH</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_HH</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="config_8hh.html" title="Master configuration file for setting various compile-time options.">config.hh</a>&quot;</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8hh.html" title="Header file for the small helper functions.">common.hh</a>&quot;</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__base_8hh.html" title="Header file for the base Voronoi container class.">v_base.hh</a>&quot;</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rad__option_8hh.html" title="Header file for the classes encapsulating functionality for the regular and radical Voronoi tessellat...">rad_option.hh</a>&quot;</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8hh.html" title="Header file for the container_base and related classes.">container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="unitcell_8hh.html" title="Header file for the unitcell class.">unitcell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container__prd_8hh.html" title="Header file for the container_periodic_base and related classes.">container_prd.hh</a>&quot;</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="pre__container_8hh.html" title="Header file for the pre_container and related classes.">pre_container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="v__compute_8hh.html" title="Header file for the voro_compute template and related classes.">v_compute.hh</a>&quot;</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="c__loops_8hh.html" title="Header file for the loop classes.">c_loops.hh</a>&quot;</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="wall_8hh.html" title="Header file for the derived wall classes.">wall.hh</a>&quot;</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/wall_8cc.html b/lib/voro++/html/wall_8cc.html
new file mode 100644
index 000000000..9907d0ba4
--- /dev/null
+++ b/lib/voro++/html/wall_8cc.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: wall.cc File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">wall.cc File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Function implementations for the derived wall classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="wall_8hh_source.html">wall.hh</a>&quot;</code><br/>
+</div>
+<p><a href="wall_8cc_source.html">Go to the source code of this file.</a></p>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="wall_8cc_source.html">wall.cc</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/wall_8cc_source.html b/lib/voro++/html/wall_8cc_source.html
new file mode 100644
index 000000000..d97eb3e5c
--- /dev/null
+++ b/lib/voro++/html/wall_8cc_source.html
@@ -0,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: wall.cc Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">wall.cc</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="wall_8cc.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file wall.cc</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Function implementations for the derived wall classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="wall_8hh.html" title="Header file for the derived wall classes.">wall.hh</a>&quot;</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">/** Tests to see whether a point is inside the sphere wall object.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * \param[in,out] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * \return True if the point is inside, false if the point is outside. */</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413"> 17</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">wall_sphere::point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keywordflow">return</span> (x-xc)*(x-xc)+(y-yc)*(y-yc)+(z-zc)*(z-zc)&lt;rc*rc;</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;}</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">/** Cuts a cell by the sphere wall object. The spherical wall is approximated by</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> * a single plane applied at the point on the sphere which is closest to the center</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * of the cell. This works well for particle arrangements that are packed against</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * the wall, but loses accuracy for sparse particle distributions.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * \param[in,out] c the Voronoi cell to be cut.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * \param[in] (x,y,z) the location of the Voronoi cell.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * \return True if the cell still exists, false if the cell is deleted. */</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4"> 29</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">wall_sphere::cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordtype">double</span> xd=x-xc,yd=y-yc,zd=z-zc,dq=xd*xd+yd*yd+zd*zd;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">if</span> (dq&gt;1e-5) {</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; dq=2*(sqrt(dq)*rc-dq);</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordflow">return</span> c.nplane(xd,yd,zd,dq,w_id);</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">/** Tests to see whether a point is inside the plane wall object.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * \return True if the point is inside, false if the point is outside. */</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d"> 41</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">wall_plane::point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">return</span> x*xc+y*yc+z*zc&lt;ac;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">/** Cuts a cell by the plane wall object.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> * \param[in,out] c the Voronoi cell to be cut.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * \param[in] (x,y,z) the location of the Voronoi cell.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * \return True if the cell still exists, false if the cell is deleted. */</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5"> 50</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">wall_plane::cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">double</span> dq=2*(ac-x*xc-y*yc-z*zc);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> c.nplane(xc,yc,zc,dq,w_id);</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">/** Tests to see whether a point is inside the cylindrical wall object.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * \return True if the point is inside, false if the point is outside. */</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7"> 58</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">wall_cylinder::point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">double</span> xd=x-xc,yd=y-yc,zd=z-zc;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">double</span> pa=(xd*xa+yd*ya+zd*za)*asi;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; xd-=xa*pa;yd-=ya*pa;zd-=za*pa;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> xd*xd+yd*yd+zd*zd&lt;rc*rc;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">/** Cuts a cell by the cylindrical wall object. The cylindrical wall is</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> * approximated by a single plane applied at the point on the cylinder which is</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> * closest to the center of the cell. This works well for particle arrangements</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> * that are packed against the wall, but loses accuracy for sparse particle</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * distributions.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * \param[in,out] c the Voronoi cell to be cut.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \param[in] (x,y,z) the location of the Voronoi cell.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * \return True if the cell still exists, false if the cell is deleted. */</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca"> 74</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">wall_cylinder::cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">double</span> xd=x-xc,yd=y-yc,zd=z-zc,pa=(xd*xa+yd*ya+zd*za)*asi;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; xd-=xa*pa;yd-=ya*pa;zd-=za*pa;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; pa=xd*xd+yd*yd+zd*zd;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">if</span>(pa&gt;1e-5) {</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; pa=2*(sqrt(pa)*rc-pa);</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> c.nplane(xd,yd,zd,pa,w_id);</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;}</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">/** Tests to see whether a point is inside the cone wall object.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> * \param[in] (x,y,z) the vector to test.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> * \return True if the point is inside, false if the point is outside. */</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091"> 88</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">wall_cone::point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">double</span> xd=x-xc,yd=y-yc,zd=z-zc,pa=(xd*xa+yd*ya+zd*za)*asi;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; xd-=xa*pa;yd-=ya*pa;zd-=za*pa;</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; pa*=gra;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (pa&lt;0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; pa*=pa;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> xd*xd+yd*yd+zd*zd&lt;pa;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">/** Cuts a cell by the cone wall object. The conical wall is</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * approximated by a single plane applied at the point on the cone which is</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * closest to the center of the cell. This works well for particle arrangements</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * that are packed against the wall, but loses accuracy for sparse particle</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * distributions.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * \param[in,out] c the Voronoi cell to be cut.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> * \param[in] (x,y,z) the location of the Voronoi cell.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> * \return True if the cell still exists, false if the cell is deleted. */</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7"> 106</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">wall_cone::cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">double</span> xd=x-xc,yd=y-yc,zd=z-zc,xf,yf,zf,q,pa=(xd*xa+yd*ya+zd*za)*asi;</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; xd-=xa*pa;yd-=ya*pa;zd-=za*pa;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; pa=xd*xd+yd*yd+zd*zd;</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span>(pa&gt;1e-5) {</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; pa=1/sqrt(pa);</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; q=sqrt(asi);</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; xf=-sang*q*xa+cang*pa*xd;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; yf=-sang*q*ya+cang*pa*yd;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; zf=-sang*q*za+cang*pa*zd;</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; pa=2*(xf*(xc-x)+yf*(yc-y)+zf*(zc-z));</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> c.nplane(xf,yf,zf,pa,w_id);</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;}</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;}</div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/wall_8hh.html b/lib/voro++/html/wall_8hh.html
new file mode 100644
index 000000000..eeb778a46
--- /dev/null
+++ b/lib/voro++/html/wall_8hh.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: wall.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> </div>
+ <div class="headertitle">
+<div class="title">wall.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for the derived wall classes.
+<a href="#details">More...</a></p>
+<div class="textblock"><code>#include &quot;<a class="el" href="cell_8hh_source.html">cell.hh</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="container_8hh_source.html">container.hh</a>&quot;</code><br/>
+</div>
+<p><a href="wall_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__sphere.html">voro::wall_sphere</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class representing a spherical wall object. <a href="structvoro_1_1wall__sphere.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__plane.html">voro::wall_plane</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class representing a plane wall object. <a href="structvoro_1_1wall__plane.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cylinder.html">voro::wall_cylinder</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class representing a cylindrical wall object. <a href="structvoro_1_1wall__cylinder.html#details">More...</a><br/></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structvoro_1_1wall__cone.html">voro::wall_cone</a></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A class representing a conical wall object. <a href="structvoro_1_1wall__cone.html#details">More...</a><br/></td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock">
+<p>Definition in file <a class="el" href="wall_8hh_source.html">wall.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/wall_8hh_source.html b/lib/voro++/html/wall_8hh_source.html
new file mode 100644
index 000000000..5bf2e6f78
--- /dev/null
+++ b/lib/voro++/html/wall_8hh_source.html
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: wall.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">wall.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="wall_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file wall.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for the derived wall classes. */</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#ifndef VOROPP_WALL_HH</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_WALL_HH</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cell_8hh.html" title="Header file for the voronoicell and related classes.">cell.hh</a>&quot;</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="container_8hh.html" title="Header file for the container_base and related classes.">container.hh</a>&quot;</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/** \brief A class representing a spherical wall object.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> * This class represents a spherical wall object. */</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html"> 21</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvoro_1_1wall__sphere.html" title="A class representing a spherical wall object.">wall_sphere</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> {</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> /** Constructs a spherical wall object.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * \param[in] w_id_ an ID number to associate with the wall for</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * neighbor tracking.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * \param[in] (xc_,yc_,zc_) a position vector for the sphere&#39;s</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * center.</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * \param[in] rc_ the radius of the sphere. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html#ad37f5096c5b84ffe6c011047a5ac9f78"> 29</a></span>&#160; <a class="code" href="structvoro_1_1wall__sphere.html#ad37f5096c5b84ffe6c011047a5ac9f78">wall_sphere</a>(<span class="keywordtype">double</span> xc_,<span class="keywordtype">double</span> yc_,<span class="keywordtype">double</span> zc_,<span class="keywordtype">double</span> rc_,<span class="keywordtype">int</span> w_id_=-99)</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), rc(rc_) {}</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a08695201299833a5ccebecc016fe8413">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html#a0ded43a5ed66e6099203c780e03e1fff"> 34</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a0ded43a5ed66e6099203c780e03e1fff">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197"> 35</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__sphere.html#a67f806cace710d4cbca901ef9228a197">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__sphere.html#a3779ab19fab2ed104f8a8c0bdb5773b4">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_id;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> xc,yc,zc,rc;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;};</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">/** \brief A class representing a plane wall object.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * This class represents a single plane wall object. */</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html"> 44</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvoro_1_1wall__plane.html" title="A class representing a plane wall object.">wall_plane</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> /** Constructs a plane wall object.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> * \param[in] (xc_,yc_,zc_) a normal vector to the plane.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * \param[in] ac_ a displacement along the normal vector.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * \param[in] w_id_ an ID number to associate with the wall for</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * neighbor tracking. */</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html#adb486dd12e7369e4791b625f362c4df2"> 51</a></span>&#160; <a class="code" href="structvoro_1_1wall__plane.html#adb486dd12e7369e4791b625f362c4df2">wall_plane</a>(<span class="keywordtype">double</span> xc_,<span class="keywordtype">double</span> yc_,<span class="keywordtype">double</span> zc_,<span class="keywordtype">double</span> ac_,<span class="keywordtype">int</span> w_id_=-99)</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), ac(ac_) {}</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#a8168f370f6817ccbd4870b1494b4321d">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd"> 56</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#a879c5551eb1d97677b0b0651b7da0ddd">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713"> 57</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__plane.html#ae2103d51a50887cea07671b4e8a0b713">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__plane.html#a8d2515cef30dbd7594a4403d502b4fe5">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_id;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> xc,yc,zc,ac;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;};</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">/** \brief A class representing a cylindrical wall object.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> * This class represents a open cylinder wall object. */</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html"> 66</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvoro_1_1wall__cylinder.html" title="A class representing a cylindrical wall object.">wall_cylinder</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> {</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> /** Constructs a cylinder wall object.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * \param[in] (xc_,yc_,zc_) a point on the axis of the</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * cylinder.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * \param[in] (xa_,ya_,za_) a vector pointing along the</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> * direction of the cylinder.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> * \param[in] rc_ the radius of the cylinder</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> * \param[in] w_id_ an ID number to associate with the wall for</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> * neighbor tracking. */</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html#a15485959acf214d9eafa8a03e066196c"> 76</a></span>&#160; <a class="code" href="structvoro_1_1wall__cylinder.html#a15485959acf214d9eafa8a03e066196c">wall_cylinder</a>(<span class="keywordtype">double</span> xc_,<span class="keywordtype">double</span> yc_,<span class="keywordtype">double</span> zc_,<span class="keywordtype">double</span> xa_,<span class="keywordtype">double</span> ya_,<span class="keywordtype">double</span> za_,<span class="keywordtype">double</span> rc_,<span class="keywordtype">int</span> w_id_=-99)</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), xa(xa_), ya(ya_), za(za_),</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; asi(1/(xa_*xa_+ya_*ya_+za_*za_)), rc(rc_) {}</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#a338b12542139088159acac3f5face2f7">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99"> 82</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#a8121adc120f17770099eadc73b5c4f99">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb"> 83</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cylinder.html#af10e0a8cd87d46629b42b8443daf95cb">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__cylinder.html#ada478166ad7607c53d691608c7806cca">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_id;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> xc,yc,zc,xa,ya,za,asi,rc;</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;};</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">/** \brief A class representing a conical wall object.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> * This class represents a cone wall object. */</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html"> 93</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structvoro_1_1wall__cone.html" title="A class representing a conical wall object.">wall_cone</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1wall.html" title="Pure virtual class from which wall objects are derived.">wall</a> {</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> /** Constructs a cone wall object.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> * \param[in] (xc_,yc_,zc_) the apex of the cone.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> * \param[in] (xa_,ya_,za_) a vector pointing along the axis of</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> * the cone.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> * \param[in] ang the angle (in radians) of the cone, measured</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> * from the axis.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> * \param[in] w_id_ an ID number to associate with the wall for</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> * neighbor tracking. */</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html#a7ff2b2acc21eeb2539d08970b3aeb010"> 103</a></span>&#160; <a class="code" href="structvoro_1_1wall__cone.html#a7ff2b2acc21eeb2539d08970b3aeb010">wall_cone</a>(<span class="keywordtype">double</span> xc_,<span class="keywordtype">double</span> yc_,<span class="keywordtype">double</span> zc_,<span class="keywordtype">double</span> xa_,<span class="keywordtype">double</span> ya_,<span class="keywordtype">double</span> za_,<span class="keywordtype">double</span> ang,<span class="keywordtype">int</span> w_id_=-99)</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), xa(xa_), ya(ya_), za(za_),</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; asi(1/(xa_*xa_+ya_*ya_+za_*za_)),</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; gra(tan(ang)), sang(sin(ang)), cang(cos(ang)) {}</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#a5bcbbcdbe0c36285c6630dd92380a091">point_inside</a>(<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> v_cell&gt;</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">cut_cell_base</a>(v_cell &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z);</div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261"> 110</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#a2a007e376f93c3ae5608eb53e4a52261">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell.html" title="Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...">voronoicell</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb"> 111</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structvoro_1_1wall__cone.html#ab8ac7eb3a051ba3c3816dd941bdf4eeb">cut_cell</a>(<a class="code" href="classvoro_1_1voronoicell__neighbor.html" title="Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...">voronoicell_neighbor</a> &amp;c,<span class="keywordtype">double</span> x,<span class="keywordtype">double</span> y,<span class="keywordtype">double</span> z) {<span class="keywordflow">return</span> <a class="code" href="structvoro_1_1wall__cone.html#ad39d47ee5d007dab3728e45efdaf0db7">cut_cell_base</a>(c,x,y,z);}</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> w_id;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <span class="keywordtype">double</span> xc,yc,zc,xa,ya,za,asi,gra,sang,cang;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;};</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;}</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/worklist_8hh.html b/lib/voro++/html/worklist_8hh.html
new file mode 100644
index 000000000..81a6fc3c2
--- /dev/null
+++ b/lib/voro++/html/worklist_8hh.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: worklist.hh File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#var-members">Variables</a> </div>
+ <div class="headertitle">
+<div class="title">worklist.hh File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p>Header file for setting constants used in the block worklists that are used during cell computation.
+<a href="#details">More...</a></p>
+
+<p><a href="worklist_8hh_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2><a name="var-members"></a>
+Variables</h2></td></tr>
+<tr class="memitem:a965140cc34290d1f12c8de38386db76a"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::wl_hgrid</b> = 4</td></tr>
+<tr class="memitem:a0bbc5df3ece7cfd3059aecd24bea3478"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::wl_fgrid</b> = 8</td></tr>
+<tr class="memitem:a4e0250aee8e8fdba37668d00c68f5fde"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::wl_hgridcu</b> = 64</td></tr>
+<tr class="memitem:ab2cfc7a5640d428f8d613007d3db5736"><td class="memItemLeft" align="right" valign="top">const int&#160;</td><td class="memItemRight" valign="bottom"><b>voro::wl_seq_length</b> = 64</td></tr>
+</table>
+<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
+<div class="textblock"><p>This file is automatically generated by worklist_gen.pl and it is not intended to be edited by hand. </p>
+
+<p>Definition in file <a class="el" href="worklist_8hh_source.html">worklist.hh</a>.</p>
+</div></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/html/worklist_8hh_source.html b/lib/voro++/html/worklist_8hh_source.html
new file mode 100644
index 000000000..00c1fd1ec
--- /dev/null
+++ b/lib/voro++/html/worklist_8hh_source.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>Voro++: worklist.hh Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">Voro++
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.1.1 -->
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main&#160;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File&#160;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">worklist.hh</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="worklist_8hh.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Voro++, a 3D cell-based Voronoi library</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Author : Chris H. Rycroft (LBL / UC Berkeley)</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Email : chr@alum.mit.edu</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Date : August 30th 2011</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">/** \file worklist.hh</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * \brief Header file for setting constants used in the block worklists that are</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * used during cell computation.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * This file is automatically generated by worklist_gen.pl and it is not</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * intended to be edited by hand. */</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef VOROPP_WORKLIST_HH</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define VOROPP_WORKLIST_HH</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span>voro {</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">/** Each region is divided into a grid of subregions, and a worklist is</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"># constructed for each. This parameter sets is set to half the number of</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"># subregions that the block is divided into. */</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> wl_hgrid=4;<span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/** The number of subregions that a block is subdivided into, which is twice</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">the value of hgrid. */</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> wl_fgrid=8;<span class="comment"></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">/** The total number of worklists, set to the cube of hgrid. */</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> wl_hgridcu=64;<span class="comment"></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">/** The number of elements in each worklist. */</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">const</span> <span class="keywordtype">int</span> wl_seq_length=64;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;}</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Fri Jul 27 2012 21:53:31 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.1.1
+</small></address>
+</body>
+</html>
diff --git a/lib/voro++/man/voro++.1 b/lib/voro++/man/voro++.1
new file mode 100644
index 000000000..f91c288c5
--- /dev/null
+++ b/lib/voro++/man/voro++.1
@@ -0,0 +1,346 @@
+.TH VORO++ 1 "August 28 2011"
+.UC 4
+.SH NAME
+voro++ \- a 3D Voronoi cell library
+.SH SYNOPSIS
+.B voro++
+[options] <x_min> <x_max> <y_min> <y_max> <z_min> <z_max> <filename>
+.br
+.SH DESCRIPTION
+.PP
+Voro++ is a software library for carrying out three-dimensional computations of
+the Voronoi tessellation. A distinguishing feature of the Voro++ library is
+that it carries out cell-based calculations, computing the Voronoi cell for
+each particle individually, rather than computing the Voronoi tessellation as a
+global network of vertices and edges. It is particularly well-suited for
+applications that rely on cell-based statistics, where features of Voronoi
+cells (
+.I eg.
+volume, centroid, number of faces) can be used to analyze a system of
+particles.
+
+.PP
+Voro++ is written in C++ and can be built as a static library that can be
+linked to. This man page describes a command-line utility that is provided with
+the library, which can be used to access most of the library's functionality.
+The utility imports text files of particle positions, computes the Voronoi
+cells for them, and then saves text files containing various types of
+information about the Voronoi cells.
+
+.SH FILE INPUT AND OUTPUT
+.PP
+The input file should have entries on separate lines with the following
+format:
+.PP
+.RS
+<Numerical ID label> <x coordinate> <y coordinate> <z coordinate>
+.RE
+.PP
+When the command imports the particles, any that lie outside the container
+geometry are ignored. The program then computes Voronoi cells for all the
+particles, and generates an output file using the same filename but with a
+".vol" suffix, that has the following entries:
+.PP
+.RS
+<Numerical ID label> <x coordinate> <y coordinate> <z coordinate> <Voronoi cell volume>
+.RE
+.PP
+To compute different statistics about the Voronoi cells, the \-c option can be
+used to specify a custom output string. By default, the command assumes
+non-periodic boundary conditions, although this can be modified with the \-p
+option described below. If periodicity is enabled, then particles will be
+re-mapped into the primary domain when the file is imported.
+
+.PP
+Under normal operation, the output file should have exactly the same number
+of lines in as the input file. However, if particles lie outside the container
+geometry, they will be omitted by the program, and will not appear in the
+output file. In certain cases, a Voronoi cell for a valid particle may be
+completely deleted (
+.I eg.
+by a wall cut) and it will also not appear in
+the output file. By default, the particles in the output file may be ordered
+differently to those in the input file, although the original ordering can be
+preserved with the \-o option described below.
+
+.SH INTERNAL COMPUTATIONAL GRID
+.PP
+To carry out the computation, the code divides the computational box into a
+grid of equally-sized rectangular blocks. Particles are internally sorted into
+this grid for computational efficiency, with maximum performance usually being
+achieved when there is an average of 3 to 8 particles per block. Performance is
+also improved if the blocks are close to cubes, with similar side lengths in
+three directions. In general the code is not very sensitive to the block size,
+and reasonable performance is achieved over a large range of values.
+.PP
+By default, the code estimates the grid size to use by counting the number
+of particles in the input file and choosing the number of blocks to aim for a
+3 to 8 particles per block. However, is also possible to manually configure the
+grid size using the \-l and \-n options.
+
+.SH OPTIONS
+The utility accepts the following basic options:
+
+.B
+.IP \-c <string>
+This option allows the format of the output file to be customized to hold a
+variety of statistics about the computed Voronoi cells. The specified string
+can contain regular characters, plus control sequences beginning with
+percentage signs that are expanded to contain different Voronoi cell
+statistics. See below for a full custom output reference.
+.B
+.IP \-g
+If this option is specified, then an additional output file is generated with
+the ".gnu" extension, which contains a description of all the cells in a format
+that can be viewed using gnuplot using the
+.I splot
+command. Caution: For large input files, the gnuplot output file will be
+extremely large, so this option is best used on smaller systems.
+.B
+.IP \-h or \-\-help
+This option prints out a summary of the command syntax and the available
+options.
+.B
+.IP \-hc
+This option prints out all the available control sequences for the customized
+output.
+.B
+.IP -l <len>
+Manually specify a typical length scale between particles, with which to
+configure the internal grid size. For example, if the particles represent
+densely-packed hard spheres of diameter d, then d would be an appropriate value
+to use. The length scale can be used to estimate the optimal grid size. Using
+this option will result in a small performance boost, since the internal grid
+can be set up immediately, and it is not necessary to temporarily store the
+input file contents while estimating the grid size.
+.B
+.IP -m <mem>
+Manually specify the initial number of particles that can be stored in each
+block. By default a value of 8 is used. For any block where this limit is
+reached, the code will dynamically allocate more memory as neccessary, so
+usually it is not necessary to alter this.
+.B
+.IP -n <nx> <ny> <nz>
+Manually specify the internal computational grid to have nx, ny, and nz blocks
+in the x, y, and z directions respectively, giving nx*ny*nz blocks in total.
+Manually specifying the size will result in a small performance boost, since
+the internal grid can be set up immediately, and it is not necessary to
+temporarily store the input file contents while estimating the size.
+.B
+.IP \-o
+Ensure that particles in the output file are in the same order as those in the
+input file. This may result in a very small increase in memory usage and
+execution time, and is turned off by default.
+.B
+.B
+.IP \-p
+Make the container periodic in all three coordinate directions.
+.B
+.IP \-px
+Make container periodic in the x direction.
+.B
+.IP \-py
+Make container periodic in the y direction.
+.B
+.IP \-pz
+Make container periodic in the z direction.
+.B
+.IP \-r
+Carry out a Voronoi tessellation for a polydisperse particle arrangement using
+the radical Voronoi tessellation. For this case, an extra column is required in
+the input file, that contains the particle radii. The radii are also included
+in the output file.
+.B
+.IP \-v
+Verbose output. After the computation is completed, some statistics are printed
+about the container geometry, the internal computational grid, the number of
+particles imported, the number Voronoi cells computed, and the volume of the
+computed Voronoi cells.
+.B
+.IP \-\-version
+Print version information.
+.B
+.IP \-y
+Save the particles in POV-Ray format to "filename_p.pov" and the Voronoi cells
+in POV-Ray format to "filename_v.pov". Caution: For large input files, the
+POV-Ray Voronoi cell file will be extremely large, so this option is best used
+on smaller systems.
+.B
+.IP \-yp
+Save the particles in POV-Ray format to "filename_p.pov".
+.B
+.IP \-yv
+Save the Voronoi cells in POV-Ray format to "filename_v.pov".
+
+.SH OPTIONS FOR WALLS
+In addition, a number of options can be used to specify wall objects. Walls
+are implemented by applying extra plane cuts during the cell construction
+process. At present, four wall types are supported:
+
+.B
+.IP \-wb <x1> <x2> <x3> <x4> <x5> <x6>
+Add six plane wall objects to make a box containing the space x1<x<x2, x3<y<x4,
+and x5<z<z6. This can be useful for embedding a smaller box within a larger
+container, in cases when the influence of particles outside the smaller box
+still need to be considered. This option is shorthand to avoid using the \-wp
+option six times.
+.B
+.IP \-wc <x1> <x2> <x3> <x4> <x5> <x6> <x7>
+Add a cylindrical wall object, where (x1,x2,x3) is a point on the cylinder
+axis, (x4,x5,x6) is a vector along the cylinder axis, and x7 is the cylinder
+radius.
+.B
+.IP \-wo <x1> <x2> <x3> <x4> <x5> <x6> <x7>
+Add a conical wall object, with apex at (x1,x2,x3), axis along (x4,x5,x6), and
+half angle x7 (specified in radians).
+.B
+.IP \-ws <x1> <x2> <x3> <x4>
+Add a spherical wall object, centered on (x1,x2,x3), with radius x4.
+.B
+.IP \-wp <x1> <x2> <x3> <x4>
+Add a plane wall object, with normal (x1,x2,x3), and displacement x4.
+
+Each wall is accounted for using a single approximating plane; several of the
+examples on the library website discuss this in more detail. If neighbor
+information is requested via the custom output string, then the walls are
+numbered sequentially, starting at -7 and decreasing.
+
+.SH CUSTOM OUTPUT COMMANDS
+.PP
+The output files created by Voro++ can be fully customized to contain a variety
+of different statistics about the computed Voronoi cells. This is done by
+specifying a format string that contains text plus additional control sequences
+that begin with percentage signs. The output file contains a line for each
+particle, where the control sequences are expanded to different statistics.
+Several examples on the library website describe the customized output in
+more detail.
+
+.PP
+Particle-related entries:
+
+.B
+.IP %i
+The particle ID number.
+.B
+.IP %x
+The x coordinate of the particle.
+.B
+.IP %y
+The y coordinate of the particle.
+.B
+.IP %z
+The z coordinate of the particle.
+.B
+.IP %q
+The position vector of the particle, short for "%x %y %z".
+.B
+.IP %r
+The radius of the particle (only printed if the polydisperse information is
+available).
+
+.PP
+Vertex-related entries:
+
+.B
+.IP %w
+The number of vertices in the Voronoi cell.
+.B
+.IP %p
+A list of the vertices of the Voronoi cell in the format (x,y,z), relative to
+the particle center.
+.B
+.IP %P
+A list of the vertices of the Voronoi cell in the format (x,y,z), relative to
+the global coordinate system.
+.B
+.IP %o
+A list of the orders of each vertex.
+.B
+.IP %m
+The maximum radius squared of a vertex position, relative to the particle
+center.
+
+.PP
+Edge-related entries:
+
+.B
+.IP %g
+The number of edges of the Voronoi cell.
+.B
+.IP %E
+The total edge distance.
+.B
+.IP %e
+A list of perimeters of each face.
+
+.PP
+Face-related entries:
+
+.B
+.IP %s
+The number of faces of the Voronoi cell.
+.B
+.IP %F
+The total surface area of the Voronoi cell.
+.B
+.IP %A
+A frequency table of the orders of the faces.
+.B
+.IP %a
+A list of the orders of the faces, showing how many edges make up each face.
+.B
+.IP %f
+A list of areas of each face.
+.B
+.IP %t
+A list of bracketed sequences of vertices that make up each face.
+.B
+.IP %l
+A list of normal vectors for each face.
+.B
+.IP %n
+A list of the neighboring particle or wall IDs corresponding to each face. The
+list can contain negative numbers. For the non-periodic case these correspond
+to when the particles have faces created by the edges of the computational
+region. The numbers -1 to -6 correspond to the minimum x, maximum x, minimum y,
+maximum y, minimum z, and maximum z walls respectively. For periodic boundary
+conditions, negative numbers correspond to the cases when a face of the Voronoi
+cell is created by the periodic image of the current particle.
+
+In general, the neighbor information will be symmetric, so that if particle A
+reports particle B as a neighbor, then particle B will report particle A as a
+neighbor. However, due to the fact that Voro++ computes each Voronoi cell
+individually, it does not provide an explicit guarantee that the neighbor
+information will always be symmetric. Suppose there is a very small Voronoi
+face connecting A to B - it may be the case that due to roundoff error, the
+Voronoi cell computed for particle A has a face connecting it to B, but the
+cell computed for particle B does not have a face connecting it to A. If the
+user requires perfectly symmetric neighbor information, this can be achieved by
+scanning the output for any one-sided connections, and either deleting them or
+adding in the reverse connections. The face areas output from "%f" can also be
+used to remove connections between particles that only have a very small face
+between them.
+
+.PP
+Volume-related entries:
+.B
+.IP %v
+The volume of the Voronoi cell.
+.B
+.IP %c
+The centroid of the Voronoi cell, relative to the particle center.
+.B
+.IP %C
+The centroid of the Voronoi cell, in the global coordinate system.
+
+
+.SH AUTHOR
+Voro++ is written and maintained by Chris H. Rycroft, a visiting assistant
+professor in the Department of Mathematics, University of California, Berkeley
+and Department of Mathematics, Lawrence Berkeley National Laboratory.
+Feedback about the code is welcome; please email chr@alum.mit.edu.
+.SH BUGS
+Contact Chris H. Rycroft (chr@alum.mit.edu) to report problems with the code.
+.SH SEE ALSO
+See the library website http://math.lbl.gov/voro++/ for complete documentation
+and examples.
diff --git a/lib/voro++/scripts/README b/lib/voro++/scripts/README
new file mode 100644
index 000000000..ad4ab777e
--- /dev/null
+++ b/lib/voro++/scripts/README
@@ -0,0 +1,12 @@
+Voro++ helper scripts
+=====================
+This directory contains auxiliary helper perl scripts for use with the library.
+
+random.pl - generates a random file of particles for testing the command-line
+utility. Type "perl -h random.pl" for more information.
+
+network.pl - creates a neighbor network plot from a .vol file created by the
+command line utility using the -n option.
+
+sum.pl - sums the volumes in a .vol file created by the command line utility,
+for checking purposes.
diff --git a/lib/voro++/scripts/network.pl b/lib/voro++/scripts/network.pl
new file mode 100644
index 000000000..2e7bf7aaa
--- /dev/null
+++ b/lib/voro++/scripts/network.pl
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+# This script takes a .vol file that has neighbor information created with
+# the custom output string "%i %q %v %n", and creates a map of the network, by
+# drawing a line between all particles which are neighbors
+
+open A,"@ARGV[0].vol" or die "Can't open input file";
+open B,">@ARGV[0].net" or die "Can't open output file";
+
+$maxn=0;
+
+while(<A>) {
+ @A=split;
+ $n=@A[0];
+ $x[$n]=@A[1];
+ $y[$n]=@A[2];
+ $z[$n]=@A[3];
+ $c[$n]=$#A-5;
+ $l[$n][$_-5]=@A[$_] foreach 5..$#A;
+ $maxn=$n if $n>$maxn;
+}
+
+foreach $n (1..$maxn) {
+ foreach (0..$c[$n]) {
+ $j=$l[$n][$_];
+ print B "$x[$j] $y[$j] $z[$j]\n$x[$n] $y[$n] $z[$n]\n\n\n" if $j>=$n;
+ }
+}
diff --git a/lib/voro++/scripts/random.pl b/lib/voro++/scripts/random.pl
new file mode 100644
index 000000000..0cb654508
--- /dev/null
+++ b/lib/voro++/scripts/random.pl
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+# This script can be used to generate random lists of particles in the unit
+# box 0<x<1, 0<y<1, 0<z<1, that can be used as test input to voro++. The -r
+# switch adds extra radial information for use with the Voronoi radical
+# tessellation.
+use Getopt::Std;
+getopts("hr:");
+
+if ($opt_h) {
+ print "Usage: random.pl [switches] <number of particles> <filename>\n";
+ print "Switches:\n";
+ print "-h Print this information\n";
+ print "-r <max radius> Add extra radial column\n";
+ exit 0;
+};
+
+@ARGV==2 or die "Exactly two command line arguments required\n";
+open A,">@ARGV[1]" or die "Can't open output file";
+
+foreach (1..@ARGV[0]) {
+ printf A "$_ %f %f %f", rand(), rand(), rand();
+ printf A " %f",$opt_r*rand() if $opt_r;
+ printf A "\n";
+}
diff --git a/lib/voro++/scripts/sum.pl b/lib/voro++/scripts/sum.pl
new file mode 100644
index 000000000..64dc06742
--- /dev/null
+++ b/lib/voro++/scripts/sum.pl
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+# This script will take a .vol file created by voro++, and it will sum up the
+# volumes of all the Voronoi cells. In many cases, this will equal the volume
+# of the container, and it can be a useful check.
+#
+# It assumes that the volume is stored in the final column, so it works with
+# both regular and polydisperse calculations.
+
+open A,"@ARGV[0]" or die "Can't open input file";
+while(<A>) {
+ @A=split;
+ $c+=pop @A;
+}
+print "$c\n";
diff --git a/lib/voro++/src/Doxyfile b/lib/voro++/src/Doxyfile
new file mode 100644
index 000000000..fde188354
--- /dev/null
+++ b/lib/voro++/src/Doxyfile
@@ -0,0 +1,1793 @@
+# Doxyfile 1.8.1.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or sequence of words) that should
+# identify the project. Note that if you do not use Doxywizard you need
+# to put quotes around the project name if it contains spaces.
+
+PROJECT_NAME = Voro++
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF =
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ..
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = NO
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding
+# "class=itcl::class" will allow you to use the command class in the
+# itcl::class meaning.
+
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this
+# tag. The format is ext=language, where ext is a file extension, and language
+# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C,
+# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
+# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
+# comments according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you
+# can mix doxygen, HTML, and XML commands with Markdown formatting.
+# Disable only in case of backward compatibilities issues.
+
+MARKDOWN_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = YES
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
+# unions with only public data fields will be shown inline in the documentation
+# of the scope in which they are defined (i.e. file, namespace, or group
+# documentation), provided this scope is documented. If set to NO (the default),
+# structs, classes, and unions are shown on a separate page (for HTML and Man
+# pages) or section (for LaTeX and RTF).
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penalty.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will roughly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+SYMBOL_CACHE_SIZE = 0
+
+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
+# their name and scope. Since this can be an expensive process and often the
+# same symbol appear multiple times in the code, doxygen keeps a cache of
+# pre-resolved symbols. If the cache is too small doxygen will become slower.
+# If the cache is too large, memory is wasted. The cache size is given by this
+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal scope will be included in the documentation.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files
+# containing the references data. This must be a list of .bib files. The
+# .bib extension is automatically appended if omitted. Using this command
+# requires the bibtex tool to be installed. See also
+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
+# feature you need bibtex and perl available in the search path.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = .
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE = cmd_line.cc
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C, C++ and Fortran comments will always remain visible.
+
+STRIP_CODE_COMMENTS = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = NO
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header. Note that when using a custom header you are responsible
+# for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is advised to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when
+# changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# style sheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the style sheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+
+HTML_DYNAMIC_SECTIONS = YES
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
+# entries shown in the various tree structured indices initially; the user
+# can expand and collapse entries dynamically later on. Doxygen will expand
+# the tree to such a level that at most the specified number of entries are
+# visible (unless a fully collapsed tree already exceeds this amount).
+# So setting the number of entries 1 will produce a full collapsed tree by
+# default. 0 is a special value representing an infinite number of entries
+# and will result in a full expanded tree by default.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+# at top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it. Since the tabs have the same information as the
+# navigation tree you can set this option to NO if you already set
+# GENERATE_TREEVIEW to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+# Since the tree basically has the same information as the tab index you
+# could consider to set DISABLE_INDEX to NO when enabling this option.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you may also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to
+# the MathJax Content Delivery Network so you can quickly see the result without
+# installing MathJax.
+# However, it is strongly recommended to install a local
+# copy of MathJax from http://www.mathjax.org before deployment.
+
+MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
+# names that should be enabled during MathJax rendering.
+
+MATHJAX_EXTENSIONS =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = NO
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a PHP enabled web server instead of at the web client
+# using Javascript. Doxygen will generate the search PHP script and index
+# file to put on the web server. The advantage of the server
+# based approach is that it scales better to large projects and allows
+# full text search. The disadvantages are that it is more difficult to setup
+# and does not have live searching capabilities.
+
+SERVER_BASED_SEARCH = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = YES
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = letter
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES = fullpage, \
+ palatino
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = YES
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = YES
+
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include
+# source code with syntax highlighting in the LaTeX output.
+# Note that which sources are shown also depends on other settings
+# such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
+# http://en.wikipedia.org/wiki/BibTeX for more info.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load style sheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# pointed to by INCLUDE_PATH will be searched when a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these will confuse the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. For each
+# tag file the location of the external documentation should be added. The
+# format of a tag file without this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths
+# or URLs. Note that each tag file must have a unique name (where the name does
+# NOT include the path). If a tag file is not located in the directory in which
+# doxygen is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS = 0
+
+# By default doxygen will use the Helvetica font for all dot files that
+# doxygen generates. When you want a differently looking font you can specify
+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
+# the font, which can be done by putting it in a standard location or by setting
+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the Helvetica font.
+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
+# set the path where dot can find it.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside
+# the class node. If there are many fields or methods and many nodes the
+# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
+# threshold limits the number of items for each type to make the size more
+# managable. Set this to 0 for no limit. Note that the threshold may be
+# exceeded by 50% before the limit is enforced.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used. If you choose svg you need to set
+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible in IE 9+ (other browsers do not have this requirement).
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# Note that this requires a modern browser other than Internet Explorer.
+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible. Older versions of IE do not have SVG support.
+
+INTERACTIVE_SVG = NO
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = YES
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
diff --git a/lib/voro++/src/Makefile b/lib/voro++/src/Makefile
new file mode 100644
index 000000000..f205a54b7
--- /dev/null
+++ b/lib/voro++/src/Makefile
@@ -0,0 +1,39 @@
+# Voro++ makefile
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+
+# Load the common configuration file
+include ../config.mk
+
+# List of the common source files
+objs=cell.o common.o container.o unitcell.o v_compute.o c_loops.o \
+ v_base.o wall.o pre_container.o container_prd.o
+src=$(patsubst %.o,%.cc,$(objs))
+
+# Makefile rules
+all: libvoro++.a voro++
+
+depend:
+ $(CXX) -MM $(src) >Makefile.dep
+
+include Makefile.dep
+
+libvoro++.a: $(objs)
+ rm -f libvoro++.a
+ ar rs libvoro++.a $^
+
+voro++: libvoro++.a cmd_line.cc
+ $(CXX) $(CFLAGS) -L. -o voro++ cmd_line.cc -lvoro++
+
+%.o: %.cc
+ $(CXX) $(CFLAGS) -c $<
+
+help: Doxyfile $(SOURCE)
+ doxygen Doxyfile
+
+clean:
+ rm -f $(objs) voro++ libvoro++.a
+
+.PHONY: all help execs depend
diff --git a/lib/voro++/src/Makefile.dep b/lib/voro++/src/Makefile.dep
new file mode 100644
index 000000000..531e92276
--- /dev/null
+++ b/lib/voro++/src/Makefile.dep
@@ -0,0 +1,18 @@
+cell.o: cell.cc config.hh common.hh cell.hh
+common.o: common.cc common.hh config.hh
+container.o: container.cc container.hh config.hh common.hh v_base.hh \
+ worklist.hh cell.hh c_loops.hh v_compute.hh rad_option.hh
+unitcell.o: unitcell.cc unitcell.hh config.hh cell.hh common.hh
+v_compute.o: v_compute.cc worklist.hh v_compute.hh config.hh cell.hh \
+ common.hh rad_option.hh container.hh v_base.hh c_loops.hh \
+ container_prd.hh unitcell.hh
+c_loops.o: c_loops.cc c_loops.hh config.hh
+v_base.o: v_base.cc v_base.hh worklist.hh config.hh v_base_wl.cc
+wall.o: wall.cc wall.hh cell.hh config.hh common.hh container.hh \
+ v_base.hh worklist.hh c_loops.hh v_compute.hh rad_option.hh
+pre_container.o: pre_container.cc config.hh pre_container.hh c_loops.hh \
+ container.hh common.hh v_base.hh worklist.hh cell.hh v_compute.hh \
+ rad_option.hh
+container_prd.o: container_prd.cc container_prd.hh config.hh common.hh \
+ v_base.hh worklist.hh cell.hh c_loops.hh v_compute.hh unitcell.hh \
+ rad_option.hh
diff --git a/lib/voro++/src/README b/lib/voro++/src/README
new file mode 100644
index 000000000..09326db58
--- /dev/null
+++ b/lib/voro++/src/README
@@ -0,0 +1,21 @@
+Voro++ library source files
+===========================
+This directory contains the source code for the library. For full details of
+each file, see the files section of the online reference manual at
+http://math.lbl.gov/voro++/doc/refman/
+
+Several other files are present:
+
+Makefile - the GNU Makefile controlling the compilation.
+
+Makefile.dep - a file containing all the dependencies of the source files,
+automatically generated by the GNU compiler.
+
+cmd_line.cc - source file for creating the command-line utility that makes use
+of the library.
+
+Doxyfile - configuration file for Doxygen, used to automatically generate
+documentation based on the source code comments.
+
+worklist_gen.pl - perl script for automatically generating the worklist.hh and
+v_base_wl.cc files.
diff --git a/lib/voro++/src/c_loops.cc b/lib/voro++/src/c_loops.cc
new file mode 100644
index 000000000..391215211
--- /dev/null
+++ b/lib/voro++/src/c_loops.cc
@@ -0,0 +1,150 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file c_loops.cc
+ * \brief Function implementations for the loop classes. */
+
+#include "c_loops.hh"
+
+namespace voro {
+
+/** Initializes a c_loop_subset object to scan over all particles within a
+ * given sphere.
+ * \param[in] (vx,vy,vz) the position vector of the center of the sphere.
+ * \param[in] r the radius of the sphere.
+ * \param[in] bounds_test whether to do detailed bounds checking. If this is
+ * false then the class will loop over all particles in
+ * blocks that overlap the given sphere. If it is true,
+ * the particle will only loop over the particles which
+ * actually lie within the sphere.
+ * \return True if there is any valid point to loop over, false otherwise. */
+void c_loop_subset::setup_sphere(double vx,double vy,double vz,double r,bool bounds_test) {
+ if(bounds_test) {mode=sphere;v0=vx;v1=vy;v2=vz;v3=r*r;} else mode=no_check;
+ ai=step_int((vx-ax-r)*xsp);
+ bi=step_int((vx-ax+r)*xsp);
+ aj=step_int((vy-ay-r)*ysp);
+ bj=step_int((vy-ay+r)*ysp);
+ ak=step_int((vz-az-r)*zsp);
+ bk=step_int((vz-az+r)*zsp);
+ setup_common();
+}
+
+/** Initializes the class to loop over all particles in a rectangular subgrid
+ * of blocks.
+ * \param[in] (ai_,bi_) the subgrid range in the x-direction, inclusive of both
+ * ends.
+ * \param[in] (aj_,bj_) the subgrid range in the y-direction, inclusive of both
+ * ends.
+ * \param[in] (ak_,bk_) the subgrid range in the z-direction, inclusive of both
+ * ends.
+ * \return True if there is any valid point to loop over, false otherwise. */
+void c_loop_subset::setup_intbox(int ai_,int bi_,int aj_,int bj_,int ak_,int bk_) {
+ ai=ai_;bi=bi_;aj=aj_;bj=bj_;ak=ak_;bk=bk_;
+ mode=no_check;
+ setup_common();
+}
+
+/** Sets up all of the common constants used for the loop.
+ * \return True if there is any valid point to loop over, false otherwise. */
+void c_loop_subset::setup_common() {
+ if(!xperiodic) {
+ if(ai<0) {ai=0;if(bi<0) bi=0;}
+ if(bi>=nx) {bi=nx-1;if(ai>=nx) ai=nx-1;}
+ }
+ if(!yperiodic) {
+ if(aj<0) {aj=0;if(bj<0) bj=0;}
+ if(bj>=ny) {bj=ny-1;if(aj>=ny) aj=ny-1;}
+ }
+ if(!zperiodic) {
+ if(ak<0) {ak=0;if(bk<0) bk=0;}
+ if(bk>=nz) {bk=nz-1;if(ak>=nz) ak=nz-1;}
+ }
+ ci=ai;cj=aj;ck=ak;
+ di=i=step_mod(ci,nx);apx=px=step_div(ci,nx)*sx;
+ dj=j=step_mod(cj,ny);apy=py=step_div(cj,ny)*sy;
+ dk=k=step_mod(ck,nz);apz=pz=step_div(ck,nz)*sz;
+ inc1=di-step_mod(bi,nx);
+ inc2=nx*(ny+dj-step_mod(bj,ny))+inc1;
+ inc1+=nx;
+ ijk=di+nx*(dj+ny*dk);
+ q=0;
+}
+
+/** Starts the loop by finding the first particle within the container to
+ * consider.
+ * \return True if there is any particle to consider, false otherwise. */
+bool c_loop_subset::start() {
+ while(co[ijk]==0) {if(!next_block()) return false;}
+ while(mode!=no_check&&out_of_bounds()) {
+ q++;
+ while(q>=co[ijk]) {q=0;if(!next_block()) return false;}
+ }
+ return true;
+}
+
+/** Initializes the class to loop over all particles in a rectangular box.
+ * \param[in] (xmin,xmax) the minimum and maximum x coordinates of the box.
+ * \param[in] (ymin,ymax) the minimum and maximum y coordinates of the box.
+ * \param[in] (zmin,zmax) the minimum and maximum z coordinates of the box.
+ * \param[in] bounds_test whether to do detailed bounds checking. If this is
+ * false then the class will loop over all particles in
+ * blocks that overlap the given box. If it is true, the
+ * particle will only loop over the particles which
+ * actually lie within the box.
+ * \return True if there is any valid point to loop over, false otherwise. */
+void c_loop_subset::setup_box(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax,bool bounds_test) {
+ if(bounds_test) {mode=box;v0=xmin;v1=xmax;v2=ymin;v3=ymax;v4=zmin;v5=zmax;} else mode=no_check;
+ ai=step_int((xmin-ax)*xsp);
+ bi=step_int((xmax-ax)*xsp);
+ aj=step_int((ymin-ay)*ysp);
+ bj=step_int((ymax-ay)*ysp);
+ ak=step_int((zmin-az)*zsp);
+ bk=step_int((zmax-az)*zsp);
+ setup_common();
+}
+
+/** Computes whether the current point is out of bounds, relative to the
+ * current loop setup.
+ * \return True if the point is out of bounds, false otherwise. */
+bool c_loop_subset::out_of_bounds() {
+ double *pp=p[ijk]+ps*q;
+ if(mode==sphere) {
+ double fx(*pp+px-v0),fy(pp[1]+py-v1),fz(pp[2]+pz-v2);
+ return fx*fx+fy*fy+fz*fz>v3;
+ } else {
+ double f(*pp+px);if(f<v0||f>v1) return true;
+ f=pp[1]+py;if(f<v2||f>v3) return true;
+ f=pp[2]+pz;return f<v4||f>v5;
+ }
+}
+
+/** Returns the next block to be tested in a loop, and updates the periodicity
+ * vector if necessary. */
+bool c_loop_subset::next_block() {
+ if(i<bi) {
+ i++;
+ if(ci<nx-1) {ci++;ijk++;} else {ci=0;ijk+=1-nx;px+=sx;}
+ return true;
+ } else if(j<bj) {
+ i=ai;ci=di;px=apx;j++;
+ if(cj<ny-1) {cj++;ijk+=inc1;} else {cj=0;ijk+=inc1-nxy;py+=sy;}
+ return true;
+ } else if(k<bk) {
+ i=ai;ci=di;j=aj;cj=dj;px=apx;py=apy;k++;
+ if(ck<nz-1) {ck++;ijk+=inc2;} else {ck=0;ijk+=inc2-nxyz;pz+=sz;}
+ return true;
+ } else return false;
+}
+
+/** Extends the memory available for storing the ordering. */
+void particle_order::add_ordering_memory() {
+ int *no=new int[size<<2],*nop=no,*opp=o;
+ while(opp<op) *(nop++)=*(opp++);
+ delete [] o;
+ size<<=1;o=no;op=nop;
+}
+
+}
diff --git a/lib/voro++/src/c_loops.hh b/lib/voro++/src/c_loops.hh
new file mode 100644
index 000000000..52684f808
--- /dev/null
+++ b/lib/voro++/src/c_loops.hh
@@ -0,0 +1,456 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file c_loops.hh
+ * \brief Header file for the loop classes. */
+
+#ifndef VOROPP_C_LOOPS_HH
+#define VOROPP_C_LOOPS_HH
+
+#include "config.hh"
+
+namespace voro {
+
+/** A type associated with a c_loop_subset class, determining what type of
+ * geometrical region to loop over. */
+enum c_loop_subset_mode {
+ sphere,
+ box,
+ no_check
+};
+
+/** \brief A class for storing ordering information when particles are added to
+ * a container.
+ *
+ * When particles are added to a container class, they are sorted into an
+ * internal computational grid of blocks. The particle_order class provides a
+ * mechanism for remembering which block particles were sorted into. The import
+ * and put routines in the container class have variants that also take a
+ * particle_order class. Each time they are called, they will store the block
+ * that the particle was sorted into, plus the position of the particle within
+ * the block. The particle_order class can used by the c_loop_order class to
+ * specifically loop over the particles that have their information stored
+ * within it. */
+class particle_order {
+ public:
+ /** A pointer to the array holding the ordering. */
+ int *o;
+ /** A pointer to the next position in the ordering array in
+ * which to store an entry. */
+ int *op;
+ /** The current memory allocation for the class, set to the
+ * number of entries which can be stored. */
+ int size;
+ /** The particle_order constructor allocates memory to store the
+ * ordering information.
+ * \param[in] init_size the initial amount of memory to
+ * allocate. */
+ particle_order(int init_size=init_ordering_size)
+ : o(new int[init_size<<1]),op(o),size(init_size) {}
+ /** The particle_order destructor frees the dynamically allocated
+ * memory used to store the ordering information. */
+ ~particle_order() {
+ delete [] o;
+ }
+ /** Adds a record to the order, corresponding to the memory
+ * address of where a particle was placed into the container.
+ * \param[in] ijk the block into which the particle was placed.
+ * \param[in] q the position within the block where the
+ * particle was placed. */
+ inline void add(int ijk,int q) {
+ if(op==o+size) add_ordering_memory();
+ *(op++)=ijk;*(op++)=q;
+ }
+ private:
+ void add_ordering_memory();
+};
+
+/** \brief Base class for looping over particles in a container.
+ *
+ * This class forms the base of all classes that can loop over a subset of
+ * particles in a contaner in some order. When initialized, it stores constants
+ * about the corresponding container geometry. It also contains a number of
+ * routines for interrogating which particle currently being considered by the
+ * loop, which are common between all of the derived classes. */
+class c_loop_base {
+ public:
+ /** The number of blocks in the x direction. */
+ const int nx;
+ /** The number of blocks in the y direction. */
+ const int ny;
+ /** The number of blocks in the z direction. */
+ const int nz;
+ /** A constant, set to the value of nx multiplied by ny, which
+ * is used in the routines that step through blocks in
+ * sequence. */
+ const int nxy;
+ /** A constant, set to the value of nx*ny*nz, which is used in
+ * the routines that step through blocks in sequence. */
+ const int nxyz;
+ /** The number of floating point numbers per particle in the
+ * associated container data structure. */
+ const int ps;
+ /** A pointer to the particle position information in the
+ * associated container data structure. */
+ double **p;
+ /** A pointer to the particle ID information in the associated
+ * container data structure. */
+ int **id;
+ /** A pointer to the particle counts in the associated
+ * container data structure. */
+ int *co;
+ /** The current x-index of the block under consideration by the
+ * loop. */
+ int i;
+ /** The current y-index of the block under consideration by the
+ * loop. */
+ int j;
+ /** The current z-index of the block under consideration by the
+ * loop. */
+ int k;
+ /** The current index of the block under consideration by the
+ * loop. */
+ int ijk;
+ /** The index of the particle under consideration within the current
+ * block. */
+ int q;
+ /** The constructor copies several necessary constants from the
+ * base container class.
+ * \param[in] con the container class to use. */
+ template<class c_class>
+ c_loop_base(c_class &con) : nx(con.nx), ny(con.ny), nz(con.nz),
+ nxy(con.nxy), nxyz(con.nxyz), ps(con.ps),
+ p(con.p), id(con.id), co(con.co) {}
+ /** Returns the position vector of the particle currently being
+ * considered by the loop.
+ * \param[out] (x,y,z) the position vector of the particle. */
+ inline void pos(double &x,double &y,double &z) {
+ double *pp=p[ijk]+ps*q;
+ x=*(pp++);y=*(pp++);z=*pp;
+ }
+ /** Returns the ID, position vector, and radius of the particle
+ * currently being considered by the loop.
+ * \param[out] pid the particle ID.
+ * \param[out] (x,y,z) the position vector of the particle.
+ * \param[out] r the radius of the particle. If no radius
+ * information is available the default radius
+ * value is returned. */
+ inline void pos(int &pid,double &x,double &y,double &z,double &r) {
+ pid=id[ijk][q];
+ double *pp=p[ijk]+ps*q;
+ x=*(pp++);y=*(pp++);z=*pp;
+ r=ps==3?default_radius:*(++pp);
+ }
+ /** Returns the x position of the particle currently being
+ * considered by the loop. */
+ inline double x() {return p[ijk][ps*q];}
+ /** Returns the y position of the particle currently being
+ * considered by the loop. */
+ inline double y() {return p[ijk][ps*q+1];}
+ /** Returns the z position of the particle currently being
+ * considered by the loop. */
+ inline double z() {return p[ijk][ps*q+2];}
+ /** Returns the ID of the particle currently being considered
+ * by the loop. */
+ inline int pid() {return id[ijk][q];}
+};
+
+/** \brief Class for looping over all of the particles in a container.
+ *
+ * This is one of the simplest loop classes, that scans the computational
+ * blocks in order, and scans all the particles within each block in order. */
+class c_loop_all : public c_loop_base {
+ public:
+ /** The constructor copies several necessary constants from the
+ * base container class.
+ * \param[in] con the container class to use. */
+ template<class c_class>
+ c_loop_all(c_class &con) : c_loop_base(con) {}
+ /** Sets the class to consider the first particle.
+ * \return True if there is any particle to consider, false
+ * otherwise. */
+ inline bool start() {
+ i=j=k=ijk=q=0;
+ while(co[ijk]==0) if(!next_block()) return false;
+ return true;
+ }
+ /** Finds the next particle to test.
+ * \return True if there is another particle, false if no more
+ * particles are available. */
+ inline bool inc() {
+ q++;
+ if(q>=co[ijk]) {
+ q=0;
+ do {
+ if(!next_block()) return false;
+ } while(co[ijk]==0);
+ }
+ return true;
+ }
+ private:
+ /** Updates the internal variables to find the next
+ * computational block with any particles.
+ * \return True if another block is found, false if there are
+ * no more blocks. */
+ inline bool next_block() {
+ ijk++;
+ i++;
+ if(i==nx) {
+ i=0;j++;
+ if(j==ny) {
+ j=0;k++;
+ if(ijk==nxyz) return false;
+ }
+ }
+ return true;
+ }
+};
+
+/** \brief Class for looping over a subset of particles in a container.
+ *
+ * This class can loop over a subset of particles in a certain geometrical
+ * region within the container. The class can be set up to loop over a
+ * rectangular box or sphere. It can also rectangular group of internal
+ * computational blocks. */
+class c_loop_subset : public c_loop_base {
+ public:
+ /** The current mode of operation, determining whether tests
+ * should be applied to particles to ensure they are within a
+ * certain geometrical object. */
+ c_loop_subset_mode mode;
+ /** The constructor copies several necessary constants from the
+ * base container class.
+ * \param[in] con the container class to use. */
+ template<class c_class>
+ c_loop_subset(c_class &con) : c_loop_base(con), ax(con.ax), ay(con.ay), az(con.az),
+ sx(con.bx-ax), sy(con.by-ay), sz(con.bz-az), xsp(con.xsp), ysp(con.ysp), zsp(con.zsp),
+ xperiodic(con.xperiodic), yperiodic(con.yperiodic), zperiodic(con.zperiodic) {}
+ void setup_sphere(double vx,double vy,double vz,double r,bool bounds_test=true);
+ void setup_box(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax,bool bounds_test=true);
+ void setup_intbox(int ai_,int bi_,int aj_,int bj_,int ak_,int bk_);
+ bool start();
+ /** Finds the next particle to test.
+ * \return True if there is another particle, false if no more
+ * particles are available. */
+ inline bool inc() {
+ do {
+ q++;
+ while(q>=co[ijk]) {q=0;if(!next_block()) return false;}
+ } while(mode!=no_check&&out_of_bounds());
+ return true;
+ }
+ private:
+ const double ax,ay,az,sx,sy,sz,xsp,ysp,zsp;
+ const bool xperiodic,yperiodic,zperiodic;
+ double px,py,pz,apx,apy,apz;
+ double v0,v1,v2,v3,v4,v5;
+ int ai,bi,aj,bj,ak,bk,s;
+ int ci,cj,ck,di,dj,dk,inc1,inc2;
+ inline int step_mod(int a,int b) {return a>=0?a%b:b-1-(b-1-a)%b;}
+ inline int step_div(int a,int b) {return a>=0?a/b:-1+(a+1)/b;}
+ inline int step_int(double a) {return a<0?int(a)-1:int(a);}
+ void setup_common();
+ bool next_block();
+ bool out_of_bounds();
+};
+
+/** \brief Class for looping over all of the particles specified in a
+ * pre-assembled particle_order class.
+ *
+ * The particle_order class can be used to create a specific order of particles
+ * within the container. This class can then loop over these particles in this
+ * order. The class is particularly useful in cases where the ordering of the
+ * output must match the ordering of particles as they were inserted into the
+ * container. */
+class c_loop_order : public c_loop_base {
+ public:
+ /** A reference to the ordering class to use. */
+ particle_order &vo;
+ /** A pointer to the current position in the ordering class. */
+ int *cp;
+ /** A pointer to the end position in the ordering class. */
+ int *op;
+ /** The constructor copies several necessary constants from the
+ * base class, and sets up a reference to the ordering class to
+ * use.
+ * \param[in] con the container class to use.
+ * \param[in] vo_ the ordering class to use. */
+ template<class c_class>
+ c_loop_order(c_class &con,particle_order &vo_)
+ : c_loop_base(con), vo(vo_), nx(con.nx), nxy(con.nxy) {}
+ /** Sets the class to consider the first particle.
+ * \return True if there is any particle to consider, false
+ * otherwise. */
+ inline bool start() {
+ cp=vo.o;op=vo.op;
+ if(cp!=op) {
+ ijk=*(cp++);decode();
+ q=*(cp++);
+ return true;
+ } else return false;
+ }
+ /** Finds the next particle to test.
+ * \return True if there is another particle, false if no more
+ * particles are available. */
+ inline bool inc() {
+ if(cp==op) return false;
+ ijk=*(cp++);decode();
+ q=*(cp++);
+ return true;
+ }
+ private:
+ /** The number of computational blocks in the x direction. */
+ const int nx;
+ /** The number of computational blocks in a z-slice. */
+ const int nxy;
+ /** Takes the current block index and computes indices in the
+ * x, y, and z directions. */
+ inline void decode() {
+ k=ijk/nxy;
+ int ijkt=ijk-nxy*k;
+ j=ijkt/nx;
+ i=ijkt-j*nx;
+ }
+};
+
+/** \brief A class for looping over all particles in a container_periodic or
+ * container_periodic_poly class.
+ *
+ * Since the container_periodic and container_periodic_poly classes have a
+ * fundamentally different memory organization, the regular loop classes cannot
+ * be used with them. */
+class c_loop_all_periodic : public c_loop_base {
+ public:
+ /** The constructor copies several necessary constants from the
+ * base periodic container class.
+ * \param[in] con the periodic container class to use. */
+ template<class c_class>
+ c_loop_all_periodic(c_class &con) : c_loop_base(con), ey(con.ey), ez(con.ez), wy(con.wy), wz(con.wz),
+ ijk0(nx*(ey+con.oy*ez)), inc2(2*nx*con.ey+1) {}
+ /** Sets the class to consider the first particle.
+ * \return True if there is any particle to consider, false
+ * otherwise. */
+ inline bool start() {
+ i=0;
+ j=ey;
+ k=ez;
+ ijk=ijk0;
+ q=0;
+ while(co[ijk]==0) if(!next_block()) return false;
+ return true;
+ }
+ /** Finds the next particle to test.
+ * \return True if there is another particle, false if no more
+ * particles are available. */
+ inline bool inc() {
+ q++;
+ if(q>=co[ijk]) {
+ q=0;
+ do {
+ if(!next_block()) return false;
+ } while(co[ijk]==0);
+ }
+ return true;
+ }
+ private:
+ /** The lower y index (inclusive) of the primary domain within
+ * the block structure. */
+ int ey;
+ /** The lower y index (inclusive) of the primary domain within
+ * the block structure. */
+ int ez;
+ /** The upper y index (exclusive) of the primary domain within
+ * the block structure. */
+ int wy;
+ /** The upper z index (exclusive) of the primary domain within
+ * the block structure. */
+ int wz;
+ /** The index of the (0,0,0) block within the block structure.
+ */
+ int ijk0;
+ /** A value to increase ijk by when the z index is increased.
+ */
+ int inc2;
+ /** Updates the internal variables to find the next
+ * computational block with any particles.
+ * \return True if another block is found, false if there are
+ * no more blocks. */
+ inline bool next_block() {
+ i++;
+ if(i==nx) {
+ i=0;j++;
+ if(j==wy) {
+ j=ey;k++;
+ if(k==wz) return false;
+ ijk+=inc2;
+ } else ijk++;
+ } else ijk++;
+ return true;
+ }
+};
+
+/** \brief Class for looping over all of the particles specified in a
+ * pre-assembled particle_order class, for use with container_periodic classes.
+ *
+ * The particle_order class can be used to create a specific order of particles
+ * within the container. This class can then loop over these particles in this
+ * order. The class is particularly useful in cases where the ordering of the
+ * output must match the ordering of particles as they were inserted into the
+ * container. */
+class c_loop_order_periodic : public c_loop_base {
+ public:
+ /** A reference to the ordering class to use. */
+ particle_order &vo;
+ /** A pointer to the current position in the ordering class. */
+ int *cp;
+ /** A pointer to the end position in the ordering class. */
+ int *op;
+ /** The constructor copies several necessary constants from the
+ * base class, and sets up a reference to the ordering class to
+ * use.
+ * \param[in] con the container class to use.
+ * \param[in] vo_ the ordering class to use. */
+ template<class c_class>
+ c_loop_order_periodic(c_class &con,particle_order &vo_)
+ : c_loop_base(con), vo(vo_), nx(con.nx), oxy(con.nx*con.oy) {}
+ /** Sets the class to consider the first particle.
+ * \return True if there is any particle to consider, false
+ * otherwise. */
+ inline bool start() {
+ cp=vo.o;op=vo.op;
+ if(cp!=op) {
+ ijk=*(cp++);decode();
+ q=*(cp++);
+ return true;
+ } else return false;
+ }
+ /** Finds the next particle to test.
+ * \return True if there is another particle, false if no more
+ * particles are available. */
+ inline bool inc() {
+ if(cp==op) return false;
+ ijk=*(cp++);decode();
+ q=*(cp++);
+ return true;
+ }
+ private:
+ /** The number of computational blocks in the x direction. */
+ const int nx;
+ /** The number of computational blocks in a z-slice. */
+ const int oxy;
+ /** Takes the current block index and computes indices in the
+ * x, y, and z directions. */
+ inline void decode() {
+ k=ijk/oxy;
+ int ijkt=ijk-oxy*k;
+ j=ijkt/nx;
+ i=ijkt-j*nx;
+ }
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/cell.cc b/lib/voro++/src/cell.cc
new file mode 100644
index 000000000..5c825ac3e
--- /dev/null
+++ b/lib/voro++/src/cell.cc
@@ -0,0 +1,2252 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file cell.cc
+ * \brief Function implementations for the voronoicell and related classes. */
+
+#include <cmath>
+#include <cstring>
+
+#include "config.hh"
+#include "common.hh"
+#include "cell.hh"
+
+namespace voro {
+
+/** Constructs a Voronoi cell and sets up the initial memory. */
+voronoicell_base::voronoicell_base() :
+ current_vertices(init_vertices), current_vertex_order(init_vertex_order),
+ current_delete_size(init_delete_size), current_delete2_size(init_delete2_size),
+ ed(new int*[current_vertices]), nu(new int[current_vertices]),
+ pts(new double[3*current_vertices]), mem(new int[current_vertex_order]),
+ mec(new int[current_vertex_order]), mep(new int*[current_vertex_order]),
+ ds(new int[current_delete_size]), stacke(ds+current_delete_size),
+ ds2(new int[current_delete2_size]), stacke2(ds2+current_delete_size),
+ current_marginal(init_marginal), marg(new int[current_marginal]) {
+ int i;
+ for(i=0;i<3;i++) {
+ mem[i]=init_n_vertices;mec[i]=0;
+ mep[i]=new int[init_n_vertices*((i<<1)+1)];
+ }
+ mem[3]=init_3_vertices;mec[3]=0;
+ mep[3]=new int[init_3_vertices*7];
+ for(i=4;i<current_vertex_order;i++) {
+ mem[i]=init_n_vertices;mec[i]=0;
+ mep[i]=new int[init_n_vertices*((i<<1)+1)];
+ }
+}
+
+/** The voronoicell destructor deallocates all the dynamic memory. */
+voronoicell_base::~voronoicell_base() {
+ for(int i=current_vertex_order-1;i>=0;i--) if(mem[i]>0) delete [] mep[i];
+ delete [] marg;
+ delete [] ds2;delete [] ds;
+ delete [] mep;delete [] mec;
+ delete [] mem;delete [] pts;
+ delete [] nu;delete [] ed;
+}
+
+/** Ensures that enough memory is allocated prior to carrying out a copy.
+ * \param[in] vc a reference to the specialized version of the calling class.
+ * \param[in] vb a pointered to the class to be copied. */
+template<class vc_class>
+void voronoicell_base::check_memory_for_copy(vc_class &vc,voronoicell_base* vb) {
+ while(current_vertex_order<vb->current_vertex_order) add_memory_vorder(vc);
+ for(int i=0;i<current_vertex_order;i++) while(mem[i]<vb->mec[i]) add_memory(vc,i,ds2);
+ while(current_vertices<vb->p) add_memory_vertices(vc);
+}
+
+/** Copies the vertex and edge information from another class. The routine
+ * assumes that enough memory is available for the copy.
+ * \param[in] vb a pointer to the class to copy. */
+void voronoicell_base::copy(voronoicell_base* vb) {
+ int i,j;
+ p=vb->p;up=0;
+ for(i=0;i<current_vertex_order;i++) {
+ mec[i]=vb->mec[i];
+ for(j=0;j<mec[i]*(2*i+1);j++) mep[i][j]=vb->mep[i][j];
+ for(j=0;j<mec[i]*(2*i+1);j+=2*i+1) ed[mep[i][j+2*i]]=mep[i]+j;
+ }
+ for(i=0;i<p;i++) nu[i]=vb->nu[i];
+ for(i=0;i<3*p;i++) pts[i]=vb->pts[i];
+}
+
+/** Copies the information from another voronoicell class into this
+ * class, extending memory allocation if necessary.
+ * \param[in] c the class to copy. */
+void voronoicell_neighbor::operator=(voronoicell &c) {
+ voronoicell_base *vb=((voronoicell_base*) &c);
+ check_memory_for_copy(*this,vb);copy(vb);
+ int i,j;
+ for(i=0;i<c.current_vertex_order;i++) {
+ for(j=0;j<c.mec[i]*i;j++) mne[i][j]=0;
+ for(j=0;j<c.mec[i];j++) ne[c.mep[i][(2*i+1)*j+2*i]]=mne[i]+(j*i);
+ }
+}
+
+/** Copies the information from another voronoicell_neighbor class into this
+ * class, extending memory allocation if necessary.
+ * \param[in] c the class to copy. */
+void voronoicell_neighbor::operator=(voronoicell_neighbor &c) {
+ voronoicell_base *vb=((voronoicell_base*) &c);
+ check_memory_for_copy(*this,vb);copy(vb);
+ int i,j;
+ for(i=0;i<c.current_vertex_order;i++) {
+ for(j=0;j<c.mec[i]*i;j++) mne[i][j]=c.mne[i][j];
+ for(j=0;j<c.mec[i];j++) ne[c.mep[i][(2*i+1)*j+2*i]]=mne[i]+(j*i);
+ }
+}
+
+/** Translates the vertices of the Voronoi cell by a given vector.
+ * \param[in] (x,y,z) the coordinates of the vector. */
+void voronoicell_base::translate(double x,double y,double z) {
+ x*=2;y*=2;z*=2;
+ double *ptsp=pts;
+ while(ptsp<pts+3*p) {
+ *(ptsp++)=x;*(ptsp++)=y;*(ptsp++)=z;
+ }
+}
+
+/** Increases the memory storage for a particular vertex order, by increasing
+ * the size of the of the corresponding mep array. If the arrays already exist,
+ * their size is doubled; if they don't exist, then new ones of size
+ * init_n_vertices are allocated. The routine also ensures that the pointers in
+ * the ed array are updated, by making use of the back pointers. For the cases
+ * where the back pointer has been temporarily overwritten in the marginal
+ * vertex code, the auxiliary delete stack is scanned to find out how to update
+ * the ed value. If the template has been instantiated with the neighbor
+ * tracking turned on, then the routine also reallocates the corresponding mne
+ * array.
+ * \param[in] i the order of the vertex memory to be increased. */
+template<class vc_class>
+void voronoicell_base::add_memory(vc_class &vc,int i,int *stackp2) {
+ int s=(i<<1)+1;
+ if(mem[i]==0) {
+ vc.n_allocate(i,init_n_vertices);
+ mep[i]=new int[init_n_vertices*s];
+ mem[i]=init_n_vertices;
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Order %d vertex memory created\n",i);
+#endif
+ } else {
+ int j=0,k,*l;
+ mem[i]<<=1;
+ if(mem[i]>max_n_vertices) voro_fatal_error("Point memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Order %d vertex memory scaled up to %d\n",i,mem[i]);
+#endif
+ l=new int[s*mem[i]];
+ int m=0;
+ vc.n_allocate_aux1(i);
+ while(j<s*mec[i]) {
+ k=mep[i][j+(i<<1)];
+ if(k>=0) {
+ ed[k]=l+j;
+ vc.n_set_to_aux1_offset(k,m);
+ } else {
+ int *dsp;
+ for(dsp=ds2;dsp<stackp2;dsp++) {
+ if(ed[*dsp]==mep[i]+j) {
+ ed[*dsp]=l+j;
+ vc.n_set_to_aux1_offset(*dsp,m);
+ break;
+ }
+ }
+ if(dsp==stackp2) voro_fatal_error("Couldn't relocate dangling pointer",VOROPP_INTERNAL_ERROR);
+#if VOROPP_VERBOSE >=3
+ fputs("Relocated dangling pointer",stderr);
+#endif
+ }
+ for(k=0;k<s;k++,j++) l[j]=mep[i][j];
+ for(k=0;k<i;k++,m++) vc.n_copy_to_aux1(i,m);
+ }
+ delete [] mep[i];
+ mep[i]=l;
+ vc.n_switch_to_aux1(i);
+ }
+}
+
+/** Doubles the maximum number of vertices allowed, by reallocating the ed, nu,
+ * and pts arrays. If the allocation exceeds the absolute maximum set in
+ * max_vertices, then the routine exits with a fatal error. If the template has
+ * been instantiated with the neighbor tracking turned on, then the routine
+ * also reallocates the ne array. */
+template<class vc_class>
+void voronoicell_base::add_memory_vertices(vc_class &vc) {
+ int i=(current_vertices<<1),j,**pp,*pnu;
+ if(i>max_vertices) voro_fatal_error("Vertex memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Vertex memory scaled up to %d\n",i);
+#endif
+ double *ppts;
+ pp=new int*[i];
+ for(j=0;j<current_vertices;j++) pp[j]=ed[j];
+ delete [] ed;ed=pp;
+ vc.n_add_memory_vertices(i);
+ pnu=new int[i];
+ for(j=0;j<current_vertices;j++) pnu[j]=nu[j];
+ delete [] nu;nu=pnu;
+ ppts=new double[3*i];
+ for(j=0;j<3*current_vertices;j++) ppts[j]=pts[j];
+ delete [] pts;pts=ppts;
+ current_vertices=i;
+}
+
+/** Doubles the maximum allowed vertex order, by reallocating mem, mep, and mec
+ * arrays. If the allocation exceeds the absolute maximum set in
+ * max_vertex_order, then the routine causes a fatal error. If the template has
+ * been instantiated with the neighbor tracking turned on, then the routine
+ * also reallocates the mne array. */
+template<class vc_class>
+void voronoicell_base::add_memory_vorder(vc_class &vc) {
+ int i=(current_vertex_order<<1),j,*p1,**p2;
+ if(i>max_vertex_order) voro_fatal_error("Vertex order memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Vertex order memory scaled up to %d\n",i);
+#endif
+ p1=new int[i];
+ for(j=0;j<current_vertex_order;j++) p1[j]=mem[j];while(j<i) p1[j++]=0;
+ delete [] mem;mem=p1;
+ p2=new int*[i];
+ for(j=0;j<current_vertex_order;j++) p2[j]=mep[j];
+ delete [] mep;mep=p2;
+ p1=new int[i];
+ for(j=0;j<current_vertex_order;j++) p1[j]=mec[j];while(j<i) p1[j++]=0;
+ delete [] mec;mec=p1;
+ vc.n_add_memory_vorder(i);
+ current_vertex_order=i;
+}
+
+/** Doubles the size allocation of the main delete stack. If the allocation
+ * exceeds the absolute maximum set in max_delete_size, then routine causes a
+ * fatal error. */
+void voronoicell_base::add_memory_ds(int *&stackp) {
+ current_delete_size<<=1;
+ if(current_delete_size>max_delete_size) voro_fatal_error("Delete stack 1 memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Delete stack 1 memory scaled up to %d\n",current_delete_size);
+#endif
+ int *dsn=new int[current_delete_size],*dsnp=dsn,*dsp=ds;
+ while(dsp<stackp) *(dsnp++)=*(dsp++);
+ delete [] ds;ds=dsn;stackp=dsnp;
+ stacke=ds+current_delete_size;
+}
+
+/** Doubles the size allocation of the auxiliary delete stack. If the
+ * allocation exceeds the absolute maximum set in max_delete2_size, then the
+ * routine causes a fatal error. */
+void voronoicell_base::add_memory_ds2(int *&stackp2) {
+ current_delete2_size<<=1;
+ if(current_delete2_size>max_delete2_size) voro_fatal_error("Delete stack 2 memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Delete stack 2 memory scaled up to %d\n",current_delete2_size);
+#endif
+ int *dsn=new int[current_delete2_size],*dsnp=dsn,*dsp=ds2;
+ while(dsp<stackp2) *(dsnp++)=*(dsp++);
+ delete [] ds2;ds2=dsn;stackp2=dsnp;
+ stacke2=ds2+current_delete2_size;
+}
+
+/** Initializes a Voronoi cell as a rectangular box with the given dimensions.
+ * \param[in] (xmin,xmax) the minimum and maximum x coordinates.
+ * \param[in] (ymin,ymax) the minimum and maximum y coordinates.
+ * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */
+void voronoicell_base::init_base(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax) {
+ for(int i=0;i<current_vertex_order;i++) mec[i]=0;up=0;
+ mec[3]=p=8;xmin*=2;xmax*=2;ymin*=2;ymax*=2;zmin*=2;zmax*=2;
+ *pts=xmin;pts[1]=ymin;pts[2]=zmin;
+ pts[3]=xmax;pts[4]=ymin;pts[5]=zmin;
+ pts[6]=xmin;pts[7]=ymax;pts[8]=zmin;
+ pts[9]=xmax;pts[10]=ymax;pts[11]=zmin;
+ pts[12]=xmin;pts[13]=ymin;pts[14]=zmax;
+ pts[15]=xmax;pts[16]=ymin;pts[17]=zmax;
+ pts[18]=xmin;pts[19]=ymax;pts[20]=zmax;
+ pts[21]=xmax;pts[22]=ymax;pts[23]=zmax;
+ int *q=mep[3];
+ *q=1;q[1]=4;q[2]=2;q[3]=2;q[4]=1;q[5]=0;q[6]=0;
+ q[7]=3;q[8]=5;q[9]=0;q[10]=2;q[11]=1;q[12]=0;q[13]=1;
+ q[14]=0;q[15]=6;q[16]=3;q[17]=2;q[18]=1;q[19]=0;q[20]=2;
+ q[21]=2;q[22]=7;q[23]=1;q[24]=2;q[25]=1;q[26]=0;q[27]=3;
+ q[28]=6;q[29]=0;q[30]=5;q[31]=2;q[32]=1;q[33]=0;q[34]=4;
+ q[35]=4;q[36]=1;q[37]=7;q[38]=2;q[39]=1;q[40]=0;q[41]=5;
+ q[42]=7;q[43]=2;q[44]=4;q[45]=2;q[46]=1;q[47]=0;q[48]=6;
+ q[49]=5;q[50]=3;q[51]=6;q[52]=2;q[53]=1;q[54]=0;q[55]=7;
+ *ed=q;ed[1]=q+7;ed[2]=q+14;ed[3]=q+21;
+ ed[4]=q+28;ed[5]=q+35;ed[6]=q+42;ed[7]=q+49;
+ *nu=nu[1]=nu[2]=nu[3]=nu[4]=nu[5]=nu[6]=nu[7]=3;
+}
+
+/** Initializes a Voronoi cell as a regular octahedron.
+ * \param[in] l The distance from the octahedron center to a vertex. Six
+ * vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0),
+ * (0,l,0), (0,0,-l), and (0,0,l). */
+void voronoicell_base::init_octahedron_base(double l) {
+ for(int i=0;i<current_vertex_order;i++) mec[i]=0;up=0;
+ mec[4]=p=6;l*=2;
+ *pts=-l;pts[1]=0;pts[2]=0;
+ pts[3]=l;pts[4]=0;pts[5]=0;
+ pts[6]=0;pts[7]=-l;pts[8]=0;
+ pts[9]=0;pts[10]=l;pts[11]=0;
+ pts[12]=0;pts[13]=0;pts[14]=-l;
+ pts[15]=0;pts[16]=0;pts[17]=l;
+ int *q=mep[4];
+ *q=2;q[1]=5;q[2]=3;q[3]=4;q[4]=0;q[5]=0;q[6]=0;q[7]=0;q[8]=0;
+ q[9]=2;q[10]=4;q[11]=3;q[12]=5;q[13]=2;q[14]=2;q[15]=2;q[16]=2;q[17]=1;
+ q[18]=0;q[19]=4;q[20]=1;q[21]=5;q[22]=0;q[23]=3;q[24]=0;q[25]=1;q[26]=2;
+ q[27]=0;q[28]=5;q[29]=1;q[30]=4;q[31]=2;q[32]=3;q[33]=2;q[34]=1;q[35]=3;
+ q[36]=0;q[37]=3;q[38]=1;q[39]=2;q[40]=3;q[41]=3;q[42]=1;q[43]=1;q[44]=4;
+ q[45]=0;q[46]=2;q[47]=1;q[48]=3;q[49]=1;q[50]=3;q[51]=3;q[52]=1;q[53]=5;
+ *ed=q;ed[1]=q+9;ed[2]=q+18;ed[3]=q+27;ed[4]=q+36;ed[5]=q+45;
+ *nu=nu[1]=nu[2]=nu[3]=nu[4]=nu[5]=4;
+}
+
+/** Initializes a Voronoi cell as a tetrahedron. It assumes that the normal to
+ * the face for the first three vertices points inside.
+ * \param (x0,y0,z0) a position vector for the first vertex.
+ * \param (x1,y1,z1) a position vector for the second vertex.
+ * \param (x2,y2,z2) a position vector for the third vertex.
+ * \param (x3,y3,z3) a position vector for the fourth vertex. */
+void voronoicell_base::init_tetrahedron_base(double x0,double y0,double z0,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3) {
+ for(int i=0;i<current_vertex_order;i++) mec[i]=0;up=0;
+ mec[3]=p=4;
+ *pts=x0*2;pts[1]=y0*2;pts[2]=z0*2;
+ pts[3]=x1*2;pts[4]=y1*2;pts[5]=z1*2;
+ pts[6]=x2*2;pts[7]=y2*2;pts[8]=z2*2;
+ pts[9]=x3*2;pts[10]=y3*2;pts[11]=z3*2;
+ int *q=mep[3];
+ *q=1;q[1]=3;q[2]=2;q[3]=0;q[4]=0;q[5]=0;q[6]=0;
+ q[7]=0;q[8]=2;q[9]=3;q[10]=0;q[11]=2;q[12]=1;q[13]=1;
+ q[14]=0;q[15]=3;q[16]=1;q[17]=2;q[18]=2;q[19]=1;q[20]=2;
+ q[21]=0;q[22]=1;q[23]=2;q[24]=1;q[25]=2;q[26]=1;q[27]=3;
+ *ed=q;ed[1]=q+7;ed[2]=q+14;ed[3]=q+21;
+ *nu=nu[1]=nu[2]=nu[3]=3;
+}
+
+/** Checks that the relational table of the Voronoi cell is accurate, and
+ * prints out any errors. This algorithm is O(p), so running it every time the
+ * plane routine is called will result in a significant slowdown. */
+void voronoicell_base::check_relations() {
+ int i,j;
+ for(i=0;i<p;i++) for(j=0;j<nu[i];j++) if(ed[ed[i][j]][ed[i][nu[i]+j]]!=i)
+ printf("Relational error at point %d, edge %d.\n",i,j);
+}
+
+/** This routine checks for any two vertices that are connected by more than
+ * one edge. The plane algorithm is designed so that this should not happen, so
+ * any occurrences are most likely errors. Note that the routine is O(p), so
+ * running it every time the plane routine is called will result in a
+ * significant slowdown. */
+void voronoicell_base::check_duplicates() {
+ int i,j,k;
+ for(i=0;i<p;i++) for(j=1;j<nu[i];j++) for(k=0;k<j;k++) if(ed[i][j]==ed[i][k])
+ printf("Duplicate edges: (%d,%d) and (%d,%d) [%d]\n",i,j,i,k,ed[i][j]);
+}
+
+/** Constructs the relational table if the edges have been specified. */
+void voronoicell_base::construct_relations() {
+ int i,j,k,l;
+ for(i=0;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ l=0;
+ while(ed[k][l]!=i) {
+ l++;
+ if(l==nu[k]) voro_fatal_error("Relation table construction failed",VOROPP_INTERNAL_ERROR);
+ }
+ ed[i][nu[i]+j]=l;
+ }
+}
+
+/** Starting from a point within the current cutting plane, this routine attempts
+ * to find an edge to a point outside the cutting plane. This prevents the plane
+ * routine from .
+ * \param[in] vc a reference to the specialized version of the calling class.
+ * \param[in,out] up */
+template<class vc_class>
+inline bool voronoicell_base::search_for_outside_edge(vc_class &vc,int &up) {
+ int i,lp,lw,*j(ds2),*stackp2(ds2);
+ double l;
+ *(stackp2++)=up;
+ while(j<stackp2) {
+ up=*(j++);
+ for(i=0;i<nu[up];i++) {
+ lp=ed[up][i];
+ lw=m_test(lp,l);
+ if(lw==-1) return true;
+ else if(lw==0) add_to_stack(vc,lp,stackp2);
+ }
+ }
+ return false;
+}
+
+/** Adds a point to the auxiliary delete stack if it is not already there.
+ * \param[in] vc a reference to the specialized version of the calling class.
+ * \param[in] lp the index of the point to add.
+ * \param[in,out] stackp2 a pointer to the end of the stack entries. */
+template<class vc_class>
+inline void voronoicell_base::add_to_stack(vc_class &vc,int lp,int *&stackp2) {
+ for(int *k(ds2);k<stackp2;k++) if(*k==lp) return;
+ if(stackp2==stacke2) add_memory_ds2(stackp2);
+ *(stackp2++)=lp;
+}
+
+/** Cuts the Voronoi cell by a particle whose center is at a separation of
+ * (x,y,z) from the cell center. The value of rsq should be initially set to
+ * \f$x^2+y^2+z^2\f$.
+ * \param[in] vc a reference to the specialized version of the calling class.
+ * \param[in] (x,y,z) the normal vector to the plane.
+ * \param[in] rsq the distance along this vector of the plane.
+ * \param[in] p_id the plane ID (for neighbor tracking only).
+ * \return False if the plane cut deleted the cell entirely, true otherwise. */
+template<class vc_class>
+bool voronoicell_base::nplane(vc_class &vc,double x,double y,double z,double rsq,int p_id) {
+ int count=0,i,j,k,lp=up,cp,qp,rp,*stackp(ds),*stackp2(ds2),*dsp;
+ int us=0,ls=0,qs,iqs,cs,uw,qw,lw;
+ int *edp,*edd;
+ double u,l,r,q;bool complicated_setup=false,new_double_edge=false,double_edge=false;
+
+ // Initialize the safe testing routine
+ n_marg=0;px=x;py=y;pz=z;prsq=rsq;
+
+ // Test approximately sqrt(n)/4 points for their proximity to the plane
+ // and keep the one which is closest
+ uw=m_test(up,u);
+
+ // Starting from an initial guess, we now move from vertex to vertex,
+ // to try and find an edge which intersects the cutting plane,
+ // or a vertex which is on the plane
+ try {
+ if(uw==1) {
+
+ // The test point is inside the cutting plane.
+ us=0;
+ do {
+ lp=ed[up][us];
+ lw=m_test(lp,l);
+ if(l<u) break;
+ us++;
+ } while (us<nu[up]);
+
+ if(us==nu[up]) {
+ return false;
+ }
+
+ ls=ed[up][nu[up]+us];
+ while(lw==1) {
+ if(++count>=p) throw true;
+ u=l;up=lp;
+ for(us=0;us<ls;us++) {
+ lp=ed[up][us];
+ lw=m_test(lp,l);
+ if(l<u) break;
+ }
+ if(us==ls) {
+ us++;
+ while(us<nu[up]) {
+ lp=ed[up][us];
+ lw=m_test(lp,l);
+ if(l<u) break;
+ us++;
+ }
+ if(us==nu[up]) {
+ return false;
+ }
+ }
+ ls=ed[up][nu[up]+us];
+ }
+
+ // If the last point in the iteration is within the
+ // plane, we need to do the complicated setup
+ // routine. Otherwise, we use the regular iteration.
+ if(lw==0) {
+ up=lp;
+ complicated_setup=true;
+ } else complicated_setup=false;
+ } else if(uw==-1) {
+ us=0;
+ do {
+ qp=ed[up][us];
+ qw=m_test(qp,q);
+ if(u<q) break;
+ us++;
+ } while (us<nu[up]);
+ if(us==nu[up]) return true;
+
+ while(qw==-1) {
+ qs=ed[up][nu[up]+us];
+ if(++count>=p) throw true;
+ u=q;up=qp;
+ for(us=0;us<qs;us++) {
+ qp=ed[up][us];
+ qw=m_test(qp,q);
+ if(u<q) break;
+ }
+ if(us==qs) {
+ us++;
+ while(us<nu[up]) {
+ qp=ed[up][us];
+ qw=m_test(qp,q);
+ if(u<q) break;
+ us++;
+ }
+ if(us==nu[up]) return true;
+ }
+ }
+ if(qw==1) {
+ lp=up;ls=us;l=u;
+ up=qp;us=ed[lp][nu[lp]+ls];u=q;
+ complicated_setup=false;
+ } else {
+ up=qp;
+ complicated_setup=true;
+ }
+ } else {
+
+ // Our original test point was on the plane, so we
+ // automatically head for the complicated setup
+ // routine
+ complicated_setup=true;
+ }
+ }
+ catch(bool except) {
+ // This routine is a fall-back, in case floating point errors
+ // cause the usual search routine to fail. In the fall-back
+ // routine, we just test every edge to find one straddling
+ // the plane.
+#if VOROPP_VERBOSE >=1
+ fputs("Bailed out of convex calculation\n",stderr);
+#endif
+ qw=1;lw=0;
+ for(qp=0;qp<p;qp++) {
+ qw=m_test(qp,q);
+ if(qw==1) {
+
+ // The point is inside the cutting space. Now
+ // see if we can find a neighbor which isn't.
+ for(us=0;us<nu[qp];us++) {
+ lp=ed[qp][us];
+ if(lp<qp) {
+ lw=m_test(lp,l);
+ if(lw!=1) break;
+ }
+ }
+ if(us<nu[qp]) {
+ up=qp;
+ if(lw==0) {
+ complicated_setup=true;
+ } else {
+ complicated_setup=false;
+ u=q;
+ ls=ed[up][nu[up]+us];
+ }
+ break;
+ }
+ } else if(qw==-1) {
+
+ // The point is outside the cutting space. See
+ // if we can find a neighbor which isn't.
+ for(ls=0;ls<nu[qp];ls++) {
+ up=ed[qp][ls];
+ if(up<qp) {
+ uw=m_test(up,u);
+ if(uw!=-1) break;
+ }
+ }
+ if(ls<nu[qp]) {
+ if(uw==0) {
+ up=qp;
+ complicated_setup=true;
+ } else {
+ complicated_setup=false;
+ lp=qp;l=q;
+ us=ed[lp][nu[lp]+ls];
+ }
+ break;
+ }
+ } else {
+
+ // The point is in the plane, so we just
+ // proceed with the complicated setup routine
+ up=qp;
+ complicated_setup=true;
+ break;
+ }
+ }
+ if(qp==p) return qw==-1?true:false;
+ }
+
+ // We're about to add the first point of the new facet. In either
+ // routine, we have to add a point, so first check there's space for
+ // it.
+ if(p==current_vertices) add_memory_vertices(vc);
+
+ if(complicated_setup) {
+
+ // We want to be strict about reaching the conclusion that the
+ // cell is entirely within the cutting plane. It's not enough
+ // to find a vertex that has edges which are all inside or on
+ // the plane. If the vertex has neighbors that are also on the
+ // plane, we should check those too.
+ if(!search_for_outside_edge(vc,up)) return false;
+
+ // The search algorithm found a point which is on the cutting
+ // plane. We leave that point in place, and create a new one at
+ // the same location.
+ pts[3*p]=pts[3*up];
+ pts[3*p+1]=pts[3*up+1];
+ pts[3*p+2]=pts[3*up+2];
+
+ // Search for a collection of edges of the test vertex which
+ // are outside of the cutting space. Begin by testing the
+ // zeroth edge.
+ i=0;
+ lp=*ed[up];
+ lw=m_test(lp,l);
+ if(lw!=-1) {
+
+ // The first edge is either inside the cutting space,
+ // or lies within the cutting plane. Test the edges
+ // sequentially until we find one that is outside.
+ rp=lw;
+ do {
+ i++;
+
+ // If we reached the last edge with no luck
+ // then all of the vertices are inside
+ // or on the plane, so the cell is completely
+ // deleted
+ if(i==nu[up]) return false;
+ lp=ed[up][i];
+ lw=m_test(lp,l);
+ } while (lw!=-1);
+ j=i+1;
+
+ // We found an edge outside the cutting space. Keep
+ // moving through these edges until we find one that's
+ // inside or on the plane.
+ while(j<nu[up]) {
+ lp=ed[up][j];
+ lw=m_test(lp,l);
+ if(lw!=-1) break;
+ j++;
+ }
+
+ // Compute the number of edges for the new vertex. In
+ // general it will be the number of outside edges
+ // found, plus two. But we need to recognize the
+ // special case when all but one edge is outside, and
+ // the remaining one is on the plane. For that case we
+ // have to reduce the edge count by one to prevent
+ // doubling up.
+ if(j==nu[up]&&i==1&&rp==0) {
+ nu[p]=nu[up];
+ double_edge=true;
+ } else nu[p]=j-i+2;
+ k=1;
+
+ // Add memory for the new vertex if needed, and
+ // initialize
+ while (nu[p]>=current_vertex_order) add_memory_vorder(vc);
+ if(mec[nu[p]]==mem[nu[p]]) add_memory(vc,nu[p],stackp2);
+ vc.n_set_pointer(p,nu[p]);
+ ed[p]=mep[nu[p]]+((nu[p]<<1)+1)*mec[nu[p]]++;
+ ed[p][nu[p]<<1]=p;
+
+ // Copy the edges of the original vertex into the new
+ // one. Delete the edges of the original vertex, and
+ // update the relational table.
+ us=cycle_down(i,up);
+ while(i<j) {
+ qp=ed[up][i];
+ qs=ed[up][nu[up]+i];
+ vc.n_copy(p,k,up,i);
+ ed[p][k]=qp;
+ ed[p][nu[p]+k]=qs;
+ ed[qp][qs]=p;
+ ed[qp][nu[qp]+qs]=k;
+ ed[up][i]=-1;
+ i++;k++;
+ }
+ qs=i==nu[up]?0:i;
+ } else {
+
+ // In this case, the zeroth edge is outside the cutting
+ // plane. Begin by searching backwards from the last
+ // edge until we find an edge which isn't outside.
+ i=nu[up]-1;
+ lp=ed[up][i];
+ lw=m_test(lp,l);
+ while(lw==-1) {
+ i--;
+
+ // If i reaches zero, then we have a point in
+ // the plane all of whose edges are outside
+ // the cutting space, so we just exit
+ if(i==0) return true;
+ lp=ed[up][i];
+ lw=m_test(lp,l);
+ }
+
+ // Now search forwards from zero
+ j=1;
+ qp=ed[up][j];
+ qw=m_test(qp,q);
+ while(qw==-1) {
+ j++;
+ qp=ed[up][j];
+ qw=m_test(qp,l);
+ }
+
+ // Compute the number of edges for the new vertex. In
+ // general it will be the number of outside edges
+ // found, plus two. But we need to recognize the
+ // special case when all but one edge is outside, and
+ // the remaining one is on the plane. For that case we
+ // have to reduce the edge count by one to prevent
+ // doubling up.
+ if(i==j&&qw==0) {
+ double_edge=true;
+ nu[p]=nu[up];
+ } else {
+ nu[p]=nu[up]-i+j+1;
+ }
+
+ // Add memory to store the vertex if it doesn't exist
+ // already
+ k=1;
+ while(nu[p]>=current_vertex_order) add_memory_vorder(vc);
+ if(mec[nu[p]]==mem[nu[p]]) add_memory(vc,nu[p],stackp2);
+
+ // Copy the edges of the original vertex into the new
+ // one. Delete the edges of the original vertex, and
+ // update the relational table.
+ vc.n_set_pointer(p,nu[p]);
+ ed[p]=mep[nu[p]]+((nu[p]<<1)+1)*mec[nu[p]]++;
+ ed[p][nu[p]<<1]=p;
+ us=i++;
+ while(i<nu[up]) {
+ qp=ed[up][i];
+ qs=ed[up][nu[up]+i];
+ vc.n_copy(p,k,up,i);
+ ed[p][k]=qp;
+ ed[p][nu[p]+k]=qs;
+ ed[qp][qs]=p;
+ ed[qp][nu[qp]+qs]=k;
+ ed[up][i]=-1;
+ i++;k++;
+ }
+ i=0;
+ while(i<j) {
+ qp=ed[up][i];
+ qs=ed[up][nu[up]+i];
+ vc.n_copy(p,k,up,i);
+ ed[p][k]=qp;
+ ed[p][nu[p]+k]=qs;
+ ed[qp][qs]=p;
+ ed[qp][nu[qp]+qs]=k;
+ ed[up][i]=-1;
+ i++;k++;
+ }
+ qs=j;
+ }
+ if(!double_edge) {
+ vc.n_copy(p,k,up,qs);
+ vc.n_set(p,0,p_id);
+ } else vc.n_copy(p,0,up,qs);
+
+ // Add this point to the auxiliary delete stack
+ if(stackp2==stacke2) add_memory_ds2(stackp2);
+ *(stackp2++)=up;
+
+ // Look at the edges on either side of the group that was
+ // detected. We're going to commence facet computation by
+ // moving along one of them. We are going to end up coming back
+ // along the other one.
+ cs=k;
+ qp=up;q=u;
+ i=ed[up][us];
+ us=ed[up][nu[up]+us];
+ up=i;
+ ed[qp][nu[qp]<<1]=-p;
+
+ } else {
+
+ // The search algorithm found an intersected edge between the
+ // points lp and up. Create a new vertex between them which
+ // lies on the cutting plane. Since u and l differ by at least
+ // the tolerance, this division should never screw up.
+ if(stackp==stacke) add_memory_ds(stackp);
+ *(stackp++)=up;
+ r=u/(u-l);l=1-r;
+ pts[3*p]=pts[3*lp]*r+pts[3*up]*l;
+ pts[3*p+1]=pts[3*lp+1]*r+pts[3*up+1]*l;
+ pts[3*p+2]=pts[3*lp+2]*r+pts[3*up+2]*l;
+
+ // This point will always have three edges. Connect one of them
+ // to lp.
+ nu[p]=3;
+ if(mec[3]==mem[3]) add_memory(vc,3,stackp2);
+ vc.n_set_pointer(p,3);
+ vc.n_set(p,0,p_id);
+ vc.n_copy(p,1,up,us);
+ vc.n_copy(p,2,lp,ls);
+ ed[p]=mep[3]+7*mec[3]++;
+ ed[p][6]=p;
+ ed[up][us]=-1;
+ ed[lp][ls]=p;
+ ed[lp][nu[lp]+ls]=1;
+ ed[p][1]=lp;
+ ed[p][nu[p]+1]=ls;
+ cs=2;
+
+ // Set the direction to move in
+ qs=cycle_up(us,up);
+ qp=up;q=u;
+ }
+
+ // When the code reaches here, we have initialized the first point, and
+ // we have a direction for moving it to construct the rest of the facet
+ cp=p;rp=p;p++;
+ while(qp!=up||qs!=us) {
+
+ // We're currently tracing round an intersected facet. Keep
+ // moving around it until we find a point or edge which
+ // intersects the plane.
+ lp=ed[qp][qs];
+ lw=m_test(lp,l);
+
+ if(lw==1) {
+
+ // The point is still in the cutting space. Just add it
+ // to the delete stack and keep moving.
+ qs=cycle_up(ed[qp][nu[qp]+qs],lp);
+ qp=lp;
+ q=l;
+ if(stackp==stacke) add_memory_ds(stackp);
+ *(stackp++)=qp;
+
+ } else if(lw==-1) {
+
+ // The point is outside of the cutting space, so we've
+ // found an intersected edge. Introduce a regular point
+ // at the point of intersection. Connect it to the
+ // point we just tested. Also connect it to the previous
+ // new point in the facet we're constructing.
+ if(p==current_vertices) add_memory_vertices(vc);
+ r=q/(q-l);l=1-r;
+ pts[3*p]=pts[3*lp]*r+pts[3*qp]*l;
+ pts[3*p+1]=pts[3*lp+1]*r+pts[3*qp+1]*l;
+ pts[3*p+2]=pts[3*lp+2]*r+pts[3*qp+2]*l;
+ nu[p]=3;
+ if(mec[3]==mem[3]) add_memory(vc,3,stackp2);
+ ls=ed[qp][qs+nu[qp]];
+ vc.n_set_pointer(p,3);
+ vc.n_set(p,0,p_id);
+ vc.n_copy(p,1,qp,qs);
+ vc.n_copy(p,2,lp,ls);
+ ed[p]=mep[3]+7*mec[3]++;
+ *ed[p]=cp;
+ ed[p][1]=lp;
+ ed[p][3]=cs;
+ ed[p][4]=ls;
+ ed[p][6]=p;
+ ed[lp][ls]=p;
+ ed[lp][nu[lp]+ls]=1;
+ ed[cp][cs]=p;
+ ed[cp][nu[cp]+cs]=0;
+ ed[qp][qs]=-1;
+ qs=cycle_up(qs,qp);
+ cp=p++;
+ cs=2;
+ } else {
+
+ // We've found a point which is on the cutting plane.
+ // We're going to introduce a new point right here, but
+ // first we need to figure out the number of edges it
+ // has.
+ if(p==current_vertices) add_memory_vertices(vc);
+
+ // If the previous vertex detected a double edge, our
+ // new vertex will have one less edge.
+ k=double_edge?0:1;
+ qs=ed[qp][nu[qp]+qs];
+ qp=lp;
+ iqs=qs;
+
+ // Start testing the edges of the current point until
+ // we find one which isn't outside the cutting space
+ do {
+ k++;
+ qs=cycle_up(qs,qp);
+ lp=ed[qp][qs];
+ lw=m_test(lp,l);
+ } while (lw==-1);
+
+ // Now we need to find out whether this marginal vertex
+ // we are on has been visited before, because if that's
+ // the case, we need to add vertices to the existing
+ // new vertex, rather than creating a fresh one. We also
+ // need to figure out whether we're in a case where we
+ // might be creating a duplicate edge.
+ j=-ed[qp][nu[qp]<<1];
+ if(qp==up&&qs==us) {
+
+ // If we're heading into the final part of the
+ // new facet, then we never worry about the
+ // duplicate edge calculation.
+ new_double_edge=false;
+ if(j>0) k+=nu[j];
+ } else {
+ if(j>0) {
+
+ // This vertex was visited before, so
+ // count those vertices to the ones we
+ // already have.
+ k+=nu[j];
+
+ // The only time when we might make a
+ // duplicate edge is if the point we're
+ // going to move to next is also a
+ // marginal point, so test for that
+ // first.
+ if(lw==0) {
+
+ // Now see whether this marginal point
+ // has been visited before.
+ i=-ed[lp][nu[lp]<<1];
+ if(i>0) {
+
+ // Now see if the last edge of that other
+ // marginal point actually ends up here.
+ if(ed[i][nu[i]-1]==j) {
+ new_double_edge=true;
+ k-=1;
+ } else new_double_edge=false;
+ } else {
+
+ // That marginal point hasn't been visited
+ // before, so we probably don't have to worry
+ // about duplicate edges, except in the
+ // case when that's the way into the end
+ // of the facet, because that way always creates
+ // an edge.
+ if(j==rp&&lp==up&&ed[qp][nu[qp]+qs]==us) {
+ new_double_edge=true;
+ k-=1;
+ } else new_double_edge=false;
+ }
+ } else new_double_edge=false;
+ } else {
+
+ // The vertex hasn't been visited
+ // before, but let's see if it's
+ // marginal
+ if(lw==0) {
+
+ // If it is, we need to check
+ // for the case that it's a
+ // small branch, and that we're
+ // heading right back to where
+ // we came from
+ i=-ed[lp][nu[lp]<<1];
+ if(i==cp) {
+ new_double_edge=true;
+ k-=1;
+ } else new_double_edge=false;
+ } else new_double_edge=false;
+ }
+ }
+
+ // k now holds the number of edges of the new vertex
+ // we are forming. Add memory for it if it doesn't exist
+ // already.
+ while(k>=current_vertex_order) add_memory_vorder(vc);
+ if(mec[k]==mem[k]) add_memory(vc,k,stackp2);
+
+ // Now create a new vertex with order k, or augment
+ // the existing one
+ if(j>0) {
+
+ // If we're augmenting a vertex but we don't
+ // actually need any more edges, just skip this
+ // routine to avoid memory confusion
+ if(nu[j]!=k) {
+ // Allocate memory and copy the edges
+ // of the previous instance into it
+ vc.n_set_aux1(k);
+ edp=mep[k]+((k<<1)+1)*mec[k]++;
+ i=0;
+ while(i<nu[j]) {
+ vc.n_copy_aux1(j,i);
+ edp[i]=ed[j][i];
+ edp[k+i]=ed[j][nu[j]+i];
+ i++;
+ }
+ edp[k<<1]=j;
+
+ // Remove the previous instance with
+ // fewer vertices from the memory
+ // structure
+ edd=mep[nu[j]]+((nu[j]<<1)+1)*--mec[nu[j]];
+ if(edd!=ed[j]) {
+ for(lw=0;lw<=(nu[j]<<1);lw++) ed[j][lw]=edd[lw];
+ vc.n_set_aux2_copy(j,nu[j]);
+ vc.n_copy_pointer(edd[nu[j]<<1],j);
+ ed[edd[nu[j]<<1]]=ed[j];
+ }
+ vc.n_set_to_aux1(j);
+ ed[j]=edp;
+ } else i=nu[j];
+ } else {
+
+ // Allocate a new vertex of order k
+ vc.n_set_pointer(p,k);
+ ed[p]=mep[k]+((k<<1)+1)*mec[k]++;
+ ed[p][k<<1]=p;
+ if(stackp2==stacke2) add_memory_ds2(stackp2);
+ *(stackp2++)=qp;
+ pts[3*p]=pts[3*qp];
+ pts[3*p+1]=pts[3*qp+1];
+ pts[3*p+2]=pts[3*qp+2];
+ ed[qp][nu[qp]<<1]=-p;
+ j=p++;
+ i=0;
+ }
+ nu[j]=k;
+
+ // Unless the previous case was a double edge, connect
+ // the first available edge of the new vertex to the
+ // last one in the facet
+ if(!double_edge) {
+ ed[j][i]=cp;
+ ed[j][nu[j]+i]=cs;
+ vc.n_set(j,i,p_id);
+ ed[cp][cs]=j;
+ ed[cp][nu[cp]+cs]=i;
+ i++;
+ }
+
+ // Copy in the edges of the underlying vertex,
+ // and do one less if this was a double edge
+ qs=iqs;
+ while(i<(new_double_edge?k:k-1)) {
+ qs=cycle_up(qs,qp);
+ lp=ed[qp][qs];ls=ed[qp][nu[qp]+qs];
+ vc.n_copy(j,i,qp,qs);
+ ed[j][i]=lp;
+ ed[j][nu[j]+i]=ls;
+ ed[lp][ls]=j;
+ ed[lp][nu[lp]+ls]=i;
+ ed[qp][qs]=-1;
+ i++;
+ }
+ qs=cycle_up(qs,qp);
+ cs=i;
+ cp=j;
+ vc.n_copy(j,new_double_edge?0:cs,qp,qs);
+
+ // Update the double_edge flag, to pass it
+ // to the next instance of this routine
+ double_edge=new_double_edge;
+ }
+ }
+
+ // Connect the final created vertex to the initial one
+ ed[cp][cs]=rp;
+ *ed[rp]=cp;
+ ed[cp][nu[cp]+cs]=0;
+ ed[rp][nu[rp]]=cs;
+
+ // Delete points: first, remove any duplicates
+ dsp=ds;
+ while(dsp<stackp) {
+ j=*dsp;
+ if(ed[j][nu[j]]!=-1) {
+ ed[j][nu[j]]=-1;
+ dsp++;
+ } else *dsp=*(--stackp);
+ }
+
+ // Add the points in the auxiliary delete stack,
+ // and reset their back pointers
+ for(dsp=ds2;dsp<stackp2;dsp++) {
+ j=*dsp;
+ ed[j][nu[j]<<1]=j;
+ if(ed[j][nu[j]]!=-1) {
+ ed[j][nu[j]]=-1;
+ if(stackp==stacke) add_memory_ds(stackp);
+ *(stackp++)=j;
+ }
+ }
+
+ // Scan connections and add in extras
+ for(dsp=ds;dsp<stackp;dsp++) {
+ cp=*dsp;
+ for(edp=ed[cp];edp<ed[cp]+nu[cp];edp++) {
+ qp=*edp;
+ if(qp!=-1&&ed[qp][nu[qp]]!=-1) {
+ if(stackp==stacke) {
+ int dis=stackp-dsp;
+ add_memory_ds(stackp);
+ dsp=ds+dis;
+ }
+ *(stackp++)=qp;
+ ed[qp][nu[qp]]=-1;
+ }
+ }
+ }
+ up=0;
+
+ // Delete them from the array structure
+ while(stackp>ds) {
+ --p;
+ while(ed[p][nu[p]]==-1) {
+ j=nu[p];
+ edp=ed[p];edd=(mep[j]+((j<<1)+1)*--mec[j]);
+ while(edp<ed[p]+(j<<1)+1) *(edp++)=*(edd++);
+ vc.n_set_aux2_copy(p,j);
+ vc.n_copy_pointer(ed[p][(j<<1)],p);
+ ed[ed[p][(j<<1)]]=ed[p];
+ --p;
+ }
+ up=*(--stackp);
+ if(up<p) {
+
+ // Vertex management
+ pts[3*up]=pts[3*p];
+ pts[3*up+1]=pts[3*p+1];
+ pts[3*up+2]=pts[3*p+2];
+
+ // Memory management
+ j=nu[up];
+ edp=ed[up];edd=(mep[j]+((j<<1)+1)*--mec[j]);
+ while(edp<ed[up]+(j<<1)+1) *(edp++)=*(edd++);
+ vc.n_set_aux2_copy(up,j);
+ vc.n_copy_pointer(ed[up][j<<1],up);
+ vc.n_copy_pointer(up,p);
+ ed[ed[up][j<<1]]=ed[up];
+
+ // Edge management
+ ed[up]=ed[p];
+ nu[up]=nu[p];
+ for(i=0;i<nu[up];i++) ed[ed[up][i]][ed[up][nu[up]+i]]=up;
+ ed[up][nu[up]<<1]=up;
+ } else up=p++;
+ }
+
+ // Check for any vertices of zero order
+ if(*mec>0) voro_fatal_error("Zero order vertex formed",VOROPP_INTERNAL_ERROR);
+
+ // Collapse any order 2 vertices and exit
+ return collapse_order2(vc);
+}
+
+/** During the creation of a new facet in the plane routine, it is possible
+ * that some order two vertices may arise. This routine removes them.
+ * Suppose an order two vertex joins c and d. If there's a edge between
+ * c and d already, then the order two vertex is just removed; otherwise,
+ * the order two vertex is removed and c and d are joined together directly.
+ * It is possible this process will create order two or order one vertices,
+ * and the routine is continually run until all of them are removed.
+ * \return False if the vertex removal was unsuccessful, indicative of the cell
+ * reducing to zero volume and disappearing; true if the vertex removal
+ * was successful. */
+template<class vc_class>
+inline bool voronoicell_base::collapse_order2(vc_class &vc) {
+ if(!collapse_order1(vc)) return false;
+ int a,b,i,j,k,l;
+ while(mec[2]>0) {
+
+ // Pick a order 2 vertex and read in its edges
+ i=--mec[2];
+ j=mep[2][5*i];k=mep[2][5*i+1];
+ if(j==k) {
+#if VOROPP_VERBOSE >=1
+ fputs("Order two vertex joins itself",stderr);
+#endif
+ return false;
+ }
+
+ // Scan the edges of j to see if joins k
+ for(l=0;l<nu[j];l++) {
+ if(ed[j][l]==k) break;
+ }
+
+ // If j doesn't already join k, join them together.
+ // Otherwise delete the connection to the current
+ // vertex from j and k.
+ a=mep[2][5*i+2];b=mep[2][5*i+3];i=mep[2][5*i+4];
+ if(l==nu[j]) {
+ ed[j][a]=k;
+ ed[k][b]=j;
+ ed[j][nu[j]+a]=b;
+ ed[k][nu[k]+b]=a;
+ } else {
+ if(!delete_connection(vc,j,a,false)) return false;
+ if(!delete_connection(vc,k,b,true)) return false;
+ }
+
+ // Compact the memory
+ --p;
+ if(up==i) up=0;
+ if(p!=i) {
+ if(up==p) up=i;
+ pts[3*i]=pts[3*p];
+ pts[3*i+1]=pts[3*p+1];
+ pts[3*i+2]=pts[3*p+2];
+ for(k=0;k<nu[p];k++) ed[ed[p][k]][ed[p][nu[p]+k]]=i;
+ vc.n_copy_pointer(i,p);
+ ed[i]=ed[p];
+ nu[i]=nu[p];
+ ed[i][nu[i]<<1]=i;
+ }
+
+ // Collapse any order 1 vertices if they were created
+ if(!collapse_order1(vc)) return false;
+ }
+ return true;
+}
+
+/** Order one vertices can potentially be created during the order two collapse
+ * routine. This routine keeps removing them until there are none left.
+ * \return False if the vertex removal was unsuccessful, indicative of the cell
+ * having zero volume and disappearing; true if the vertex removal was
+ * successful. */
+template<class vc_class>
+inline bool voronoicell_base::collapse_order1(vc_class &vc) {
+ int i,j,k;
+ while(mec[1]>0) {
+ up=0;
+#if VOROPP_VERBOSE >=1
+ fputs("Order one collapse\n",stderr);
+#endif
+ i=--mec[1];
+ j=mep[1][3*i];k=mep[1][3*i+1];
+ i=mep[1][3*i+2];
+ if(!delete_connection(vc,j,k,false)) return false;
+ --p;
+ if(up==i) up=0;
+ if(p!=i) {
+ if(up==p) up=i;
+ pts[3*i]=pts[3*p];
+ pts[3*i+1]=pts[3*p+1];
+ pts[3*i+2]=pts[3*p+2];
+ for(k=0;k<nu[p];k++) ed[ed[p][k]][ed[p][nu[p]+k]]=i;
+ vc.n_copy_pointer(i,p);
+ ed[i]=ed[p];
+ nu[i]=nu[p];
+ ed[i][nu[i]<<1]=i;
+ }
+ }
+ return true;
+}
+
+/** This routine deletes the kth edge of vertex j and reorganizes the memory.
+ * If the neighbor computation is enabled, we also have to supply an handedness
+ * flag to decide whether to preserve the plane on the left or right of the
+ * connection.
+ * \return False if a zero order vertex was formed, indicative of the cell
+ * disappearing; true if the vertex removal was successful. */
+template<class vc_class>
+inline bool voronoicell_base::delete_connection(vc_class &vc,int j,int k,bool hand) {
+ int q=hand?k:cycle_up(k,j);
+ int i=nu[j]-1,l,*edp,*edd,m;
+#if VOROPP_VERBOSE >=1
+ if(i<1) {
+ fputs("Zero order vertex formed\n",stderr);
+ return false;
+ }
+#endif
+ if(mec[i]==mem[i]) add_memory(vc,i,ds2);
+ vc.n_set_aux1(i);
+ for(l=0;l<q;l++) vc.n_copy_aux1(j,l);
+ while(l<i) {
+ vc.n_copy_aux1_shift(j,l);
+ l++;
+ }
+ edp=mep[i]+((i<<1)+1)*mec[i]++;
+ edp[i<<1]=j;
+ for(l=0;l<k;l++) {
+ edp[l]=ed[j][l];
+ edp[l+i]=ed[j][l+nu[j]];
+ }
+ while(l<i) {
+ m=ed[j][l+1];
+ edp[l]=m;
+ k=ed[j][l+nu[j]+1];
+ edp[l+i]=k;
+ ed[m][nu[m]+k]--;
+ l++;
+ }
+
+ edd=mep[nu[j]]+((nu[j]<<1)+1)*--mec[nu[j]];
+ for(l=0;l<=(nu[j]<<1);l++) ed[j][l]=edd[l];
+ vc.n_set_aux2_copy(j,nu[j]);
+ vc.n_set_to_aux2(edd[nu[j]<<1]);
+ vc.n_set_to_aux1(j);
+ ed[edd[nu[j]<<1]]=edd;
+ ed[j]=edp;
+ nu[j]=i;
+ return true;
+}
+
+/** Calculates the volume of the Voronoi cell, by decomposing the cell into
+ * tetrahedra extending outward from the zeroth vertex, whose volumes are
+ * evaluated using a scalar triple product.
+ * \return A floating point number holding the calculated volume. */
+double voronoicell_base::volume() {
+ const double fe=1/48.0;
+ double vol=0;
+ int i,j,k,l,m,n;
+ double ux,uy,uz,vx,vy,vz,wx,wy,wz;
+ for(i=1;i<p;i++) {
+ ux=*pts-pts[3*i];
+ uy=pts[1]-pts[3*i+1];
+ uz=pts[2]-pts[3*i+2];
+ for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ vx=pts[3*k]-*pts;
+ vy=pts[3*k+1]-pts[1];
+ vz=pts[3*k+2]-pts[2];
+ m=ed[k][l];ed[k][l]=-1-m;
+ while(m!=i) {
+ n=cycle_up(ed[k][nu[k]+l],m);
+ wx=pts[3*m]-*pts;
+ wy=pts[3*m+1]-pts[1];
+ wz=pts[3*m+2]-pts[2];
+ vol+=ux*vy*wz+uy*vz*wx+uz*vx*wy-uz*vy*wx-uy*vx*wz-ux*vz*wy;
+ k=m;l=n;vx=wx;vy=wy;vz=wz;
+ m=ed[k][l];ed[k][l]=-1-m;
+ }
+ }
+ }
+ }
+ reset_edges();
+ return vol*fe;
+}
+
+/** Calculates the areas of each face of the Voronoi cell and prints the
+ * results to an output stream.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::face_areas(std::vector<double> &v) {
+ double area;
+ v.clear();
+ int i,j,k,l,m,n;
+ double ux,uy,uz,vx,vy,vz,wx,wy,wz;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ area=0;
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ m=ed[k][l];ed[k][l]=-1-m;
+ while(m!=i) {
+ n=cycle_up(ed[k][nu[k]+l],m);
+ ux=pts[3*k]-pts[3*i];
+ uy=pts[3*k+1]-pts[3*i+1];
+ uz=pts[3*k+2]-pts[3*i+2];
+ vx=pts[3*m]-pts[3*i];
+ vy=pts[3*m+1]-pts[3*i+1];
+ vz=pts[3*m+2]-pts[3*i+2];
+ wx=uy*vz-uz*vy;
+ wy=uz*vx-ux*vz;
+ wz=ux*vy-uy*vx;
+ area+=sqrt(wx*wx+wy*wy+wz*wz);
+ k=m;l=n;
+ m=ed[k][l];ed[k][l]=-1-m;
+ }
+ v.push_back(0.125*area);
+ }
+ }
+ reset_edges();
+}
+
+
+/** Calculates the total surface area of the Voronoi cell.
+ * \return The computed area. */
+double voronoicell_base::surface_area() {
+ double area=0;
+ int i,j,k,l,m,n;
+ double ux,uy,uz,vx,vy,vz,wx,wy,wz;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ m=ed[k][l];ed[k][l]=-1-m;
+ while(m!=i) {
+ n=cycle_up(ed[k][nu[k]+l],m);
+ ux=pts[3*k]-pts[3*i];
+ uy=pts[3*k+1]-pts[3*i+1];
+ uz=pts[3*k+2]-pts[3*i+2];
+ vx=pts[3*m]-pts[3*i];
+ vy=pts[3*m+1]-pts[3*i+1];
+ vz=pts[3*m+2]-pts[3*i+2];
+ wx=uy*vz-uz*vy;
+ wy=uz*vx-ux*vz;
+ wz=ux*vy-uy*vx;
+ area+=sqrt(wx*wx+wy*wy+wz*wz);
+ k=m;l=n;
+ m=ed[k][l];ed[k][l]=-1-m;
+ }
+ }
+ }
+ reset_edges();
+ return 0.125*area;
+}
+
+
+/** Calculates the centroid of the Voronoi cell, by decomposing the cell into
+ * tetrahedra extending outward from the zeroth vertex.
+ * \param[out] (cx,cy,cz) references to floating point numbers in which to
+ * pass back the centroid vector. */
+void voronoicell_base::centroid(double &cx,double &cy,double &cz) {
+ double tvol,vol=0;cx=cy=cz=0;
+ int i,j,k,l,m,n;
+ double ux,uy,uz,vx,vy,vz,wx,wy,wz;
+ for(i=1;i<p;i++) {
+ ux=*pts-pts[3*i];
+ uy=pts[1]-pts[3*i+1];
+ uz=pts[2]-pts[3*i+2];
+ for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ vx=pts[3*k]-*pts;
+ vy=pts[3*k+1]-pts[1];
+ vz=pts[3*k+2]-pts[2];
+ m=ed[k][l];ed[k][l]=-1-m;
+ while(m!=i) {
+ n=cycle_up(ed[k][nu[k]+l],m);
+ wx=pts[3*m]-*pts;
+ wy=pts[3*m+1]-pts[1];
+ wz=pts[3*m+2]-pts[2];
+ tvol=ux*vy*wz+uy*vz*wx+uz*vx*wy-uz*vy*wx-uy*vx*wz-ux*vz*wy;
+ vol+=tvol;
+ cx+=(wx+vx-ux)*tvol;
+ cy+=(wy+vy-uy)*tvol;
+ cz+=(wz+vz-uz)*tvol;
+ k=m;l=n;vx=wx;vy=wy;vz=wz;
+ m=ed[k][l];ed[k][l]=-1-m;
+ }
+ }
+ }
+ }
+ reset_edges();
+ if(vol>tolerance_sq) {
+ vol=0.125/vol;
+ cx=cx*vol+0.5*(*pts);
+ cy=cy*vol+0.5*pts[1];
+ cz=cz*vol+0.5*pts[2];
+ } else cx=cy=cz=0;
+}
+
+/** Computes the maximum radius squared of a vertex from the center of the
+ * cell. It can be used to determine when enough particles have been testing an
+ * all planes that could cut the cell have been considered.
+ * \return The maximum radius squared of a vertex.*/
+double voronoicell_base::max_radius_squared() {
+ double r,s,*ptsp=pts+3,*ptse=pts+3*p;
+ r=*pts*(*pts)+pts[1]*pts[1]+pts[2]*pts[2];
+ while(ptsp<ptse) {
+ s=*ptsp*(*ptsp);ptsp++;
+ s+=*ptsp*(*ptsp);ptsp++;
+ s+=*ptsp*(*ptsp);ptsp++;
+ if(s>r) r=s;
+ }
+ return r;
+}
+
+/** Calculates the total edge distance of the Voronoi cell.
+ * \return A floating point number holding the calculated distance. */
+double voronoicell_base::total_edge_distance() {
+ int i,j,k;
+ double dis=0,dx,dy,dz;
+ for(i=0;i<p-1;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>i) {
+ dx=pts[3*k]-pts[3*i];
+ dy=pts[3*k+1]-pts[3*i+1];
+ dz=pts[3*k+2]-pts[3*i+2];
+ dis+=sqrt(dx*dx+dy*dy+dz*dz);
+ }
+ }
+ return 0.5*dis;
+}
+
+/** Outputs the edges of the Voronoi cell in POV-Ray format to an open file
+ * stream, displacing the cell by given vector.
+ * \param[in] (x,y,z) a displacement vector to be added to the cell's position.
+ * \param[in] fp a file handle to write to. */
+void voronoicell_base::draw_pov(double x,double y,double z,FILE* fp) {
+ int i,j,k;double *ptsp=pts,*pt2;
+ char posbuf1[128],posbuf2[128];
+ for(i=0;i<p;i++,ptsp+=3) {
+ sprintf(posbuf1,"%g,%g,%g",x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);
+ fprintf(fp,"sphere{<%s>,r}\n",posbuf1);
+ for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k<i) {
+ pt2=pts+3*k;
+ sprintf(posbuf2,"%g,%g,%g",x+*pt2*0.5,y+0.5*pt2[1],z+0.5*pt2[2]);
+ if(strcmp(posbuf1,posbuf2)!=0) fprintf(fp,"cylinder{<%s>,<%s>,r}\n",posbuf1,posbuf2);
+ }
+ }
+ }
+}
+
+/** Outputs the edges of the Voronoi cell in gnuplot format to an output stream.
+ * \param[in] (x,y,z) a displacement vector to be added to the cell's position.
+ * \param[in] fp a file handle to write to. */
+void voronoicell_base::draw_gnuplot(double x,double y,double z,FILE *fp) {
+ int i,j,k,l,m;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ fprintf(fp,"%g %g %g\n",x+0.5*pts[3*i],y+0.5*pts[3*i+1],z+0.5*pts[3*i+2]);
+ l=i;m=j;
+ do {
+ ed[k][ed[l][nu[l]+m]]=-1-l;
+ ed[l][m]=-1-k;
+ l=k;
+ fprintf(fp,"%g %g %g\n",x+0.5*pts[3*k],y+0.5*pts[3*k+1],z+0.5*pts[3*k+2]);
+ } while (search_edge(l,m,k));
+ fputs("\n\n",fp);
+ }
+ }
+ reset_edges();
+}
+
+inline bool voronoicell_base::search_edge(int l,int &m,int &k) {
+ for(m=0;m<nu[l];m++) {
+ k=ed[l][m];
+ if(k>=0) return true;
+ }
+ return false;
+}
+
+/** Outputs the Voronoi cell in the POV mesh2 format, described in section
+ * 1.3.2.2 of the POV-Ray documentation. The mesh2 output consists of a list of
+ * vertex vectors, followed by a list of triangular faces. The routine also
+ * makes use of the optional inside_vector specification, which makes the mesh
+ * object solid, so the the POV-Ray Constructive Solid Geometry (CSG) can be
+ * applied.
+ * \param[in] (x,y,z) a displacement vector to be added to the cell's position.
+ * \param[in] fp a file handle to write to. */
+void voronoicell_base::draw_pov_mesh(double x,double y,double z,FILE *fp) {
+ int i,j,k,l,m,n;
+ double *ptsp=pts;
+ fprintf(fp,"mesh2 {\nvertex_vectors {\n%d\n",p);
+ for(i=0;i<p;i++,ptsp+=3) fprintf(fp,",<%g,%g,%g>\n",x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);
+ fprintf(fp,"}\nface_indices {\n%d\n",(p-2)<<1);
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ m=ed[k][l];ed[k][l]=-1-m;
+ while(m!=i) {
+ n=cycle_up(ed[k][nu[k]+l],m);
+ fprintf(fp,",<%d,%d,%d>\n",i,k,m);
+ k=m;l=n;
+ m=ed[k][l];ed[k][l]=-1-m;
+ }
+ }
+ }
+ fputs("}\ninside_vector <0,0,1>\n}\n",fp);
+ reset_edges();
+}
+
+/** Several routines in the class that gather cell-based statistics internally
+ * track their progress by flipping edges to negative so that they know what
+ * parts of the cell have already been tested. This function resets them back
+ * to positive. When it is called, it assumes that every edge in the routine
+ * should have already been flipped to negative, and it bails out with an
+ * internal error if it encounters a positive edge. */
+inline void voronoicell_base::reset_edges() {
+ int i,j;
+ for(i=0;i<p;i++) for(j=0;j<nu[i];j++) {
+ if(ed[i][j]>=0) voro_fatal_error("Edge reset routine found a previously untested edge",VOROPP_INTERNAL_ERROR);
+ ed[i][j]=-1-ed[i][j];
+ }
+}
+
+/** Checks to see if a given vertex is inside, outside or within the test
+ * plane. If the point is far away from the test plane, the routine immediately
+ * returns whether it is inside or outside. If the routine is close the the
+ * plane and within the specified tolerance, then the special check_marginal()
+ * routine is called.
+ * \param[in] n the vertex to test.
+ * \param[out] ans the result of the scalar product used in evaluating the
+ * location of the point.
+ * \return -1 if the point is inside the plane, 1 if the point is outside the
+ * plane, or 0 if the point is within the plane. */
+inline int voronoicell_base::m_test(int n,double &ans) {
+ double *pp=pts+n+(n<<1);
+ ans=*(pp++)*px;
+ ans+=*(pp++)*py;
+ ans+=*pp*pz-prsq;
+ if(ans<-tolerance2) {
+ return -1;
+ } else if(ans>tolerance2) {
+ return 1;
+ }
+ return check_marginal(n,ans);
+}
+
+/** Checks to see if a given vertex is inside, outside or within the test
+ * plane, for the case when the point has been detected to be very close to the
+ * plane. The routine ensures that the returned results are always consistent
+ * with previous tests, by keeping a table of any marginal results. The routine
+ * first sees if the vertex is in the table, and if it finds a previously
+ * computed result it uses that. Otherwise, it computes a result for this
+ * vertex and adds it the table.
+ * \param[in] n the vertex to test.
+ * \param[in] ans the result of the scalar product used in evaluating
+ * the location of the point.
+ * \return -1 if the point is inside the plane, 1 if the point is outside the
+ * plane, or 0 if the point is within the plane. */
+int voronoicell_base::check_marginal(int n,double &ans) {
+ int i;
+ for(i=0;i<n_marg;i+=2) if(marg[i]==n) return marg[i+1];
+ if(n_marg==current_marginal) {
+ current_marginal<<=1;
+ if(current_marginal>max_marginal)
+ voro_fatal_error("Marginal case buffer allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Marginal cases buffer scaled up to %d\n",i);
+#endif
+ int *pmarg=new int[current_marginal];
+ for(int j=0;j<n_marg;j++) pmarg[j]=marg[j];
+ delete [] marg;
+ marg=pmarg;
+ }
+ marg[n_marg++]=n;
+ marg[n_marg++]=ans>tolerance?1:(ans<-tolerance?-1:0);
+ return marg[n_marg-1];
+}
+
+/** For each face of the Voronoi cell, this routine prints the out the normal
+ * vector of the face, and scales it to the distance from the cell center to
+ * that plane.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::normals(std::vector<double> &v) {
+ int i,j,k;
+ v.clear();
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) normals_search(v,i,j,k);
+ }
+ reset_edges();
+}
+
+/** This inline routine is called by normals(). It attempts to construct a
+ * single normal vector that is associated with a particular face. It first
+ * traces around the face, trying to find two vectors along the face edges
+ * whose vector product is above the numerical tolerance. It then constructs
+ * the normal vector using this product. If the face is too small, and none of
+ * the vector products are large enough, the routine may return (0,0,0) as the
+ * normal vector.
+ * \param[in] v the vector to store the results in.
+ * \param[in] i the initial vertex of the face to test.
+ * \param[in] j the index of an edge of the vertex.
+ * \param[in] k the neighboring vertex of i, set to ed[i][j]. */
+inline void voronoicell_base::normals_search(std::vector<double> &v,int i,int j,int k) {
+ ed[i][j]=-1-k;
+ int l=cycle_up(ed[i][nu[i]+j],k),m;
+ double ux,uy,uz,vx,vy,vz,wx,wy,wz,wmag;
+ do {
+ m=ed[k][l];ed[k][l]=-1-m;
+ ux=pts[3*m]-pts[3*k];
+ uy=pts[3*m+1]-pts[3*k+1];
+ uz=pts[3*m+2]-pts[3*k+2];
+
+ // Test to see if the length of this edge is above the tolerance
+ if(ux*ux+uy*uy+uz*uz>tolerance_sq) {
+ while(m!=i) {
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;m=ed[k][l];ed[k][l]=-1-m;
+ vx=pts[3*m]-pts[3*k];
+ vy=pts[3*m+1]-pts[3*k+1];
+ vz=pts[3*m+2]-pts[3*k+2];
+
+ // Construct the vector product of this edge with
+ // the previous one
+ wx=uz*vy-uy*vz;
+ wy=ux*vz-uz*vx;
+ wz=uy*vx-ux*vy;
+ wmag=wx*wx+wy*wy+wz*wz;
+
+ // Test to see if this vector product of the
+ // two edges is above the tolerance
+ if(wmag>tolerance_sq) {
+
+ // Construct the normal vector and print it
+ wmag=1/sqrt(wmag);
+ v.push_back(wx*wmag);
+ v.push_back(wy*wmag);
+ v.push_back(wz*wmag);
+
+ // Mark all of the remaining edges of this
+ // face and exit
+ while(m!=i) {
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;m=ed[k][l];ed[k][l]=-1-m;
+ }
+ return;
+ }
+ }
+ v.push_back(0);
+ v.push_back(0);
+ v.push_back(0);
+ return;
+ }
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ v.push_back(0);
+ v.push_back(0);
+ v.push_back(0);
+}
+
+
+/** Returns the number of faces of a computed Voronoi cell.
+ * \return The number of faces. */
+int voronoicell_base::number_of_faces() {
+ int i,j,k,l,m,s=0;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ s++;
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+
+ }
+ }
+ reset_edges();
+ return s;
+}
+
+/** Returns a vector of the vertex orders.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::vertex_orders(std::vector<int> &v) {
+ v.resize(p);
+ for(int i=0;i<p;i++) v[i]=nu[i];
+}
+
+/** Outputs the vertex orders.
+ * \param[out] fp the file handle to write to. */
+void voronoicell_base::output_vertex_orders(FILE *fp) {
+ if(p>0) {
+ fprintf(fp,"%d",*nu);
+ for(int *nup=nu+1;nup<nu+p;nup++) fprintf(fp," %d",*nup);
+ }
+}
+
+/** Returns a vector of the vertex vectors using the local coordinate system.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::vertices(std::vector<double> &v) {
+ v.resize(3*p);
+ double *ptsp=pts;
+ for(int i=0;i<3*p;i+=3) {
+ v[i]=*(ptsp++)*0.5;
+ v[i+1]=*(ptsp++)*0.5;
+ v[i+2]=*(ptsp++)*0.5;
+ }
+}
+
+/** Outputs the vertex vectors using the local coordinate system.
+ * \param[out] fp the file handle to write to. */
+void voronoicell_base::output_vertices(FILE *fp) {
+ if(p>0) {
+ fprintf(fp,"(%g,%g,%g)",*pts*0.5,pts[1]*0.5,pts[2]*0.5);
+ for(double *ptsp=pts+3;ptsp<pts+3*p;ptsp+=3) fprintf(fp," (%g,%g,%g)",*ptsp*0.5,ptsp[1]*0.5,ptsp[2]*0.5);
+ }
+}
+
+
+/** Returns a vector of the vertex vectors in the global coordinate system.
+ * \param[out] v the vector to store the results in.
+ * \param[in] (x,y,z) the position vector of the particle in the global
+ * coordinate system. */
+void voronoicell_base::vertices(double x,double y,double z,std::vector<double> &v) {
+ v.resize(3*p);
+ double *ptsp=pts;
+ for(int i=0;i<3*p;i+=3) {
+ v[i]=x+*(ptsp++)*0.5;
+ v[i+1]=y+*(ptsp++)*0.5;
+ v[i+2]=z+*(ptsp++)*0.5;
+ }
+}
+
+/** Outputs the vertex vectors using the global coordinate system.
+ * \param[out] fp the file handle to write to.
+ * \param[in] (x,y,z) the position vector of the particle in the global
+ * coordinate system. */
+void voronoicell_base::output_vertices(double x,double y,double z,FILE *fp) {
+ if(p>0) {
+ fprintf(fp,"(%g,%g,%g)",x+*pts*0.5,y+pts[1]*0.5,z+pts[2]*0.5);
+ for(double *ptsp=pts+3;ptsp<pts+3*p;ptsp+=3) fprintf(fp," (%g,%g,%g)",x+*ptsp*0.5,y+ptsp[1]*0.5,z+ptsp[2]*0.5);
+ }
+}
+
+/** This routine returns the perimeters of each face.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::face_perimeters(std::vector<double> &v) {
+ v.clear();
+ int i,j,k,l,m;
+ double dx,dy,dz,perim;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ dx=pts[3*k]-pts[3*i];
+ dy=pts[3*k+1]-pts[3*i+1];
+ dz=pts[3*k+2]-pts[3*i+2];
+ perim=sqrt(dx*dx+dy*dy+dz*dz);
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ m=ed[k][l];
+ dx=pts[3*m]-pts[3*k];
+ dy=pts[3*m+1]-pts[3*k+1];
+ dz=pts[3*m+2]-pts[3*k+2];
+ perim+=sqrt(dx*dx+dy*dy+dz*dz);
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ v.push_back(0.5*perim);
+ }
+ }
+ reset_edges();
+}
+
+/** For each face, this routine outputs a bracketed sequence of numbers
+ * containing a list of all the vertices that make up that face.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::face_vertices(std::vector<int> &v) {
+ int i,j,k,l,m,vp(0),vn;
+ v.clear();
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ v.push_back(0);
+ v.push_back(i);
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ v.push_back(k);
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ vn=v.size();
+ v[vp]=vn-vp-1;
+ vp=vn;
+ }
+ }
+ reset_edges();
+}
+
+/** Outputs a list of the number of edges in each face.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::face_orders(std::vector<int> &v) {
+ int i,j,k,l,m,q;
+ v.clear();
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ q=1;
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ q++;
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ v.push_back(q);;
+ }
+ }
+ reset_edges();
+}
+
+/** Computes the number of edges that each face has and outputs a frequency
+ * table of the results.
+ * \param[out] v the vector to store the results in. */
+void voronoicell_base::face_freq_table(std::vector<int> &v) {
+ int i,j,k,l,m,q;
+ v.clear();
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ q=1;
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ q++;
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ if((unsigned int) q>=v.size()) v.resize(q+1,0);
+ v[q]++;
+ }
+ }
+ reset_edges();
+}
+
+/** This routine tests to see whether the cell intersects a plane by starting
+ * from the guess point up. If up intersects, then it immediately returns true.
+ * Otherwise, it calls the plane_intersects_track() routine.
+ * \param[in] (x,y,z) the normal vector to the plane.
+ * \param[in] rsq the distance along this vector of the plane.
+ * \return False if the plane does not intersect the plane, true if it does. */
+bool voronoicell_base::plane_intersects(double x,double y,double z,double rsq) {
+ double g=x*pts[3*up]+y*pts[3*up+1]+z*pts[3*up+2];
+ if(g<rsq) return plane_intersects_track(x,y,z,rsq,g);
+ return true;
+}
+
+/** This routine tests to see if a cell intersects a plane. It first tests a
+ * random sample of approximately sqrt(p)/4 points. If any of those are
+ * intersect, then it immediately returns true. Otherwise, it takes the closest
+ * point and passes that to plane_intersect_track() routine.
+ * \param[in] (x,y,z) the normal vector to the plane.
+ * \param[in] rsq the distance along this vector of the plane.
+ * \return False if the plane does not intersect the plane, true if it does. */
+bool voronoicell_base::plane_intersects_guess(double x,double y,double z,double rsq) {
+ up=0;
+ double g=x*pts[3*up]+y*pts[3*up+1]+z*pts[3*up+2];
+ if(g<rsq) {
+ int ca=1,cc=p>>3,mp=1;
+ double m;
+ while(ca<cc) {
+ m=x*pts[3*mp]+y*pts[3*mp+1]+z*pts[3*mp+2];
+ if(m>g) {
+ if(m>rsq) return true;
+ g=m;up=mp;
+ }
+ ca+=mp++;
+ }
+ return plane_intersects_track(x,y,z,rsq,g);
+ }
+ return true;
+}
+
+/* This routine tests to see if a cell intersects a plane, by tracing over the cell from
+ * vertex to vertex, starting at up. It is meant to be called either by plane_intersects()
+ * or plane_intersects_track(), when those routines cannot immediately resolve the case.
+ * \param[in] (x,y,z) the normal vector to the plane.
+ * \param[in] rsq the distance along this vector of the plane.
+ * \param[in] g the distance of up from the plane.
+ * \return False if the plane does not intersect the plane, true if it does. */
+inline bool voronoicell_base::plane_intersects_track(double x,double y,double z,double rsq,double g) {
+ int count=0,ls,us,tp;
+ double t;
+
+ // The test point is outside of the cutting space
+ for(us=0;us<nu[up];us++) {
+ tp=ed[up][us];
+ t=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];
+ if(t>g) {
+ ls=ed[up][nu[up]+us];
+ up=tp;
+ while (t<rsq) {
+ if(++count>=p) {
+#if VOROPP_VERBOSE >=1
+ fputs("Bailed out of convex calculation",stderr);
+#endif
+ for(tp=0;tp<p;tp++) if(x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2]>rsq) return true;
+ return false;
+ }
+
+ // Test all the neighbors of the current point
+ // and find the one which is closest to the
+ // plane
+ for(us=0;us<ls;us++) {
+ tp=ed[up][us];
+ g=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];
+ if(g>t) break;
+ }
+ if(us==ls) {
+ us++;
+ while(us<nu[up]) {
+ tp=ed[up][us];
+ g=x*pts[3*tp]+y*pts[3*tp+1]+z*pts[3*tp+2];
+ if(g>t) break;
+ us++;
+ }
+ if(us==nu[up]) return false;
+ }
+ ls=ed[up][nu[up]+us];up=tp;t=g;
+ }
+ return true;
+ }
+ }
+ return false;
+}
+
+/** Counts the number of edges of the Voronoi cell.
+ * \return the number of edges. */
+int voronoicell_base::number_of_edges() {
+ int edges=0,*nup=nu;
+ while(nup<nu+p) edges+=*(nup++);
+ return edges>>1;
+}
+
+/** Outputs a custom string of information about the Voronoi cell. The string
+ * of information follows a similar style as the C printf command, and detailed
+ * information about its format is available at
+ * http://math.lbl.gov/voro++/doc/custom.html.
+ * \param[in] format the custom string to print.
+ * \param[in] i the ID of the particle associated with this Voronoi cell.
+ * \param[in] (x,y,z) the position of the particle associated with this Voronoi
+ * cell.
+ * \param[in] r a radius associated with the particle.
+ * \param[in] fp the file handle to write to. */
+void voronoicell_base::output_custom(const char *format,int i,double x,double y,double z,double r,FILE *fp) {
+ char *fmp=(const_cast<char*>(format));
+ std::vector<int> vi;
+ std::vector<double> vd;
+ while(*fmp!=0) {
+ if(*fmp=='%') {
+ fmp++;
+ switch(*fmp) {
+
+ // Particle-related output
+ case 'i': fprintf(fp,"%d",i);break;
+ case 'x': fprintf(fp,"%g",x);break;
+ case 'y': fprintf(fp,"%g",y);break;
+ case 'z': fprintf(fp,"%g",z);break;
+ case 'q': fprintf(fp,"%g %g %g",x,y,z);break;
+ case 'r': fprintf(fp,"%g",r);break;
+
+ // Vertex-related output
+ case 'w': fprintf(fp,"%d",p);break;
+ case 'p': output_vertices(fp);break;
+ case 'P': output_vertices(x,y,z,fp);break;
+ case 'o': output_vertex_orders(fp);break;
+ case 'm': fprintf(fp,"%g",0.25*max_radius_squared());break;
+
+ // Edge-related output
+ case 'g': fprintf(fp,"%d",number_of_edges());break;
+ case 'E': fprintf(fp,"%g",total_edge_distance());break;
+ case 'e': face_perimeters(vd);voro_print_vector(vd,fp);break;
+
+ // Face-related output
+ case 's': fprintf(fp,"%d",number_of_faces());break;
+ case 'F': fprintf(fp,"%g",surface_area());break;
+ case 'A': {
+ face_freq_table(vi);
+ voro_print_vector(vi,fp);
+ } break;
+ case 'a': face_orders(vi);voro_print_vector(vi,fp);break;
+ case 'f': face_areas(vd);voro_print_vector(vd,fp);break;
+ case 't': {
+ face_vertices(vi);
+ voro_print_face_vertices(vi,fp);
+ } break;
+ case 'l': normals(vd);
+ voro_print_positions(vd,fp);
+ break;
+ case 'n': neighbors(vi);
+ voro_print_vector(vi,fp);
+ break;
+
+ // Volume-related output
+ case 'v': fprintf(fp,"%g",volume());break;
+ case 'c': {
+ double cx,cy,cz;
+ centroid(cx,cy,cz);
+ fprintf(fp,"%g %g %g",cx,cy,cz);
+ } break;
+ case 'C': {
+ double cx,cy,cz;
+ centroid(cx,cy,cz);
+ fprintf(fp,"%g %g %g",x+cx,y+cy,z+cz);
+ } break;
+
+ // End-of-string reached
+ case 0: fmp--;break;
+
+ // The percent sign is not part of a
+ // control sequence
+ default: putc('%',fp);putc(*fmp,fp);
+ }
+ } else putc(*fmp,fp);
+ fmp++;
+ }
+ fputs("\n",fp);
+}
+
+/** This initializes the class to be a rectangular box. It calls the base class
+ * initialization routine to set up the edge and vertex information, and then
+ * sets up the neighbor information, with initial faces being assigned ID
+ * numbers from -1 to -6.
+ * \param[in] (xmin,xmax) the minimum and maximum x coordinates.
+ * \param[in] (ymin,ymax) the minimum and maximum y coordinates.
+ * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */
+void voronoicell_neighbor::init(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax) {
+ init_base(xmin,xmax,ymin,ymax,zmin,zmax);
+ int *q=mne[3];
+ *q=-5;q[1]=-3;q[2]=-1;
+ q[3]=-5;q[4]=-2;q[5]=-3;
+ q[6]=-5;q[7]=-1;q[8]=-4;
+ q[9]=-5;q[10]=-4;q[11]=-2;
+ q[12]=-6;q[13]=-1;q[14]=-3;
+ q[15]=-6;q[16]=-3;q[17]=-2;
+ q[18]=-6;q[19]=-4;q[20]=-1;
+ q[21]=-6;q[22]=-2;q[23]=-4;
+ *ne=q;ne[1]=q+3;ne[2]=q+6;ne[3]=q+9;
+ ne[4]=q+12;ne[5]=q+15;ne[6]=q+18;ne[7]=q+21;
+}
+
+/** This initializes the class to be an octahedron. It calls the base class
+ * initialization routine to set up the edge and vertex information, and then
+ * sets up the neighbor information, with the initial faces being assigned ID
+ * numbers from -1 to -8.
+ * \param[in] l The distance from the octahedron center to a vertex. Six
+ * vertices are initialized at (-l,0,0), (l,0,0), (0,-l,0),
+ * (0,l,0), (0,0,-l), and (0,0,l). */
+void voronoicell_neighbor::init_octahedron(double l) {
+ init_octahedron_base(l);
+ int *q=mne[4];
+ *q=-5;q[1]=-6;q[2]=-7;q[3]=-8;
+ q[4]=-1;q[5]=-2;q[6]=-3;q[7]=-4;
+ q[8]=-6;q[9]=-5;q[10]=-2;q[11]=-1;
+ q[12]=-8;q[13]=-7;q[14]=-4;q[15]=-3;
+ q[16]=-5;q[17]=-8;q[18]=-3;q[19]=-2;
+ q[20]=-7;q[21]=-6;q[22]=-1;q[23]=-4;
+ *ne=q;ne[1]=q+4;ne[2]=q+8;ne[3]=q+12;ne[4]=q+16;ne[5]=q+20;
+}
+
+/** This initializes the class to be a tetrahedron. It calls the base class
+ * initialization routine to set up the edge and vertex information, and then
+ * sets up the neighbor information, with the initial faces being assigned ID
+ * numbers from -1 to -4.
+ * \param (x0,y0,z0) a position vector for the first vertex.
+ * \param (x1,y1,z1) a position vector for the second vertex.
+ * \param (x2,y2,z2) a position vector for the third vertex.
+ * \param (x3,y3,z3) a position vector for the fourth vertex. */
+void voronoicell_neighbor::init_tetrahedron(double x0,double y0,double z0,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3) {
+ init_tetrahedron_base(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3);
+ int *q=mne[3];
+ *q=-4;q[1]=-3;q[2]=-2;
+ q[3]=-3;q[4]=-4;q[5]=-1;
+ q[6]=-4;q[7]=-2;q[8]=-1;
+ q[9]=-2;q[10]=-3;q[11]=-1;
+ *ne=q;ne[1]=q+3;ne[2]=q+6;ne[3]=q+9;
+}
+
+/** This routine checks to make sure the neighbor information of each face is
+ * consistent. */
+void voronoicell_neighbor::check_facets() {
+ int i,j,k,l,m,q;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ ed[i][j]=-1-k;
+ q=ne[i][j];
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ if(ne[k][l]!=q) fprintf(stderr,"Facet error at (%d,%d)=%d, started from (%d,%d)=%d\n",k,l,ne[k][l],i,j,q);
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ }
+ }
+ reset_edges();
+}
+
+/** The class constructor allocates memory for storing neighbor information. */
+voronoicell_neighbor::voronoicell_neighbor() {
+ int i;
+ mne=new int*[current_vertex_order];
+ ne=new int*[current_vertices];
+ for(i=0;i<3;i++) mne[i]=new int[init_n_vertices*i];
+ mne[3]=new int[init_3_vertices*3];
+ for(i=4;i<current_vertex_order;i++) mne[i]=new int[init_n_vertices*i];
+}
+
+/** The class destructor frees the dynamically allocated memory for storing
+ * neighbor information. */
+voronoicell_neighbor::~voronoicell_neighbor() {
+ for(int i=current_vertex_order-1;i>=0;i--) if(mem[i]>0) delete [] mne[i];
+ delete [] mne;
+ delete [] ne;
+}
+
+/** Computes a vector list of neighbors. */
+void voronoicell_neighbor::neighbors(std::vector<int> &v) {
+ v.clear();
+ int i,j,k,l,m;
+ for(i=1;i<p;i++) for(j=0;j<nu[i];j++) {
+ k=ed[i][j];
+ if(k>=0) {
+ v.push_back(ne[i][j]);
+ ed[i][j]=-1-k;
+ l=cycle_up(ed[i][nu[i]+j],k);
+ do {
+ m=ed[k][l];
+ ed[k][l]=-1-m;
+ l=cycle_up(ed[k][nu[k]+l],m);
+ k=m;
+ } while (k!=i);
+ }
+ }
+ reset_edges();
+}
+
+/** Prints the vertices, their edges, the relation table, and also notifies if
+ * any memory errors are visible. */
+void voronoicell_base::print_edges() {
+ int j;
+ double *ptsp=pts;
+ for(int i=0;i<p;i++,ptsp+=3) {
+ printf("%d %d ",i,nu[i]);
+ for(j=0;j<nu[i];j++) printf(" %d",ed[i][j]);
+ printf(" ");
+ while(j<(nu[i]<<1)) printf(" %d",ed[i][j]);
+ printf(" %d",ed[i][j]);
+ print_edges_neighbors(i);
+ printf(" %g %g %g %p",*ptsp,ptsp[1],ptsp[2],(void*) ed[i]);
+ if(ed[i]>=mep[nu[i]]+mec[nu[i]]*((nu[i]<<1)+1)) puts(" Memory error");
+ else puts("");
+ }
+}
+
+/** This prints out the neighbor information for vertex i. */
+void voronoicell_neighbor::print_edges_neighbors(int i) {
+ if(nu[i]>0) {
+ int j=0;
+ printf(" (");
+ while(j<nu[i]-1) printf("%d,",ne[i][j++]);
+ printf("%d)",ne[i][j]);
+ } else printf(" ()");
+}
+
+// Explicit instantiation
+template bool voronoicell_base::nplane(voronoicell&,double,double,double,double,int);
+template bool voronoicell_base::nplane(voronoicell_neighbor&,double,double,double,double,int);
+template void voronoicell_base::check_memory_for_copy(voronoicell&,voronoicell_base*);
+template void voronoicell_base::check_memory_for_copy(voronoicell_neighbor&,voronoicell_base*);
+
+}
diff --git a/lib/voro++/src/cell.hh b/lib/voro++/src/cell.hh
new file mode 100644
index 000000000..408a61691
--- /dev/null
+++ b/lib/voro++/src/cell.hh
@@ -0,0 +1,514 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file cell.hh
+ * \brief Header file for the voronoicell and related classes. */
+
+#ifndef VOROPP_CELL_HH
+#define VOROPP_CELL_HH
+
+#include <vector>
+
+#include "config.hh"
+#include "common.hh"
+
+namespace voro {
+
+/** \brief A class representing a single Voronoi cell.
+ *
+ * This class represents a single Voronoi cell, as a collection of vertices
+ * that are connected by edges. The class contains routines for initializing
+ * the Voronoi cell to be simple shapes such as a box, tetrahedron, or octahedron.
+ * It the contains routines for recomputing the cell based on cutting it
+ * by a plane, which forms the key routine for the Voronoi cell computation.
+ * It contains numerous routine for computing statistics about the Voronoi cell,
+ * and it can output the cell in several formats.
+ *
+ * This class is not intended for direct use, but forms the base of the
+ * voronoicell and voronoicell_neighbor classes, which extend it based on
+ * whether neighboring particle ID information needs to be tracked. */
+class voronoicell_base {
+ public:
+ /** This holds the current size of the arrays ed and nu, which
+ * hold the vertex information. If more vertices are created
+ * than can fit in this array, then it is dynamically extended
+ * using the add_memory_vertices routine. */
+ int current_vertices;
+ /** This holds the current maximum allowed order of a vertex,
+ * which sets the size of the mem, mep, and mec arrays. If a
+ * vertex is created with more vertices than this, the arrays
+ * are dynamically extended using the add_memory_vorder routine.
+ */
+ int current_vertex_order;
+ /** This sets the size of the main delete stack. */
+ int current_delete_size;
+ /** This sets the size of the auxiliary delete stack. */
+ int current_delete2_size;
+ /** This sets the total number of vertices in the current cell.
+ */
+ int p;
+ /** This is the index of particular point in the cell, which is
+ * used to start the tracing routines for plane intersection
+ * and cutting. These routines will work starting from any
+ * point, but it's often most efficient to start from the last
+ * point considered, since in many cases, the cell construction
+ * algorithm may consider many planes with similar vectors
+ * concurrently. */
+ int up;
+ /** This is a two dimensional array that holds information
+ * about the edge connections of the vertices that make up the
+ * cell. The two dimensional array is not allocated in the
+ * usual method. To account for the fact the different vertices
+ * have different orders, and thus require different amounts of
+ * storage, the elements of ed[i] point to one-dimensional
+ * arrays in the mep[] array of different sizes.
+ *
+ * More specifically, if vertex i has order m, then ed[i]
+ * points to a one-dimensional array in mep[m] that has 2*m+1
+ * entries. The first m elements hold the neighboring edges, so
+ * that the jth edge of vertex i is held in ed[i][j]. The next
+ * m elements hold a table of relations which is redundant but
+ * helps speed up the computation. It satisfies the relation
+ * ed[ed[i][j]][ed[i][m+j]]=i. The final entry holds a back
+ * pointer, so that ed[i+2*m]=i. The back pointers are used
+ * when rearranging the memory. */
+ int **ed;
+ /** This array holds the order of the vertices in the Voronoi
+ * cell. This array is dynamically allocated, with its current
+ * size held by current_vertices. */
+ int *nu;
+ /** This in an array with size 3*current_vertices for holding
+ * the positions of the vertices. */
+ double *pts;
+ voronoicell_base();
+ ~voronoicell_base();
+ void init_base(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax);
+ void init_octahedron_base(double l);
+ void init_tetrahedron_base(double x0,double y0,double z0,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3);
+ void translate(double x,double y,double z);
+ void draw_pov(double x,double y,double z,FILE *fp=stdout);
+ /** Outputs the cell in POV-Ray format, using cylinders for edges
+ * and spheres for vertices, to a given file.
+ * \param[in] (x,y,z) a displacement to add to the cell's
+ * position.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_pov(double x,double y,double z,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_pov(x,y,z,fp);
+ fclose(fp);
+ };
+ void draw_pov_mesh(double x,double y,double z,FILE *fp=stdout);
+ /** Outputs the cell in POV-Ray format as a mesh2 object to a
+ * given file.
+ * \param[in] (x,y,z) a displacement to add to the cell's
+ * position.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_pov_mesh(double x,double y,double z,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_pov_mesh(x,y,z,fp);
+ fclose(fp);
+ }
+ void draw_gnuplot(double x,double y,double z,FILE *fp=stdout);
+ /** Outputs the cell in Gnuplot format a given file.
+ * \param[in] (x,y,z) a displacement to add to the cell's
+ * position.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_gnuplot(double x,double y,double z,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_gnuplot(x,y,z,fp);
+ fclose(fp);
+ }
+ double volume();
+ double max_radius_squared();
+ double total_edge_distance();
+ double surface_area();
+ void centroid(double &cx,double &cy,double &cz);
+ int number_of_faces();
+ int number_of_edges();
+ void vertex_orders(std::vector<int> &v);
+ void output_vertex_orders(FILE *fp=stdout);
+ void vertices(std::vector<double> &v);
+ void output_vertices(FILE *fp=stdout);
+ void vertices(double x,double y,double z,std::vector<double> &v);
+ void output_vertices(double x,double y,double z,FILE *fp=stdout);
+ void face_areas(std::vector<double> &v);
+ /** Outputs the areas of the faces.
+ * \param[in] fp the file handle to write to. */
+ inline void output_face_areas(FILE *fp=stdout) {
+ std::vector<double> v;face_areas(v);
+ voro_print_vector(v,fp);
+ }
+ void face_orders(std::vector<int> &v);
+ /** Outputs a list of the number of sides of each face.
+ * \param[in] fp the file handle to write to. */
+ inline void output_face_orders(FILE *fp=stdout) {
+ std::vector<int> v;face_orders(v);
+ voro_print_vector(v,fp);
+ }
+ void face_freq_table(std::vector<int> &v);
+ /** Outputs a */
+ inline void output_face_freq_table(FILE *fp=stdout) {
+ std::vector<int> v;face_freq_table(v);
+ voro_print_vector(v,fp);
+ }
+ void face_vertices(std::vector<int> &v);
+ /** Outputs the */
+ inline void output_face_vertices(FILE *fp=stdout) {
+ std::vector<int> v;face_vertices(v);
+ voro_print_face_vertices(v,fp);
+ }
+ void face_perimeters(std::vector<double> &v);
+ /** Outputs a list of the perimeters of each face.
+ * \param[in] fp the file handle to write to. */
+ inline void output_face_perimeters(FILE *fp=stdout) {
+ std::vector<double> v;face_perimeters(v);
+ voro_print_vector(v,fp);
+ }
+ void normals(std::vector<double> &v);
+ /** Outputs a list of the perimeters of each face.
+ * \param[in] fp the file handle to write to. */
+ inline void output_normals(FILE *fp=stdout) {
+ std::vector<double> v;normals(v);
+ voro_print_positions(v,fp);
+ }
+ /** Outputs a custom string of information about the Voronoi
+ * cell to a file. It assumes the cell is at (0,0,0) and has a
+ * the default_radius associated with it.
+ * \param[in] format the custom format string to use.
+ * \param[in] fp the file handle to write to. */
+ inline void output_custom(const char *format,FILE *fp=stdout) {output_custom(format,0,0,0,0,default_radius,fp);}
+ void output_custom(const char *format,int i,double x,double y,double z,double r,FILE *fp=stdout);
+ template<class vc_class>
+ bool nplane(vc_class &vc,double x,double y,double z,double rsq,int p_id);
+ bool plane_intersects(double x,double y,double z,double rsq);
+ bool plane_intersects_guess(double x,double y,double z,double rsq);
+ void construct_relations();
+ void check_relations();
+ void check_duplicates();
+ void print_edges();
+ /** Returns a list of IDs of neighboring particles
+ * corresponding to each face.
+ * \param[out] v a reference to a vector in which to return the
+ * results. If no neighbor information is
+ * available, a blank vector is returned. */
+ virtual void neighbors(std::vector<int> &v) {v.clear();}
+ /** This is a virtual function that is overridden by a routine
+ * to print a list of IDs of neighboring particles
+ * corresponding to each face. By default, when no neighbor
+ * information is available, the routine does nothing.
+ * \param[in] fp the file handle to write to. */
+ virtual void output_neighbors(FILE *fp=stdout) {}
+ /** This a virtual function that is overridden by a routine to
+ * print the neighboring particle IDs for a given vertex. By
+ * default, when no neighbor information is available, the
+ * routine does nothing.
+ * \param[in] i the vertex to consider. */
+ virtual void print_edges_neighbors(int i) {};
+ /** This is a simple inline function for picking out the index
+ * of the next edge counterclockwise at the current vertex.
+ * \param[in] a the index of an edge of the current vertex.
+ * \param[in] p the number of the vertex.
+ * \return 0 if a=nu[p]-1, or a+1 otherwise. */
+ inline int cycle_up(int a,int p) {return a==nu[p]-1?0:a+1;}
+ /** This is a simple inline function for picking out the index
+ * of the next edge clockwise from the current vertex.
+ * \param[in] a the index of an edge of the current vertex.
+ * \param[in] p the number of the vertex.
+ * \return nu[p]-1 if a=0, or a-1 otherwise. */
+ inline int cycle_down(int a,int p) {return a==0?nu[p]-1:a-1;}
+ protected:
+ /** This a one dimensional array that holds the current sizes
+ * of the memory allocations for them mep array.*/
+ int *mem;
+ /** This is a one dimensional array that holds the current
+ * number of vertices of order p that are stored in the mep[p]
+ * array. */
+ int *mec;
+ /** This is a two dimensional array for holding the information
+ * about the edges of the Voronoi cell. mep[p] is a
+ * one-dimensional array for holding the edge information about
+ * all vertices of order p, with each vertex holding 2*p+1
+ * integers of information. The total number of vertices held
+ * on mep[p] is stored in mem[p]. If the space runs out, the
+ * code allocates more using the add_memory() routine. */
+ int **mep;
+ inline void reset_edges();
+ template<class vc_class>
+ void check_memory_for_copy(vc_class &vc,voronoicell_base* vb);
+ void copy(voronoicell_base* vb);
+ private:
+ /** This is the delete stack, used to store the vertices which
+ * are going to be deleted during the plane cutting procedure.
+ */
+ int *ds,*stacke;
+ /** This is the auxiliary delete stack, which has size set by
+ * current_delete2_size. */
+ int *ds2,*stacke2;
+ /** This stores the current memory allocation for the marginal
+ * cases. */
+ int current_marginal;
+ /** This stores the total number of marginal points which are
+ * currently in the buffer. */
+ int n_marg;
+ /** This array contains a list of the marginal points, and also
+ * the outcomes of the marginal tests. */
+ int *marg;
+ /** The x coordinate of the normal vector to the test plane. */
+ double px;
+ /** The y coordinate of the normal vector to the test plane. */
+ double py;
+ /** The z coordinate of the normal vector to the test plane. */
+ double pz;
+ /** The magnitude of the normal vector to the test plane. */
+ double prsq;
+ template<class vc_class>
+ void add_memory(vc_class &vc,int i,int *stackp2);
+ template<class vc_class>
+ void add_memory_vertices(vc_class &vc);
+ template<class vc_class>
+ void add_memory_vorder(vc_class &vc);
+ void add_memory_ds(int *&stackp);
+ void add_memory_ds2(int *&stackp2);
+ template<class vc_class>
+ inline bool collapse_order1(vc_class &vc);
+ template<class vc_class>
+ inline bool collapse_order2(vc_class &vc);
+ template<class vc_class>
+ inline bool delete_connection(vc_class &vc,int j,int k,bool hand);
+ template<class vc_class>
+ inline bool search_for_outside_edge(vc_class &vc,int &up);
+ template<class vc_class>
+ inline void add_to_stack(vc_class &vc,int lp,int *&stackp2);
+ inline bool plane_intersects_track(double x,double y,double z,double rs,double g);
+ inline void normals_search(std::vector<double> &v,int i,int j,int k);
+ inline bool search_edge(int l,int &m,int &k);
+ inline int m_test(int n,double &ans);
+ int check_marginal(int n,double &ans);
+ friend class voronoicell;
+ friend class voronoicell_neighbor;
+};
+
+/** \brief Extension of the voronoicell_base class to represent a Voronoi
+ * cell without neighbor information.
+ *
+ * This class is an extension of the voronoicell_base class, in cases when
+ * is not necessary to track the IDs of neighboring particles associated
+ * with each face of the Voronoi cell. */
+class voronoicell : public voronoicell_base {
+ public:
+ using voronoicell_base::nplane;
+ /** Copies the information from another voronoicell class into
+ * this class, extending memory allocation if necessary.
+ * \param[in] c the class to copy. */
+ inline void operator=(voronoicell &c) {
+ voronoicell_base* vb((voronoicell_base*) &c);
+ check_memory_for_copy(*this,vb);copy(vb);
+ }
+ /** Cuts a Voronoi cell using by the plane corresponding to the
+ * perpendicular bisector of a particle.
+ * \param[in] (x,y,z) the position of the particle.
+ * \param[in] rsq the modulus squared of the vector.
+ * \param[in] p_id the plane ID, ignored for this case where no
+ * neighbor tracking is enabled.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool nplane(double x,double y,double z,double rsq,int p_id) {
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ /** Cuts a Voronoi cell using by the plane corresponding to the
+ * perpendicular bisector of a particle.
+ * \param[in] (x,y,z) the position of the particle.
+ * \param[in] p_id the plane ID, ignored for this case where no
+ * neighbor tracking is enabled.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool nplane(double x,double y,double z,int p_id) {
+ double rsq=x*x+y*y+z*z;
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ /** Cuts a Voronoi cell using by the plane corresponding to the
+ * perpendicular bisector of a particle.
+ * \param[in] (x,y,z) the position of the particle.
+ * \param[in] rsq the modulus squared of the vector.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool plane(double x,double y,double z,double rsq) {
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ /** Cuts a Voronoi cell using by the plane corresponding to the
+ * perpendicular bisector of a particle.
+ * \param[in] (x,y,z) the position of the particle.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool plane(double x,double y,double z) {
+ double rsq=x*x+y*y+z*z;
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ /** Initializes the Voronoi cell to be rectangular box with the
+ * given dimensions.
+ * \param[in] (xmin,xmax) the minimum and maximum x coordinates.
+ * \param[in] (ymin,ymax) the minimum and maximum y coordinates.
+ * \param[in] (zmin,zmax) the minimum and maximum z coordinates. */
+ inline void init(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax) {
+ init_base(xmin,xmax,ymin,ymax,zmin,zmax);
+ }
+ /** Initializes the cell to be an octahedron with vertices at
+ * (l,0,0), (-l,0,0), (0,l,0), (0,-l,0), (0,0,l), and (0,0,-l).
+ * \param[in] l a parameter setting the size of the octahedron.
+ */
+ inline void init_octahedron(double l) {
+ init_octahedron_base(l);
+ }
+ /** Initializes the cell to be a tetrahedron.
+ * \param[in] (x0,y0,z0) the coordinates of the first vertex.
+ * \param[in] (x1,y1,z1) the coordinates of the second vertex.
+ * \param[in] (x2,y2,z2) the coordinates of the third vertex.
+ * \param[in] (x3,y3,z3) the coordinates of the fourth vertex.
+ */
+ inline void init_tetrahedron(double x0,double y0,double z0,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3) {
+ init_tetrahedron_base(x0,y0,z0,x1,y1,z1,x2,y2,z2,x3,y3,z3);
+ }
+ private:
+ inline void n_allocate(int i,int m) {};
+ inline void n_add_memory_vertices(int i) {};
+ inline void n_add_memory_vorder(int i) {};
+ inline void n_set_pointer(int p,int n) {};
+ inline void n_copy(int a,int b,int c,int d) {};
+ inline void n_set(int a,int b,int c) {};
+ inline void n_set_aux1(int k) {};
+ inline void n_copy_aux1(int a,int b) {};
+ inline void n_copy_aux1_shift(int a,int b) {};
+ inline void n_set_aux2_copy(int a,int b) {};
+ inline void n_copy_pointer(int a,int b) {};
+ inline void n_set_to_aux1(int j) {};
+ inline void n_set_to_aux2(int j) {};
+ inline void n_allocate_aux1(int i) {};
+ inline void n_switch_to_aux1(int i) {};
+ inline void n_copy_to_aux1(int i,int m) {};
+ inline void n_set_to_aux1_offset(int k,int m) {};
+ inline void n_neighbors(std::vector<int> &v) {v.clear();};
+ friend class voronoicell_base;
+};
+
+/** \brief Extension of the voronoicell_base class to represent a Voronoi cell
+ * with neighbor information.
+ *
+ * This class is an extension of the voronoicell_base class, in cases when the
+ * IDs of neighboring particles associated with each face of the Voronoi cell.
+ * It contains additional data structures mne and ne for storing this
+ * information. */
+class voronoicell_neighbor : public voronoicell_base {
+ public:
+ using voronoicell_base::nplane;
+ /** This two dimensional array holds the neighbor information
+ * associated with each vertex. mne[p] is a one dimensional
+ * array which holds all of the neighbor information for
+ * vertices of order p. */
+ int **mne;
+ /** This is a two dimensional array that holds the neighbor
+ * information associated with each vertex. ne[i] points to a
+ * one-dimensional array in mne[nu[i]]. ne[i][j] holds the
+ * neighbor information associated with the jth edge of vertex
+ * i. It is set to the ID number of the plane that made the
+ * face that is clockwise from the jth edge. */
+ int **ne;
+ voronoicell_neighbor();
+ ~voronoicell_neighbor();
+ void operator=(voronoicell &c);
+ void operator=(voronoicell_neighbor &c);
+ /** Cuts the Voronoi cell by a particle whose center is at a
+ * separation of (x,y,z) from the cell center. The value of rsq
+ * should be initially set to \f$x^2+y^2+z^2\f$.
+ * \param[in] (x,y,z) the normal vector to the plane.
+ * \param[in] rsq the distance along this vector of the plane.
+ * \param[in] p_id the plane ID (for neighbor tracking only).
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool nplane(double x,double y,double z,double rsq,int p_id) {
+ return nplane(*this,x,y,z,rsq,p_id);
+ }
+ /** This routine calculates the modulus squared of the vector
+ * before passing it to the main nplane() routine with full
+ * arguments.
+ * \param[in] (x,y,z) the vector to cut the cell by.
+ * \param[in] p_id the plane ID (for neighbor tracking only).
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool nplane(double x,double y,double z,int p_id) {
+ double rsq=x*x+y*y+z*z;
+ return nplane(*this,x,y,z,rsq,p_id);
+ }
+ /** This version of the plane routine just makes up the plane
+ * ID to be zero. It will only be referenced if neighbor
+ * tracking is enabled.
+ * \param[in] (x,y,z) the vector to cut the cell by.
+ * \param[in] rsq the modulus squared of the vector.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool plane(double x,double y,double z,double rsq) {
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ /** Cuts a Voronoi cell using the influence of a particle at
+ * (x,y,z), first calculating the modulus squared of this
+ * vector before passing it to the main nplane() routine. Zero
+ * is supplied as the plane ID, which will be ignored unless
+ * neighbor tracking is enabled.
+ * \param[in] (x,y,z) the vector to cut the cell by.
+ * \return False if the plane cut deleted the cell entirely,
+ * true otherwise. */
+ inline bool plane(double x,double y,double z) {
+ double rsq=x*x+y*y+z*z;
+ return nplane(*this,x,y,z,rsq,0);
+ }
+ void init(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax);
+ void init_octahedron(double l);
+ void init_tetrahedron(double x0,double y0,double z0,double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3);
+ void check_facets();
+ virtual void neighbors(std::vector<int> &v);
+ virtual void print_edges_neighbors(int i);
+ virtual void output_neighbors(FILE *fp=stdout) {
+ std::vector<int> v;neighbors(v);
+ voro_print_vector(v,fp);
+ }
+ private:
+ int *paux1;
+ int *paux2;
+ inline void n_allocate(int i,int m) {mne[i]=new int[m*i];}
+ inline void n_add_memory_vertices(int i) {
+ int **pp=new int*[i];
+ for(int j=0;j<current_vertices;j++) pp[j]=ne[j];
+ delete [] ne;ne=pp;
+ }
+ inline void n_add_memory_vorder(int i) {
+ int **p2=new int*[i];
+ for(int j=0;j<current_vertex_order;j++) p2[j]=mne[j];
+ delete [] mne;mne=p2;
+ }
+ inline void n_set_pointer(int p,int n) {
+ ne[p]=mne[n]+n*mec[n];
+ }
+ inline void n_copy(int a,int b,int c,int d) {ne[a][b]=ne[c][d];}
+ inline void n_set(int a,int b,int c) {ne[a][b]=c;}
+ inline void n_set_aux1(int k) {paux1=mne[k]+k*mec[k];}
+ inline void n_copy_aux1(int a,int b) {paux1[b]=ne[a][b];}
+ inline void n_copy_aux1_shift(int a,int b) {paux1[b]=ne[a][b+1];}
+ inline void n_set_aux2_copy(int a,int b) {
+ paux2=mne[b]+b*mec[b];
+ for(int i=0;i<b;i++) ne[a][i]=paux2[i];
+ }
+ inline void n_copy_pointer(int a,int b) {ne[a]=ne[b];}
+ inline void n_set_to_aux1(int j) {ne[j]=paux1;}
+ inline void n_set_to_aux2(int j) {ne[j]=paux2;}
+ inline void n_allocate_aux1(int i) {paux1=new int[i*mem[i]];}
+ inline void n_switch_to_aux1(int i) {delete [] mne[i];mne[i]=paux1;}
+ inline void n_copy_to_aux1(int i,int m) {paux1[m]=mne[i][m];}
+ inline void n_set_to_aux1_offset(int k,int m) {ne[k]=paux1+m;}
+ friend class voronoicell_base;
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/cmd_line.cc b/lib/voro++/src/cmd_line.cc
new file mode 100644
index 000000000..d645d7028
--- /dev/null
+++ b/lib/voro++/src/cmd_line.cc
@@ -0,0 +1,498 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file cmd_line.cc
+ * \brief Source code for the command-line utility. */
+
+#include <cstring>
+
+#include "voro++.hh"
+using namespace voro;
+
+enum blocks_mode {
+ none,
+ length_scale,
+ specified
+};
+
+// A maximum allowed number of regions, to prevent enormous amounts of memory
+// being allocated
+const int max_regions=16777216;
+
+// This message gets displayed if the user requests the help flag
+void help_message() {
+ puts("Voro++ version 0.4.5, by Chris H. Rycroft (UC Berkeley/LBL)\n\n"
+ "Syntax: voro++ [options] <x_min> <x_max> <y_min>\n"
+ " <y_max> <z_min> <z_max> <filename>\n\n"
+ "By default, the utility reads in the input file of particle IDs and positions,\n"
+ "computes the Voronoi cell for each, and then creates <filename.vol> with an\n"
+ "additional column containing the volume of each Voronoi cell.\n\n"
+ "Available options:\n"
+ " -c <str> : Specify a custom output string\n"
+ " -g : Turn on the gnuplot output to <filename.gnu>\n"
+ " -h/--help : Print this information\n"
+ " -hc : Print information about custom output\n"
+ " -l <len> : Manually specify a length scale to configure the internal\n"
+ " computational grid\n"
+ " -m <mem> : Manually choose the memory allocation per grid block\n"
+ " (default 8)\n"
+ " -n [3] : Manually specify the internal grid size\n"
+ " -o : Ensure that the output file has the same order as the input\n"
+ " file\n"
+ " -p : Make container periodic in all three directions\n"
+ " -px : Make container periodic in the x direction\n"
+ " -py : Make container periodic in the y direction\n"
+ " -pz : Make container periodic in the z direction\n"
+ " -r : Assume the input file has an extra coordinate for radii\n"
+ " -v : Verbose output\n"
+ " --version : Print version information\n"
+ " -wb [6] : Add six plane wall objects to make rectangular box containing\n"
+ " the space x1<x<x2, x3<y<x4, x5<z<x6\n"
+ " -wc [7] : Add a cylinder wall object, centered on (x1,x2,x3),\n"
+ " pointing in (x4,x5,x6), radius x7\n"
+ " -wo [7] : Add a conical wall object, apex at (x1,x2,x3), axis\n"
+ " along (x4,x5,x6), angle x7 in radians\n"
+ " -ws [4] : Add a sphere wall object, centered on (x1,x2,x3),\n"
+ " with radius x4\n"
+ " -wp [4] : Add a plane wall object, with normal (x1,x2,x3),\n"
+ " and displacement x4\n"
+ " -y : Save POV-Ray particles to <filename_p.pov> and POV-Ray Voronoi\n"
+ " cells to <filename_v.pov>\n"
+ " -yp : Save only POV-Ray particles to <filename_p.pov>\n"
+ " -yv : Save only POV-Ray Voronoi cells to <filename_v.pov>");
+}
+
+// This message gets displayed if the user requests information about doing
+// custom output
+void custom_output_message() {
+ puts("The \"-c\" option allows a string to be specified that will customize the output\n"
+ "file to contain a variety of statistics about each computed Voronoi cell. The\n"
+ "string is similar to the standard C printf() function, made up of text with\n"
+ "additional control sequences that begin with percentage signs that are expanded\n"
+ "to different statistics. See http://math.lbl.gov/voro++/doc/custom.html for more\n"
+ "information.\n"
+ "\nParticle-related:\n"
+ " %i The particle ID number\n"
+ " %x The x coordinate of the particle\n"
+ " %y The y coordinate of the particle\n"
+ " %z The z coordinate of the particle\n"
+ " %q The position vector of the particle, short for \"%x %y %z\"\n"
+ " %r The radius of the particle (only printed if -p enabled)\n"
+ "\nVertex-related:\n"
+ " %w The number of vertices in the Voronoi cell\n"
+ " %p A list of the vertices of the Voronoi cell in the format (x,y,z),\n"
+ " relative to the particle center\n"
+ " %P A list of the vertices of the Voronoi cell in the format (x,y,z),\n"
+ " relative to the global coordinate system\n"
+ " %o A list of the orders of each vertex\n"
+ " %m The maximum radius squared of a vertex position, relative to the\n"
+ " particle center\n"
+ "\nEdge-related:\n"
+ " %g The number of edges of the Voronoi cell\n"
+ " %E The total edge distance\n"
+ " %e A list of perimeters of each face\n"
+ "\nFace-related:\n"
+ " %s The number of faces of the Voronoi cell\n"
+ " %F The total surface area of the Voronoi cell\n"
+ " %A A frequency table of the number of edges for each face\n"
+ " %a A list of the number of edges for each face\n"
+ " %f A list of areas of each face\n"
+ " %t A list of bracketed sequences of vertices that make up each face\n"
+ " %l A list of normal vectors for each face\n"
+ " %n A list of neighboring particle or wall IDs corresponding to each face\n"
+ "\nVolume-related:\n"
+ " %v The volume of the Voronoi cell\n"
+ " %c The centroid of the Voronoi cell, relative to the particle center\n"
+ " %C The centroid of the Voronoi cell, in the global coordinate system");
+}
+
+// Ths message is displayed if the user requests version information
+void version_message() {
+ puts("Voro++ version 0.4.5 (July 27th 2012)");
+}
+
+// Prints an error message. This is called when the program is unable to make
+// sense of the command-line options.
+void error_message() {
+ fputs("voro++: Unrecognized command-line options; type \"voro++ -h\" for more\ninformation.\n",stderr);
+}
+
+// Carries out the Voronoi computation and outputs the results to the requested
+// files
+template<class c_loop,class c_class>
+void cmd_line_output(c_loop &vl,c_class &con,const char* format,FILE* outfile,FILE* gnu_file,FILE* povp_file,FILE* povv_file,bool verbose,double &vol,int &vcc,int &tp) {
+ int pid,ps=con.ps;double x,y,z,r;
+ if(con.contains_neighbor(format)) {
+ voronoicell_neighbor c;
+ if(vl.start()) do if(con.compute_cell(c,vl)) {
+ vl.pos(pid,x,y,z,r);
+ if(outfile!=NULL) c.output_custom(format,pid,x,y,z,r,outfile);
+ if(gnu_file!=NULL) c.draw_gnuplot(x,y,z,gnu_file);
+ if(povp_file!=NULL) {
+ fprintf(povp_file,"// id %d\n",pid);
+ if(ps==4) fprintf(povp_file,"sphere{<%g,%g,%g>,%g}\n",x,y,z,r);
+ else fprintf(povp_file,"sphere{<%g,%g,%g>,s}\n",x,y,z);
+ }
+ if(povv_file!=NULL) {
+ fprintf(povv_file,"// cell %d\n",pid);
+ c.draw_pov(x,y,z,povv_file);
+ }
+ if(verbose) {vol+=c.volume();vcc++;}
+ } while(vl.inc());
+ } else {
+ voronoicell c;
+ if(vl.start()) do if(con.compute_cell(c,vl)) {
+ vl.pos(pid,x,y,z,r);
+ if(outfile!=NULL) c.output_custom(format,pid,x,y,z,r,outfile);
+ if(gnu_file!=NULL) c.draw_gnuplot(x,y,z,gnu_file);
+ if(povp_file!=NULL) {
+ fprintf(povp_file,"// id %d\n",pid);
+ if(ps==4) fprintf(povp_file,"sphere{<%g,%g,%g>,%g}\n",x,y,z,r);
+ else fprintf(povp_file,"sphere{<%g,%g,%g>,s}\n",x,y,z);
+ }
+ if(povv_file!=NULL) {
+ fprintf(povv_file,"// cell %d\n",pid);
+ c.draw_pov(x,y,z,povv_file);
+ }
+ if(verbose) {vol+=c.volume();vcc++;}
+ } while(vl.inc());
+ }
+ if(verbose) tp=con.total_particles();
+}
+
+int main(int argc,char **argv) {
+ int i=1,j=-7,custom_output=0,nx,ny,nz,init_mem(8);
+ double ls=0;
+ blocks_mode bm=none;
+ bool gnuplot_output=false,povp_output=false,povv_output=false,polydisperse=false;
+ bool xperiodic=false,yperiodic=false,zperiodic=false,ordered=false,verbose=false;
+ pre_container *pcon=NULL;pre_container_poly *pconp=NULL;
+ wall_list wl;
+
+ // If there's one argument, check to see if it's requesting help.
+ // Otherwise, bail out with an error.
+ if(argc==2) {
+ if(strcmp(argv[1],"-h")==0||strcmp(argv[1],"--help")==0) {
+ help_message();return 0;
+ } else if(strcmp(argv[1],"-hc")==0) {
+ custom_output_message();return 0;
+ } else if(strcmp(argv[1],"--version")==0) {
+ version_message();return 0;
+ } else {
+ error_message();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ }
+
+ // If there aren't enough command-line arguments, then bail out
+ // with an error.
+ if(argc<7) {
+ error_message();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+
+ // We have enough arguments. Now start searching for command-line
+ // options.
+ while(i<argc-7) {
+ if(strcmp(argv[i],"-c")==0) {
+ if(i>=argc-8) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ if(custom_output==0) {
+ custom_output=++i;
+ } else {
+ fputs("voro++: multiple custom output strings detected\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ } else if(strcmp(argv[i],"-g")==0) {
+ gnuplot_output=true;
+ } else if(strcmp(argv[i],"-h")==0||strcmp(argv[i],"--help")==0) {
+ help_message();wl.deallocate();return 0;
+ } else if(strcmp(argv[i],"-hc")==0) {
+ custom_output_message();wl.deallocate();return 0;
+ } else if(strcmp(argv[i],"-l")==0) {
+ if(i>=argc-8) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ if(bm!=none) {
+ fputs("voro++: Conflicting options about grid setup (-l/-n)\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ bm=length_scale;
+ i++;ls=atof(argv[i]);
+ } else if(strcmp(argv[i],"-m")==0) {
+ i++;init_mem=atoi(argv[i]);
+ } else if(strcmp(argv[i],"-n")==0) {
+ if(i>=argc-10) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ if(bm!=none) {
+ fputs("voro++: Conflicting options about grid setup (-l/-n)\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ bm=specified;
+ i++;
+ nx=atoi(argv[i++]);
+ ny=atoi(argv[i++]);
+ nz=atoi(argv[i]);
+ if(nx<=0||ny<=0||nz<=0) {
+ fputs("voro++: Computational grid specified with -n must be greater than one\n"
+ "in each direction\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ } else if(strcmp(argv[i],"-o")==0) {
+ ordered=true;
+ } else if(strcmp(argv[i],"-p")==0) {
+ xperiodic=yperiodic=zperiodic=true;
+ } else if(strcmp(argv[i],"-px")==0) {
+ xperiodic=true;
+ } else if(strcmp(argv[i],"-py")==0) {
+ yperiodic=true;
+ } else if(strcmp(argv[i],"-pz")==0) {
+ zperiodic=true;
+ } else if(strcmp(argv[i],"-r")==0) {
+ polydisperse=true;
+ } else if(strcmp(argv[i],"-v")==0) {
+ verbose=true;
+ } else if(strcmp(argv[i],"--version")==0) {
+ version_message();
+ wl.deallocate();
+ return 0;
+ } else if(strcmp(argv[i],"-wb")==0) {
+ if(i>=argc-13) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ i++;
+ double w0=atof(argv[i++]),w1=atof(argv[i++]);
+ double w2=atof(argv[i++]),w3=atof(argv[i++]);
+ double w4=atof(argv[i++]),w5=atof(argv[i]);
+ wl.add_wall(new wall_plane(-1,0,0,-w0,j));j--;
+ wl.add_wall(new wall_plane(1,0,0,w1,j));j--;
+ wl.add_wall(new wall_plane(0,-1,0,-w2,j));j--;
+ wl.add_wall(new wall_plane(0,1,0,w3,j));j--;
+ wl.add_wall(new wall_plane(0,0,-1,-w4,j));j--;
+ wl.add_wall(new wall_plane(0,0,1,w5,j));j--;
+ } else if(strcmp(argv[i],"-ws")==0) {
+ if(i>=argc-11) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ i++;
+ double w0=atof(argv[i++]),w1=atof(argv[i++]);
+ double w2=atof(argv[i++]),w3=atof(argv[i]);
+ wl.add_wall(new wall_sphere(w0,w1,w2,w3,j));
+ j--;
+ } else if(strcmp(argv[i],"-wp")==0) {
+ if(i>=argc-11) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ i++;
+ double w0=atof(argv[i++]),w1=atof(argv[i++]);
+ double w2=atof(argv[i++]),w3=atof(argv[i]);
+ wl.add_wall(new wall_plane(w0,w1,w2,w3,j));
+ j--;
+ } else if(strcmp(argv[i],"-wc")==0) {
+ if(i>=argc-14) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ i++;
+ double w0=atof(argv[i++]),w1=atof(argv[i++]);
+ double w2=atof(argv[i++]),w3=atof(argv[i++]);
+ double w4=atof(argv[i++]),w5=atof(argv[i++]);
+ double w6=atof(argv[i]);
+ wl.add_wall(new wall_cylinder(w0,w1,w2,w3,w4,w5,w6,j));
+ j--;
+ } else if(strcmp(argv[i],"-wo")==0) {
+ if(i>=argc-14) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
+ i++;
+ double w0=atof(argv[i++]),w1=atof(argv[i++]);
+ double w2=atof(argv[i++]),w3=atof(argv[i++]);
+ double w4=atof(argv[i++]),w5=atof(argv[i++]);
+ double w6=atof(argv[i]);
+ wl.add_wall(new wall_cone(w0,w1,w2,w3,w4,w5,w6,j));
+ j--;
+ } else if(strcmp(argv[i],"-y")==0) {
+ povp_output=povv_output=true;
+ } else if(strcmp(argv[i],"-yp")==0) {
+ povp_output=true;
+ } else if(strcmp(argv[i],"-yv")==0) {
+ povv_output=true;
+ } else {
+ wl.deallocate();
+ error_message();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ i++;
+ }
+
+ // Check the memory guess is positive
+ if(init_mem<=0) {
+ fputs("voro++: The memory allocation must be positive\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+
+ // Read in the dimensions of the test box, and estimate the number of
+ // boxes to divide the region up into
+ double ax=atof(argv[i]),bx=atof(argv[i+1]);
+ double ay=atof(argv[i+2]),by=atof(argv[i+3]);
+ double az=atof(argv[i+4]),bz=atof(argv[i+5]);
+
+ // Check that for each coordinate, the minimum value is smaller
+ // than the maximum value
+ if(bx<ax) {
+ fputs("voro++: Minimum x coordinate exceeds maximum x coordinate\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ if(by<ay) {
+ fputs("voro++: Minimum y coordinate exceeds maximum y coordinate\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ if(bz<az) {
+ fputs("voro++: Minimum z coordinate exceeds maximum z coordinate\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+
+ if(bm==none) {
+ if(polydisperse) {
+ pconp=new pre_container_poly(ax,bx,ay,by,az,bz,xperiodic,yperiodic,zperiodic);
+ pconp->import(argv[i+6]);
+ pconp->guess_optimal(nx,ny,nz);
+ } else {
+ pcon=new pre_container(ax,bx,ay,by,az,bz,xperiodic,yperiodic,zperiodic);
+ pcon->import(argv[i+6]);
+ pcon->guess_optimal(nx,ny,nz);
+ }
+ } else {
+ double nxf,nyf,nzf;
+ if(bm==length_scale) {
+
+ // Check that the length scale is positive and
+ // reasonably large
+ if(ls<tolerance) {
+ fputs("voro++: ",stderr);
+ if(ls<0) {
+ fputs("The length scale must be positive\n",stderr);
+ } else {
+ fprintf(stderr,"The length scale is smaller than the safe limit of %g. Either\nincrease the particle length scale, or recompile with a different limit.\n",tolerance);
+ }
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+ ls=0.6/ls;
+ nxf=(bx-ax)*ls+1;
+ nyf=(by-ay)*ls+1;
+ nzf=(bz-az)*ls+1;
+
+ nx=int(nxf);ny=int(nyf);nz=int(nzf);
+ } else {
+ nxf=nx;nyf=ny;nzf=nz;
+ }
+
+ // Compute the number regions based on the length scale
+ // provided. If the total number exceeds a cutoff then bail
+ // out, to prevent making a massive memory allocation. Do this
+ // test using floating point numbers, since huge integers could
+ // potentially wrap around to negative values.
+ if(nxf*nyf*nzf>max_regions) {
+ fprintf(stderr,"voro++: Number of computational blocks exceeds the maximum allowed of %d.\n"
+ "Either increase the particle length scale, or recompile with an increased\nmaximum.",max_regions);
+ wl.deallocate();
+ return VOROPP_MEMORY_ERROR;
+ }
+ }
+
+ // Check that the output filename is a sensible length
+ int flen=strlen(argv[i+6]);
+ if(flen>4096) {
+ fputs("voro++: Filename too long\n",stderr);
+ wl.deallocate();
+ return VOROPP_CMD_LINE_ERROR;
+ }
+
+ // Open files for output
+ char *buffer=new char[flen+7];
+ sprintf(buffer,"%s.vol",argv[i+6]);
+ FILE *outfile=safe_fopen(buffer,"w"),*gnu_file,*povp_file,*povv_file;
+ if(gnuplot_output) {
+ sprintf(buffer,"%s.gnu",argv[i+6]);
+ gnu_file=safe_fopen(buffer,"w");
+ } else gnu_file=NULL;
+ if(povp_output) {
+ sprintf(buffer,"%s_p.pov",argv[i+6]);
+ povp_file=safe_fopen(buffer,"w");
+ } else povp_file=NULL;
+ if(povv_output) {
+ sprintf(buffer,"%s_v.pov",argv[i+6]);
+ povv_file=safe_fopen(buffer,"w");
+ } else povv_file=NULL;
+ delete [] buffer;
+
+ const char *c_str=(custom_output==0?(polydisperse?"%i %q %v %r":"%i %q %v"):argv[custom_output]);
+
+ // Now switch depending on whether polydispersity was enabled, and
+ // whether output ordering is requested
+ double vol=0;int tp=0,vcc=0;
+ if(polydisperse) {
+ if(ordered) {
+ particle_order vo;
+ container_poly con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
+ con.add_wall(wl);
+ if(bm==none) {
+ pconp->setup(vo,con);delete pconp;
+ } else con.import(vo,argv[i+6]);
+
+ c_loop_order vlo(con,vo);
+ cmd_line_output(vlo,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
+ } else {
+ container_poly con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
+ con.add_wall(wl);
+
+ if(bm==none) {
+ pconp->setup(con);delete pconp;
+ } else con.import(argv[i+6]);
+
+ c_loop_all vla(con);
+ cmd_line_output(vla,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
+ }
+ } else {
+ if(ordered) {
+ particle_order vo;
+ container con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
+ con.add_wall(wl);
+ if(bm==none) {
+ pcon->setup(vo,con);delete pcon;
+ } else con.import(vo,argv[i+6]);
+
+ c_loop_order vlo(con,vo);
+ cmd_line_output(vlo,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
+ } else {
+ container con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
+ con.add_wall(wl);
+ if(bm==none) {
+ pcon->setup(con);delete pcon;
+ } else con.import(argv[i+6]);
+ c_loop_all vla(con);
+ cmd_line_output(vla,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
+ }
+ }
+
+ // Print information if verbose output requested
+ if(verbose) {
+ printf("Container geometry : [%g:%g] [%g:%g] [%g:%g]\n"
+ "Computational grid size : %d by %d by %d (%s)\n"
+ "Filename : %s\n"
+ "Output string : %s%s\n",ax,bx,ay,by,az,bz,nx,ny,nz,
+ bm==none?"estimated from file":(bm==length_scale?
+ "estimated using length scale":"directly specified"),
+ argv[i+6],c_str,custom_output==0?" (default)":"");
+ printf("Total imported particles : %d (%.2g per grid block)\n"
+ "Total V. cells computed : %d\n"
+ "Total container volume : %g\n"
+ "Total V. cell volume : %g\n",tp,((double) tp)/(nx*ny*nz),
+ vcc,(bx-ax)*(by-ay)*(bz-az),vol);
+ }
+
+ // Close output files
+ fclose(outfile);
+ if(gnu_file!=NULL) fclose(gnu_file);
+ if(povp_file!=NULL) fclose(povp_file);
+ if(povv_file!=NULL) fclose(povv_file);
+ return 0;
+}
+
diff --git a/lib/voro++/src/common.cc b/lib/voro++/src/common.cc
new file mode 100644
index 000000000..781a6bf44
--- /dev/null
+++ b/lib/voro++/src/common.cc
@@ -0,0 +1,90 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file common.cc
+ * \brief Implementations of the small helper functions. */
+
+#include "common.hh"
+
+namespace voro {
+
+/** \brief Prints a vector of integers.
+ *
+ * Prints a vector of integers.
+ * \param[in] v the vector to print.
+ * \param[in] fp the file stream to print to. */
+void voro_print_vector(std::vector<int> &v,FILE *fp) {
+ int k=0,s=v.size();
+ while(k+4<s) {
+ fprintf(fp,"%d %d %d %d ",v[k],v[k+1],v[k+2],v[k+3]);
+ k+=4;
+ }
+ if(k+3<=s) {
+ if(k+4==s) fprintf(fp,"%d %d %d %d",v[k],v[k+1],v[k+2],v[k+3]);
+ else fprintf(fp,"%d %d %d",v[k],v[k+1],v[k+2]);
+ } else {
+ if(k+2==s) fprintf(fp,"%d %d",v[k],v[k+1]);
+ else fprintf(fp,"%d",v[k]);
+ }
+}
+
+/** \brief Prints a vector of doubles.
+ *
+ * Prints a vector of doubles.
+ * \param[in] v the vector to print.
+ * \param[in] fp the file stream to print to. */
+void voro_print_vector(std::vector<double> &v,FILE *fp) {
+ int k=0,s=v.size();
+ while(k+4<s) {
+ fprintf(fp,"%g %g %g %g ",v[k],v[k+1],v[k+2],v[k+3]);
+ k+=4;
+ }
+ if(k+3<=s) {
+ if(k+4==s) fprintf(fp,"%g %g %g %g",v[k],v[k+1],v[k+2],v[k+3]);
+ else fprintf(fp,"%g %g %g",v[k],v[k+1],v[k+2]);
+ } else {
+ if(k+2==s) fprintf(fp,"%g %g",v[k],v[k+1]);
+ else fprintf(fp,"%g",v[k]);
+ }
+}
+
+/** \brief Prints a vector a face vertex information.
+ *
+ * Prints a vector of face vertex information. A value is read, which
+ * corresponds to the number of vertices in the next face. The routine reads
+ * this number of values and prints them as a bracked list. This is repeated
+ * until the end of the vector is reached.
+ * \param[in] v the vector to interpret and print.
+ * \param[in] fp the file stream to print to. */
+void voro_print_face_vertices(std::vector<int> &v,FILE *fp) {
+ int j,k=0,l;
+ if(v.size()>0) {
+ l=v[k++];
+ if(l<=1) {
+ if(l==1) fprintf(fp,"(%d)",v[k++]);
+ else fputs("()",fp);
+ } else {
+ j=k+l;
+ fprintf(fp,"(%d",v[k++]);
+ while(k<j) fprintf(fp,",%d",v[k++]);
+ fputs(")",fp);
+ }
+ while((unsigned int) k<v.size()) {
+ l=v[k++];
+ if(l<=1) {
+ if(l==1) fprintf(fp," (%d)",v[k++]);
+ else fputs(" ()",fp);
+ } else {
+ j=k+l;
+ fprintf(fp," (%d",v[k++]);
+ while(k<j) fprintf(fp,",%d",v[k++]);
+ fputs(")",fp);
+ }
+ }
+ }
+}
+
+}
diff --git a/lib/voro++/src/common.hh b/lib/voro++/src/common.hh
new file mode 100644
index 000000000..25a28fa6d
--- /dev/null
+++ b/lib/voro++/src/common.hh
@@ -0,0 +1,67 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file common.hh
+ * \brief Header file for the small helper functions. */
+
+#ifndef VOROPP_COMMON_HH
+#define VOROPP_COMMON_HH
+
+#include <cstdio>
+#include <cstdlib>
+#include <vector>
+
+#include "config.hh"
+
+namespace voro {
+
+/** \brief Function for printing fatal error messages and exiting.
+ *
+ * Function for printing fatal error messages and exiting.
+ * \param[in] p a pointer to the message to print.
+ * \param[in] status the status code to return with. */
+inline void voro_fatal_error(const char *p,int status) {
+ fprintf(stderr,"voro++: %s\n",p);
+ exit(status);
+}
+
+/** \brief Prints a vector of positions.
+ *
+ * Prints a vector of positions as bracketed triplets.
+ * \param[in] v the vector to print.
+ * \param[in] fp the file stream to print to. */
+inline void voro_print_positions(std::vector<double> &v,FILE *fp=stdout) {
+ if(v.size()>0) {
+ fprintf(fp,"(%g,%g,%g)",v[0],v[1],v[2]);
+ for(int k=3;(unsigned int) k<v.size();k+=3) {
+ fprintf(fp," (%g,%g,%g)",v[k],v[k+1],v[k+2]);
+ }
+ }
+}
+
+/** \brief Opens a file and checks the operation was successful.
+ *
+ * Opens a file, and checks the return value to ensure that the operation
+ * was successful.
+ * \param[in] filename the file to open.
+ * \param[in] mode the cstdio fopen mode to use.
+ * \return The file handle. */
+inline FILE* safe_fopen(const char *filename,const char *mode) {
+ FILE *fp=fopen(filename,mode);
+ if(fp==NULL) {
+ fprintf(stderr,"voro++: Unable to open file '%s'\n",filename);
+ exit(VOROPP_FILE_ERROR);
+ }
+ return fp;
+}
+
+void voro_print_vector(std::vector<int> &v,FILE *fp=stdout);
+void voro_print_vector(std::vector<double> &v,FILE *fp=stdout);
+void voro_print_face_vertices(std::vector<int> &v,FILE *fp=stdout);
+
+}
+
+#endif
diff --git a/lib/voro++/src/config.hh b/lib/voro++/src/config.hh
new file mode 100644
index 000000000..093cd76cd
--- /dev/null
+++ b/lib/voro++/src/config.hh
@@ -0,0 +1,127 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file config.hh
+ * \brief Master configuration file for setting various compile-time options. */
+
+#ifndef VOROPP_CONFIG_HH
+#define VOROPP_CONFIG_HH
+
+namespace voro {
+
+// These constants set the initial memory allocation for the Voronoi cell
+/** The initial memory allocation for the number of vertices. */
+const int init_vertices=256;
+/** The initial memory allocation for the maximum vertex order. */
+const int init_vertex_order=64;
+/** The initial memory allocation for the number of regular vertices of order
+ * 3. */
+const int init_3_vertices=256;
+/** The initial memory allocation for the number of vertices of higher order.
+ */
+const int init_n_vertices=8;
+/** The initial buffer size for marginal cases used by the suretest class. */
+const int init_marginal=64;
+/** The initial size for the delete stack. */
+const int init_delete_size=256;
+/** The initial size for the auxiliary delete stack. */
+const int init_delete2_size=256;
+/** The initial size for the wall pointer array. */
+const int init_wall_size=32;
+/** The default initial size for the ordering class. */
+const int init_ordering_size=4096;
+/** The initial size of the pre_container chunk index. */
+const int init_chunk_size=256;
+
+// If the initial memory is too small, the program dynamically allocates more.
+// However, if the limits below are reached, then the program bails out.
+/** The maximum memory allocation for the number of vertices. */
+const int max_vertices=16777216;
+/** The maximum memory allocation for the maximum vertex order. */
+const int max_vertex_order=2048;
+/** The maximum memory allocation for the any particular order of vertex. */
+const int max_n_vertices=16777216;
+/** The maximum buffer size for marginal cases used by the suretest class. */
+const int max_marginal=16777216;
+/** The maximum size for the delete stack. */
+const int max_delete_size=16777216;
+/** The maximum size for the auxiliary delete stack. */
+const int max_delete2_size=16777216;
+/** The maximum amount of particle memory allocated for a single region. */
+const int max_particle_memory=16777216;
+/** The maximum size for the wall pointer array. */
+const int max_wall_size=2048;
+/** The maximum size for the ordering class. */
+const int max_ordering_size=67108864;
+/** The maximum size for the pre_container chunk index. */
+const int max_chunk_size=65536;
+
+/** The chunk size in the pre_container classes. */
+const int pre_container_chunk_size=1024;
+
+#ifndef VOROPP_VERBOSE
+/** Voro++ can print a number of different status and debugging messages to
+ * notify the user of special behavior, and this macro sets the amount which
+ * are displayed. At level 0, no messages are printed. At level 1, messages
+ * about unusual cases during cell construction are printed, such as when the
+ * plane routine bails out due to floating point problems. At level 2, general
+ * messages about memory expansion are printed. At level 3, technical details
+ * about memory management are printed. */
+#define VOROPP_VERBOSE 0
+#endif
+
+/** If a point is within this distance of a cutting plane, then the code
+ * assumes that point exactly lies on the plane. */
+const double tolerance=1e-11;
+
+/** If a point is within this distance of a cutting plane, then the code stores
+ * whether this point is inside, outside, or exactly on the cutting plane in
+ * the marginal cases buffer, to prevent the test giving a different result on
+ * a subsequent evaluation due to floating point rounding errors. */
+const double tolerance2=2e-11;
+
+/** The square of the tolerance, used when deciding whether some squared
+ * quantities are large enough to be used. */
+const double tolerance_sq=tolerance*tolerance;
+
+/** A large number that is used in the computation. */
+const double large_number=1e30;
+
+/** A radius to use as a placeholder when no other information is available. */
+const double default_radius=0.5;
+
+/** The maximum number of shells of periodic images to test over. */
+const int max_unit_voro_shells=10;
+
+/** A guess for the optimal number of particles per block, used to set up the
+ * container grid. */
+const double optimal_particles=5.6;
+
+/** If this is set to 1, then the code reports any instances of particles being
+ * put outside of the container geometry. */
+#define VOROPP_REPORT_OUT_OF_BOUNDS 0
+
+/** Voro++ returns this status code if there is a file-related error, such as
+ * not being able to open file. */
+#define VOROPP_FILE_ERROR 1
+
+/** Voro++ returns this status code if there is a memory allocation error, if
+ * one of the safe memory limits is exceeded. */
+#define VOROPP_MEMORY_ERROR 2
+
+/** Voro++ returns this status code if there is any type of internal error, if
+ * it detects that representation of the Voronoi cell is inconsistent. This
+ * status code will generally indicate a bug, and the developer should be
+ * contacted. */
+#define VOROPP_INTERNAL_ERROR 3
+
+/** Voro++ returns this status code if it could not interpret the command line
+ * arguments passed to the command line utility. */
+#define VOROPP_CMD_LINE_ERROR 4
+
+}
+
+#endif
diff --git a/lib/voro++/src/container.cc b/lib/voro++/src/container.cc
new file mode 100644
index 000000000..f47495aac
--- /dev/null
+++ b/lib/voro++/src/container.cc
@@ -0,0 +1,549 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file container.cc
+ * \brief Function implementations for the container and related classes. */
+
+#include "container.hh"
+
+namespace voro {
+
+/** The class constructor sets up the geometry of container, initializing the
+ * minimum and maximum coordinates in each direction, and setting whether each
+ * direction is periodic or not. It divides the container into a rectangular
+ * grid of blocks, and allocates memory for each of these for storing particle
+ * positions and IDs.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the
+ * container is periodic in each
+ * coordinate direction.
+ * \param[in] init_mem the initial memory allocation for each block.
+ * \param[in] ps_ the number of floating point entries to store for each
+ * particle. */
+container_base::container_base(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int init_mem,int ps_)
+ : voro_base(nx_,ny_,nz_,(bx_-ax_)/nx_,(by_-ay_)/ny_,(bz_-az_)/nz_),
+ ax(ax_), bx(bx_), ay(ay_), by(by_), az(az_), bz(bz_),
+ xperiodic(xperiodic_), yperiodic(yperiodic_), zperiodic(zperiodic_),
+ id(new int*[nxyz]), p(new double*[nxyz]), co(new int[nxyz]), mem(new int[nxyz]), ps(ps_) {
+ int l;
+ for(l=0;l<nxyz;l++) co[l]=0;
+ for(l=0;l<nxyz;l++) mem[l]=init_mem;
+ for(l=0;l<nxyz;l++) id[l]=new int[init_mem];
+ for(l=0;l<nxyz;l++) p[l]=new double[ps*init_mem];
+}
+
+/** The container destructor frees the dynamically allocated memory. */
+container_base::~container_base() {
+ int l;
+ for(l=0;l<nxyz;l++) delete [] p[l];
+ for(l=0;l<nxyz;l++) delete [] id[l];
+ delete [] id;
+ delete [] p;
+ delete [] co;
+ delete [] mem;
+}
+
+/** The class constructor sets up the geometry of container.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the
+ * container is periodic in each
+ * coordinate direction.
+ * \param[in] init_mem the initial memory allocation for each block. */
+container::container(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int init_mem)
+ : container_base(ax_,bx_,ay_,by_,az_,bz_,nx_,ny_,nz_,xperiodic_,yperiodic_,zperiodic_,init_mem,3),
+ vc(*this,xperiodic_?2*nx_+1:nx_,yperiodic_?2*ny_+1:ny_,zperiodic_?2*nz_+1:nz_) {}
+
+/** The class constructor sets up the geometry of container.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_) flags setting whether the
+ * container is periodic in each
+ * coordinate direction.
+ * \param[in] init_mem the initial memory allocation for each block. */
+container_poly::container_poly(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int init_mem)
+ : container_base(ax_,bx_,ay_,by_,az_,bz_,nx_,ny_,nz_,xperiodic_,yperiodic_,zperiodic_,init_mem,4),
+ vc(*this,xperiodic_?2*nx_+1:nx_,yperiodic_?2*ny_+1:ny_,zperiodic_?2*nz_+1:nz_) {ppr=p;}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle. */
+void container::put(int n,double x,double y,double z) {
+ int ijk;
+ if(put_locate_block(ijk,x,y,z)) {
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+3*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*pp=z;
+ }
+}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle. */
+void container_poly::put(int n,double x,double y,double z,double r) {
+ int ijk;
+ if(put_locate_block(ijk,x,y,z)) {
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+4*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;
+ if(max_radius<r) max_radius=r;
+ }
+}
+
+/** Put a particle into the correct region of the container, also recording
+ * into which region it was stored.
+ * \param[in] vo the ordering class in which to record the region.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle. */
+void container::put(particle_order &vo,int n,double x,double y,double z) {
+ int ijk;
+ if(put_locate_block(ijk,x,y,z)) {
+ id[ijk][co[ijk]]=n;
+ vo.add(ijk,co[ijk]);
+ double *pp=p[ijk]+3*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*pp=z;
+ }
+}
+
+/** Put a particle into the correct region of the container, also recording
+ * into which region it was stored.
+ * \param[in] vo the ordering class in which to record the region.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle. */
+void container_poly::put(particle_order &vo,int n,double x,double y,double z,double r) {
+ int ijk;
+ if(put_locate_block(ijk,x,y,z)) {
+ id[ijk][co[ijk]]=n;
+ vo.add(ijk,co[ijk]);
+ double *pp=p[ijk]+4*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;
+ if(max_radius<r) max_radius=r;
+ }
+}
+
+/** This routine takes a particle position vector, tries to remap it into the
+ * primary domain. If successful, it computes the region into which it can be
+ * stored and checks that there is enough memory within this region to store
+ * it.
+ * \param[out] ijk the region index.
+ * \param[in,out] (x,y,z) the particle position, remapped into the primary
+ * domain if necessary.
+ * \return True if the particle can be successfully placed into the container,
+ * false otherwise. */
+inline bool container_base::put_locate_block(int &ijk,double &x,double &y,double &z) {
+ if(put_remap(ijk,x,y,z)) {
+ if(co[ijk]==mem[ijk]) add_particle_memory(ijk);
+ return true;
+ }
+#if VOROPP_REPORT_OUT_OF_BOUNDS ==1
+ fprintf(stderr,"Out of bounds: (x,y,z)=(%g,%g,%g)\n",x,y,z);
+#endif
+ return false;
+}
+
+/** Takes a particle position vector and computes the region index into which
+ * it should be stored. If the container is periodic, then the routine also
+ * maps the particle position to ensure it is in the primary domain. If the
+ * container is not periodic, the routine bails out.
+ * \param[out] ijk the region index.
+ * \param[in,out] (x,y,z) the particle position, remapped into the primary
+ * domain if necessary.
+ * \return True if the particle can be successfully placed into the container,
+ * false otherwise. */
+inline bool container_base::put_remap(int &ijk,double &x,double &y,double &z) {
+ int l;
+
+ ijk=step_int((x-ax)*xsp);
+ if(xperiodic) {l=step_mod(ijk,nx);x+=boxx*(l-ijk);ijk=l;}
+ else if(ijk<0||ijk>=nx) return false;
+
+ int j=step_int((y-ay)*ysp);
+ if(yperiodic) {l=step_mod(j,ny);y+=boxy*(l-j);j=l;}
+ else if(j<0||j>=ny) return false;
+
+ int k=step_int((z-az)*zsp);
+ if(zperiodic) {l=step_mod(k,nz);z+=boxz*(l-k);k=l;}
+ else if(k<0||k>=nz) return false;
+
+ ijk+=nx*j+nxy*k;
+ return true;
+}
+
+/** Takes a position vector and attempts to remap it into the primary domain.
+ * \param[out] (ai,aj,ak) the periodic image displacement that the vector is in,
+ * with (0,0,0) corresponding to the primary domain.
+ * \param[out] (ci,cj,ck) the index of the block that the position vector is
+ * within, once it has been remapped.
+ * \param[in,out] (x,y,z) the position vector to consider, which is remapped
+ * into the primary domain during the routine.
+ * \param[out] ijk the block index that the vector is within.
+ * \return True if the particle is within the container or can be remapped into
+ * it, false if it lies outside of the container bounds. */
+inline bool container_base::remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk) {
+ ci=step_int((x-ax)*xsp);
+ if(ci<0||ci>=nx) {
+ if(xperiodic) {ai=step_div(ci,nx);x-=ai*(bx-ax);ci-=ai*nx;}
+ else return false;
+ } else ai=0;
+
+ cj=step_int((y-ay)*ysp);
+ if(cj<0||cj>=ny) {
+ if(yperiodic) {aj=step_div(cj,ny);y-=aj*(by-ay);cj-=aj*ny;}
+ else return false;
+ } else aj=0;
+
+ ck=step_int((z-az)*zsp);
+ if(ck<0||ck>=nz) {
+ if(zperiodic) {ak=step_div(ck,nz);z-=ak*(bz-az);ck-=ak*nz;}
+ else return false;
+ } else ak=0;
+
+ ijk=ci+nx*cj+nxy*ck;
+ return true;
+}
+
+/** Takes a vector and finds the particle whose Voronoi cell contains that
+ * vector. This is equivalent to finding the particle which is nearest to the
+ * vector. Additional wall classes are not considered by this routine.
+ * \param[in] (x,y,z) the vector to test.
+ * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell
+ * contains the vector. If the container is periodic,
+ * this may point to a particle in a periodic image of
+ * the primary domain.
+ * \param[out] pid the ID of the particle.
+ * \return True if a particle was found. If the container has no particles,
+ * then the search will not find a Voronoi cell and false is returned. */
+bool container::find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid) {
+ int ai,aj,ak,ci,cj,ck,ijk;
+ particle_record w;
+ double mrs;
+
+ // If the given vector lies outside the domain, but the container
+ // is periodic, then remap it back into the domain
+ if(!remap(ai,aj,ak,ci,cj,ck,x,y,z,ijk)) return false;
+ vc.find_voronoi_cell(x,y,z,ci,cj,ck,ijk,w,mrs);
+
+ if(w.ijk!=-1) {
+
+ // Assemble the position vector of the particle to be returned,
+ // applying a periodic remapping if necessary
+ if(xperiodic) {ci+=w.di;if(ci<0||ci>=nx) ai+=step_div(ci,nx);}
+ if(yperiodic) {cj+=w.dj;if(cj<0||cj>=ny) aj+=step_div(cj,ny);}
+ if(zperiodic) {ck+=w.dk;if(ck<0||ck>=nz) ak+=step_div(ck,nz);}
+ rx=p[w.ijk][3*w.l]+ai*(bx-ax);
+ ry=p[w.ijk][3*w.l+1]+aj*(by-ay);
+ rz=p[w.ijk][3*w.l+2]+ak*(bz-az);
+ pid=id[w.ijk][w.l];
+ return true;
+ }
+
+ // If no particle if found then just return false
+ return false;
+}
+
+/** Takes a vector and finds the particle whose Voronoi cell contains that
+ * vector. Additional wall classes are not considered by this routine.
+ * \param[in] (x,y,z) the vector to test.
+ * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell
+ * contains the vector. If the container is periodic,
+ * this may point to a particle in a periodic image of
+ * the primary domain.
+ * \param[out] pid the ID of the particle.
+ * \return True if a particle was found. If the container has no particles,
+ * then the search will not find a Voronoi cell and false is returned. */
+bool container_poly::find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid) {
+ int ai,aj,ak,ci,cj,ck,ijk;
+ particle_record w;
+ double mrs;
+
+ // If the given vector lies outside the domain, but the container
+ // is periodic, then remap it back into the domain
+ if(!remap(ai,aj,ak,ci,cj,ck,x,y,z,ijk)) return false;
+ vc.find_voronoi_cell(x,y,z,ci,cj,ck,ijk,w,mrs);
+
+ if(w.ijk!=-1) {
+
+ // Assemble the position vector of the particle to be returned,
+ // applying a periodic remapping if necessary
+ if(xperiodic) {ci+=w.di;if(ci<0||ci>=nx) ai+=step_div(ci,nx);}
+ if(yperiodic) {cj+=w.dj;if(cj<0||cj>=ny) aj+=step_div(cj,ny);}
+ if(zperiodic) {ck+=w.dk;if(ck<0||ck>=nz) ak+=step_div(ck,nz);}
+ rx=p[w.ijk][4*w.l]+ai*(bx-ax);
+ ry=p[w.ijk][4*w.l+1]+aj*(by-ay);
+ rz=p[w.ijk][4*w.l+2]+ak*(bz-az);
+ pid=id[w.ijk][w.l];
+ return true;
+ }
+
+ // If no particle if found then just return false
+ return false;
+}
+
+/** Increase memory for a particular region.
+ * \param[in] i the index of the region to reallocate. */
+void container_base::add_particle_memory(int i) {
+ int l,nmem=mem[i]<<1;
+
+ // Carry out a check on the memory allocation size, and
+ // print a status message if requested
+ if(nmem>max_particle_memory)
+ voro_fatal_error("Absolute maximum memory allocation exceeded",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=3
+ fprintf(stderr,"Particle memory in region %d scaled up to %d\n",i,nmem);
+#endif
+
+ // Allocate new memory and copy in the contents of the old arrays
+ int *idp=new int[nmem];
+ for(l=0;l<co[i];l++) idp[l]=id[i][l];
+ double *pp=new double[ps*nmem];
+ for(l=0;l<ps*co[i];l++) pp[l]=p[i][l];
+
+ // Update pointers and delete old arrays
+ mem[i]=nmem;
+ delete [] id[i];id[i]=idp;
+ delete [] p[i];p[i]=pp;
+}
+
+/** Import a list of particles from an open file stream into the container.
+ * Entries of four numbers (Particle ID, x position, y position, z position)
+ * are searched for. If the file cannot be successfully read, then the routine
+ * causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void container::import(FILE *fp) {
+ int i,j;
+ double x,y,z;
+ while((j=fscanf(fp,"%d %lg %lg %lg",&i,&x,&y,&z))==4) put(i,x,y,z);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream, also storing the order
+ * of that the particles are read. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. If the file cannot be
+ * successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo a reference to an ordering class to use.
+ * \param[in] fp the file handle to read from. */
+void container::import(particle_order &vo,FILE *fp) {
+ int i,j;
+ double x,y,z;
+ while((j=fscanf(fp,"%d %lg %lg %lg",&i,&x,&y,&z))==4) put(vo,i,x,y,z);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream into the container.
+ * Entries of five numbers (Particle ID, x position, y position, z position,
+ * radius) are searched for. If the file cannot be successfully read, then the
+ * routine causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void container_poly::import(FILE *fp) {
+ int i,j;
+ double x,y,z,r;
+ while((j=fscanf(fp,"%d %lg %lg %lg %lg",&i,&x,&y,&z,&r))==5) put(i,x,y,z,r);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream, also storing the order
+ * of that the particles are read. Entries of four numbers (Particle ID, x
+ * position, y position, z position, radius) are searched for. If the file
+ * cannot be successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo a reference to an ordering class to use.
+ * \param[in] fp the file handle to read from. */
+void container_poly::import(particle_order &vo,FILE *fp) {
+ int i,j;
+ double x,y,z,r;
+ while((j=fscanf(fp,"%d %lg %lg %lg %lg",&i,&x,&y,&z,&r))==5) put(vo,i,x,y,z,r);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Outputs the a list of all the container regions along with the number of
+ * particles stored within each. */
+void container_base::region_count() {
+ int i,j,k,*cop=co;
+ for(k=0;k<nz;k++) for(j=0;j<ny;j++) for(i=0;i<nx;i++)
+ printf("Region (%d,%d,%d): %d particles\n",i,j,k,*(cop++));
+}
+
+/** Clears a container of particles. */
+void container::clear() {
+ for(int *cop=co;cop<co+nxyz;cop++) *cop=0;
+}
+
+/** Clears a container of particles, also clearing resetting the maximum radius
+ * to zero. */
+void container_poly::clear() {
+ for(int *cop=co;cop<co+nxyz;cop++) *cop=0;
+ max_radius=0;
+}
+
+/** Computes all the Voronoi cells and saves customized information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+void container::print_custom(const char *format,FILE *fp) {
+ c_loop_all vl(*this);
+ print_custom(vl,format,fp);
+}
+
+/** Computes all the Voronoi cells and saves customized
+ * information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+void container_poly::print_custom(const char *format,FILE *fp) {
+ c_loop_all vl(*this);
+ print_custom(vl,format,fp);
+}
+
+/** Computes all the Voronoi cells and saves customized information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] filename the name of the file to write to. */
+void container::print_custom(const char *format,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ print_custom(format,fp);
+ fclose(fp);
+}
+
+/** Computes all the Voronoi cells and saves customized
+ * information about them
+ * \param[in] format the custom output string to use.
+ * \param[in] filename the name of the file to write to. */
+void container_poly::print_custom(const char *format,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ print_custom(format,fp);
+ fclose(fp);
+}
+
+/** Computes all of the Voronoi cells in the container, but does nothing
+ * with the output. It is useful for measuring the pure computation time
+ * of the Voronoi algorithm, without any additional calculations such as
+ * volume evaluation or cell output. */
+void container::compute_all_cells() {
+ voronoicell c;
+ c_loop_all vl(*this);
+ if(vl.start()) do compute_cell(c,vl);
+ while(vl.inc());
+}
+
+/** Computes all of the Voronoi cells in the container, but does nothing
+ * with the output. It is useful for measuring the pure computation time
+ * of the Voronoi algorithm, without any additional calculations such as
+ * volume evaluation or cell output. */
+void container_poly::compute_all_cells() {
+ voronoicell c;
+ c_loop_all vl(*this);
+ if(vl.start()) do compute_cell(c,vl);while(vl.inc());
+}
+
+/** Calculates all of the Voronoi cells and sums their volumes. In most cases
+ * without walls, the sum of the Voronoi cell volumes should equal the volume
+ * of the container to numerical precision.
+ * \return The sum of all of the computed Voronoi volumes. */
+double container::sum_cell_volumes() {
+ voronoicell c;
+ double vol=0;
+ c_loop_all vl(*this);
+ if(vl.start()) do if(compute_cell(c,vl)) vol+=c.volume();while(vl.inc());
+ return vol;
+}
+
+/** Calculates all of the Voronoi cells and sums their volumes. In most cases
+ * without walls, the sum of the Voronoi cell volumes should equal the volume
+ * of the container to numerical precision.
+ * \return The sum of all of the computed Voronoi volumes. */
+double container_poly::sum_cell_volumes() {
+ voronoicell c;
+ double vol=0;
+ c_loop_all vl(*this);
+ if(vl.start()) do if(compute_cell(c,vl)) vol+=c.volume();while(vl.inc());
+ return vol;
+}
+
+/** This function tests to see if a given vector lies within the container
+ * bounds and any walls.
+ * \param[in] (x,y,z) the position vector to be tested.
+ * \return True if the point is inside the container, false if the point is
+ * outside. */
+bool container_base::point_inside(double x,double y,double z) {
+ if(x<ax||x>bx||y<ay||y>by||z<az||z>bz) return false;
+ return point_inside_walls(x,y,z);
+}
+
+/** Draws an outline of the domain in gnuplot format.
+ * \param[in] fp the file handle to write to. */
+void container_base::draw_domain_gnuplot(FILE *fp) {
+ fprintf(fp,"%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n",ax,ay,az,bx,ay,az,bx,by,az,ax,by,az);
+ fprintf(fp,"%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n",ax,by,bz,bx,by,bz,bx,ay,bz,ax,ay,bz);
+ fprintf(fp,"%g %g %g\n\n%g %g %g\n%g %g %g\n\n",ax,by,bz,ax,ay,az,ax,ay,bz);
+ fprintf(fp,"%g %g %g\n%g %g %g\n\n%g %g %g\n%g %g %g\n\n",bx,ay,az,bx,ay,bz,bx,by,az,bx,by,bz);
+}
+
+/** Draws an outline of the domain in POV-Ray format.
+ * \param[in] fp the file handle to write to. */
+void container_base::draw_domain_pov(FILE *fp) {
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",ax,ay,az,bx,ay,az,ax,by,az,bx,by,az);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",ax,by,bz,bx,by,bz,ax,ay,bz,bx,ay,bz);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",ax,ay,az,ax,by,az,bx,ay,az,bx,by,az);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",bx,ay,bz,bx,by,bz,ax,ay,bz,ax,by,bz);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",ax,ay,az,ax,ay,bz,bx,ay,az,bx,ay,bz);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",bx,by,az,bx,by,bz,ax,by,az,ax,by,bz);
+ fprintf(fp,"sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n"
+ "sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n",ax,ay,az,bx,ay,az,ax,by,az,bx,by,az);
+ fprintf(fp,"sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n"
+ "sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n",ax,ay,bz,bx,ay,bz,ax,by,bz,bx,by,bz);
+}
+
+
+/** The wall_list constructor sets up an array of pointers to wall classes. */
+wall_list::wall_list() : walls(new wall*[init_wall_size]), wep(walls), wel(walls+init_wall_size),
+ current_wall_size(init_wall_size) {}
+
+/** The wall_list destructor frees the array of pointers to the wall classes.
+ */
+wall_list::~wall_list() {
+ delete [] walls;
+}
+
+/** Adds all of the walls on another wall_list to this class.
+ * \param[in] wl a reference to the wall class. */
+void wall_list::add_wall(wall_list &wl) {
+ for(wall **wp=wl.walls;wp<wl.wep;wp++) add_wall(*wp);
+}
+
+/** Deallocates all of the wall classes pointed to by the wall_list. */
+void wall_list::deallocate() {
+ for(wall **wp=walls;wp<wep;wp++) delete *wp;
+}
+
+/** Increases the memory allocation for the walls array. */
+void wall_list::increase_wall_memory() {
+ current_wall_size<<=1;
+ if(current_wall_size>max_wall_size)
+ voro_fatal_error("Wall memory allocation exceeded absolute maximum",VOROPP_MEMORY_ERROR);
+ wall **nwalls=new wall*[current_wall_size],**nwp=nwalls,**wp=walls;
+ while(wp<wep) *(nwp++)=*(wp++);
+ delete [] walls;
+ walls=nwalls;wel=walls+current_wall_size;wep=nwp;
+}
+
+}
diff --git a/lib/voro++/src/container.hh b/lib/voro++/src/container.hh
new file mode 100644
index 000000000..09c55d864
--- /dev/null
+++ b/lib/voro++/src/container.hh
@@ -0,0 +1,687 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file container.hh
+ * \brief Header file for the container_base and related classes. */
+
+#ifndef VOROPP_CONTAINER_HH
+#define VOROPP_CONTAINER_HH
+
+#include <cstdio>
+#include <vector>
+
+#include "config.hh"
+#include "common.hh"
+#include "v_base.hh"
+#include "cell.hh"
+#include "c_loops.hh"
+#include "v_compute.hh"
+#include "rad_option.hh"
+
+namespace voro {
+
+/** \brief Pure virtual class from which wall objects are derived.
+ *
+ * This is a pure virtual class for a generic wall object. A wall object
+ * can be specified by deriving a new class from this and specifying the
+ * functions.*/
+class wall {
+ public:
+ virtual ~wall() {}
+ /** A pure virtual function for testing whether a point is
+ * inside the wall object. */
+ virtual bool point_inside(double x,double y,double z) = 0;
+ /** A pure virtual function for cutting a cell without
+ * neighbor-tracking with a wall. */
+ virtual bool cut_cell(voronoicell &c,double x,double y,double z) = 0;
+ /** A pure virtual function for cutting a cell with
+ * neighbor-tracking enabled with a wall. */
+ virtual bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) = 0;
+};
+
+/** \brief A class for storing a list of pointers to walls.
+ *
+ * This class stores a list of pointers to wall classes. It contains several
+ * simple routines that make use of the wall classes (such as telling whether a
+ * given position is inside all of the walls or not). It can be used by itself,
+ * but also forms part of container_base, for associating walls with this
+ * class. */
+class wall_list {
+ public:
+ /** An array holding pointers to wall objects. */
+ wall **walls;
+ /** A pointer to the next free position to add a wall pointer.
+ */
+ wall **wep;
+ wall_list();
+ ~wall_list();
+ /** Adds a wall to the list.
+ * \param[in] w the wall to add. */
+ inline void add_wall(wall *w) {
+ if(wep==wel) increase_wall_memory();
+ *(wep++)=w;
+ }
+ /** Adds a wall to the list.
+ * \param[in] w a reference to the wall to add. */
+ inline void add_wall(wall &w) {add_wall(&w);}
+ void add_wall(wall_list &wl);
+ /** Determines whether a given position is inside all of the
+ * walls on the list.
+ * \param[in] (x,y,z) the position to test.
+ * \return True if it is inside, false if it is outside. */
+ inline bool point_inside_walls(double x,double y,double z) {
+ for(wall **wp=walls;wp<wep;wp++) if(!((*wp)->point_inside(x,y,z))) return false;
+ return true;
+ }
+ /** Cuts a Voronoi cell by all of the walls currently on
+ * the list.
+ * \param[in] c a reference to the Voronoi cell class.
+ * \param[in] (x,y,z) the position of the cell.
+ * \return True if the cell still exists, false if the cell is
+ * deleted. */
+ template<class c_class>
+ bool apply_walls(c_class &c,double x,double y,double z) {
+ for(wall **wp=walls;wp<wep;wp++) if(!((*wp)->cut_cell(c,x,y,z))) return false;
+ return true;
+ }
+ void deallocate();
+ protected:
+ void increase_wall_memory();
+ /** A pointer to the limit of the walls array, used to
+ * determine when array is full. */
+ wall **wel;
+ /** The current amount of memory allocated for walls. */
+ int current_wall_size;
+};
+
+/** \brief Class for representing a particle system in a three-dimensional
+ * rectangular box.
+ *
+ * This class represents a system of particles in a three-dimensional
+ * rectangular box. Any combination of non-periodic and periodic coordinates
+ * can be used in the three coordinate directions. The class is not intended
+ * for direct use, but instead forms the base of the container and
+ * container_poly classes that add specialized routines for computing the
+ * regular and radical Voronoi tessellations respectively. It contains routines
+ * that are commonly between these two classes, such as those for drawing the
+ * domain, and placing particles within the internal data structure.
+ *
+ * The class is derived from the wall_list class, which encapsulates routines
+ * for associating walls with the container, and the voro_base class, which
+ * encapsulates routines about the underlying computational grid. */
+class container_base : public voro_base, public wall_list {
+ public:
+ /** The minimum x coordinate of the container. */
+ const double ax;
+ /** The maximum x coordinate of the container. */
+ const double bx;
+ /** The minimum y coordinate of the container. */
+ const double ay;
+ /** The maximum y coordinate of the container. */
+ const double by;
+ /** The minimum z coordinate of the container. */
+ const double az;
+ /** The maximum z coordinate of the container. */
+ const double bz;
+ /** A boolean value that determines if the x coordinate in
+ * periodic or not. */
+ const bool xperiodic;
+ /** A boolean value that determines if the y coordinate in
+ * periodic or not. */
+ const bool yperiodic;
+ /** A boolean value that determines if the z coordinate in
+ * periodic or not. */
+ const bool zperiodic;
+ /** This array holds the numerical IDs of each particle in each
+ * computational box. */
+ int **id;
+ /** A two dimensional array holding particle positions. For the
+ * derived container_poly class, this also holds particle
+ * radii. */
+ double **p;
+ /** This array holds the number of particles within each
+ * computational box of the container. */
+ int *co;
+ /** This array holds the maximum amount of particle memory for
+ * each computational box of the container. If the number of
+ * particles in a particular box ever approaches this limit,
+ * more is allocated using the add_particle_memory() function.
+ */
+ int *mem;
+ /** The amount of memory in the array structure for each
+ * particle. This is set to 3 when the basic class is
+ * initialized, so that the array holds (x,y,z) positions. If
+ * the container class is initialized as part of the derived
+ * class container_poly, then this is set to 4, to also hold
+ * the particle radii. */
+ const int ps;
+ container_base(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,
+ int init_mem,int ps_);
+ ~container_base();
+ bool point_inside(double x,double y,double z);
+ void region_count();
+ /** Initializes the Voronoi cell prior to a compute_cell
+ * operation for a specific particle being carried out by a
+ * voro_compute class. The cell is initialized to fill the
+ * entire container. For non-periodic coordinates, this is set
+ * by the position of the walls. For periodic coordinates, the
+ * space is equally divided in either direction from the
+ * particle's initial position. Plane cuts made by any walls
+ * that have been added are then applied to the cell.
+ * \param[in,out] c a reference to a voronoicell object.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within its block.
+ * \param[in] (ci,cj,ck) the coordinates of the block in the
+ * container coordinate system.
+ * \param[out] (i,j,k) the coordinates of the test block
+ * relative to the voro_compute
+ * coordinate system.
+ * \param[out] (x,y,z) the position of the particle.
+ * \param[out] disp a block displacement used internally by the
+ * compute_cell routine.
+ * \return False if the plane cuts applied by walls completely
+ * removed the cell, true otherwise. */
+ template<class v_cell>
+ inline bool initialize_voronoicell(v_cell &c,int ijk,int q,int ci,int cj,int ck,
+ int &i,int &j,int &k,double &x,double &y,double &z,int &disp) {
+ double x1,x2,y1,y2,z1,z2,*pp=p[ijk]+ps*q;
+ x=*(pp++);y=*(pp++);z=*pp;
+ if(xperiodic) {x1=-(x2=0.5*(bx-ax));i=nx;} else {x1=ax-x;x2=bx-x;i=ci;}
+ if(yperiodic) {y1=-(y2=0.5*(by-ay));j=ny;} else {y1=ay-y;y2=by-y;j=cj;}
+ if(zperiodic) {z1=-(z2=0.5*(bz-az));k=nz;} else {z1=az-z;z2=bz-z;k=ck;}
+ c.init(x1,x2,y1,y2,z1,z2);
+ if(!apply_walls(c,x,y,z)) return false;
+ disp=ijk-i-nx*(j+ny*k);
+ return true;
+ }
+ /** Initializes parameters for a find_voronoi_cell call within
+ * the voro_compute template.
+ * \param[in] (ci,cj,ck) the coordinates of the test block in
+ * the container coordinate system.
+ * \param[in] ijk the index of the test block
+ * \param[out] (i,j,k) the coordinates of the test block
+ * relative to the voro_compute
+ * coordinate system.
+ * \param[out] disp a block displacement used internally by the
+ * find_voronoi_cell routine. */
+ inline void initialize_search(int ci,int cj,int ck,int ijk,int &i,int &j,int &k,int &disp) {
+ i=xperiodic?nx:ci;
+ j=yperiodic?ny:cj;
+ k=zperiodic?nz:ck;
+ disp=ijk-i-nx*(j+ny*k);
+ }
+ /** Returns the position of a particle currently being computed
+ * relative to the computational block that it is within. It is
+ * used to select the optimal worklist entry to use.
+ * \param[in] (x,y,z) the position of the particle.
+ * \param[in] (ci,cj,ck) the block that the particle is within.
+ * \param[out] (fx,fy,fz) the position relative to the block.
+ */
+ inline void frac_pos(double x,double y,double z,double ci,double cj,double ck,
+ double &fx,double &fy,double &fz) {
+ fx=x-ax-boxx*ci;
+ fy=y-ay-boxy*cj;
+ fz=z-az-boxz*ck;
+ }
+ /** Calculates the index of block in the container structure
+ * corresponding to given coordinates.
+ * \param[in] (ci,cj,ck) the coordinates of the original block
+ * in the current computation, relative
+ * to the container coordinate system.
+ * \param[in] (ei,ej,ek) the displacement of the current block
+ * from the original block.
+ * \param[in,out] (qx,qy,qz) the periodic displacement that
+ * must be added to the particles
+ * within the computed block.
+ * \param[in] disp a block displacement used internally by the
+ * find_voronoi_cell and compute_cell routines.
+ * \return The block index. */
+ inline int region_index(int ci,int cj,int ck,int ei,int ej,int ek,double &qx,double &qy,double &qz,int &disp) {
+ if(xperiodic) {if(ci+ei<nx) {ei+=nx;qx=-(bx-ax);} else if(ci+ei>=(nx<<1)) {ei-=nx;qx=bx-ax;} else qx=0;}
+ if(yperiodic) {if(cj+ej<ny) {ej+=ny;qy=-(by-ay);} else if(cj+ej>=(ny<<1)) {ej-=ny;qy=by-ay;} else qy=0;}
+ if(zperiodic) {if(ck+ek<nz) {ek+=nz;qz=-(bz-az);} else if(ck+ek>=(nz<<1)) {ek-=nz;qz=bz-az;} else qz=0;}
+ return disp+ei+nx*(ej+ny*ek);
+ }
+ void draw_domain_gnuplot(FILE *fp=stdout);
+ /** Draws an outline of the domain in Gnuplot format.
+ * \param[in] filename the filename to write to. */
+ inline void draw_domain_gnuplot(const char* filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_domain_gnuplot(fp);
+ fclose(fp);
+ }
+ void draw_domain_pov(FILE *fp=stdout);
+ /** Draws an outline of the domain in Gnuplot format.
+ * \param[in] filename the filename to write to. */
+ inline void draw_domain_pov(const char* filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_domain_pov(fp);
+ fclose(fp);
+ }
+ /** Sums up the total number of stored particles.
+ * \return The number of particles. */
+ inline int total_particles() {
+ int tp=*co;
+ for(int *cop=co+1;cop<co+nxyz;cop++) tp+=*cop;
+ return tp;
+ }
+ protected:
+ void add_particle_memory(int i);
+ inline bool put_locate_block(int &ijk,double &x,double &y,double &z);
+ inline bool put_remap(int &ijk,double &x,double &y,double &z);
+ inline bool remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk);
+};
+
+/** \brief Extension of the container_base class for computing regular Voronoi
+ * tessellations.
+ *
+ * This class is an extension of the container_base class that has routines
+ * specifically for computing the regular Voronoi tessellation with no
+ * dependence on particle radii. */
+class container : public container_base, public radius_mono {
+ public:
+ container(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int init_mem);
+ void clear();
+ void put(int n,double x,double y,double z);
+ void put(particle_order &vo,int n,double x,double y,double z);
+ void import(FILE *fp=stdin);
+ void import(particle_order &vo,FILE *fp=stdin);
+ /** Imports a list of particles from an open file stream into
+ * the container. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. If the
+ * file cannot be successfully read, then the routine causes a
+ * fatal error.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ /** Imports a list of particles from an open file stream into
+ * the container. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. In
+ * addition, the order in which particles are read is saved
+ * into an ordering class. If the file cannot be successfully
+ * read, then the routine causes a fatal error.
+ * \param[in,out] vo the ordering class to use.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(particle_order &vo,const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(vo,fp);
+ fclose(fp);
+ }
+ void compute_all_cells();
+ double sum_cell_volumes();
+ /** Dumps particle IDs and positions to a file.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+3*vl.q;
+ fprintf(fp,"%d %g %g %g\n",id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
+ } while(vl.inc());
+ }
+ /** Dumps all of the particle IDs and positions to a file.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_particles(vl,fp);
+ }
+ /** Dumps all of the particle IDs and positions to a file.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles(fp);
+ fclose(fp);
+ }
+ /** Dumps particle positions in POV-Ray format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles_pov(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+3*vl.q;
+ fprintf(fp,"// id %d\nsphere{<%g,%g,%g>,s}\n",
+ id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
+ } while(vl.inc());
+ }
+ /** Dumps all particle positions in POV-Ray format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles_pov(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_particles_pov(vl,fp);
+ }
+ /** Dumps all particle positions in POV-Ray format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles_pov(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_gnuplot(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_gnuplot(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_gnuplot(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_cells_gnuplot(vl,fp);
+ }
+ /** Computes all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_gnuplot(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_gnuplot(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_pov(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ fprintf(fp,"// cell %d\n",id[vl.ijk][vl.q]);
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_pov(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_pov(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_cells_pov(vl,fp);
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_pov(fp);
+ fclose(fp);
+ }
+ /** Computes the Voronoi cells and saves customized information
+ * about them.
+ * \param[in] vl the loop class to use.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void print_custom(c_loop &vl,const char *format,FILE *fp) {
+ int ijk,q;double *pp;
+ if(contains_neighbor(format)) {
+ voronoicell_neighbor c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
+ } while(vl.inc());
+ } else {
+ voronoicell c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
+ } while(vl.inc());
+ }
+ }
+ void print_custom(const char *format,FILE *fp=stdout);
+ void print_custom(const char *format,const char *filename);
+ bool find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid);
+ /** Computes the Voronoi cell for a particle currently being
+ * referenced by a loop class.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] vl the loop class to use.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed, if it is removed entirely by a wall or boundary
+ * condition, then the routine returns false. */
+ template<class v_cell,class c_loop>
+ inline bool compute_cell(v_cell &c,c_loop &vl) {
+ return vc.compute_cell(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);
+ }
+ /** Computes the Voronoi cell for given particle.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed, if it is removed entirely by a wall or boundary
+ * condition, then the routine returns false. */
+ template<class v_cell>
+ inline bool compute_cell(v_cell &c,int ijk,int q) {
+ int k=ijk/nxy,ijkt=ijk-nxy*k,j=ijkt/nx,i=ijkt-j*nx;
+ return vc.compute_cell(c,ijk,q,i,j,k);
+ }
+ private:
+ voro_compute<container> vc;
+ friend class voro_compute<container>;
+};
+
+/** \brief Extension of the container_base class for computing radical Voronoi
+ * tessellations.
+ *
+ * This class is an extension of container_base class that has routines
+ * specifically for computing the radical Voronoi tessellation that depends on
+ * the particle radii. */
+class container_poly : public container_base, public radius_poly {
+ public:
+ container_poly(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ int nx_,int ny_,int nz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int init_mem);
+ void clear();
+ void put(int n,double x,double y,double z,double r);
+ void put(particle_order &vo,int n,double x,double y,double z,double r);
+ void import(FILE *fp=stdin);
+ void import(particle_order &vo,FILE *fp=stdin);
+ /** Imports a list of particles from an open file stream into
+ * the container_poly class. Entries of five numbers (Particle
+ * ID, x position, y position, z position, radius) are searched
+ * for. If the file cannot be successfully read, then the
+ * routine causes a fatal error.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ /** Imports a list of particles from an open file stream into
+ * the container_poly class. Entries of five numbers (Particle
+ * ID, x position, y position, z position, radius) are searched
+ * for. In addition, the order in which particles are read is
+ * saved into an ordering class. If the file cannot be
+ * successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo the ordering class to use.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(particle_order &vo,const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(vo,fp);
+ fclose(fp);
+ }
+ void compute_all_cells();
+ double sum_cell_volumes();
+ /** Dumps particle IDs, positions and radii to a file.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+4*vl.q;
+ fprintf(fp,"%d %g %g %g %g\n",id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
+ } while(vl.inc());
+ }
+ /** Dumps all of the particle IDs, positions and radii to a
+ * file.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_particles(vl,fp);
+ }
+ /** Dumps all of the particle IDs, positions and radii to a
+ * file.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles(fp);
+ fclose(fp);
+ }
+ /** Dumps particle positions in POV-Ray format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles_pov(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+4*vl.q;
+ fprintf(fp,"// id %d\nsphere{<%g,%g,%g>,%g}\n",
+ id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
+ } while(vl.inc());
+ }
+ /** Dumps all the particle positions in POV-Ray format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles_pov(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_particles_pov(vl,fp);
+ }
+ /** Dumps all the particle positions in POV-Ray format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles_pov(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_gnuplot(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_gnuplot(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Compute all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_gnuplot(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_cells_gnuplot(vl,fp);
+ }
+ /** Compute all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_gnuplot(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_gnuplot(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_pov(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ fprintf(fp,"// cell %d\n",id[vl.ijk][vl.q]);
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_pov(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_pov(FILE *fp=stdout) {
+ c_loop_all vl(*this);
+ draw_cells_pov(vl,fp);
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_pov(fp);
+ fclose(fp);
+ }
+ /** Computes the Voronoi cells and saves customized information
+ * about them.
+ * \param[in] vl the loop class to use.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void print_custom(c_loop &vl,const char *format,FILE *fp) {
+ int ijk,q;double *pp;
+ if(contains_neighbor(format)) {
+ voronoicell_neighbor c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],pp[3],fp);
+ } while(vl.inc());
+ } else {
+ voronoicell c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],pp[3],fp);
+ } while(vl.inc());
+ }
+ }
+ /** Computes the Voronoi cell for a particle currently being
+ * referenced by a loop class.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] vl the loop class to use.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed, if it is removed entirely by a wall or boundary
+ * condition, then the routine returns false. */
+ template<class v_cell,class c_loop>
+ inline bool compute_cell(v_cell &c,c_loop &vl) {
+ return vc.compute_cell(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);
+ }
+ /** Computes the Voronoi cell for given particle.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed, if it is removed entirely by a wall or boundary
+ * condition, then the routine returns false. */
+ template<class v_cell>
+ inline bool compute_cell(v_cell &c,int ijk,int q) {
+ int k=ijk/nxy,ijkt=ijk-nxy*k,j=ijkt/nx,i=ijkt-j*nx;
+ return vc.compute_cell(c,ijk,q,i,j,k);
+ }
+ void print_custom(const char *format,FILE *fp=stdout);
+ void print_custom(const char *format,const char *filename);
+ bool find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid);
+ private:
+ voro_compute<container_poly> vc;
+ friend class voro_compute<container_poly>;
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/container_prd.cc b/lib/voro++/src/container_prd.cc
new file mode 100644
index 000000000..68c31a3cd
--- /dev/null
+++ b/lib/voro++/src/container_prd.cc
@@ -0,0 +1,768 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file container_prd.cc
+ * \brief Function implementations for the container_periodic_base and
+ * related classes. */
+
+#include "container_prd.hh"
+
+namespace voro {
+
+/** The class constructor sets up the geometry of container, initializing the
+ * minimum and maximum coordinates in each direction, and setting whether each
+ * direction is periodic or not. It divides the container into a rectangular
+ * grid of blocks, and allocates memory for each of these for storing particle
+ * positions and IDs.
+ * \param[in] (bx_) The x coordinate of the first unit vector.
+ * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.
+ * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit
+ * vector.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] init_mem_ the initial memory allocation for each block.
+ * \param[in] ps_ the number of floating point entries to store for each
+ * particle. */
+container_periodic_base::container_periodic_base(double bx_,double bxy_,double by_,
+ double bxz_,double byz_,double bz_,int nx_,int ny_,int nz_,int init_mem_,int ps_)
+ : unitcell(bx_,bxy_,by_,bxz_,byz_,bz_), voro_base(nx_,ny_,nz_,bx_/nx_,by_/ny_,bz_/nz_),
+ ey(int(max_uv_y*ysp+1)), ez(int(max_uv_z*zsp+1)), wy(ny+ey), wz(nz+ez),
+ oy(ny+2*ey), oz(nz+2*ez), oxyz(nx*oy*oz), id(new int*[oxyz]), p(new double*[oxyz]),
+ co(new int[oxyz]), mem(new int[oxyz]), img(new char[oxyz]), init_mem(init_mem_), ps(ps_) {
+ int i,j,k,l;
+
+ // Clear the global arrays
+ int *pp=co;while(pp<co+oxyz) *(pp++)=0;
+ pp=mem;while(pp<mem+oxyz) *(pp++)=0;
+ char *cp=img;while(cp<img+oxyz) *(cp++)=0;
+
+ // Set up memory for the blocks in the primary domain
+ for(k=ez;k<wz;k++) for(j=ey;j<wy;j++) for(i=0;i<nx;i++) {
+ l=i+nx*(j+oy*k);
+ mem[l]=init_mem;
+ id[l]=new int[init_mem];
+ p[l]=new double[ps*init_mem];
+ }
+}
+
+/** The container destructor frees the dynamically allocated memory. */
+container_periodic_base::~container_periodic_base() {
+ for(int l=oxyz-1;l>=0;l--) if(mem[l]>0) {
+ delete [] p[l];
+ delete [] id[l];
+ }
+ delete [] img;
+ delete [] mem;
+ delete [] co;
+ delete [] id;
+ delete [] p;
+}
+
+/** The class constructor sets up the geometry of container.
+ * \param[in] (bx_) The x coordinate of the first unit vector.
+ * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.
+ * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit
+ * vector.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] init_mem_ the initial memory allocation for each block. */
+container_periodic::container_periodic(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_,
+ int nx_,int ny_,int nz_,int init_mem_)
+ : container_periodic_base(bx_,bxy_,by_,bxz_,byz_,bz_,nx_,ny_,nz_,init_mem_,3),
+ vc(*this,2*nx_+1,2*ey+1,2*ez+1) {}
+
+/** The class constructor sets up the geometry of container.
+ * \param[in] (bx_) The x coordinate of the first unit vector.
+ * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.
+ * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit
+ * vector.
+ * \param[in] (nx_,ny_,nz_) the number of grid blocks in each of the three
+ * coordinate directions.
+ * \param[in] init_mem_ the initial memory allocation for each block. */
+container_periodic_poly::container_periodic_poly(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_,
+ int nx_,int ny_,int nz_,int init_mem_)
+ : container_periodic_base(bx_,bxy_,by_,bxz_,byz_,bz_,nx_,ny_,nz_,init_mem_,4),
+ vc(*this,2*nx_+1,2*ey+1,2*ez+1) {ppr=p;}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle. */
+void container_periodic::put(int n,double x,double y,double z) {
+ int ijk;
+ put_locate_block(ijk,x,y,z);
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+3*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*pp=z;
+}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle. */
+void container_periodic_poly::put(int n,double x,double y,double z,double r) {
+ int ijk;
+ put_locate_block(ijk,x,y,z);
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+4*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;
+ if(max_radius<r) max_radius=r;
+}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[out] (ai,aj,ak) the periodic image displacement that the particle is
+ * in, with (0,0,0) corresponding to the primary domain.
+ */
+void container_periodic::put(int n,double x,double y,double z,int &ai,int &aj,int &ak) {
+ int ijk;
+ put_locate_block(ijk,x,y,z,ai,aj,ak);
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+3*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*pp=z;
+}
+
+/** Put a particle into the correct region of the container.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle.
+ * \param[out] (ai,aj,ak) the periodic image displacement that the particle is
+ * in, with (0,0,0) corresponding to the primary domain.
+ */
+void container_periodic_poly::put(int n,double x,double y,double z,double r,int &ai,int &aj,int &ak) {
+ int ijk;
+ put_locate_block(ijk,x,y,z,ai,aj,ak);
+ id[ijk][co[ijk]]=n;
+ double *pp=p[ijk]+4*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;
+ if(max_radius<r) max_radius=r;
+}
+
+/** Put a particle into the correct region of the container, also recording
+ * into which region it was stored.
+ * \param[in] vo the ordering class in which to record the region.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle. */
+void container_periodic::put(particle_order &vo,int n,double x,double y,double z) {
+ int ijk;
+ put_locate_block(ijk,x,y,z);
+ id[ijk][co[ijk]]=n;
+ vo.add(ijk,co[ijk]);
+ double *pp=p[ijk]+3*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*pp=z;
+}
+
+/** Put a particle into the correct region of the container, also recording
+ * into which region it was stored.
+ * \param[in] vo the ordering class in which to record the region.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle. */
+void container_periodic_poly::put(particle_order &vo,int n,double x,double y,double z,double r) {
+ int ijk;
+ put_locate_block(ijk,x,y,z);
+ id[ijk][co[ijk]]=n;
+ vo.add(ijk,co[ijk]);
+ double *pp=p[ijk]+4*co[ijk]++;
+ *(pp++)=x;*(pp++)=y;*(pp++)=z;*pp=r;
+ if(max_radius<r) max_radius=r;
+}
+
+/** Takes a particle position vector and computes the region index into which
+ * it should be stored. If the container is periodic, then the routine also
+ * maps the particle position to ensure it is in the primary domain. If the
+ * container is not periodic, the routine bails out.
+ * \param[out] ijk the region index.
+ * \param[in,out] (x,y,z) the particle position, remapped into the primary
+ * domain if necessary.
+ * \return True if the particle can be successfully placed into the container,
+ * false otherwise. */
+void container_periodic_base::put_locate_block(int &ijk,double &x,double &y,double &z) {
+
+ // Remap particle in the z direction if necessary
+ int k=step_int(z*zsp);
+ if(k<0||k>=nz) {
+ int ak=step_div(k,nz);
+ z-=ak*bz;y-=ak*byz;x-=ak*bxz;k-=ak*nz;
+ }
+
+ // Remap particle in the y direction if necessary
+ int j=step_int(y*ysp);
+ if(j<0||j>=ny) {
+ int aj=step_div(j,ny);
+ y-=aj*by;x-=aj*bxy;j-=aj*ny;
+ }
+
+ // Remap particle in the x direction if necessary
+ ijk=step_int(x*xsp);
+ if(ijk<0||ijk>=nx) {
+ int ai=step_div(ijk,nx);
+ x-=ai*bx;ijk-=ai*nx;
+ }
+
+ // Compute the block index and check memory allocation
+ j+=ey;k+=ez;
+ ijk+=nx*(j+oy*k);
+ if(co[ijk]==mem[ijk]) add_particle_memory(ijk);
+}
+
+/** Takes a particle position vector and computes the region index into which
+ * it should be stored. If the container is periodic, then the routine also
+ * maps the particle position to ensure it is in the primary domain. If the
+ * container is not periodic, the routine bails out.
+ * \param[out] ijk the region index.
+ * \param[in,out] (x,y,z) the particle position, remapped into the primary
+ * domain if necessary.
+ * \param[out] (ai,aj,ak) the periodic image displacement that the particle is
+ * in, with (0,0,0) corresponding to the primary domain.
+ * \return True if the particle can be successfully placed into the container,
+ * false otherwise. */
+void container_periodic_base::put_locate_block(int &ijk,double &x,double &y,double &z,int &ai,int &aj,int &ak) {
+
+ // Remap particle in the z direction if necessary
+ int k=step_int(z*zsp);
+ if(k<0||k>=nz) {
+ ak=step_div(k,nz);
+ z-=ak*bz;y-=ak*byz;x-=ak*bxz;k-=ak*nz;
+ } else ak=0;
+
+ // Remap particle in the y direction if necessary
+ int j=step_int(y*ysp);
+ if(j<0||j>=ny) {
+ aj=step_div(j,ny);
+ y-=aj*by;x-=aj*bxy;j-=aj*ny;
+ } else aj=0;
+
+ // Remap particle in the x direction if necessary
+ ijk=step_int(x*xsp);
+ if(ijk<0||ijk>=nx) {
+ ai=step_div(ijk,nx);
+ x-=ai*bx;ijk-=ai*nx;
+ } else ai=0;
+
+ // Compute the block index and check memory allocation
+ j+=ey;k+=ez;
+ ijk+=nx*(j+oy*k);
+ if(co[ijk]==mem[ijk]) add_particle_memory(ijk);
+}
+
+/** Takes a position vector and remaps it into the primary domain.
+ * \param[out] (ai,aj,ak) the periodic image displacement that the vector is in,
+ * with (0,0,0) corresponding to the primary domain.
+ * \param[out] (ci,cj,ck) the index of the block that the position vector is
+ * within, once it has been remapped.
+ * \param[in,out] (x,y,z) the position vector to consider, which is remapped
+ * into the primary domain during the routine.
+ * \param[out] ijk the block index that the vector is within. */
+inline void container_periodic_base::remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk) {
+
+ // Remap particle in the z direction if necessary
+ ck=step_int(z*zsp);
+ if(ck<0||ck>=nz) {
+ ak=step_div(ck,nz);
+ z-=ak*bz;y-=ak*byz;x-=ak*bxz;ck-=ak*nz;
+ } else ak=0;
+
+ // Remap particle in the y direction if necessary
+ cj=step_int(y*ysp);
+ if(cj<0||cj>=ny) {
+ aj=step_div(cj,ny);
+ y-=aj*by;x-=aj*bxy;cj-=aj*ny;
+ } else aj=0;
+
+ // Remap particle in the x direction if necessary
+ ci=step_int(x*xsp);
+ if(ci<0||ci>=nx) {
+ ai=step_div(ci,nx);
+ x-=ai*bx;ci-=ai*nx;
+ } else ai=0;
+
+ cj+=ey;ck+=ez;
+ ijk=ci+nx*(cj+oy*ck);
+}
+
+/** Takes a vector and finds the particle whose Voronoi cell contains that
+ * vector. This is equivalent to finding the particle which is nearest to the
+ * vector.
+ * \param[in] (x,y,z) the vector to test.
+ * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell
+ * contains the vector. This may point to a particle in
+ * a periodic image of the primary domain.
+ * \param[out] pid the ID of the particle.
+ * \return True if a particle was found. If the container has no particles,
+ * then the search will not find a Voronoi cell and false is returned. */
+bool container_periodic::find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid) {
+ int ai,aj,ak,ci,cj,ck,ijk;
+ particle_record w;
+ double mrs;
+
+ // Remap the vector into the primary domain and then search for the
+ // Voronoi cell that it is within
+ remap(ai,aj,ak,ci,cj,ck,x,y,z,ijk);
+ vc.find_voronoi_cell(x,y,z,ci,cj,ck,ijk,w,mrs);
+
+ if(w.ijk!=-1) {
+
+ // Assemble the position vector of the particle to be returned,
+ // applying a periodic remapping if necessary
+ ci+=w.di;if(ci<0||ci>=nx) ai+=step_div(ci,nx);
+ rx=p[w.ijk][3*w.l]+ak*bxz+aj*bxy+ai*bx;
+ ry=p[w.ijk][3*w.l+1]+ak*byz+aj*by;
+ rz=p[w.ijk][3*w.l+2]+ak*bz;
+ pid=id[w.ijk][w.l];
+ return true;
+ }
+ return false;
+}
+
+/** Takes a vector and finds the particle whose Voronoi cell contains that
+ * vector. Additional wall classes are not considered by this routine.
+ * \param[in] (x,y,z) the vector to test.
+ * \param[out] (rx,ry,rz) the position of the particle whose Voronoi cell
+ * contains the vector. If the container is periodic,
+ * this may point to a particle in a periodic image of
+ * the primary domain.
+ * \param[out] pid the ID of the particle.
+ * \return True if a particle was found. If the container has no particles,
+ * then the search will not find a Voronoi cell and false is returned. */
+bool container_periodic_poly::find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid) {
+ int ai,aj,ak,ci,cj,ck,ijk;
+ particle_record w;
+ double mrs;
+
+ // Remap the vector into the primary domain and then search for the
+ // Voronoi cell that it is within
+ remap(ai,aj,ak,ci,cj,ck,x,y,z,ijk);
+ vc.find_voronoi_cell(x,y,z,ci,cj,ck,ijk,w,mrs);
+
+ if(w.ijk!=-1) {
+
+ // Assemble the position vector of the particle to be returned,
+ // applying a periodic remapping if necessary
+ ci+=w.di;if(ci<0||ci>=nx) ai+=step_div(ci,nx);
+ rx=p[w.ijk][4*w.l]+ak*bxz+aj*bxy+ai*bx;
+ ry=p[w.ijk][4*w.l+1]+ak*byz+aj*by;
+ rz=p[w.ijk][4*w.l+2]+ak*bz;
+ pid=id[w.ijk][w.l];
+ return true;
+ }
+ return false;
+}
+
+/** Increase memory for a particular region.
+ * \param[in] i the index of the region to reallocate. */
+void container_periodic_base::add_particle_memory(int i) {
+
+ // Handle the case when no memory has been allocated for this block
+ if(mem[i]==0) {
+ mem[i]=init_mem;
+ id[i]=new int[init_mem];
+ p[i]=new double[ps*init_mem];
+ return;
+ }
+
+ // Otherwise, double the memory allocation for this block. Carry out a
+ // check on the memory allocation size, and print a status message if
+ // requested.
+ int l,nmem(mem[i]<<1);
+ if(nmem>max_particle_memory)
+ voro_fatal_error("Absolute maximum memory allocation exceeded",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=3
+ fprintf(stderr,"Particle memory in region %d scaled up to %d\n",i,nmem);
+#endif
+
+ // Allocate new memory and copy in the contents of the old arrays
+ int *idp=new int[nmem];
+ for(l=0;l<co[i];l++) idp[l]=id[i][l];
+ double *pp=new double[ps*nmem];
+ for(l=0;l<ps*co[i];l++) pp[l]=p[i][l];
+
+ // Update pointers and delete old arrays
+ mem[i]=nmem;
+ delete [] id[i];id[i]=idp;
+ delete [] p[i];p[i]=pp;
+}
+
+/** Import a list of particles from an open file stream into the container.
+ * Entries of four numbers (Particle ID, x position, y position, z position)
+ * are searched for. If the file cannot be successfully read, then the routine
+ * causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void container_periodic::import(FILE *fp) {
+ int i,j;
+ double x,y,z;
+ while((j=fscanf(fp,"%d %lg %lg %lg",&i,&x,&y,&z))==4) put(i,x,y,z);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream, also storing the order
+ * of that the particles are read. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. If the file cannot be
+ * successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo a reference to an ordering class to use.
+ * \param[in] fp the file handle to read from. */
+void container_periodic::import(particle_order &vo,FILE *fp) {
+ int i,j;
+ double x,y,z;
+ while((j=fscanf(fp,"%d %lg %lg %lg",&i,&x,&y,&z))==4) put(vo,i,x,y,z);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream into the container.
+ * Entries of five numbers (Particle ID, x position, y position, z position,
+ * radius) are searched for. If the file cannot be successfully read, then the
+ * routine causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void container_periodic_poly::import(FILE *fp) {
+ int i,j;
+ double x,y,z,r;
+ while((j=fscanf(fp,"%d %lg %lg %lg %lg",&i,&x,&y,&z,&r))==5) put(i,x,y,z,r);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream, also storing the order
+ * of that the particles are read. Entries of four numbers (Particle ID, x
+ * position, y position, z position, radius) are searched for. If the file
+ * cannot be successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo a reference to an ordering class to use.
+ * \param[in] fp the file handle to read from. */
+void container_periodic_poly::import(particle_order &vo,FILE *fp) {
+ int i,j;
+ double x,y,z,r;
+ while((j=fscanf(fp,"%d %lg %lg %lg %lg",&i,&x,&y,&z,&r))==5) put(vo,i,x,y,z,r);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Outputs the a list of all the container regions along with the number of
+ * particles stored within each. */
+void container_periodic_base::region_count() {
+ int i,j,k,*cop=co;
+ for(k=0;k<nz;k++) for(j=0;j<ny;j++) for(i=0;i<nx;i++)
+ printf("Region (%d,%d,%d): %d particles\n",i,j,k,*(cop++));
+}
+
+/** Clears a container of particles. */
+void container_periodic::clear() {
+ for(int *cop=co;cop<co+nxyz;cop++) *cop=0;
+}
+
+/** Clears a container of particles, also clearing resetting the maximum radius
+ * to zero. */
+void container_periodic_poly::clear() {
+ for(int *cop=co;cop<co+nxyz;cop++) *cop=0;
+ max_radius=0;
+}
+
+/** Computes all the Voronoi cells and saves customized information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+void container_periodic::print_custom(const char *format,FILE *fp) {
+ c_loop_all_periodic vl(*this);
+ print_custom(vl,format,fp);
+}
+
+/** Computes all the Voronoi cells and saves customized
+ * information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+void container_periodic_poly::print_custom(const char *format,FILE *fp) {
+ c_loop_all_periodic vl(*this);
+ print_custom(vl,format,fp);
+}
+
+/** Computes all the Voronoi cells and saves customized information about them.
+ * \param[in] format the custom output string to use.
+ * \param[in] filename the name of the file to write to. */
+void container_periodic::print_custom(const char *format,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ print_custom(format,fp);
+ fclose(fp);
+}
+
+/** Computes all the Voronoi cells and saves customized
+ * information about them
+ * \param[in] format the custom output string to use.
+ * \param[in] filename the name of the file to write to. */
+void container_periodic_poly::print_custom(const char *format,const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ print_custom(format,fp);
+ fclose(fp);
+}
+
+/** Computes all of the Voronoi cells in the container, but does nothing
+ * with the output. It is useful for measuring the pure computation time
+ * of the Voronoi algorithm, without any additional calculations such as
+ * volume evaluation or cell output. */
+void container_periodic::compute_all_cells() {
+ voronoicell c;
+ c_loop_all_periodic vl(*this);
+ if(vl.start()) do compute_cell(c,vl);
+ while(vl.inc());
+}
+
+/** Computes all of the Voronoi cells in the container, but does nothing
+ * with the output. It is useful for measuring the pure computation time
+ * of the Voronoi algorithm, without any additional calculations such as
+ * volume evaluation or cell output. */
+void container_periodic_poly::compute_all_cells() {
+ voronoicell c;
+ c_loop_all_periodic vl(*this);
+ if(vl.start()) do compute_cell(c,vl);while(vl.inc());
+}
+
+/** Calculates all of the Voronoi cells and sums their volumes. In most cases
+ * without walls, the sum of the Voronoi cell volumes should equal the volume
+ * of the container to numerical precision.
+ * \return The sum of all of the computed Voronoi volumes. */
+double container_periodic::sum_cell_volumes() {
+ voronoicell c;
+ double vol=0;
+ c_loop_all_periodic vl(*this);
+ if(vl.start()) do if(compute_cell(c,vl)) vol+=c.volume();while(vl.inc());
+ return vol;
+}
+
+/** Calculates all of the Voronoi cells and sums their volumes. In most cases
+ * without walls, the sum of the Voronoi cell volumes should equal the volume
+ * of the container to numerical precision.
+ * \return The sum of all of the computed Voronoi volumes. */
+double container_periodic_poly::sum_cell_volumes() {
+ voronoicell c;
+ double vol=0;
+ c_loop_all_periodic vl(*this);
+ if(vl.start()) do if(compute_cell(c,vl)) vol+=c.volume();while(vl.inc());
+ return vol;
+}
+
+/** This routine creates all periodic images of the particles. It is meant for
+ * diagnostic purposes only, since usually periodic images are dynamically
+ * created in when they are referenced. */
+void container_periodic_base::create_all_images() {
+ int i,j,k;
+ for(k=0;k<oz;k++) for(j=0;j<oy;j++) for(i=0;i<nx;i++) create_periodic_image(i,j,k);
+}
+
+/** Checks that the particles within each block lie within that block's bounds.
+ * This is useful for diagnosing problems with periodic image computation. */
+void container_periodic_base::check_compartmentalized() {
+ int c,l,i,j,k;
+ double mix,miy,miz,max,may,maz,*pp;
+ for(k=l=0;k<oz;k++) for(j=0;j<oy;j++) for(i=0;i<nx;i++,l++) if(mem[l]>0) {
+
+ // Compute the block's bounds, adding in a small tolerance
+ mix=i*boxx-tolerance;max=mix+boxx+tolerance;
+ miy=(j-ey)*boxy-tolerance;may=miy+boxy+tolerance;
+ miz=(k-ez)*boxz-tolerance;maz=miz+boxz+tolerance;
+
+ // Print entries for any particles that lie outside the block's
+ // bounds
+ for(pp=p[l],c=0;c<co[l];c++,pp+=ps) if(*pp<mix||*pp>max||pp[1]<miy||pp[1]>may||pp[2]<miz||pp[2]>maz)
+ printf("%d %d %d %d %f %f %f %f %f %f %f %f %f\n",
+ id[l][c],i,j,k,*pp,pp[1],pp[2],mix,max,miy,may,miz,maz);
+ }
+}
+
+/** Creates particles within an image block that is aligned with the primary
+ * domain in the z axis. In this case, the image block may be comprised of
+ * particles from two primary blocks. The routine considers these two primary
+ * blocks, and adds the needed particles to the image. The remaining particles
+ * from the primary blocks are also filled into the neighboring images.
+ * \param[in] (di,dj,dk) the index of the block to consider. The z index must
+ * satisfy ez<=dk<wz. */
+void container_periodic_base::create_side_image(int di,int dj,int dk) {
+ int l,dijk=di+nx*(dj+oy*dk),odijk,ima=step_div(dj-ey,ny);
+ int qua=di+step_int(-ima*bxy*xsp),quadiv=step_div(qua,nx);
+ int fi=qua-quadiv*nx,fijk=fi+nx*(dj-ima*ny+oy*dk);
+ double dis=ima*bxy+quadiv*bx,switchx=di*boxx-ima*bxy-quadiv*bx,adis;
+
+ // Left image computation
+ if((img[dijk]&1)==0) {
+ if(di>0) {
+ odijk=dijk-1;adis=dis;
+ } else {
+ odijk=dijk+nx-1;adis=dis+bx;
+ }
+ img[odijk]|=2;
+ for(l=0;l<co[fijk];l++) {
+ if(p[fijk][ps*l]>switchx) put_image(dijk,fijk,l,dis,by*ima,0);
+ else put_image(odijk,fijk,l,adis,by*ima,0);
+ }
+ }
+
+ // Right image computation
+ if((img[dijk]&2)==0) {
+ if(fi==nx-1) {
+ fijk+=1-nx;switchx+=(1-nx)*boxx;dis+=bx;
+ } else {
+ fijk++;switchx+=boxx;
+ }
+ if(di==nx-1) {
+ odijk=dijk-nx+1;adis=dis-bx;
+ } else {
+ odijk=dijk+1;adis=dis;
+ }
+ img[odijk]|=1;
+ for(l=0;l<co[fijk];l++) {
+ if(p[fijk][ps*l]<switchx) put_image(dijk,fijk,l,dis,by*ima,0);
+ else put_image(odijk,fijk,l,adis,by*ima,0);
+ }
+ }
+
+ // All contributions to the block now added, so set both two bits of
+ // the image information
+ img[dijk]=3;
+}
+
+/** Creates particles within an image block that is not aligned with the
+ * primary domain in the z axis. In this case, the image block may be comprised
+ * of particles from four primary blocks. The routine considers these four
+ * primary blocks, and adds the needed particles to the image. The remaining
+ * particles from the primary blocks are also filled into the neighboring
+ * images.
+ * \param[in] (di,dj,dk) the index of the block to consider. The z index must
+ * satisfy dk<ez or dk>=wz. */
+void container_periodic_base::create_vertical_image(int di,int dj,int dk) {
+ int l,dijk=di+nx*(dj+oy*dk),dijkl,dijkr,ima=step_div(dk-ez,nz);
+ int qj=dj+step_int(-ima*byz*ysp),qjdiv=step_div(qj-ey,ny);
+ int qi=di+step_int((-ima*bxz-qjdiv*bxy)*xsp),qidiv=step_div(qi,nx);
+ int fi=qi-qidiv*nx,fj=qj-qjdiv*ny,fijk=fi+nx*(fj+oy*(dk-ima*nz)),fijk2;
+ double disy=ima*byz+qjdiv*by,switchy=(dj-ey)*boxy-ima*byz-qjdiv*by;
+ double disx=ima*bxz+qjdiv*bxy+qidiv*bx,switchx=di*boxx-ima*bxz-qjdiv*bxy-qidiv*bx;
+ double switchx2,disxl,disxr,disx2,disxr2;
+
+ if(di==0) {dijkl=dijk+nx-1;disxl=disx+bx;}
+ else {dijkl=dijk-1;disxl=disx;}
+
+ if(di==nx-1) {dijkr=dijk-nx+1;disxr=disx-bx;}
+ else {dijkr=dijk+1;disxr=disx;}
+
+ // Down-left image computation
+ bool y_exist=dj!=0;
+ if((img[dijk]&1)==0) {
+ img[dijkl]|=2;
+ if(y_exist) {
+ img[dijkl-nx]|=8;
+ img[dijk-nx]|=4;
+ }
+ for(l=0;l<co[fijk];l++) {
+ if(p[fijk][ps*l+1]>switchy) {
+ if(p[fijk][ps*l]>switchx) put_image(dijk,fijk,l,disx,disy,bz*ima);
+ else put_image(dijkl,fijk,l,disxl,disy,bz*ima);
+ } else {
+ if(!y_exist) continue;
+ if(p[fijk][ps*l]>switchx) put_image(dijk-nx,fijk,l,disx,disy,bz*ima);
+ else put_image(dijkl-nx,fijk,l,disxl,disy,bz*ima);
+ }
+ }
+ }
+
+ // Down-right image computation
+ if((img[dijk]&2)==0) {
+ if(fi==nx-1) {
+ fijk2=fijk+1-nx;switchx2=switchx+(1-nx)*boxx;disx2=disx+bx;disxr2=disxr+bx;
+ } else {
+ fijk2=fijk+1;switchx2=switchx+boxx;disx2=disx;disxr2=disxr;
+ }
+ img[dijkr]|=1;
+ if(y_exist) {
+ img[dijkr-nx]|=4;
+ img[dijk-nx]|=8;
+ }
+ for(l=0;l<co[fijk2];l++) {
+ if(p[fijk2][ps*l+1]>switchy) {
+ if(p[fijk2][ps*l]>switchx2) put_image(dijkr,fijk2,l,disxr2,disy,bz*ima);
+ else put_image(dijk,fijk2,l,disx2,disy,bz*ima);
+ } else {
+ if(!y_exist) continue;
+ if(p[fijk2][ps*l]>switchx2) put_image(dijkr-nx,fijk2,l,disxr2,disy,bz*ima);
+ else put_image(dijk-nx,fijk2,l,disx2,disy,bz*ima);
+ }
+ }
+ }
+
+ // Recomputation of some intermediate quantities for boundary cases
+ if(fj==wy-1) {
+ fijk+=nx*(1-ny)-fi;
+ switchy+=(1-ny)*boxy;
+ disy+=by;
+ qi=di+step_int(-(ima*bxz+(qjdiv+1)*bxy)*xsp);
+ int dqidiv=step_div(qi,nx)-qidiv;qidiv+=dqidiv;
+ fi=qi-qidiv*nx;
+ fijk+=fi;
+ disx+=bxy+bx*dqidiv;
+ disxl+=bxy+bx*dqidiv;
+ disxr+=bxy+bx*dqidiv;
+ switchx-=bxy+bx*dqidiv;
+ } else {
+ fijk+=nx;switchy+=boxy;
+ }
+
+ // Up-left image computation
+ y_exist=dj!=oy-1;
+ if((img[dijk]&4)==0) {
+ img[dijkl]|=8;
+ if(y_exist) {
+ img[dijkl+nx]|=2;
+ img[dijk+nx]|=1;
+ }
+ for(l=0;l<co[fijk];l++) {
+ if(p[fijk][ps*l+1]>switchy) {
+ if(!y_exist) continue;
+ if(p[fijk][ps*l]>switchx) put_image(dijk+nx,fijk,l,disx,disy,bz*ima);
+ else put_image(dijkl+nx,fijk,l,disxl,disy,bz*ima);
+ } else {
+ if(p[fijk][ps*l]>switchx) put_image(dijk,fijk,l,disx,disy,bz*ima);
+ else put_image(dijkl,fijk,l,disxl,disy,bz*ima);
+ }
+ }
+ }
+
+ // Up-right image computation
+ if((img[dijk]&8)==0) {
+ if(fi==nx-1) {
+ fijk2=fijk+1-nx;switchx2=switchx+(1-nx)*boxx;disx2=disx+bx;disxr2=disxr+bx;
+ } else {
+ fijk2=fijk+1;switchx2=switchx+boxx;disx2=disx;disxr2=disxr;
+ }
+ img[dijkr]|=4;
+ if(y_exist) {
+ img[dijkr+nx]|=1;
+ img[dijk+nx]|=2;
+ }
+ for(l=0;l<co[fijk2];l++) {
+ if(p[fijk2][ps*l+1]>switchy) {
+ if(!y_exist) continue;
+ if(p[fijk2][ps*l]>switchx2) put_image(dijkr+nx,fijk2,l,disxr2,disy,bz*ima);
+ else put_image(dijk+nx,fijk2,l,disx2,disy,bz*ima);
+ } else {
+ if(p[fijk2][ps*l]>switchx2) put_image(dijkr,fijk2,l,disxr2,disy,bz*ima);
+ else put_image(dijk,fijk2,l,disx2,disy,bz*ima);
+ }
+ }
+ }
+
+ // All contributions to the block now added, so set all four bits of
+ // the image information
+ img[dijk]=15;
+}
+
+/** Copies a particle position from the primary domain into an image block.
+ * \param[in] reg the block index within the primary domain that the particle
+ * is within.
+ * \param[in] fijk the index of the image block.
+ * \param[in] l the index of the particle entry within the primary block.
+ * \param[in] (dx,dy,dz) the displacement vector to add to the particle. */
+void container_periodic_base::put_image(int reg,int fijk,int l,double dx,double dy,double dz) {
+ if(co[reg]==mem[reg]) add_particle_memory(reg);
+ double *p1=p[reg]+ps*co[reg],*p2=p[fijk]+ps*l;
+ *(p1++)=*(p2++)+dx;
+ *(p1++)=*(p2++)+dy;
+ *p1=*p2+dz;
+ if(ps==4) *(++p1)=*(++p2);
+ id[reg][co[reg]++]=id[fijk][l];
+}
+
+}
diff --git a/lib/voro++/src/container_prd.hh b/lib/voro++/src/container_prd.hh
new file mode 100644
index 000000000..89b5c3925
--- /dev/null
+++ b/lib/voro++/src/container_prd.hh
@@ -0,0 +1,616 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file container_prd.hh
+ * \brief Header file for the container_periodic_base and related classes. */
+
+#ifndef VOROPP_CONTAINER_PRD_HH
+#define VOROPP_CONTAINER_PRD_HH
+
+#include <cstdio>
+#include <vector>
+
+#include "config.hh"
+#include "common.hh"
+#include "v_base.hh"
+#include "cell.hh"
+#include "c_loops.hh"
+#include "v_compute.hh"
+#include "unitcell.hh"
+#include "rad_option.hh"
+
+namespace voro {
+
+/** \brief Class for representing a particle system in a 3D periodic
+ * non-orthogonal periodic domain.
+ *
+ * This class represents a particle system in a three-dimensional
+ * non-orthogonal periodic domain. The domain is defined by three periodicity
+ * vectors (bx,0,0), (bxy,by,0), and (bxz,byz,bz) that represent a
+ * parallelepiped. Internally, the class stores particles in the box 0<x<bx,
+ * 0<y<by, 0<z<bz, and constructs periodic images of particles that displaced
+ * by the three periodicity vectors when they are necessary for the
+ * computation. The internal memory structure for this class is significantly
+ * different from the container_base class in order to handle the dynamic
+ * construction of these periodic images.
+ *
+ * The class is derived from the unitcell class, which encapsulates information
+ * about the domain geometry, and the voro_base class, which encapsulates
+ * information about the underlying computational grid. */
+class container_periodic_base : public unitcell, public voro_base {
+ public:
+ /** The lower y index (inclusive) of the primary domain within
+ * the block structure. */
+ int ey;
+ /** The lower z index (inclusive) of the primary domain within
+ * the block structure. */
+ int ez;
+ /** The upper y index (exclusive) of the primary domain within
+ * the block structure. */
+ int wy;
+ /** The upper z index (exclusive) of the primary domain within
+ * the block structure. */
+ int wz;
+ /** The total size of the block structure (including images) in
+ * the y direction. */
+ int oy;
+ /** The total size of the block structure (including images) in
+ * the z direction. */
+ int oz;
+ /** The total number of blocks. */
+ int oxyz;
+ /** This array holds the numerical IDs of each particle in each
+ * computational box. */
+ int **id;
+ /** A two dimensional array holding particle positions. For the
+ * derived container_poly class, this also holds particle
+ * radii. */
+ double **p;
+ /** This array holds the number of particles within each
+ * computational box of the container. */
+ int *co;
+ /** This array holds the maximum amount of particle memory for
+ * each computational box of the container. If the number of
+ * particles in a particular box ever approaches this limit,
+ * more is allocated using the add_particle_memory() function.
+ */
+ int *mem;
+ /** An array holding information about periodic image
+ * construction at a given location. */
+ char *img;
+ /** The initial amount of memory to allocate for particles
+ * for each block. */
+ const int init_mem;
+ /** The amount of memory in the array structure for each
+ * particle. This is set to 3 when the basic class is
+ * initialized, so that the array holds (x,y,z) positions. If
+ * the container class is initialized as part of the derived
+ * class container_poly, then this is set to 4, to also hold
+ * the particle radii. */
+ const int ps;
+ container_periodic_base(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_,
+ int nx_,int ny_,int nz_,int init_mem_,int ps);
+ ~container_periodic_base();
+ /** Prints all particles in the container, including those that
+ * have been constructed in image blocks. */
+ inline void print_all_particles() {
+ int ijk,q;
+ for(ijk=0;ijk<oxyz;ijk++) for(q=0;q<co[ijk];q++)
+ printf("%d %g %g %g\n",id[ijk][q],p[ijk][ps*q],p[ijk][ps*q+1],p[ijk][ps*q+2]);
+ }
+ void region_count();
+ /** Initializes the Voronoi cell prior to a compute_cell
+ * operation for a specific particle being carried out by a
+ * voro_compute class. The cell is initialized to be the
+ * pre-computed unit Voronoi cell based on planes formed by
+ * periodic images of the particle.
+ * \param[in,out] c a reference to a voronoicell object.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within its block.
+ * \param[in] (ci,cj,ck) the coordinates of the block in the
+ * container coordinate system.
+ * \param[out] (i,j,k) the coordinates of the test block
+ * relative to the voro_compute
+ * coordinate system.
+ * \param[out] (x,y,z) the position of the particle.
+ * \param[out] disp a block displacement used internally by the
+ * compute_cell routine.
+ * \return False if the plane cuts applied by walls completely
+ * removed the cell, true otherwise. */
+ template<class v_cell>
+ inline bool initialize_voronoicell(v_cell &c,int ijk,int q,int ci,int cj,int ck,int &i,int &j,int &k,double &x,double &y,double &z,int &disp) {
+ c=unit_voro;
+ double *pp=p[ijk]+ps*q;
+ x=*(pp++);y=*(pp++);z=*pp;
+ i=nx;j=ey;k=ez;
+ return true;
+ }
+ /** Initializes parameters for a find_voronoi_cell call within
+ * the voro_compute template.
+ * \param[in] (ci,cj,ck) the coordinates of the test block in
+ * the container coordinate system.
+ * \param[in] ijk the index of the test block
+ * \param[out] (i,j,k) the coordinates of the test block
+ * relative to the voro_compute
+ * coordinate system.
+ * \param[out] disp a block displacement used internally by the
+ * find_voronoi_cell routine (but not needed
+ * in this instance.) */
+ inline void initialize_search(int ci,int cj,int ck,int ijk,int &i,int &j,int &k,int &disp) {
+ i=nx;j=ey;k=ez;
+ }
+ /** Returns the position of a particle currently being computed
+ * relative to the computational block that it is within. It is
+ * used to select the optimal worklist entry to use.
+ * \param[in] (x,y,z) the position of the particle.
+ * \param[in] (ci,cj,ck) the block that the particle is within.
+ * \param[out] (fx,fy,fz) the position relative to the block.
+ */
+ inline void frac_pos(double x,double y,double z,double ci,double cj,double ck,double &fx,double &fy,double &fz) {
+ fx=x-boxx*ci;
+ fy=y-boxy*(cj-ey);
+ fz=z-boxz*(ck-ez);
+ }
+ /** Calculates the index of block in the container structure
+ * corresponding to given coordinates.
+ * \param[in] (ci,cj,ck) the coordinates of the original block
+ * in the current computation, relative
+ * to the container coordinate system.
+ * \param[in] (ei,ej,ek) the displacement of the current block
+ * from the original block.
+ * \param[in,out] (qx,qy,qz) the periodic displacement that
+ * must be added to the particles
+ * within the computed block.
+ * \param[in] disp a block displacement used internally by the
+ * find_voronoi_cell and compute_cell routines
+ * (but not needed in this instance.)
+ * \return The block index. */
+ inline int region_index(int ci,int cj,int ck,int ei,int ej,int ek,double &qx,double &qy,double &qz,int &disp) {
+ int qi=ci+(ei-nx),qj=cj+(ej-ey),qk=ck+(ek-ez);
+ int iv(step_div(qi,nx));if(iv!=0) {qx=iv*bx;qi-=nx*iv;} else qx=0;
+ create_periodic_image(qi,qj,qk);
+ return qi+nx*(qj+oy*qk);
+ }
+ void create_all_images();
+ void check_compartmentalized();
+ protected:
+ void add_particle_memory(int i);
+ void put_locate_block(int &ijk,double &x,double &y,double &z);
+ void put_locate_block(int &ijk,double &x,double &y,double &z,int &ai,int &aj,int &ak);
+ /** Creates particles within an image block by copying them
+ * from the primary domain and shifting them. If the given
+ * block is aligned with the primary domain in the z-direction,
+ * the routine calls the simpler create_side_image routine
+ * where the image block may comprise of particles from up to
+ * two primary blocks. Otherwise is calls the more complex
+ * create_vertical_image where the image block may comprise of
+ * particles from up to four primary blocks.
+ * \param[in] (di,dj,dk) the coordinates of the image block to
+ * create. */
+ inline void create_periodic_image(int di,int dj,int dk) {
+ if(di<0||di>=nx||dj<0||dj>=oy||dk<0||dk>=oz)
+ voro_fatal_error("Constructing periodic image for nonexistent point",VOROPP_INTERNAL_ERROR);
+ if(dk>=ez&&dk<wz) {
+ if(dj<ey||dj>=wy) create_side_image(di,dj,dk);
+ } else create_vertical_image(di,dj,dk);
+ }
+ void create_side_image(int di,int dj,int dk);
+ void create_vertical_image(int di,int dj,int dk);
+ void put_image(int reg,int fijk,int l,double dx,double dy,double dz);
+ inline void remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk);
+};
+
+/** \brief Extension of the container_periodic_base class for computing regular
+ * Voronoi tessellations.
+ *
+ * This class is an extension of the container_periodic_base that has routines
+ * specifically for computing the regular Voronoi tessellation with no
+ * dependence on particle radii. */
+class container_periodic : public container_periodic_base, public radius_mono {
+ public:
+ container_periodic(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_,
+ int nx_,int ny_,int nz_,int init_mem_);
+ void clear();
+ void put(int n,double x,double y,double z);
+ void put(int n,double x,double y,double z,int &ai,int &aj,int &ak);
+ void put(particle_order &vo,int n,double x,double y,double z);
+ void import(FILE *fp=stdin);
+ void import(particle_order &vo,FILE *fp=stdin);
+ /** Imports a list of particles from an open file stream into
+ * the container. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. If the
+ * file cannot be successfully read, then the routine causes a
+ * fatal error.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ /** Imports a list of particles from an open file stream into
+ * the container. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. In
+ * addition, the order in which particles are read is saved
+ * into an ordering class. If the file cannot be successfully
+ * read, then the routine causes a fatal error.
+ * \param[in,out] vo the ordering class to use.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(particle_order &vo,const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(vo,fp);
+ fclose(fp);
+ }
+ void compute_all_cells();
+ double sum_cell_volumes();
+ /** Dumps particle IDs and positions to a file.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+3*vl.q;
+ fprintf(fp,"%d %g %g %g\n",id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
+ } while(vl.inc());
+ }
+ /** Dumps all of the particle IDs and positions to a file.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_particles(vl,fp);
+ }
+ /** Dumps all of the particle IDs and positions to a file.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles(fp);
+ fclose(fp);
+ }
+ /** Dumps particle positions in POV-Ray format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles_pov(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+3*vl.q;
+ fprintf(fp,"// id %d\nsphere{<%g,%g,%g>,s}\n",
+ id[vl.ijk][vl.q],*pp,pp[1],pp[2]);
+ } while(vl.inc());
+ }
+ /** Dumps all particle positions in POV-Ray format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles_pov(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_particles_pov(vl,fp);
+ }
+ /** Dumps all particle positions in POV-Ray format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles_pov(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_gnuplot(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_gnuplot(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_gnuplot(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_cells_gnuplot(vl,fp);
+ }
+ /** Compute all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_gnuplot(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_gnuplot(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_pov(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ fprintf(fp,"// cell %d\n",id[vl.ijk][vl.q]);
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_pov(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_pov(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_cells_pov(vl,fp);
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_pov(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_cells_pov(fp);
+ fclose(fp);
+ }
+ /** Computes the Voronoi cells and saves customized information
+ * about them.
+ * \param[in] vl the loop class to use.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void print_custom(c_loop &vl,const char *format,FILE *fp) {
+ int ijk,q;double *pp;
+ if(contains_neighbor(format)) {
+ voronoicell_neighbor c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
+ } while(vl.inc());
+ } else {
+ voronoicell c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],default_radius,fp);
+ } while(vl.inc());
+ }
+ }
+ void print_custom(const char *format,FILE *fp=stdout);
+ void print_custom(const char *format,const char *filename);
+ bool find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid);
+ /** Computes the Voronoi cell for a particle currently being
+ * referenced by a loop class.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] vl the loop class to use.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed because it was removed entirely for some reason,
+ * then the routine returns false. */
+ template<class v_cell,class c_loop>
+ inline bool compute_cell(v_cell &c,c_loop &vl) {
+ return vc.compute_cell(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);
+ }
+ /** Computes the Voronoi cell for given particle.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed because it was removed entirely for some reason,
+ * then the routine returns false. */
+ template<class v_cell>
+ inline bool compute_cell(v_cell &c,int ijk,int q) {
+ int k(ijk/(nx*oy)),ijkt(ijk-(nx*oy)*k),j(ijkt/nx),i(ijkt-j*nx);
+ return vc.compute_cell(c,ijk,q,i,j,k);
+ }
+ private:
+ voro_compute<container_periodic> vc;
+ friend class voro_compute<container_periodic>;
+};
+
+/** \brief Extension of the container_periodic_base class for computing radical
+ * Voronoi tessellations.
+ *
+ * This class is an extension of container_periodic_base that has routines
+ * specifically for computing the radical Voronoi tessellation that depends
+ * on the particle radii. */
+class container_periodic_poly : public container_periodic_base, public radius_poly {
+ public:
+ container_periodic_poly(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_,
+ int nx_,int ny_,int nz_,int init_mem_);
+ void clear();
+ void put(int n,double x,double y,double z,double r);
+ void put(int n,double x,double y,double z,double r,int &ai,int &aj,int &ak);
+ void put(particle_order &vo,int n,double x,double y,double z,double r);
+ void import(FILE *fp=stdin);
+ void import(particle_order &vo,FILE *fp=stdin);
+ /** Imports a list of particles from an open file stream into
+ * the container_poly class. Entries of five numbers (Particle
+ * ID, x position, y position, z position, radius) are searched
+ * for. If the file cannot be successfully read, then the
+ * routine causes a fatal error.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ /** Imports a list of particles from an open file stream into
+ * the container_poly class. Entries of five numbers (Particle
+ * ID, x position, y position, z position, radius) are searched
+ * for. In addition, the order in which particles are read is
+ * saved into an ordering class. If the file cannot be
+ * successfully read, then the routine causes a fatal error.
+ * \param[in,out] vo the ordering class to use.
+ * \param[in] filename the name of the file to open and read
+ * from. */
+ inline void import(particle_order &vo,const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(vo,fp);
+ fclose(fp);
+ }
+ void compute_all_cells();
+ double sum_cell_volumes();
+ /** Dumps particle IDs, positions and radii to a file.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+4*vl.q;
+ fprintf(fp,"%d %g %g %g %g\n",id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
+ } while(vl.inc());
+ }
+ /** Dumps all of the particle IDs, positions and radii to a
+ * file.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_particles(vl,fp);
+ }
+ /** Dumps all of the particle IDs, positions and radii to a
+ * file.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles(const char *filename) {
+ FILE *fp=safe_fopen(filename,"w");
+ draw_particles(fp);
+ fclose(fp);
+ }
+ /** Dumps particle positions in POV-Ray format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_particles_pov(c_loop &vl,FILE *fp) {
+ double *pp;
+ if(vl.start()) do {
+ pp=p[vl.ijk]+4*vl.q;
+ fprintf(fp,"// id %d\nsphere{<%g,%g,%g>,%g}\n",
+ id[vl.ijk][vl.q],*pp,pp[1],pp[2],pp[3]);
+ } while(vl.inc());
+ }
+ /** Dumps all the particle positions in POV-Ray format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_particles_pov(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_particles_pov(vl,fp);
+ }
+ /** Dumps all the particle positions in POV-Ray format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_particles_pov(const char *filename) {
+ FILE *fp(safe_fopen(filename,"w"));
+ draw_particles_pov(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_gnuplot(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_gnuplot(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Compute all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_gnuplot(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_cells_gnuplot(vl,fp);
+ }
+ /** Compute all Voronoi cells and saves the output in gnuplot
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_gnuplot(const char *filename) {
+ FILE *fp(safe_fopen(filename,"w"));
+ draw_cells_gnuplot(fp);
+ fclose(fp);
+ }
+ /** Computes Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] vl the loop class to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void draw_cells_pov(c_loop &vl,FILE *fp) {
+ voronoicell c;double *pp;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ fprintf(fp,"// cell %d\n",id[vl.ijk][vl.q]);
+ pp=p[vl.ijk]+ps*vl.q;
+ c.draw_pov(*pp,pp[1],pp[2],fp);
+ } while(vl.inc());
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] fp a file handle to write to. */
+ inline void draw_cells_pov(FILE *fp=stdout) {
+ c_loop_all_periodic vl(*this);
+ draw_cells_pov(vl,fp);
+ }
+ /** Computes all Voronoi cells and saves the output in POV-Ray
+ * format.
+ * \param[in] filename the name of the file to write to. */
+ inline void draw_cells_pov(const char *filename) {
+ FILE *fp(safe_fopen(filename,"w"));
+ draw_cells_pov(fp);
+ fclose(fp);
+ }
+ /** Computes the Voronoi cells and saves customized information
+ * about them.
+ * \param[in] vl the loop class to use.
+ * \param[in] format the custom output string to use.
+ * \param[in] fp a file handle to write to. */
+ template<class c_loop>
+ void print_custom(c_loop &vl,const char *format,FILE *fp) {
+ int ijk,q;double *pp;
+ if(contains_neighbor(format)) {
+ voronoicell_neighbor c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],pp[3],fp);
+ } while(vl.inc());
+ } else {
+ voronoicell c;
+ if(vl.start()) do if(compute_cell(c,vl)) {
+ ijk=vl.ijk;q=vl.q;pp=p[ijk]+ps*q;
+ c.output_custom(format,id[ijk][q],*pp,pp[1],pp[2],pp[3],fp);
+ } while(vl.inc());
+ }
+ }
+ /** Computes the Voronoi cell for a particle currently being
+ * referenced by a loop class.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] vl the loop class to use.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed because it was removed entirely for some reason,
+ * then the routine returns false. */
+ template<class v_cell,class c_loop>
+ inline bool compute_cell(v_cell &c,c_loop &vl) {
+ return vc.compute_cell(c,vl.ijk,vl.q,vl.i,vl.j,vl.k);
+ }
+ /** Computes the Voronoi cell for given particle.
+ * \param[out] c a Voronoi cell class in which to store the
+ * computed cell.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell was computed. If the cell cannot be
+ * computed because it was removed entirely for some reason,
+ * then the routine returns false. */
+ template<class v_cell>
+ inline bool compute_cell(v_cell &c,int ijk,int q) {
+ int k(ijk/(nx*oy)),ijkt(ijk-(nx*oy)*k),j(ijkt/nx),i(ijkt-j*nx);
+ return vc.compute_cell(c,ijk,q,i,j,k);
+ }
+ void print_custom(const char *format,FILE *fp=stdout);
+ void print_custom(const char *format,const char *filename);
+ bool find_voronoi_cell(double x,double y,double z,double &rx,double &ry,double &rz,int &pid);
+ private:
+ voro_compute<container_periodic_poly> vc;
+ friend class voro_compute<container_periodic_poly>;
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/pre_container.cc b/lib/voro++/src/pre_container.cc
new file mode 100644
index 000000000..dcab88843
--- /dev/null
+++ b/lib/voro++/src/pre_container.cc
@@ -0,0 +1,236 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file pre_container.cc
+ * \brief Function implementations for the pre_container and related classes.
+ */
+
+#include <cmath>
+
+#include "config.hh"
+#include "pre_container.hh"
+
+namespace voro {
+
+/** The class constructor sets up the geometry of container, initializing the
+ * minimum and maximum coordinates in each direction. It allocates an initial
+ * chunk into which to store particle information.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the
+ * container is periodic in each
+ * coordinate direction.
+ * \param[in] ps_ the number of floating point entries to store for each
+ * particle. */
+pre_container_base::pre_container_base(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ bool xperiodic_,bool yperiodic_,bool zperiodic_,int ps_) :
+ ax(ax_), bx(bx_), ay(ay_), by(by_), az(az_), bz(bz_),
+ xperiodic(xperiodic_), yperiodic(yperiodic_), zperiodic(zperiodic_), ps(ps_),
+ index_sz(init_chunk_size), pre_id(new int*[index_sz]), end_id(pre_id),
+ pre_p(new double*[index_sz]), end_p(pre_p) {
+ ch_id=*end_id=new int[pre_container_chunk_size];
+ l_id=end_id+index_sz;e_id=ch_id+pre_container_chunk_size;
+ ch_p=*end_p=new double[ps*pre_container_chunk_size];
+}
+
+/** The destructor frees the dynamically allocated memory. */
+pre_container_base::~pre_container_base() {
+ delete [] *end_p;
+ delete [] *end_id;
+ while (end_id!=pre_id) {
+ end_p--;
+ delete [] *end_p;
+ end_id--;
+ delete [] *end_id;
+ }
+ delete [] pre_p;
+ delete [] pre_id;
+}
+
+/** Makes a guess at the optimal grid of blocks to use, computing in
+ * a way that
+ * \param[out] (nx,ny,nz) the number of blocks to use. */
+void pre_container_base::guess_optimal(int &nx,int &ny,int &nz) {
+ double dx=bx-ax,dy=by-ay,dz=bz-az;
+ double ilscale=pow(total_particles()/(optimal_particles*dx*dy*dz),1/3.0);
+ nx=int(dx*ilscale+1);
+ ny=int(dy*ilscale+1);
+ nz=int(dz*ilscale+1);
+}
+
+/** Stores a particle ID and position, allocating a new memory chunk if
+ * necessary. For coordinate directions in which the container is not periodic,
+ * the routine checks to make sure that the particle is within the container
+ * bounds. If the particle is out of bounds, it is not stored.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle. */
+void pre_container::put(int n,double x,double y,double z) {
+ if((xperiodic||(x>=ax&&x<=bx))&&(yperiodic||(y>=ay&&y<=by))&&(zperiodic||(z>=az&&z<=bz))) {
+ if(ch_id==e_id) new_chunk();
+ *(ch_id++)=n;
+ *(ch_p++)=x;*(ch_p++)=y;*(ch_p++)=z;
+ }
+#if VOROPP_REPORT_OUT_OF_BOUNDS ==1
+ else fprintf(stderr,"Out of bounds: (x,y,z)=(%g,%g,%g)\n",x,y,z);
+#endif
+}
+
+/** Stores a particle ID and position, allocating a new memory chunk if necessary.
+ * \param[in] n the numerical ID of the inserted particle.
+ * \param[in] (x,y,z) the position vector of the inserted particle.
+ * \param[in] r the radius of the particle. */
+void pre_container_poly::put(int n,double x,double y,double z,double r) {
+ if((xperiodic||(x>=ax&&x<=bx))&&(yperiodic||(y>=ay&&y<=by))&&(zperiodic||(z>=az&&z<=bz))) {
+ if(ch_id==e_id) new_chunk();
+ *(ch_id++)=n;
+ *(ch_p++)=x;*(ch_p++)=y;*(ch_p++)=z;*(ch_p++)=r;
+ }
+#if VOROPP_REPORT_OUT_OF_BOUNDS ==1
+ else fprintf(stderr,"Out of bounds: (x,y,z)=(%g,%g,%g)\n",x,y,z);
+#endif
+}
+
+/** Transfers the particles stored within the class to a container class.
+ * \param[in] con the container class to transfer to. */
+void pre_container::setup(container &con) {
+ int **c_id=pre_id,*idp,*ide,n;
+ double **c_p=pre_p,*pp,x,y,z;
+ while(c_id<end_id) {
+ idp=*(c_id++);ide=idp+pre_container_chunk_size;
+ pp=*(c_p++);
+ while(idp<ide) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
+ con.put(n,x,y,z);
+ }
+ }
+ idp=*c_id;
+ pp=*c_p;
+ while(idp<ch_id) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
+ con.put(n,x,y,z);
+ }
+}
+
+/** Transfers the particles stored within the class to a container_poly class.
+ * \param[in] con the container_poly class to transfer to. */
+void pre_container_poly::setup(container_poly &con) {
+ int **c_id=pre_id,*idp,*ide,n;
+ double **c_p=pre_p,*pp,x,y,z,r;
+ while(c_id<end_id) {
+ idp=*(c_id++);ide=idp+pre_container_chunk_size;
+ pp=*(c_p++);
+ while(idp<ide) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);
+ con.put(n,x,y,z,r);
+ }
+ }
+ idp=*c_id;
+ pp=*c_p;
+ while(idp<ch_id) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);
+ con.put(n,x,y,z,r);
+ }
+}
+
+/** Transfers the particles stored within the class to a container class, also
+ * recording the order in which particles were stored.
+ * \param[in] vo the ordering class to use.
+ * \param[in] con the container class to transfer to. */
+void pre_container::setup(particle_order &vo,container &con) {
+ int **c_id=pre_id,*idp,*ide,n;
+ double **c_p=pre_p,*pp,x,y,z;
+ while(c_id<end_id) {
+ idp=*(c_id++);ide=idp+pre_container_chunk_size;
+ pp=*(c_p++);
+ while(idp<ide) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
+ con.put(vo,n,x,y,z);
+ }
+ }
+ idp=*c_id;
+ pp=*c_p;
+ while(idp<ch_id) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);
+ con.put(vo,n,x,y,z);
+ }
+}
+
+/** Transfers the particles stored within the class to a container_poly class,
+ * also recording the order in which particles were stored.
+ * \param[in] vo the ordering class to use.
+ * \param[in] con the container_poly class to transfer to. */
+void pre_container_poly::setup(particle_order &vo,container_poly &con) {
+ int **c_id=pre_id,*idp,*ide,n;
+ double **c_p=pre_p,*pp,x,y,z,r;
+ while(c_id<end_id) {
+ idp=*(c_id++);ide=idp+pre_container_chunk_size;
+ pp=*(c_p++);
+ while(idp<ide) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);
+ con.put(vo,n,x,y,z,r);
+ }
+ }
+ idp=*c_id;
+ pp=*c_p;
+ while(idp<ch_id) {
+ n=*(idp++);x=*(pp++);y=*(pp++);z=*(pp++);r=*(pp++);
+ con.put(vo,n,x,y,z,r);
+ }
+}
+
+/** Import a list of particles from an open file stream into the container.
+ * Entries of four numbers (Particle ID, x position, y position, z position)
+ * are searched for. If the file cannot be successfully read, then the routine
+ * causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void pre_container::import(FILE *fp) {
+ int i,j;
+ double x,y,z;
+ while((j=fscanf(fp,"%d %lg %lg %lg",&i,&x,&y,&z))==4) put(i,x,y,z);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Import a list of particles from an open file stream, also storing the order
+ * of that the particles are read. Entries of four numbers (Particle ID, x
+ * position, y position, z position) are searched for. If the file cannot be
+ * successfully read, then the routine causes a fatal error.
+ * \param[in] fp the file handle to read from. */
+void pre_container_poly::import(FILE *fp) {
+ int i,j;
+ double x,y,z,r;
+ while((j=fscanf(fp,"%d %lg %lg %lg %lg",&i,&x,&y,&z,&r))==5) put(i,x,y,z,r);
+ if(j!=EOF) voro_fatal_error("File import error",VOROPP_FILE_ERROR);
+}
+
+/** Allocates a new chunk of memory for storing particles. */
+void pre_container_base::new_chunk() {
+ end_id++;end_p++;
+ if(end_id==l_id) extend_chunk_index();
+ ch_id=*end_id=new int[pre_container_chunk_size];
+ e_id=ch_id+pre_container_chunk_size;
+ ch_p=*end_p=new double[ps*pre_container_chunk_size];
+}
+
+/** Extends the index of chunks. */
+void pre_container_base::extend_chunk_index() {
+ index_sz<<=1;
+ if(index_sz>max_chunk_size)
+ voro_fatal_error("Absolute memory limit on chunk index reached",VOROPP_MEMORY_ERROR);
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"Pre-container chunk index scaled up to %d\n",index_sz);
+#endif
+ int **n_id=new int*[index_sz],**p_id=n_id,**c_id=pre_id;
+ double **n_p=new double*[index_sz],**p_p=n_p,**c_p=pre_p;
+ while(c_id<end_id) {
+ *(p_id++)=*(c_id++);
+ *(p_p++)=*(c_p++);
+ }
+ delete [] pre_id;pre_id=n_id;end_id=p_id;l_id=pre_id+index_sz;
+ delete [] pre_p;pre_p=n_p;end_p=p_p;
+}
+
+}
diff --git a/lib/voro++/src/pre_container.hh b/lib/voro++/src/pre_container.hh
new file mode 100644
index 000000000..fefc01aca
--- /dev/null
+++ b/lib/voro++/src/pre_container.hh
@@ -0,0 +1,162 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file pre_container.hh
+ * \brief Header file for the pre_container and related classes. */
+
+#ifndef VOROPP_PRE_CONTAINER_HH
+#define VOROPP_PRE_CONTAINER_HH
+
+#include <cstdio>
+
+#include "c_loops.hh"
+#include "container.hh"
+
+namespace voro {
+
+/** \brief A class for storing an arbitrary number of particles, prior to setting
+ * up a container geometry.
+ *
+ * The pre_container_base class can dynamically import and store an arbitrary
+ * number of particles. Once the particles have been read in, an appropriate
+ * container class can be set up with the optimal grid size, and the particles
+ * can be transferred.
+ *
+ * The pre_container_base class is not intended for direct use, but forms the
+ * base of the pre_container and pre_container_poly classes, that add routines
+ * depending on whether particle radii need to be tracked or not. */
+class pre_container_base {
+ public:
+ /** The minimum x coordinate of the container. */
+ const double ax;
+ /** The maximum x coordinate of the container. */
+ const double bx;
+ /** The minimum y coordinate of the container. */
+ const double ay;
+ /** The maximum y coordinate of the container. */
+ const double by;
+ /** The minimum z coordinate of the container. */
+ const double az;
+ /** The maximum z coordinate of the container. */
+ const double bz;
+ /** A boolean value that determines if the x coordinate in
+ * periodic or not. */
+ const bool xperiodic;
+ /** A boolean value that determines if the y coordinate in
+ * periodic or not. */
+ const bool yperiodic;
+ /** A boolean value that determines if the z coordinate in
+ * periodic or not. */
+ const bool zperiodic;
+ void guess_optimal(int &nx,int &ny,int &nz);
+ pre_container_base(double ax_,double bx_,double ay_,double by_,double az_,double bz_,bool xperiodic_,bool yperiodic_,bool zperiodic_,int ps_);
+ ~pre_container_base();
+ /** Calculates and returns the total number of particles stored
+ * within the class.
+ * \return The number of particles. */
+ inline int total_particles() {
+ return (end_id-pre_id)*pre_container_chunk_size+(ch_id-*end_id);
+ }
+ protected:
+ /** The number of doubles associated with a single particle
+ * (three for the standard container, four when radius
+ * information is stored). */
+ const int ps;
+ void new_chunk();
+ void extend_chunk_index();
+ /** The size of the chunk index. */
+ int index_sz;
+ /** A pointer to the chunk index to store the integer particle
+ * IDs. */
+ int **pre_id;
+ /** A pointer to the last allocated integer ID chunk. */
+ int **end_id;
+ /** A pointer to the end of the integer ID chunk index, used to
+ * determine when the chunk index is full. */
+ int **l_id;
+ /** A pointer to the next available slot on the current
+ * particle ID chunk. */
+ int *ch_id;
+ /** A pointer to the end of the current integer chunk. */
+ int *e_id;
+ /** A pointer to the chunk index to store the floating point
+ * information associated with particles. */
+ double **pre_p;
+ /** A pointer to the last allocated chunk of floating point
+ * information. */
+ double **end_p;
+ /** A pointer to the next available slot on the current
+ * floating point chunk. */
+ double *ch_p;
+};
+
+/** \brief A class for storing an arbitrary number of particles without radius
+ * information, prior to setting up a container geometry.
+ *
+ * The pre_container class is an extension of the pre_container_base class for
+ * cases when no particle radius information is available. */
+class pre_container : public pre_container_base {
+ public:
+ /** The class constructor sets up the geometry of container,
+ * initializing the minimum and maximum coordinates in each
+ * direction.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the
+ * container is periodic in
+ * each coordinate direction. */
+ pre_container(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ bool xperiodic_,bool yperiodic_,bool zperiodic_)
+ : pre_container_base(ax_,bx_,ay_,by_,az_,bz_,xperiodic_,yperiodic_,zperiodic_,3) {};
+ void put(int n,double x,double y,double z);
+ void import(FILE *fp=stdin);
+ /** Imports particles from a file.
+ * \param[in] filename the name of the file to read from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ void setup(container &con);
+ void setup(particle_order &vo,container &con);
+};
+
+/** \brief A class for storing an arbitrary number of particles with radius
+ * information, prior to setting up a container geometry.
+ *
+ * The pre_container_poly class is an extension of the pre_container_base class
+ * for cases when particle radius information is available. */
+class pre_container_poly : public pre_container_base {
+ public:
+ /** The class constructor sets up the geometry of container,
+ * initializing the minimum and maximum coordinates in each
+ * direction.
+ * \param[in] (ax_,bx_) the minimum and maximum x coordinates.
+ * \param[in] (ay_,by_) the minimum and maximum y coordinates.
+ * \param[in] (az_,bz_) the minimum and maximum z coordinates.
+ * \param[in] (xperiodic_,yperiodic_,zperiodic_ ) flags setting whether the
+ * container is periodic in
+ * each coordinate direction. */
+ pre_container_poly(double ax_,double bx_,double ay_,double by_,double az_,double bz_,
+ bool xperiodic_,bool yperiodic_,bool zperiodic_)
+ : pre_container_base(ax_,bx_,ay_,by_,az_,bz_,xperiodic_,yperiodic_,zperiodic_,4) {};
+ void put(int n,double x,double y,double z,double r);
+ void import(FILE *fp=stdin);
+ /** Imports particles from a file.
+ * \param[in] filename the name of the file to read from. */
+ inline void import(const char* filename) {
+ FILE *fp=safe_fopen(filename,"r");
+ import(fp);
+ fclose(fp);
+ }
+ void setup(container_poly &con);
+ void setup(particle_order &vo,container_poly &con);
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/rad_option.hh b/lib/voro++/src/rad_option.hh
new file mode 100644
index 000000000..d946fa4be
--- /dev/null
+++ b/lib/voro++/src/rad_option.hh
@@ -0,0 +1,158 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file rad_option.hh
+ * \brief Header file for the classes encapsulating functionality for the
+ * regular and radical Voronoi tessellations. */
+
+#ifndef VOROPP_RAD_OPTION_HH
+#define VOROPP_RAD_OPTION_HH
+
+#include <cmath>
+
+namespace voro {
+
+/** \brief Class containing all of the routines that are specific to computing
+ * the regular Voronoi tessellation.
+ *
+ * The container and container_periodic classes are derived from this class,
+ * and during the Voronoi cell computation, these routines are used to create
+ * the regular Voronoi tessellation. */
+class radius_mono {
+ protected:
+ /** This is called prior to computing a Voronoi cell for a
+ * given particle to initialize any required constants.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] s the index of the particle within the block. */
+ inline void r_init(int ijk,int s) {}
+ /** Sets a required constant to be used when carrying out a
+ * plane bounds check. */
+ inline void r_prime(double rv) {}
+ /** Carries out a radius bounds check.
+ * \param[in] crs the radius squared to be tested.
+ * \param[in] mrs the current maximum distance to a Voronoi
+ * vertex multiplied by two.
+ * \return True if particles at this radius could not possibly
+ * cut the cell, false otherwise. */
+ inline bool r_ctest(double crs,double mrs) {return crs>mrs;}
+ /** Scales a plane displacement during a plane bounds check.
+ * \param[in] lrs the plane displacement.
+ * \return The scaled value. */
+ inline double r_cutoff(double lrs) {return lrs;}
+ /** Adds the maximum radius squared to a given value.
+ * \param[in] rs the value to consider.
+ * \return The value with the radius squared added. */
+ inline double r_max_add(double rs) {return rs;}
+ /** Subtracts the radius squared of a particle from a given
+ * value.
+ * \param[in] rs the value to consider.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return The value with the radius squared subtracted. */
+ inline double r_current_sub(double rs,int ijk,int q) {return rs;}
+ /** Scales a plane displacement prior to use in the plane cutting
+ * algorithm.
+ * \param[in] rs the initial plane displacement.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return The scaled plane displacement. */
+ inline double r_scale(double rs,int ijk,int q) {return rs;}
+ /** Scales a plane displacement prior to use in the plane
+ * cutting algorithm, and also checks if it could possibly cut
+ * the cell.
+ * \param[in,out] rs the plane displacement to be scaled.
+ * \param[in] mrs the current maximum distance to a Voronoi
+ * vertex multiplied by two.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell could possibly cut the cell, false
+ * otherwise. */
+ inline bool r_scale_check(double &rs,double mrs,int ijk,int q) {return rs<mrs;}
+};
+
+/** \brief Class containing all of the routines that are specific to computing
+ * the radical Voronoi tessellation.
+ *
+ * The container_poly and container_periodic_poly classes are derived from this
+ * class, and during the Voronoi cell computation, these routines are used to
+ * create the radical Voronoi tessellation. */
+class radius_poly {
+ public:
+ /** A two-dimensional array holding particle positions and radii. */
+ double **ppr;
+ /** The current maximum radius of any particle, used to
+ * determine when to cut off the radical Voronoi computation.
+ * */
+ double max_radius;
+ /** The class constructor sets the maximum particle radius to
+ * be zero. */
+ radius_poly() : max_radius(0) {}
+ protected:
+ /** This is called prior to computing a Voronoi cell for a
+ * given particle to initialize any required constants.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] s the index of the particle within the block. */
+ inline void r_init(int ijk,int s) {
+ r_rad=ppr[ijk][4*s+3]*ppr[ijk][4*s+3];
+ r_mul=r_rad-max_radius*max_radius;
+ }
+ /** Sets a required constant to be used when carrying out a
+ * plane bounds check. */
+ inline void r_prime(double rv) {r_val=1+r_mul/rv;}
+ /** Carries out a radius bounds check.
+ * \param[in] crs the radius squared to be tested.
+ * \param[in] mrs the current maximum distance to a Voronoi
+ * vertex multiplied by two.
+ * \return True if particles at this radius could not possibly
+ * cut the cell, false otherwise. */
+ inline bool r_ctest(double crs,double mrs) {return crs+r_mul>sqrt(mrs*crs);}
+ /** Scales a plane displacement during a plane bounds check.
+ * \param[in] lrs the plane displacement.
+ * \return The scaled value. */
+ inline double r_cutoff(double lrs) {return lrs*r_val;}
+ /** Adds the maximum radius squared to a given value.
+ * \param[in] rs the value to consider.
+ * \return The value with the radius squared added. */
+ inline double r_max_add(double rs) {return rs+max_radius*max_radius;}
+ /** Subtracts the radius squared of a particle from a given
+ * value.
+ * \param[in] rs the value to consider.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return The value with the radius squared subtracted. */
+ inline double r_current_sub(double rs,int ijk,int q) {
+ return rs-ppr[ijk][4*q+3]*ppr[ijk][4*q+3];
+ }
+ /** Scales a plane displacement prior to use in the plane cutting
+ * algorithm.
+ * \param[in] rs the initial plane displacement.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return The scaled plane displacement. */
+ inline double r_scale(double rs,int ijk,int q) {
+ return rs+r_rad-ppr[ijk][4*q+3]*ppr[ijk][4*q+3];
+ }
+ /** Scales a plane displacement prior to use in the plane
+ * cutting algorithm, and also checks if it could possibly cut
+ * the cell.
+ * \param[in,out] rs the plane displacement to be scaled.
+ * \param[in] mrs the current maximum distance to a Voronoi
+ * vertex multiplied by two.
+ * \param[in] ijk the block that the particle is within.
+ * \param[in] q the index of the particle within the block.
+ * \return True if the cell could possibly cut the cell, false
+ * otherwise. */
+ inline bool r_scale_check(double &rs,double mrs,int ijk,int q) {
+ double trs=rs;
+ rs+=r_rad-ppr[ijk][4*q+3]*ppr[ijk][4*q+3];
+ return rs<sqrt(mrs*trs);
+ }
+ private:
+ double r_rad,r_mul,r_val;
+};
+
+}
+#endif
diff --git a/lib/voro++/src/unitcell.cc b/lib/voro++/src/unitcell.cc
new file mode 100644
index 000000000..2bf58c809
--- /dev/null
+++ b/lib/voro++/src/unitcell.cc
@@ -0,0 +1,231 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file unitcell.cc
+ * \brief Function implementations for the unitcell class. */
+
+#include <cmath>
+#include <queue>
+
+#include "unitcell.hh"
+#include "cell.hh"
+
+namespace voro {
+
+/** Initializes the unit cell class for a particular non-orthogonal periodic
+ * geometry, corresponding to a parallelepiped with sides given by three
+ * vectors. The class constructs the unit Voronoi cell corresponding to this
+ * geometry.
+ * \param[in] (bx_) The x coordinate of the first unit vector.
+ * \param[in] (bxy_,by_) The x and y coordinates of the second unit vector.
+ * \param[in] (bxz_,byz_,bz_) The x, y, and z coordinates of the third unit
+ * vector. */
+unitcell::unitcell(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_)
+ : bx(bx_), bxy(bxy_), by(by_), bxz(bxz_), byz(byz_), bz(bz_) {
+ int i,j,l=1;
+
+ // Initialize the Voronoi cell to be a very large rectangular box
+ const double ucx=max_unit_voro_shells*bx,ucy=max_unit_voro_shells*by,ucz=max_unit_voro_shells*bz;
+ unit_voro.init(-ucx,ucx,-ucy,ucy,-ucz,ucz);
+
+ // Repeatedly cut the cell by shells of periodic image particles
+ while(l<2*max_unit_voro_shells) {
+
+ // Check to see if any of the planes from the current shell
+ // will cut the cell
+ if(unit_voro_intersect(l)) {
+
+ // If they do, apply the plane cuts from the current
+ // shell
+ unit_voro_apply(l,0,0);
+ for(i=1;i<l;i++) {
+ unit_voro_apply(l,i,0);
+ unit_voro_apply(-l,i,0);
+ }
+ for(i=-l;i<=l;i++) unit_voro_apply(i,l,0);
+ for(i=1;i<l;i++) for(j=-l+1;j<=l;j++) {
+ unit_voro_apply(l,j,i);
+ unit_voro_apply(-j,l,i);
+ unit_voro_apply(-l,-j,i);
+ unit_voro_apply(j,-l,i);
+ }
+ for(i=-l;i<=l;i++) for(j=-l;j<=l;j++) unit_voro_apply(i,j,l);
+ } else {
+
+ // Calculate a bound on the maximum y and z coordinates
+ // that could possibly cut the cell. This is based upon
+ // a geometric result that particles with z>l can't cut
+ // a cell lying within the paraboloid
+ // z<=(l*l-x*x-y*y)/(2*l). It is always a tighter bound
+ // than the one based on computing the maximum radius
+ // of a Voronoi cell vertex.
+ max_uv_y=max_uv_z=0;
+ double y,z,q,*pts=unit_voro.pts,*pp=pts;
+ while(pp<pts+3*unit_voro.p) {
+ q=*(pp++);y=*(pp++);z=*(pp++);q=sqrt(q*q+y*y+z*z);
+ if(y+q>max_uv_y) max_uv_y=y+q;
+ if(z+q>max_uv_z) max_uv_z=z+q;
+ }
+ max_uv_z*=0.5;
+ max_uv_y*=0.5;
+ return;
+ }
+ l++;
+ }
+
+ // If the routine makes it here, then the unit cell still hasn't been
+ // completely bounded by the plane cuts. Give the memory error code,
+ // because this is mainly a case of hitting a safe limit, than any
+ // inherent problem.
+ voro_fatal_error("Periodic cell computation failed",VOROPP_MEMORY_ERROR);
+}
+
+/** Applies a pair of opposing plane cuts from a periodic image point
+ * to the unit Voronoi cell.
+ * \param[in] (i,j,k) the index of the periodic image to consider. */
+inline void unitcell::unit_voro_apply(int i,int j,int k) {
+ double x=i*bx+j*bxy+k*bxz,y=j*by+k*byz,z=k*bz;
+ unit_voro.plane(x,y,z);
+ unit_voro.plane(-x,-y,-z);
+}
+
+/** Calculates whether the unit Voronoi cell intersects a given periodic image
+ * of the domain.
+ * \param[in] (dx,dy,dz) the displacement of the periodic image.
+ * \param[out] vol the proportion of the unit cell volume within this image,
+ * only computed in the case that the two intersect.
+ * \return True if they intersect, false otherwise. */
+bool unitcell::intersects_image(double dx,double dy,double dz,double &vol) {
+ const double bxinv=1/bx,byinv=1/by,bzinv=1/bz,ivol=bxinv*byinv*bzinv;
+ voronoicell c;
+ c=unit_voro;
+ dx*=2;dy*=2;dz*=2;
+ if(!c.plane(0,0,bzinv,dz+1)) return false;
+ if(!c.plane(0,0,-bzinv,-dz+1)) return false;
+ if(!c.plane(0,byinv,-byz*byinv*bzinv,dy+1)) return false;
+ if(!c.plane(0,-byinv,byz*byinv*bzinv,-dy+1)) return false;
+ if(!c.plane(bxinv,-bxy*bxinv*byinv,(bxy*byz-by*bxz)*ivol,dx+1)) return false;
+ if(!c.plane(-bxinv,bxy*bxinv*byinv,(-bxy*byz+by*bxz)*ivol,-dx+1)) return false;
+ vol=c.volume()*ivol;
+ return true;
+}
+
+/** Computes a list of periodic domain images that intersect the unit Voronoi cell.
+ * \param[out] vi a vector containing triplets (i,j,k) corresponding to domain
+ * images that intersect the unit Voronoi cell, when it is
+ * centered in the middle of the primary domain.
+ * \param[out] vd a vector containing the fraction of the Voronoi cell volume
+ * within each corresponding image listed in vi. */
+void unitcell::images(std::vector<int> &vi,std::vector<double> &vd) {
+ const int ms2=max_unit_voro_shells*2+1,mss=ms2*ms2*ms2;
+ bool *a=new bool[mss],*ac=a+max_unit_voro_shells*(1+ms2*(1+ms2)),*ap=a;
+ int i,j,k;
+ double vol;
+
+ // Initialize mask
+ while(ap<ac) *(ap++)=true;
+ *(ap++)=false;
+ while(ap<a+mss) *(ap++)=true;
+
+ // Set up the queue and add (0,0,0) image to it
+ std::queue<int> q;
+ q.push(0);q.push(0);q.push(0);
+
+ while(!q.empty()) {
+
+ // Read the next entry on the queue
+ i=q.front();q.pop();
+ j=q.front();q.pop();
+ k=q.front();q.pop();
+
+ // Check intersection of this image
+ if(intersects_image(i,j,k,vol)) {
+
+ // Add this entry to the output vectors
+ vi.push_back(i);
+ vi.push_back(j);
+ vi.push_back(k);
+ vd.push_back(vol);
+
+ // Add neighbors to the queue if they have not been
+ // tested
+ ap=ac+i+ms2*(j+ms2*k);
+ if(k>-max_unit_voro_shells&&*(ap-ms2*ms2)) {q.push(i);q.push(j);q.push(k-1);*(ap-ms2*ms2)=false;}
+ if(j>-max_unit_voro_shells&&*(ap-ms2)) {q.push(i);q.push(j-1);q.push(k);*(ap-ms2)=false;}
+ if(i>-max_unit_voro_shells&&*(ap-1)) {q.push(i-1);q.push(j);q.push(k);*(ap-1)=false;}
+ if(i<max_unit_voro_shells&&*(ap+1)) {q.push(i+1);q.push(j);q.push(k);*(ap+1)=false;}
+ if(j<max_unit_voro_shells&&*(ap+ms2)) {q.push(i);q.push(j+1);q.push(k);*(ap+ms2)=false;}
+ if(k<max_unit_voro_shells&&*(ap+ms2*ms2)) {q.push(i);q.push(j);q.push(k+1);*(ap+ms2*ms2)=false;}
+ }
+ }
+
+ // Remove mask memory
+ delete [] a;
+}
+
+/** Tests to see if a shell of periodic images could possibly cut the periodic
+ * unit cell.
+ * \param[in] l the index of the shell to consider.
+ * \return True if a point in the shell cuts the cell, false otherwise. */
+bool unitcell::unit_voro_intersect(int l) {
+ int i,j;
+ if(unit_voro_test(l,0,0)) return true;
+ for(i=1;i<l;i++) {
+ if(unit_voro_test(l,i,0)) return true;
+ if(unit_voro_test(-l,i,0)) return true;
+ }
+ for(i=-l;i<=l;i++) if(unit_voro_test(i,l,0)) return true;
+ for(i=1;i<l;i++) for(j=-l+1;j<=l;j++) {
+ if(unit_voro_test(l,j,i)) return true;
+ if(unit_voro_test(-j,l,i)) return true;
+ if(unit_voro_test(-l,-j,i)) return true;
+ if(unit_voro_test(j,-l,i)) return true;
+ }
+ for(i=-l;i<=l;i++) for(j=-l;j<=l;j++) if(unit_voro_test(i,j,l)) return true;
+ return false;
+}
+
+/** Tests to see if a plane cut from a particular periodic image will cut th
+ * unit Voronoi cell.
+ * \param[in] (i,j,k) the index of the periodic image to consider.
+ * \return True if the image cuts the cell, false otherwise. */
+inline bool unitcell::unit_voro_test(int i,int j,int k) {
+ double x=i*bx+j*bxy+k*bxz,y=j*by+k*byz,z=k*bz;
+ double rsq=x*x+y*y+z*z;
+ return unit_voro.plane_intersects(x,y,z,rsq);
+}
+
+/** Draws the periodic domain in gnuplot format.
+ * \param[in] fp the file handle to write to. */
+void unitcell::draw_domain_gnuplot(FILE *fp) {
+ fprintf(fp,"0 0 0\n%g 0 0\n%g %g 0\n%g %g 0\n",bx,bx+bxy,by,bxy,by);
+ fprintf(fp,"%g %g %g\n%g %g %g\n%g %g %g\n%g %g %g\n",bxy+bxz,by+byz,bz,bx+bxy+bxz,by+byz,bz,bx+bxz,byz,bz,bxz,byz,bz);
+ fprintf(fp,"0 0 0\n%g %g 0\n\n%g %g %g\n%g %g %g\n\n",bxy,by,bxz,byz,bz,bxy+bxz,by+byz,bz);
+ fprintf(fp,"%g 0 0\n%g %g %g\n\n%g %g 0\n%g %g %g\n\n",bx,bx+bxz,byz,bz,bx+bxy,by,bx+bxy+bxz,by+byz,bz);
+}
+
+/** Draws the periodic domain in POV-Ray format.
+ * \param[in] fp the file handle to write to. */
+void unitcell::draw_domain_pov(FILE *fp) {
+ fprintf(fp,"cylinder{0,0,0>,<%g,0,0>,rr}\n"
+ "cylinder{<%g,%g,0>,<%g,%g,0>,rr}\n",bx,bxy,by,bx+bxy,by);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",bxz,byz,bz,bx+bxz,byz,bz,bxy+bxz,by+byz,bz,bx+bxy+bxz,by+byz,bz);
+ fprintf(fp,"cylinder{<0,0,0>,<%g,%g,0>,rr}\n"
+ "cylinder{<%g,0,0>,<%g,%g,0>,rr}\n",bxy,by,bx,bx+bxy,by);
+ fprintf(fp,"cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,%g>,<%g,%g,%g>,rr}\n",bxz,byz,bz,bxy+bxz,by+byz,bz,bx+bxz,byz,bz,bx+bxy+bxz,by+byz,bz);
+ fprintf(fp,"cylinder{<0,0,0>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,0,0>,<%g,%g,%g>,rr}\n",bxz,byz,bz,bx,bx+bxz,byz,bz);
+ fprintf(fp,"cylinder{<%g,%g,0>,<%g,%g,%g>,rr}\n"
+ "cylinder{<%g,%g,0>,<%g,%g,%g>,rr}\n",bxy,by,bxy+bxz,by+byz,bz,bx+bxy,by,bx+bxy+bxz,by+byz,bz);
+ fprintf(fp,"sphere{<0,0,0>,rr}\nsphere{<%g,0,0>,rr}\n"
+ "sphere{<%g,%g,0>,rr}\nsphere{<%g,%g,0>,rr}\n",bx,bxy,by,bx+bxy,by);
+ fprintf(fp,"sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n"
+ "sphere{<%g,%g,%g>,rr}\nsphere{<%g,%g,%g>,rr}\n",bxz,byz,bz,bx+bxz,byz,bz,bxy+bxz,by+byz,bz,bx+bxy+bxz,by+byz,bz);
+}
+
+}
diff --git a/lib/voro++/src/unitcell.hh b/lib/voro++/src/unitcell.hh
new file mode 100644
index 000000000..9cee93c1d
--- /dev/null
+++ b/lib/voro++/src/unitcell.hh
@@ -0,0 +1,79 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file unitcell.hh
+ * \brief Header file for the unitcell class. */
+
+#ifndef VOROPP_UNITCELL_HH
+#define VOROPP_UNITCELL_HH
+
+#include <vector>
+
+#include "config.hh"
+#include "cell.hh"
+
+namespace voro {
+
+/** \brief Class for computation of the unit Voronoi cell associated with
+ * a 3D non-rectangular periodic domain. */
+class unitcell {
+ public:
+ /** The x coordinate of the first vector defining the periodic
+ * domain. */
+ const double bx;
+ /** The x coordinate of the second vector defining the periodic
+ * domain. */
+ const double bxy;
+ /** The y coordinate of the second vector defining the periodic
+ * domain. */
+ const double by;
+ /** The x coordinate of the third vector defining the periodic
+ * domain. */
+ const double bxz;
+ /** The y coordinate of the third vector defining the periodic
+ * domain. */
+ const double byz;
+ /** The z coordinate of the third vector defining the periodic
+ * domain. */
+ const double bz;
+ /** The computed unit Voronoi cell corresponding the given
+ * 3D non-rectangular periodic domain geometry. */
+ voronoicell unit_voro;
+ unitcell(double bx_,double bxy_,double by_,double bxz_,double byz_,double bz_);
+ /** Draws an outline of the domain in Gnuplot format.
+ * \param[in] filename the filename to write to. */
+ inline void draw_domain_gnuplot(const char* filename) {
+ FILE *fp(safe_fopen(filename,"w"));
+ draw_domain_gnuplot(fp);
+ fclose(fp);
+ }
+ void draw_domain_gnuplot(FILE *fp=stdout);
+ /** Draws an outline of the domain in Gnuplot format.
+ * \param[in] filename the filename to write to. */
+ inline void draw_domain_pov(const char* filename) {
+ FILE *fp(safe_fopen(filename,"w"));
+ draw_domain_pov(fp);
+ fclose(fp);
+ }
+ void draw_domain_pov(FILE *fp=stdout);
+ bool intersects_image(double dx,double dy,double dz,double &vol);
+ void images(std::vector<int> &vi,std::vector<double> &vd);
+ protected:
+ /** The maximum y-coordinate that could possibly cut the
+ * computed unit Voronoi cell. */
+ double max_uv_y;
+ /** The maximum z-coordinate that could possibly cut the
+ * computed unit Voronoi cell. */
+ double max_uv_z;
+ private:
+ inline void unit_voro_apply(int i,int j,int k);
+ bool unit_voro_intersect(int l);
+ inline bool unit_voro_test(int i,int j,int k);
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/v_base.cc b/lib/voro++/src/v_base.cc
new file mode 100644
index 000000000..56cb98ca0
--- /dev/null
+++ b/lib/voro++/src/v_base.cc
@@ -0,0 +1,118 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file v_base.cc
+ * \brief Function implementations for the base Voronoi container class. */
+
+#include "v_base.hh"
+#include "config.hh"
+
+namespace voro {
+
+/** This function is called during container construction. The routine scans
+ * all of the worklists in the wl[] array. For a given worklist of blocks
+ * labeled \f$w_1\f$ to \f$w_n\f$, it computes a sequence \f$r_0\f$ to
+ * \f$r_n\f$ so that $r_i$ is the minimum distance to all the blocks
+ * \f$w_{j}\f$ where \f$j>i\f$ and all blocks outside the worklist. The values
+ * of \f$r_n\f$ is calculated first, as the minimum distance to any block in
+ * the shell surrounding the worklist. The \f$r_i\f$ are then computed in
+ * reverse order by considering the distance to \f$w_{i+1}\f$. */
+voro_base::voro_base(int nx_,int ny_,int nz_,double boxx_,double boxy_,double boxz_) :
+ nx(nx_), ny(ny_), nz(nz_), nxy(nx_*ny_), nxyz(nxy*nz_), boxx(boxx_), boxy(boxy_), boxz(boxz_),
+ xsp(1/boxx_), ysp(1/boxy_), zsp(1/boxz_), mrad(new double[wl_hgridcu*wl_seq_length]) {
+ const unsigned int b1=1<<21,b2=1<<22,b3=1<<24,b4=1<<25,b5=1<<27,b6=1<<28;
+ const double xstep=boxx/wl_fgrid,ystep=boxy/wl_fgrid,zstep=boxz/wl_fgrid;
+ int i,j,k,lx,ly,lz,q;
+ unsigned int f,*e=const_cast<unsigned int*> (wl);
+ double xlo,ylo,zlo,xhi,yhi,zhi,minr,*radp=mrad;
+ for(zlo=0,zhi=zstep,lz=0;lz<wl_hgrid;zlo=zhi,zhi+=zstep,lz++) {
+ for(ylo=0,yhi=ystep,ly=0;ly<wl_hgrid;ylo=yhi,yhi+=ystep,ly++) {
+ for(xlo=0,xhi=xstep,lx=0;lx<wl_hgrid;xlo=xhi,xhi+=xstep,lx++) {
+ minr=large_number;
+ for(q=e[0]+1;q<wl_seq_length;q++) {
+ f=e[q];
+ i=(f&127)-64;
+ j=(f>>7&127)-64;
+ k=(f>>14&127)-64;
+ if((f&b2)==b2) {
+ compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i-1,j,k);
+ if((f&b1)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);
+ } else if((f&b1)==b1) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i+1,j,k);
+ if((f&b4)==b4) {
+ compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j-1,k);
+ if((f&b3)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);
+ } else if((f&b3)==b3) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j+1,k);
+ if((f&b6)==b6) {
+ compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k-1);
+ if((f&b5)==0) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);
+ } else if((f&b5)==b5) compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k+1);
+ }
+ q--;
+ while(q>0) {
+ radp[q]=minr;
+ f=e[q];
+ i=(f&127)-64;
+ j=(f>>7&127)-64;
+ k=(f>>14&127)-64;
+ compute_minimum(minr,xlo,xhi,ylo,yhi,zlo,zhi,i,j,k);
+ q--;
+ }
+ *radp=minr;
+ e+=wl_seq_length;
+ radp+=wl_seq_length;
+ }
+ }
+ }
+}
+
+/** Computes the minimum distance from a subregion to a given block. If this distance
+ * is smaller than the value of minr, then it passes
+ * \param[in,out] minr a pointer to the current minimum distance. If the distance
+ * computed in this function is smaller, then this distance is
+ * set to the new one.
+ * \param[out] (xlo,ylo,zlo) the lower coordinates of the subregion being
+ * considered.
+ * \param[out] (xhi,yhi,zhi) the upper coordinates of the subregion being
+ * considered.
+ * \param[in] (ti,tj,tk) the coordinates of the block. */
+void voro_base::compute_minimum(double &minr,double &xlo,double &xhi,double &ylo,double &yhi,double &zlo,double &zhi,int ti,int tj,int tk) {
+ double radsq,temp;
+ if(ti>0) {temp=boxx*ti-xhi;radsq=temp*temp;}
+ else if(ti<0) {temp=xlo-boxx*(1+ti);radsq=temp*temp;}
+ else radsq=0;
+
+ if(tj>0) {temp=boxy*tj-yhi;radsq+=temp*temp;}
+ else if(tj<0) {temp=ylo-boxy*(1+tj);radsq+=temp*temp;}
+
+ if(tk>0) {temp=boxz*tk-zhi;radsq+=temp*temp;}
+ else if(tk<0) {temp=zlo-boxz*(1+tk);radsq+=temp*temp;}
+
+ if(radsq<minr) minr=radsq;
+}
+
+/** Checks to see whether "%n" appears in a format sequence to determine
+ * whether neighbor information is required or not.
+ * \param[in] format the format string to check.
+ * \return True if a "%n" is found, false otherwise. */
+bool voro_base::contains_neighbor(const char *format) {
+ char *fmp=(const_cast<char*>(format));
+
+ // Check to see if "%n" appears in the format sequence
+ while(*fmp!=0) {
+ if(*fmp=='%') {
+ fmp++;
+ if(*fmp=='n') return true;
+ else if(*fmp==0) return false;
+ }
+ fmp++;
+ }
+
+ return false;
+}
+
+#include "v_base_wl.cc"
+
+}
diff --git a/lib/voro++/src/v_base.hh b/lib/voro++/src/v_base.hh
new file mode 100644
index 000000000..0436a75d8
--- /dev/null
+++ b/lib/voro++/src/v_base.hh
@@ -0,0 +1,88 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file v_base.hh
+ * \brief Header file for the base Voronoi container class. */
+
+#ifndef VOROPP_V_BASE_HH
+#define VOROPP_V_BASE_HH
+
+#include "worklist.hh"
+
+namespace voro {
+
+/** \brief Class containing data structures common across all particle container classes.
+ *
+ * This class contains constants and data structures that are common across all
+ * particle container classes. It contains constants setting the size of the
+ * underlying subgrid of blocks that forms the basis of the Voronoi cell
+ * computations. It also constructs bound tables that are used in the Voronoi
+ * cell computation, and contains a number of routines that are common across
+ * all container classes. */
+class voro_base {
+ public:
+ /** The number of blocks in the x direction. */
+ const int nx;
+ /** The number of blocks in the y direction. */
+ const int ny;
+ /** The number of blocks in the z direction. */
+ const int nz;
+ /** A constant, set to the value of nx multiplied by ny, which
+ * is used in the routines that step through blocks in
+ * sequence. */
+ const int nxy;
+ /** A constant, set to the value of nx*ny*nz, which is used in
+ * the routines that step through blocks in sequence. */
+ const int nxyz;
+ /** The size of a computational block in the x direction. */
+ const double boxx;
+ /** The size of a computational block in the y direction. */
+ const double boxy;
+ /** The size of a computational block in the z direction. */
+ const double boxz;
+ /** The inverse box length in the x direction. */
+ const double xsp;
+ /** The inverse box length in the y direction. */
+ const double ysp;
+ /** The inverse box length in the z direction. */
+ const double zsp;
+ /** An array to hold the minimum distances associated with the
+ * worklists. This array is initialized during container
+ * construction, by the initialize_radii() routine. */
+ double *mrad;
+ /** The pre-computed block worklists. */
+ static const unsigned int wl[wl_seq_length*wl_hgridcu];
+ bool contains_neighbor(const char* format);
+ voro_base(int nx_,int ny_,int nz_,double boxx_,double boxy_,double boxz_);
+ ~voro_base() {delete [] mrad;}
+ protected:
+ /** A custom int function that returns consistent stepping
+ * for negative numbers, so that (-1.5, -0.5, 0.5, 1.5) maps
+ * to (-2,-1,0,1).
+ * \param[in] a the number to consider.
+ * \return The value of the custom int operation. */
+ inline int step_int(double a) {return a<0?int(a)-1:int(a);}
+ /** A custom modulo function that returns consistent stepping
+ * for negative numbers. For example, (-2,-1,0,1,2) step_mod 2
+ * is (0,1,0,1,0).
+ * \param[in] (a,b) the input integers.
+ * \return The value of a modulo b, consistent for negative
+ * numbers. */
+ inline int step_mod(int a,int b) {return a>=0?a%b:b-1-(b-1-a)%b;}
+ /** A custom integer division function that returns consistent
+ * stepping for negative numbers. For example, (-2,-1,0,1,2)
+ * step_div 2 is (-1,-1,0,0,1).
+ * \param[in] (a,b) the input integers.
+ * \return The value of a div b, consistent for negative
+ * numbers. */
+ inline int step_div(int a,int b) {return a>=0?a/b:-1+(a+1)/b;}
+ private:
+ void compute_minimum(double &minr,double &xlo,double &xhi,double &ylo,double &yhi,double &zlo,double &zhi,int ti,int tj,int tk);
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/v_base_wl.cc b/lib/voro++/src/v_base_wl.cc
new file mode 100644
index 000000000..85c6d533e
--- /dev/null
+++ b/lib/voro++/src/v_base_wl.cc
@@ -0,0 +1,79 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file v_base_wl.cc
+ * \brief The table of block worklists that are used during the cell
+ * computation, which is part of the voro_base class.
+ *
+ * This file is automatically generated by worklist_gen.pl and it is not
+ * intended to be edited by hand. */
+
+const unsigned int voro_base::wl[wl_seq_length*wl_hgridcu]={
+ 7,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x10fe0bf,0x11020bf,0x11020c0,0x10fe0c0,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x30fdf3f,0x3101f3f,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x12fe0c1,0x13020c1,0x91060c0,0x91060bf,0x8306041,0x8305fc1,0x3301f41,0x32fdf41,0x182f9fc1,0x182fa041,0x190fa0c0,0x190fa0bf,0x16fe0be,0x17020be,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x3701f3e,0x36fdf3e,0x186f9fbe,0x186fa03e,0x1b0f9f3f,0x1b0f9f40,0x93060c1,0x192fa0c1,0x97060be,0xb305f41,0x1b2f9f41,0x196fa0be,0xb705f3e,0x1b6f9f3e,
+ 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0xfdfc1,0x101fc1,0x102041,0xfe041,0x10fe0c0,0x11020c0,0x8106040,0x8105fc0,0x8105fbf,0x810603f,0x11020bf,0x10fe0bf,0x180fa040,0x180f9fc0,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x180f9fbf,0x180fa03f,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x8105fc1,0x8106041,0x11020c1,0x10fe0c1,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x91060c0,0x91060bf,0x190fa0c0,0x190fa0bf,0xb105f40,0xb105f3f,0x8705fbe,0x870603e,0x97020be,0x16fe0be,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x1b6f9fbe,0x196fa03e,0x93060c1,0xb305f41,0x192fa0c1,0x1b2f9f41,0x1b2fdfc2,0xb301fc2,0x9302042,0x192fe042,
+ 11,0x101fc0,0xfe040,0xfdfc0,0xfdfbf,0x101fbf,0x10203f,0xfe03f,0xfe041,0x102041,0x101fc1,0xfdfc1,0x8105fc0,0x8106040,0x11020c0,0x10fe0c0,0x10fe0bf,0x11020bf,0x810603f,0x8105fbf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x8105fc1,0x8106041,0x11020c1,0x10fe0c1,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x91060c0,0x91060bf,0xb105f40,0xb105f3f,0x190fa0c0,0x190fa0bf,0x93060c1,0x1b0f9f40,0x1b0f9f3f,0xb305f41,0x192fa0c1,0x16fe0be,0x17020be,0x970603e,0x8705fbe,0xb701f3e,0x36fdf3e,0x1b2f9f41,0x1b2fdfc2,0x192fe042,0x9302042,0xb301fc2,0x1b6f9fbe,0x196fa03e,
+ 11,0x101fc0,0xfe040,0xfdfc0,0xfdfbf,0x101fbf,0x10203f,0xfe03f,0xfe041,0x102041,0x101fc1,0xfdfc1,0x8105fc0,0x8106040,0x11020c0,0x10fe0c0,0x10fe0bf,0x11020bf,0x810603f,0x8105fbf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x10fe0c1,0x11020c1,0x8106041,0x8105fc1,0x3101f3f,0x30fdf3f,0x180f9fbf,0x180fa03f,0x180fa041,0x180f9fc1,0x30fdf41,0x3101f41,0x91060c0,0x91060bf,0x70203e,0x701fbe,0x6fdfbe,0x6fe03e,0x190fa0c0,0xb105f40,0xb105f3f,0x93060c1,0x190fa0bf,0x192fa0c1,0x1b0f9f40,0x1b0f9f3f,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f41,0x16fe0be,0x17020be,0x970603e,0x8705fbe,0xb701f3e,0x36fdf3e,0x1b6f9fbe,0x196fa03e,
+ 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0xfe0bf,0x1020bf,0x1020c0,0xfe0c0,0x2fe041,0x302041,0x8106040,0x810603f,0x8105fbf,0x8105fc0,0x301fc1,0x2fdfc1,0x180fa040,0x180fa03f,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x180f9fbf,0x180f9fc0,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x81060bf,0x81060c0,0x3020c1,0x2fe0c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x8306041,0x8305fc1,0x182fa041,0x182f9fc1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0xb301f41,0x32fdf41,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x1b6f9f3f,0x1b2f9f40,0x93060c1,0x97060be,0x192fa0c1,0x196fa0be,0x196fe13f,0x970213f,0x9302140,0x192fe140,
+ 9,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0xfdfbf,0x101fbf,0x102041,0xfe041,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0xfdfc1,0x101fc1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x10fe0c1,0x11020c1,0x70203e,0x6fe03e,0x6fdfbe,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x8106041,0x91060c0,0x91060bf,0x8305fc1,0x180fa041,0x190fa0c0,0x190fa0bf,0x180f9fc1,0x30fdf41,0x3301f41,0x17020be,0x16fe0be,0x93060c1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x192fa0c1,0x1b0f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0x1b6fdf3e,0xb701f3e,0x97060be,0xb305f41,0x1b2f9f41,0x1b2fdfc2,0x192fe042,0xa302042,
+ 11,0xfe040,0x101fc0,0xfdfc0,0xfe03f,0x10203f,0x101fbf,0xfdfbf,0xfe041,0x102041,0x101fc1,0xfdfc1,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0x8106040,0x8105fc0,0x810603f,0x8105fbf,0x11020c1,0x10fe0c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x30fdf40,0x3101f40,0x8106041,0x8105fc1,0x3101f3f,0x30fdf3f,0x91060c0,0x91060bf,0x180fa041,0x180f9fc1,0x6fe03e,0x70203e,0x701fbe,0x6fdfbe,0x190fa0c0,0x190fa0bf,0x30fdf41,0x3101f41,0x93060c1,0x192fa0c1,0xb105f40,0xb105f3f,0x17020be,0x16fe0be,0x970603e,0x8705fbe,0x1b0f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f41,0x1b6fdf3e,0xb701f3e,
+ 11,0xfe040,0x101fc0,0xfdfc0,0xfe03f,0x10203f,0x101fbf,0xfdfbf,0xfe041,0x102041,0x101fc1,0xfdfc1,0x10fe0c0,0x11020c0,0x11020bf,0x10fe0bf,0x8106040,0x8105fc0,0x11020c1,0x10fe0c1,0x810603f,0x8105fbf,0x180fa040,0x180f9fc0,0x8106041,0x8105fc1,0x3101f40,0x180fa03f,0x180f9fbf,0x30fdf40,0x180fa041,0x180f9fc1,0x91060c0,0x3101f3f,0x30fdf3f,0x30fdf41,0x3101f41,0x91060bf,0x190fa0c0,0x91060c1,0x190fa0bf,0x186fe03e,0x70203e,0x3701fbe,0x1b6fdfbe,0x190fa0c1,0x182fe042,0xb105f40,0xb105f3f,0x302042,0x3301fc2,0x1b2fdfc2,0x1b0f9f40,0x1b6f9f3f,0xb105f41,0x17020be,0x196fe0be,0x970603e,0xb705fbe,0x1b2f9f41,0x192fe0c2,0x13020c2,0x9306042,0xb305fc2,
+ 11,0x10203f,0xfe040,0xfe03f,0xfdfbf,0x101fbf,0x101fc0,0xfdfc0,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x810603f,0x8106040,0x302041,0x2fe041,0x2fdfc1,0x301fc1,0x8105fc0,0x8105fbf,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x81060bf,0x81060c0,0x3020c1,0x2fe0c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x8306041,0x8305fc1,0x870603e,0x8705fbe,0x182fa041,0x182f9fc1,0x93060c1,0x186fa03e,0x186f9fbe,0x97060be,0x192fa0c1,0x32fdf41,0x3301f41,0xb305f40,0xb105f3f,0xb701f3e,0x36fdf3e,0x196fa0be,0x196fe13f,0x192fe140,0x9302140,0x970213f,0x1b6f9f3f,0x1b2f9f40,
+ 11,0xfe040,0x10203f,0xfe03f,0xfdfc0,0x101fc0,0x101fbf,0xfdfbf,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x3020c1,0x2fe0c1,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x6fe03e,0x70203e,0x81060c0,0x81060bf,0x701fbe,0x6fdfbe,0x8306041,0x8305fc1,0x180fa0c0,0x180fa0bf,0x30fdf40,0x3101f40,0x3101f3f,0x30fdf3f,0x182fa041,0x182f9fc1,0x6fe0be,0x7020be,0x93060c1,0x192fa0c1,0x870603e,0x8705fbe,0x3301f41,0x32fdf41,0xb305f40,0xb105f3f,0x186fa03e,0x186f9fbe,0x1b0f9f3f,0x1b2f9f40,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa0be,0x1b6fdf3e,0xb701f3e,
+ 15,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfdfbf,0x101fbf,0x102041,0xfe041,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0xfdfc1,0x101fc1,0x8106040,0x1020c1,0xfe0c1,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x8106041,0x81060c0,0x81060bf,0x8105fc1,0x180fa041,0x180fa0c0,0x180fa0bf,0x6fe03e,0x70203e,0x3101f40,0x30fdf40,0x180f9fc1,0x30fdf3f,0x3101f3f,0x3701fbe,0x36fdfbe,0x93060c1,0x192fa0c1,0x6fe0be,0x7020be,0x3101f41,0x30fdf41,0xb305f40,0xb105f3f,0x970603e,0xb705fbe,0x196fa03e,0x186f9fbe,0x1b2f9f40,0x1b6f9f3f,0x192fe042,0x9302042,0xb301fc2,0x1b2fdfc2,0x192fe140,0x9302140,0x970213f,0x196fe13f,
+ 15,0xfe040,0xfdfc0,0x101fc0,0x10203f,0xfe03f,0xfdfbf,0x101fbf,0x102041,0xfe041,0xfdfc1,0x101fc1,0x1020c0,0xfe0c0,0xfe0bf,0x1020bf,0x1020c1,0xfe0c1,0x8106040,0x8105fc0,0x810603f,0x8105fbf,0x180fa040,0x180f9fc0,0x8106041,0x8105fc1,0x81060c0,0x180fa03f,0x180f9fbf,0x180fa041,0x180f9fc1,0x180fa0c0,0x81060bf,0x91060c1,0x3101f40,0x30fdf40,0x30fdf3f,0x180fa0bf,0x190fa0c1,0x3101f3f,0x3101f41,0x30fdf41,0x186fe03e,0x70203e,0x3701fbe,0x1b6fdfbe,0x186fe0be,0x7020be,0x8302042,0x182fe042,0x1b2fdfc2,0xb301fc2,0xb105f40,0xb705f3f,0xb305f41,0x1b2f9f40,0x1b6f9f3f,0x192fe140,0x9302140,0x93020c2,0x192fe0c2,0x196fe13f,0x970213f,0xa70603e,
+ 11,0x10203f,0xfe040,0xfe03f,0xfdfbf,0x101fbf,0x101fc0,0xfdfc0,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x810603f,0x8106040,0x302041,0x2fe041,0x2fdfc1,0x301fc1,0x8105fc0,0x8105fbf,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x2fe0c1,0x3020c1,0x81060c0,0x81060bf,0x701fbe,0x6fdfbe,0x180f9fbf,0x180f9fc0,0x180fa0c0,0x180fa0bf,0x6fe0be,0x7020be,0x8306041,0x8305fc1,0x3101f40,0x3101f3f,0x30fdf3f,0x30fdf40,0x182fa041,0x870603e,0x8705fbe,0x93060c1,0x182f9fc1,0x192fa0c1,0x186fa03e,0x186f9fbe,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa0be,0x32fdf41,0x3301f41,0xb305f40,0xb105f3f,0xb701f3e,0x36fdf3e,0x1b6f9f3f,0x1b2f9f40,
+ 11,0xfe040,0x10203f,0xfe03f,0xfdfc0,0x101fc0,0x101fbf,0xfdfbf,0xfe0c0,0x1020c0,0x1020bf,0xfe0bf,0x2fe041,0x302041,0x301fc1,0x2fdfc1,0x8106040,0x810603f,0x3020c1,0x2fe0c1,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x81060c0,0x81060bf,0x70203e,0x180f9fc0,0x180f9fbf,0x6fe03e,0x180fa0c0,0x180fa0bf,0x8306041,0x701fbe,0x6fdfbe,0x6fe0be,0x7020be,0x8305fc1,0x182fa041,0x83060c1,0x182f9fc1,0x1b0fdf40,0x3101f40,0x3701f3f,0x1b6fdf3f,0x182fa0c1,0x190fe140,0x870603e,0x8705fbe,0x1102140,0x170213f,0x196fe13f,0x186fa03e,0x1b6f9fbe,0x87060be,0x3301f41,0x1b2fdf41,0xb305f40,0xb705f3f,0x196fa0be,0x192fe141,0x1302141,0x9306140,0x970613f,
+ 15,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfdfbf,0x101fbf,0x1020c0,0xfe0c0,0xfe0bf,0x1020bf,0x102041,0xfe041,0xfdfc1,0x101fc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x180fa040,0x180fa03f,0x81060c0,0x81060bf,0x8106041,0x180f9fc0,0x180f9fbf,0x180fa0c0,0x180fa0bf,0x180fa041,0x8105fc1,0x83060c1,0x70203e,0x6fe03e,0x6fdfbe,0x180f9fc1,0x182fa0c1,0x701fbe,0x7020be,0x6fe0be,0x1b0fdf40,0x3101f40,0x3701f3f,0x1b6fdf3f,0x1b0fdf41,0x3101f41,0x9102140,0x190fe140,0x196fe13f,0x970213f,0x870603e,0xb705fbe,0x97060be,0x196fa03e,0x1b6f9fbe,0x192fe042,0x9302042,0x9302141,0x192fe141,0x1b2fdfc2,0xb301fc2,0xb505f40,
+ 17,0xfe040,0xfe03f,0x10203f,0x101fc0,0xfdfc0,0xfe041,0x102041,0x1020c0,0xfe0c0,0xfdfbf,0x101fbf,0x1020bf,0xfe0bf,0xfdfc1,0x101fc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8106041,0x81060c0,0x180fa040,0x180fa03f,0x180f9fc0,0x8105fbf,0x81060bf,0x8105fc1,0x180fa041,0x180fa0c0,0x180f9fbf,0x81060c1,0x180fa0bf,0x180f9fc1,0x180fa0c1,0x186fe03e,0x70203e,0x3101f40,0x1b0fdf40,0x1b0fdf3f,0x3101f3f,0x3701fbe,0x1b6fdfbe,0x186fe0be,0x7020be,0x9102140,0x190fe140,0x182fe042,0x8302042,0x3101f41,0x1b0fdf41,0x1b2fdfc2,0xb301fc2,0x83020c2,0x182fe0c2,0x196fe13f,0x970213f,0x9302141,0x192fe141,0x970603e,0xb305f40,0xb105f3f,0xb705fbe,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x105fbf,0x10603f,0x106040,0x105fc0,0x301fc1,0x302041,0x11020c0,0x11020bf,0x10fe0bf,0x10fe0c0,0x2fe041,0x2fdfc1,0x3101f40,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x30fdf3f,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x11060bf,0x11060c0,0x306041,0x305fc1,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x13020c1,0x12fe0c1,0x3301f41,0x32fdf41,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0x192fa041,0x182f9fc1,0x3701f3e,0x36fdf3e,0x186f9fbe,0x196fa03e,0x1b6f9f3f,0x1b2f9f40,0x93060c1,0x97060be,0xb305f41,0xb705f3e,0xb709fbf,0x970a03f,0x930a040,0xb309fc0,
+ 9,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0xfdfbf,0xfe03f,0x102041,0x101fc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0xfdfc1,0xfe041,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x8105fc1,0x8106041,0x70203e,0x701fbe,0x6fdfbe,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x11020c1,0x91060c0,0x91060bf,0x12fe0c1,0x3101f41,0xb105f40,0xb105f3f,0x30fdf41,0x180f9fc1,0x182fa041,0x870603e,0x8705fbe,0x93060c1,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0xb305f41,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x1b6f9fbe,0x196fa03e,0x97060be,0x192fa0c1,0x1b2f9f41,0x1b2fdfc2,0xb301fc2,0x11302042,
+ 11,0x101fc0,0xfe040,0xfdfc0,0x101fbf,0x10203f,0xfe03f,0xfdfbf,0x101fc1,0x102041,0xfe041,0xfdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x11020c0,0x10fe0c0,0x11020bf,0x10fe0bf,0x8106041,0x8105fc1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x180f9fc0,0x180fa040,0x11020c1,0x10fe0c1,0x180fa03f,0x180f9fbf,0x91060c0,0x91060bf,0x3101f41,0x30fdf41,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0xb105f40,0xb105f3f,0x180f9fc1,0x180fa041,0x93060c1,0xb305f41,0x190fa0c0,0x190fa0bf,0x870603e,0x8705fbe,0x97020be,0x16fe0be,0x1b0f9f40,0x1b0f9f3f,0x36fdf3e,0xb701f3e,0x192fa0c1,0x192fe042,0x9302042,0xb301fc2,0x1b2fdfc2,0x1b2f9f41,0x1b6f9fbe,0x196fa03e,
+ 11,0x101fc0,0xfe040,0xfdfc0,0x101fbf,0x10203f,0xfe03f,0xfdfbf,0x101fc1,0x102041,0xfe041,0xfdfc1,0x8105fc0,0x8106040,0x810603f,0x8105fbf,0x11020c0,0x10fe0c0,0x8106041,0x8105fc1,0x11020bf,0x10fe0bf,0x3101f40,0x30fdf40,0x11020c1,0x10fe0c1,0x180fa040,0x3101f3f,0x30fdf3f,0x180f9fc0,0x3101f41,0x30fdf41,0x91060c0,0x180fa03f,0x180f9fbf,0x180f9fc1,0x180fa041,0x91060bf,0xb105f40,0x91060c1,0xb105f3f,0x3701fbe,0x70203e,0x186fe03e,0x1b6fdfbe,0xb105f41,0x3301fc2,0x190fa0c0,0x190fa0bf,0x302042,0x182fe042,0x1b2fdfc2,0x1b0f9f40,0x1b6f9f3f,0x190fa0c1,0x870603e,0xb705fbe,0x97020be,0x196fe0be,0x1b2f9f41,0xb305fc2,0x8306042,0x93020c2,0x192fe0c2,
+ 9,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0xfe0bf,0xfe0c0,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x81060bf,0x81060c0,0x3101f40,0x3101f3f,0x30fdf3f,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x3020c1,0x8306041,0x8305fc1,0x12fe0c1,0x7020be,0x870603e,0x8705fbe,0x6fe0be,0x180fa0bf,0x190fa0c0,0xb105f40,0xb105f3f,0x93060c1,0x3301f41,0x32fdf41,0x182f9fc1,0x182fa041,0x97060be,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x1b6f9f3f,0x1b2f9f40,0xb305f41,0x192fa0c1,0x196fa0be,0x196fe13f,0x970213f,0x11302140,
+ 7,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x302041,0x1020c0,0x8106040,0x810603f,0x1020bf,0xfe0c0,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0xfe0bf,0x2fdfc1,0x3020c1,0x8306041,0x81060c0,0x81060bf,0x2fe0c1,0x8305fc1,0x3101f40,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x30fdf40,0x30fdf3f,0x6fdfbe,0x180f9fbf,0x180fa0c0,0x182fa041,0x93060c1,0x870603e,0x7020be,0x6fe0be,0x180fa0bf,0x182f9fc1,0x32fdf41,0x3301f41,0xb105f40,0xb105f3f,0x8705fbe,0x97060be,0x192fa0c1,0xb305f41,0xb701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x1b6f9fbe,0x196fa03e,0x196fe13f,0x9302140,0x970213f,0x192fe140,
+ 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x11020c0,0x8106040,0x8105fc0,0x10fe0c0,0x11020bf,0x810603f,0x8105fbf,0x10fe0bf,0x11020c1,0x8106041,0x8105fc1,0x10fe0c1,0x91060c0,0x91060bf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x701fbe,0x70203e,0x6fe03e,0x6fdfbe,0x93060c1,0x3101f41,0x30fdf41,0x180f9fc1,0x180fa041,0x190fa0c0,0x190fa0bf,0xb105f40,0xb105f3f,0x8705fbe,0x870603e,0x17020be,0x16fe0be,0x192fa0c1,0xb305f41,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0x1b2f9f40,0x1b0f9f3f,0x186f9fbe,0x196fa03e,0x97060be,0xb701f3e,0x1b6fdf3e,
+ 11,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x11020c0,0x8106040,0x8105fc0,0x10fe0c0,0x11020bf,0x810603f,0x8105fbf,0x10fe0bf,0x11020c1,0x8106041,0x8105fc1,0x10fe0c1,0x91060c0,0x91060bf,0x3101f40,0x30fdf40,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x30fdf3f,0x3101f3f,0x3101f41,0x91060c1,0x180fa041,0x180f9fc1,0x30fdf41,0xb105f40,0x70203e,0x3701fbe,0x186fe03e,0x1b6fdfbe,0x190fa0c0,0x190fa0bf,0x190fa0c1,0xb105f3f,0xb105f41,0x3301fc2,0x302042,0x182fe042,0x1b2fdfc2,0x1b0f9f40,0x17020be,0x970603e,0xb705fbe,0x196fe0be,0x1b6f9f3f,0x1b2f9f41,0x13020c2,0x9306042,0xb305fc2,0x192fe0c2,
+ 11,0x10203f,0xfe040,0xfe03f,0x101fbf,0x101fc0,0xfdfc0,0xfdfbf,0x1020bf,0x1020c0,0xfe0c0,0xfe0bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0x302041,0x2fe041,0x301fc1,0x2fdfc1,0x81060c0,0x81060bf,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x180fa03f,0x180fa040,0x3020c1,0x2fe0c1,0x180f9fc0,0x180f9fbf,0x8306041,0x8305fc1,0x7020be,0x6fe0be,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x870603e,0x8705fbe,0x180fa0bf,0x180fa0c0,0x93060c1,0x97060be,0x182fa041,0x182f9fc1,0xb105f40,0xb105f3f,0xb301f41,0x32fdf41,0x186fa03e,0x186f9fbe,0x36fdf3e,0xb701f3e,0x192fa0c1,0x192fe140,0x9302140,0x970213f,0x196fe13f,0x196fa0be,0x1b6f9f3f,0x1b2f9f40,
+ 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x302041,0x8106040,0x810603f,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0x2fdfc1,0x3020c1,0x81060c0,0x81060bf,0x2fe0c1,0x8306041,0x8305fc1,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x93060c1,0x7020be,0x6fe0be,0x180fa0bf,0x180fa0c0,0x182fa041,0x182f9fc1,0x870603e,0x8705fbe,0xb105f3f,0xb105f40,0x3301f41,0x32fdf41,0x192fa0c1,0x97060be,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x196fa03e,0x186f9fbe,0x1b0f9f3f,0x1b2f9f40,0xb305f41,0xb701f3e,0x1b6fdf3e,
+ 15,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x101fbf,0xfdfbf,0x102041,0x1020c0,0xfe0c0,0xfe041,0x101fc1,0xfdfc1,0x1020bf,0xfe0bf,0x8106040,0x810603f,0x8105fc0,0x8105fbf,0x1020c1,0xfe0c1,0x8106041,0x81060c0,0x81060bf,0x8105fc1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x93060c1,0x70203e,0x6fe03e,0x3101f40,0x1b0fdf40,0x3101f3f,0x3701fbe,0x6fdfbe,0x1b6fdf3f,0x180fa041,0x180fa0c0,0x180fa0bf,0x180f9fc1,0x1b0fdf41,0x3101f41,0x7020be,0x6fe0be,0x870603e,0x8705fbe,0xb105f40,0xb705f3f,0x192fa0c1,0x192fe140,0x9302140,0x970213f,0x97060be,0x9302042,0x192fe042,0xb301fc2,0xb305f41,0x1b2fdfc2,0x196fe13f,0x196fa03e,0x1b6f9fbe,
+ 14,0xfe040,0x101fc0,0xfdfc0,0x10203f,0xfe03f,0x101fbf,0xfdfbf,0x102041,0xfe041,0x101fc1,0xfdfc1,0x1020c0,0xfe0c0,0x1020bf,0x8106040,0xfe0bf,0x8105fc0,0x1020c1,0xfe0c1,0x810603f,0x8105fbf,0x8106041,0x8105fc1,0x81060c0,0x81060bf,0x91060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180f9fbf,0x180fa041,0x180f9fc1,0x1b0fdf40,0x3101f40,0x3101f3f,0x1b0fdf3f,0x180fa0c0,0x190fa0bf,0x186fe03e,0x70203e,0x3701fbe,0x3101f41,0x1b0fdf41,0x1b6fdfbe,0x190fa0c1,0x182fe042,0x302042,0xb105f40,0xb105f3f,0x3301fc2,0x1b2fdfc2,0x7020be,0x196fe0be,0x970603e,0xb705fbe,0xb105f41,0x9302140,0x192fe140,0x13020c2,0x192fe0c2,0x9306042,0xb305fc2,0x1170213f,
+ 11,0x10203f,0xfe040,0xfe03f,0x101fbf,0x101fc0,0xfdfc0,0xfdfbf,0x1020bf,0x1020c0,0xfe0c0,0xfe0bf,0x810603f,0x8106040,0x8105fc0,0x8105fbf,0x302041,0x2fe041,0x81060c0,0x81060bf,0x301fc1,0x2fdfc1,0x70203e,0x6fe03e,0x3020c1,0x2fe0c1,0x180fa040,0x701fbe,0x6fdfbe,0x180fa03f,0x7020be,0x6fe0be,0x8306041,0x180f9fc0,0x180f9fbf,0x180fa0bf,0x180fa0c0,0x8305fc1,0x870603e,0x83060c1,0x8705fbe,0x3701f3f,0x3101f40,0x1b0fdf40,0x1b6fdf3f,0x87060be,0x170213f,0x182fa041,0x182f9fc1,0x1102140,0x190fe140,0x196fe13f,0x186fa03e,0x1b6f9fbe,0x182fa0c1,0xb105f40,0xb705f3f,0xb301f41,0x1b2fdf41,0x196fa0be,0x970613f,0x9106140,0x9302141,0x192fe141,
+ 11,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x302041,0x8106040,0x810603f,0x2fe041,0x301fc1,0x8105fc0,0x8105fbf,0x2fdfc1,0x3020c1,0x81060c0,0x81060bf,0x2fe0c1,0x8306041,0x8305fc1,0x70203e,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x6fdfbe,0x701fbe,0x7020be,0x83060c1,0x180fa0c0,0x180fa0bf,0x6fe0be,0x870603e,0x3101f40,0x3701f3f,0x1b0fdf40,0x1b6fdf3f,0x182fa041,0x182f9fc1,0x182fa0c1,0x8705fbe,0x87060be,0x170213f,0x1102140,0x190fe140,0x196fe13f,0x186fa03e,0x3301f41,0xb305f40,0xb705f3f,0x1b2fdf41,0x1b6f9fbe,0x196fa0be,0x1302141,0x9306140,0x970613f,0x192fe141,
+ 14,0xfe040,0x10203f,0xfe03f,0x101fc0,0xfdfc0,0x101fbf,0xfdfbf,0x1020c0,0xfe0c0,0x1020bf,0xfe0bf,0x102041,0xfe041,0x101fc1,0x8106040,0xfdfc1,0x810603f,0x1020c1,0xfe0c1,0x8105fc0,0x8105fbf,0x81060c0,0x81060bf,0x8106041,0x8105fc1,0x83060c1,0x180fa040,0x180fa03f,0x180f9fc0,0x180f9fbf,0x180fa0c0,0x180fa0bf,0x186fe03e,0x70203e,0x701fbe,0x186fdfbe,0x180fa041,0x182f9fc1,0x1b0fdf40,0x3101f40,0x3701f3f,0x7020be,0x186fe0be,0x1b6fdf3f,0x182fa0c1,0x190fe140,0x1102140,0x870603e,0x8705fbe,0x170213f,0x196fe13f,0x3101f41,0x1b2fdf41,0xb305f40,0xb705f3f,0x87060be,0x9302042,0x192fe042,0x1302141,0x192fe141,0x9306140,0x970613f,0x13301fc2,
+ 17,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x1020c0,0x102041,0xfe041,0xfe0c0,0x101fbf,0xfdfbf,0x1020bf,0xfe0bf,0x101fc1,0xfdfc1,0x1020c1,0xfe0c1,0x8106040,0x810603f,0x8105fc0,0x8106041,0x81060c0,0x8105fbf,0x81060bf,0x8105fc1,0x81060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180fa0c0,0x180fa041,0x180f9fbf,0x180fa0bf,0x180f9fc1,0x180fa0c1,0x70203e,0x186fe03e,0x3101f40,0x1b0fdf40,0x3101f3f,0x3701fbe,0x186fdfbe,0x1b6fdf3f,0x3101f41,0x1b0fdf41,0x8302042,0x182fe042,0x9102140,0x7020be,0x186fe0be,0x190fe140,0x970213f,0x196fe13f,0x9102141,0xb301fc2,0x1b2fdfc2,0x93020c2,0x182fe0c2,0x192fe141,0x970603e,0xb305f40,0xb105f3f,0xb705fbe,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfdfbf,0xfe03f,0xfe040,0xfdfc0,0x105fc0,0x106040,0x10603f,0x105fbf,0x11020bf,0x11020c0,0x302041,0x301fc1,0x2fdfc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x11060bf,0x11060c0,0x306041,0x305fc1,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x13020c1,0x12fe0c1,0x17020be,0x16fe0be,0x3301f41,0x32fdf41,0x93060c1,0x3701f3e,0x36fdf3e,0x97060be,0xb305f41,0x182f9fc1,0x182fa041,0x192fa0c0,0x190fa0bf,0x196fa03e,0x186f9fbe,0xb705f3e,0xb709fbf,0xb309fc0,0x930a040,0x970a03f,0x1b6f9f3f,0x1b2f9f40,
+ 11,0x101fc0,0x10203f,0x101fbf,0xfdfc0,0xfe040,0xfe03f,0xfdfbf,0x105fc0,0x106040,0x10603f,0x105fbf,0x301fc1,0x302041,0x2fe041,0x2fdfc1,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x306041,0x305fc1,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x701fbe,0x70203e,0x11060c0,0x11060bf,0x6fe03e,0x6fdfbe,0x13020c1,0x12fe0c1,0x3105f40,0x3105f3f,0x180f9fc0,0x180fa040,0x180fa03f,0x180f9fbf,0x3301f41,0x32fdf41,0x705fbe,0x70603e,0x93060c1,0xb305f41,0x17020be,0x16fe0be,0x182fa041,0x182f9fc1,0x192fa0c0,0x190fa0bf,0x3701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb705f3e,0x1b6f9fbe,0x196fa03e,
+ 15,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0xfdfbf,0xfe03f,0x102041,0x101fc1,0x105fc0,0x106040,0x10603f,0x105fbf,0xfdfc1,0xfe041,0x11020c0,0x106041,0x105fc1,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x11020c1,0x11060c0,0x11060bf,0x10fe0c1,0x3101f41,0x3105f40,0x3105f3f,0x701fbe,0x70203e,0x180fa040,0x180f9fc0,0x30fdf41,0x180f9fbf,0x180fa03f,0x186fe03e,0x186fdfbe,0x93060c1,0xb305f41,0x705fbe,0x70603e,0x180fa041,0x180f9fc1,0x192fa0c0,0x190fa0bf,0x97020be,0x196fe0be,0xb701f3e,0x36fdf3e,0x1b2f9f40,0x1b6f9f3f,0xb301fc2,0x9302042,0x192fe042,0x1b2fdfc2,0xb309fc0,0x930a040,0x970a03f,0xb709fbf,
+ 15,0x101fc0,0xfdfc0,0xfe040,0x10203f,0x101fbf,0xfdfbf,0xfe03f,0x102041,0x101fc1,0xfdfc1,0xfe041,0x106040,0x105fc0,0x105fbf,0x10603f,0x106041,0x105fc1,0x11020c0,0x10fe0c0,0x11020bf,0x10fe0bf,0x3101f40,0x30fdf40,0x11020c1,0x10fe0c1,0x11060c0,0x3101f3f,0x30fdf3f,0x3101f41,0x30fdf41,0x3105f40,0x11060bf,0x91060c1,0x180fa040,0x180f9fc0,0x180f9fbf,0x3105f3f,0xb105f41,0x180fa03f,0x180fa041,0x180f9fc1,0x3701fbe,0x70203e,0x186fe03e,0x1b6fdfbe,0x3705fbe,0x70603e,0x1302042,0x3301fc2,0x1b2fdfc2,0x192fe042,0x190fa0c0,0x196fa0bf,0x192fa0c1,0x1b2f9f40,0x1b6f9f3f,0xb309fc0,0x930a040,0x9306042,0xb305fc2,0xb709fbf,0x970a03f,0x117020be,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfe03f,0xfe040,0xfdfc0,0xfdfbf,0x10603f,0x106040,0x105fc0,0x105fbf,0x11020bf,0x11020c0,0x10fe0c0,0x10fe0bf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x11060c0,0x11060bf,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x3101f3f,0x3101f40,0x306041,0x305fc1,0x30fdf40,0x30fdf3f,0x13020c1,0x12fe0c1,0x70603e,0x705fbe,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x17020be,0x16fe0be,0x3105f3f,0x3105f40,0x93060c1,0x97060be,0x3301f41,0x32fdf41,0x190fa0c0,0x190fa0bf,0x192fa041,0x182f9fc1,0x3701f3e,0x36fdf3e,0x186f9fbe,0x196fa03e,0xb305f41,0xb309fc0,0x930a040,0x970a03f,0xb709fbf,0xb705f3e,0x1b6f9f3f,0x1b2f9f40,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x302041,0x11020c0,0x11020bf,0x301fc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x2fdfc1,0x306041,0x11060c0,0x11060bf,0x305fc1,0x13020c1,0x12fe0c1,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x180fa03f,0x180fa040,0x180f9fc0,0x180f9fbf,0x93060c1,0x70603e,0x705fbe,0x3105f3f,0x3105f40,0x3301f41,0x32fdf41,0x17020be,0x16fe0be,0x190fa0bf,0x190fa0c0,0x182fa041,0x182f9fc1,0xb305f41,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb701f3e,0x36fdf3e,0x1b0f9f3f,0x1b2f9f40,0x192fa0c1,0x196fa03e,0x1b6f9fbe,
+ 15,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x106040,0x105fc0,0x101fc1,0xfe041,0xfdfc1,0x10603f,0x105fbf,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x106041,0x105fc1,0x11020c1,0x11060c0,0x11060bf,0x10fe0c1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x93060c1,0x70203e,0x701fbe,0x180fa040,0x1b0f9fc0,0x180fa03f,0x186fe03e,0x6fdfbe,0x1b6f9fbf,0x3101f41,0x3105f40,0x3105f3f,0x30fdf41,0x1b0f9fc1,0x180fa041,0x70603e,0x705fbe,0x17020be,0x16fe0be,0x190fa0c0,0x196fa0bf,0xb305f41,0xb309fc0,0x930a040,0x970a03f,0x97060be,0x9302042,0xb301fc2,0x192fe042,0x192fa0c1,0x1b2fdfc2,0xb709fbf,0xb701f3e,0x1b6fdf3e,
+ 14,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0xfdfbf,0x102041,0x101fc1,0xfe041,0xfdfc1,0x106040,0x105fc0,0x10603f,0x11020c0,0x105fbf,0x10fe0c0,0x106041,0x105fc1,0x11020bf,0x10fe0bf,0x11020c1,0x10fe0c1,0x11060c0,0x11060bf,0x91060c1,0x3101f40,0x30fdf40,0x3101f3f,0x30fdf3f,0x3101f41,0x30fdf41,0x1b0f9fc0,0x180fa040,0x180fa03f,0x1b0f9fbf,0x3105f40,0xb105f3f,0x3701fbe,0x70203e,0x186fe03e,0x180fa041,0x1b0f9fc1,0x1b6fdfbe,0xb105f41,0x3301fc2,0x302042,0x190fa0c0,0x190fa0bf,0x182fe042,0x1b2fdfc2,0x70603e,0xb705fbe,0x97020be,0x196fe0be,0x190fa0c1,0x930a040,0xb309fc0,0x8306042,0xb305fc2,0x93020c2,0x192fe0c2,0xa70a03f,
+ 15,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0x10603f,0x106040,0x105fc0,0x105fbf,0xfe0bf,0xfe0c0,0x302041,0x1060c0,0x1060bf,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x3020c1,0x306041,0x305fc1,0x2fe0c1,0x7020be,0x70603e,0x705fbe,0x3101f3f,0x3101f40,0x180fa040,0x180fa03f,0x6fe0be,0x180f9fbf,0x180f9fc0,0x1b0fdf40,0x1b0fdf3f,0x93060c1,0x97060be,0x3105f3f,0x3105f40,0x180fa0c0,0x180fa0bf,0x192fa041,0x182f9fc1,0xb301f41,0x1b2fdf41,0xb701f3e,0x36fdf3e,0x196fa03e,0x1b6f9fbe,0x970213f,0x9302140,0x192fe140,0x196fe13f,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,
+ 15,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x106040,0x10603f,0x1020bf,0xfe0c0,0xfe0bf,0x105fc0,0x105fbf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x1060c0,0x1060bf,0x3020c1,0x306041,0x305fc1,0x2fe0c1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x93060c1,0x3101f40,0x3101f3f,0x180fa040,0x186fa03f,0x180f9fc0,0x1b0fdf40,0x30fdf3f,0x1b6f9fbf,0x7020be,0x70603e,0x705fbe,0x6fe0be,0x186fa0bf,0x180fa0c0,0x3105f40,0x3105f3f,0x3301f41,0x32fdf41,0x182fa041,0x1b2f9fc1,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb305f41,0x9302140,0x970213f,0x192fe140,0x192fa0c1,0x196fe13f,0xb709fbf,0xb701f3e,0x1b6fdf3e,
+ 16,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0xfdfc0,0xfdfbf,0x102041,0x1020c0,0x106040,0x10603f,0x1020bf,0xfe0c0,0xfe041,0x101fc1,0x105fc0,0x105fbf,0xfe0bf,0xfdfc1,0x1020c1,0x106041,0x1060c0,0x1060bf,0xfe0c1,0x105fc1,0x93060c1,0x70203e,0x3101f40,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x3701f3f,0x30fdf40,0x1b0f9fc0,0x180f9fbf,0x186fdfbe,0x1b6fdf3f,0x3101f41,0x3105f40,0xb105f3f,0x70603e,0x7020be,0x6fe0be,0x180fa0c0,0x180fa041,0x182f9fc1,0x1b2fdf41,0xb705fbe,0x186fa0bf,0x192fa0c1,0x97060be,0xb305f41,0x9302042,0x192fe042,0x13301fc2,0x930a040,0x970a03f,0xb509fc0,0x9302140,0x970213f,0x192fe140,0x196fe13f,
+ 15,0x101fc0,0xfe040,0xfdfc0,0x10203f,0x101fbf,0xfe03f,0x102041,0x101fc1,0xfdfbf,0xfe041,0x1020c0,0x106040,0xfdfc1,0x105fc0,0xfe0c0,0x1020bf,0x10603f,0x105fbf,0xfe0bf,0x1020c1,0x106041,0x105fc1,0xfe0c1,0x1060c0,0x11060bf,0x91060c1,0x3101f40,0x180fa040,0x180f9fc0,0x1b0fdf40,0x3101f3f,0x30fdf3f,0x180fa03f,0x1b0f9fbf,0x180fa041,0x180f9fc1,0x3101f41,0x1b0fdf41,0x70203e,0x3701fbe,0x186fe03e,0x1b6fdfbe,0x3105f40,0xb105f3f,0x180fa0c0,0x190fa0bf,0x192fa0c1,0x302042,0x3301fc2,0xb305f41,0x182fe042,0x1b2fdfc2,0x17020be,0x170603e,0xb705fbe,0x196fe0be,0x9502140,0x194fe140,0x193020c2,0xa306042,0x930a040,0xb309fc0,0xa70a03f,
+ 15,0x10203f,0xfe03f,0xfe040,0x101fc0,0x101fbf,0xfdfbf,0xfdfc0,0x1020c0,0x1020bf,0xfe0bf,0xfe0c0,0x106040,0x10603f,0x105fbf,0x105fc0,0x1060c0,0x1060bf,0x302041,0x2fe041,0x301fc1,0x2fdfc1,0x70203e,0x6fe03e,0x3020c1,0x2fe0c1,0x306041,0x701fbe,0x6fdfbe,0x7020be,0x6fe0be,0x70603e,0x305fc1,0x83060c1,0x180fa040,0x180fa03f,0x180f9fbf,0x705fbe,0x87060be,0x180f9fc0,0x180fa0c0,0x180fa0bf,0x3701f3f,0x3101f40,0x1b0fdf40,0x1b6fdf3f,0x3705f3f,0x3105f40,0x1302140,0x170213f,0x196fe13f,0x192fe140,0x182fa041,0x1b2f9fc1,0x192fa0c1,0x196fa03e,0x1b6f9fbe,0x970a03f,0x930a040,0x9306140,0x970613f,0xb709fbf,0xb309fc0,0x13301f41,
+ 14,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0xfdfbf,0x1020c0,0x1020bf,0xfe0c0,0xfe0bf,0x106040,0x10603f,0x105fc0,0x302041,0x105fbf,0x2fe041,0x1060c0,0x1060bf,0x301fc1,0x2fdfc1,0x3020c1,0x2fe0c1,0x306041,0x305fc1,0x83060c1,0x70203e,0x6fe03e,0x701fbe,0x6fdfbe,0x7020be,0x6fe0be,0x186fa03f,0x180fa040,0x180f9fc0,0x186f9fbf,0x70603e,0x8705fbe,0x3701f3f,0x3101f40,0x1b0fdf40,0x180fa0c0,0x186fa0bf,0x1b6fdf3f,0x87060be,0x170213f,0x1102140,0x182fa041,0x182f9fc1,0x190fe140,0x196fe13f,0x3105f40,0xb705f3f,0xb301f41,0x1b2fdf41,0x182fa0c1,0x930a040,0x970a03f,0x9106140,0x970613f,0x9302141,0x192fe141,0xb509fc0,
+ 15,0x10203f,0xfe040,0xfe03f,0x101fc0,0x101fbf,0xfdfc0,0x1020c0,0x1020bf,0xfdfbf,0xfe0c0,0x102041,0x106040,0xfe0bf,0x10603f,0xfe041,0x101fc1,0x105fc0,0x105fbf,0xfdfc1,0x1020c1,0x1060c0,0x1060bf,0xfe0c1,0x106041,0x305fc1,0x83060c1,0x70203e,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x6fdfbe,0x180f9fc0,0x186f9fbf,0x180fa0c0,0x180fa0bf,0x7020be,0x186fe0be,0x3101f40,0x3701f3f,0x1b0fdf40,0x1b6fdf3f,0x70603e,0x8705fbe,0x180fa041,0x182f9fc1,0x192fa0c1,0x1102140,0x170213f,0x97060be,0x190fe140,0x196fe13f,0x3301f41,0x3305f40,0xb705f3f,0x1b2fdf41,0xa302042,0x1a2fe042,0x19302141,0x9506140,0x930a040,0x970a03f,0xb509fc0,
+ 17,0xfe040,0x10203f,0x101fc0,0xfdfc0,0xfe03f,0x1020c0,0x102041,0x101fbf,0xfe041,0xfe0c0,0x106040,0xfdfbf,0x1020bf,0x101fc1,0xfdfc1,0xfe0bf,0x1020c1,0x10603f,0x105fc0,0xfe0c1,0x1060c0,0x106041,0x8105fbf,0x81060bf,0x8105fc1,0x81060c1,0x180fa040,0x180f9fc0,0x180fa03f,0x180fa0c0,0x180fa041,0x180f9fbf,0x70203e,0x186fe03e,0x3101f40,0x1b0fdf40,0x180f9fc1,0x180fa0bf,0x701fbe,0x3701f3f,0x1b0fdf3f,0x1b6fdfbe,0x7020be,0x186fe0be,0x192fa0c1,0x9102140,0x190fe140,0x8302042,0x3101f41,0x1b0fdf41,0x182fe042,0xb301fc2,0xb305f40,0x870603e,0x970213f,0x196fe13f,0x11102141,0x113020c2,0x1b2fdfc2,0xb105f3f,0xb705fbe,0x97060be,0xa50a040,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfdfbf,0xfe03f,0xfe040,0xfdfc0,0x105fc0,0x106040,0x10603f,0x105fbf,0x11020bf,0x11020c0,0x302041,0x301fc1,0x2fdfc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x305fc1,0x306041,0x11060c0,0x11060bf,0x6fe03e,0x6fdfbe,0x30fdf3f,0x30fdf40,0x3105f40,0x3105f3f,0x705fbe,0x70603e,0x13020c1,0x12fe0c1,0x180fa040,0x180fa03f,0x180f9fbf,0x180f9fc0,0x3301f41,0x17020be,0x16fe0be,0x93060c1,0x32fdf41,0xb305f41,0x3701f3e,0x36fdf3e,0x97060be,0x970a03f,0x930a040,0xb309fc0,0xb709fbf,0xb705f3e,0x182f9fc1,0x182fa041,0x192fa0c0,0x190fa0bf,0x196fa03e,0x186f9fbe,0x1b6f9f3f,0x1b2f9f40,
+ 11,0x101fc0,0x10203f,0x101fbf,0xfdfc0,0xfe040,0xfe03f,0xfdfbf,0x105fc0,0x106040,0x10603f,0x105fbf,0x301fc1,0x302041,0x2fe041,0x2fdfc1,0x11020c0,0x11020bf,0x306041,0x305fc1,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x11060c0,0x11060bf,0x70203e,0x30fdf40,0x30fdf3f,0x701fbe,0x3105f40,0x3105f3f,0x13020c1,0x6fe03e,0x6fdfbe,0x705fbe,0x70603e,0x12fe0c1,0x3301f41,0x13060c1,0x32fdf41,0x1b0f9fc0,0x180fa040,0x186fa03f,0x1b6f9fbf,0x3305f41,0xb109fc0,0x17020be,0x16fe0be,0x810a040,0x870a03f,0xb709fbf,0x3701f3e,0x1b6fdf3e,0x17060be,0x182fa041,0x1b2f9fc1,0x192fa0c0,0x196fa0bf,0xb705f3e,0xb309fc1,0x830a041,0x930a0c0,0x970a0bf,
+ 15,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0xfdfbf,0xfe03f,0x106040,0x105fc0,0x105fbf,0x10603f,0x102041,0x101fc1,0xfdfc1,0xfe041,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x10fe0bf,0x3101f40,0x3101f3f,0x11060c0,0x11060bf,0x11020c1,0x30fdf40,0x30fdf3f,0x3105f40,0x3105f3f,0x3101f41,0x10fe0c1,0x13060c1,0x70203e,0x701fbe,0x6fdfbe,0x30fdf41,0x3305f41,0x6fe03e,0x70603e,0x705fbe,0x1b0f9fc0,0x180fa040,0x186fa03f,0x1b6f9fbf,0x1b0f9fc1,0x180fa041,0x910a040,0xb109fc0,0xb709fbf,0x970a03f,0x17020be,0x196fe0be,0x97060be,0xb701f3e,0x1b6fdf3e,0xb301fc2,0x9302042,0x930a041,0xb309fc1,0x1b2fdfc2,0x192fe042,0x194fa0c0,
+ 17,0x101fc0,0x101fbf,0x10203f,0xfe040,0xfdfc0,0x101fc1,0x102041,0x106040,0x105fc0,0xfdfbf,0xfe03f,0x10603f,0x105fbf,0xfdfc1,0xfe041,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x11020c1,0x11060c0,0x3101f40,0x3101f3f,0x30fdf40,0x10fe0bf,0x11060bf,0x10fe0c1,0x3101f41,0x3105f40,0x30fdf3f,0x11060c1,0x3105f3f,0x30fdf41,0x3105f41,0x3701fbe,0x70203e,0x180fa040,0x1b0f9fc0,0x1b0f9fbf,0x180fa03f,0x186fe03e,0x1b6fdfbe,0x3705fbe,0x70603e,0x910a040,0xb109fc0,0x3301fc2,0x1302042,0x180fa041,0x1b0f9fc1,0x1b2fdfc2,0x192fe042,0x1306042,0x3305fc2,0xb709fbf,0x970a03f,0x930a041,0xb309fc1,0x97020be,0x192fa0c0,0x190fa0bf,0x196fe0be,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfe03f,0xfe040,0xfdfc0,0xfdfbf,0x10603f,0x106040,0x105fc0,0x105fbf,0x11020bf,0x11020c0,0x10fe0c0,0x10fe0bf,0x302041,0x301fc1,0x11060c0,0x11060bf,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x306041,0x305fc1,0x3101f40,0x6fe03e,0x6fdfbe,0x3101f3f,0x70603e,0x705fbe,0x13020c1,0x30fdf40,0x30fdf3f,0x3105f3f,0x3105f40,0x12fe0c1,0x17020be,0x13060c1,0x16fe0be,0x186fa03f,0x180fa040,0x1b0f9fc0,0x1b6f9fbf,0x17060be,0x870a03f,0x3301f41,0x32fdf41,0x810a040,0xb109fc0,0xb709fbf,0x3701f3e,0x1b6fdf3e,0x3305f41,0x190fa0c0,0x196fa0bf,0x192fa041,0x1b2f9fc1,0xb705f3e,0x970a0bf,0x910a0c0,0x930a041,0xb309fc1,
+ 11,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x302041,0x11020c0,0x11020bf,0x301fc1,0x2fe041,0x10fe0c0,0x10fe0bf,0x2fdfc1,0x306041,0x11060c0,0x11060bf,0x305fc1,0x13020c1,0x12fe0c1,0x70203e,0x701fbe,0x3101f3f,0x3101f40,0x30fdf40,0x30fdf3f,0x6fdfbe,0x6fe03e,0x70603e,0x13060c1,0x3105f40,0x3105f3f,0x705fbe,0x17020be,0x180fa040,0x186fa03f,0x1b0f9fc0,0x1b6f9fbf,0x3301f41,0x32fdf41,0x3305f41,0x16fe0be,0x17060be,0x870a03f,0x810a040,0xb109fc0,0xb709fbf,0x3701f3e,0x182fa041,0x192fa0c0,0x196fa0bf,0x1b2f9fc1,0x1b6fdf3e,0xb705f3e,0x830a041,0x930a0c0,0x970a0bf,0xb309fc1,
+ 14,0x101fc0,0x10203f,0x101fbf,0xfe040,0xfdfc0,0xfe03f,0xfdfbf,0x106040,0x105fc0,0x10603f,0x105fbf,0x102041,0x101fc1,0xfe041,0x11020c0,0xfdfc1,0x11020bf,0x106041,0x105fc1,0x10fe0c0,0x10fe0bf,0x11060c0,0x11060bf,0x11020c1,0x10fe0c1,0x13060c1,0x3101f40,0x3101f3f,0x30fdf40,0x30fdf3f,0x3105f40,0x3105f3f,0x3701fbe,0x70203e,0x6fe03e,0x36fdfbe,0x3101f41,0x32fdf41,0x1b0f9fc0,0x180fa040,0x186fa03f,0x70603e,0x3705fbe,0x1b6f9fbf,0x3305f41,0xb109fc0,0x810a040,0x17020be,0x16fe0be,0x870a03f,0xb709fbf,0x180fa041,0x1b2f9fc1,0x192fa0c0,0x196fa0bf,0x17060be,0x9302042,0xb301fc2,0x830a041,0xb309fc1,0x930a0c0,0x970a0bf,0x1a2fe042,
+ 17,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0x106040,0x102041,0x101fc1,0x105fc0,0xfe03f,0xfdfbf,0x10603f,0x105fbf,0xfe041,0xfdfc1,0x106041,0x105fc1,0x11020c0,0x11020bf,0x10fe0c0,0x11020c1,0x11060c0,0x10fe0bf,0x11060bf,0x10fe0c1,0x11060c1,0x3101f40,0x30fdf40,0x3101f3f,0x3105f40,0x3101f41,0x30fdf3f,0x3105f3f,0x30fdf41,0x3105f41,0x70203e,0x3701fbe,0x180fa040,0x1b0f9fc0,0x180fa03f,0x186fe03e,0x36fdfbe,0x1b6f9fbf,0x180fa041,0x1b0f9fc1,0x1302042,0x3301fc2,0x910a040,0x70603e,0x3705fbe,0xb109fc0,0x970a03f,0xb709fbf,0x910a041,0x192fe042,0x1b2fdfc2,0x9306042,0x3305fc2,0xb309fc1,0x97020be,0x192fa0c0,0x190fa0bf,0x196fe0be,
+ 15,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0xfdfbf,0xfdfc0,0x106040,0x10603f,0x105fbf,0x105fc0,0x1020c0,0x1020bf,0xfe0bf,0xfe0c0,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x2fdfc1,0x70203e,0x701fbe,0x306041,0x305fc1,0x3020c1,0x6fe03e,0x6fdfbe,0x70603e,0x705fbe,0x7020be,0x2fe0c1,0x13060c1,0x3101f40,0x3101f3f,0x30fdf3f,0x6fe0be,0x17060be,0x30fdf40,0x3105f40,0x3105f3f,0x186fa03f,0x180fa040,0x1b0f9fc0,0x1b6f9fbf,0x186fa0bf,0x180fa0c0,0x830a040,0x870a03f,0xb709fbf,0xb309fc0,0x3301f41,0x1b2fdf41,0xb305f41,0xb701f3e,0x1b6fdf3e,0x970213f,0x9302140,0x930a0c0,0x970a0bf,0x196fe13f,0x192fe140,0x1a2fa041,
+ 14,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0xfdfbf,0x106040,0x10603f,0x105fc0,0x105fbf,0x1020c0,0x1020bf,0xfe0c0,0x302041,0xfe0bf,0x301fc1,0x1060c0,0x1060bf,0x2fe041,0x2fdfc1,0x306041,0x305fc1,0x3020c1,0x2fe0c1,0x13060c1,0x70203e,0x701fbe,0x6fe03e,0x6fdfbe,0x70603e,0x705fbe,0x3701f3f,0x3101f40,0x30fdf40,0x36fdf3f,0x7020be,0x16fe0be,0x186fa03f,0x180fa040,0x1b0f9fc0,0x3105f40,0x3705f3f,0x1b6f9fbf,0x17060be,0x870a03f,0x810a040,0x3301f41,0x32fdf41,0xb109fc0,0xb709fbf,0x180fa0c0,0x196fa0bf,0x192fa041,0x1b2f9fc1,0x3305f41,0x9302140,0x970213f,0x910a0c0,0x970a0bf,0x930a041,0xb309fc1,0x194fe140,
+ 15,0x10203f,0x101fc0,0x101fbf,0xfe040,0xfe03f,0xfdfc0,0x106040,0x10603f,0xfdfbf,0x105fc0,0x102041,0x1020c0,0x105fbf,0x1020bf,0x101fc1,0xfe041,0xfe0c0,0xfe0bf,0xfdfc1,0x106041,0x1060c0,0x1060bf,0x105fc1,0x1020c1,0x2fe0c1,0x13060c1,0x70203e,0x3101f40,0x3101f3f,0x3701fbe,0x6fe03e,0x6fdfbe,0x30fdf40,0x36fdf3f,0x3105f40,0x3105f3f,0x70603e,0x3705fbe,0x180fa040,0x186fa03f,0x1b0f9fc0,0x1b6f9fbf,0x7020be,0x16fe0be,0x3101f41,0x32fdf41,0xb305f41,0x810a040,0x870a03f,0x97060be,0xb109fc0,0xb709fbf,0x182fa041,0x182fa0c0,0x196fa0bf,0x1b2f9fc1,0x11302042,0x13301fc2,0xb30a041,0x950a0c0,0x9302140,0x970213f,0x194fe140,
+ 17,0x101fc0,0x10203f,0xfe040,0xfdfc0,0x101fbf,0x106040,0x102041,0xfe03f,0x101fc1,0x105fc0,0x1020c0,0xfdfbf,0x10603f,0xfe041,0xfdfc1,0x105fbf,0x106041,0x1020bf,0xfe0c0,0x105fc1,0x1060c0,0x1020c1,0x10fe0bf,0x11060bf,0x10fe0c1,0x11060c1,0x3101f40,0x30fdf40,0x3101f3f,0x3105f40,0x3101f41,0x30fdf3f,0x70203e,0x3701fbe,0x180fa040,0x1b0f9fc0,0x30fdf41,0x3105f3f,0x6fe03e,0x186fa03f,0x1b0f9fbf,0x1b6fdfbe,0x70603e,0x3705fbe,0xb305f41,0x910a040,0xb109fc0,0x1302042,0x180fa041,0x1b0f9fc1,0x3301fc2,0x192fe042,0x192fa0c0,0x17020be,0x970a03f,0xb709fbf,0xa10a041,0xa306042,0x1b2fdfc2,0x190fa0bf,0x196fe0be,0x97060be,0x11502140,
+ 17,0x10203f,0x101fbf,0x101fc0,0xfe040,0xfe03f,0x1020bf,0x1020c0,0x106040,0x10603f,0xfdfbf,0xfdfc0,0x105fc0,0x105fbf,0xfe0bf,0xfe0c0,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x3020c1,0x306041,0x70203e,0x701fbe,0x6fe03e,0x2fdfc1,0x305fc1,0x2fe0c1,0x7020be,0x70603e,0x6fdfbe,0x3060c1,0x705fbe,0x6fe0be,0x7060be,0x3701f3f,0x3101f40,0x180fa040,0x186fa03f,0x186f9fbf,0x180f9fc0,0x1b0fdf40,0x1b6fdf3f,0x3705f3f,0x3105f40,0x830a040,0x870a03f,0x170213f,0x1302140,0x180fa0c0,0x186fa0bf,0x196fe13f,0x192fe140,0x1306140,0x170613f,0xb709fbf,0xb309fc0,0x930a0c0,0x970a0bf,0xb301f41,0x192fa041,0x182f9fc1,0x1b2fdf41,
+ 17,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0x106040,0x1020c0,0x1020bf,0x10603f,0xfdfc0,0xfdfbf,0x105fc0,0x105fbf,0xfe0c0,0xfe0bf,0x1060c0,0x1060bf,0x302041,0x301fc1,0x2fe041,0x3020c1,0x306041,0x2fdfc1,0x305fc1,0x2fe0c1,0x3060c1,0x70203e,0x6fe03e,0x701fbe,0x70603e,0x7020be,0x6fdfbe,0x705fbe,0x6fe0be,0x7060be,0x3101f40,0x3701f3f,0x180fa040,0x186fa03f,0x180f9fc0,0x1b0fdf40,0x36fdf3f,0x1b6f9fbf,0x180fa0c0,0x186fa0bf,0x1302140,0x170213f,0x830a040,0x3105f40,0x3705f3f,0x870a03f,0xb309fc0,0xb709fbf,0x830a0c0,0x192fe140,0x196fe13f,0x9306140,0x170613f,0x970a0bf,0xb301f41,0x192fa041,0x182f9fc1,0x1b2fdf41,
+ 17,0x10203f,0x101fc0,0xfe040,0xfe03f,0x101fbf,0x106040,0x1020c0,0xfdfc0,0x1020bf,0x10603f,0x102041,0xfdfbf,0x105fc0,0xfe0c0,0xfe0bf,0x105fbf,0x1060c0,0x101fc1,0xfe041,0x1060bf,0x106041,0x1020c1,0x2fdfc1,0x305fc1,0x2fe0c1,0x3060c1,0x70203e,0x6fe03e,0x701fbe,0x70603e,0x7020be,0x6fdfbe,0x3101f40,0x3701f3f,0x180fa040,0x186fa03f,0x6fe0be,0x705fbe,0x30fdf40,0x1b0f9fc0,0x186f9fbf,0x1b6fdf3f,0x3105f40,0x3705f3f,0x97060be,0x830a040,0x870a03f,0x1302140,0x180fa0c0,0x186fa0bf,0x170213f,0x192fe140,0x192fa041,0x3301f41,0xb309fc0,0xb709fbf,0x850a0c0,0x9506140,0x196fe13f,0x182f9fc1,0x1b2fdf41,0xb305f41,0x12302042,
+ 16,0x10203f,0x101fc0,0xfe040,0x102041,0x1020c0,0x106040,0x101fbf,0xfe03f,0xfdfc0,0x101fc1,0x105fc0,0x10603f,0x1020bf,0xfe0c0,0xfe041,0xfdfbf,0x1020c1,0x106041,0x1060c0,0x105fbf,0xfe0bf,0xfdfc1,0x105fc1,0x1060bf,0xfe0c1,0x83060c1,0x70203e,0x3101f40,0x180fa040,0x180fa03f,0x186fe03e,0x701fbe,0x3701f3f,0x30fdf40,0x1b0f9fc0,0x180fa041,0x180fa0c0,0x7020be,0x70603e,0x3105f40,0xb101f41,0x9302042,0x1102140,0x930a040,0x6fdfbe,0x36fdf3f,0x1b6f9fbf,0x190fa0bf,0x196fe0be,0x170213f,0x196fe140,0x182f9fc1,0x1b2fdf41,0xb301fc2,0x1a2fe042,0x192fa0c1,0x8705fbe,0xb705f3f,0xb309fc0,0xa70a03f,0x97060be,0x9706140,0x11302141
+};
diff --git a/lib/voro++/src/v_compute.cc b/lib/voro++/src/v_compute.cc
new file mode 100644
index 000000000..84991fd1a
--- /dev/null
+++ b/lib/voro++/src/v_compute.cc
@@ -0,0 +1,1006 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file v_compute.cc
+ * \brief Function implementantions for the voro_compute template. */
+
+#include "worklist.hh"
+#include "v_compute.hh"
+#include "rad_option.hh"
+#include "container.hh"
+#include "container_prd.hh"
+
+namespace voro {
+
+/** The class constructor initializes constants from the container class, and
+ * sets up the mask and queue used for Voronoi computations.
+ * \param[in] con_ a reference to the container class to use.
+ * \param[in] (hx_,hy_,hz_) the size of the mask to use. */
+template<class c_class>
+voro_compute<c_class>::voro_compute(c_class &con_,int hx_,int hy_,int hz_) :
+ con(con_), boxx(con_.boxx), boxy(con_.boxy), boxz(con_.boxz),
+ xsp(con_.xsp), ysp(con_.ysp), zsp(con_.zsp),
+ hx(hx_), hy(hy_), hz(hz_), hxy(hx_*hy_), hxyz(hxy*hz_), ps(con_.ps),
+ id(con_.id), p(con_.p), co(con_.co), bxsq(boxx*boxx+boxy*boxy+boxz*boxz),
+ mv(0), qu_size(3*(3+hxy+hz*(hx+hy))), wl(con_.wl), mrad(con_.mrad),
+ mask(new unsigned int[hxyz]), qu(new int[qu_size]), qu_l(qu+qu_size) {
+ reset_mask();
+}
+
+/** Scans all of the particles within a block to see if any of them have a
+ * smaller distance to the given test vector. If one is found, the routine
+ * updates the minimum distance and store information about this particle.
+ * \param[in] ijk the index of the block.
+ * \param[in] (x,y,z) the test vector to consider (which may have already had a
+ * periodic displacement applied to it).
+ * \param[in] (di,dj,dk) the coordinates of the current block, to store if the
+ * particle record is updated.
+ * \param[in,out] w a reference to a particle record in which to store
+ * information about the particle whose Voronoi cell the
+ * vector is within.
+ * \param[in,out] mrs the current minimum distance, that may be updated if a
+ * closer particle is found. */
+template<class c_class>
+inline void voro_compute<c_class>::scan_all(int ijk,double x,double y,double z,int di,int dj,int dk,particle_record &w,double &mrs) {
+ double x1,y1,z1,rs;bool in_block=false;
+ for(int l=0;l<co[ijk];l++) {
+ x1=p[ijk][ps*l]-x;
+ y1=p[ijk][ps*l+1]-y;
+ z1=p[ijk][ps*l+2]-z;
+ rs=con.r_current_sub(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(rs<mrs) {mrs=rs;w.l=l;in_block=true;}
+ }
+ if(in_block) {w.ijk=ijk;w.di=di;w.dj=dj,w.dk=dk;}
+}
+
+/** Finds the Voronoi cell that given vector is within. For containers that are
+ * not radially dependent, this corresponds to findig the particle that is
+ * closest to the vector; for the radical tessellation containers, this
+ * corresponds to a finding the minimum weighted distance.
+ * \param[in] (x,y,z) the vector to consider.
+ * \param[in] (ci,cj,ck) the coordinates of the block that the test particle is
+ * in relative to the container data structure.
+ * \param[in] ijk the index of the block that the test particle is in.
+ * \param[out] w a reference to a particle record in which to store information
+ * about the particle whose Voronoi cell the vector is within.
+ * \param[out] mrs the minimum computed distance. */
+template<class c_class>
+void voro_compute<c_class>::find_voronoi_cell(double x,double y,double z,int ci,int cj,int ck,int ijk,particle_record &w,double &mrs) {
+ double qx=0,qy=0,qz=0,rs;
+ int i,j,k,di,dj,dk,ei,ej,ek,f,g,disp;
+ double fx,fy,fz,mxs,mys,mzs,*radp;
+ unsigned int q,*e,*mijk;
+
+ // Init setup for parameters to return
+ w.ijk=-1;mrs=large_number;
+
+ con.initialize_search(ci,cj,ck,ijk,i,j,k,disp);
+
+ // Test all particles in the particle's local region first
+ scan_all(ijk,x,y,z,0,0,0,w,mrs);
+
+ // Now compute the fractional position of the particle within its
+ // region and store it in (fx,fy,fz). We use this to compute an index
+ // (di,dj,dk) of which subregion the particle is within.
+ unsigned int m1,m2;
+ con.frac_pos(x,y,z,ci,cj,ck,fx,fy,fz);
+ di=int(fx*xsp*wl_fgrid);dj=int(fy*ysp*wl_fgrid);dk=int(fz*zsp*wl_fgrid);
+
+ // The indices (di,dj,dk) tell us which worklist to use, to test the
+ // blocks in the optimal order. But we only store worklists for the
+ // eighth of the region where di, dj, and dk are all less than half the
+ // full grid. The rest of the cases are handled by symmetry. In this
+ // section, we detect for these cases, by reflecting high values of di,
+ // dj, and dk. For these cases, a mask is constructed in m1 and m2
+ // which is used to flip the worklist information when it is loaded.
+ if(di>=wl_hgrid) {
+ mxs=boxx-fx;
+ m1=127+(3<<21);m2=1+(1<<21);di=wl_fgrid-1-di;if(di<0) di=0;
+ } else {m1=m2=0;mxs=fx;}
+ if(dj>=wl_hgrid) {
+ mys=boxy-fy;
+ m1|=(127<<7)+(3<<24);m2|=(1<<7)+(1<<24);dj=wl_fgrid-1-dj;if(dj<0) dj=0;
+ } else mys=fy;
+ if(dk>=wl_hgrid) {
+ mzs=boxz-fz;
+ m1|=(127<<14)+(3<<27);m2|=(1<<14)+(1<<27);dk=wl_fgrid-1-dk;if(dk<0) dk=0;
+ } else mzs=fz;
+
+ // Do a quick test to account for the case when the minimum radius is
+ // small enought that no other blocks need to be considered
+ rs=con.r_max_add(mrs);
+ if(mxs*mxs>rs&&mys*mys>rs&&mzs*mzs>rs) return;
+
+ // Now compute which worklist we are going to use, and set radp and e to
+ // point at the right offsets
+ ijk=di+wl_hgrid*(dj+wl_hgrid*dk);
+ radp=mrad+ijk*wl_seq_length;
+ e=(const_cast<unsigned int*> (wl))+ijk*wl_seq_length;
+
+ // Read in how many items in the worklist can be tested without having to
+ // worry about writing to the mask
+ f=e[0];g=0;
+ do {
+
+ // If mrs is less than the minimum distance to any untested
+ // block, then we are done
+ if(con.r_max_add(mrs)<radp[g]) return;
+ g++;
+
+ // Load in a block off the worklist, permute it with the
+ // symmetry mask, and decode its position. These are all
+ // integer bit operations so they should run very fast.
+ q=e[g];q^=m1;q+=m2;
+ di=q&127;di-=64;
+ dj=(q>>7)&127;dj-=64;
+ dk=(q>>14)&127;dk-=64;
+
+ // Check that the worklist position is in range
+ ei=di+i;if(ei<0||ei>=hx) continue;
+ ej=dj+j;if(ej<0||ej>=hy) continue;
+ ek=dk+k;if(ek<0||ek>=hz) continue;
+
+ // Call the compute_min_max_radius() function. This returns
+ // true if the minimum distance to the block is bigger than the
+ // current mrs, in which case we skip this block and move on.
+ // Otherwise, it computes the maximum distance to the block and
+ // returns it in crs.
+ if(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) continue;
+
+ // Now compute which region we are going to loop over, adding a
+ // displacement for the periodic cases
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+
+ // If mrs is bigger than the maximum distance to the block,
+ // then we have to test all particles in the block for
+ // intersections. Otherwise, we do additional checks and skip
+ // those particles which can't possibly intersect the block.
+ scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);
+ } while(g<f);
+
+ // Update mask value and initialize queue
+ mv++;
+ if(mv==0) {reset_mask();mv=1;}
+ int *qu_s=qu,*qu_e=qu;
+
+ while(g<wl_seq_length-1) {
+
+ // If mrs is less than the minimum distance to any untested
+ // block, then we are done
+ if(con.r_max_add(mrs)<radp[g]) return;
+ g++;
+
+ // Load in a block off the worklist, permute it with the
+ // symmetry mask, and decode its position. These are all
+ // integer bit operations so they should run very fast.
+ q=e[g];q^=m1;q+=m2;
+ di=q&127;di-=64;
+ dj=(q>>7)&127;dj-=64;
+ dk=(q>>14)&127;dk-=64;
+
+ // Compute the position in the mask of the current block. If
+ // this lies outside the mask, then skip it. Otherwise, mark
+ // it.
+ ei=di+i;if(ei<0||ei>=hx) continue;
+ ej=dj+j;if(ej<0||ej>=hy) continue;
+ ek=dk+k;if(ek<0||ek>=hz) continue;
+ mijk=mask+ei+hx*(ej+hy*ek);
+ *mijk=mv;
+
+ // Skip this block if it is further away than the current
+ // minimum radius
+ if(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) continue;
+
+ // Now compute which region we are going to loop over, adding a
+ // displacement for the periodic cases
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+ scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);
+
+ if(qu_e>qu_l-18) add_list_memory(qu_s,qu_e);
+ scan_bits_mask_add(q,mijk,ei,ej,ek,qu_e);
+ }
+
+ // Do a check to see if we've reached the radius cutoff
+ if(con.r_max_add(mrs)<radp[g]) return;
+
+ // We were unable to completely compute the cell based on the blocks in
+ // the worklist, so now we have to go block by block, reading in items
+ // off the list
+ while(qu_s!=qu_e) {
+
+ // Read the next entry of the queue
+ if(qu_s==qu_l) qu_s=qu;
+ ei=*(qu_s++);ej=*(qu_s++);ek=*(qu_s++);
+ di=ei-i;dj=ej-j;dk=ek-k;
+ if(compute_min_radius(di,dj,dk,fx,fy,fz,mrs)) continue;
+
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+ scan_all(ijk,x-qx,y-qy,z-qz,di,dj,dk,w,mrs);
+
+ // Test the neighbors of the current block, and add them to the
+ // block list if they haven't already been tested
+ if((qu_s<=qu_e?(qu_l-qu_e)+(qu_s-qu):qu_s-qu_e)<18) add_list_memory(qu_s,qu_e);
+ add_to_mask(ei,ej,ek,qu_e);
+ }
+}
+
+/** Scans the six orthogonal neighbors of a given block and adds them to the
+ * queue if they haven't been considered already. It assumes that the queue
+ * will definitely have enough memory to add six entries at the end.
+ * \param[in] (ei,ej,ek) the block to consider.
+ * \param[in,out] qu_e a pointer to the end of the queue. */
+template<class c_class>
+inline void voro_compute<c_class>::add_to_mask(int ei,int ej,int ek,int *&qu_e) {
+ unsigned int *mijk=mask+ei+hx*(ej+hy*ek);
+ if(ek>0) if(*(mijk-hxy)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk-hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek-1;}
+ if(ej>0) if(*(mijk-hx)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk-hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej-1;*(qu_e++)=ek;}
+ if(ei>0) if(*(mijk-1)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk-1)=mv;*(qu_e++)=ei-1;*(qu_e++)=ej;*(qu_e++)=ek;}
+ if(ei<hx-1) if(*(mijk+1)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}
+ if(ej<hy-1) if(*(mijk+hx)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}
+ if(ek<hz-1) if(*(mijk+hxy)!=mv) {if(qu_e==qu_l) qu_e=qu;*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}
+}
+
+/** Scans a worklist entry and adds any blocks to the queue
+ * \param[in] (ei,ej,ek) the block to consider.
+ * \param[in,out] qu_e a pointer to the end of the queue. */
+template<class c_class>
+inline void voro_compute<c_class>::scan_bits_mask_add(unsigned int q,unsigned int *mijk,int ei,int ej,int ek,int *&qu_e) {
+ const unsigned int b1=1<<21,b2=1<<22,b3=1<<24,b4=1<<25,b5=1<<27,b6=1<<28;
+ if((q&b2)==b2) {
+ if(ei>0) {*(mijk-1)=mv;*(qu_e++)=ei-1;*(qu_e++)=ej;*(qu_e++)=ek;}
+ if((q&b1)==0&&ei<hx-1) {*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}
+ } else if((q&b1)==b1&&ei<hx-1) {*(mijk+1)=mv;*(qu_e++)=ei+1;*(qu_e++)=ej;*(qu_e++)=ek;}
+ if((q&b4)==b4) {
+ if(ej>0) {*(mijk-hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej-1;*(qu_e++)=ek;}
+ if((q&b3)==0&&ej<hy-1) {*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}
+ } else if((q&b3)==b3&&ej<hy-1) {*(mijk+hx)=mv;*(qu_e++)=ei;*(qu_e++)=ej+1;*(qu_e++)=ek;}
+ if((q&b6)==b6) {
+ if(ek>0) {*(mijk-hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek-1;}
+ if((q&b5)==0&&ek<hz-1) {*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}
+ } else if((q&b5)==b5&&ek<hz-1) {*(mijk+hxy)=mv;*(qu_e++)=ei;*(qu_e++)=ej;*(qu_e++)=ek+1;}
+}
+
+/** This routine computes a Voronoi cell for a single particle in the
+ * container. It can be called by the user, but is also forms the core part of
+ * several of the main functions, such as store_cell_volumes(), print_all(),
+ * and the drawing routines. The algorithm constructs the cell by testing over
+ * the neighbors of the particle, working outwards until it reaches those
+ * particles which could not possibly intersect the cell. For maximum
+ * efficiency, this algorithm is divided into three parts. In the first
+ * section, the algorithm tests over the blocks which are in the immediate
+ * vicinity of the particle, by making use of one of the precomputed worklists.
+ * The code then continues to test blocks on the worklist, but also begins to
+ * construct a list of neighboring blocks outside the worklist which may need
+ * to be test. In the third section, the routine starts testing these
+ * neighboring blocks, evaluating whether or not a particle in them could
+ * possibly intersect the cell. For blocks that intersect the cell, it tests
+ * the particles in that block, and then adds the block neighbors to the list
+ * of potential places to consider.
+ * \param[in,out] c a reference to a voronoicell object.
+ * \param[in] ijk the index of the block that the test particle is in.
+ * \param[in] s the index of the particle within the test block.
+ * \param[in] (ci,cj,ck) the coordinates of the block that the test particle is
+ * in relative to the container data structure.
+ * \return False if the Voronoi cell was completely removed during the
+ * computation and has zero volume, true otherwise. */
+template<class c_class>
+template<class v_cell>
+bool voro_compute<c_class>::compute_cell(v_cell &c,int ijk,int s,int ci,int cj,int ck) {
+ static const int count_list[8]={7,11,15,19,26,35,45,59},*count_e=count_list+8;
+ double x,y,z,x1,y1,z1,qx=0,qy=0,qz=0;
+ double xlo,ylo,zlo,xhi,yhi,zhi,x2,y2,z2,rs;
+ int i,j,k,di,dj,dk,ei,ej,ek,f,g,l,disp;
+ double fx,fy,fz,gxs,gys,gzs,*radp;
+ unsigned int q,*e,*mijk;
+
+ if(!con.initialize_voronoicell(c,ijk,s,ci,cj,ck,i,j,k,x,y,z,disp)) return false;
+ con.r_init(ijk,s);
+
+ // Initialize the Voronoi cell to fill the entire container
+ double crs,mrs;
+
+ int next_count=3,*count_p=(const_cast<int*> (count_list));
+
+ // Test all particles in the particle's local region first
+ for(l=0;l<s;l++) {
+ x1=p[ijk][ps*l]-x;
+ y1=p[ijk][ps*l+1]-y;
+ z1=p[ijk][ps*l+2]-z;
+ rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ }
+ l++;
+ while(l<co[ijk]) {
+ x1=p[ijk][ps*l]-x;
+ y1=p[ijk][ps*l+1]-y;
+ z1=p[ijk][ps*l+2]-z;
+ rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ }
+
+ // Now compute the maximum distance squared from the cell center to a
+ // vertex. This is used to cut off the calculation since we only need
+ // to test out to twice this range.
+ mrs=c.max_radius_squared();
+
+ // Now compute the fractional position of the particle within its
+ // region and store it in (fx,fy,fz). We use this to compute an index
+ // (di,dj,dk) of which subregion the particle is within.
+ unsigned int m1,m2;
+ con.frac_pos(x,y,z,ci,cj,ck,fx,fy,fz);
+ di=int(fx*xsp*wl_fgrid);dj=int(fy*ysp*wl_fgrid);dk=int(fz*zsp*wl_fgrid);
+
+ // The indices (di,dj,dk) tell us which worklist to use, to test the
+ // blocks in the optimal order. But we only store worklists for the
+ // eighth of the region where di, dj, and dk are all less than half the
+ // full grid. The rest of the cases are handled by symmetry. In this
+ // section, we detect for these cases, by reflecting high values of di,
+ // dj, and dk. For these cases, a mask is constructed in m1 and m2
+ // which is used to flip the worklist information when it is loaded.
+ if(di>=wl_hgrid) {
+ gxs=fx;
+ m1=127+(3<<21);m2=1+(1<<21);di=wl_fgrid-1-di;if(di<0) di=0;
+ } else {m1=m2=0;gxs=boxx-fx;}
+ if(dj>=wl_hgrid) {
+ gys=fy;
+ m1|=(127<<7)+(3<<24);m2|=(1<<7)+(1<<24);dj=wl_fgrid-1-dj;if(dj<0) dj=0;
+ } else gys=boxy-fy;
+ if(dk>=wl_hgrid) {
+ gzs=fz;
+ m1|=(127<<14)+(3<<27);m2|=(1<<14)+(1<<27);dk=wl_fgrid-1-dk;if(dk<0) dk=0;
+ } else gzs=boxz-fz;
+ gxs*=gxs;gys*=gys;gzs*=gzs;
+
+ // Now compute which worklist we are going to use, and set radp and e to
+ // point at the right offsets
+ ijk=di+wl_hgrid*(dj+wl_hgrid*dk);
+ radp=mrad+ijk*wl_seq_length;
+ e=(const_cast<unsigned int*> (wl))+ijk*wl_seq_length;
+
+ // Read in how many items in the worklist can be tested without having to
+ // worry about writing to the mask
+ f=e[0];g=0;
+ do {
+
+ // At the intervals specified by count_list, we recompute the
+ // maximum radius squared
+ if(g==next_count) {
+ mrs=c.max_radius_squared();
+ if(count_p!=count_e) next_count=*(count_p++);
+ }
+
+ // If mrs is less than the minimum distance to any untested
+ // block, then we are done
+ if(con.r_ctest(radp[g],mrs)) return true;
+ g++;
+
+ // Load in a block off the worklist, permute it with the
+ // symmetry mask, and decode its position. These are all
+ // integer bit operations so they should run very fast.
+ q=e[g];q^=m1;q+=m2;
+ di=q&127;di-=64;
+ dj=(q>>7)&127;dj-=64;
+ dk=(q>>14)&127;dk-=64;
+
+ // Check that the worklist position is in range
+ ei=di+i;if(ei<0||ei>=hx) continue;
+ ej=dj+j;if(ej<0||ej>=hy) continue;
+ ek=dk+k;if(ek<0||ek>=hz) continue;
+
+ // Call the compute_min_max_radius() function. This returns
+ // true if the minimum distance to the block is bigger than the
+ // current mrs, in which case we skip this block and move on.
+ // Otherwise, it computes the maximum distance to the block and
+ // returns it in crs.
+ if(compute_min_max_radius(di,dj,dk,fx,fy,fz,gxs,gys,gzs,crs,mrs)) continue;
+
+ // Now compute which region we are going to loop over, adding a
+ // displacement for the periodic cases
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+
+ // If mrs is bigger than the maximum distance to the block,
+ // then we have to test all particles in the block for
+ // intersections. Otherwise, we do additional checks and skip
+ // those particles which can't possibly intersect the block.
+ if(co[ijk]>0) {
+ l=0;x2=x-qx;y2=y-qy;z2=z-qz;
+ if(!con.r_ctest(crs,mrs)) {
+ do {
+ x1=p[ijk][ps*l]-x2;
+ y1=p[ijk][ps*l+1]-y2;
+ z1=p[ijk][ps*l+2]-z2;
+ rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ } while (l<co[ijk]);
+ } else {
+ do {
+ x1=p[ijk][ps*l]-x2;
+ y1=p[ijk][ps*l+1]-y2;
+ z1=p[ijk][ps*l+2]-z2;
+ rs=x1*x1+y1*y1+z1*z1;
+ if(con.r_scale_check(rs,mrs,ijk,l)&&!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ } while (l<co[ijk]);
+ }
+ }
+ } while(g<f);
+
+ // If we reach here, we were unable to compute the entire cell using
+ // the first part of the worklist. This section of the algorithm
+ // continues the worklist, but it now starts preparing the mask that we
+ // need if we end up going block by block. We do the same as before,
+ // but we put a mark down on the mask for every block that's tested.
+ // The worklist also contains information about which neighbors of each
+ // block are not also on the worklist, and we start storing those
+ // points in a list in case we have to go block by block. Update the
+ // mask counter, and if it wraps around then reset the whole mask; that
+ // will only happen once every 2^32 tries.
+ mv++;
+ if(mv==0) {reset_mask();mv=1;}
+
+ // Set the queue pointers
+ int *qu_s=qu,*qu_e=qu;
+
+ while(g<wl_seq_length-1) {
+
+ // At the intervals specified by count_list, we recompute the
+ // maximum radius squared
+ if(g==next_count) {
+ mrs=c.max_radius_squared();
+ if(count_p!=count_e) next_count=*(count_p++);
+ }
+
+ // If mrs is less than the minimum distance to any untested
+ // block, then we are done
+ if(con.r_ctest(radp[g],mrs)) return true;
+ g++;
+
+ // Load in a block off the worklist, permute it with the
+ // symmetry mask, and decode its position. These are all
+ // integer bit operations so they should run very fast.
+ q=e[g];q^=m1;q+=m2;
+ di=q&127;di-=64;
+ dj=(q>>7)&127;dj-=64;
+ dk=(q>>14)&127;dk-=64;
+
+ // Compute the position in the mask of the current block. If
+ // this lies outside the mask, then skip it. Otherwise, mark
+ // it.
+ ei=di+i;if(ei<0||ei>=hx) continue;
+ ej=dj+j;if(ej<0||ej>=hy) continue;
+ ek=dk+k;if(ek<0||ek>=hz) continue;
+ mijk=mask+ei+hx*(ej+hy*ek);
+ *mijk=mv;
+
+ // Call the compute_min_max_radius() function. This returns
+ // true if the minimum distance to the block is bigger than the
+ // current mrs, in which case we skip this block and move on.
+ // Otherwise, it computes the maximum distance to the block and
+ // returns it in crs.
+ if(compute_min_max_radius(di,dj,dk,fx,fy,fz,gxs,gys,gzs,crs,mrs)) continue;
+
+ // Now compute which region we are going to loop over, adding a
+ // displacement for the periodic cases
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+
+ // If mrs is bigger than the maximum distance to the block,
+ // then we have to test all particles in the block for
+ // intersections. Otherwise, we do additional checks and skip
+ // those particles which can't possibly intersect the block.
+ if(co[ijk]>0) {
+ l=0;x2=x-qx;y2=y-qy;z2=z-qz;
+ if(!con.r_ctest(crs,mrs)) {
+ do {
+ x1=p[ijk][ps*l]-x2;
+ y1=p[ijk][ps*l+1]-y2;
+ z1=p[ijk][ps*l+2]-z2;
+ rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ } while (l<co[ijk]);
+ } else {
+ do {
+ x1=p[ijk][ps*l]-x2;
+ y1=p[ijk][ps*l+1]-y2;
+ z1=p[ijk][ps*l+2]-z2;
+ rs=x1*x1+y1*y1+z1*z1;
+ if(con.r_scale_check(rs,mrs,ijk,l)&&!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ } while (l<co[ijk]);
+ }
+ }
+
+ // If there might not be enough memory on the list for these
+ // additions, then add more
+ if(qu_e>qu_l-18) add_list_memory(qu_s,qu_e);
+
+ // Test the parts of the worklist element which tell us what
+ // neighbors of this block are not on the worklist. Store them
+ // on the block list, and mark the mask.
+ scan_bits_mask_add(q,mijk,ei,ej,ek,qu_e);
+ }
+
+ // Do a check to see if we've reached the radius cutoff
+ if(con.r_ctest(radp[g],mrs)) return true;
+
+ // We were unable to completely compute the cell based on the blocks in
+ // the worklist, so now we have to go block by block, reading in items
+ // off the list
+ while(qu_s!=qu_e) {
+
+ // If we reached the end of the list memory loop back to the
+ // start
+ if(qu_s==qu_l) qu_s=qu;
+
+ // Read in a block off the list, and compute the upper and lower
+ // coordinates in each of the three dimensions
+ ei=*(qu_s++);ej=*(qu_s++);ek=*(qu_s++);
+ xlo=(ei-i)*boxx-fx;xhi=xlo+boxx;
+ ylo=(ej-j)*boxy-fy;yhi=ylo+boxy;
+ zlo=(ek-k)*boxz-fz;zhi=zlo+boxz;
+
+ // Carry out plane tests to see if any particle in this block
+ // could possibly intersect the cell
+ if(ei>i) {
+ if(ej>j) {
+ if(ek>k) {if(corner_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) continue;}
+ else if(ek<k) {if(corner_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) continue;}
+ else {if(edge_z_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) continue;}
+ } else if(ej<j) {
+ if(ek>k) {if(corner_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) continue;}
+ else if(ek<k) {if(corner_test(c,xlo,yhi,zhi,xhi,ylo,zlo)) continue;}
+ else {if(edge_z_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) continue;}
+ } else {
+ if(ek>k) {if(edge_y_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) continue;}
+ else if(ek<k) {if(edge_y_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) continue;}
+ else {if(face_x_test(c,xlo,ylo,zlo,yhi,zhi)) continue;}
+ }
+ } else if(ei<i) {
+ if(ej>j) {
+ if(ek>k) {if(corner_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) continue;}
+ else if(ek<k) {if(corner_test(c,xhi,ylo,zhi,xlo,yhi,zlo)) continue;}
+ else {if(edge_z_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) continue;}
+ } else if(ej<j) {
+ if(ek>k) {if(corner_test(c,xhi,yhi,zlo,xlo,ylo,zhi)) continue;}
+ else if(ek<k) {if(corner_test(c,xhi,yhi,zhi,xlo,ylo,zlo)) continue;}
+ else {if(edge_z_test(c,xhi,yhi,zlo,xlo,ylo,zhi)) continue;}
+ } else {
+ if(ek>k) {if(edge_y_test(c,xhi,ylo,zlo,xlo,yhi,zhi)) continue;}
+ else if(ek<k) {if(edge_y_test(c,xhi,ylo,zhi,xlo,yhi,zlo)) continue;}
+ else {if(face_x_test(c,xhi,ylo,zlo,yhi,zhi)) continue;}
+ }
+ } else {
+ if(ej>j) {
+ if(ek>k) {if(edge_x_test(c,xlo,ylo,zlo,xhi,yhi,zhi)) continue;}
+ else if(ek<k) {if(edge_x_test(c,xlo,ylo,zhi,xhi,yhi,zlo)) continue;}
+ else {if(face_y_test(c,xlo,ylo,zlo,xhi,zhi)) continue;}
+ } else if(ej<j) {
+ if(ek>k) {if(edge_x_test(c,xlo,yhi,zlo,xhi,ylo,zhi)) continue;}
+ else if(ek<k) {if(edge_x_test(c,xlo,yhi,zhi,xhi,ylo,zlo)) continue;}
+ else {if(face_y_test(c,xlo,yhi,zlo,xhi,zhi)) continue;}
+ } else {
+ if(ek>k) {if(face_z_test(c,xlo,ylo,zlo,xhi,yhi)) continue;}
+ else if(ek<k) {if(face_z_test(c,xlo,ylo,zhi,xhi,yhi)) continue;}
+ else voro_fatal_error("Compute cell routine revisiting central block, which should never\nhappen.",VOROPP_INTERNAL_ERROR);
+ }
+ }
+
+ // Now compute the region that we are going to test over, and
+ // set a displacement vector for the periodic cases
+ ijk=con.region_index(ci,cj,ck,ei,ej,ek,qx,qy,qz,disp);
+
+ // Loop over all the elements in the block to test for cuts. It
+ // would be possible to exclude some of these cases by testing
+ // against mrs, but this will probably not save time.
+ if(co[ijk]>0) {
+ l=0;x2=x-qx;y2=y-qy;z2=z-qz;
+ do {
+ x1=p[ijk][ps*l]-x2;
+ y1=p[ijk][ps*l+1]-y2;
+ z1=p[ijk][ps*l+2]-z2;
+ rs=con.r_scale(x1*x1+y1*y1+z1*z1,ijk,l);
+ if(!c.nplane(x1,y1,z1,rs,id[ijk][l])) return false;
+ l++;
+ } while (l<co[ijk]);
+ }
+
+ // If there's not much memory on the block list then add more
+ if((qu_s<=qu_e?(qu_l-qu_e)+(qu_s-qu):qu_s-qu_e)<18) add_list_memory(qu_s,qu_e);
+
+ // Test the neighbors of the current block, and add them to the
+ // block list if they haven't already been tested
+ add_to_mask(ei,ej,ek,qu_e);
+ }
+
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is at a corner.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] (xl,yl,zl) the relative coordinates of the corner of the block
+ * closest to the cell center.
+ * \param[in] (xh,yh,zh) the relative coordinates of the corner of the block
+ * furthest away from the cell center.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+bool voro_compute<c_class>::corner_test(v_cell &c,double xl,double yl,double zl,double xh,double yh,double zh) {
+ con.r_prime(xl*xl+yl*yl+zl*zl);
+ if(c.plane_intersects_guess(xh,yl,zl,con.r_cutoff(xl*xh+yl*yl+zl*zl))) return false;
+ if(c.plane_intersects(xh,yh,zl,con.r_cutoff(xl*xh+yl*yh+zl*zl))) return false;
+ if(c.plane_intersects(xl,yh,zl,con.r_cutoff(xl*xl+yl*yh+zl*zl))) return false;
+ if(c.plane_intersects(xl,yh,zh,con.r_cutoff(xl*xl+yl*yh+zl*zh))) return false;
+ if(c.plane_intersects(xl,yl,zh,con.r_cutoff(xl*xl+yl*yl+zl*zh))) return false;
+ if(c.plane_intersects(xh,yl,zh,con.r_cutoff(xl*xh+yl*yl+zl*zh))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on an edge which points along the x
+ * direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the
+ * block.
+ * \param[in] (yl,zl) the relative y and z coordinates of the corner of the
+ * block closest to the cell center.
+ * \param[in] (yh,zh) the relative y and z coordinates of the corner of the
+ * block furthest away from the cell center.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::edge_x_test(v_cell &c,double x0,double yl,double zl,double x1,double yh,double zh) {
+ con.r_prime(yl*yl+zl*zl);
+ if(c.plane_intersects_guess(x0,yl,zh,con.r_cutoff(yl*yl+zl*zh))) return false;
+ if(c.plane_intersects(x1,yl,zh,con.r_cutoff(yl*yl+zl*zh))) return false;
+ if(c.plane_intersects(x1,yl,zl,con.r_cutoff(yl*yl+zl*zl))) return false;
+ if(c.plane_intersects(x0,yl,zl,con.r_cutoff(yl*yl+zl*zl))) return false;
+ if(c.plane_intersects(x0,yh,zl,con.r_cutoff(yl*yh+zl*zl))) return false;
+ if(c.plane_intersects(x1,yh,zl,con.r_cutoff(yl*yh+zl*zl))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on an edge which points along the y
+ * direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the
+ * block.
+ * \param[in] (xl,zl) the relative x and z coordinates of the corner of the
+ * block closest to the cell center.
+ * \param[in] (xh,zh) the relative x and z coordinates of the corner of the
+ * block furthest away from the cell center.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::edge_y_test(v_cell &c,double xl,double y0,double zl,double xh,double y1,double zh) {
+ con.r_prime(xl*xl+zl*zl);
+ if(c.plane_intersects_guess(xl,y0,zh,con.r_cutoff(xl*xl+zl*zh))) return false;
+ if(c.plane_intersects(xl,y1,zh,con.r_cutoff(xl*xl+zl*zh))) return false;
+ if(c.plane_intersects(xl,y1,zl,con.r_cutoff(xl*xl+zl*zl))) return false;
+ if(c.plane_intersects(xl,y0,zl,con.r_cutoff(xl*xl+zl*zl))) return false;
+ if(c.plane_intersects(xh,y0,zl,con.r_cutoff(xl*xh+zl*zl))) return false;
+ if(c.plane_intersects(xh,y1,zl,con.r_cutoff(xl*xh+zl*zl))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on an edge which points along the z
+ * direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the block.
+ * \param[in] (xl,yl) the relative x and y coordinates of the corner of the
+ * block closest to the cell center.
+ * \param[in] (xh,yh) the relative x and y coordinates of the corner of the
+ * block furthest away from the cell center.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::edge_z_test(v_cell &c,double xl,double yl,double z0,double xh,double yh,double z1) {
+ con.r_prime(xl*xl+yl*yl);
+ if(c.plane_intersects_guess(xl,yh,z0,con.r_cutoff(xl*xl+yl*yh))) return false;
+ if(c.plane_intersects(xl,yh,z1,con.r_cutoff(xl*xl+yl*yh))) return false;
+ if(c.plane_intersects(xl,yl,z1,con.r_cutoff(xl*xl+yl*yl))) return false;
+ if(c.plane_intersects(xl,yl,z0,con.r_cutoff(xl*xl+yl*yl))) return false;
+ if(c.plane_intersects(xh,yl,z0,con.r_cutoff(xl*xh+yl*yl))) return false;
+ if(c.plane_intersects(xh,yl,z1,con.r_cutoff(xl*xh+yl*yl))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on a face aligned with the x direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] xl the minimum distance from the cell center to the face.
+ * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the
+ * block.
+ * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the
+ * block.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::face_x_test(v_cell &c,double xl,double y0,double z0,double y1,double z1) {
+ con.r_prime(xl*xl);
+ if(c.plane_intersects_guess(xl,y0,z0,con.r_cutoff(xl*xl))) return false;
+ if(c.plane_intersects(xl,y0,z1,con.r_cutoff(xl*xl))) return false;
+ if(c.plane_intersects(xl,y1,z1,con.r_cutoff(xl*xl))) return false;
+ if(c.plane_intersects(xl,y1,z0,con.r_cutoff(xl*xl))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on a face aligned with the y direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] yl the minimum distance from the cell center to the face.
+ * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the
+ * block.
+ * \param[in] (z0,z1) the minimum and maximum relative z coordinates of the
+ * block.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::face_y_test(v_cell &c,double x0,double yl,double z0,double x1,double z1) {
+ con.r_prime(yl*yl);
+ if(c.plane_intersects_guess(x0,yl,z0,con.r_cutoff(yl*yl))) return false;
+ if(c.plane_intersects(x0,yl,z1,con.r_cutoff(yl*yl))) return false;
+ if(c.plane_intersects(x1,yl,z1,con.r_cutoff(yl*yl))) return false;
+ if(c.plane_intersects(x1,yl,z0,con.r_cutoff(yl*yl))) return false;
+ return true;
+}
+
+/** This function checks to see whether a particular block can possibly have
+ * any intersection with a Voronoi cell, for the case when the closest point
+ * from the cell center to the block is on a face aligned with the z direction.
+ * \param[in,out] c a reference to a Voronoi cell.
+ * \param[in] zl the minimum distance from the cell center to the face.
+ * \param[in] (x0,x1) the minimum and maximum relative x coordinates of the
+ * block.
+ * \param[in] (y0,y1) the minimum and maximum relative y coordinates of the
+ * block.
+ * \return False if the block may intersect, true if does not. */
+template<class c_class>
+template<class v_cell>
+inline bool voro_compute<c_class>::face_z_test(v_cell &c,double x0,double y0,double zl,double x1,double y1) {
+ con.r_prime(zl*zl);
+ if(c.plane_intersects_guess(x0,y0,zl,con.r_cutoff(zl*zl))) return false;
+ if(c.plane_intersects(x0,y1,zl,con.r_cutoff(zl*zl))) return false;
+ if(c.plane_intersects(x1,y1,zl,con.r_cutoff(zl*zl))) return false;
+ if(c.plane_intersects(x1,y0,zl,con.r_cutoff(zl*zl))) return false;
+ return true;
+}
+
+
+/** This routine checks to see whether a point is within a particular distance
+ * of a nearby region. If the point is within the distance of the region, then
+ * the routine returns true, and computes the maximum distance from the point
+ * to the region. Otherwise, the routine returns false.
+ * \param[in] (di,dj,dk) the position of the nearby region to be tested,
+ * relative to the region that the point is in.
+ * \param[in] (fx,fy,fz) the displacement of the point within its region.
+ * \param[in] (gxs,gys,gzs) the maximum squared distances from the point to the
+ * sides of its region.
+ * \param[out] crs a reference in which to return the maximum distance to the
+ * region (only computed if the routine returns false).
+ * \param[in] mrs the distance to be tested.
+ * \return True if the region is further away than mrs, false if the region in
+ * within mrs. */
+template<class c_class>
+bool voro_compute<c_class>::compute_min_max_radius(int di,int dj,int dk,double fx,double fy,double fz,double gxs,double gys,double gzs,double &crs,double mrs) {
+ double xlo,ylo,zlo;
+ if(di>0) {
+ xlo=di*boxx-fx;
+ crs=xlo*xlo;
+ if(dj>0) {
+ ylo=dj*boxy-fy;
+ crs+=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(boxx*xlo+boxy*ylo+boxz*zlo);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(boxx*xlo+boxy*ylo-boxz*zlo);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxx*(2*xlo+boxx)+boxy*(2*ylo+boxy)+gzs;
+ }
+ } else if(dj<0) {
+ ylo=(dj+1)*boxy-fy;
+ crs+=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(boxx*xlo-boxy*ylo+boxz*zlo);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(boxx*xlo-boxy*ylo-boxz*zlo);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxx*(2*xlo+boxx)+boxy*(-2*ylo+boxy)+gzs;
+ }
+ } else {
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(2*zlo+boxz);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(-2*zlo+boxz);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=gzs;
+ }
+ crs+=gys+boxx*(2*xlo+boxx);
+ }
+ } else if(di<0) {
+ xlo=(di+1)*boxx-fx;
+ crs=xlo*xlo;
+ if(dj>0) {
+ ylo=dj*boxy-fy;
+ crs+=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(-boxx*xlo+boxy*ylo+boxz*zlo);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(-boxx*xlo+boxy*ylo-boxz*zlo);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxx*(-2*xlo+boxx)+boxy*(2*ylo+boxy)+gzs;
+ }
+ } else if(dj<0) {
+ ylo=(dj+1)*boxy-fy;
+ crs+=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(-boxx*xlo-boxy*ylo+boxz*zlo);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=bxsq+2*(-boxx*xlo-boxy*ylo-boxz*zlo);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxx*(-2*xlo+boxx)+boxy*(-2*ylo+boxy)+gzs;
+ }
+ } else {
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(2*zlo+boxz);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(-2*zlo+boxz);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=gzs;
+ }
+ crs+=gys+boxx*(-2*xlo+boxx);
+ }
+ } else {
+ if(dj>0) {
+ ylo=dj*boxy-fy;
+ crs=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(2*zlo+boxz);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(-2*zlo+boxz);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=gzs;
+ }
+ crs+=boxy*(2*ylo+boxy);
+ } else if(dj<0) {
+ ylo=(dj+1)*boxy-fy;
+ crs=ylo*ylo;
+ if(dk>0) {
+ zlo=dk*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(2*zlo+boxz);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;
+ crs+=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(-2*zlo+boxz);
+ } else {
+ if(con.r_ctest(crs,mrs)) return true;
+ crs+=gzs;
+ }
+ crs+=boxy*(-2*ylo+boxy);
+ } else {
+ if(dk>0) {
+ zlo=dk*boxz-fz;crs=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(2*zlo+boxz);
+ } else if(dk<0) {
+ zlo=(dk+1)*boxz-fz;crs=zlo*zlo;if(con.r_ctest(crs,mrs)) return true;
+ crs+=boxz*(-2*zlo+boxz);
+ } else {
+ crs=0;
+ voro_fatal_error("Min/max radius function called for central block, which should never\nhappen.",VOROPP_INTERNAL_ERROR);
+ }
+ crs+=gys;
+ }
+ crs+=gxs;
+ }
+ return false;
+}
+
+template<class c_class>
+bool voro_compute<c_class>::compute_min_radius(int di,int dj,int dk,double fx,double fy,double fz,double mrs) {
+ double t,crs;
+
+ if(di>0) {t=di*boxx-fx;crs=t*t;}
+ else if(di<0) {t=(di+1)*boxx-fx;crs=t*t;}
+ else crs=0;
+
+ if(dj>0) {t=dj*boxy-fy;crs+=t*t;}
+ else if(dj<0) {t=(dj+1)*boxy-fy;crs+=t*t;}
+
+ if(dk>0) {t=dk*boxz-fz;crs+=t*t;}
+ else if(dk<0) {t=(dk+1)*boxz-fz;crs+=t*t;}
+
+ return crs>con.r_max_add(mrs);
+}
+
+/** Adds memory to the queue.
+ * \param[in,out] qu_s a reference to the queue start pointer.
+ * \param[in,out] qu_e a reference to the queue end pointer. */
+template<class c_class>
+inline void voro_compute<c_class>::add_list_memory(int*& qu_s,int*& qu_e) {
+ qu_size<<=1;
+ int *qu_n=new int[qu_size],*qu_c=qu_n;
+#if VOROPP_VERBOSE >=2
+ fprintf(stderr,"List memory scaled up to %d\n",qu_size);
+#endif
+ if(qu_s<=qu_e) {
+ while(qu_s<qu_e) *(qu_c++)=*(qu_s++);
+ } else {
+ while(qu_s<qu_l) *(qu_c++)=*(qu_s++);qu_s=qu;
+ while(qu_s<qu_e) *(qu_c++)=*(qu_s++);
+ }
+ delete [] qu;
+ qu_s=qu=qu_n;
+ qu_l=qu+qu_size;
+ qu_e=qu_c;
+}
+
+// Explicit template instantiation
+template voro_compute<container>::voro_compute(container&,int,int,int);
+template voro_compute<container_poly>::voro_compute(container_poly&,int,int,int);
+template bool voro_compute<container>::compute_cell(voronoicell&,int,int,int,int,int);
+template bool voro_compute<container>::compute_cell(voronoicell_neighbor&,int,int,int,int,int);
+template void voro_compute<container>::find_voronoi_cell(double,double,double,int,int,int,int,particle_record&,double&);
+template bool voro_compute<container_poly>::compute_cell(voronoicell&,int,int,int,int,int);
+template bool voro_compute<container_poly>::compute_cell(voronoicell_neighbor&,int,int,int,int,int);
+template void voro_compute<container_poly>::find_voronoi_cell(double,double,double,int,int,int,int,particle_record&,double&);
+
+// Explicit template instantiation
+template voro_compute<container_periodic>::voro_compute(container_periodic&,int,int,int);
+template voro_compute<container_periodic_poly>::voro_compute(container_periodic_poly&,int,int,int);
+template bool voro_compute<container_periodic>::compute_cell(voronoicell&,int,int,int,int,int);
+template bool voro_compute<container_periodic>::compute_cell(voronoicell_neighbor&,int,int,int,int,int);
+template void voro_compute<container_periodic>::find_voronoi_cell(double,double,double,int,int,int,int,particle_record&,double&);
+template bool voro_compute<container_periodic_poly>::compute_cell(voronoicell&,int,int,int,int,int);
+template bool voro_compute<container_periodic_poly>::compute_cell(voronoicell_neighbor&,int,int,int,int,int);
+template void voro_compute<container_periodic_poly>::find_voronoi_cell(double,double,double,int,int,int,int,particle_record&,double&);
+
+}
diff --git a/lib/voro++/src/v_compute.hh b/lib/voro++/src/v_compute.hh
new file mode 100644
index 000000000..03e58efb0
--- /dev/null
+++ b/lib/voro++/src/v_compute.hh
@@ -0,0 +1,149 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file v_compute.hh
+ * \brief Header file for the voro_compute template and related classes. */
+
+#ifndef VOROPP_V_COMPUTE_HH
+#define VOROPP_V_COMPUTE_HH
+
+#include "config.hh"
+#include "worklist.hh"
+#include "cell.hh"
+
+namespace voro {
+
+/** \brief Structure for holding information about a particle.
+ *
+ * This small structure holds information about a single particle, and is used
+ * by several of the routines in the voro_compute template for passing
+ * information by reference between functions. */
+struct particle_record {
+ /** The index of the block that the particle is within. */
+ int ijk;
+ /** The number of particle within its block. */
+ int l;
+ /** The x-index of the block. */
+ int di;
+ /** The y-index of the block. */
+ int dj;
+ /** The z-index of the block. */
+ int dk;
+};
+
+/** \brief Template for carrying out Voronoi cell computations. */
+template <class c_class>
+class voro_compute {
+ public:
+ /** A reference to the container class on which to carry out*/
+ c_class &con;
+ /** The size of an internal computational block in the x
+ * direction. */
+ const double boxx;
+ /** The size of an internal computational block in the y
+ * direction. */
+ const double boxy;
+ /** The size of an internal computational block in the z
+ * direction. */
+ const double boxz;
+ /** The inverse box length in the x direction, set to
+ * nx/(bx-ax). */
+ const double xsp;
+ /** The inverse box length in the y direction, set to
+ * ny/(by-ay). */
+ const double ysp;
+ /** The inverse box length in the z direction, set to
+ * nz/(bz-az). */
+ const double zsp;
+ /** The number of boxes in the x direction for the searching mask. */
+ const int hx;
+ /** The number of boxes in the y direction for the searching mask. */
+ const int hy;
+ /** The number of boxes in the z direction for the searching mask. */
+ const int hz;
+ /** A constant, set to the value of hx multiplied by hy, which
+ * is used in the routines which step through mask boxes in
+ * sequence. */
+ const int hxy;
+ /** A constant, set to the value of hx*hy*hz, which is used in
+ * the routines which step through mask boxes in sequence. */
+ const int hxyz;
+ /** The number of floating point entries to store for each
+ * particle. */
+ const int ps;
+ /** This array holds the numerical IDs of each particle in each
+ * computational box. */
+ int **id;
+ /** A two dimensional array holding particle positions. For the
+ * derived container_poly class, this also holds particle
+ * radii. */
+ double **p;
+ /** An array holding the number of particles within each
+ * computational box of the container. */
+ int *co;
+ voro_compute(c_class &con_,int hx_,int hy_,int hz_);
+ /** The class destructor frees the dynamically allocated memory
+ * for the mask and queue. */
+ ~voro_compute() {
+ delete [] qu;
+ delete [] mask;
+ }
+ template<class v_cell>
+ bool compute_cell(v_cell &c,int ijk,int s,int ci,int cj,int ck);
+ void find_voronoi_cell(double x,double y,double z,int ci,int cj,int ck,int ijk,particle_record &w,double &mrs);
+ private:
+ /** A constant set to boxx*boxx+boxy*boxy+boxz*boxz, which is
+ * frequently used in the computation. */
+ const double bxsq;
+ /** This sets the current value being used to mark tested blocks
+ * in the mask. */
+ unsigned int mv;
+ /** The current size of the search list. */
+ int qu_size;
+ /** A pointer to the array of worklists. */
+ const unsigned int *wl;
+ /** An pointer to the array holding the minimum distances
+ * associated with the worklists. */
+ double *mrad;
+ /** This array is used during the cell computation to determine
+ * which blocks have been considered. */
+ unsigned int *mask;
+ /** An array is used to store the queue of blocks to test
+ * during the Voronoi cell computation. */
+ int *qu;
+ /** A pointer to the end of the queue array, used to determine
+ * when the queue is full. */
+ int *qu_l;
+ template<class v_cell>
+ bool corner_test(v_cell &c,double xl,double yl,double zl,double xh,double yh,double zh);
+ template<class v_cell>
+ inline bool edge_x_test(v_cell &c,double x0,double yl,double zl,double x1,double yh,double zh);
+ template<class v_cell>
+ inline bool edge_y_test(v_cell &c,double xl,double y0,double zl,double xh,double y1,double zh);
+ template<class v_cell>
+ inline bool edge_z_test(v_cell &c,double xl,double yl,double z0,double xh,double yh,double z1);
+ template<class v_cell>
+ inline bool face_x_test(v_cell &c,double xl,double y0,double z0,double y1,double z1);
+ template<class v_cell>
+ inline bool face_y_test(v_cell &c,double x0,double yl,double z0,double x1,double z1);
+ template<class v_cell>
+ inline bool face_z_test(v_cell &c,double x0,double y0,double zl,double x1,double y1);
+ bool compute_min_max_radius(int di,int dj,int dk,double fx,double fy,double fz,double gx,double gy,double gz,double& crs,double mrs);
+ bool compute_min_radius(int di,int dj,int dk,double fx,double fy,double fz,double mrs);
+ inline void add_to_mask(int ei,int ej,int ek,int *&qu_e);
+ inline void scan_bits_mask_add(unsigned int q,unsigned int *mijk,int ei,int ej,int ek,int *&qu_e);
+ inline void scan_all(int ijk,double x,double y,double z,int di,int dj,int dk,particle_record &w,double &mrs);
+ void add_list_memory(int*& qu_s,int*& qu_e);
+ /** Resets the mask in cases where the mask counter wraps
+ * around. */
+ inline void reset_mask() {
+ for(unsigned int *mp(mask);mp<mask+hxyz;mp++) *mp=0;
+ }
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/voro++.cc b/lib/voro++/src/voro++.cc
new file mode 100644
index 000000000..0176105e1
--- /dev/null
+++ b/lib/voro++/src/voro++.cc
@@ -0,0 +1,19 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file voro++.cc
+ * \brief A file that loads all of the function implementation files. */
+
+#include "cell.cc"
+#include "common.cc"
+#include "v_base.cc"
+#include "container.cc"
+#include "unitcell.cc"
+#include "container_prd.cc"
+#include "pre_container.cc"
+#include "v_compute.cc"
+#include "c_loops.cc"
+#include "wall.cc"
diff --git a/lib/voro++/src/voro++.hh b/lib/voro++/src/voro++.hh
new file mode 100644
index 000000000..444f53700
--- /dev/null
+++ b/lib/voro++/src/voro++.hh
@@ -0,0 +1,333 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file voro++.hh
+ * \brief A file that loads all of the Voro++ header files. */
+
+/** \mainpage Voro++ class reference manual
+ * \section intro Introduction
+ * Voro++ is a software library for carrying out three-dimensional computations
+ * of the Voronoi tessellation. A distinguishing feature of the Voro++ library
+ * is that it carries out cell-based calculations, computing the Voronoi cell
+ * for each particle individually, rather than computing the Voronoi
+ * tessellation as a global network of vertices and edges. It is particularly
+ * well-suited for applications that rely on cell-based statistics, where
+ * features of Voronoi cells (eg. volume, centroid, number of faces) can be
+ * used to analyze a system of particles.
+ *
+ * Voro++ is written in C++ and can be built as a static library that can be
+ * linked to. This manual provides a reference for every function in the class
+ * structure. For a general overview of the program, see the Voro++ website at
+ * http://math.lbl.gov/voro++/ and in particular the example programs at
+ * http://math.lbl.gov/voro++/examples/ that demonstrate many of the library's
+ * features.
+ *
+ * \section class C++ class structure
+ * The code is structured around several C++ classes. The voronoicell_base
+ * class contains all of the routines for constructing a single Voronoi cell.
+ * It represents the cell as a collection of vertices that are connected by
+ * edges, and there are routines for initializing, making, and outputting the
+ * cell. The voronoicell_base class form the base of the voronoicell and
+ * voronoicell_neighbor classes, which add specialized routines depending on
+ * whether neighboring particle ID information for each face must be tracked or
+ * not. Collectively, these classes are referred to as "voronoicell classes"
+ * within the documentation.
+ *
+ * There is a hierarchy of classes that represent three-dimensional particle
+ * systems. All of these are derived from the voro_base class, which contains
+ * constants that divide a three-dimensional system into a rectangular grid of
+ * equally-sized rectangular blocks; this grid is used for computational
+ * efficiency during the Voronoi calculations.
+ *
+ * The container_base, container, and container_poly are then derived from the
+ * voro_base class to represent a particle system in a specific
+ * three-dimensional rectangular box using both periodic and non-periodic
+ * boundary conditions. In addition, the container_periodic_base,
+ * container_periodic, and container_periodic_poly classes represent
+ * a particle system in a three-dimensional non-orthogonal periodic domain,
+ * defined by three periodicity vectors that represent a parallelepiped.
+ * Collectively, these classes are referred to as "container classes" within
+ * the documentation.
+ *
+ * The voro_compute template encapsulates all of the routines for computing
+ * Voronoi cells. Each container class has a voro_compute template within
+ * it, that accesses the container's particle system, and computes the Voronoi
+ * cells.
+ *
+ * There are several wall classes that can be used to apply certain boundary
+ * conditions using additional plane cuts during the Voronoi cell compution.
+ * The code also contains a number of small loop classes, c_loop_all,
+ * c_loop_subset, c_loop_all_periodic, and c_loop_order that can be used to
+ * iterate over a certain subset of particles in a container. The latter class
+ * makes use of a special particle_order class that stores a specific order of
+ * particles within the container. The library also contains the classes
+ * pre_container_base, pre_container, and pre_container_poly, that can be used
+ * as temporary storage when importing data of unknown size.
+ *
+ * \section voronoicell The voronoicell classes
+ * The voronoicell class represents a single Voronoi cell as a convex
+ * polyhedron, with a set of vertices that are connected by edges. The class
+ * contains a variety of functions that can be used to compute and output the
+ * Voronoi cell corresponding to a particular particle. The command init()
+ * can be used to initialize a cell as a large rectangular box. The Voronoi cell
+ * can then be computed by repeatedly cutting it with planes that correspond to
+ * the perpendicular bisectors between that particle and its neighbors.
+ *
+ * This is achieved by using the plane() routine, which will recompute the
+ * cell's vertices and edges after cutting it with a single plane. This is the
+ * key routine in voronoicell class. It begins by exploiting the convexity
+ * of the underlying cell, tracing between edges to work out if the cell
+ * intersects the cutting plane. If it does not intersect, then the routine
+ * immediately exits. Otherwise, it finds an edge or vertex that intersects
+ * the plane, and from there, traces out a new face on the cell, recomputing
+ * the edge and vertex structure accordingly.
+ *
+ * Once the cell is computed, there are many routines for computing features of
+ * the the Voronoi cell, such as its volume, surface area, or centroid. There
+ * are also many routines for outputting features of the Voronoi cell, or
+ * writing its shape in formats that can be read by Gnuplot or POV-Ray.
+ *
+ * \subsection internal Internal data representation
+ * The voronoicell class has a public member p representing the
+ * number of vertices. The polyhedral structure of the cell is stored
+ * in the following arrays:
+ *
+ * - pts: a one-dimensional array of floating point numbers, that represent the
+ * position vectors x_0, x_1, ..., x_{p-1} of the polyhedron vertices.
+ * - nu: the order of each vertex n_0, n_1, ..., n_{p-1}, corresponding to
+ * the number of other vertices to which each is connected.
+ * - ed: a two-dimensional table of edges and relations. For the ith vertex,
+ * ed[i] has 2n_i+1 elements. The first n_i elements are the edges e(j,i),
+ * where e(j,i) is the jth neighbor of vertex i. The edges are ordered
+ * according to a right-hand rule with respect to an outward-pointing normal.
+ * The next n_i elements are the relations l(j,i) which satisfy the property
+ * e(l(j,i),e(j,i)) = i. The final element of the ed[i] list is a back
+ * pointer used in memory allocation.
+ *
+ * In a very large number of cases, the values of n_i will be 3. This is because
+ * the only way that a higher-order vertex can be created in the plane()
+ * routine is if the cutting plane perfectly intersects an existing vertex. For
+ * random particle arrangements with position vectors specified to double
+ * precision this should happen very rarely. A preliminary version of this code
+ * was quite successful with only making use of vertices of order 3. However,
+ * when calculating millions of cells, it was found that this approach is not
+ * robust, since a single floating point error can invalidate the computation.
+ * This can also be a problem for cases featuring crystalline arrangements of
+ * particles where the corresponding Voronoi cells may have high-order vertices
+ * by construction.
+ *
+ * Because of this, Voro++ takes the approach that it if an existing vertex is
+ * within a small numerical tolerance of the cutting plane, it is treated as
+ * being exactly on the plane, and the polyhedral topology is recomputed
+ * accordingly. However, while this improves robustness, it also adds the
+ * complexity that n_i may no longer always be 3. This causes memory management
+ * to be significantly more complicated, as different vertices require a
+ * different number of elements in the ed[][] array. To accommodate this, the
+ * voronoicell class allocated edge memory in a different array called mep[][],
+ * in such a way that all vertices of order k are held in mep[k]. If vertex
+ * i has order k, then ed[i] points to memory within mep[k]. The array ed[][]
+ * is never directly initialized as a two-dimensional array itself, but points
+ * at allocations within mep[][]. To the user, it appears as though each row of
+ * ed[][] has a different number of elements. When vertices are added or
+ * deleted, care must be taken to reorder and reassign elements in these
+ * arrays.
+ *
+ * During the plane() routine, the code traces around the vertices of the cell,
+ * and adds new vertices along edges which intersect the cutting plane to
+ * create a new face. The values of l(j,i) are used in this computation, as
+ * when the code is traversing from one vertex on the cell to another, this
+ * information allows the code to immediately work out which edge of a vertex
+ * points back to the one it came from. As new vertices are created, the l(j,i)
+ * are also updated to ensure consistency. To ensure robustness, the plane
+ * cutting algorithm should work with any possible combination of vertices
+ * which are inside, outside, or exactly on the cutting plane.
+ *
+ * Vertices exactly on the cutting plane create some additional computational
+ * difficulties. If there are two marginal vertices connected by an existing
+ * edge, then it would be possible for duplicate edges to be created between
+ * those two vertices, if the plane routine traces along both sides of this
+ * edge while constructing the new face. The code recognizes these cases and
+ * prevents the double edge from being formed. Another possibility is the
+ * formation of vertices of order two or one. At the end of the plane cutting
+ * routine, the code checks to see if any of these are present, removing the
+ * order one vertices by just deleting them, and removing the order two
+ * vertices by connecting the two neighbors of each vertex together. It is
+ * possible that the removal of a single low-order vertex could result in the
+ * creation of additional low-order vertices, so the process is applied
+ * recursively until no more are left.
+ *
+ * \section container The container classes
+ * There are four container classes available for general usage: container,
+ * container_poly, container_periodic, and container_periodic_poly. Each of
+ * these represent a system of particles in a specific three-dimensional
+ * geometry. They contain routines for importing particles from a text file,
+ * and adding particles individually. They also contain a large number of
+ * analyzing and outputting the particle system. Internally, the routines that
+ * compute Voronoi cells do so by making use of the voro_compute template.
+ * Each container class contains routines that tell the voro_compute template
+ * about the specific geometry of this container.
+ *
+ * \section voro_compute The voro_compute template
+ * The voro_compute template encapsulates the routines for carrying out the
+ * Voronoi cell computations. It contains data structures suchs as a mask and a
+ * queue that are used in the computations. The voro_compute template is
+ * associated with a specific container class, and during the computation, it
+ * calls routines in the container class to access the particle positions that
+ * are stored there.
+ *
+ * The key routine in this class is compute_cell(), which makes use of a
+ * voronoicell class to construct a Voronoi cell for a specific particle in the
+ * container. The basic approach that this function takes is to repeatedly cut
+ * the Voronoi cell by planes corresponding neighboring particles, and stop
+ * when it recognizes that all the remaining particles in the container are too
+ * far away to possibly influence cell's shape. The code makes use of two
+ * possible methods for working out when a cell computation is complete:
+ *
+ * - Radius test: if the maximum distance of a Voronoi cell
+ * vertex from the cell center is R, then no particles more than a distance
+ * 2R away can possibly influence the cell. This a very fast computation to
+ * do, but it has no directionality: if the cell extends a long way in one
+ * direction then particles a long distance in other directions will still
+ * need to be tested.
+ * - Region test: it is possible to test whether a specific region can
+ * possibly influence the cell by applying a series of plane tests at the
+ * point on the region which is closest to the Voronoi cell center. This is a
+ * slower computation to do, but it has directionality.
+ *
+ * Another useful observation is that the regions that need to be tested are
+ * simply connected, meaning that if a particular region does not need to be
+ * tested, then neighboring regions which are further away do not need to be
+ * tested.
+ *
+ * For maximum efficiency, it was found that a hybrid approach making use of
+ * both of the above tests worked well in practice. Radius tests work well for
+ * the first few blocks, but switching to region tests after then prevent the
+ * code from becoming extremely slow, due to testing over very large spherical
+ * shells of particles. The compute_cell() routine therefore takes the
+ * following approach:
+ *
+ * - Initialize the voronoicell class to fill the entire computational domain.
+ * - Cut the cell by any wall objects that have been added to the container.
+ * - Apply plane cuts to the cell corresponding to the other particles which
+ * are within the current particle's region.
+ * - Test over a pre-computed worklist of neighboring regions, that have been
+ * ordered according to the minimum distance away from the particle's
+ * position. Apply radius tests after every few regions to see if the
+ * calculation can terminate.
+ * - If the code reaches the end of the worklist, add all the neighboring
+ * regions to a new list.
+ * - Carry out a region test on the first item of the list. If the region needs
+ * to be tested, apply the plane() routine for all of its particles, and then
+ * add any neighboring regions to the end of the list that need to be tested.
+ * Continue until the list has no elements left.
+ *
+ * The compute_cell() routine forms the basis of many other routines, such as
+ * store_cell_volumes() and draw_cells_gnuplot() that can be used to calculate
+ * and draw the cells in a container.
+ *
+ * \section walls Wall computation
+ * Wall computations are handled by making use of a pure virtual wall class.
+ * Specific wall types are derived from this class, and require the
+ * specification of two routines: point_inside() that tests to see if a point
+ * is inside a wall or not, and cut_cell() that cuts a cell according to the
+ * wall's position. The walls can be added to the container using the
+ * add_wall() command, and these are called each time a compute_cell() command
+ * is carried out. At present, wall types for planes, spheres, cylinders, and
+ * cones are provided, although custom walls can be added by creating new
+ * classes derived from the pure virtual class. Currently all wall types
+ * approximate the wall surface with a single plane, which produces some small
+ * errors, but generally gives good results for dense particle packings in
+ * direct contact with a wall surface. It would be possible to create more
+ * accurate walls by making cut_cell() routines that approximate the curved
+ * surface with multiple plane cuts.
+ *
+ * The wall objects can used for periodic calculations, although to obtain
+ * valid results, the walls should also be periodic as well. For example, in a
+ * domain that is periodic in the x direction, a cylinder aligned along the x
+ * axis could be added. At present, the interior of all wall objects are convex
+ * domains, and consequently any superposition of them will be a convex domain
+ * also. Carrying out computations in non-convex domains poses some problems,
+ * since this could theoretically lead to non-convex Voronoi cells, which the
+ * internal data representation of the voronoicell class does not support. For
+ * non-convex cases where the wall surfaces feature just a small amount of
+ * negative curvature (eg. a torus) approximating the curved surface with a
+ * single plane cut may give an acceptable level of accuracy. For non-convex
+ * cases that feature internal angles, the best strategy may be to decompose
+ * the domain into several convex subdomains, carry out a calculation in each,
+ * and then add the results together. The voronoicell class cannot be easily
+ * modified to handle non-convex cells as this would fundamentally alter the
+ * algorithms that it uses, and cases could arise where a single plane cut
+ * could create several new faces as opposed to just one.
+ *
+ * \section loops Loop classes
+ * The container classes have a number of simple routines for calculating
+ * Voronoi cells for all particles within them. However, in some situations it
+ * is desirable to iterate over a specific subset of particles. This can be
+ * achieved with the c_loop classes that are all derived from the c_loop_base
+ * class. Each class can iterate over a specific subset of particles in a
+ * container. There are three loop classes for use with the container and
+ * container_poly classes:
+ *
+ * - c_loop_all will loop over all of the particles in a container.
+ * - c_loop_subset will loop over a subset of particles in a container that lie
+ * within some geometrical region. It can loop over particles in a
+ * rectangular box, particles in a sphere, or particles that lie within
+ * specific internal computational blocks.
+ * - c_loop_order will loop over a specific list of particles that were
+ * previously stored in a particle_order class.
+ *
+ * Several of the key routines within the container classes (such as
+ * draw_cells_gnuplot and print_custom) have versions where they can be passed
+ * a loop class to use. Loop classes can also be used directly and there are
+ * some examples on the library website that demonstrate this. It is also
+ * possible to write custom loop classes.
+ *
+ * In addition to the loop classes mentioned above, there is also a
+ * c_loop_all_periodic class, that is specifically for use with the
+ * container_periodic and container_periodic_poly classes. Since the data
+ * structures of these containers differ considerably, it requires a different
+ * loop class that is not interoperable with the others.
+ *
+ * \section pre_container The pre_container classes
+ * Voro++ makes use of internal computational grid of blocks that are used to
+ * configure the code for maximum efficiency. As discussed on the library
+ * website, the best performance is achieved for around 5 particles per block,
+ * with anything in the range from 3 to 12 giving good performance. Usually
+ * the size of the grid can be chosen by ensuring that the number of blocks is
+ * equal to the number of particles divided by 5.
+ *
+ * However, this can be difficult to choose in cases when the number of
+ * particles is not known a priori, and in thes cases the pre_container classes
+ * can be used. They can import an arbitrary number of particle positions from
+ * a file, dynamically allocating memory in chunks as necessary. Once particles
+ * are imported, they can guess an optimal block arrangement to use for the
+ * container class, and then transfer the particles to the container. By
+ * default, this procedure is used by the command-line utility to enable it to
+ * work well with arbitrary sizes of input data.
+ *
+ * The pre_container class can be used when no particle radius information is
+ * available, and the pre_container_poly class can be used when radius
+ * information is available. At present, the pre_container classes can only be
+ * used with the container and container_poly classes. They do not support
+ * the container_periodic and container_periodic_poly classes. */
+
+#ifndef VOROPP_HH
+#define VOROPP_HH
+
+#include "config.hh"
+#include "common.hh"
+#include "cell.hh"
+#include "v_base.hh"
+#include "rad_option.hh"
+#include "container.hh"
+#include "unitcell.hh"
+#include "container_prd.hh"
+#include "pre_container.hh"
+#include "v_compute.hh"
+#include "c_loops.hh"
+#include "wall.hh"
+
+#endif
diff --git a/lib/voro++/src/wall.cc b/lib/voro++/src/wall.cc
new file mode 100644
index 000000000..131d81323
--- /dev/null
+++ b/lib/voro++/src/wall.cc
@@ -0,0 +1,122 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file wall.cc
+ * \brief Function implementations for the derived wall classes. */
+
+#include "wall.hh"
+
+namespace voro {
+
+/** Tests to see whether a point is inside the sphere wall object.
+ * \param[in,out] (x,y,z) the vector to test.
+ * \return True if the point is inside, false if the point is outside. */
+bool wall_sphere::point_inside(double x,double y,double z) {
+ return (x-xc)*(x-xc)+(y-yc)*(y-yc)+(z-zc)*(z-zc)<rc*rc;
+}
+
+/** Cuts a cell by the sphere wall object. The spherical wall is approximated by
+ * a single plane applied at the point on the sphere which is closest to the center
+ * of the cell. This works well for particle arrangements that are packed against
+ * the wall, but loses accuracy for sparse particle distributions.
+ * \param[in,out] c the Voronoi cell to be cut.
+ * \param[in] (x,y,z) the location of the Voronoi cell.
+ * \return True if the cell still exists, false if the cell is deleted. */
+template<class v_cell>
+bool wall_sphere::cut_cell_base(v_cell &c,double x,double y,double z) {
+ double xd=x-xc,yd=y-yc,zd=z-zc,dq=xd*xd+yd*yd+zd*zd;
+ if (dq>1e-5) {
+ dq=2*(sqrt(dq)*rc-dq);
+ return c.nplane(xd,yd,zd,dq,w_id);
+ }
+ return true;
+}
+
+/** Tests to see whether a point is inside the plane wall object.
+ * \param[in] (x,y,z) the vector to test.
+ * \return True if the point is inside, false if the point is outside. */
+bool wall_plane::point_inside(double x,double y,double z) {
+ return x*xc+y*yc+z*zc<ac;
+}
+
+/** Cuts a cell by the plane wall object.
+ * \param[in,out] c the Voronoi cell to be cut.
+ * \param[in] (x,y,z) the location of the Voronoi cell.
+ * \return True if the cell still exists, false if the cell is deleted. */
+template<class v_cell>
+bool wall_plane::cut_cell_base(v_cell &c,double x,double y,double z) {
+ double dq=2*(ac-x*xc-y*yc-z*zc);
+ return c.nplane(xc,yc,zc,dq,w_id);
+}
+
+/** Tests to see whether a point is inside the cylindrical wall object.
+ * \param[in] (x,y,z) the vector to test.
+ * \return True if the point is inside, false if the point is outside. */
+bool wall_cylinder::point_inside(double x,double y,double z) {
+ double xd=x-xc,yd=y-yc,zd=z-zc;
+ double pa=(xd*xa+yd*ya+zd*za)*asi;
+ xd-=xa*pa;yd-=ya*pa;zd-=za*pa;
+ return xd*xd+yd*yd+zd*zd<rc*rc;
+}
+
+/** Cuts a cell by the cylindrical wall object. The cylindrical wall is
+ * approximated by a single plane applied at the point on the cylinder which is
+ * closest to the center of the cell. This works well for particle arrangements
+ * that are packed against the wall, but loses accuracy for sparse particle
+ * distributions.
+ * \param[in,out] c the Voronoi cell to be cut.
+ * \param[in] (x,y,z) the location of the Voronoi cell.
+ * \return True if the cell still exists, false if the cell is deleted. */
+template<class v_cell>
+bool wall_cylinder::cut_cell_base(v_cell &c,double x,double y,double z) {
+ double xd=x-xc,yd=y-yc,zd=z-zc,pa=(xd*xa+yd*ya+zd*za)*asi;
+ xd-=xa*pa;yd-=ya*pa;zd-=za*pa;
+ pa=xd*xd+yd*yd+zd*zd;
+ if(pa>1e-5) {
+ pa=2*(sqrt(pa)*rc-pa);
+ return c.nplane(xd,yd,zd,pa,w_id);
+ }
+ return true;
+}
+
+/** Tests to see whether a point is inside the cone wall object.
+ * \param[in] (x,y,z) the vector to test.
+ * \return True if the point is inside, false if the point is outside. */
+bool wall_cone::point_inside(double x,double y,double z) {
+ double xd=x-xc,yd=y-yc,zd=z-zc,pa=(xd*xa+yd*ya+zd*za)*asi;
+ xd-=xa*pa;yd-=ya*pa;zd-=za*pa;
+ pa*=gra;
+ if (pa<0) return false;
+ pa*=pa;
+ return xd*xd+yd*yd+zd*zd<pa;
+}
+
+/** Cuts a cell by the cone wall object. The conical wall is
+ * approximated by a single plane applied at the point on the cone which is
+ * closest to the center of the cell. This works well for particle arrangements
+ * that are packed against the wall, but loses accuracy for sparse particle
+ * distributions.
+ * \param[in,out] c the Voronoi cell to be cut.
+ * \param[in] (x,y,z) the location of the Voronoi cell.
+ * \return True if the cell still exists, false if the cell is deleted. */
+template<class v_cell>
+bool wall_cone::cut_cell_base(v_cell &c,double x,double y,double z) {
+ double xd=x-xc,yd=y-yc,zd=z-zc,xf,yf,zf,q,pa=(xd*xa+yd*ya+zd*za)*asi;
+ xd-=xa*pa;yd-=ya*pa;zd-=za*pa;
+ pa=xd*xd+yd*yd+zd*zd;
+ if(pa>1e-5) {
+ pa=1/sqrt(pa);
+ q=sqrt(asi);
+ xf=-sang*q*xa+cang*pa*xd;
+ yf=-sang*q*ya+cang*pa*yd;
+ zf=-sang*q*za+cang*pa*zd;
+ pa=2*(xf*(xc-x)+yf*(yc-y)+zf*(zc-z));
+ return c.nplane(xf,yf,zf,pa,w_id);
+ }
+ return true;
+}
+
+}
diff --git a/lib/voro++/src/wall.hh b/lib/voro++/src/wall.hh
new file mode 100644
index 000000000..6db0c5a2e
--- /dev/null
+++ b/lib/voro++/src/wall.hh
@@ -0,0 +1,119 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file wall.hh
+ * \brief Header file for the derived wall classes. */
+
+#ifndef VOROPP_WALL_HH
+#define VOROPP_WALL_HH
+
+#include "cell.hh"
+#include "container.hh"
+
+namespace voro {
+
+/** \brief A class representing a spherical wall object.
+ *
+ * This class represents a spherical wall object. */
+struct wall_sphere : public wall {
+ public:
+ /** Constructs a spherical wall object.
+ * \param[in] w_id_ an ID number to associate with the wall for
+ * neighbor tracking.
+ * \param[in] (xc_,yc_,zc_) a position vector for the sphere's
+ * center.
+ * \param[in] rc_ the radius of the sphere. */
+ wall_sphere(double xc_,double yc_,double zc_,double rc_,int w_id_=-99)
+ : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), rc(rc_) {}
+ bool point_inside(double x,double y,double z);
+ template<class v_cell>
+ bool cut_cell_base(v_cell &c,double x,double y,double z);
+ bool cut_cell(voronoicell &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ private:
+ const int w_id;
+ const double xc,yc,zc,rc;
+};
+
+/** \brief A class representing a plane wall object.
+ *
+ * This class represents a single plane wall object. */
+struct wall_plane : public wall {
+ public:
+ /** Constructs a plane wall object.
+ * \param[in] (xc_,yc_,zc_) a normal vector to the plane.
+ * \param[in] ac_ a displacement along the normal vector.
+ * \param[in] w_id_ an ID number to associate with the wall for
+ * neighbor tracking. */
+ wall_plane(double xc_,double yc_,double zc_,double ac_,int w_id_=-99)
+ : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), ac(ac_) {}
+ bool point_inside(double x,double y,double z);
+ template<class v_cell>
+ bool cut_cell_base(v_cell &c,double x,double y,double z);
+ bool cut_cell(voronoicell &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ private:
+ const int w_id;
+ const double xc,yc,zc,ac;
+};
+
+/** \brief A class representing a cylindrical wall object.
+ *
+ * This class represents a open cylinder wall object. */
+struct wall_cylinder : public wall {
+ public:
+ /** Constructs a cylinder wall object.
+ * \param[in] (xc_,yc_,zc_) a point on the axis of the
+ * cylinder.
+ * \param[in] (xa_,ya_,za_) a vector pointing along the
+ * direction of the cylinder.
+ * \param[in] rc_ the radius of the cylinder
+ * \param[in] w_id_ an ID number to associate with the wall for
+ * neighbor tracking. */
+ wall_cylinder(double xc_,double yc_,double zc_,double xa_,double ya_,double za_,double rc_,int w_id_=-99)
+ : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), xa(xa_), ya(ya_), za(za_),
+ asi(1/(xa_*xa_+ya_*ya_+za_*za_)), rc(rc_) {}
+ bool point_inside(double x,double y,double z);
+ template<class v_cell>
+ bool cut_cell_base(v_cell &c,double x,double y,double z);
+ bool cut_cell(voronoicell &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ private:
+ const int w_id;
+ const double xc,yc,zc,xa,ya,za,asi,rc;
+};
+
+
+/** \brief A class representing a conical wall object.
+ *
+ * This class represents a cone wall object. */
+struct wall_cone : public wall {
+ public:
+ /** Constructs a cone wall object.
+ * \param[in] (xc_,yc_,zc_) the apex of the cone.
+ * \param[in] (xa_,ya_,za_) a vector pointing along the axis of
+ * the cone.
+ * \param[in] ang the angle (in radians) of the cone, measured
+ * from the axis.
+ * \param[in] w_id_ an ID number to associate with the wall for
+ * neighbor tracking. */
+ wall_cone(double xc_,double yc_,double zc_,double xa_,double ya_,double za_,double ang,int w_id_=-99)
+ : w_id(w_id_), xc(xc_), yc(yc_), zc(zc_), xa(xa_), ya(ya_), za(za_),
+ asi(1/(xa_*xa_+ya_*ya_+za_*za_)),
+ gra(tan(ang)), sang(sin(ang)), cang(cos(ang)) {}
+ bool point_inside(double x,double y,double z);
+ template<class v_cell>
+ bool cut_cell_base(v_cell &c,double x,double y,double z);
+ bool cut_cell(voronoicell &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ bool cut_cell(voronoicell_neighbor &c,double x,double y,double z) {return cut_cell_base(c,x,y,z);}
+ private:
+ const int w_id;
+ const double xc,yc,zc,xa,ya,za,asi,gra,sang,cang;
+};
+
+}
+
+#endif
diff --git a/lib/voro++/src/worklist.hh b/lib/voro++/src/worklist.hh
new file mode 100644
index 000000000..878cf2cfb
--- /dev/null
+++ b/lib/voro++/src/worklist.hh
@@ -0,0 +1,32 @@
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr@alum.mit.edu
+// Date : August 30th 2011
+
+/** \file worklist.hh
+ * \brief Header file for setting constants used in the block worklists that are
+ * used during cell computation.
+ *
+ * This file is automatically generated by worklist_gen.pl and it is not
+ * intended to be edited by hand. */
+
+#ifndef VOROPP_WORKLIST_HH
+#define VOROPP_WORKLIST_HH
+
+namespace voro {
+
+/** Each region is divided into a grid of subregions, and a worklist is
+# constructed for each. This parameter sets is set to half the number of
+# subregions that the block is divided into. */
+const int wl_hgrid=4;
+/** The number of subregions that a block is subdivided into, which is twice
+the value of hgrid. */
+const int wl_fgrid=8;
+/** The total number of worklists, set to the cube of hgrid. */
+const int wl_hgridcu=64;
+/** The number of elements in each worklist. */
+const int wl_seq_length=64;
+
+}
+#endif
diff --git a/lib/voro++/src/worklist_gen.pl b/lib/voro++/src/worklist_gen.pl
new file mode 100755
index 000000000..f6beb6619
--- /dev/null
+++ b/lib/voro++/src/worklist_gen.pl
@@ -0,0 +1,236 @@
+#!/usr/bin/perl
+# Voro++, a 3D cell-based Voronoi library
+#
+# Author : Chris H. Rycroft (LBL / UC Berkeley)
+# Email : chr@alum.mit.edu
+# Date : August 30th 2011
+#
+# worklist_gen.pl - this perl script is used to automatically generate the
+# worklists of blocks that are stored in worklist.cc, that are used by the
+# compute_cell() routine to ensure maximum efficiency
+
+# Each region is divided into a grid of subregions, and a worklist is
+# constructed for each. This parameter sets is set to half the number of
+# subregions that the block is divided into.
+$hr=4;
+
+# This parameter is automatically set to the the number of subregions that the
+# block is divided into
+$r=$hr*2;
+
+# This parameter sets the total number of block entries in each worklist
+$ls=63;
+
+# When the worklists are being constructed, a mask array is made use of. To
+# prevent the creation of array elements with negative indices, this parameter
+# sets an arbitrary displacement.
+$dis=8;
+
+# Constants used mask indexing
+$d=2*$dis+1;$dd=$d*$d;$d0=(1+$d+$dd)*$dis;
+
+use Math::Trig;
+
+# Construct the worklist header file, based on the parameters above
+open W,">worklist.hh";
+print W <<EOF;
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr\@alum.mit.edu
+// Date : August 30th 2011
+
+/** \\file worklist.hh
+ * \\brief Header file for setting constants used in the block worklists that are
+ * used during cell computation.
+ *
+ * This file is automatically generated by worklist_gen.pl and it is not
+ * intended to be edited by hand. */
+
+#ifndef VOROPP_WORKLIST_HH
+#define VOROPP_WORKLIST_HH
+
+namespace voro {
+
+/** Each region is divided into a grid of subregions, and a worklist is
+# constructed for each. This parameter sets is set to half the number of
+# subregions that the block is divided into. */
+EOF
+print W "const int wl_hgrid=$hr;\n";
+print W <<EOF;
+/** The number of subregions that a block is subdivided into, which is twice
+the value of hgrid. */
+EOF
+print W "const int wl_fgrid=$r;\n";
+print W <<EOF;
+/** The total number of worklists, set to the cube of hgrid. */
+EOF
+printf W "const int wl_hgridcu=%d;\n",$hr*$hr*$hr;
+print W <<EOF;
+/** The number of elements in each worklist. */
+EOF
+printf W "const int wl_seq_length=%d;\n",$ls+1;
+print W <<EOF;
+
+}
+#endif
+EOF
+close W;
+
+# Construct the preamble to the worklist.cc file
+open W,">v_base_wl.cc";
+print W <<EOF;
+// Voro++, a 3D cell-based Voronoi library
+//
+// Author : Chris H. Rycroft (LBL / UC Berkeley)
+// Email : chr\@alum.mit.edu
+// Date : August 30th 2011
+
+/** \\file v_base_wl.cc
+ * \\brief The table of block worklists that are used during the cell
+ * computation, which is part of the voro_base class.
+ *
+ * This file is automatically generated by worklist_gen.pl and it is not
+ * intended to be edited by hand. */
+
+EOF
+printf W "const unsigned int voro_base::wl[wl_seq_length*wl_hgridcu]={\n";
+
+# Now create a worklist for each subregion
+for($kk=0;$kk<$hr;$kk++) {
+ for($jj=0;$jj<$hr;$jj++) {
+ for($ii=0;$ii<$hr;$ii++) {
+ worklist($ii,$jj,$kk);
+ }
+ }
+}
+
+# Finish the file and close it
+print W "};\n";
+close W;
+
+# A subroutine
+sub worklist {
+# print "@_[0] @_[1] @_[2]\n";
+ $ind=@_[0]+$hr*(@_[1]+$hr*@_[2]);
+ $ac=0;$v+=2;
+ $xp=$yp=$zp=0;
+ $x=(@_[0]+0.5)/$r;
+ $y=(@_[1]+0.5)/$r;
+ $z=(@_[2]+0.5)/$r;
+ $m[$d0]=$v;
+ add(1,0,0);add(0,1,0);add(0,0,1);
+ add(-1,0,0);add(0,-1,0);add(0,0,-1);
+ foreach $l (1..$ls) {
+ $minwei=1e9;
+ foreach (0..$ac-1) {
+ $xt=@a[3*$_];$yt=@a[3*$_+1];$zt=@a[3*$_+2];
+# $wei=dis($x,$y,$z,$xt,$yt,$zt)+1*acos(($xt*$xp+$yt*$yp+$zt*$zp)/($xt*$xt+$yt*$yt+$zt*$zt)*($xp*$xp+$yp*$yp+$zp*$zp));
+ $wei=adis($x,$y,$z,$xt,$yt,$zt)+0.02*sqrt(($xt-$xp)**2+($yt-$yp)**2+($zt-$zp)**2);
+ $nx=$_,$minwei=$wei if $wei<$minwei;
+ }
+ $xp=@a[3*$nx];$yp=@a[3*$nx+1];$zp=@a[3*$nx+2];
+ add($xp+1,$yp,$zp);add($xp,$yp+1,$zp);add($xp,$yp,$zp+1);
+ add($xp-1,$yp,$zp);add($xp,$yp-1,$zp);add($xp,$yp,$zp-1);
+# print "=> $l $xp $yp $zp\n" if $l<4;
+ push @b,(splice @a,3*$nx,3);$ac--;
+ }
+
+ # Mark all blocks that are on this worklist entry
+ $m[$d0]=++$v;
+ for($i=0;$i<$#b;$i+=3) {
+ $xt=$b[$i];$yt=$b[$i+1];$zt=$b[$i+2];
+ $m[$d0+$xt+$d*$yt+$dd*$zt]=$v;
+ }
+
+ # Find which neighboring outside blocks need to be marked when
+ # considering this block, being as conservative as possible by
+ # overwriting the marks, so that the last possible entry that can reach
+ # a block is used
+ for($i=$j=0;$i<$#b;$i+=3,$j++) {
+ $xt=$b[$i];$yt=$b[$i+1];$zt=$b[$i+2];
+ $k=$d0+$xt+$yt*$d+$zt*$dd;
+ $la[$k+1]=$j, $m[$k+1]=$v+1 if $xt>=0 && $m[$k+1]!=$v;
+ $la[$k+$d]=$j, $m[$k+$d]=$v+1 if $yt>=0 && $m[$k+$d]!=$v;
+ $la[$k+$dd]=$j, $m[$k+$dd]=$v+1 if $zt>=0 && $m[$k+$dd]!=$v;
+ $la[$k-1]=$j, $m[$k-1]=$v+1 if $xt<=0 && $m[$k-1]!=$v;
+ $la[$k-$d]=$j, $m[$k-$d]=$v+1 if $yt<=0 && $m[$k-$d]!=$v;
+ $la[$k-$dd]=$j, $m[$k-$dd]=$v+1 if $zt<=0 && $m[$k-$dd]!=$v;
+ }
+
+ # Scan to ensure that no neighboring blocks have been missed by the
+ # outwards-looking logic in the above section
+ for($i=0;$i<$#b;$i+=3) {
+ wl_check($d0+$b[$i]+$b[$i+1]*$d+$b[$i+2]*$dd);
+ }
+
+ # Compute the number of entries where outside blocks do not need to be
+ # consider
+ for($i=$j=0;$i<$#b;$i+=3,$j++) {
+ $k=$d0+$b[$i]+$b[$i+1]*$d+$b[$i+2]*$dd;
+ last if $m[$k+1]!=$v;
+ last if $m[$k+$d]!=$v;
+ last if $m[$k+$dd]!=$v;
+ last if $m[$k-1]!=$v;
+ last if $m[$k-$d]!=$v;
+ last if $m[$k-$dd]!=$v;
+ }
+ print W "\t$j";
+
+ # Create worklist entry and save to file
+ $j=0;
+ while ($#b>0) {
+ $xt=shift @b;$yt=shift @b;$zt=shift @b;
+ $k=$d0+$xt+$yt*$d+$zt*$dd;
+ $o=0;
+ $o|=1 if $m[$k+1]!=$v && $la[$k+1]==$j;
+ $o^=3 if $m[$k-1]!=$v && $la[$k-1]==$j;
+ $o|=8 if $m[$k+$d]!=$v && $la[$k+$d]==$j;
+ $o^=24 if $m[$k-$d]!=$v && $la[$k-$d]==$j;
+ $o|=64 if $m[$k+$dd]!=$v && $la[$k+$dd]==$j;
+ $o^=192 if $m[$k-$dd]!=$v && $la[$k-$dd]==$j;
+ printf W ",%#x",(($xt+64)|($yt+64)<<7|($zt+64)<<14|$o<<21);
+ $j++;
+ }
+ print W "," unless $ind==$hr*$hr*$hr-1;
+ print W "\n";
+
+ # Remove list memory
+ undef @a;
+ undef @b;
+}
+
+sub add {
+ if ($m[$d0+@_[0]+$d*@_[1]+$dd*@_[2]]!=$v) {
+ $ac++;
+ push @a,@_[0],@_[1],@_[2];
+ $m[$d0+@_[0]+$d*@_[1]+$dd*@_[2]]=$v;
+ }
+}
+
+sub dis {
+ $xl=@_[3]+0.3-@_[0];$xh=@_[3]+0.7-@_[0];
+ $yl=@_[4]+0.3-@_[1];$yh=@_[4]+0.7-@_[1];
+ $zl=@_[5]+0.3-@_[2];$zh=@_[5]+0.7-@_[2];
+ $dis=(abs($xl)<abs($xh)?$xl:$xh)**2
+ +(abs($yl)<abs($yh)?$yl:$yh)**2
+ +(abs($zl)<abs($zh)?$zl:$zh)**2;
+ return sqrt $dis;
+}
+
+sub adis {
+ $xco=$yco=$zco=0;
+ $xco=@_[0]-@_[3] if @_[3]>0;
+ $xco=@_[0]-@_[3]-1 if @_[3]<0;
+ $yco=@_[1]-@_[4] if @_[4]>0;
+ $yco=@_[1]-@_[4]-1 if @_[4]<0;
+ $zco=@_[2]-@_[5] if @_[5]>0;
+ $zco=@_[2]-@_[5]-1 if @_[5]<0;
+ return sqrt $xco*$xco+$yco*$yco+$zco*$zco;
+}
+
+sub wl_check {
+ die "Failure in worklist construction\n" if $m[@_[0]+1]<$v||$m[@_[0]-1]<$v
+ ||$m[@_[0]+$d]<$v||$m[@_[0]-$d]<$v
+ ||$m[@_[0]+$dd]<$v||$m[@_[0]-$dd]<$v;
+}

Event Timeline