SyTen
syten::VariationalAdd::Adder< Workspace > Class Template Reference

Abstract class for variational TNS-addition. More...

#include <variational_add.h>

+ Inheritance diagram for syten::VariationalAdd::Adder< Workspace >:
+ Collaboration diagram for syten::VariationalAdd::Adder< Workspace >:

Public Member Functions

 Adder ()=delete
 Default ctor deleted. More...
 
 Adder (Adder &&)=default
 Move ctor defaulted. More...
 
 Adder (Adder const &)=delete
 Copy ctor deleted. More...
 
template<typename... Params>
 Adder (Truncation _trunc, Conf _conf, Params &&... _workspace_params)
 
std::pair< IterativeExit, StateType > execute ()
 
Adderoperator= (Adder &&)=default
 Move assignment op defaulted. More...
 
Adderoperator= (Adder const &)=delete
 Copy assignment op deleted. More...
 

Protected Member Functions

std::string gen_log (const IterativeExit _exitcode)
 
std::string gen_log_header ()
 

Private Types

typedef Workspace::ScalarType ScalarType
 
typedef Workspace::StateType StateType
 

Private Member Functions

bool abort (const IterativeExit &_exitcode)
 
void check_converged (IterativeExit &_exitcode, const std::vector< SRDef > &_norms)
 
bool converged (const IterativeExit &_exitcode)
 

Private Attributes

Conf conf
 
Truncation trunc
 

Detailed Description

template<typename Workspace>
class syten::VariationalAdd::Adder< Workspace >

Abstract class for variational TNS-addition.

Explicit implementation of tensor contractions and handling of states and coefficients is done in workspace. Workspace must implement:

init_workspace  : create left and right environment tensors, init parallelization, etc., returns IterativeExitReason (custom if no error occured)
gen_log_header  : set header for output
gen_log         : create output string
prepare_sweep   : prepare workspace for next sweep
sweep_complete  : returns true if a sweep is completed
expand          : expand current, active site tensor, takes truncation object as input argument
update          : update current site tensor(s)
step_next       : move orthogonality center to next site
finish_sweep    : finish workspace after sweep, return current norm
pop_result      : move result state

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