|
Uni20
Asynchronous tensor and runtime library.
|
Classes | |
| struct | SpinHalfU1Site |
| U(1)-symmetric spin-half local space and its two state charges. More... | |
Typedefs | |
| template<RealOrComplex Scalar> | |
| using | SpinHalfU1Mpo = tensor_network::FiniteMpo< Scalar, LocalSpace, LocalSpace, PackedSparseBlockStorage<> > |
| Packed finite MPO type produced by the spin-half model builders. | |
| template<RealOrComplex Scalar, BlockTensorStorage Storage = PackedSparseBlockStorage<>> | |
| using | SpinHalfU1Mps = tensor_network::FiniteMps< Scalar, BlockSpace, LocalSpace, Storage > |
| Finite MPS type produced by the spin-half model builders. | |
Enumerations | |
| enum class | SpinHalfState { up , down } |
| Physical state selected at the first site of a spin-half product pattern. More... | |
Functions | |
| template<RealOrComplex Scalar = double, BlockTensorStorage Storage = PackedSparseBlockStorage<>> requires ImmediateLocalBlockStorageFor<Storage, Scalar, 3, 2> | |
| auto | make_neel_product_mps (std::size_t length, SpinHalfU1Site const &local, SpinHalfState first=SpinHalfState::up) -> SpinHalfU1Mps< Scalar, Storage > |
| Construct a normalized alternating spin-half product MPS. | |
| template<RealOrComplex Scalar = double> | |
| auto | make_spin_half_heisenberg_mpo (std::size_t length, SpinHalfU1Site const &local, make_real_t< Scalar > exchange=make_real_t< Scalar >{1}, make_real_t< Scalar > longitudinal_field=make_real_t< Scalar >{}) -> SpinHalfU1Mpo< Scalar > |
| Construct the open spin-half Heisenberg Hamiltonian as a finite MPO. | |
| auto | make_spin_half_u1_site (std::string_view charge_name="Sz") -> SpinHalfU1Site |
| Construct the standard U(1)-symmetric spin-half local space. | |
| using uni20::models::SpinHalfU1Mpo = typedef tensor_network::FiniteMpo<Scalar, LocalSpace, LocalSpace, PackedSparseBlockStorage<> > |
Packed finite MPO type produced by the spin-half model builders.
| using uni20::models::SpinHalfU1Mps = typedef tensor_network::FiniteMps<Scalar, BlockSpace, LocalSpace, Storage> |
Finite MPS type produced by the spin-half model builders.
| Scalar | Real or complex tensor element type. |
| Storage | Block storage policy used by every MPS site. |
|
strong |
| auto uni20::models::make_neel_product_mps | ( | std::size_t | length, |
| SpinHalfU1Site const & | local, | ||
| SpinHalfState | first = SpinHalfState::up |
||
| ) | -> SpinHalfU1Mps<Scalar, Storage> |
Construct a normalized alternating spin-half product MPS.
Every bond contains one cumulative-charge sector of dimension one, and every site contains one scalar block with value one. The resulting product state is canonical from either direction.
| Scalar | Real or complex MPS element type. |
| Storage | Immediate local block storage policy used by every MPS site. |
| length | Positive number of sites. |
| local | U(1) spin-half local space. |
| first | State placed on site zero; later sites alternate. |
| std::invalid_argument | If length is zero. |
| auto uni20::models::make_spin_half_heisenberg_mpo | ( | std::size_t | length, |
| SpinHalfU1Site const & | local, | ||
| make_real_t< Scalar > | exchange = make_real_t<Scalar>{1}, |
||
| make_real_t< Scalar > | longitudinal_field = make_real_t<Scalar>{} |
||
| ) | -> SpinHalfU1Mpo<Scalar> |
Construct the open spin-half Heisenberg Hamiltonian as a finite MPO.
The Hamiltonian is exchange * sum_i S_i.S_(i+1) + longitudinal_field * sum_i S_i^z. Interior auxiliaries use [start, pending S-, pending S+, pending Sz, finish] with charges [0,-1,+1,0,0]. Both boundary auxiliaries contain only the scalar charge, so boundary index zero is the complete open-chain contraction.
| Scalar | Real or complex MPO element type. |
| length | Positive number of sites. |
| local | U(1) spin-half local space. |
| exchange | Nearest-neighbor exchange coefficient. |
| longitudinal_field | On-site longitudinal field coefficient. |
| std::invalid_argument | If length is zero. |
|
inline |
Construct the standard U(1)-symmetric spin-half local space.
| charge_name | Name of the conserved U(1) component, normally "Sz". |
| std::invalid_argument | If charge_name is empty. |