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

Constructs and updates symmetry-preserving MPO environments. More...

#include <uni20/async/debug_scheduler.hpp>
#include <uni20/core/scalar_concepts.hpp>
#include <uni20/linalg/elementwise_functions.hpp>
#include <uni20/linalg/ops/contract.hpp>
#include <uni20/symmetry/block_tensor_concepts.hpp>
#include <uni20/symmetry/block_tensor_space_traits.hpp>
#include <uni20/tensor/conjugate.hpp>
#include <uni20/tensor/tensor.hpp>
#include <uni20/tensor/transform.hpp>
#include <uni20/tensor_network/site_types.hpp>
#include <algorithm>
#include <array>
#include <concepts>
#include <cstddef>
#include <numeric>
#include <ranges>
#include <stdexcept>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for environment.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  uni20
 
namespace  uni20::tensor_network
 

Functions

template<SparseBlockStorage OutputStorage = SeparateSparseBlockStorage<>, detail::EnvironmentMatrixView Environment, detail::EnvironmentMatrixView BraSite, detail::EnvironmentMpoView Mpo, detail::EnvironmentMatrixView KetSite>
requires detail::CompatibleEnvironmentUpdateScalars<Environment, BraSite, Mpo, KetSite> && detail::CompatibleLeftEnvironmentUpdateSpaces<Environment, BraSite, Mpo, KetSite> && detail::EnvironmentStorageFor<OutputStorage, block_tensor_value_t<Environment>>
auto uni20::tensor_network::extend_left_environment (Environment const &environment, BraSite const &bra_site, Mpo const &mpo, KetSite const &ket_site)
 Extend a left MPO environment across distinct bra and ket MPS sites.
 
template<SparseBlockStorage OutputStorage = SeparateSparseBlockStorage<>, detail::EnvironmentMatrixView Environment, detail::EnvironmentMatrixView Site, detail::EnvironmentMpoView Mpo>
auto uni20::tensor_network::extend_left_environment (Environment const &environment, Site const &site, Mpo const &mpo)
 Extend a left MPO environment using one site as both bra and ket.
 
template<SparseBlockStorage OutputStorage = SeparateSparseBlockStorage<>, detail::EnvironmentMatrixView Environment, detail::EnvironmentMatrixView BraSite, detail::EnvironmentMpoView Mpo, detail::EnvironmentMatrixView KetSite>
requires detail::CompatibleEnvironmentUpdateScalars<Environment, BraSite, Mpo, KetSite> && detail::CompatibleRightEnvironmentUpdateSpaces<Environment, BraSite, Mpo, KetSite> && detail::EnvironmentStorageFor<OutputStorage, block_tensor_value_t<Environment>>
auto uni20::tensor_network::extend_right_environment (Environment const &environment, BraSite const &bra_site, Mpo const &mpo, KetSite const &ket_site)
 Extend a right MPO environment across distinct bra and ket MPS sites.
 
template<SparseBlockStorage OutputStorage = SeparateSparseBlockStorage<>, detail::EnvironmentMatrixView Environment, detail::EnvironmentMatrixView Site, detail::EnvironmentMpoView Mpo>
auto uni20::tensor_network::extend_right_environment (Environment const &environment, Site const &site, Mpo const &mpo)
 Extend a right MPO environment using one site as both bra and ket.
 
template<typename Value , SparseBlockStorage Storage = SeparateSparseBlockStorage<>>
requires Scalar<Value> && detail::EnvironmentStorageFor<Storage, Value>
auto uni20::tensor_network::make_identity_mpo_environment (BlockSpace const &bond, LocalSpace const &auxiliary, std::size_t auxiliary_index) -> MpoEnvironment< Value, BlockSpace, LocalSpace, BlockSpace, Storage >
 Construct an identity MPO environment at one scalar auxiliary state.
 
template<typename Value , SparseBlockStorage Storage = SeparateSparseBlockStorage<>, class Context >
requires Scalar<Value> && detail::EnvironmentStorageFor<Storage, Value> && requires( BlockSpace const& bond, LocalSpace const& auxiliary, std::vector<typename MpoEnvironment<Value, BlockSpace, LocalSpace, BlockSpace, Storage>::key_type> keys, Context& context) { MpoEnvironment<Value, BlockSpace, LocalSpace, BlockSpace, Storage>( uninitialized, bond.symmetry(), Domain{bond, auxiliary}, Codomain{bond}, std::move(keys), context); }
auto uni20::tensor_network::make_identity_mpo_environment (BlockSpace const &bond, LocalSpace const &auxiliary, std::size_t auxiliary_index, Context &context) -> MpoEnvironment< Value, BlockSpace, LocalSpace, BlockSpace, Storage >
 Construct an identity MPO environment in an explicit leaf allocation context.
 

Detailed Description

Constructs and updates symmetry-preserving MPO environments.