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

#include <tevol_mpo_sim.h>

Public Member Functions

 mpo_evolver (DmrgParameters *parms_, MPS< Matrix, SymmGroup > *mps_, Lattice const &lattice_, Model< Matrix, SymmGroup > const &model_, int init_sweep=0)
 
void prepare_te_terms (unsigned sweep)
 
void operator() (unsigned sweep, unsigned nsteps)
 
results_collector const & iteration_results () const
 

Detailed Description

template<class Matrix, class SymmGroup>
class mpo_evolver< Matrix, SymmGroup >

Definition at line 39 of file tevol_mpo_sim.h.

Constructor & Destructor Documentation

template<class Matrix , class SymmGroup >
mpo_evolver< Matrix, SymmGroup >::mpo_evolver ( DmrgParameters parms_,
MPS< Matrix, SymmGroup > *  mps_,
Lattice const &  lattice_,
Model< Matrix, SymmGroup > const &  model_,
int  init_sweep = 0 
)
inline

Definition at line 42 of file tevol_mpo_sim.h.

45  : parms(parms_)
46  , mps(mps_)
47  , lattice(lattice_) // shallow copy
48  , model(model_) // shallow copy
49  , hamils(separate_hamil_terms(model.hamiltonian_terms()))
50  {
51  maquis::cout << "Using MPO time evolution." << std::endl;
52 
53  maquis::cout << "Found " << hamils.size() << " non overlapping Hamiltonians." << std::endl;
54 
55  /// compute the time evolution gates
56  prepare_te_terms(init_sweep);
57  }
std::vector< std::vector< term_descriptor< T > > > separate_hamil_terms(std::vector< term_descriptor< T > > const &hamil_terms)
Definition: te_utils.hpp:49
void prepare_te_terms(unsigned sweep)
Definition: tevol_mpo_sim.h:59

Member Function Documentation

template<class Matrix , class SymmGroup >
results_collector const& mpo_evolver< Matrix, SymmGroup >::iteration_results ( ) const
inline

Definition at line 80 of file tevol_mpo_sim.h.

81  {
82  return iteration_results_;
83  }
template<class Matrix , class SymmGroup >
void mpo_evolver< Matrix, SymmGroup >::operator() ( unsigned  sweep,
unsigned  nsteps 
)
inline

Definition at line 74 of file tevol_mpo_sim.h.

75  {
76  iteration_results_.clear();
77  for (unsigned i=0; i < nsteps; ++i) evolve_time_step(sweep+i);
78  }
template<class Matrix , class SymmGroup >
void mpo_evolver< Matrix, SymmGroup >::prepare_te_terms ( unsigned  sweep)
inline

Definition at line 59 of file tevol_mpo_sim.h.

60  {
61  double dt = (*parms)["dt"];
62  typename Matrix::value_type I;
63  if (sweep < (*parms)["nsweeps_img"])
65  else
67  typename Matrix::value_type alpha = -I*dt;
68 
69  Uterms.resize(hamils.size());
70  for (int i=0; i<hamils.size(); ++i)
71  Uterms[i] = make_exp_mpo(lattice, model, hamils[i], alpha);
72  }
MPO< Matrix, SymmGroup > make_exp_mpo(Lattice const &lat, Model< Matrix, SymmGroup > const &model, std::vector< term_descriptor< typename Matrix::value_type > > const &hamil_terms, typename Matrix::value_type const &alpha=1)
Definition: te_utils.hpp:331

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