SyTen
syten::MPS::TEBD Namespace Reference

TEBD implementation, primarily by Felix. More...

Classes

struct  Conf
 programm configuration. More...
 
struct  MergeConfig
 Config for merging two bases. More...
 
class  Node
 Node that is responsible for one sublattice or single bond (which is a sublattice with length 1) More...
 
class  TpoWrapper
 TEBD parallel operator wrapper. More...
 
class  TpsWrapper
 TEBD parallel state wrapper. More...
 

Typedefs

typedef std::vector< Tensor< 6 > > LocalBonds
 Vector of local bond operators (operator on two sites) More...
 
typedef std::pair< Tensor< 4 >, Tensor< 4 > > Tensor4Pair
 Pair of single site MPO components. More...
 

Enumerations

enum class  BondOperatorType { Even , Odd }
 Type of a TEBD bond operator, even or odd bonds. More...
 

Functions

MPS::Operator build_global_T (MPS::Lattice const &lat, MPS::Operator const &bond_operator, SDef dt, BondOperatorType const type)
 builds one MPO for time evolution More...
 
Tensor4Pair build_local_T (Tensor< 6 > const &local_bond_6, SDef const dt)
 builds the two-site time evolution operator via matrix-exponential of the local bond operator and decompose it into two single-site MPO operators More...
 
void contract_local_sites (Tensor< 2 > &contractor, Tensor< 4 > const &current_op, Tensor< 4 > const &current_i, bool const from_left=true)
 Contracts sites of an MPO into an contractor: More...
 
void doTEBD_parallel (MPS::Lattice const &lat, MPS::State &psi, MPS::Operator const &H_even, MPS::Operator const &H_odd, Conf conf, bool const bpo_quiet)
 launches parallel TEBD time evolution More...
 
void doTEBD_serial (MPS::Lattice const &lat, MPS::State &psi, MPS::Operator const &H_even, MPS::Operator const &H_odd, Conf conf, bool const bpo_quiet)
 launches serial TEBD time evolution More...
 
LocalBonds get_local_bonds (MPS::Lattice const &lat, MPS::Operator const &global_bond_operator, BondOperatorType const type)
 Takes the Hamiltonian for odd or even sites and decomposites it into local bond "double-site" operators (rank 6 tensors) More...
 
std::vector< MPS::OperatorgetTEvolOps (Index const order, MPS::Lattice const &lat, MPS::Operator const &H_even, MPS::Operator const &H_odd, SDef const dt, bool const bpo_quiet)
 gives the time evolution operators for a certain order. More...
 
std::vector< MPS::OperatorgetTEvolOps (Index const order, MPS::Lattice const &lat, MPS::Operator const &H_even, MPS::Operator const &H_odd, SDef const dt, bool const bpo_quiet, std::vector< BondOperatorType > &parities)
 gives the time evolution operators for a certain order. More...
 
void save_state (MPS::State s, SDef const T, std::string prefix, std::ostream &out)
 builds filename and calls save function in order to save a state to a file More...
 
Utility functions
template<Rank irank>
Tensor< irank-1 > merge (Tensor< irank > const &itensor, MergeConfig &bases, int const merge_at=irank-1, bool const switch_bases=false)
 Takes a Tensor with rang irank and merges the legs with indices merge_at and merge_at+1 into a leg with index merge_at. More...
 
template<Rank irank>
Tensor< irank+1 > split (Tensor< irank > const &itensor, MergeConfig const &bases, int const split_at=irank)
 Takes a Tensor with rank irank and splits the leg with index split_at into two legs with indices split_at and split_at+1. More...
 
template<typename IndexType , Rank irank>
Tensor< irank > rearrange (Tensor< irank > const &itensor, std::array< IndexType, irank > const &indices)
 Simply change the indicces (labels) of the legs. More...
 
Tensor< 6 > connect_local_operators (Tensor< 4 > const &op1, Tensor< 4 > const &op2)
 Connects two singe site operators (rank 4 tensors) to a "double-site" operator (rank 6 tensor): More...
 

Detailed Description

TEBD implementation, primarily by Felix.