Class representing the container choices. More...
#include <ContainerOption.h>
Public Types | |
enum | Value { directSum , linkedCells , linkedCellsReferences , varVerletListsAsBuild , verletClusterLists , verletLists , verletListsCells , pairwiseVerletLists , octree } |
Possible choices for the particle container type. More... | |
Public Member Functions | |
ContainerOption ()=default | |
Constructor. | |
constexpr | ContainerOption (Value option) |
Constructor from value. | |
constexpr | operator Value () const |
Cast to value. | |
![]() | |
operator bool ()=delete | |
Prevents cast to bool by deleting the conversion operator. | |
std::string | to_string (bool fixedLength=false) const |
Converts an Option object to its respective string representation. | |
Static Public Member Functions | |
static std::set< ContainerOption > | getDiscouragedOptions () |
Set of options that are very unlikely to be interesting. | |
static std::map< ContainerOption, std::string > | getOptionNames () |
Provides a way to iterate over the possible choices of ContainerOption. | |
![]() | |
static std::set< ContainerOption > | getAllOptions () |
Provides a way to iterate over the possible options. | |
static std::set< ContainerOption > | getMostOptions () |
Provides a way to iterate over the possible options minus those that are very unlikely to be on interest. | |
static size_t | maxStringLength () |
Returns the number of characters in the string representation of the longest option. | |
static OutputContainer | parseOptions (const std::string &optionsString) |
Converts a string of options to a set of enums. | |
static ContainerOption | parseOptionExact (const std::string &optionString) |
Converts a string to an enum. | |
Class representing the container choices.
Possible choices for the particle container type.
Enumerator | |
---|---|
directSum | DirectSum : O(N^2) distance check of all particles and summation of those in cutoff. Minimal overhead but bad complexity. |
linkedCells | LinkedCells : Segmentation of the domain into a regular cell grid. Only interactions with particles from neighbor cells are considered. Good data locality and vectorizability but low hit rate of particles in cutoff. |
linkedCellsReferences | LinkedCellsReferences : Same algorithm as LinkedCells but stores all particles in one big vector. Cells only contain references to this vector. |
varVerletListsAsBuild | VarVerletLists interface with neighbor list type VerletNeighborListAsBuild : Same algorithm as VerletLists. Remembers which thread created the neighbor list of each particle to exploit this information to avoid data races during the parallel force calculation. |
verletClusterLists | VerletClusterLists : Particles are grouped in clusters of fixed size. Similar to VerletLists for every cluster a list of neighbor clusters is generated. Clusters always interact with whole clusters so vectorization is possible. |
verletLists | VerletLists : Built on top of LinkedCells, a neighbor list is generated for every particle and updated in fixed intervals. Memory access, also in SoA mode is scattered but high hit rate of particles in cutoff. |
verletListsCells | VerletListsCells : Similar to VerletLists but Lists are associated with the underlying cells to achieve location information. Parallelization options similar to LinkedCells. |
pairwiseVerletLists | PairwiseVerletLists : Also similar to VerletLists but the lists are associated to each pair of neighboring cells. Improves data locality and cache efficiency. |
octree | Octree : Particles are put into an octree. This data structure is optimized if the data is non-uniformly distributed since it is space adaptive |
|
inlineconstexpr |
Constructor from value.
option |
|
inlinestatic |
Set of options that are very unlikely to be interesting.
|
inlinestatic |
Provides a way to iterate over the possible choices of ContainerOption.
|
inlineconstexpr |
Cast to value.