compbio
|
Static symmetry group. More...
#include <Symmetry.h>
Public Member Functions | |
constexpr | StaticSGroup (const StaticSGroup< Gen... > &) |
constexpr | StaticSGroup (StaticSGroup< Gen... > &&) |
template<typename Tensor_ , typename... IndexTypes> | |
internal::tensor_symmetry_value_setter< Tensor_, StaticSGroup< Gen... > > | operator() (Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes... otherIndices) const |
template<typename Tensor_ > | |
internal::tensor_symmetry_value_setter< Tensor_, StaticSGroup< Gen... > > | operator() (Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const |
Static Public Member Functions | |
template<typename Op , typename RV , typename Index , std::size_t N, typename... Args> | |
static RV | apply (const std::array< Index, N > &idx, RV initial, Args &&... args) |
template<typename Op , typename RV , typename Index , typename... Args> | |
static RV | apply (const std::vector< Index > &idx, RV initial, Args &&... args) |
static constexpr std::size_t | size () |
static constexpr int | globalFlags () |
Static Public Attributes | |
static constexpr std::size_t | static_size = ge::count |
Static symmetry group.
This class represents a symmetry group that is known and resolved completely at compile time. Ideally, no run-time penalty is incurred compared to the manual unrolling of the symmetry.
CAUTION:
Do not use this class directly for large symmetry groups. The compiler may run into a limit, or segfault or in the very least will take a very, very, very long time to compile the code. Use the SGroup class instead if you want a static group. That class contains logic that will automatically select the DynamicSGroup class instead if the symmetry group becomes too large. (In that case, unrolling may not even be beneficial.)