Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

ParticleLocalityGrid Class Reference

#include <ParticleLocalityGrid.h>

Inheritance diagram for ParticleLocalityGrid:

Inheritance graph
[legend]
Collaboration diagram for ParticleLocalityGrid:

Collaboration graph
[legend]
List of all members.

Detailed Description

A ParticleLocalityGrid contains a 3D grid of ParticleLocalityCells.

This structure is useful for finding the neighbors of a particle without interrogating all particles in the system.

Definition at line 57 of file ParticleLocalityGrid.h.

Public Member Functions

 MAKE_PARTICLESTUFF_NAME ()
 ParticleLocalityGrid (Particles *ps=NULL, gmVector3 go=gmVector3(-10.0,-10.0,-10.0), gmVector3 gs=gmVector3(20.0, 20.0, 20.0), int x=5, int y=5, int z=5, std::string name=std::string("ParticleLocalityGrid"))
 Constructor.

 ~ParticleLocalityGrid ()
 Destructor.

void clear ()
virtual void particleAdded (unsigned int i)
 Callback for particle addition.

virtual void particleRemoved (unsigned int i)
 Callback for particle removal.

virtual void update ()
 Updates the grid.

virtual void getNeighbors (unsigned int i, std::vector< unsigned int > &neighbors)
 Fills a vector with neighbor candidates.


Private Member Functions

ParticleLocalityCellfindCell (unsigned int)
 Finds the appropriate cell for a particle.


Private Attributes

int cell_x
 Holds cell X index after call to findCell.

int cell_y
 Holds cell Y index after call to findCell.

int cell_z
 Holds cell Z index after call to findCell.

std::map< unsigned int, ParticleLocalityCell * > ptoc_map
 Mapping from particles to grid cells.

ParticleLocalityCell *** grid
 The grid of cells.

gmVector3 cell_dim
 Dimensions of one cell.

gmVector3 grid_origin
 Origin of the grid.

gmVector3 grid_size
 Overall size of the grid.

int grid_x
 Dimension of grid in X.

int grid_y
 Dimension of grid in Y.

int grid_z
 Dimension of grid in Z.


Constructor & Destructor Documentation

ParticleLocalityGrid::ParticleLocalityGrid Particles ps = NULL,
gmVector3  go = gmVector3(-10.0,-10.0,-10.0),
gmVector3  gs = gmVector3(20.0,20.0,20.0),
int  x = 5,
int  y = 5,
int  z = 5,
std::string  name = std::string("ParticleLocalityGrid")
 

Constructor.

Parameters:
ps Owning particle system.
go Grid origin.
gs Grid size.
x Number of cells in x.
y Number of cells in y.
z Number of cells in z.
name Name of this attribute.

Definition at line 19 of file ParticleLocalityGrid.cpp.

ParticleLocalityGrid::~ParticleLocalityGrid  ) 
 

Destructor.

Definition at line 48 of file ParticleLocalityGrid.cpp.

References grid, grid_x, and grid_y.


Member Function Documentation

void ParticleLocalityGrid::clear  )  [virtual]
 

Reimplemented from ParticleLocality.

Definition at line 62 of file ParticleLocalityGrid.cpp.

References ParticleLocalityCell::clear(), grid, grid_x, grid_y, and grid_z.

ParticleLocalityCell * ParticleLocalityGrid::findCell unsigned int  i  )  [private]
 

Finds the appropriate cell for a particle.

The result is stored in private member variables cell_x, cell_y, cell_z.

Definition at line 214 of file ParticleLocalityGrid.cpp.

References cell_dim, cell_x, cell_y, cell_z, clampInt(), ParticlePosition::getPosition(), grid, grid_origin, grid_x, grid_y, and grid_z.

Referenced by getNeighbors(), particleAdded(), and update().

void ParticleLocalityGrid::getNeighbors unsigned int  p,
std::vector< unsigned int > &  neighbors
[virtual]
 

Fills a vector with neighbor candidates.

Parameters:
p The particle in question.
neighbors Vector of indices of neighbors.

Definition at line 111 of file ParticleLocalityGrid.cpp.

References cell_dim, cell_x, cell_y, cell_z, ParticleLocalityCell::fillVector(), findCell(), grid, grid_x, grid_y, grid_z, and ParticleLocality::r.

ParticleLocalityGrid::MAKE_PARTICLESTUFF_NAME  ) 
 

Reimplemented from ParticleLocality.

void ParticleLocalityGrid::particleAdded unsigned int  i  )  [virtual]
 

Callback for particle addition.

Parameters:
i Index of particle to be added.

Reimplemented from ParticleStuff.

Definition at line 75 of file ParticleLocalityGrid.cpp.

References findCell(), ParticleLocalityCell::particleAdded(), and ptoc_map.

void ParticleLocalityGrid::particleRemoved unsigned int  i  )  [virtual]
 

Callback for particle removal.

Parameters:
i Index of particle to be removed.

Reimplemented from ParticleStuff.

Definition at line 93 of file ParticleLocalityGrid.cpp.

References ptoc_map.

void ParticleLocalityGrid::update void   )  [virtual]
 

Updates the grid.

Reimplemented from ParticleLocality.

Definition at line 159 of file ParticleLocalityGrid.cpp.

References findCell(), ParticleLocalityCell::particleAdded(), ptoc_map, and ParticleLocalityCell::removeIndex().


Member Data Documentation

gmVector3 ParticleLocalityGrid::cell_dim [private]
 

Dimensions of one cell.

Definition at line 73 of file ParticleLocalityGrid.h.

Referenced by findCell(), and getNeighbors().

int ParticleLocalityGrid::cell_x [private]
 

Holds cell X index after call to findCell.

Definition at line 64 of file ParticleLocalityGrid.h.

Referenced by findCell(), and getNeighbors().

int ParticleLocalityGrid::cell_y [private]
 

Holds cell Y index after call to findCell.

Definition at line 65 of file ParticleLocalityGrid.h.

Referenced by findCell(), and getNeighbors().

int ParticleLocalityGrid::cell_z [private]
 

Holds cell Z index after call to findCell.

Definition at line 66 of file ParticleLocalityGrid.h.

Referenced by findCell(), and getNeighbors().

ParticleLocalityCell*** ParticleLocalityGrid::grid [private]
 

The grid of cells.

Definition at line 71 of file ParticleLocalityGrid.h.

Referenced by clear(), findCell(), getNeighbors(), and ~ParticleLocalityGrid().

gmVector3 ParticleLocalityGrid::grid_origin [private]
 

Origin of the grid.

Definition at line 74 of file ParticleLocalityGrid.h.

Referenced by findCell().

gmVector3 ParticleLocalityGrid::grid_size [private]
 

Overall size of the grid.

Definition at line 75 of file ParticleLocalityGrid.h.

int ParticleLocalityGrid::grid_x [private]
 

Dimension of grid in X.

Definition at line 77 of file ParticleLocalityGrid.h.

Referenced by clear(), findCell(), getNeighbors(), and ~ParticleLocalityGrid().

int ParticleLocalityGrid::grid_y [private]
 

Dimension of grid in Y.

Definition at line 78 of file ParticleLocalityGrid.h.

Referenced by clear(), findCell(), getNeighbors(), and ~ParticleLocalityGrid().

int ParticleLocalityGrid::grid_z [private]
 

Dimension of grid in Z.

Definition at line 79 of file ParticleLocalityGrid.h.

Referenced by clear(), findCell(), and getNeighbors().

std::map<unsigned int, ParticleLocalityCell*> ParticleLocalityGrid::ptoc_map [private]
 

Mapping from particles to grid cells.

Definition at line 69 of file ParticleLocalityGrid.h.

Referenced by particleAdded(), particleRemoved(), and update().


The documentation for this class was generated from the following files:
Generated on Mon Jun 28 15:02:42 2004 for Advanced Surface Library by doxygen 1.3.4