|
| DirectSum (const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax, double cutoff, double skin, unsigned int verletRebuildFrequency) |
| Constructor of the DirectSum class.
|
|
ContainerOption | getContainerType () const override |
| Get the ContainerType.
|
|
void | reserve (size_t numParticles, size_t numParticlesHaloEstimate) override |
| Reserve memory for a given number of particles in the container and logic layers.
|
|
void | addParticleImpl (const ParticleType &p) override |
| Adds a particle to the container.
|
|
void | addHaloParticleImpl (const ParticleType &haloParticle) override |
| Adds a particle to the container that lies in the halo region of the container.
|
|
bool | updateHaloParticle (const ParticleType &haloParticle) override |
| Update a halo particle of the container with the given haloParticle.
|
|
void | deleteHaloParticles () override |
| Deletes all halo particles.
|
|
void | rebuildNeighborLists (TraversalInterface *traversal) override |
| Rebuilds the neighbor lists for the next traversals.
|
|
CellType | getParticleCellTypeEnum () const override |
| Get the ParticleCell type as an Enum.
|
|
void | computeInteractions (TraversalInterface *traversal) override |
| Iterates over all particle multiples (e.g.
|
|
std::vector< ParticleType > | updateContainer (bool keepNeighborListsValid) override |
| Updates the container.
|
|
TraversalSelectorInfo | getTraversalSelectorInfo () const override |
| Generates a traversal selector info for this container.
|
|
ContainerIterator< ParticleType, true, false > | begin (IteratorBehavior behavior=autopas::IteratorBehavior::ownedOrHalo, typename ContainerIterator< ParticleType, true, false >::ParticleVecType *additionalVectors=nullptr) override |
| Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) .
|
|
ContainerIterator< ParticleType, false, false > | begin (IteratorBehavior behavior=autopas::IteratorBehavior::ownedOrHalo, typename ContainerIterator< ParticleType, false, false >::ParticleVecType *additionalVectors=nullptr) const override |
| Iterate over all particles using for(auto iter = container.begin(); iter.isValid(); ++iter) .
|
|
template<typename Lambda > |
void | forEach (Lambda forEachLambda, IteratorBehavior behavior) |
| Execute code on all particles in this container as defined by a lambda function.
|
|
template<typename Lambda , typename A > |
void | reduce (Lambda reduceLambda, A &result, IteratorBehavior behavior) |
| Reduce properties of particles as defined by a lambda function.
|
|
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) override |
| Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) .
|
|
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 override |
| Iterate over all particles in a specified region for(auto iter = container.getRegionIterator(lowCorner, highCorner);iter.isValid();++iter) .
|
|
template<typename Lambda > |
void | forEachInRegion (Lambda forEachLambda, const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior) |
| Execute code on all particles in this container in a certain region as defined by a lambda function.
|
|
template<typename Lambda , typename A > |
void | reduceInRegion (Lambda reduceLambda, A &result, const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior) |
| Execute code on all particles in this container in a certain region as defined by a lambda function.
|
|
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 override |
| Fetch the pointer to a particle, identified via a cell and particle index.
|
|
std::tuple< const Particle_T *, size_t, size_t > | getParticle (size_t cellIndex, size_t particleIndex, IteratorBehavior iteratorBehavior) const override |
| Fetch the pointer to a particle, identified via a cell and particle index.
|
|
bool | deleteParticle (Particle_T &particle) override |
| Deletes the given particle as long as this does not compromise the validity of the container.
|
|
bool | deleteParticle (size_t cellIndex, size_t particleIndex) override |
| Deletes the particle at the given index positions as long as this does not compromise the validity of the container.
|
|
Public Member Functions inherited from autopas::CellBasedParticleContainer< FullParticleCell< Particle_T > > |
| CellBasedParticleContainer (const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax, const double cutoff, double skin, unsigned int rebuildFrequency) |
| Constructor of CellBasedParticleContainer.
|
|
| CellBasedParticleContainer (const CellBasedParticleContainer &obj)=delete |
| Delete the copy constructor to prevent unwanted copies.
|
|
| ~CellBasedParticleContainer () override=default |
| Destructor of CellBasedParticleContainer.
|
|
CellBasedParticleContainer & | operator= (const CellBasedParticleContainer &other)=delete |
| Delete the copy assignment operator to prevent unwanted copies No particle container should ever be copied.
|
|
const std::array< double, 3 > & | getBoxMax () const final |
| Get the upper corner of the container without halo.
|
|
const std::array< double, 3 > & | getBoxMin () const final |
| Get the lower corner of the container without halo.
|
|
double | getCutoff () const final |
| Return the cutoff of the container.
|
|
void | setCutoff (double cutoff) final |
| Set the cutoff of the container.
|
|
double | getInteractionLength () const final |
| Return the interaction length (cutoff+skin) of the container.
|
|
double | getVerletSkin () const final |
| Returns the verlet Skin length.
|
|
void | deleteAllParticles () override |
| Deletes all particles from the container.
|
|
size_t | getNumberOfParticles (IteratorBehavior behavior) const override |
| Get the number of particles with respect to the specified IteratorBehavior.
|
|
size_t | size () const override |
| Get the total number of particles saved in the container (owned + halo + dummy).
|
|
const std::vector< FullParticleCell< Particle_T > > & | getCells () const |
| Get immutable vector of cells.
|
|
Public Member Functions inherited from autopas::ParticleContainerInterface< ParticleCell::ParticleType > |
virtual CellType | getParticleCellTypeEnum () const=0 |
| Get the ParticleCell type as an Enum.
|
|
| ParticleContainerInterface (double skin) |
| Constructor.
|
|
| ParticleContainerInterface (const ParticleContainerInterface &obj)=delete |
| Delete the copy constructor to prevent unwanted copies.
|
|
virtual | ~ParticleContainerInterface ()=default |
| Destructor of ParticleContainerInterface.
|
|
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.
|
|
void | addParticle (const ParticleCell::ParticleType &p) |
| Adds a particle to the container.
|
|
void | addHaloParticle (const ParticleCell::ParticleType &haloParticle) |
| Adds a particle to the container that lies in the halo region of the container.
|
|
virtual bool | updateHaloParticle (const ParticleCell::ParticleType &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 ParticleCell::ParticleType *, 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 ParticleCell::ParticleType *, 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< ParticleCell::ParticleType *, 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< ParticleCell::ParticleType *, 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 (ParticleCell::ParticleType &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.
|
|
template<class Particle_T>
class autopas::DirectSum< Particle_T >
This class stores all owned particles in a single cell.
Interactions are calculated directly, such that each particle interacts with every other particle. Use this class only if you have a very small amount of particles at hand.
The surrounding halo volume is decomposed into six halo cells. This is done, so that cell sorting can be used for interactions with halo particles. The volumes are not equal in size, which should not matter since we only use a sequential traversal (so far). The image below shows how the halo volume is split up:
The image above depicts the segmentation of the surrounding halo volume into six cells, one cell on every side, where the halo cell centers always align with the owned cell center.
- Template Parameters
-
Particle_T | Particle type that is used with this container. |