compbio
|
Dynamic symmetry group. More...
#include <Symmetry.h>
Public Member Functions | |
DynamicSGroup (const DynamicSGroup &o) | |
DynamicSGroup (DynamicSGroup &&o) | |
DynamicSGroup & | operator= (const DynamicSGroup &o) |
DynamicSGroup & | operator= (DynamicSGroup &&o) |
void | add (int one, int two, int flags=0) |
template<typename Gen_ > | |
void | add (Gen_) |
void | addSymmetry (int one, int two) |
void | addAntiSymmetry (int one, int two) |
void | addHermiticity (int one, int two) |
void | addAntiHermiticity (int one, int two) |
template<typename Op , typename RV , typename Index , std::size_t N, typename... Args> | |
RV | apply (const std::array< Index, N > &idx, RV initial, Args &&... args) const |
template<typename Op , typename RV , typename Index , typename... Args> | |
RV | apply (const std::vector< Index > &idx, RV initial, Args &&... args) const |
int | globalFlags () const |
std::size_t | size () const |
template<typename Tensor_ , typename... IndexTypes> | |
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > | operator() (Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes... otherIndices) const |
template<typename Tensor_ > | |
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > | operator() (Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const |
Dynamic symmetry group.
The DynamicSGroup class represents a symmetry group that need not be known at compile time. It is useful if one wants to support arbitrary run-time defineable symmetries for tensors, but it is also instantiated if a symmetry group is defined at compile time that would be either too large for the compiler to reasonably generate (using templates to calculate this at compile time is very inefficient) or that the compiler could generate the group but that it wouldn't make sense to unroll the loop for setting coefficients anymore.