SyTen
syten-tebd.cpp File Reference

Binary to run TEBD. More...

#include <array>
#include <vector>
#include "inc/util/bpo_helper.h"
#include "inc/tensor/tensor_gen.h"
#include "inc/tensor/tensor.h"
#include "inc/tensor/tensor_exponential.h"
#include "inc/tensor/tensor_prod.h"
#include "inc/tensor/tensor_svd.h"
#include "inc/tensor/tensor_misc.h"
#include "inc/mps/lattice.h"
#include "inc/mps/operator.h"
#include "inc/mps/parse_operator.h"
#include "inc/mps/state.h"
+ Include dependency graph for syten-tebd.cpp:

Classes

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

Namespaces

namespace  syten
 Syten namespace.
 
namespace  syten::MPS
 The namespace containing all MPS-related tools, classes and objects.
 
namespace  syten::MPS::TEBD
 TEBD implementation, primarily by Felix.
 

Typedefs

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

Enumerations

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

Functions

MPS::Operator syten::MPS::TEBD::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 syten::MPS::TEBD::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 syten::MPS::TEBD::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 syten::MPS::TEBD::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 syten::MPS::TEBD::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 syten::MPS::TEBD::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::Operator > syten::MPS::TEBD::getTEvolOps (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::Operator > syten::MPS::TEBD::getTEvolOps (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 syten::MPS::TEBD::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
Tensor< 6 > syten::MPS::TEBD::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...
 
template<Rank irank>
Tensor< irank-1 > syten::MPS::TEBD::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<typename IndexType , Rank irank>
Tensor< irank > syten::MPS::TEBD::rearrange (Tensor< irank > const &itensor, std::array< IndexType, irank > const &indices)
 Simply change the indicces (labels) of the legs. More...
 
template<Rank irank>
Tensor< irank+1 > syten::MPS::TEBD::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...
 

Detailed Description