The ParticleContainerInterface class provides a basic interface for all Containers within AutoPas. More...
#include <ParticleContainerInterface.h>
Public Types | |
using | ParticleType = Particle_T |
Type of the Particle. | |
Public Member Functions | |
virtual CellType | getParticleCellTypeEnum () const =0 |
Get the ParticleCell type as an Enum. | |
ParticleContainerInterface (double skin) | |
Constructor. | |
virtual | ~ParticleContainerInterface ()=default |
Destructor of ParticleContainerInterface. | |
ParticleContainerInterface (const ParticleContainerInterface &obj)=delete | |
Delete the copy constructor to prevent unwanted copies. | |
ParticleContainerInterface & | operator= (const ParticleContainerInterface &other)=delete |
Delete the copy assignment operator to prevent unwanted copies. | |
virtual ContainerOption | getContainerType () const =0 |
Get the ContainerType. | |
virtual void | reserve (size_t numParticles, size_t numParticlesHaloEstimate)=0 |
Reserve memory for a given number of particles in the container and logic layers. | |
template<bool checkInBox = true> | |
void | addParticle (const Particle_T &p) |
Adds a particle to the container. | |
template<bool checkInBox = true> | |
void | addHaloParticle (const Particle_T &haloParticle) |
Adds a particle to the container that lies in the halo region of the container. | |
virtual bool | updateHaloParticle (const Particle_T &haloParticle)=0 |
Update a halo particle of the container with the given haloParticle. | |
virtual void | rebuildNeighborLists (TraversalInterface *traversal)=0 |
Rebuilds the neighbor lists for the next traversals. | |
virtual void | deleteHaloParticles ()=0 |
Deletes all halo particles. | |
virtual void | deleteAllParticles ()=0 |
Deletes all particles. | |
virtual size_t | getNumberOfParticles (IteratorBehavior behavior=IteratorBehavior::owned) const =0 |
Get the number of particles with respect to the specified IteratorBehavior. | |
virtual size_t | size () const =0 |
Get the total number of particles saved in the container (owned + halo + dummy). | |
virtual ContainerIterator< ParticleType, true, false > | begin (IteratorBehavior behavior=autopas::IteratorBehavior::ownedOrHalo, typename ContainerIterator< ParticleType, true, false >::ParticleVecType *additionalVectors=nullptr)=0 |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) . | |
virtual ContainerIterator< ParticleType, false, false > | begin (IteratorBehavior behavior=autopas::IteratorBehavior::ownedOrHalo, typename ContainerIterator< ParticleType, false, false >::ParticleVecType *additionalVectors=nullptr) const =0 |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) . | |
virtual ContainerIterator< ParticleType, false, false > | cbegin (IteratorBehavior behavior=autopas::IteratorBehavior::ownedOrHalo, typename ContainerIterator< ParticleType, false, false >::ParticleVecType *additionalVectors=nullptr) const final |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) . | |
virtual ContainerIterator< ParticleType, true, true > | getRegionIterator (const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior, typename ContainerIterator< ParticleType, true, true >::ParticleVecType *additionalVectors=nullptr)=0 |
Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) . | |
virtual ContainerIterator< ParticleType, false, true > | getRegionIterator (const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior, typename ContainerIterator< ParticleType, false, true >::ParticleVecType *additionalVectors=nullptr) const =0 |
Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) . | |
constexpr bool | end () const |
Dummy to make range-based for loops work. | |
virtual void | computeInteractions (TraversalInterface *traversal)=0 |
Iterates over all particle multiples (e.g. | |
virtual const std::array< double, 3 > & | getBoxMax () const =0 |
Get the upper corner of the container without halo. | |
virtual const std::array< double, 3 > & | getBoxMin () const =0 |
Get the lower corner of the container without halo. | |
virtual double | getCutoff () const =0 |
Return the cutoff of the container. | |
virtual void | setCutoff (double cutoff)=0 |
Set the cutoff of the container. | |
virtual double | getVerletSkin () const =0 |
Return the verletSkin of the container verletSkin. | |
virtual size_t | getStepsSinceLastRebuild () const |
Return the number of time-steps since last neighbor list rebuild. | |
virtual void | setStepsSinceLastRebuild (size_t stepsSinceLastRebuild) |
Set the number of time-steps since last neighbor list rebuild. | |
virtual double | getInteractionLength () const =0 |
Return the interaction length (cutoff+skin) of the container. | |
virtual std::vector< ParticleType > | updateContainer (bool keepNeighborListsValid)=0 |
Updates the container. | |
virtual TraversalSelectorInfo | getTraversalSelectorInfo () const =0 |
Generates a traversal selector info for this container. | |
std::set< TraversalOption > | getAllTraversals (const InteractionTypeOption interactionType) const |
Generates a list of all traversals that are theoretically applicable to this container. | |
virtual std::tuple< const Particle_T *, size_t, size_t > | getParticle (size_t cellIndex, size_t particleIndex, IteratorBehavior iteratorBehavior) const =0 |
Fetch the pointer to a particle, identified via a cell and particle index. | |
virtual std::tuple< const Particle_T *, size_t, size_t > | getParticle (size_t cellIndex, size_t particleIndex, IteratorBehavior iteratorBehavior, const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax) const =0 |
Fetch the pointer to a particle, identified via a cell and particle index. | |
std::tuple< Particle_T *, size_t, size_t > | getParticle (size_t cellIndex, size_t particleIndex, IteratorBehavior iteratorBehavior, const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax) |
Fetch the pointer to a particle, identified via a cell and particle index. | |
std::tuple< Particle_T *, size_t, size_t > | getParticle (size_t cellIndex, size_t particleIndex, IteratorBehavior iteratorBehavior) |
Fetch the pointer to a particle, identified via a cell and particle index. | |
virtual bool | deleteParticle (Particle_T &particle)=0 |
Deletes the given particle as long as this does not compromise the validity of the container. | |
virtual bool | deleteParticle (size_t cellIndex, size_t particleIndex)=0 |
Deletes the particle at the given index positions as long as this does not compromise the validity of the container. | |
Protected Member Functions | |
virtual void | addParticleImpl (const Particle_T &p)=0 |
Adds a particle to the container. | |
virtual void | addHaloParticleImpl (const Particle_T &haloParticle)=0 |
Adds a particle to the container that lies in the halo region of the container. | |
Protected Attributes | |
size_t | _stepsSinceLastRebuild {0} |
Stores the number of time-steps since last neighbor list rebuild. | |
double | _skin |
Skin distance a particle is allowed to move in one time-step. | |
The ParticleContainerInterface class provides a basic interface for all Containers within AutoPas.
It defines method interfaces for addition and deletion of particles, accessing general container properties and creating iterators.
Particle_T | Class for particle. |
|
inline |
Constructor.
skin | Skin distance a particle is allowed to move. |
|
delete |
Delete the copy constructor to prevent unwanted copies.
No particle container should ever be copied.
obj |
|
inline |
Adds a particle to the container that lies in the halo region of the container.
haloParticle | Particle to be added. |
checkInBox | Specifies whether a boundary check should be performed. Only disable this if the check has already been performed. |
|
protectedpure virtual |
Adds a particle to the container that lies in the halo region of the container.
This is an unsafe version of addParticle() and does not perform a boundary check.
haloParticle | Particle to be added. This particle is already checked to be outside of the bounding box. |
Implemented in autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::LinkedCellsReferences< Particle_T >.
|
inline |
Adds a particle to the container.
checkInBox | Specifies whether a boundary check should be performed. Only disable this if the check has already been performed. |
p | The particle to be added. |
|
protectedpure virtual |
Adds a particle to the container.
This is an unsafe version of addParticle() and does not perform a boundary check.
p | The particle to be added. This particle is already checked to be inside of the bounding box. |
Implemented in autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::LinkedCellsReferences< Particle_T >.
|
pure virtual |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) .
behavior | Behavior of the iterator, see IteratorBehavior. |
additionalVectors | Vectors that should be included besides the container. |
Implemented in autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) .
behavior | Behavior of the iterator, see IteratorBehavior. |
additionalVectors | Vectors that should be included besides the container. |
Implemented in autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, and autopas::VerletListsLinkedBase< Particle_T >.
|
inlinefinalvirtual |
Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) .
behavior | Behavior of the iterator, see IteratorBehavior. |
additionalVectors | Vectors that should be included besides the container. |
|
pure virtual |
Iterates over all particle multiples (e.g.
pairs, triplets) in the container using the given traversal.
traversal | The traversal to use for the iteration. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::VarVerletLists< Particle_T, NeighborList >, autopas::VerletLists< Particle_T >, and autopas::VerletListsCells< Particle_T, NeighborList >.
|
pure virtual |
Deletes all particles.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Deletes all halo particles.
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Deletes the given particle as long as this does not compromise the validity of the container.
If this is not possible the particle is just marked as deleted.
particle | Reference to the particle that is to be deleted. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
pure virtual |
Deletes the particle at the given index positions as long as this does not compromise the validity of the container.
If this is not possible the particle is just marked as deleted. If the positions do not exist the behavior is undefined.
cellIndex | |
particleIndex |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
inlineconstexpr |
Dummy to make range-based for loops work.
Range-Based for loops use the incremented begin() expression and compare it against the end() expression. ContainerIterator implements ContainerIterator::operator==() that accepts a bool as right hand side argument, which is triggered by this end() function. This operator then proceeds to check the validity of the iterator itself.
|
inline |
Generates a list of all traversals that are theoretically applicable to this container.
Traversals might still be not applicable for other reasons so call traversal.isApplicable to be safe!
interactionType | interaction type for which to get all traversals |
|
pure virtual |
Get the upper corner of the container without halo.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
pure virtual |
Get the lower corner of the container without halo.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
pure virtual |
Get the ContainerType.
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::VarVerletLists< Particle_T, NeighborList >, autopas::VerletLists< Particle_T >, and autopas::VerletListsCells< Particle_T, NeighborList >.
|
pure virtual |
Return the cutoff of the container.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
pure virtual |
Return the interaction length (cutoff+skin) of the container.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
pure virtual |
Get the number of particles with respect to the specified IteratorBehavior.
behavior | Behavior of the iterator, see IteratorBehavior. |
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
inline |
Fetch the pointer to a particle, identified via a cell and particle index.
These indices are only meaningful in the context of the current container at its current state. The same indices might (and probably will) yield different particles for different container types or might not even exist. The only guarantee is that the indices {0,0} yield the first particle in the container that satisfies the iterator requirements.
cellIndex | Index of the cell the particle is located in. |
particleIndex | Particle index within the cell. |
iteratorBehavior | Which ownership states should be considered for the next particle. |
|
pure virtual |
Fetch the pointer to a particle, identified via a cell and particle index.
These indices are only meaningful in the context of the current container at its current state. The same indices might (and probably will) yield different particles for different container types or might not even exist. The only guarantee is that the indices {0,0} yield the first particle in the container that satisfies the iterator requirements.
cellIndex | Index of the cell the particle is located in. |
particleIndex | Particle index within the cell. |
iteratorBehavior | Which ownership states should be considered for the next particle. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
inline |
Fetch the pointer to a particle, identified via a cell and particle index.
These indices are only meaningful in the context of the current container at its current state. The same indices might (and probably will) yield different particles for different container types or might not even exist. The only guarantee is that the indices {0,0} yield the first particle in the container that satisfies the iterator requirements.
cellIndex | Index of the cell the particle is located in. |
particleIndex | Particle index within the cell. |
iteratorBehavior | Which ownership states should be considered for the next particle. |
boxMin | start of region in which the next particle should be. The coordinates are expected to be within the domain. |
boxMax | end of region in which the next particle should be. The coordinates are expected to be within the domain. |
|
pure virtual |
Fetch the pointer to a particle, identified via a cell and particle index.
These indices are only meaningful in the context of the current container at its current state. The same indices might (and probably will) yield different particles for different container types or might not even exist. The only guarantee is that the indices {0,0} yield the first particle in the container that satisfies the iterator requirements.
cellIndex | Index of the cell the particle is located in. |
particleIndex | Particle index within the cell. |
iteratorBehavior | Which ownership states should be considered for the next particle. |
boxMin | start of region in which the next particle should be. The coordinates are expected to be within the domain. |
boxMax | end of region in which the next particle should be. The coordinates are expected to be within the domain. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Get the ParticleCell type as an Enum.
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) .
lowerCorner | Lower corner of the region |
higherCorner | Higher corner of the region |
behavior | The behavior of the iterator (shall it iterate over halo particles as well?). |
additionalVectors | Vectors that should be included besides the container. |
Implemented in autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::LinkedCellsReferences< Particle_T >.
|
pure virtual |
Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) .
lowerCorner | Lower corner of the region |
higherCorner | Higher corner of the region |
behavior | The behavior of the iterator (shall it iterate over halo particles as well?). |
additionalVectors | Vectors that should be included besides the container. |
Implemented in autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::LinkedCellsReferences< Particle_T >.
|
inlinevirtual |
Return the number of time-steps since last neighbor list rebuild.
|
pure virtual |
Generates a traversal selector info for this container.
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Return the verletSkin of the container verletSkin.
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
delete |
Delete the copy assignment operator to prevent unwanted copies.
No particle container should ever be copied.
other |
|
pure virtual |
Rebuilds the neighbor lists for the next traversals.
traversal | The used traversal. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::VarVerletLists< Particle_T, NeighborList >, autopas::VerletLists< Particle_T >, and autopas::VerletListsCells< Particle_T, NeighborList >.
|
pure virtual |
Reserve memory for a given number of particles in the container and logic layers.
This function assumes a uniform distribution of particles throughout the domain. For example, this means that in a LinkedCells Container in each cell vector.reserve(numParticles/numCells) is called.
numParticles | No buffer factor is applied. It is probably wise to slightly over-reserve to account for imbalance or particle movement. |
numParticlesHaloEstimate | Estimate for the number of halo particles. Reserves space in the container data structure. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Set the cutoff of the container.
cutoff |
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< Particle_T >, and autopas::VerletClusterLists< ParticleCell::ParticleType >.
|
inlinevirtual |
Set the number of time-steps since last neighbor list rebuild.
stepsSinceLastRebuild | steps since last neighbor list rebuild |
Reimplemented in autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Get the total number of particles saved in the container (owned + halo + dummy).
Implemented in autopas::CellBasedParticleContainer< ParticleCell >, autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< ReferenceParticleCell< Particle_T > >, autopas::CellBasedParticleContainer< OctreeNodeWrapper< Particle_T > >, autopas::CellBasedParticleContainer< FullParticleCell< ParticleCell::ParticleType > >, autopas::Octree< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, and autopas::VerletListsLinkedBase< Particle_T >.
|
pure virtual |
Updates the container.
This deletes halo particles, resorts particles into appropriate cells and might remove particles from the container, if necessary.
keepNeighborListsValid | Defines whether the neighbor lists have to be kept valid. |
Implemented in autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, autopas::LinkedCellsReferences< Particle_T >, autopas::VerletClusterLists< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::VerletListsLinkedBase< Particle_T >, and autopas::Octree< Particle_T >.
|
pure virtual |
Update a halo particle of the container with the given haloParticle.
haloParticle | Particle to be updated. |
Implemented in autopas::VerletClusterLists< Particle_T >, autopas::VerletListsLinkedBase< Particle_T >, autopas::VerletClusterLists< ParticleCell::ParticleType >, autopas::DirectSum< Particle_T >, autopas::LinkedCells< Particle_T >, autopas::LinkedCells< ParticleCell::ParticleType >, and autopas::LinkedCellsReferences< Particle_T >.
|
protected |
Stores the number of time-steps since last neighbor list rebuild.