Voro++
Public Member Functions | Data Fields | Friends
voro::container_periodic_poly Class Reference

Extension of the container_periodic_base class for computing radical Voronoi tessellations. More...

#include <container_prd.hh>

Inheritance diagram for voro::container_periodic_poly:

Public Member Functions

 container_periodic_poly (double bx_, double bxy_, double by_, double bxz_, double byz_, double bz_, int nx_, int ny_, int nz_, int init_mem_)
void clear ()
void put (int n, double x, double y, double z, double r)
void put (int n, double x, double y, double z, double r, int &ai, int &aj, int &ak)
void put (particle_order &vo, int n, double x, double y, double z, double r)
void import (FILE *fp=stdin)
void import (particle_order &vo, FILE *fp=stdin)
void import (const char *filename)
void import (particle_order &vo, const char *filename)
void compute_all_cells ()
double sum_cell_volumes ()
template<class c_loop >
void draw_particles (c_loop &vl, FILE *fp)
void draw_particles (FILE *fp=stdout)
void draw_particles (const char *filename)
template<class c_loop >
void draw_particles_pov (c_loop &vl, FILE *fp)
void draw_particles_pov (FILE *fp=stdout)
void draw_particles_pov (const char *filename)
template<class c_loop >
void draw_cells_gnuplot (c_loop &vl, FILE *fp)
void draw_cells_gnuplot (FILE *fp=stdout)
void draw_cells_gnuplot (const char *filename)
template<class c_loop >
void draw_cells_pov (c_loop &vl, FILE *fp)
void draw_cells_pov (FILE *fp=stdout)
void draw_cells_pov (const char *filename)
template<class c_loop >
void print_custom (c_loop &vl, const char *format, FILE *fp)
template<class v_cell , class c_loop >
bool compute_cell (v_cell &c, c_loop &vl)
template<class v_cell >
bool compute_cell (v_cell &c, int ijk, int q)
void print_custom (const char *format, FILE *fp=stdout)
void print_custom (const char *format, const char *filename)
bool find_voronoi_cell (double x, double y, double z, double &rx, double &ry, double &rz, int &pid)

Data Fields

double max_radius

Friends

class voro_compute< container_periodic_poly >

Detailed Description

This class is an extension of container_periodic_base that has routines specifically for computing the radical Voronoi tessellation that depends on the particle radii.

Definition at line 422 of file container_prd.hh.


Constructor & Destructor Documentation

voro::container_periodic_poly::container_periodic_poly ( double  bx_,
double  bxy_,
double  by_,
double  bxz_,
double  byz_,
double  bz_,
int  nx_,
int  ny_,
int  nz_,
int  init_mem_ 
)

The class constructor sets up the geometry of container.

Parameters:
[in](bx_)The x coordinate of the first unit vector.
[in](bxy_,by_)The x and y coordinates of the second unit vector.
[in](bxz_,byz_,bz_)The x, y, and z coordinates of the third unit vector.
[in](nx_,ny_,nz_)the number of grid blocks in each of the three coordinate directions.
[in]init_mem_the initial memory allocation for each block.

Definition at line 83 of file container_prd.cc.


Member Function Documentation

void voro::container_periodic_poly::clear ( )

Clears a container of particles, also clearing resetting the maximum radius to zero.

Definition at line 452 of file container_prd.cc.

void voro::container_periodic_poly::compute_all_cells ( )

Computes all of the Voronoi cells in the container, but does nothing with the output. It is useful for measuring the pure computation time of the Voronoi algorithm, without any additional calculations such as volume evaluation or cell output.

Definition at line 508 of file container_prd.cc.

template<class v_cell , class c_loop >
bool voro::container_periodic_poly::compute_cell ( v_cell &  c,
c_loop &  vl 
) [inline]

Computes the Voronoi cell for a particle currently being referenced by a loop class.

Parameters:
[out]ca Voronoi cell class in which to store the computed cell.
[in]vlthe loop class to use.
Returns:
True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false.

Definition at line 601 of file container_prd.hh.

template<class v_cell >
bool voro::container_periodic_poly::compute_cell ( v_cell &  c,
int  ijk,
int  q 
) [inline]

Computes the Voronoi cell for given particle.

