Skip to content

Internals

Non-public API

The symbols documented on this page are internal: they are unexported, not part of the public API, and may change or be removed in any release without notice or a deprecation cycle. They are collected here as a reference for contributors and advanced users reading the source, not as a stable interface to build on. For the supported surface see the Public API. Experimental features (for example the current GPU support, discussed in Parallelism and GPU support) are likewise unstable and subject to change.

Effective (derivative) operators

The local eigenvalue and time-evolution problems solved by DMRG, VUMPS, TDVP and friends are phrased in terms of effective "derivative" operators acting on a single gauge tensor. These are built internally from the Hamiltonian and the surrounding environments.

MPSKit.DerivativeOperator Type
julia
DerivativeOperator

Abstract supertype for derivative operators acting on MPS. These operators are used to represent the effective local operators obtained from taking the partial derivative of an MPS-MPO-MPS sandwich.

source
MPSKit.C_hamiltonian Function
julia
C_hamiltonian(site, below, operator, above, envs)::DerivativeOperator

Effective zero-site local operator acting at site.

julia
 ┌─   ─┐ 
 │     │ 
┌┴┐   ┌┴┐
│ ├───┤ │
└┬┘   └┬┘
 │     │ 
 └─   ─┘

See also C_projection.

source
MPSKit.AC_hamiltonian Function
julia
AC_hamiltonian(site, below, operator, above, envs)::DerivativeOperator

Effective one-site local operator acting at site.

julia
 ┌───   ───┐ 
 │    │    │ 
┌┴┐ ┌─┴─┐ ┌┴┐
│ ├─┤   ├─┤ │
└┬┘ └─┬─┘ └┬┘
 │    │    │ 
 └───   ───┘

See also AC_projection.

source
MPSKit.AC2_hamiltonian Function
julia
AC2_hamiltonian(site, below, operator, above, envs)

Effective two-site local operator acting at site.

julia
 ┌──        ──┐ 
 │   │    │   │ 
┌┴┐┌─┴─┐┌─┴─┐┌┴┐
│ ├┤   ├┤   ├┤ │
└┬┘└─┬─┘└─┬─┘└┬┘
 │   │    │   │ 
 └──        ──┘

See also AC2_projection.

source

Transfer matrices

Low-level application of (regularized) transfer matrices to boundary vectors, used when building infinite-MPS environments.

MPSKit.transfer_left Function
julia
transfer_left(v, A, Ā)

apply a transfer matrix to the left.

julia
 ┌─A─
-v │
 └─Ā─
source
MPSKit.transfer_right Function
julia
transfer_right(v, A, Ā)

apply a transfer matrix to the right.

julia
─A─┐
 │ v-
─Ā─┘
source

Environment algorithm resolution

Helpers that pick and instantiate the iterative solver used to compute environments for a given bra/operator/ket combination.

MPSKit.environment_alg Function
julia
environment_alg(below, operator, above; kwargs...)

Determine an appropriate algorithm for computing the environments, based on the given kwargs....

source
MPSKit.resolve_environment_solver Function
julia
resolve_environment_solver(alg, below, operator, above)

Resolve an environment algorithm alg into a concrete iterative solver for the given problem. A KrylovKit algorithm is returned as-is; the DefaultAlgorithm/DynamicTol configuration wrappers are translated via environment_alg.

source

Defaults and scheduling

Global configuration lives in the MPSKit.Defaults submodule, including the multi-threading scheduler used across the package.

MPSKit.Defaults Module
julia
module Defaults

Some default values and settings for MPSKit.

source
MPSKit.Defaults.set_scheduler! Function
julia
set_scheduler!([scheduler]; kwargs...)

Set the OhMyThreads multi-threading scheduler parameters.

The function either accepts a scheduler as an OhMyThreads.Scheduler or as a symbol where the corresponding parameters are specified as keyword arguments. For a detailed description of all schedulers and their keyword arguments consult the OhMyThreads documentation.

source