ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | List of all members
measurements::detail::CorrPermutator< Matrix, SymmGroup > Class Template Reference

#include <correlations.h>

Public Types

typedef std::size_t size_t
 
typedef std::pair< std::vector
< block_matrix< Matrix,
SymmGroup > >, bool > 
inner_t
 
typedef std::vector< inner_tvalue_t
 

Public Member Functions

 CorrPermutator (value_t const &ops, bool is_nn)
 
size_t size () const
 
value_t operator[] (size_t i) const
 
std::vector< size_torder (size_t i) const
 

Detailed Description

template<class Matrix, class SymmGroup>
class measurements::detail::CorrPermutator< Matrix, SymmGroup >

Definition at line 68 of file correlations.h.

Member Typedef Documentation

template<class Matrix, class SymmGroup>
typedef std::pair<std::vector<block_matrix<Matrix, SymmGroup> >, bool> measurements::detail::CorrPermutator< Matrix, SymmGroup >::inner_t

Definition at line 72 of file correlations.h.

template<class Matrix, class SymmGroup>
typedef std::size_t measurements::detail::CorrPermutator< Matrix, SymmGroup >::size_t

Definition at line 71 of file correlations.h.

template<class Matrix, class SymmGroup>
typedef std::vector<inner_t> measurements::detail::CorrPermutator< Matrix, SymmGroup >::value_t

Definition at line 73 of file correlations.h.

Constructor & Destructor Documentation

template<class Matrix, class SymmGroup>
measurements::detail::CorrPermutator< Matrix, SymmGroup >::CorrPermutator ( value_t const &  ops,
bool  is_nn 
)
inline

Definition at line 74 of file correlations.h.

75  {
76  std::vector<size_t> ord;
77  if (is_nn)
78  for (size_t i=0; i<ops.size(); i+=2) ord.push_back(i);
79  else
80  for (size_t i=0; i<ops.size(); ++i) ord.push_back(i);
81 
82  do {
83  std::vector<size_t> check_pre;
84  for (size_t i=0; i<ops.size(); ++i) {
85  if (ops[i].second) {
86  if (!is_nn)
87  check_pre.push_back(ord[i]);
88  else
89  if (i % 2 == 0)
90  check_pre.push_back(ord[i]);
91  else
92  check_pre.push_back(ord[i]+1);
93  }
94  }
95 
97  cmp.prefactor = 1.;
98  std::sort(check_pre.begin(), check_pre.end(), cmp);
99 
100  value_t tmp;
101  for (size_t i=0; i<ord.size(); ++i) {
102  tmp.push_back( ops[ord[i]] );
103  if (is_nn) {
104  tmp.push_back( ops[ord[i]+1] );
105  }
106  }
107 
108  for (int type=0; type<tmp[0].first.size(); ++type)
109  tmp[0].first[type] *= cmp.prefactor;
110 
111  perm.push_back(tmp);
112  orders.push_back(ord);
113  } while (std::next_permutation(ord.begin(), ord.end()));
114  }
std::vector< inner_t > value_t
Definition: correlations.h:73
static double prefactor
Definition: utils.hpp:34

Member Function Documentation

template<class Matrix, class SymmGroup>
value_t measurements::detail::CorrPermutator< Matrix, SymmGroup >::operator[] ( size_t  i) const
inline

Definition at line 117 of file correlations.h.

117 {return perm[i];}
template<class Matrix, class SymmGroup>
std::vector<size_t> measurements::detail::CorrPermutator< Matrix, SymmGroup >::order ( size_t  i) const
inline

Definition at line 118 of file correlations.h.

118 {return orders[i];}
template<class Matrix, class SymmGroup>
size_t measurements::detail::CorrPermutator< Matrix, SymmGroup >::size ( ) const
inline

Definition at line 116 of file correlations.h.

116 {return perm.size();}

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