|
| OctreeInnerNode (const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax, OctreeNodeInterface< Particle_T > *parent, int unsigned treeSplitThreshold, double interactionLength, double cellSizeFactor) |
| Create an octree inner node that points to eight leaves.
|
|
| OctreeInnerNode (const OctreeInnerNode< Particle_T > &other) |
| Copy all children from the other octree into this octree.
|
|
std::unique_ptr< OctreeNodeInterface< Particle_T > > | insert (const Particle_T &p) override |
| Insert a particle into the octree.
|
|
bool | deleteParticle (Particle_T &particle) override |
| Delete the given particle from the data structure.
|
|
void | collectAllParticles (std::vector< Particle_T * > &ps) const override |
| Put all particles that are below this node into the vector.
|
|
void | appendAllLeafBoxes (std::vector< std::pair< std::array< double, 3 >, std::array< double, 3 > > > &boxes) const override |
| Put the min/max corner coordinates of every leaf into the vector.
|
|
void | clearChildren (std::unique_ptr< OctreeNodeInterface< Particle_T > > &ref) override |
| Delete the entire tree below this node.
|
|
size_t | size () const override |
| Get the total number of particles saved in the container (owned + halo + dummy).
|
|
size_t | getNumberOfParticles (IteratorBehavior behavior) const override |
| Get the number of particles with respect to the specified IteratorBehavior.
|
|
bool | hasChildren () override |
| Check if the node is a leaf or an inner node.
|
|
OctreeNodeInterface< Particle_T > * | getChild (int index) override |
| Get a child by its index from the node.
|
|
std::vector< OctreeLeafNode< Particle_T > * > | getLeavesFromDirections (const std::vector< octree::Vertex > &directions) override |
| Find all leaf nodes along a list of given directions.
|
|
OctreeNodeInterface< Particle_T > * | SON (octree::Octant octant) override |
| Get a child node of this node (if there are children) given a specific octant using the spacial structure of the stored children.
|
|
void | appendAllLeaves (std::vector< OctreeLeafNode< Particle_T > * > &leaves) const override |
| Put all leaves below this subtree into a given list.
|
|
std::set< OctreeLeafNode< Particle_T > * > | getLeavesInRange (const std::array< double, 3 > &min, const std::array< double, 3 > &max) override |
| Find all leaves below this subtree that are in the given range.
|
|
template<typename Lambda > |
void | forEach (Lambda forEachLambda) |
| Apply the forEach lambda to each particle.
|
|
template<typename Lambda , typename A > |
void | reduce (Lambda reduceLambda, A &result) |
| Apply the reduce lambda to each particle.
|
|
template<typename Lambda > |
void | forEach (Lambda forEachLambda, const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior) |
| Apply the forEach lambda to each particle in the region.
|
|
template<typename Lambda , typename A > |
void | reduce (Lambda reduceLambda, A &result, const std::array< double, 3 > &lowerCorner, const std::array< double, 3 > &higherCorner, IteratorBehavior behavior) |
| Apply the reduce lambda to each particle in the region.
|
|
| OctreeNodeInterface (const std::array< double, 3 > &boxMin, const std::array< double, 3 > &boxMax, OctreeNodeInterface< Particle_T > *parent, const int unsigned treeSplitThreshold, const double interactionLength, const double cellSizeFactor) |
| Create an octree node interface by initializing the given fields.
|
|
virtual | ~OctreeNodeInterface ()=default |
| To make clang happy.
|
|
| OctreeNodeInterface (const OctreeNodeInterface< Particle_T > &)=default |
| Default copy constructor.
|
|
virtual std::unique_ptr< OctreeNodeInterface< Particle_T > > | insert (const Particle_T &p)=0 |
| Insert a particle into the octree.
|
|
virtual bool | deleteParticle (Particle_T &particle)=0 |
| Delete the given particle from the data structure.
|
|
virtual void | collectAllParticles (std::vector< Particle_T * > &ps) const =0 |
| Put all particles that are below this node into the vector.
|
|
virtual void | appendAllLeafBoxes (std::vector< std::pair< std::array< double, 3 >, std::array< double, 3 > > > &boxes) const =0 |
| Put the min/max corner coordinates of every leaf into the vector.
|
|
virtual void | appendAllLeaves (std::vector< OctreeLeafNode< Particle_T > * > &leaves) const =0 |
| Put all leaves below this subtree into a given list.
|
|
virtual void | clearChildren (std::unique_ptr< OctreeNodeInterface< Particle_T > > &ref)=0 |
| Delete the entire tree below this node.
|
|
virtual size_t | size () const =0 |
| Get the total number of particles saved in the container (owned + halo + dummy).
|
|
virtual size_t | getNumberOfParticles (IteratorBehavior behavior=IteratorBehavior::owned) const =0 |
| Get the number of particles with respect to the specified IteratorBehavior.
|
|
virtual OctreeNodeInterface< Particle_T > * | SON (octree::Octant O)=0 |
| Get a child node of this node (if there are children) given a specific octant using the spacial structure of the stored children.
|
|
virtual bool | hasChildren ()=0 |
| Check if the node is a leaf or an inner node.
|
|
virtual OctreeNodeInterface< Particle_T > * | getChild (int index)=0 |
| Get a child by its index from the node.
|
|
virtual std::set< OctreeLeafNode< Particle_T > * > | getLeavesInRange (const std::array< double, 3 > &min, const std::array< double, 3 > &max)=0 |
| Find all leaves below this subtree that are in the given range.
|
|
bool | isInside (const std::array< double, 3 > &point) |
| Check if a 3d point is inside the node's axis aligned bounding box.
|
|
bool | enclosesVolumeWithOtherOnAxis (const int axis, const OctreeNodeInterface< Particle_T > *other) |
| Check if an octree node's box encloses volume with another octree node's box on a specific axis.
|
|
bool | overlapsBox (const std::array< double, 3 > &otherMin, const std::array< double, 3 > &otherMax) |
| Check if the node's axis aligned bounding box overlaps with the given axis aligned bounding box.
|
|
double | getEnclosedVolumeWith (const std::array< double, 3 > &otherMin, const std::array< double, 3 > &otherMax) |
| Calculate the overlap volume between the node's axis aligned bounding box and the given box.
|
|
OctreeNodeInterface< Particle_T > * | EQ_FACE_NEIGHBOR (const octree::Face I) |
| Find a node (via the pointer structure) that is of equal size of the current node's bounding box, according to the Samet paper.
|
|
OctreeNodeInterface< Particle_T > * | EQ_EDGE_NEIGHBOR (const octree::Edge I) |
| Find a node (via the pointer structure) that is of equal size of the current node's bounding box, according to the Samet paper.
|
|
OctreeNodeInterface< Particle_T > * | EQ_VERTEX_NEIGHBOR (const octree::Vertex I) |
| Find a node (via the pointer structure) that is of equal size of the current node's bounding box, according to the Samet paper.
|
|
OctreeNodeInterface< Particle_T > * | GTEQ_FACE_NEIGHBOR (octree::Face I) |
| Find a node (via the pointer structure) that is of greater than or equal to the size of the current node's bounding box, according to the Samet paper.
|
|
OctreeNodeInterface< Particle_T > * | GTEQ_EDGE_NEIGHBOR (octree::Edge I) |
| Find a node (via the pointer structure) that is of greater than or equal to the size of the current node's bounding box, according to the Samet paper.
|
|
OctreeNodeInterface< Particle_T > * | GTEQ_VERTEX_NEIGHBOR (octree::Vertex I) |
| Find a node (via the pointer structure) that is of greater than or equal to the size of the current node's bounding box, according to the Samet paper.
|
|
virtual std::vector< OctreeLeafNode< Particle_T > * > | getLeavesFromDirections (const std::vector< octree::Vertex > &directions)=0 |
| Find all leaf nodes along a list of given directions.
|
|
std::vector< OctreeLeafNode< Particle_T > * > | getNeighborLeaves (const octree::Any direction) |
| This function combines all required functions when traversing down a subtree of the octree and finding all leaves.
|
|
std::set< OctreeLeafNode< Particle_T > * > | getNeighborLeaves () |
| Get the neighbor leaves in all directions.
|
|
const std::array< double, 3 > & | getBoxMin () const |
| Get the minimum coordinate of the enclosing box.
|
|
const std::array< double, 3 > & | getBoxMax () const |
| Get the maximum coordinate of the enclosing box.
|
|
OctreeNodeInterface< Particle_T > * | getParent () const |
| Get the parent node of this node.
|
|
template<class Particle_T>
class autopas::OctreeInnerNode< Particle_T >
Inner nodes of the octree data structure.
An inner node always points to eight children, which can either be leaves or inner nodes as well.
- Template Parameters
-