ALPS MPS Codes
Reference documentation.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Static Public Member Functions | List of all members
compression Struct Reference

#include <compression.h>

Static Public Member Functions

template<class Matrix , class SymmGroup >
static truncation_results replace_two_sites_l2r (MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, block_matrix< Matrix, SymmGroup > const &t, std::size_t p)
 
template<class Matrix , class SymmGroup >
static truncation_results replace_two_sites_r2l (MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, block_matrix< Matrix, SymmGroup > const &t, std::size_t p)
 
template<class Matrix , class SymmGroup >
static void compress_two_sites (MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, std::size_t p)
 
template<class Matrix , class SymmGroup >
static MPS< Matrix, SymmGroup > l2r_compress (MPS< Matrix, SymmGroup > mps, std::size_t Mmax, double cutoff, bool verbose=false)
 
template<class Matrix , class SymmGroup >
static MPS< Matrix, SymmGroup > r2l_compress (MPS< Matrix, SymmGroup > mps, std::size_t Mmax, double cutoff, bool verbose=false)
 

Detailed Description

Definition at line 35 of file compression.h.

Member Function Documentation

template<class Matrix , class SymmGroup >
static void compression::compress_two_sites ( MPS< Matrix, SymmGroup > &  mps,
std::size_t  Mmax,
double  cutoff,
std::size_t  p 
)
inlinestatic

Definition at line 85 of file compression.h.

88  {
90 
91  mps[p].make_left_paired();
92  mps[p+1].make_right_paired();
93 
94  gemm(mps[p].data(), mps[p+1].data(), t);
95 
96  replace_two_sites_l2r(mps, Mmax, cutoff, t, p);
97  }
static truncation_results replace_two_sites_l2r(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, block_matrix< Matrix, SymmGroup > const &t, std::size_t p)
Definition: compression.h:38
data_type data
void gemm(block_matrix< Matrix1, SymmGroup > const &A, block_matrix< Matrix2, SymmGroup > const &B, block_matrix< Matrix3, SymmGroup > &C)
template<class Matrix , class SymmGroup >
static MPS<Matrix, SymmGroup> compression::l2r_compress ( MPS< Matrix, SymmGroup >  mps,
std::size_t  Mmax,
double  cutoff,
bool  verbose = false 
)
inlinestatic

Definition at line 101 of file compression.h.

104  {
105  std::size_t L = mps.length();
106  std::vector<double> ret;
107 
109 
110  mps.canonize(1);
111 
112  if (verbose) maquis::cout << "Compressing @ ";
113  for (std::size_t p = 1; p < L; ++p)
114  {
115  if (verbose) {
116  maquis::cout << p << " ";
117  maquis::cout.flush();
118  }
119 
120  compress_two_sites(mps, Mmax, cutoff, p-1);
121 
122  t = mps[p].normalize_left(DefaultSolver());
123 
124  if (p+1 < L)
125  mps[p+1].multiply_from_left(t);
126  else
127  maquis::cout << "Norm reduction: " << trace(t) << std::endl;
128  }
129 
130  return mps;
131  }
void normalize_left()
Definition: mps.hpp:124
static void compress_two_sites(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, std::size_t p)
Definition: compression.h:85
block_matrix< Matrix, SymmGroup >::scalar_type trace(block_matrix< Matrix, SymmGroup > const &m)
size_t length() const
Definition: mps.h:58
void canonize(size_t center, DecompMethod method=DefaultSolver())
Definition: mps.hpp:147
template<class Matrix , class SymmGroup >
static MPS<Matrix, SymmGroup> compression::r2l_compress ( MPS< Matrix, SymmGroup >  mps,
std::size_t  Mmax,
double  cutoff,
bool  verbose = false 
)
inlinestatic

Definition at line 135 of file compression.h.

138  {
139  std::size_t L = mps.length();
140  std::vector<double> ret;
141 
143 
144  mps.canonize(L-1);
145 
146  if (verbose) maquis::cout << "Compressing @ ";
147  for (std::size_t p = L-1; p > 0; --p)
148  {
149  if (verbose) {
150  maquis::cout << p << " ";
151  maquis::cout.flush();
152  }
153 
154  compress_two_sites(mps, Mmax, cutoff, p-1);
155 
156  t = mps[p-1].normalize_right(DefaultSolver());
157 
158  if (p > 1)
159  mps[p-2].multiply_from_right(t);
160  else
161  maquis::cout << "Norm reduction: " << trace(t) << std::endl;
162  }
163 
164  return mps;
165  }
static void compress_two_sites(MPS< Matrix, SymmGroup > &mps, std::size_t Mmax, double cutoff, std::size_t p)
Definition: compression.h:85
block_matrix< Matrix, SymmGroup >::scalar_type trace(block_matrix< Matrix, SymmGroup > const &m)
void normalize_right()
Definition: mps.hpp:134
size_t length() const
Definition: mps.h:58
void canonize(size_t center, DecompMethod method=DefaultSolver())
Definition: mps.hpp:147
template<class Matrix , class SymmGroup >
static truncation_results compression::replace_two_sites_l2r ( MPS< Matrix, SymmGroup > &  mps,
std::size_t  Mmax,
double  cutoff,
block_matrix< Matrix, SymmGroup > const &  t,
std::size_t  p 
)
inlinestatic

Definition at line 38 of file compression.h.

42  {
44 
45  typedef typename alps::numeric::associated_real_diagonal_matrix<Matrix>::type dmt;
46 
48 
49  truncation_results trunc = svd_truncate(t, u, v, s,
50  cutoff, Mmax, true);
51 
52  mps[p].replace_left_paired(u, Lnorm);
53 
54  gemm(s, v, u);
55  mps[p+1].replace_right_paired(u);
56 
57  return trunc;
58  }
truncation_results svd_truncate(block_matrix< Matrix, SymmGroup > const &M, block_matrix< Matrix, SymmGroup > &U, block_matrix< Matrix, SymmGroup > &V, block_matrix< DiagMatrix, SymmGroup > &S, double rel_tol, std::size_t Mmax, bool verbose=true)
void gemm(block_matrix< Matrix1, SymmGroup > const &A, block_matrix< Matrix2, SymmGroup > const &B, block_matrix< Matrix3, SymmGroup > &C)
template<class Matrix , class SymmGroup >
static truncation_results compression::replace_two_sites_r2l ( MPS< Matrix, SymmGroup > &  mps,
std::size_t  Mmax,
double  cutoff,
block_matrix< Matrix, SymmGroup > const &  t,
std::size_t  p 
)
inlinestatic

Definition at line 62 of file compression.h.

66  {
68 
69  typedef typename alps::numeric::associated_real_diagonal_matrix<Matrix>::type dmt;
70 
72 
73  truncation_results trunc = svd_truncate(t, u, v, s,
74  cutoff, Mmax, true);
75 
76  mps[p+1].replace_right_paired(v, Rnorm);
77 
78  gemm(u, s, v);
79  mps[p].replace_left_paired(v);
80 
81  return trunc;
82  }
truncation_results svd_truncate(block_matrix< Matrix, SymmGroup > const &M, block_matrix< Matrix, SymmGroup > &U, block_matrix< Matrix, SymmGroup > &V, block_matrix< DiagMatrix, SymmGroup > &S, double rel_tol, std::size_t Mmax, bool verbose=true)
void gemm(block_matrix< Matrix1, SymmGroup > const &A, block_matrix< Matrix2, SymmGroup > const &B, block_matrix< Matrix3, SymmGroup > &C)

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