Parameters:
[out]ca Voronoi cell class in which to store the computed cell.
[in]ijkthe block that the particle is within.
[in]qthe index of the particle within the block.
Returns:
True if the cell was computed. If the cell cannot be computed because it was removed entirely for some reason, then the routine returns false.

Definition at line 613 of file container_prd.hh.

template<class c_loop >
void voro::container_periodic_poly::draw_cells_gnuplot ( c_loop &  vl,
FILE *  fp 
) [inline]

Computes Voronoi cells and saves the output in gnuplot format.

Parameters:
[in]vlthe loop class to use.
[in]fpa file handle to write to.

Definition at line 520 of file container_prd.hh.

void voro::container_periodic_poly::draw_cells_gnuplot ( FILE *  fp = stdout) [inline]

Compute all Voronoi cells and saves the output in gnuplot format.

Parameters:
[in]fpa file handle to write to.

Definition at line 530 of file container_prd.hh.

void voro::container_periodic_poly::draw_cells_gnuplot ( const char *  filename) [inline]

Compute all Voronoi cells and saves the output in gnuplot format.

Parameters:
[in]filenamethe name of the file to write to.

Definition at line 537 of file container_prd.hh.

template<class c_loop >
void voro::container_periodic_poly::draw_cells_pov ( c_loop &  vl,
FILE *  fp 
) [inline]

Computes Voronoi cells and saves the output in POV-Ray format.

Parameters:
[in]vlthe loop class to use.
[in]fpa file handle to write to.

Definition at line 547 of file container_prd.hh.

void voro::container_periodic_poly::draw_cells_pov ( FILE *  fp = stdout) [inline]

Computes all Voronoi cells and saves the output in POV-Ray format.

Parameters:
[in]fpa file handle to write to.

Definition at line 558 of file container_prd.hh.

void voro::container_periodic_poly::draw_cells_pov ( const char *  filename) [inline]

Computes all Voronoi cells and saves the output in POV-Ray format.

Parameters:
[in]filenamethe name of the file to write to.

Definition at line 565 of file container_prd.hh.

template<class c_loop >
void voro::container_periodic_poly::draw_particles ( c_loop &  vl,
FILE *  fp 
) [inline]

Dumps particle IDs, positions and radii to a file.

Parameters:
[in]vlthe loop class to use.
[in]fpa file handle to write to.

Definition at line 468 of file container_prd.hh.

void voro::container_periodic_poly::draw_particles ( FILE *  fp = stdout) [inline]

Dumps all of the particle IDs, positions and radii to a file.

Parameters:
[in]fpa file handle to write to.

Definition at line 478 of file container_prd.hh.

void voro::container_periodic_poly::draw_particles ( const char *  filename) [inline]

Dumps all of the particle IDs, positions and radii to a file.

Parameters:
[in]filenamethe name of the file to write to.

Definition at line 485 of file container_prd.hh.

void voro::container_periodic_poly::draw_particles_pov ( const char *  filename) [inline]

Dumps all the particle positions in POV-Ray format.

Parameters:
[in]filenamethe name of the file to write to.

Definition at line 510 of file container_prd.hh.

template<class c_loop >
void voro::container_periodic_poly::draw_particles_pov ( c_loop &  vl,
FILE *  fp 
) [inline]

Dumps particle positions in POV-Ray format.

Parameters:
[in]vlthe loop class to use.
[in]fpa file handle to write to.

Definition at line 494 of file container_prd.hh.

void voro::container_periodic_poly::draw_particles_pov ( FILE *  fp = stdout) [inline]

Dumps all the particle positions in POV-Ray format.

Parameters:
[in]fpa file handle to write to.

Definition at line 504 of file container_prd.hh.

bool voro::container_periodic_poly::find_voronoi_cell ( double  x,
double  y,
double  z,
double &  rx,
double &  ry,
double &  rz,
int &  pid 
)

Takes a vector and finds the particle whose Voronoi cell contains that vector. Additional wall classes are not considered by this routine.

Parameters:
[in](x,y,z)the vector to test.
[out](rx,ry,rz)the position of the particle whose Voronoi cell contains the vector. If the container is periodic, this may point to a particle in a periodic image of the primary domain.
[out]pidthe ID of the particle.
Returns:
True if a particle was found. If the container has no particles, then the search will not find a Voronoi cell and false is returned.

