Dynamic symmetry group. More...
Classes | |
struct | Generator |
struct | GroupElement |
Public Member Functions | |
template<typename Gen_ > | |
void | add (Gen_) |
void | add (int one, int two, int flags=0) |
void | addAntiHermiticity (int one, int two) |
void | addAntiSymmetry (int one, int two) |
void | addHermiticity (int one, int two) |
void | addSymmetry (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 |
DynamicSGroup () | |
DynamicSGroup (const DynamicSGroup &o) | |
DynamicSGroup (DynamicSGroup &&o) | |
int | globalFlags () const |
template<typename Tensor_ > | |
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > | operator() (Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const |
template<typename Tensor_ , typename... IndexTypes> | |
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > | operator() (Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes... otherIndices) const |
DynamicSGroup & | operator= (const DynamicSGroup &o) |
DynamicSGroup & | operator= (DynamicSGroup &&o) |
std::size_t | size () const |
Private Member Functions | |
int | findElement (GroupElement e) const |
GroupElement | ge (Generator const &g) const |
template<typename Index , std::size_t N, int... n> | |
std::array< Index, N > | h_permute (std::size_t which, const std::array< Index, N > &idx, internal::numeric_list< int, n... >) const |
template<typename Index > | |
std::vector< Index > | h_permute (std::size_t which, std::vector< Index > idx) const |
GroupElement | mul (Generator g1, Generator g2) const |
GroupElement | mul (Generator g1, GroupElement g2) const |
GroupElement | mul (GroupElement g1, Generator g2) const |
GroupElement | mul (GroupElement, GroupElement) const |
void | updateGlobalFlags (int flagDiffOfSameGenerator) |
Private Attributes | |
std::vector< GroupElement > | m_elements |
std::vector< Generator > | m_generators |
int | m_globalFlags |
std::size_t | m_numIndices |
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.
Definition at line 17 of file DynamicSymmetry.h.
|
inlineexplicit |
Definition at line 20 of file DynamicSymmetry.h.
|
inline |
Definition at line 21 of file DynamicSymmetry.h.
|
inline |
Definition at line 22 of file DynamicSymmetry.h.
|
inline |
Definition at line 29 of file DynamicSymmetry.h.
|
inline |
Definition at line 197 of file DynamicSymmetry.h.
|
inline |
Definition at line 33 of file DynamicSymmetry.h.
|
inline |
Definition at line 31 of file DynamicSymmetry.h.
|
inline |
Definition at line 32 of file DynamicSymmetry.h.
|
inline |
Definition at line 30 of file DynamicSymmetry.h.
|
inline |
Definition at line 36 of file DynamicSymmetry.h.
|
inline |
Definition at line 45 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 142 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 110 of file DynamicSymmetry.h.
|
inline |
Definition at line 53 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 93 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 99 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 137 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 127 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 132 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 181 of file DynamicSymmetry.h.
|
inline |
Definition at line 64 of file DynamicSymmetry.h.
|
inline |
Definition at line 57 of file DynamicSymmetry.h.
|
inline |
Definition at line 23 of file DynamicSymmetry.h.
|
inline |
Definition at line 24 of file DynamicSymmetry.h.
|
inline |
Definition at line 54 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 262 of file DynamicSymmetry.h.
|
private |
Definition at line 88 of file DynamicSymmetry.h.
|
private |
Definition at line 89 of file DynamicSymmetry.h.
|
private |
Definition at line 90 of file DynamicSymmetry.h.
|
private |
Definition at line 87 of file DynamicSymmetry.h.