AutoPas  3.0.0
Loading...
Searching...
No Matches
Namespaces | Typedefs | Enumerations | Functions | Variables
OctreeDirection.h File Reference
This graph shows which files directly or indirectly include this file:

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< Octantautopas::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().
 

Detailed Description

Author
Johannes Spies
Date
18.05.2021