ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Classes | Functions
generate_mpo Namespace Reference

Namespaces

 detail
 

Classes

class  CorrMaker
 
class  CorrMakerBase
 
class  CorrMakerNN
 
class  MPOMaker
 
struct  Operator_Tag_Term
 
struct  Operator_Term
 
struct  pos_tag_lt
 
class  TaggedMPOMaker
 

Functions

template<typename T , typename U >
std::pair< T, U > to_pair (boost::tuple< T, U > const &t)
 
template<class Matrix , class SymmGroup >
std::ostream & operator<< (std::ostream &os, Operator_Tag_Term< Matrix, SymmGroup > const &op)
 
size_t next_free (vector< size_t > const &out_taken, vector< size_t > const &in_taken)
 
size_t next_free (set< size_t > const &s)
 
template<class Vector >
void compress_on_bond (Vector &pm1, Vector &pm2)
 
template<class Vector >
std::pair< size_t, size_t > rcdim (Vector const &pm)
 
template<class Pair >
bool compare (Pair const &p1, Pair const &p2)
 

Function Documentation

template<class Pair >
bool generate_mpo::compare ( Pair const &  p1,
Pair const &  p2 
)

Definition at line 227 of file utils.hpp.

228  {
229  return p1.first < p2.first;
230  }
template<class Vector >
void generate_mpo::compress_on_bond ( Vector &  pm1,
Vector &  pm2 
)

Definition at line 187 of file utils.hpp.

188  {
189  std::set<size_t> bond_used_dims;
190  for (typename Vector::iterator it = pm1.begin(); it != pm1.end(); ++it)
191  if (get<1>(*it) > 1)
192  bond_used_dims.insert(get<1>(*it));
193  for (typename Vector::iterator it = pm2.begin(); it != pm2.end(); ++it)
194  if (get<0>(*it) > 1)
195  bond_used_dims.insert(get<0>(*it));
196 
197  std::map<size_t, size_t> compression_map;
198  size_t c = 2;
199  for (set<size_t>::iterator it = bond_used_dims.begin();
200  it != bond_used_dims.end(); ++it)
201  compression_map[*it] = c++;
202 
203  for (typename Vector::iterator it = pm1.begin(); it != pm1.end(); ++it)
204  if (compression_map.count(get<1>(*it)) > 0)
205  get<1>(*it) = compression_map[get<1>(*it)];
206  for (typename Vector::iterator it = pm2.begin(); it != pm2.end(); ++it)
207  if (compression_map.count(get<0>(*it)) > 0)
208  get<0>(*it) = compression_map[get<0>(*it)];
209  }
size_t generate_mpo::next_free ( vector< size_t > const &  out_taken,
vector< size_t > const &  in_taken 
)
inline

Definition at line 168 of file utils.hpp.

170  {
171  for (size_t k = 0; true; ++k)
172  {
173  if (count(out_taken.begin(), out_taken.end(), k) == 0 &&
174  count(in_taken.begin(), in_taken.end(), k) == 0)
175  return k;
176  }
177  }
size_t generate_mpo::next_free ( set< size_t > const &  s)
inline

Definition at line 179 of file utils.hpp.

180  {
181  for (size_t k = 2; true; ++k)
182  if (s.count(k) == 0)
183  return k;
184  }
template<class Matrix , class SymmGroup >
std::ostream& generate_mpo::operator<< ( std::ostream &  os,
Operator_Tag_Term< Matrix, SymmGroup > const &  op 
)

Definition at line 99 of file utils.hpp.

100  {
101  os << "fill: " << op.fill_operator << std::endl;
102  os << "sign: " << op.with_sign << std::endl;
103  os << "scale: " << op.scale << std::endl;
104  os << "operators:";
105  for (int i=0; i<op.operators.size(); ++i)
106  os << " {" << op.operators[i].first << "," << op.operators[i].second << "}";
107  os << std::endl;
108  return os;
109  }
template<class Vector >
std::pair<size_t, size_t> generate_mpo::rcdim ( Vector const &  pm)

Definition at line 212 of file utils.hpp.

213  {
214  std::list<size_t> l, r;
215  for (typename Vector::const_iterator it = pm.begin(); it != pm.end(); ++it) {
216  l.push_back( get<0>(*it) );
217  r.push_back( get<1>(*it) );
218  }
219 
220  size_t ldim=0, rdim=0;
221  if (l.size() > 0) ldim = *max_element(l.begin(), l.end())+1;
222  if (r.size() > 0) rdim = *max_element(r.begin(), r.end())+1;
223  return make_pair(ldim, rdim);
224  }
template<typename T , typename U >
std::pair<T,U> generate_mpo::to_pair ( boost::tuple< T, U > const &  t)

Definition at line 88 of file tagged_mpo_maker_optim.hpp.

89  {
90  return std::make_pair( boost::get<0>(t), boost::get<1>(t) );
91  }