Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage > Class Template Reference

Homogeneous finite MPO owner with exact auxiliary connectivity. More...

#include <finite_chain.hpp>

Public Types

using auxiliary_space_type = Auxiliary
 
using physical_space_type = Physical
 
using site_type = MpoSite< Scalar, Auxiliary, Physical, Auxiliary, Physical, Storage >
 
using storage_policy = Storage
 
using value_type = std::remove_cv_t< Scalar >
 

Public Member Functions

 FiniteMpo (std::vector< site_type > sites)
 Construct a nonempty chain and validate every shared auxiliary.
 
void replace_site (std::size_t index, site_type replacement)
 Replace one MPO site without changing any of its spaces.
 
auto revision (std::size_t index) const -> std::size_t
 Return the revision of one site.
 
auto site (std::size_t index) const -> site_type const &
 Return one read-only site.
 
auto sites () const noexcept -> std::span< site_type const >
 Return all sites in left-to-right order.
 
auto size () const noexcept -> std::size_t
 Return the number of sites.
 
auto symmetry () const -> Symmetry
 Return the common symmetry context.
 

Detailed Description

template<typename Scalar, Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
class uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >

Homogeneous finite MPO owner with exact auxiliary connectivity.

MPO sites are exposed read-only and may be replaced only without changing their spaces.

Template Parameters
ScalarNumerical MPO element type.
AuxiliaryConcrete left and right auxiliary-space type.
PhysicalConcrete input and output physical-space type.
StorageBlock storage policy used by every site.

Member Typedef Documentation

◆ auxiliary_space_type

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
using uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::auxiliary_space_type = Auxiliary

◆ physical_space_type

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
using uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::physical_space_type = Physical

◆ site_type

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
using uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::site_type = MpoSite<Scalar, Auxiliary, Physical, Auxiliary, Physical, Storage>

◆ storage_policy

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
using uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::storage_policy = Storage

◆ value_type

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
using uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::value_type = std::remove_cv_t<Scalar>

Constructor & Destructor Documentation

◆ FiniteMpo()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::FiniteMpo ( std::vector< site_type >  sites)
inlineexplicit

Construct a nonempty chain and validate every shared auxiliary.

Parameters
sitesOrdered MPO sites from left to right.
Exceptions
std::invalid_argumentIf the chain is empty, mixes symmetries, or contains unequal adjacent auxiliary spaces.

Member Function Documentation

◆ replace_site()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
void uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::replace_site ( std::size_t  index,
site_type  replacement 
)
inline

Replace one MPO site without changing any of its spaces.

Parameters
indexZero-based site index.
replacementNew site with exactly equal domain and codomain.
Exceptions
std::invalid_argumentIf symmetry or spaces differ.
std::out_of_rangeIf index is outside the chain.

◆ revision()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
auto uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::revision ( std::size_t  index) const -> std::size_t
inline

Return the revision of one site.

Parameters
indexZero-based site index.
Exceptions
std::out_of_rangeIf index is outside the chain.

◆ site()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
auto uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::site ( std::size_t  index) const -> site_type const&
inline

Return one read-only site.

Parameters
indexZero-based site index.
Exceptions
std::out_of_rangeIf index is outside the chain.

◆ sites()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
auto uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::sites ( ) const -> std::span<site_type const>
inlinenoexcept

Return all sites in left-to-right order.

◆ size()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
auto uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::size ( ) const -> std::size_t
inlinenoexcept

Return the number of sites.

◆ symmetry()

template<typename Scalar , Space Auxiliary, Space Physical, BlockTensorStorage Storage = SeparateSparseBlockStorage<>>
auto uni20::tensor_network::FiniteMpo< Scalar, Auxiliary, Physical, Storage >::symmetry ( ) const -> Symmetry
inline

Return the common symmetry context.


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