One run of T3N-DMRG. More...
#include <dmrg.h>
Public Types | |
typedef syten::DMRG::DMRGConfig | DMRGConfig |
DMRG Config type. More... | |
typedef syten::DMRG::DMRGStage | DMRGStage |
DMRG Stage type. More... | |
Public Member Functions | |
void | adaptAlpha (SRDef const preTrunc, SRDef const postTrunc) |
Adapt the mixing factor alpha based on energy gain. More... | |
void | adaptConf (SRDef error, IterativeExit const &r) |
Adapts parameters after sweep. More... | |
MemoryUsage::MemorySize | allocSize () const |
Returns the total alloced memory. More... | |
bool | converged () |
Returns if the state is converged. More... | |
SRDef const & | getLastEnergy () const |
Returns the last Energy. More... | |
std::vector< SRDef > | getMut () const |
Gives a copy to the Mutual Information Vektor. More... | |
Index const & | getSweepsPerStage () const |
Returns the last Energy. More... | |
void | saveState () |
Saves state. More... | |
void | setConf (DMRGConfig conf_) |
Sets new DMRGConfig to continue with. More... | |
DMRGConfig const & | showConf () const |
Shows the DMRGConfig. More... | |
Operator const & | showH (Index const i) const |
Overload because pyten does not like the implicit cast and deletes the operator otherwise. More... | |
std::vector< Operator > const & | showHs () const |
Returns the operators. More... | |
State const & | showPsi () const |
Gives a const. More... | |
Constructors & assignment operators. | |
Run ()=default | |
Default constructor. More... | |
Run & | operator= (Run &&other) |
Move assignment. More... | |
Run & | operator= (Run const &other)=delete |
Copy assignment. More... | |
Run (Run const &other)=delete | |
Delete copy constructor. More... | |
Run (Run &&other) | |
Move constructor. More... | |
Logging | |
void | initLog () |
Initializes logfiles. More... | |
void | closeLog () |
Closes logfiles. More... | |
template<typename... Args> | |
void | logIteration (Args &&... data) |
Log the data for a single iteration. More... | |
template<typename... Args> | |
void | logTrace (Args &&... data) |
Log traceing information. More... | |
External interface | |
void | initArgs (int argc_, char **argv_) |
Initialize arguments. More... | |
Run (State &&psi_, std::vector< Operator > &&ops_, DMRGConfig &&conf_, std::vector< State > &&ortho_={}) | |
Construction. More... | |
void | run () |
Peforms a DMRG run. More... | |
template<typename TypePtr , typename TypeVal > | |
void | setConfig (TypePtr ptr, TypeVal value) |
Use to set configuration for all workers. More... | |
std::vector< DenseTensor< 2 > > const & | get_global_Us () const |
Gives back the rotation. More... | |
void | init_obs (std::vector< Operator > obs_) |
Inititalses observables to rotate during MT. More... | |
std::vector< Operator > | get_obs () |
Returns observables. More... | |
void | setCaching (bool const val) |
Sets caching flag to state operator and contractions. More... | |
void | randomise_state () |
Randomises current state. More... | |
DMRGStage const & | currentStage () const |
Const reference to current stage. More... | |
Boost serialisation. | |
template<typename Archive > | |
void | save (Archive &ar, unsigned int const in_version) |
Save a worker object to a boost archive. More... | |
template<class Archive > | |
void | save (Archive &ar, unsigned int const in_version) const |
Overload to satisfy Boost. More... | |
template<typename Archive > | |
void | load (Archive &ar, unsigned int const in_version) |
Load a worker object from a boost archive. More... | |
Static Public Attributes | |
static std::string const | uuid = "589F7D2E-2992-4F54-A34B-114FC3A19886" |
UUID. More... | |
static constexpr unsigned int | version = 4 |
Version. More... | |
Private Member Functions | |
Contraction of operator and state. | |
void | build_descendantContr (LegType const which, Position const &pos) const |
Build a contraction pointing towards the requested direction. More... | |
void | build_rootContr (Position const &pos) const |
Build a local root-pointing contraction of the operator with the state (based on) the nodes given as arguments. More... | |
void | build_rootContr_rec (Position &pos) |
Recursively build an entire tree of root-pointing contractions. More... | |
Internal functionality | |
bool | checkSignals () |
Checks for signals. More... | |
void | resetPosition () |
Set position to start. More... | |
void | checkTopology () const |
Compare Operators to each other in order to check if they're valid. More... | |
void | uncache (Tree::Position const &pos, LegType const dir=LegType::Invalid) |
Uncaches the requested position in all Hamiltonians. More... | |
void | cache (Tree::Position const &pos, bool const do_cache=true, LegType const dir=LegType::Invalid) |
Caches the requested position in all Hamiltonians. More... | |
void | sweep () |
Do one sweep over the entire system. More... | |
void | update_rec (Position &pos) |
Updates a subtree recursively. More... | |
void | update_node (Position const &pos, LegType const dir) |
A helper function in order to distinguish the kinds of updates. More... | |
void | update_branch (LegType const direction, Position const &pos) |
Performs the actual update on a Branching Node. More... | |
void | update_phys_branching (Position const &pos, LegType const direction) |
Contracts the current site w/ a neighboring Branching Node and optimizes. More... | |
void | update_phys_branching_2site (LegType const direction, LegType const secondDir, Position const &pos) |
Updates Physical-Branching-Physical Contraction. More... | |
void | update_phys_1site (LegType const direction, Position const &pos) |
Does single site DMRG on Physical Node w/ neighboring Physical Node. More... | |
void | update_phys_2site (Position const &pos, LegType const direction) |
Does two site DMRG on Physical Node w/ neighboring Physical Node. More... | |
void | checkNormAndStabilise (STensor &t, Vec< SBasisId > const &keep_size={}) |
Checks the norm of a tensor and randomises it if needed. More... | |
DMRGStage & | currentStage () |
Reference to current stage. More... | |
IterativeExit | solveContractionWithBranching (Vec< STensor > const &operatorContrs, STensor &stateContr, LegType const contracted, Position const &pos) const |
Solves for the tensor on a Physical Node, given a neighboring Branching Node. More... | |
IterativeExit | solvePhysical (Position const &pos, Vec< std::reference_wrapper< T3NTensor const > > const &w_refs) |
Solves for the tensor on a Physical Node. More... | |
IterativeExit | solveBranching (Position const &pos, Vec< std::reference_wrapper< T3NTensor const > > const &w_refs) |
Solves for the tensor on a Branching Node. More... | |
IterativeExit | solve2Site (Position const &pos, LegType const direction, Vec< std::reference_wrapper< T3NTensor const > > const &w_refs, STensor &site) const |
Solves two-site. More... | |
IterativeExit | solve2SitePhysicalBranching (Vec< std::reference_wrapper< T3NTensor const > > const &operatorContrs, STensor &stateContr, LegType const contracted, LegType const secondContr, Position const &pos) const |
Solves two-site-branching contraction. More... | |
void | normalise_network (Position const &pos, LegType const towards) |
Normalises the entire network towards given direction. More... | |
std::string | directionSymbol (NodeType const posType, NodeType const nextType, LegType const direction, LegType const rootType) const |
Returns the symbol for the direction of sweeping. More... | |
std::string | positionInfo (Position const &pos) const |
Returns position information. More... | |
void | expand (Position const &pos, LegType const direction) |
Performs subspace expansion. More... | |
void | expandPhysical (Position const &pos, LegType const direction) |
Performs subspace expansion. More... | |
void | expandBranch (Position const &pos, LegType const direction) |
Performs subspace expansion. More... | |
SRDef | normalise (State::Ptr ptr, LegType const dir) |
Normalises the state on node pptr in direction dir . More... | |
void | contract (Position const &pos, LegType const dir) |
Forwarder to build the contraction on node cptr from the neighbours of cptr , pptr and optr in direction dir . More... | |
Pair< SRDef, SRDef > | energy (Position const &pos) const |
Calculates the energy on the specified node, assuming that all neighbouring contractions exist and point in the correct direction. More... | |
Pair< SRDef, SRDef > | energy (Position const &pos, LegType const dir) const |
Forwarder to calculate the energy on the neighbouring node of that pointed to be the arguments in the given direction. More... | |
Private Attributes | |
int | argc |
char ** | argv |
DMRGConfig | conf |
Configuration of the run. More... | |
Contractions | contrs |
Contractions of op & psi . More... | |
std::ofstream | iterLog |
output filestream for each iteration More... | |
Vec< Operator > | mt_observables = {} |
Observables to rotate during MT. More... | |
Vec< SRDef > | mut ={} |
Mutual Information at each sweep. More... | |
Vec< Operator > | ops |
(Hamiltonian-) Operator of which we calculate the ground state. More... | |
Vec< State > | ortho |
Orthogonalise against there vectors. More... | |
Contractions | orthoContrs |
Contractions of orthogonal states. More... | |
Position | position |
Shows the current position during optimisation. More... | |
State | psi |
Ground state (approximation) for op . More... | |
bool | smp |
True if all nodes are physical. More... | |
Timer | timer |
For performance testing reasons. More... | |
std::ofstream | traceLog |
output filestream for the debug info More... | |
Vec< DenseTensor< 2 > > | Us = {} |
For transforming the creation and annihilation operators. More... | |
One run of T3N-DMRG.