Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions
two_site_split.hpp File Reference

Splits a two-site center and installs directional MPS factors. More...

#include <uni20/symmetry/block_tensor_contract.hpp>
#include <uni20/symmetry/block_tensor_linear.hpp>
#include <uni20/symmetry/block_tensor_repartition.hpp>
#include <uni20/symmetry/block_tensor_space_traits.hpp>
#include <uni20/symmetry/block_tensor_svd.hpp>
#include <uni20/tensor_network/finite_chain.hpp>
#include <concepts>
#include <cstddef>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for two_site_split.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uni20::tensor_network::InstalledMpsBond< SingularValues, Truncation >
 Bond data retained after installing a two-site MPS split. More...
 
struct  uni20::tensor_network::TwoSiteMpsSplit< FirstSite, SecondSite, SingularValues, Truncation >
 Directionally absorbed two-site MPS factors and retained bond data. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::tensor_network
 

Enumerations

enum class  uni20::tensor_network::MpsSweepDirection { uni20::tensor_network::left_to_right , uni20::tensor_network::right_to_left }
 Direction in which a two-site split moves the MPS canonical center. More...
 

Functions

template<detail::TwoSiteSvdCenter Center, class Measurements , class Event >
requires uni20::LapackScalar<block_tensor_value_t<Center>> && performance::BatchMeasurementPolicy<Measurements, Event>
auto uni20::tensor_network::decompose_two_site_center (Center const &center, linalg::SvdOptions options, Measurements &measurements, Event batch_event)
 Factorize a canonical two-site MPS center by its internal cut with performance measurements.
 
template<detail::TwoSiteSvdCenter Center>
requires uni20::LapackScalar<block_tensor_value_t<Center>>
auto uni20::tensor_network::decompose_two_site_center (Center const &center, linalg::SvdOptions options={})
 Factorize a canonical two-site MPS center by its internal cut.
 
template<SparseBlockStorage OutputStorage = SeparateSparseBlockStorage<>, class Decomposition >
requires detail::MpsSiteStorage<OutputStorage, typename Decomposition::scalar_type>
auto uni20::tensor_network::materialize_two_site_mps_split (Decomposition const &decomposition, BlockSvdSelection< typename Decomposition::real_type > const &selection, MpsSweepDirection direction, BlockSvdMaterializationOptions options={})
 Materialize selected SVD states as a directional pair of owning MPS sites.
 
template<typename Scalar , Space Bond, Space Physical, BlockTensorStorage SiteStorage, class Decomposition >
requires std::same_as<Bond, BlockSpace> && detail::MpsSiteStorage<SiteStorage, Scalar>
auto uni20::tensor_network::replace_two_site_from_svd (FiniteMps< Scalar, Bond, Physical, SiteStorage > &mps, std::size_t first_index, Decomposition const &decomposition, BlockSvdSelection< typename Decomposition::real_type > const &selection, MpsSweepDirection direction, BlockSvdMaterializationOptions options={})
 Materialize and install a selected two-site split in a finite MPS.
 

Detailed Description

Splits a two-site center and installs directional MPS factors.