This commit is contained in:
Zhengshou Lai
2021-12-06 11:53:22 +08:00
commit 6f9631c56f
316 changed files with 67026 additions and 0 deletions
+39
View File
@@ -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.
+72
View File
@@ -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++
+341
View File
@@ -0,0 +1,341 @@
Version 0.4.6 (October 17th 2013)
=================================
* Fixed an issue with template instantiation in wall.cc that was causing
compilation problems with new versions of Apple Xcode. Thanks to Barend
Thijsse (Delft University of Technology) and Juan Pablo Cruz Pérez (Instituto
de Física y Matemáticas) for pointing this out.
* Added routines to the container classes to compute a ghost Voronoi cell at
any given location, as though an extra particle was inserted at that
location
* Removed unused private variable in c_loops.hh
* Updated Doxyfile to 1.8.5
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
+153
View File
@@ -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.
+30
View File
@@ -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
+36
View File
@@ -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
+29
View File
@@ -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.
+31
View File
@@ -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
+44
View File
@@ -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
+36
View File
@@ -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");
}
+35
View File
@@ -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}
}
File diff suppressed because it is too large Load Diff
+86
View File
@@ -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");
}
+54
View File
@@ -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");
}
+36
View File
@@ -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");
}
+28
View File
@@ -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
+27
View File
@@ -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'
+52
View File
@@ -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);
}
+52
View File
@@ -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");
}
+24
View File
@@ -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;
+56
View File
@@ -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}
}
+216
View File
@@ -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
+35
View File
@@ -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}
}
+159
View File
@@ -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
+33
View File
@@ -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}
}
+43
View File
@@ -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");
}
+25
View File
@@ -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
+21
View File
@@ -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.
+48
View File
@@ -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");
}
+33
View File
@@ -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}
}
+64
View File
@@ -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");
}
+32
View File
@@ -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}
}
+34
View File
@@ -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
+27
View File
@@ -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.
+32
View File
@@ -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");
}
+72
View File
@@ -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);
}
+70
View File
@@ -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");
}
+34
View File
@@ -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}
}
+90
View File
@@ -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
+41
View File
@@ -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");
}
+32
View File
@@ -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}
}
+31
View File
@@ -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
+52
View File
@@ -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.
+89
View File
@@ -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);
}
+81
View File
@@ -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);
}
+44
View File
@@ -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}
}
+56
View File
@@ -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");
}
+38
View File
@@ -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}
}
+216
View File
@@ -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
+107
View File
@@ -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);
}
+38
View File
@@ -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}
}
+38
View File
@@ -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}
}
+38
View File
@@ -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}
}
+12
View File
@@ -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.
+60
View File
@@ -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);
}
+42
View File
@@ -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";
+31
View File
@@ -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
+47
View File
@@ -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
+37
View File
@@ -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");
}
+35
View File
@@ -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}
}
+49
View File
@@ -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);
}
+35
View File
@@ -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}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+59
View File
@@ -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");
}
+38
View File
@@ -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}
}
+111
View File
@@ -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");
}
+46
View File
@@ -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}
}
+93
View File
@@ -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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><img src="ftv2ns.png" alt="N" width="24" height="22" /><b>voro</b></td><td class="desc"></td></tr>
<tr id="row_0_0_"><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_0_1_" 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__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_0_2_"><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_0_3_" 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__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_0_4_"><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_0_5_" 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__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_0_6_"><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_0_7_" 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__base.html" target="_self">voronoicell_base</a></td><td class="desc">A class representing a single Voronoi cell </td></tr>
<tr id="row_0_8_"><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_0_9_" 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__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_0_10_"><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_0_11_" 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__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_0_12_"><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_0_13_" 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.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_0_14_"><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_0_15_" 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__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_0_16_"><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_0_17_" 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__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_0_18_"><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_0_19_" 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.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_0_20_"><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_0_21_" 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__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_0_22_"><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_0_23_" 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_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_0_24_"><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_0_25_" 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_1particle__record.html" target="_self">particle_record</a></td><td class="desc">Structure for holding information about a particle </td></tr>
<tr id="row_0_26_"><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_0_27_" 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__sphere.html" target="_self">wall_sphere</a></td><td class="desc">A class representing a spherical wall object </td></tr>
<tr id="row_0_28_"><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_0_29_" 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__cylinder.html" target="_self">wall_cylinder</a></td><td class="desc">A class representing a cylindrical wall object </td></tr>
<tr id="row_0_30_"><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 Thu Oct 17 2013 11:14:05 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

