39using OffsetTripletSorting = std::tuple<unsigned long, unsigned long, unsigned long, std::array<double, 3>>;
47using OffsetPair = std::pair<unsigned long, unsigned long>;
56using OffsetTriplet = std::tuple<unsigned long, unsigned long, unsigned long>;
87template <C08OffsetMode Mode>
90 std::conditional_t<Mode == C08OffsetMode::c04NoSorting, OffsetPairVector, OffsetPair>>>;
96template <C08OffsetMode Mode>
99 std::conditional_t<Mode == C08OffsetMode::c04NoSorting, OffsetTripletVector, OffsetTriplet>>>;
129 "Enum C08CellDirection was extended, but its associated switch-case statements was not!"};
168 const std::array<double, 3> &offset2Vector,
169 const std::array<double, 3> &cellLength);
185template <C08OffsetMode Mode>
187 const std::array<double, 3> &cellLength,
double interactionLength);
202template <C08OffsetMode Mode>
204 const std::array<double, 3> &cellLength,
double interactionLength);
constexpr std::array< C08CellDirection, 4 > ALL_DIRECTIONS
Array containing all four enum values of C08CellDirection.
Definition: LCC08CellHandlerUtility.h:120
constexpr char ENUM_EXTENSION_EXCEPTION[]
Error message thrown in case C08CellDirection was extended but the extension was not included in the ...
Definition: LCC08CellHandlerUtility.h:128
C08CellDirection
Represents the interaction directions between cell pairs in the C08 base step.
Definition: LCC08CellHandlerUtility.h:106
@ frontRight
The cell to the right from the origin.
@ backRight
The cell diagonally to the origin.
@ backLeft
The cell to the back from the origin.
@ frontLeft
The origin or the base cell in the four-cell-square.
constexpr std::pair< int, int > toMaskXY(const C08CellDirection &direction)
Helper function for autopas::LCC08CellHandlerUtility::computePairwiseCellOffsetsC08.
Definition: LCC08CellHandlerUtility.cpp:21
constexpr bool includeCellPair(const C08CellDirection &direction, const std::array< int, 3 > &overlap, int x, int y, int z)
Returns true if the cell-interaction in the given direction, with the given base cell coordinates (x,...
Definition: LCC08CellHandlerUtility.cpp:35
std::array< double, 3 > computeSortingDirection(const std::array< double, 3 > &offset1Vector, const std::array< double, 3 > &offset2Vector, const std::array< double, 3 > &cellLength)
Computes the sorting direction between two cells from center of cell1 to center of cell2 using the 3D...
Definition: LCC08CellHandlerUtility.cpp:50
Helper function and type aliases for the C08 base step traversal.
Definition: LCC08CellHandlerUtility.cpp:17
std::vector< std::conditional_t< Mode==C08OffsetMode::sorting, OffsetPairSorting, std::conditional_t< Mode==C08OffsetMode::c04NoSorting, OffsetPairVector, OffsetPair > > > OffsetPairType
Template Magic Parameter Alias, which links the types OffsetPairSorting, OffsetPair and OffsetPairVec...
Definition: LCC08CellHandlerUtility.h:90
std::tuple< unsigned long, unsigned long, unsigned long > OffsetTriplet
An offset is the distance from a base cell to another cell in one-dimensional coordinates.
Definition: LCC08CellHandlerUtility.h:56
std::pair< unsigned long, unsigned long > OffsetPair
An offset is the distance from a base cell to another cell in one dimensional coordinates.
Definition: LCC08CellHandlerUtility.h:47
std::vector< std::conditional_t< Mode==C08OffsetMode::sorting, OffsetTripletSorting, std::conditional_t< Mode==C08OffsetMode::c04NoSorting, OffsetTripletVector, OffsetTriplet > > > OffsetTripletType
Template Magic Parameter Alias, which links the types OffsetTripletSorting, OffsetTriplet and OffsetT...
Definition: LCC08CellHandlerUtility.h:99
OffsetTripletType< Mode > computeTriwiseCellOffsetsC08(const std::array< unsigned long, 3 > &cellsPerDimension, const std::array< double, 3 > &cellLength, const double interactionLength)
Computes the cell triplet offsets for the C08 base step.
Definition: LCC08CellHandlerUtility.cpp:161
OffsetPairType< Mode > computePairwiseCellOffsetsC08(const std::array< unsigned long, 3 > &cellsPerDimension, const std::array< double, 3 > &cellLength, const double interactionLength)
Computes the cell pair offsets for the C08 base step and the normalized vector between the pair of ce...
Definition: LCC08CellHandlerUtility.cpp:67
std::tuple< unsigned long, unsigned long, std::array< double, 3 > > OffsetPairSorting
Type Alias for the C08 base step containing cell offsets.
Definition: LCC08CellHandlerUtility.h:27
std::vector< OffsetTriplet > OffsetTripletVector
A vector of OffsetTriplets.
Definition: LCC08CellHandlerUtility.h:66
std::tuple< unsigned long, unsigned long, unsigned long, std::array< double, 3 > > OffsetTripletSorting
Type Alias for the C08 base step containing cell offsets for cell triplets.
Definition: LCC08CellHandlerUtility.h:39
std::vector< OffsetPair > OffsetPairVector
A vector of OffsetPairs.
Definition: LCC08CellHandlerUtility.h:61
C08OffsetMode
Compile Time Modes for the function autopas::LCC08CellHandlerUtility::computePairwiseCellOffsetsC08.
Definition: LCC08CellHandlerUtility.h:74
@ noSorting
Returns the C08 base step cell pairs without sorting.
@ sorting
Returns the C08 base step cell pairs with sorting directions (for SortedView projection)
@ c04NoSorting
Returns the C08 base step cell pairs adapted to C04, i.e.