Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
Eigen::DynamicSGroup Class Reference

Dynamic symmetry group. More...

#include <DynamicSymmetry.h>

Inheritance diagram for Eigen::DynamicSGroup:
Inheritance graph
[legend]

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_, DynamicSGroupoperator() (Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes...otherIndices) const
 
template<typename Tensor_ >
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroupoperator() (Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const
 
DynamicSGroupoperator= (const DynamicSGroup &o)
 
DynamicSGroupoperator= (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, Nh_permute (std::size_t which, const std::array< Index, N > &idx, internal::numeric_list< int, n... >) const
 
template<typename Index >
std::vector< Indexh_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< GroupElementm_elements
 
std::vector< Generatorm_generators
 
int m_globalFlags
 
std::size_t m_numIndices
 

Detailed Description

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.

Constructor & Destructor Documentation

Eigen::DynamicSGroup::DynamicSGroup ( )
inlineexplicit

Definition at line 18 of file DynamicSymmetry.h.

Eigen::DynamicSGroup::DynamicSGroup ( const DynamicSGroup o)
inline

Definition at line 19 of file DynamicSymmetry.h.

Eigen::DynamicSGroup::DynamicSGroup ( DynamicSGroup &&  o)
inline

Definition at line 20 of file DynamicSymmetry.h.

Member Function Documentation

void Eigen::DynamicSGroup::add ( int  one,
int  two,
int  flags = 0 
)
inline

Definition at line 195 of file DynamicSymmetry.h.

template<typename Gen_ >
void Eigen::DynamicSGroup::add ( Gen_  )
inline

Definition at line 27 of file DynamicSymmetry.h.

void Eigen::DynamicSGroup::addAntiHermiticity ( int  one,
int  two 
)
inline

Definition at line 31 of file DynamicSymmetry.h.

void Eigen::DynamicSGroup::addAntiSymmetry ( int  one,
int  two 
)
inline

Definition at line 29 of file DynamicSymmetry.h.

void Eigen::DynamicSGroup::addHermiticity ( int  one,
int  two 
)
inline

Definition at line 30 of file DynamicSymmetry.h.

void Eigen::DynamicSGroup::addSymmetry ( int  one,
int  two 
)
inline

Definition at line 28 of file DynamicSymmetry.h.

template<typename Op , typename RV , typename Index , std::size_t N, typename... Args>
RV Eigen::DynamicSGroup::apply ( const std::array< Index, N > &  idx,
RV  initial,
Args &&...  args 
) const
inline

Definition at line 34 of file DynamicSymmetry.h.

template<typename Op , typename RV , typename Index , typename... Args>
RV Eigen::DynamicSGroup::apply ( const std::vector< Index > &  idx,
RV  initial,
Args &&...  args 
) const
inline

Definition at line 43 of file DynamicSymmetry.h.

int Eigen::DynamicSGroup::findElement ( GroupElement  e) const
inlineprivate

Definition at line 140 of file DynamicSymmetry.h.

GroupElement Eigen::DynamicSGroup::ge ( Generator const &  g) const
inlineprivate

Definition at line 108 of file DynamicSymmetry.h.

int Eigen::DynamicSGroup::globalFlags ( ) const
inline

Definition at line 51 of file DynamicSymmetry.h.

template<typename Index , std::size_t N, int... n>
std::array<Index, N> Eigen::DynamicSGroup::h_permute ( std::size_t  which,
const std::array< Index, N > &  idx,
internal::numeric_list< int, n... >   
) const
inlineprivate

Definition at line 91 of file DynamicSymmetry.h.

template<typename Index >
std::vector<Index> Eigen::DynamicSGroup::h_permute ( std::size_t  which,
std::vector< Index idx 
) const
inlineprivate

Definition at line 97 of file DynamicSymmetry.h.

DynamicSGroup::GroupElement Eigen::DynamicSGroup::mul ( GroupElement  g1,
GroupElement  g2 
) const
inlineprivate

Definition at line 179 of file DynamicSymmetry.h.

GroupElement Eigen::DynamicSGroup::mul ( Generator  g1,
GroupElement  g2 
) const
inlineprivate

Definition at line 125 of file DynamicSymmetry.h.

GroupElement Eigen::DynamicSGroup::mul ( GroupElement  g1,
Generator  g2 
) const
inlineprivate

Definition at line 130 of file DynamicSymmetry.h.

GroupElement Eigen::DynamicSGroup::mul ( Generator  g1,
Generator  g2 
) const
inlineprivate

Definition at line 135 of file DynamicSymmetry.h.

template<typename Tensor_ , typename... IndexTypes>
internal::tensor_symmetry_value_setter<Tensor_, DynamicSGroup> Eigen::DynamicSGroup::operator() ( Tensor_ &  tensor,
typename Tensor_::Index  firstIndex,
IndexTypes...  otherIndices 
) const
inline

Definition at line 55 of file DynamicSymmetry.h.

template<typename Tensor_ >
internal::tensor_symmetry_value_setter<Tensor_, DynamicSGroup> Eigen::DynamicSGroup::operator() ( Tensor_ &  tensor,
std::array< typename Tensor_::Index, Tensor_::NumIndices > const &  indices 
) const
inline

Definition at line 62 of file DynamicSymmetry.h.

DynamicSGroup& Eigen::DynamicSGroup::operator= ( const DynamicSGroup o)
inline

Definition at line 21 of file DynamicSymmetry.h.

DynamicSGroup& Eigen::DynamicSGroup::operator= ( DynamicSGroup &&  o)
inline

Definition at line 22 of file DynamicSymmetry.h.

std::size_t Eigen::DynamicSGroup::size ( ) const
inline

Definition at line 52 of file DynamicSymmetry.h.

void Eigen::DynamicSGroup::updateGlobalFlags ( int  flagDiffOfSameGenerator)
inlineprivate

Definition at line 260 of file DynamicSymmetry.h.

Member Data Documentation

std::vector<GroupElement> Eigen::DynamicSGroup::m_elements
private

Definition at line 86 of file DynamicSymmetry.h.

std::vector<Generator> Eigen::DynamicSGroup::m_generators
private

Definition at line 87 of file DynamicSymmetry.h.

int Eigen::DynamicSGroup::m_globalFlags
private

Definition at line 88 of file DynamicSymmetry.h.

std::size_t Eigen::DynamicSGroup::m_numIndices
private

Definition at line 85 of file DynamicSymmetry.h.


The documentation for this class was generated from the following file:


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:52:34