ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Functions
grouped_symmetry.h File Reference
#include "dmrg/block_matrix/symmetry.h"
#include "dmrg/block_matrix/indexing.h"

Go to the source code of this file.

Classes

struct  grouped_symmetry< SymmGroup >
 
struct  grouped_symmetry< TrivialGroup >
 
struct  grouped_symmetry< U1 >
 

Functions

TrivialGroup::charge group (TrivialGroup::charge c1, TrivialGroup::charge c2)
 
TwoU1::charge group (U1::charge c1, U1::charge c2)
 
template<class SymmGroup >
Index< typename
grouped_symmetry< SymmGroup >
::type > 
group (Index< SymmGroup > const &i1, Index< SymmGroup > const &i2)
 

Function Documentation

Definition at line 50 of file grouped_symmetry.h.

51 {
53 }
static const charge IdentityCharge
Definition: none.h:44
TwoU1::charge group ( U1::charge  c1,
U1::charge  c2 
)
inline

Definition at line 55 of file grouped_symmetry.h.

56 {
57  TwoU1::charge R;
58  R[0] = c1; R[1] = c2;
59  return R;
60 }
template<class SymmGroup >
Index<typename grouped_symmetry<SymmGroup>::type> group ( Index< SymmGroup > const &  i1,
Index< SymmGroup > const &  i2 
)

Definition at line 63 of file grouped_symmetry.h.

65 {
66  typedef typename grouped_symmetry<SymmGroup>::type OutSymm;
67 
68  Index<OutSymm> ret;
69  for (typename Index<SymmGroup>::const_iterator it1 = i1.begin(); it1 != i1.end(); ++it1)
70  for (typename Index<SymmGroup>::const_iterator it2 = i2.begin(); it2 != i2.end(); ++it2)
71  {
72  ret.insert(std::make_pair(group(it1->first, it2->first), it1->second*it2->second));
73  }
74  return ret;
75 }
TrivialGroup::charge group(TrivialGroup::charge c1, TrivialGroup::charge c2)
base_t::const_iterator const_iterator
iterator begin()
iterator end()
std::size_t insert(std::pair< charge, std::size_t > const &x)