|
Uni20
Asynchronous tensor and runtime library.
|
Status: functional integration-branch reference. The LocalOperator, OperatorComponent, and FiniteTriangularMPO classes described here are not present on main. Their operator, charge, and MPO semantics are requirements for the pure-Uni20 symmetry-aware tensor-network layer.
This layer is intentionally narrow.
LocalSpace is a semantic wrapper around QNumList.LocalOperator is the first concrete operator object.OperatorComponent is the per-site MPO object.FiniteTriangularMPO is the first lattice-level MPO type used by the DMRG path.docs/tensor_network/models.md.uni20::LocalSpace represents an explicit sparse state space used by the operator layer.
It is backed by QNumList, so it:
Symmetry even when emptyIn the prototype, LocalSpace was used for both:
uni20::LocalOperator is conceptually the first realization of a symmetry-aware morphism whose domain contains the ket local space and whose codomain contains the bra local space, with the operator irrep as a second domain factor:
but the prototype used a dedicated class rather than a generic tensor instantiation. This follows the independent concrete-space/Dual<S> and Domain/Codomain model in Spaces, Duals, and Tensor Morphisms; it does not require a co<LocalSpace> direction wrapper.
It stores:
bra_spaceket_spacetransforms_as()The prototype coefficient storage was SparseMatrix<double>.
uni20::OperatorComponent is the next level up.
It represents one site component of an MPO-like object:
LocalOperatorThis matches the practical point of view that a site of an MPO is a matrix of local operators, not primarily a generic four-leg tensor.
OperatorComponent also exposes a separate is_upper_triangular(...) predicate on its virtual indices. For rectangular components, the branch convention forbade entries strictly below the main diagonal.
uni20::FiniteTriangularMPO is the first lattice-level MPO container.
It stored a finite sequence of OperatorComponent sites and enforced:
This is intentionally much narrower than a full MPO class hierarchy.
The prototype LocalSpace supported:
Symmetry, QNum, or QNumListsymmetry(), size(), empty()push_back(), clear()contains()qnums()The prototype LocalOperator supported:
bra_space, ket_space, and transforms_asbra_space(), ket_space(), symmetry()transforms_as()rows(), cols(), nnz()insert_or_assign(), erase(), contains(), at(), and clear()The prototype OperatorComponent supported:
LocalSpacesLocalOperatorlocal_bra_space(), local_ket_space()left_virtual_space(), right_virtual_space(), symmetry()rows(), cols(), nnz()insert_or_assign(), erase(), contains(), at(), and clear()is_upper_triangular(component)The prototype FiniteTriangularMPO supported:
size(), empty(), indexed access, iterationsymmetry()left_boundary_virtual_space(), right_boundary_virtual_space()check_structure()is_upper_triangular(mpo)The intended next steps are:
OperatorComponent