ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Functions
measurement.h File Reference
#include "dmrg/mp_tensors/reduced_mps.h"
#include "dmrg/block_matrix/block_matrix.h"
#include "dmrg/block_matrix/block_matrix_algorithms.h"
#include "dmrg/block_matrix/symmetry.h"
#include "dmrg/models/lattice.h"
#include <alps/parser/xmlstream.h>
#include <vector>
#include <string>
#include <sstream>
#include <iostream>
#include <stdexcept>
#include <boost/regex.hpp>
#include <boost/static_assert.hpp>

Go to the source code of this file.

Classes

class  measurement< Matrix, SymmGroup >
 

Functions

template<class Matrix , class SymmGroup >
measurement< Matrix, SymmGroup > * new_clone (const measurement< Matrix, SymmGroup > &m)
 
template<class Archive , typename T >
void save_val_at_index (Archive &ar, std::string const &archive_path, T const &val, std::size_t eig)
 
template<class Matrix , class SymmGroup >
std::ostream & operator<< (std::ostream &os, measurement< Matrix, SymmGroup > const &m)
 
template<class Matrix , class SymmGroup >
bool is_hermitian_meas (std::vector< block_matrix< Matrix, SymmGroup > > const &ops)
 
template<class Matrix , class SymmGroup >
bool is_hermitian_meas (std::vector< std::pair< std::vector< block_matrix< Matrix, SymmGroup > >, bool > > const &ops)
 
std::vector< std::string > label_strings (const Lattice &lat, const std::vector< std::vector< std::size_t > > &labels)
 

Function Documentation

template<class Matrix , class SymmGroup >
bool is_hermitian_meas ( std::vector< block_matrix< Matrix, SymmGroup > > const &  ops)

UTILITIES.

Definition at line 175 of file measurement.h.

176 {
177  return all_true(ops.begin(), ops.end(),
178  boost::bind(static_cast<bool (*)(block_matrix<Matrix, SymmGroup> const&)>(&is_hermitian), _1));
179 }
bool is_hermitian(block_matrix< Matrix, SymmGroup > const &m)
bool all_true(InputIterator first, InputIterator last, Predicate pred)
Definition: utils.hpp:53
template<class Matrix , class SymmGroup >
bool is_hermitian_meas ( std::vector< std::pair< std::vector< block_matrix< Matrix, SymmGroup > >, bool > > const &  ops)

Definition at line 182 of file measurement.h.

183 {
184  bool is_herm = true;
185  for (int i=0; i<ops.size() && is_herm; ++i)
186  is_herm = is_hermitian_meas(ops[i].first);
187  return is_herm;
188 }
bool is_hermitian_meas(std::vector< block_matrix< Matrix, SymmGroup > > const &ops)
UTILITIES.
Definition: measurement.h:175
std::vector<std::string> label_strings ( const Lattice lat,
const std::vector< std::vector< std::size_t > > &  labels 
)
inline

Definition at line 190 of file measurement.h.

191 {
192  std::vector<std::string> ret;
193  ret.reserve(labels.size());
194  for (std::vector<std::vector<std::size_t> >::const_iterator it = labels.begin();
195  it != labels.end(); ++it)
196  {
197  std::ostringstream oss;
198  for (std::vector<std::size_t>::const_iterator it2 = it->begin(); it2 != it->end(); ++it2) {
199  oss << lat.get_prop<std::string>("label", *it2);
200  if (it2 + 1 != it->end())
201  oss << " -- ";
202  }
203  ret.push_back(oss.str());
204  }
205  return ret;
206 }
T get_prop(std::string property, pos_t site) const
Definition: lattice.h:103
template<class Matrix , class SymmGroup >
measurement<Matrix, SymmGroup>* new_clone ( const measurement< Matrix, SymmGroup > &  m)
inline

Definition at line 90 of file measurement.h.

91 {
92  return m.clone();
93 }
measurement * clone() const
Definition: measurement.h:72
template<class Matrix , class SymmGroup >
std::ostream& operator<< ( std::ostream &  os,
measurement< Matrix, SymmGroup > const &  m 
)

Definition at line 166 of file measurement.h.

167 {
168  m.print(os);
169 }
virtual void print(std::ostream &os) const
Definition: measurement.h:160
template<class Archive , typename T >
void save_val_at_index ( Archive &  ar,
std::string const &  archive_path,
T const &  val,
std::size_t  eig 
)

Definition at line 96 of file measurement.h.

97 {
98  std::vector<T> vals;
99  if (ar.is_data(archive_path.c_str())) ar[archive_path] >> vals;
100  vals.resize( std::max(vals.size(), eig+1) );
101  vals[eig] = val;
102  ar[archive_path] << vals;
103 }