+62
View File
@@ -0,0 +1,62 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+228
View File
@@ -0,0 +1,228 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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">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="line" 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="line" 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="line" 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="line" 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 class="ttc" id="classvoro_1_1c__loop__base_html_a2eaa096a64736b5792cdf3d799b95786"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">voro::c_loop_base::q</a></div><div class="ttdeci">int q</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00119">c_loops.hh:119</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_af8bef46cbdfdee608090aa5df0666df2"><div class="ttname"><a href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">voro::particle_order::o</a></div><div class="ttdeci">int * o</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00040">c_loops.hh:40</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ab42c93bbaf7cfc11e3c95f5d38f694e2"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">voro::c_loop_base::ps</a></div><div class="ttdeci">const int ps</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00095">c_loops.hh:95</a></div></div>
<div class="ttc" id="c__loops_8hh_html"><div class="ttname"><a href="c__loops_8hh.html">c_loops.hh</a></div><div class="ttdoc">Header file for the loop classes. </div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abbaba2fc0d1fa07760220d37a3cc7ccf"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">voro::c_loop_base::j</a></div><div class="ttdeci">int j</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00110">c_loops.hh:110</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a060e5b0e557141713b6897b0a0728f2d"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">voro::c_loop_base::co</a></div><div class="ttdeci">int * co</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00104">c_loops.hh:104</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aaec35b971352bff60f4a446c430f26f8"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">voro::c_loop_base::nz</a></div><div class="ttdeci">const int nz</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00085">c_loops.hh:85</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a2aba9be724d35e088e3597dc9181182d"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">voro::c_loop_subset::setup_box</a></div><div class="ttdeci">void setup_box(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, bool bounds_test=true)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00098">c_loops.cc:98</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abf2dcc131f23212c15169e90ba30d6e4"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">voro::c_loop_base::k</a></div><div class="ttdeci">int k</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00113">c_loops.hh:113</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a2b6abbe65d550ae7071aaa28d0fbb534"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">voro::c_loop_base::p</a></div><div class="ttdeci">double ** p</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00098">c_loops.hh:98</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a68cafa132e9028ed7b143e93e85a102d"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">voro::c_loop_base::nxyz</a></div><div class="ttdeci">const int nxyz</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00092">c_loops.hh:92</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a0d6046f6de1f80849e5d1d8f3b7212e7"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">voro::c_loop_base::nx</a></div><div class="ttdeci">const int nx</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00081">c_loops.hh:81</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_ac5d8b2aa34f936022e9059ca093b914c"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">voro::c_loop_subset::mode</a></div><div class="ttdeci">c_loop_subset_mode mode</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00223">c_loops.hh:223</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a3cb6bc5c8b22e57325bb136feba93d9b"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">voro::c_loop_base::ijk</a></div><div class="ttdeci">int ijk</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00116">c_loops.hh:116</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_a742bc941dfd87ecd64b42f6e50df19db"><div class="ttname"><a href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">voro::particle_order::size</a></div><div class="ttdeci">int size</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00046">c_loops.hh:46</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a4c9709bc992e33668471e292474c39f4"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">voro::c_loop_subset::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00079">c_loops.cc:79</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ac8f42728e3a98149c2185aba833ac5ff"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">voro::c_loop_base::ny</a></div><div class="ttdeci">const int ny</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00083">c_loops.hh:83</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a688ef02340f6a9bc64c77c2de4c4ae3d"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">voro::c_loop_subset::setup_intbox</a></div><div class="ttdeci">void setup_intbox(int ai_, int bi_, int aj_, int bj_, int ak_, int bk_)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00044">c_loops.cc:44</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_a6aeb89179930977f344416a0ba1c38a4"><div class="ttname"><a href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">voro::particle_order::op</a></div><div class="ttdeci">int * op</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00043">c_loops.hh:43</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a585f47e725dc0de645defc8dc0d463cb"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">voro::c_loop_subset::setup_sphere</a></div><div class="ttdeci">void setup_sphere(double vx, double vy, double vz, double r, bool bounds_test=true)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00024">c_loops.cc:24</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abb655606af4e184c2982f1a32cd47e12"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">voro::c_loop_base::nxy</a></div><div class="ttdeci">const int nxy</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00089">c_loops.hh:89</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aef465d2da85b963fa9e0e886ee273541"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">voro::c_loop_base::i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00107">c_loops.hh:107</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+98
View File
@@ -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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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>
<tr class="separator:ad9e943173772c282e7031e90ff88d3e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+572
View File
@@ -0,0 +1,572 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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">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="line" href="classvoro_1_1particle__order.html"> 37</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1particle__order.html">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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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">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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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">c_loop_all</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html">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="line" 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">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="line" 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="line" 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="line" 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">c_loop_subset</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html">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="line" 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="line" 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">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="line" 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="line" 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">c_loop_order</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html">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="line" href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987"> 271</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html">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="line" 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="line" 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="line" 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">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">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="line" 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="line" 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="line" 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">c_loop_all_periodic</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html">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="line" 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">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="line" 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="line" 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="line" 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">c_loop_order_periodic</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1c__loop__base.html">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="line" href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018"> 406</a></span>&#160; <a class="code" href="classvoro_1_1particle__order.html">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="line" 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="line" 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="line" 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">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">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="line" 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="line" 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 class="ttc" id="classvoro_1_1c__loop__order__periodic_html_ae34027247718bedc32b705ceb5b029de"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#ae34027247718bedc32b705ceb5b029de">voro::c_loop_order_periodic::inc</a></div><div class="ttdeci">bool inc()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00433">c_loops.hh:433</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a2eaa096a64736b5792cdf3d799b95786"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a2eaa096a64736b5792cdf3d799b95786">voro::c_loop_base::q</a></div><div class="ttdeci">int q</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00119">c_loops.hh:119</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_af8bef46cbdfdee608090aa5df0666df2"><div class="ttname"><a href="classvoro_1_1particle__order.html#af8bef46cbdfdee608090aa5df0666df2">voro::particle_order::o</a></div><div class="ttdeci">int * o</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00040">c_loops.hh:40</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all_html"><div class="ttname"><a href="classvoro_1_1c__loop__all.html">voro::c_loop_all</a></div><div class="ttdoc">Class for looping over all of the particles in a container. </div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00165">c_loops.hh:165</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all_html_a255049d5c5f878a24804ed2e29043e68"><div class="ttname"><a href="classvoro_1_1c__loop__all.html#a255049d5c5f878a24804ed2e29043e68">voro::c_loop_all::c_loop_all</a></div><div class="ttdeci">c_loop_all(c_class &amp;con)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00171">c_loops.hh:171</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_acc2351174b5d0a163b172fb016e94216"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#acc2351174b5d0a163b172fb016e94216">voro::c_loop_base::c_loop_base</a></div><div class="ttdeci">c_loop_base(c_class &amp;con)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00124">c_loops.hh:124</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ab42c93bbaf7cfc11e3c95f5d38f694e2"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ab42c93bbaf7cfc11e3c95f5d38f694e2">voro::c_loop_base::ps</a></div><div class="ttdeci">const int ps</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00095">c_loops.hh:95</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all_html_a322b26b0f78f73b345ee0af92f908df0"><div class="ttname"><a href="classvoro_1_1c__loop__all.html#a322b26b0f78f73b345ee0af92f908df0">voro::c_loop_all::inc</a></div><div class="ttdeci">bool inc()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00183">c_loops.hh:183</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_a6c2b7ac4d078f84490b9433523bf766f"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#a6c2b7ac4d078f84490b9433523bf766f">voro::c_loop_order::op</a></div><div class="ttdeci">int * op</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00275">c_loops.hh:275</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a759f4fc1cb4b7d5b41b1358c0e4fe4c3"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a759f4fc1cb4b7d5b41b1358c0e4fe4c3">voro::c_loop_base::x</a></div><div class="ttdeci">double x()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00149">c_loops.hh:149</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aa958fedbef8948a8a359ce00bdb52d07"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aa958fedbef8948a8a359ce00bdb52d07">voro::c_loop_base::pid</a></div><div class="ttdeci">int pid()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00158">c_loops.hh:158</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all_html_acab7b0f3917a172844d4d2565913855d"><div class="ttname"><a href="classvoro_1_1c__loop__all.html#acab7b0f3917a172844d4d2565913855d">voro::c_loop_all::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00175">c_loops.hh:175</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abbaba2fc0d1fa07760220d37a3cc7ccf"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abbaba2fc0d1fa07760220d37a3cc7ccf">voro::c_loop_base::j</a></div><div class="ttdeci">int j</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00110">c_loops.hh:110</a></div></div>
<div class="ttc" id="config_8hh_html"><div class="ttname"><a href="config_8hh.html">config.hh</a></div><div class="ttdoc">Master configuration file for setting various compile-time options. </div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a2f4b84b1453d680afe11b7877f191758"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a2f4b84b1453d680afe11b7877f191758">voro::c_loop_base::y</a></div><div class="ttdeci">double y()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00152">c_loops.hh:152</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html_adb9aea9a009c1dfdd231b608257d04f9"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#adb9aea9a009c1dfdd231b608257d04f9">voro::c_loop_order_periodic::c_loop_order_periodic</a></div><div class="ttdeci">c_loop_order_periodic(c_class &amp;con, particle_order &amp;vo_)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00417">c_loops.hh:417</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a060e5b0e557141713b6897b0a0728f2d"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a060e5b0e557141713b6897b0a0728f2d">voro::c_loop_base::co</a></div><div class="ttdeci">int * co</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00104">c_loops.hh:104</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html_a80063187d6d4ea8e8bb2efe02091a475"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#a80063187d6d4ea8e8bb2efe02091a475">voro::c_loop_order_periodic::op</a></div><div class="ttdeci">int * op</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00410">c_loops.hh:410</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aaec35b971352bff60f4a446c430f26f8"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aaec35b971352bff60f4a446c430f26f8">voro::c_loop_base::nz</a></div><div class="ttdeci">const int nz</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00085">c_loops.hh:85</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a2aba9be724d35e088e3597dc9181182d"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a2aba9be724d35e088e3597dc9181182d">voro::c_loop_subset::setup_box</a></div><div class="ttdeci">void setup_box(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, bool bounds_test=true)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00098">c_loops.cc:98</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_a9b82e0a6ce7c6ed0456738cf23e08c61"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#a9b82e0a6ce7c6ed0456738cf23e08c61">voro::c_loop_order::cp</a></div><div class="ttdeci">int * cp</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00273">c_loops.hh:273</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html_a281ac4b9e4f3c687081f067239fdd982"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#a281ac4b9e4f3c687081f067239fdd982">voro::c_loop_order_periodic::cp</a></div><div class="ttdeci">int * cp</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00408">c_loops.hh:408</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html">voro::c_loop_order_periodic</a></div><div class="ttdoc">Class for looping over all of the particles specified in a pre-assembled particle_order class...</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00403">c_loops.hh:403</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abf2dcc131f23212c15169e90ba30d6e4"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abf2dcc131f23212c15169e90ba30d6e4">voro::c_loop_base::k</a></div><div class="ttdeci">int k</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00113">c_loops.hh:113</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a2b6abbe65d550ae7071aaa28d0fbb534"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a2b6abbe65d550ae7071aaa28d0fbb534">voro::c_loop_base::p</a></div><div class="ttdeci">double ** p</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00098">c_loops.hh:98</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html"><div class="ttname"><a href="classvoro_1_1c__loop__order.html">voro::c_loop_order</a></div><div class="ttdoc">Class for looping over all of the particles specified in a pre-assembled particle_order class...</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00268">c_loops.hh:268</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ab64ac0420d5ebed7d3259dd5c861d5c1"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ab64ac0420d5ebed7d3259dd5c861d5c1">voro::c_loop_base::id</a></div><div class="ttdeci">int ** id</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00101">c_loops.hh:101</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_a3a9be1df3e0f88e0e3e6fc0458949987"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#a3a9be1df3e0f88e0e3e6fc0458949987">voro::c_loop_order::vo</a></div><div class="ttdeci">particle_order &amp; vo</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00271">c_loops.hh:271</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ac9f65f527282809c894c7094291fca83"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ac9f65f527282809c894c7094291fca83">voro::c_loop_base::pos</a></div><div class="ttdeci">void pos(double &amp;x, double &amp;y, double &amp;z)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00130">c_loops.hh:130</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aec12d78b1e8282f84eac5a6fd67fc3c9"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aec12d78b1e8282f84eac5a6fd67fc3c9">voro::c_loop_base::z</a></div><div class="ttdeci">double z()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00155">c_loops.hh:155</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_aec68354015eedbde68752a58a8457c90"><div class="ttname"><a href="classvoro_1_1particle__order.html#aec68354015eedbde68752a58a8457c90">voro::particle_order::~particle_order</a></div><div class="ttdeci">~particle_order()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00055">c_loops.hh:55</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_a08bc288a867bff0716d67fde7f18b892"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#a08bc288a867bff0716d67fde7f18b892">voro::c_loop_order::c_loop_order</a></div><div class="ttdeci">c_loop_order(c_class &amp;con, particle_order &amp;vo_)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00282">c_loops.hh:282</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a68cafa132e9028ed7b143e93e85a102d"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a68cafa132e9028ed7b143e93e85a102d">voro::c_loop_base::nxyz</a></div><div class="ttdeci">const int nxyz</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00092">c_loops.hh:92</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a0d6046f6de1f80849e5d1d8f3b7212e7"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a0d6046f6de1f80849e5d1d8f3b7212e7">voro::c_loop_base::nx</a></div><div class="ttdeci">const int nx</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00081">c_loops.hh:81</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_ac5d8b2aa34f936022e9059ca093b914c"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#ac5d8b2aa34f936022e9059ca093b914c">voro::c_loop_subset::mode</a></div><div class="ttdeci">c_loop_subset_mode mode</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00223">c_loops.hh:223</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a3cb6bc5c8b22e57325bb136feba93d9b"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a3cb6bc5c8b22e57325bb136feba93d9b">voro::c_loop_base::ijk</a></div><div class="ttdeci">int ijk</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00116">c_loops.hh:116</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_af45a6a610d039dc8c8434caf61b092c6"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#af45a6a610d039dc8c8434caf61b092c6">voro::c_loop_subset::inc</a></div><div class="ttdeci">bool inc()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00238">c_loops.hh:238</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_ae2e1c198611110487e9b41c17cae65a7"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#ae2e1c198611110487e9b41c17cae65a7">voro::c_loop_order::inc</a></div><div class="ttdeci">bool inc()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00298">c_loops.hh:298</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_a33a5410ec11caa521d05c72e585bd155"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#a33a5410ec11caa521d05c72e585bd155">voro::c_loop_base::pos</a></div><div class="ttdeci">void pos(int &amp;pid, double &amp;x, double &amp;y, double &amp;z, double &amp;r)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00141">c_loops.hh:141</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html">voro::c_loop_subset</a></div><div class="ttdoc">Class for looping over a subset of particles in a container. </div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00218">c_loops.hh:218</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_adabcf6cd995eb03fe007844ba5637a8a"><div class="ttname"><a href="classvoro_1_1particle__order.html#adabcf6cd995eb03fe007844ba5637a8a">voro::particle_order::add</a></div><div class="ttdeci">void add(int ijk, int q)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00063">c_loops.hh:63</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_a742bc941dfd87ecd64b42f6e50df19db"><div class="ttname"><a href="classvoro_1_1particle__order.html#a742bc941dfd87ecd64b42f6e50df19db">voro::particle_order::size</a></div><div class="ttdeci">int size</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00046">c_loops.hh:46</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a4c9709bc992e33668471e292474c39f4"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a4c9709bc992e33668471e292474c39f4">voro::c_loop_subset::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00079">c_loops.cc:79</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_ac8f42728e3a98149c2185aba833ac5ff"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#ac8f42728e3a98149c2185aba833ac5ff">voro::c_loop_base::ny</a></div><div class="ttdeci">const int ny</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00083">c_loops.hh:83</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a688ef02340f6a9bc64c77c2de4c4ae3d"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a688ef02340f6a9bc64c77c2de4c4ae3d">voro::c_loop_subset::setup_intbox</a></div><div class="ttdeci">void setup_intbox(int ai_, int bi_, int aj_, int bj_, int ak_, int bk_)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00044">c_loops.cc:44</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_a6aeb89179930977f344416a0ba1c38a4"><div class="ttname"><a href="classvoro_1_1particle__order.html#a6aeb89179930977f344416a0ba1c38a4">voro::particle_order::op</a></div><div class="ttdeci">int * op</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00043">c_loops.hh:43</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_aab236b412de99f7a58d77d23a25ff44f"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#aab236b412de99f7a58d77d23a25ff44f">voro::c_loop_subset::c_loop_subset</a></div><div class="ttdeci">c_loop_subset(c_class &amp;con)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00228">c_loops.hh:228</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all__periodic_html_ac25d006faa31cee1d1b6bbc621532651"><div class="ttname"><a href="classvoro_1_1c__loop__all__periodic.html#ac25d006faa31cee1d1b6bbc621532651">voro::c_loop_all_periodic::inc</a></div><div class="ttdeci">bool inc()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00348">c_loops.hh:348</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html_a73e215fc8915ed65f17e633d85c0f018"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#a73e215fc8915ed65f17e633d85c0f018">voro::c_loop_order_periodic::vo</a></div><div class="ttdeci">particle_order &amp; vo</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00406">c_loops.hh:406</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html_a205b5e4a472043123d091b1a3bc103c8"><div class="ttname"><a href="classvoro_1_1particle__order.html#a205b5e4a472043123d091b1a3bc103c8">voro::particle_order::particle_order</a></div><div class="ttdeci">particle_order(int init_size=init_ordering_size)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00051">c_loops.hh:51</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order_html_a0e03892771119212847d1ea7c56c5228"><div class="ttname"><a href="classvoro_1_1c__loop__order.html#a0e03892771119212847d1ea7c56c5228">voro::c_loop_order::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00287">c_loops.hh:287</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html"><div class="ttname"><a href="classvoro_1_1c__loop__base.html">voro::c_loop_base</a></div><div class="ttdoc">Base class for looping over particles in a container. </div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00078">c_loops.hh:78</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__order__periodic_html_a3734764b6b10670ce820de143d118d8e"><div class="ttname"><a href="classvoro_1_1c__loop__order__periodic.html#a3734764b6b10670ce820de143d118d8e">voro::c_loop_order_periodic::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00422">c_loops.hh:422</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all__periodic_html"><div class="ttname"><a href="classvoro_1_1c__loop__all__periodic.html">voro::c_loop_all_periodic</a></div><div class="ttdoc">A class for looping over all particles in a container_periodic or container_periodic_poly class...</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00325">c_loops.hh:325</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__subset_html_a585f47e725dc0de645defc8dc0d463cb"><div class="ttname"><a href="classvoro_1_1c__loop__subset.html#a585f47e725dc0de645defc8dc0d463cb">voro::c_loop_subset::setup_sphere</a></div><div class="ttdeci">void setup_sphere(double vx, double vy, double vz, double r, bool bounds_test=true)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8cc_source.html#l00024">c_loops.cc:24</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_abb655606af4e184c2982f1a32cd47e12"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#abb655606af4e184c2982f1a32cd47e12">voro::c_loop_base::nxy</a></div><div class="ttdeci">const int nxy</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00089">c_loops.hh:89</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all__periodic_html_ab7b002f40adfe7116d3db77d6bb95f4c"><div class="ttname"><a href="classvoro_1_1c__loop__all__periodic.html#ab7b002f40adfe7116d3db77d6bb95f4c">voro::c_loop_all_periodic::start</a></div><div class="ttdeci">bool start()</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00336">c_loops.hh:336</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__base_html_aef465d2da85b963fa9e0e886ee273541"><div class="ttname"><a href="classvoro_1_1c__loop__base.html#aef465d2da85b963fa9e0e886ee273541">voro::c_loop_base::i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00107">c_loops.hh:107</a></div></div>
<div class="ttc" id="classvoro_1_1particle__order_html"><div class="ttname"><a href="classvoro_1_1particle__order.html">voro::particle_order</a></div><div class="ttdoc">A class for storing ordering information when particles are added to a container. ...</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00037">c_loops.hh:37</a></div></div>
<div class="ttc" id="classvoro_1_1c__loop__all__periodic_html_a07dc6f74c7a503bb8cb4e7fa4f2e84ff"><div class="ttname"><a href="classvoro_1_1c__loop__all__periodic.html#a07dc6f74c7a503bb8cb4e7fa4f2e84ff">voro::c_loop_all_periodic::c_loop_all_periodic</a></div><div class="ttdeci">c_loop_all_periodic(c_class &amp;con)</div><div class="ttdef"><b>Definition:</b> <a href="c__loops_8hh_source.html#l00331">c_loops.hh:331</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+66
View File
@@ -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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
File diff suppressed because it is too large Load Diff
+79
View File
@@ -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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:"><td class="memSeparator" colspan="2">&#160;</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="separator:"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+662
View File
@@ -0,0 +1,662 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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">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">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="line" href="classvoro_1_1voronoicell__base.html"> 33</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__base.html">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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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">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">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">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">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="line" href="classvoro_1_1voronoicell.html"> 300</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell.html">voronoicell</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1voronoicell__base.html">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__base.html#a33184cd45a3090291a080c4aff08a2fd">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="line" 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">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">voronoicell_base</a>* vb((<a class="code" href="classvoro_1_1voronoicell__base.html">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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" 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="line" href="classvoro_1_1voronoicell__neighbor.html"> 403</a></span>&#160;<span class="keyword">class </span><a class="code" href="classvoro_1_1voronoicell__neighbor.html">voronoicell_neighbor</a> : <span class="keyword">public</span> <a class="code" href="classvoro_1_1voronoicell__base.html">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__base.html#a33184cd45a3090291a080c4aff08a2fd">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="line" 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="line" 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">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">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="line" 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="line" 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="line" 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="line" 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="line" 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 class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a71f908538fa59e4a1ab1d44834f1f3f9"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a71f908538fa59e4a1ab1d44834f1f3f9">voro::voronoicell_neighbor::init_tetrahedron</a></div><div class="ttdeci">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)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02147">cell.cc:2147</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a63e460f0fdabffedd31c0e90a26ec169"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a63e460f0fdabffedd31c0e90a26ec169">voro::voronoicell::init_tetrahedron</a></div><div class="ttdeci">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)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00371">cell.hh:371</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af92d19d0e7fc07006bcd8ea30c9df447"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af92d19d0e7fc07006bcd8ea30c9df447">voro::voronoicell_base::output_vertex_orders</a></div><div class="ttdeci">void output_vertex_orders(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01751">cell.cc:1751</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a3f334a0d45c764677418ded3687f005a"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a3f334a0d45c764677418ded3687f005a">voro::voronoicell::nplane</a></div><div class="ttdeci">bool nplane(double x, double y, double z, int p_id)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00328">cell.hh:328</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html">voro::voronoicell_neighbor</a></div><div class="ttdoc">Extension of the voronoicell_base class to represent a Voronoi cell with neighbor information...</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00403">cell.hh:403</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_adfccfa7dce395277535f61f780d87c8b"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#adfccfa7dce395277535f61f780d87c8b">voro::voronoicell_base::cycle_down</a></div><div class="ttdeci">int cycle_down(int a, int p)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00221">cell.hh:221</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a7ea57c92bba3110da745381c5877cec3"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a7ea57c92bba3110da745381c5877cec3">voro::voronoicell_base::centroid</a></div><div class="ttdeci">void centroid(double &amp;cx, double &amp;cy, double &amp;cz)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01408">cell.cc:1408</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a7746d94ae036439d60c3e4a9e37f6d15"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a7746d94ae036439d60c3e4a9e37f6d15">voro::voronoicell_base::up</a></div><div class="ttdeci">int up</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00060">cell.hh:60</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af6fd00a511226fd8dc4f27e34f002fc1"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af6fd00a511226fd8dc4f27e34f002fc1">voro::voronoicell_base::plane_intersects</a></div><div class="ttdeci">bool plane_intersects(double x, double y, double z, double rsq)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01920">cell.cc:1920</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a4e6698c49580b3a64046230e02f0f8ea"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a4e6698c49580b3a64046230e02f0f8ea">voro::voronoicell_base::face_areas</a></div><div class="ttdeci">void face_areas(std::vector&lt; double &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01336">cell.cc:1336</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a5d09c9e36ad159fcd23cfef8855cae61"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a5d09c9e36ad159fcd23cfef8855cae61">voro::voronoicell_base::reset_edges</a></div><div class="ttdeci">void reset_edges()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01572">cell.cc:1572</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ae71280e1c36c5f840f870d55e91c027b"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ae71280e1c36c5f840f870d55e91c027b">voro::voronoicell_base::init_tetrahedron_base</a></div><div class="ttdeci">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)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00312">cell.cc:312</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a00ff7480ad31fbf06dcca83cb0683e68"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a00ff7480ad31fbf06dcca83cb0683e68">voro::voronoicell::operator=</a></div><div class="ttdeci">void operator=(voronoicell &amp;c)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00306">cell.hh:306</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a1c0657c1d89313089bbd437170c97d46"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a1c0657c1d89313089bbd437170c97d46">voro::voronoicell_base::draw_gnuplot</a></div><div class="ttdeci">void draw_gnuplot(double x, double y, double z, FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01507">cell.cc:1507</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a59dd181ccbcc66370ef8b5c4bf250843"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a59dd181ccbcc66370ef8b5c4bf250843">voro::voronoicell_base::neighbors</a></div><div class="ttdeci">virtual void neighbors(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00197">cell.hh:197</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aafad86ca11af64de2788637b466479f6"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aafad86ca11af64de2788637b466479f6">voro::voronoicell_base::mem</a></div><div class="ttdeci">int * mem</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00225">cell.hh:225</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_aa8bc77ca240ae0675be493b26513eb18"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#aa8bc77ca240ae0675be493b26513eb18">voro::voronoicell_neighbor::nplane</a></div><div class="ttdeci">bool nplane(double x, double y, double z, int p_id)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00440">cell.hh:440</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a8bac2d46226b8dbb88ad3e3d58d10cf7"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a8bac2d46226b8dbb88ad3e3d58d10cf7">voro::voronoicell_neighbor::plane</a></div><div class="ttdeci">bool plane(double x, double y, double z)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00462">cell.hh:462</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a6e95394d82fd835c75a77462c872594e"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a6e95394d82fd835c75a77462c872594e">voro::voronoicell::plane</a></div><div class="ttdeci">bool plane(double x, double y, double z, double rsq)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00338">cell.hh:338</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a3f6c0b98feb914c324248cd3d3baf43d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a3f6c0b98feb914c324248cd3d3baf43d">voro::voronoicell_base::check_duplicates</a></div><div class="ttdeci">void check_duplicates()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00342">cell.cc:342</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_accebb51f721d72fc6d460f1368180571"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#accebb51f721d72fc6d460f1368180571">voro::voronoicell_base::mec</a></div><div class="ttdeci">int * mec</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00229">cell.hh:229</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_abc7ec6777725e0ddffbbe2ecbe81c6a1"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#abc7ec6777725e0ddffbbe2ecbe81c6a1">voro::voronoicell_base::nu</a></div><div class="ttdeci">int * nu</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00082">cell.hh:82</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a10e64245beac741327913dbe25a6abc9"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a10e64245beac741327913dbe25a6abc9">voro::voronoicell::init_octahedron</a></div><div class="ttdeci">void init_octahedron(double l)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00362">cell.hh:362</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af49d85cd2a3daf84d623ab09ab7037cf"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af49d85cd2a3daf84d623ab09ab7037cf">voro::voronoicell_base::construct_relations</a></div><div class="ttdeci">void construct_relations()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00349">cell.cc:349</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a7c061d08eac012b23588032779603a19"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a7c061d08eac012b23588032779603a19">voro::voronoicell_neighbor::ne</a></div><div class="ttdeci">int ** ne</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00417">cell.hh:417</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ab0b624e4e72fca14c99bf1c41c430614"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ab0b624e4e72fca14c99bf1c41c430614">voro::voronoicell_base::current_vertices</a></div><div class="ttdeci">int current_vertices</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00039">cell.hh:39</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_ac20bf4f827fd1fc20c1596a8cec95fa3"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#ac20bf4f827fd1fc20c1596a8cec95fa3">voro::voronoicell_neighbor::init</a></div><div class="ttdeci">void init(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02105">cell.cc:2105</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a0492ecd057449172ca6d3993cb0661e4"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a0492ecd057449172ca6d3993cb0661e4">voro::voronoicell_base::output_face_areas</a></div><div class="ttdeci">void output_face_areas(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00140">cell.hh:140</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a868581daaec73455618629e668c92d38"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a868581daaec73455618629e668c92d38">voro::voronoicell_neighbor::print_edges_neighbors</a></div><div class="ttdeci">virtual void print_edges_neighbors(int i)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02237">cell.cc:2237</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a7e69469f95464afbeb9feec927507243"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a7e69469f95464afbeb9feec927507243">voro::voronoicell_base::p</a></div><div class="ttdeci">int p</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00052">cell.hh:52</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a38929ec0787bb1acac5f1f7b9ec7cadf"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a38929ec0787bb1acac5f1f7b9ec7cadf">voro::voronoicell_base::output_face_freq_table</a></div><div class="ttdeci">void output_face_freq_table(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00153">cell.hh:153</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a14c97918200da778388673728da29274"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a14c97918200da778388673728da29274">voro::voronoicell_base::current_vertex_order</a></div><div class="ttdeci">int current_vertex_order</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00045">cell.hh:45</a></div></div>
<div class="ttc" id="config_8hh_html"><div class="ttname"><a href="config_8hh.html">config.hh</a></div><div class="ttdoc">Master configuration file for setting various compile-time options. </div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ac572b3e8ed428c12f38243b48bf39099"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ac572b3e8ed428c12f38243b48bf39099">voro::voronoicell_base::draw_pov_mesh</a></div><div class="ttdeci">void draw_pov_mesh(double x, double y, double z, const char *filename)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00109">cell.hh:109</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a85fec05865342d7efca9d9fd11b60342"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a85fec05865342d7efca9d9fd11b60342">voro::voronoicell_base::ed</a></div><div class="ttdeci">int ** ed</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00078">cell.hh:78</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a2b212f8abaf92200e8ee4b5eee0e60d1"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a2b212f8abaf92200e8ee4b5eee0e60d1">voro::voronoicell_neighbor::output_neighbors</a></div><div class="ttdeci">virtual void output_neighbors(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00472">cell.hh:472</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a33184cd45a3090291a080c4aff08a2fd"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a33184cd45a3090291a080c4aff08a2fd">voro::voronoicell_base::nplane</a></div><div class="ttdeci">bool nplane(vc_class &amp;vc, double x, double y, double z, double rsq, int p_id)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00404">cell.cc:404</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af1a68eea414a0a52b072005af7bd710a"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af1a68eea414a0a52b072005af7bd710a">voro::voronoicell_base::surface_area</a></div><div class="ttdeci">double surface_area()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01372">cell.cc:1372</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a3648ccb2b3bdf7832779ea7d311d129c"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a3648ccb2b3bdf7832779ea7d311d129c">voro::voronoicell_neighbor::init_octahedron</a></div><div class="ttdeci">void init_octahedron(double l)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02127">cell.cc:2127</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a1b18405092d2229e1001933925f403ca"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a1b18405092d2229e1001933925f403ca">voro::voronoicell_neighbor::neighbors</a></div><div class="ttdeci">virtual void neighbors(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02198">cell.cc:2198</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a196e44ab9b3caf7d5862fa47ee3341fe"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a196e44ab9b3caf7d5862fa47ee3341fe">voro::voronoicell_neighbor::~voronoicell_neighbor</a></div><div class="ttdeci">~voronoicell_neighbor()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02191">cell.cc:2191</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af2c9d916f946ba8d9c7e4c0a7e65215b"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af2c9d916f946ba8d9c7e4c0a7e65215b">voro::voronoicell_base::check_memory_for_copy</a></div><div class="ttdeci">void check_memory_for_copy(vc_class &amp;vc, voronoicell_base *vb)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00056">cell.cc:56</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a56b835abe6d47cb67b206202125eb406"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a56b835abe6d47cb67b206202125eb406">voro::voronoicell_base::number_of_faces</a></div><div class="ttdeci">int number_of_faces()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01721">cell.cc:1721</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ab6b1755fb46b262df8f8bc2980c7470a"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ab6b1755fb46b262df8f8bc2980c7470a">voro::voronoicell_base::vertices</a></div><div class="ttdeci">void vertices(std::vector&lt; double &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01760">cell.cc:1760</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_ab71c4487bbca2d20b00e9af2fc6d1ed0"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#ab71c4487bbca2d20b00e9af2fc6d1ed0">voro::voronoicell_neighbor::plane</a></div><div class="ttdeci">bool plane(double x, double y, double z, double rsq)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00451">cell.hh:451</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aa4e3f22d4ff450097571e95caeda1b3d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aa4e3f22d4ff450097571e95caeda1b3d">voro::voronoicell_base::pts</a></div><div class="ttdeci">double * pts</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00085">cell.hh:85</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a335daba5a84e43c278384cae6ecefff3"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a335daba5a84e43c278384cae6ecefff3">voro::voronoicell_base::face_perimeters</a></div><div class="ttdeci">void face_perimeters(std::vector&lt; double &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01807">cell.cc:1807</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ac164b3767ce186360fb3308e349e058c"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ac164b3767ce186360fb3308e349e058c">voro::voronoicell_base::print_edges_neighbors</a></div><div class="ttdeci">virtual void print_edges_neighbors(int i)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00209">cell.hh:209</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a2a238c710c2e91045ef9deae0faf8dc9"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a2a238c710c2e91045ef9deae0faf8dc9">voro::voronoicell_base::current_delete2_size</a></div><div class="ttdeci">int current_delete2_size</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00049">cell.hh:49</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_aa3d80872ecb0dbccbc951082428c13c1"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#aa3d80872ecb0dbccbc951082428c13c1">voro::voronoicell_neighbor::check_facets</a></div><div class="ttdeci">void check_facets()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02159">cell.cc:2159</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a4fdf7a7b46bb5b8e6c9613308ad399c0"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a4fdf7a7b46bb5b8e6c9613308ad399c0">voro::voronoicell_neighbor::voronoicell_neighbor</a></div><div class="ttdeci">voronoicell_neighbor()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02180">cell.cc:2180</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a7dbec3b0b6ea24e22e651cf76f06dc04"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a7dbec3b0b6ea24e22e651cf76f06dc04">voro::voronoicell_base::current_delete_size</a></div><div class="ttdeci">int current_delete_size</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00047">cell.hh:47</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a99837f8d963c57c2c244518ba0ae4b8f"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a99837f8d963c57c2c244518ba0ae4b8f">voro::voronoicell_base::output_neighbors</a></div><div class="ttdeci">virtual void output_neighbors(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00203">cell.hh:203</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aee879731b1f4feb9f630d9b7f9c0062f"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aee879731b1f4feb9f630d9b7f9c0062f">voro::voronoicell_base::output_vertices</a></div><div class="ttdeci">void output_vertices(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01772">cell.cc:1772</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_ac2273c14b7bcc02696be10d9249670c0"><div class="ttname"><a href="classvoro_1_1voronoicell.html#ac2273c14b7bcc02696be10d9249670c0">voro::voronoicell::plane</a></div><div class="ttdeci">bool plane(double x, double y, double z)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00346">cell.hh:346</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_ac6036ae44845e301da1e3656e0e98403"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#ac6036ae44845e301da1e3656e0e98403">voro::voronoicell_neighbor::operator=</a></div><div class="ttdeci">void operator=(voronoicell &amp;c)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00080">cell.cc:80</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a9918d33d62ce9afaff9ed8549ff637f9"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a9918d33d62ce9afaff9ed8549ff637f9">voro::voronoicell::nplane</a></div><div class="ttdeci">bool nplane(double x, double y, double z, double rsq, int p_id)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00318">cell.hh:318</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a5dbd3cd4e9e9a41744e1a2a4c8f550c0"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a5dbd3cd4e9e9a41744e1a2a4c8f550c0">voro::voronoicell_base::number_of_edges</a></div><div class="ttdeci">int number_of_edges()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02007">cell.cc:2007</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a923ffa62bd5d62070cd29e01f3a1327a"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a923ffa62bd5d62070cd29e01f3a1327a">voro::voronoicell_base::draw_pov</a></div><div class="ttdeci">void draw_pov(double x, double y, double z, FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01487">cell.cc:1487</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a6a29a361a158db038a5c4c8e47322bd5"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a6a29a361a158db038a5c4c8e47322bd5">voro::voronoicell_base::max_radius_squared</a></div><div class="ttdeci">double max_radius_squared()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01454">cell.cc:1454</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_aaa1c991b6f5af826bac0f4c7d5f6bf5c"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#aaa1c991b6f5af826bac0f4c7d5f6bf5c">voro::voronoicell_neighbor::mne</a></div><div class="ttdeci">int ** mne</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00410">cell.hh:410</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ad14069d3bebcda9353b07488f512800d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ad14069d3bebcda9353b07488f512800d">voro::voronoicell_base::output_face_orders</a></div><div class="ttdeci">void output_face_orders(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00147">cell.hh:147</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__neighbor_html_a1f0d64e7c42503ada9204cfaeb61027f"><div class="ttname"><a href="classvoro_1_1voronoicell__neighbor.html#a1f0d64e7c42503ada9204cfaeb61027f">voro::voronoicell_neighbor::nplane</a></div><div class="ttdeci">bool nplane(double x, double y, double z, double rsq, int p_id)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00430">cell.hh:430</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_af9bad3fddace8e63ac4c0a5874aee7c5"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#af9bad3fddace8e63ac4c0a5874aee7c5">voro::voronoicell_base::face_orders</a></div><div class="ttdeci">void face_orders(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01866">cell.cc:1866</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a1d86762311d8860960a45cc409b14f0f"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a1d86762311d8860960a45cc409b14f0f">voro::voronoicell_base::cycle_up</a></div><div class="ttdeci">int cycle_up(int a, int p)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00215">cell.hh:215</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a5dc3ae580a5f25424d50d4015aa878ba"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a5dc3ae580a5f25424d50d4015aa878ba">voro::voronoicell_base::output_face_perimeters</a></div><div class="ttdeci">void output_face_perimeters(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00166">cell.hh:166</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ac7cb75aa645c98107c9c0162fabf698e"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ac7cb75aa645c98107c9c0162fabf698e">voro::voronoicell_base::draw_gnuplot</a></div><div class="ttdeci">void draw_gnuplot(double x, double y, double z, const char *filename)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00119">cell.hh:119</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a83e74ffece2b313f6691f467769a16f5"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a83e74ffece2b313f6691f467769a16f5">voro::voronoicell_base::face_vertices</a></div><div class="ttdeci">void face_vertices(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01839">cell.cc:1839</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aab954caa57c67a26c03b0377f5778bb1"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aab954caa57c67a26c03b0377f5778bb1">voro::voronoicell_base::init_octahedron_base</a></div><div class="ttdeci">void init_octahedron_base(double l)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00286">cell.cc:286</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_afe3d860ac52be1326e69ba8c0750530d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#afe3d860ac52be1326e69ba8c0750530d">voro::voronoicell_base::plane_intersects_guess</a></div><div class="ttdeci">bool plane_intersects_guess(double x, double y, double z, double rsq)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01933">cell.cc:1933</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a2b115cbde725e468000a1da234b2fc66"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a2b115cbde725e468000a1da234b2fc66">voro::voronoicell_base::mep</a></div><div class="ttdeci">int ** mep</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00237">cell.hh:237</a></div></div>
<div class="ttc" id="common_8hh_html"><div class="ttname"><a href="common_8hh.html">common.hh</a></div><div class="ttdoc">Header file for the small helper functions. </div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a94fc0aba05c11fba465449bc1c4217e9"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a94fc0aba05c11fba465449bc1c4217e9">voro::voronoicell_base::total_edge_distance</a></div><div class="ttdeci">double total_edge_distance()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01468">cell.cc:1468</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a47d450e9b9be0fab103f401ddcaeefac"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a47d450e9b9be0fab103f401ddcaeefac">voro::voronoicell_base::copy</a></div><div class="ttdeci">void copy(voronoicell_base *vb)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00065">cell.cc:65</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a9df53445116446fafea8ffc4ee1afa76"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a9df53445116446fafea8ffc4ee1afa76">voro::voronoicell_base::face_freq_table</a></div><div class="ttdeci">void face_freq_table(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01891">cell.cc:1891</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a095c6bfc1b9b7a087d0b35b443e5c023"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a095c6bfc1b9b7a087d0b35b443e5c023">voro::voronoicell_base::output_custom</a></div><div class="ttdeci">void output_custom(const char *format, FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00182">cell.hh:182</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html">voro::voronoicell_base</a></div><div class="ttdoc">A class representing a single Voronoi cell. </div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00033">cell.hh:33</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html"><div class="ttname"><a href="classvoro_1_1voronoicell.html">voro::voronoicell</a></div><div class="ttdoc">Extension of the voronoicell_base class to represent a Voronoi cell without neighbor information...</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00300">cell.hh:300</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ac959634a1ae2e3201e96624f44e7e71e"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ac959634a1ae2e3201e96624f44e7e71e">voro::voronoicell_base::~voronoicell_base</a></div><div class="ttdeci">~voronoicell_base()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00043">cell.cc:43</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a1b52986eadcea3b6b230626a6dbddc40"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a1b52986eadcea3b6b230626a6dbddc40">voro::voronoicell_base::draw_pov_mesh</a></div><div class="ttdeci">void draw_pov_mesh(double x, double y, double z, FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01542">cell.cc:1542</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a4c7f5406ba3beb1aa0d047592316c68d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a4c7f5406ba3beb1aa0d047592316c68d">voro::voronoicell_base::init_base</a></div><div class="ttdeci">void init_base(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00257">cell.cc:257</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a67d6682dd62b76162f83822a17de6fe5"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a67d6682dd62b76162f83822a17de6fe5">voro::voronoicell_base::output_face_vertices</a></div><div class="ttdeci">void output_face_vertices(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00159">cell.hh:159</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a8a7e29d041abbd58406e2c05a9a6248a"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a8a7e29d041abbd58406e2c05a9a6248a">voro::voronoicell_base::print_edges</a></div><div class="ttdeci">void print_edges()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l02220">cell.cc:2220</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_adfed605232f7e6d1b52276010facbf08"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#adfed605232f7e6d1b52276010facbf08">voro::voronoicell_base::vertex_orders</a></div><div class="ttdeci">void vertex_orders(std::vector&lt; int &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01744">cell.cc:1744</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aae096d26d957c3e5b0f02b20d493a3ff"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aae096d26d957c3e5b0f02b20d493a3ff">voro::voronoicell_base::output_normals</a></div><div class="ttdeci">void output_normals(FILE *fp=stdout)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00173">cell.hh:173</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ab2c8534b380907975eb60f3441d50e1e"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ab2c8534b380907975eb60f3441d50e1e">voro::voronoicell_base::translate</a></div><div class="ttdeci">void translate(double x, double y, double z)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00105">cell.cc:105</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_aebbbd4815cfbbe5cb1c71a682872664d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#aebbbd4815cfbbe5cb1c71a682872664d">voro::voronoicell_base::normals</a></div><div class="ttdeci">void normals(std::vector&lt; double &gt; &amp;v)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01639">cell.cc:1639</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_ae7bb21f644a45946001beef598a1da1f"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#ae7bb21f644a45946001beef598a1da1f">voro::voronoicell_base::check_relations</a></div><div class="ttdeci">void check_relations()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00331">cell.cc:331</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a92f69986a6f78e7b8b6d9f5778ed99ba"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a92f69986a6f78e7b8b6d9f5778ed99ba">voro::voronoicell_base::volume</a></div><div class="ttdeci">double volume()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l01299">cell.cc:1299</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a83d13bf519c98bf0ea5804763ffc967d"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a83d13bf519c98bf0ea5804763ffc967d">voro::voronoicell_base::voronoicell_base</a></div><div class="ttdeci">voronoicell_base()</div><div class="ttdef"><b>Definition:</b> <a href="cell_8cc_source.html#l00020">cell.cc:20</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell__base_html_a8138dc62fc6288c772b0483d0eb4eb96"><div class="ttname"><a href="classvoro_1_1voronoicell__base.html#a8138dc62fc6288c772b0483d0eb4eb96">voro::voronoicell_base::draw_pov</a></div><div class="ttdeci">void draw_pov(double x, double y, double z, const char *filename)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00098">cell.hh:98</a></div></div>
<div class="ttc" id="classvoro_1_1voronoicell_html_a573257366d690af4fd8646b4c431ca84"><div class="ttname"><a href="classvoro_1_1voronoicell.html#a573257366d690af4fd8646b4c431ca84">voro::voronoicell::init</a></div><div class="ttdeci">void init(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)</div><div class="ttdef"><b>Definition:</b> <a href="cell_8hh_source.html#l00355">cell.hh:355</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+78
View File
@@ -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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 Thu Oct 17 2013 11:14:05 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
+236
View File
@@ -0,0 +1,236 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:a255049d5c5f878a24804ed2e29043e68"><td class="memSeparator" colspan="2">&#160;</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="separator:acab7b0f3917a172844d4d2565913855d"><td class="memSeparator" colspan="2">&#160;</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="separator:a322b26b0f78f73b345ee0af92f908df0"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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 inherit pub_methods_classvoro_1_1c__loop__base"><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="separator:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="-"/>&#160;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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

@@ -0,0 +1,236 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:a07dc6f74c7a503bb8cb4e7fa4f2e84ff"><td class="memSeparator" colspan="2">&#160;</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="separator:ab7b002f40adfe7116d3db77d6bb95f4c"><td class="memSeparator" colspan="2">&#160;</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="separator:ac25d006faa31cee1d1b6bbc621532651"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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 inherit pub_methods_classvoro_1_1c__loop__base"><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="separator:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="-"/>&#160;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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

+605
View File
@@ -0,0 +1,605 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:acc2351174b5d0a163b172fb016e94216"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+300
View File
@@ -0,0 +1,300 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:a08bc288a867bff0716d67fde7f18b892"><td class="memSeparator" colspan="2">&#160;</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="separator:a0e03892771119212847d1ea7c56c5228"><td class="memSeparator" colspan="2">&#160;</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="separator:ae2e1c198611110487e9b41c17cae65a7"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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 inherit pub_methods_classvoro_1_1c__loop__base"><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="separator:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="separator:a3a9be1df3e0f88e0e3e6fc0458949987"><td class="memSeparator" colspan="2">&#160;</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="separator:a9b82e0a6ce7c6ed0456738cf23e08c61"><td class="memSeparator" colspan="2">&#160;</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="separator:a6c2b7ac4d078f84490b9433523bf766f"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

@@ -0,0 +1,300 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:adb9aea9a009c1dfdd231b608257d04f9"><td class="memSeparator" colspan="2">&#160;</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="separator:a3734764b6b10670ce820de143d118d8e"><td class="memSeparator" colspan="2">&#160;</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="separator:ae34027247718bedc32b705ceb5b029de"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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 inherit pub_methods_classvoro_1_1c__loop__base"><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="separator:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="separator:a73e215fc8915ed65f17e633d85c0f018"><td class="memSeparator" colspan="2">&#160;</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="separator:a281ac4b9e4f3c687081f067239fdd982"><td class="memSeparator" colspan="2">&#160;</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="separator:a80063187d6d4ea8e8bb2efe02091a475"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

+441
View File
@@ -0,0 +1,441 @@
<!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"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<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.5 -->
<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 class="groupheader"><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="separator:aab236b412de99f7a58d77d23a25ff44f"><td class="memSeparator" colspan="2">&#160;</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="separator:a585f47e725dc0de645defc8dc0d463cb"><td class="memSeparator" colspan="2">&#160;</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="separator:a2aba9be724d35e088e3597dc9181182d"><td class="memSeparator" colspan="2">&#160;</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="separator:a688ef02340f6a9bc64c77c2de4c4ae3d"><td class="memSeparator" colspan="2">&#160;</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="separator:a4c9709bc992e33668471e292474c39f4"><td class="memSeparator" colspan="2">&#160;</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="separator:af45a6a610d039dc8c8434caf61b092c6"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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 inherit pub_methods_classvoro_1_1c__loop__base"><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="separator:acc2351174b5d0a163b172fb016e94216 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac9f65f527282809c894c7094291fca83 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a33a5410ec11caa521d05c72e585bd155 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a759f4fc1cb4b7d5b41b1358c0e4fe4c3 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2f4b84b1453d680afe11b7877f191758 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aec12d78b1e8282f84eac5a6fd67fc3c9 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:aa958fedbef8948a8a359ce00bdb52d07 inherit pub_methods_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><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="separator:ac5d8b2aa34f936022e9059ca093b914c"><td class="memSeparator" colspan="2">&#160;</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="-"/>&#160;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="separator:a0d6046f6de1f80849e5d1d8f3b7212e7 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ac8f42728e3a98149c2185aba833ac5ff inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aaec35b971352bff60f4a446c430f26f8 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abb655606af4e184c2982f1a32cd47e12 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a68cafa132e9028ed7b143e93e85a102d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab42c93bbaf7cfc11e3c95f5d38f694e2 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a2b6abbe65d550ae7071aaa28d0fbb534 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:ab64ac0420d5ebed7d3259dd5c861d5c1 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a060e5b0e557141713b6897b0a0728f2d inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:aef465d2da85b963fa9e0e886ee273541 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abbaba2fc0d1fa07760220d37a3cc7ccf inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:abf2dcc131f23212c15169e90ba30d6e4 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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="separator:a3cb6bc5c8b22e57325bb136feba93d9b inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</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>
<tr class="separator:a2eaa096a64736b5792cdf3d799b95786 inherit pub_attribs_classvoro_1_1c__loop__base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">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>
<h2 class="groupheader">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>
<h2 class="groupheader">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 Thu Oct 17 2013 11:14:00 for Voro++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Some files were not shown because too many files have changed in this diff Show More