Definition at line 329 of file container_prd.cc.

void voro::container_periodic_poly::import ( const char *  filename) [inline]

Imports a list of particles from an open file stream into the container_poly class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error.

Parameters:
[in]filenamethe name of the file to open and read from.

Definition at line 443 of file container_prd.hh.

void voro::container_periodic_poly::import ( FILE *  fp = stdin)

Import a list of particles from an open file stream into the container. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error.

Parameters:
[in]fpthe file handle to read from.

Definition at line 417 of file container_prd.cc.

void voro::container_periodic_poly::import ( particle_order vo,
const char *  filename 
) [inline]

Imports a list of particles from an open file stream into the container_poly class. Entries of five numbers (Particle ID, x position, y position, z position, radius) are searched for. In addition, the order in which particles are read is saved into an ordering class. If the file cannot be successfully read, then the routine causes a fatal error.

Parameters:
[in,out]vothe ordering class to use.
[in]filenamethe name of the file to open and read from.

Definition at line 457 of file container_prd.hh.

void voro::container_periodic_poly::import ( particle_order vo,
FILE *  fp = stdin 
)

Import a list of particles from an open file stream, also storing the order of that the particles are read. Entries of four numbers (Particle ID, x position, y position, z position, radius) are searched for. If the file cannot be successfully read, then the routine causes a fatal error.

Parameters:
[in,out]voa reference to an ordering class to use.
[in]fpthe file handle to read from.

Definition at line 430 of file container_prd.cc.

void voro::container_periodic_poly::print_custom ( const char *  format,
FILE *  fp = stdout 
)

Computes all the Voronoi cells and saves customized information about them.

Parameters:
[in]formatthe custom output string to use.
[in]fpa file handle to write to.

Definition at line 469 of file container_prd.cc.

template<class c_loop >
void voro::container_periodic_poly::print_custom ( c_loop &  vl,
const char *  format,
FILE *  fp 
) [inline]

Computes the Voronoi cells and saves customized information about them.

Parameters:
[in]vlthe loop class to use.
[in]formatthe custom output string to use.
[in]fpa file handle to write to.

Definition at line 576 of file container_prd.hh.

void voro::container_periodic_poly::print_custom ( const char *  format,
const char *  filename 
)

Computes all the Voronoi cells and saves customized information about them

Parameters:
[in]formatthe custom output string to use.
[in]filenamethe name of the file to write to.

Definition at line 487 of file container_prd.cc.

void voro::container_periodic_poly::put ( int  n,
double  x,
double  y,
double  z,
double  r,
int &  ai,
int &  aj,
int &  ak 
)

Put a particle into the correct region of the container.

Parameters:
[in]nthe numerical ID of the inserted particle.
[in](x,y,z)the position vector of the inserted particle.
[in]rthe radius of the particle.
[out](ai,aj,ak)the periodic image displacement that the particle is in, with (0,0,0) corresponding to the primary domain.

Definition at line 133 of file container_prd.cc.

void voro::container_periodic_poly::put ( particle_order vo,
int  n,
double  x,
double  y,
double  z,
double  r 
)

Put a particle into the correct region of the container, also recording into which region it was stored.

Parameters:
[in]vothe ordering class in which to record the region.
[in]nthe numerical ID of the inserted particle.
[in](x,y,z)the position vector of the inserted particle.
[in]rthe radius of the particle.

Definition at line 162 of file container_prd.cc.

void voro::container_periodic_poly::put ( int  n,
double  x,
double  y,
double  z,
double  r 
)

Put a particle into the correct region of the container.

Parameters:
[in]nthe numerical ID of the inserted particle.
[in](x,y,z)the position vector of the inserted particle.
[in]rthe radius of the particle.

Definition at line 103 of file container_prd.cc.

double voro::container_periodic_poly::sum_cell_volumes ( )

Calculates all of the Voronoi cells and sums their volumes. In most cases without walls, the sum of the Voronoi cell volumes should equal the volume of the container to numerical precision.

Returns:
The sum of all of the computed Voronoi volumes.

Definition at line 530 of file container_prd.cc.


Field Documentation

The current maximum radius of any particle, used to determine when to cut off the radical Voronoi computation.

Definition at line 427 of file container_prd.hh.


The documentation for this class was generated from the following files: