Go to the source code of this file.
Namespaces | |
namespace | autopas |
This is the main namespace of AutoPas. | |
namespace | autopas::octree |
Namespace that contains code that is used by the octree internally. | |
namespace | autopas::octree::Tables |
This namespace contains all tables that can be used publicly. | |
namespace | autopas::octree::anonymous_namespace{OctreeDirection.h} |
This namespace contains the tables that are anonymous within this file. | |
Typedefs | |
using | autopas::octree::Any = int unsigned |
A datatype that is wide enough to hold faces, edges or vertices. | |
using | autopas::octree::Octant = Vertex |
A vertex is also capable of specifying an arbitrary octant in 3D. | |
Enumerations | |
enum | autopas::octree::Face : Any { O = 0 , L = 1 , R = 2 , D = 3 , U = 4 , B = 5 , F = 6 } |
This enum can be used to index the faces of a cube including an "invalid" face. | |
enum | autopas::octree::Edge : Any { OO = 0 , LD = buildEdge<L, D>() , LU = buildEdge<L, U>() , LB = buildEdge<L, B>() , LF = buildEdge<L, F>() , RD = buildEdge<R, D>() , RU = buildEdge<R, U>() , RB = buildEdge<R, B>() , RF = buildEdge<R, F>() , DB = buildEdge<D, B>() , DF = buildEdge<D, F>() , UB = buildEdge<U, B>() , UF = buildEdge<U, F>() } |
This enum can be used to index all edges of a cube including an "invalid" edge. | |
enum | autopas::octree::Vertex : Any { OOO = 0 , LDB = buildVertex<L, D, B>() , LDF = buildVertex<L, D, F>() , LUB = buildVertex<L, U, B>() , LUF = buildVertex<L, U, F>() , RDB = buildVertex<R, D, B>() , RDF = buildVertex<R, D, F>() , RUB = buildVertex<R, U, B>() , RUF = buildVertex<R, U, F>() } |
This enum can be used to index all vertices of a cube including an "invalid" vertex. | |
Functions | |
template<Face f1, Face f2> | |
static constexpr Any | autopas::octree::buildEdge () |
Create a bitfield for an edge given by the template parameters. | |
template<Face f1, Face f2, Face f3> | |
static constexpr Any | autopas::octree::buildVertex () |
Create a bitfield for a vertex given by the template parameters. | |
int | autopas::octree::vertexToIndex (Vertex vertex) |
Map an arbitrary vertex to a flat index. | |
template<typename T > | |
bool | autopas::octree::isFace (T f) |
Check if f is a face. | |
template<typename T > | |
bool | autopas::octree::isEdge (T e) |
Check if e is an edge. | |
template<typename T > | |
bool | autopas::octree::isVertex (T v) |
Check if v is a vertex. | |
constexpr std::array< std::array< bool, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createADJTable () |
A constexpr for creating the table for ADJ() . | |
constexpr std::array< std::array< Octant, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createREFLECTTable () |
A constexpr for creating the table for REFLECT() . | |
constexpr std::array< std::array< Face, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createCOMMONFACETable () |
A constexpr for creating the table for COMMON_FACE() . | |
constexpr std::array< std::array< Edge, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createCOMMONEDGETable () |
A constexpr for creating the table for COMMON_EDGE() . | |
constexpr std::array< Any, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createOppositeDirectionTable () |
A constexpr for creating the table for getOppositeDirection() . | |
constexpr std::array< std::array< Octant, 5 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::createAllowedDirectionsTable () |
A constexpr for creating the table for getAllowedDirections() . | |
bool | autopas::octree::ADJ (Any direction, Vertex octant) |
This function implements a LUT obtained from the Samet paper: "ADJ(I,O) is true if and only if octant O is adjacent to the Ith face, edge, or vertex of O's containing block". | |
Octant | autopas::octree::REFLECT (Any direction, Octant octant) |
This function implements a LUT obtained from the Samet paper: "REFLECT(I,O) yields the SONTYPE value of the block of equal size (not necessarily a brother) that shares the Ith
face, edge, or vertex of a block having SONTYPE value O". | |
Face | autopas::octree::COMMON_FACE (Any direction, Vertex octant) |
This function implements a LUT obtained from the Samet paper: "COMMON_FACE(I,O) yields the type on the face (i.e., label), of O's containing block, that is common to octant O and its neighbor in the Ith direction. | |
Edge | autopas::octree::COMMON_EDGE (Any direction, Vertex octant) |
This function implements a LUT obtained from the Samet paper: "COMMON_EDGE(I,O) yields the type of the edge (i.e., label), of O's containing block, that is common to octant O and its neighbor in the Ith direction. | |
Any | autopas::octree::getOppositeDirection (Any direction) |
Convert any direction to a direction that is directly opposing the given direction. | |
std::vector< Octant > | autopas::octree::getAllowedDirections (Any along) |
Get a list of octants that are along the given direction. | |
Variables | |
static constexpr std::array< Face, 6 > | autopas::octree::Tables::faces = {L, R, D, U, B, F} |
All available faces for a cube. | |
static constexpr std::array< Edge, 12 > | autopas::octree::Tables::edges = {LD, LU, LB, LF, RD, RU, RB, RF, DB, DF, UB, UF} |
All available edges for a cube. | |
static constexpr std::array< Vertex, 8 > | autopas::octree::Tables::vertices = {LDB, LDF, LUB, LUF, RDB, RDF, RUB, RUF} |
All available vertices for a cube. | |
constexpr std::array< std::array< bool, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::adjTable = createADJTable() |
A LUT containing the entries for ADJ() . | |
constexpr std::array< std::array< Octant, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::reflectTable = createREFLECTTable() |
A LUT containing the entries for REFLECT() . | |
constexpr std::array< std::array< Face, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::commonFaceTable = createCOMMONFACETable() |
A LUT containing the entries for COMMON_FACE() . | |
constexpr std::array< std::array< Edge, 8 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::commonEdgeTable = createCOMMONEDGETable() |
A LUT containing the entries for COMMON_EDGE() . | |
constexpr std::array< Any, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::oppositeDirectionTable = createOppositeDirectionTable() |
A LUT containing the entries for getOppositeDirection() . | |
constexpr std::array< std::array< Octant, 5 >, 1<< 9 > | autopas::octree::anonymous_namespace{OctreeDirection.h}::allowedDirectionsTable = createAllowedDirectionsTable() |
A LUT containing the entries for getAllowedDirections() . | |