Dynamic symmetry group. More...
#include <DynamicSymmetry.h>
Classes | |
struct | Generator |
struct | GroupElement |
Public Member Functions | |
void | add (int one, int two, int flags=0) |
template<typename Gen_ > | |
void | add (Gen_) |
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_ , 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 |
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 (GroupElement, GroupElement) const |
GroupElement | mul (Generator g1, GroupElement g2) const |
GroupElement | mul (GroupElement g1, Generator g2) const |
GroupElement | mul (Generator g1, Generator g2) 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 15 of file DynamicSymmetry.h.
|
inlineexplicit |
Definition at line 18 of file DynamicSymmetry.h.
|
inline |
Definition at line 19 of file DynamicSymmetry.h.
|
inline |
Definition at line 20 of file DynamicSymmetry.h.
|
inline |
Definition at line 195 of file DynamicSymmetry.h.
|
inline |
Definition at line 27 of file DynamicSymmetry.h.
|
inline |
Definition at line 31 of file DynamicSymmetry.h.
|
inline |
Definition at line 29 of file DynamicSymmetry.h.
|
inline |
Definition at line 30 of file DynamicSymmetry.h.
|
inline |
Definition at line 28 of file DynamicSymmetry.h.
|
inline |
Definition at line 34 of file DynamicSymmetry.h.
|
inline |
Definition at line 43 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 140 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 108 of file DynamicSymmetry.h.
|
inline |
Definition at line 51 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 91 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 97 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 179 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 125 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 130 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 135 of file DynamicSymmetry.h.
|
inline |
Definition at line 55 of file DynamicSymmetry.h.
|
inline |
Definition at line 62 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 52 of file DynamicSymmetry.h.
|
inlineprivate |
Definition at line 260 of file DynamicSymmetry.h.
|
private |
Definition at line 86 of file DynamicSymmetry.h.
|
private |
Definition at line 87 of file DynamicSymmetry.h.
|
private |
Definition at line 88 of file DynamicSymmetry.h.
|
private |
Definition at line 85 of file DynamicSymmetry.h.