|
| FullParticleCell () |
| Initialize data pointers to 0. More...
|
|
| ~FullParticleCell () |
| Destructor. More...
|
|
SingleCellIterator< FullParticleCell > | iterator () |
|
void | deallocateAllParticles () override |
| removes and deallocates all elements More...
|
|
bool | addParticle (Molecule &particle, bool checkWhetherDuplicate=false) override |
| insert a single molecule into this cell More...
|
|
bool | isEmpty () const override |
| Check if current cell contains no molecules. More...
|
|
bool | deleteMoleculeByIndex (size_t index) override |
|
int | getMoleculeCount () const override |
| return the number of molecules contained in this cell More...
|
|
CellDataSoA & | getCellDataSoA () |
| Get the structure of arrays for VectorizedCellProcessor. More...
|
|
void | preUpdateLeavingMolecules () override |
|
void | updateLeavingMoleculesBase (ParticleCellBase &otherCell) override |
|
void | postUpdateLeavingMolecules () override |
|
void | getRegion (double lowCorner[3], double highCorner[3], std::vector< Molecule * > &particlePtrs, bool removeFromContainer=false) override |
|
void | buildSoACaches () override |
|
void | increaseMoleculeStorage (size_t numExtraMols) override |
|
virtual size_t | getMoleculeVectorDynamicSize () const override |
|
void | moleculesAtNew (size_t i, Molecule *&multipurposePointer) override |
|
void | moleculesAtConstNew (size_t i, Molecule *&multipurposePointer) const override |
|
bool | findMoleculeByID (size_t &index, unsigned long molid) const override |
| Find the index of a molecule in a cell based on its molecule ID. More...
|
|
Public Member Functions inherited from ParticleCellBase |
bool | isNotEmpty () const |
| Check if current cell contains molecules. More...
|
|
bool | deleteMoleculeByID (unsigned long molid) |
| Remove moleulce from the cell based on molecule ID. More...
|
|
virtual bool | testPointInCell (const double point[3]) const |
|
virtual bool | testInBox (const Molecule &particle) const |
|
virtual void | prefetchForForce () const |
|
unsigned long | initCubicGrid (std::array< unsigned long, 3 > numMoleculesPerDimension, std::array< double, 3 > simBoxLength, Random &RNG) |
|
virtual void | getLeavingMolecules (std::vector< Molecule > &appendBuffer) |
|
bool | isHaloCell () const final |
|
bool | isBoundaryCell () const final |
|
bool | isInnerCell () const final |
|
bool | isInnerMostCell () const final |
|
void | assignCellToHaloRegion () |
|
void | assignCellToBoundaryRegion () |
|
void | assignCellToInnerRegion () |
|
void | assignCellToInnerMostAndInnerRegion () |
|
void | skipCellFromHaloRegion () |
|
void | skipCellFromBoundaryRegion () |
|
void | skipCellFromInnerRegion () |
|
void | skipCellFromInnerMostRegion () |
|
double | getBoxMin (int d) const |
|
double | getBoxMax (int d) const |
|
std::array< double, 3 > | getBoxMinArray () const |
|
std::array< double, 3 > | getBoxMaxArray () const |
|
void | setBoxMin (const double b[3]) |
|
void | setBoxMax (const double b[3]) |
|
unsigned long | getCellIndex () const |
|
void | setCellIndex (unsigned long cellIndex) |
|
FullParticleCell data structure. Renamed from ParticleCell.
- Author
- Martin Buchholz
A FullParticleCell represents a small cuboid area of the domain and stores a list of pointers to the molecules in that area. Depending on the actual position of the cell, it belongs to one of four different regions:
- completele outside (more than the cutoffradius away from all cells that belong directly to the MoleculeContainer) Such a cell shouldn't exist!!!
- halo region (not belonging directly to the MoleculeContainer, but within the cutoffradius of at least one cell of the MoleculeContainer)
- boundary region (belonging directly to the MoleculeContainer, but not more than the cutoffradius away from the boundary)
- inner region (more than the cutoffradius away from the boundary)
There are three boolean member variables for the last three regions.
If more than one of them is true, there must be an error in the code
If none of them is true, the cell wasn't assigned to any region yet. A cell which is completely outside shouldn't exist, as it completely useless.
(Johannes Heckl)
Also stores data for various CellProcessors.
If you add a new data member, update the _assign() method with deep copy
semantics for the new data member.
Uses the default copy constructor and the default assignment operator despite
having pointer data members. This is because these data members are not controlled
by the FullParticleCell itself, but by the various CellProcessors so FullParticleCell can not
know the proper copy semantics. This should not cause any problems because no copy
actions should be executed during CellProcessor applications.