Matrix Product State with automatic caching. More...
#include <state.h>
Collaboration diagram for syten::MPS::State:Public Types | |
| enum class | DropNorm { Yes , No } |
| Whether or not to drop the norm on normalisation. More... | |
| enum class | DropUnmatched { lr , lR , Lr , LR } |
| Whether to drop blocks not contained in the left (capital L) and/or right (capital R) blocks in rightnorm()/leftnorm() More... | |
Public Member Functions | |
| MemoryUsage::MemorySize | allocSize () const |
| allocSize()/memory_size.h support. More... | |
| void | cache () |
| Caches all tensors to disk and sets pleaseCache to true. More... | |
| void | cache (Index site) const |
| Ensures that the specified tensor is cached on disk. More... | |
| MemoryUsage::MemorySize | cacheSize () const |
| Amount of memory cached away. More... | |
| void | dropUnmatched (bool force_cache=false) |
| Drops unmatched tensors on all sites. More... | |
| void | dropUnmatched (Index const site, bool const left=true, bool const right=true) |
| Removes blocks on the specified site without corresponding partners on neighbouring sites. More... | |
| SRDef | leftnorm (Index const site, Truncation trunc=Truncation(), DropNorm const dropN=DropNorm::Yes, DropUnmatched const dropU=DropUnmatched::lr) |
| Left-normalises the tensor \(X_i\) on the specified site as \(X_i^{\sigma_i} \to U^\sigma S V\) and multiplies the corresponding transformation \(SV\) in the next tensor on the right \(X_{i+1} \to SV X_{i+1}\). More... | |
| SRDef | leftnorm (Truncation const &trunc=Truncation(), DropNorm const dropN=DropNorm::Yes) |
| Calls leftnorm() on all sites from left to right. More... | |
| template<class Archive > | |
| void | load (Archive &ar, const unsigned int in_version) |
| Boost serialisation: Loading. More... | |
| void | maybeCache () |
| Caches all tensors if pleaseCache is true. More... | |
| void | maybeCache (Index site) const |
| Caches specified tensor if pleaseCache is true. More... | |
| void | normalise () |
| Normalises the state s.t. \(\langle \psi | \psi \rangle = 1 \). More... | |
| Tensor< 3 > & | operator() (Index site) |
| Returns a reference to the tensor on that site. More... | |
| Tensor< 3 > const & | operator() (Index site) const |
| Returns a const reference to the tensor on that site. More... | |
| Tensor< 3 > const & | operator() (Index site, int) const |
| Returns a const reference to the tensor on that site. More... | |
| State & | operator*= (Operator const &op) |
| Applies an operator to this state as \( |\psi\rangle \to \hat
O |\psi\rangle\) using apply_op_naive(); prefer using apply_op_itrunc() if you want to truncate the state later. More... | |
| State & | operator*= (SDef const c) |
| Multiplies the state by a scalar as \( |\psi \rangle \to c |\psi\rangle\). More... | |
| State & | operator+= (State const &other) |
| Adds another state to this state as \( |\psi \rangle \to
|\psi\rangle + |\textrm{other}\rangle\). More... | |
| State & | operator= (State &&a)=default |
| Move assignment operator, see State(State&& a) More... | |
| State & | operator= (State const &a)=default |
| Copy assignment operator, see State(State& a) More... | |
| AsyncCached< Tensor< 3 > > & | operator[] (Index site) |
Returns a reference to the cached object at site site. More... | |
| AsyncCached< Tensor< 3 > > const & | operator[] (Index site) const |
Returns a const reference to the cached object at site site. More... | |
| void | resize (Index const new_size) |
| Resizes the MPS to the specified size. More... | |
| SRDef | rightnorm (Index const site, Truncation trunc=Truncation(), DropNorm const dropN=DropNorm::Yes, DropUnmatched const dropU=DropUnmatched::lr) |
| Right-normalises the tensor \(X_i\) on the specified site as \(X_i^{\sigma_i} \to U S V^\sigma\) and multiplies the corresponding transformation \(US\) in the next tensor on the left \(X_{i-1} \to X_{i-1} U S\). More... | |
| SRDef | rightnorm (Truncation const &trunc=Truncation(), DropNorm const dropN=DropNorm::Yes) |
| Calls rightnorm() on all sites from right to left. More... | |
| template<class Archive > | |
| void | save (Archive &ar, const unsigned int) const |
| Boost serialisation: Saving. More... | |
| void | setMaybeCache (bool pc) |
| Sets pleaseCache to the argument and calls maybeCache(). More... | |
| Index | size () const |
| Returns the number of sites in this MPS. More... | |
| State ()=default | |
| Default ctor needed for archiving. More... | |
| State (State &&a)=default | |
| Move ctor. More... | |
| State (State const &a)=default | |
| Copy ctor. More... | |
| SRDef | truncate (Truncation const &trunc=Truncation(), DropNorm const dropN=DropNorm::Yes, bool const sweep_left=true) |
| Truncates the state. More... | |
| SRDef | truncateKeepNorm (Truncation const &trunc=Truncation()) |
| Truncate the state preserving the norm, see truncate(). More... | |
| SRDef | truncateKN2Conv (Truncation const &trunc=Truncation()) |
| Calls truncateKeepNorm repeatedly until the bond dimension no longer changes. More... | |
| SRDef | truncateVariational (Truncation const &trunc=Truncation(), DropNorm const dropN=DropNorm::Yes) |
| Truncates the state using a two-site variational fitting procedure. More... | |
| void | uncache () |
| Loads all tensors into RAM and sets pleaseCache to false. More... | |
| void | uncache (Index site) const |
| Ensures that the specified tensor is loaded in RAM. More... | |
| ~State ()=default | |
| Dtor. More... | |
Public Attributes | |
| History | history |
| History records of this state. More... | |
| bool | pleaseCache = false |
| Whether to cache tensors if requested. More... | |
Static Public Attributes | |
| static constexpr Index | lIdx {2} |
| The number of the left MPS index in the underlying tensors. More... | |
| static constexpr int | lInt {2} |
| The number of the left MPS index in the underlying tensors, int for prod specs. More... | |
| static constexpr Index | rIdx {3} |
| The number of the right MPS index in the underlying tensors. More... | |
| static constexpr int | rInt {3} |
| The number of the right MPS index in the underlying tensors, int for prod specs. More... | |
| static constexpr Index | uIdx {1} |
| The number of the physical (upper) index in the underlying tensors. More... | |
| static constexpr int | uInt {1} |
| The number of the physical (upper) index in the underlying tensors, int for prod specs. More... | |
| static const std::string | uuid = "a970205a-d904-44d9-8adc-09dee648fd2d" |
| uuid of the state class for serialisation More... | |
| static constexpr unsigned int | version = 3 |
| current version, bump if you change one of the data structures here More... | |
Private Attributes | |
| std::vector< AsyncCached< Tensor< 3 > > > | data |
| Vector of possibly-cached tensors. More... | |
Matrix Product State with automatic caching.
An object of this class corresponds to a specific MPS. HDD caching can be enabled/disabled dynamically, but only uncaching occurs transparently on access.
If the state is given by
\[ | \psi \rangle = \sum_{\sigma_1, \sigma_2, \ldots, \sigma_L} M_1^{\sigma_1} M_2^{\sigma_2} \cdots M_L^{\sigma_L} | \sigma_1 \sigma_2 \ldots \sigma_L \rangle \]
then the entries State(0)...State(L-1) correspond to the tensors \( M_1\) through \( M_L\).