<areahref="classvoro_1_1voro__base.html"title="Class containing data structures common across all particle container classes."alt="voro::voro_base"shape="rect"coords="0,0,131,24"/>
<areahref="classvoro_1_1wall__list.html"title="A class for storing a list of pointers to walls."alt="voro::wall_list"shape="rect"coords="141,0,272,24"/>
<areahref="classvoro_1_1container.html"title="Extension of the container_base class for computing regular Voronoi tessellations."alt="voro::container"shape="rect"coords="0,112,131,136"/>
<areahref="classvoro_1_1container__poly.html"title="Extension of the container_base class for computing radical Voronoi tessellations."alt="voro::container_poly"shape="rect"coords="141,112,272,136"/>
<trclass="memitem:af6d18399db1c92816296bc70af8440b5"><tdclass="memTemplItemLeft"align="right"valign="top">bool </td><tdclass="memTemplItemRight"valign="bottom"><aclass="el"href="classvoro_1_1container__base.html#af6d18399db1c92816296bc70af8440b5">initialize_voronoicell</a> (v_cell &c, int ijk, int q, int ci, int cj, int ck, int &i, int &j, int &k, double &x, double &y, double &z, int &disp)</td></tr>
<trclass="memitem:a30dbb059792c199f2526c13990cd8daf"><tdclass="memItemLeft"align="right"valign="top">void </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1container__base.html#a30dbb059792c199f2526c13990cd8daf">initialize_search</a> (int ci, int cj, int ck, int ijk, int &i, int &j, int &k, int &disp)</td></tr>
<trclass="memitem:a76b645960fba43620e096b7bdf178603"><tdclass="memItemLeft"align="right"valign="top">int </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1container__base.html#a76b645960fba43620e096b7bdf178603">region_index</a> (int ci, int cj, int ck, int ei, int ej, int ek, double &qx, double &qy, double &qz, int &disp)</td></tr>
<trclass="inherit_header pub_methods_classvoro_1_1voro__base"><tdcolspan="2"onclick="javascript:toggleInherit('pub_methods_classvoro_1_1voro__base')"><imgsrc="closed.png"alt="-"/> Public Member Functions inherited from <aclass="el"href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
<trclass="memitem:a74f367e3bcffcd95c800ce9be85c29dc inherit pub_methods_classvoro_1_1voro__base"><tdclass="memItemLeft"align="right"valign="top"> </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1voro__base.html#a74f367e3bcffcd95c800ce9be85c29dc">voro_base</a> (int nx_, int ny_, int nz_, double boxx_, double boxy_, double boxz_)</td></tr>
<trclass="inherit_header pub_methods_classvoro_1_1wall__list"><tdcolspan="2"onclick="javascript:toggleInherit('pub_methods_classvoro_1_1wall__list')"><imgsrc="closed.png"alt="-"/> Public Member Functions inherited from <aclass="el"href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
<trclass="memitem:abe09747feba40102470c91f93d25fbfc"><tdclass="memItemLeft"align="right"valign="top">bool </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1container__base.html#abe09747feba40102470c91f93d25fbfc">remap</a> (int &ai, int &aj, int &ak, int &ci, int &cj, int &ck, double &x, double &y, double &z, int &ijk)</td></tr>
<trclass="inherit_header pro_methods_classvoro_1_1voro__base"><tdcolspan="2"onclick="javascript:toggleInherit('pro_methods_classvoro_1_1voro__base')"><imgsrc="closed.png"alt="-"/> Protected Member Functions inherited from <aclass="el"href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
<trclass="memitem:ab432b8bee0def0666ac39a132c721135 inherit pro_methods_classvoro_1_1voro__base"><tdclass="memItemLeft"align="right"valign="top">int </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1voro__base.html#ab432b8bee0def0666ac39a132c721135">step_mod</a> (int a, int b)</td></tr>
<trclass="memitem:a59a281a5e25e13f681c4f6a2c8bd1ca7 inherit pro_methods_classvoro_1_1voro__base"><tdclass="memItemLeft"align="right"valign="top">int </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classvoro_1_1voro__base.html#a59a281a5e25e13f681c4f6a2c8bd1ca7">step_div</a> (int a, int b)</td></tr>
<trclass="inherit_header pro_methods_classvoro_1_1wall__list"><tdcolspan="2"onclick="javascript:toggleInherit('pro_methods_classvoro_1_1wall__list')"><imgsrc="closed.png"alt="-"/> Protected Member Functions inherited from <aclass="el"href="classvoro_1_1wall__list.html">voro::wall_list</a></td></tr>
<trclass="inherit_header pub_static_attribs_classvoro_1_1voro__base"><tdcolspan="2"onclick="javascript:toggleInherit('pub_static_attribs_classvoro_1_1voro__base')"><imgsrc="closed.png"alt="-"/> Static Public Attributes inherited from <aclass="el"href="classvoro_1_1voro__base.html">voro::voro_base</a></td></tr>
<divclass="textblock"><p>This class represents a system of particles in a three-dimensional rectangular box. Any combination of non-periodic and periodic coordinates can be used in the three coordinate directions. The class is not intended for direct use, but instead forms the base of the container and <aclass="el"href="classvoro_1_1container__poly.html"title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> classes that add specialized routines for computing the regular and radical Voronoi tessellations respectively. It contains routines that are commonly between these two classes, such as those for drawing the domain, and placing particles within the internal data structure.</p>
<p>The class is derived from the <aclass="el"href="classvoro_1_1wall__list.html"title="A class for storing a list of pointers to walls.">wall_list</a> class, which encapsulates routines for associating walls with the container, and the <aclass="el"href="classvoro_1_1voro__base.html"title="Class containing data structures common across all particle container classes.">voro_base</a> class, which encapsulates routines about the underlying computational grid. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00115">115</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
</div><hr/><h2>Constructor & Destructor Documentation</h2>
<p>The class constructor sets up the geometry of container, initializing the minimum and maximum coordinates in each direction, and setting whether each direction is periodic or not. It divides the container into a rectangular grid of blocks, and allocates memory for each of these for storing particle positions and IDs. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ax_,bx_)</td><td>the minimum and maximum x coordinates. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ay_,by_)</td><td>the minimum and maximum y coordinates. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(az_,bz_)</td><td>the minimum and maximum z coordinates. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(nx_,ny_,nz_)</td><td>the number of grid blocks in each of the three coordinate directions. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(xperiodic_,yperiodic_,zperiodic_)</td><td>flags setting whether the container is periodic in each coordinate direction. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">init_mem</td><td>the initial memory allocation for each block. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ps_</td><td>the number of floating point entries to store for each particle. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00030">30</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>The container destructor frees the dynamically allocated memory. </p>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00044">44</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">i</td><td>the index of the region to reallocate. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00302">302</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Draws an outline of the domain in gnuplot format. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">fp</td><td>the file handle to write to. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00488">488</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Draws an outline of the domain in Gnuplot format. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">filename</td><td>the filename to write to. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00252">252</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>Draws an outline of the domain in POV-Ray format. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">fp</td><td>the file handle to write to. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00497">497</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Draws an outline of the domain in Gnuplot format. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">filename</td><td>the filename to write to. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00260">260</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>Returns the position of a particle currently being computed relative to the computational block that it is within. It is used to select the optimal worklist entry to use. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ci,cj,ck)</td><td>the block that the particle is within. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(fx,fy,fz)</td><td>the position relative to the block. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00224">224</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>Initializes parameters for a find_voronoi_cell call within the <aclass="el"href="classvoro_1_1voro__compute.html"title="Template for carrying out Voronoi cell computations.">voro_compute</a> template. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ci,cj,ck)</td><td>the coordinates of the test block in the container coordinate system. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ijk</td><td>the index of the test block </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <aclass="el"href="classvoro_1_1voro__compute.html"title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell routine. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00211">211</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>Initializes the Voronoi cell prior to a compute_cell operation for a specific particle being carried out by a <aclass="el"href="classvoro_1_1voro__compute.html"title="Template for carrying out Voronoi cell computations.">voro_compute</a> class. The cell is initialized to fill the entire container. For non-periodic coordinates, this is set by the position of the walls. For periodic coordinates, the space is equally divided in either direction from the particle's initial position. Plane cuts made by any walls that have been added are then applied to the cell. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">c</td><td>a reference to a voronoicell object. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ijk</td><td>the block that the particle is within. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">q</td><td>the index of the particle within its block. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ci,cj,ck)</td><td>the coordinates of the block in the container coordinate system. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(i,j,k)</td><td>the coordinates of the test block relative to the <aclass="el"href="classvoro_1_1voro__compute.html"title="Template for carrying out Voronoi cell computations.">voro_compute</a> coordinate system. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(x,y,z)</td><td>the position of the particle. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">disp</td><td>a block displacement used internally by the compute_cell routine. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns:</dt><dd>False if the plane cuts applied by walls completely removed the cell, true otherwise. </dd></dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00189">189</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>This function tests to see if a given vector lies within the container bounds and any walls. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(x,y,z)</td><td>the position vector to be tested. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns:</dt><dd>True if the point is inside the container, false if the point is outside. </dd></dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00481">481</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>This routine takes a particle position vector, tries to remap it into the primary domain. If successful, it computes the region into which it can be stored and checks that there is enough memory within this region to store it. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">ijk</td><td>the region index. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00151">151</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Takes a particle position vector and computes the region index into which it should be stored. If the container is periodic, then the routine also maps the particle position to ensure it is in the primary domain. If the container is not periodic, the routine bails out. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">ijk</td><td>the region index. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">(x,y,z)</td><td>the particle position, remapped into the primary domain if necessary. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns:</dt><dd>True if the particle can be successfully placed into the container, false otherwise. </dd></dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00171">171</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Outputs the a list of all the container regions along with the number of particles stored within each. </p>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00377">377</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Calculates the index of block in the container structure corresponding to given coordinates. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ci,cj,ck)</td><td>the coordinates of the original block in the current computation, relative to the container coordinate system. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">(ei,ej,ek)</td><td>the displacement of the current block from the original block. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">(qx,qy,qz)</td><td>the periodic displacement that must be added to the particles within the computed block. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">disp</td><td>a block displacement used internally by the find_voronoi_cell and compute_cell routines. </td></tr>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00243">243</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>Takes a position vector and attempts to remap it into the primary domain. </p>
<dlclass="params"><dt>Parameters:</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(ai,aj,ak)</td><td>the periodic image displacement that the vector is in, with (0,0,0) corresponding to the primary domain. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">(ci,cj,ck)</td><td>the index of the block that the position vector is within, once it has been remapped. </td></tr>
<tr><tdclass="paramdir">[in,out]</td><tdclass="paramname">(x,y,z)</td><td>the position vector to consider, which is remapped into the primary domain during the routine. </td></tr>
<tr><tdclass="paramdir">[out]</td><tdclass="paramname">ijk</td><td>the block index that the vector is within. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns:</dt><dd>True if the particle is within the container or can be remapped into it, false if it lies outside of the container bounds. </dd></dl>
<p>Definition at line <aclass="el"href="container_8cc_source.html#l00200">200</a> of file <aclass="el"href="container_8cc_source.html">container.cc</a>.</p>
<p>Sums up the total number of stored particles. </p>
<dlclass="section return"><dt>Returns:</dt><dd>The number of particles. </dd></dl>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00267">267</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The minimum x coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00118">118</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The minimum y coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00122">122</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The minimum z coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00126">126</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The maximum x coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00120">120</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The maximum y coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00124">124</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>The maximum z coordinate of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00128">128</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>This array holds the number of particles within each computational box of the container. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00147">147</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>This array holds the numerical IDs of each particle in each computational box. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00140">140</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>This array holds the maximum amount of particle memory for each computational box of the container. If the number of particles in a particular box ever approaches this limit, more is allocated using the <aclass="el"href="classvoro_1_1container__base.html#aa0fe8c92c66463236a05924d466256da">add_particle_memory()</a> function. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00153">153</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>A two dimensional array holding particle positions. For the derived <aclass="el"href="classvoro_1_1container__poly.html"title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a> class, this also holds particle radii. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00144">144</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<tdclass="memname">const int voro::container_base::ps</td>
</tr>
</table>
</div><divclass="memdoc">
<p>The amount of memory in the array structure for each particle. This is set to 3 when the basic class is initialized, so that the array holds (x,y,z) positions. If the container class is initialized as part of the derived class <aclass="el"href="classvoro_1_1container__poly.html"title="Extension of the container_base class for computing radical Voronoi tessellations.">container_poly</a>, then this is set to 4, to also hold the particle radii. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00160">160</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>A boolean value that determines if the x coordinate in periodic or not. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00131">131</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>A boolean value that determines if the y coordinate in periodic or not. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00134">134</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
<p>A boolean value that determines if the z coordinate in periodic or not. </p>
<p>Definition at line <aclass="el"href="container_8hh_source.html#l00137">137</a> of file <aclass="el"href="container_8hh_source.html">container.hh</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>