Skip to content

Excitations ​

Reference for the excitation interface, its algorithms, and the quasiparticle state types it produces. For a task-oriented walkthrough see the how-to guides. The full, canonical docstrings for the whole package live in the Library index.

Interface ​

MPSKit.excitations Function
julia
excitations(
        H, algorithm::QuasiparticleAnsatz, ψ::FiniteQP, [left_environments],
        [right_environments]; num = 1
    ) -> (energies, states)
excitations(
        H, algorithm::QuasiparticleAnsatz, ψ::InfiniteQP, [left_environments],
        [right_environments]; num = 1
    ) -> (energies, states)
excitations(
        H, algorithm::FiniteExcited, ψs::NTuple{<:Any, <:FiniteMPS};
        num = 1, init
    ) -> (energies, states)
excitations(
        H, algorithm::ChepigaAnsatz, ψ::FiniteMPS, [envs];
        num = 1, pos = length(ψ) ÷ 2
    ) -> (energies, states)
excitations(
        H, algorithm::ChepigaAnsatz2, ψ::FiniteMPS, [envs];
        num = 1, pos = length(ψ) ÷ 2
    ) -> (energies, states)

Compute the first excited states and their energy gap above a ground state.

Arguments

  • H::AbstractMPO: operator for which to find the excitations

  • algorithm: optimization algorithm

  • ψ::QP: initial quasiparticle guess

  • ψs::NTuple{N, <:FiniteMPS}: N first excited states

  • [left_environments]: left ground state environment

  • [right_environments]: right ground state environment

Keyword Arguments

  • num::Int: number of excited states to compute

  • solver: algorithm for the linear solver of the quasiparticle environments

  • init: initial excited state guess; defaults to a copy of the first state in ψs

  • pos: position of perturbation

source

Algorithms ​

MPSKit.QuasiparticleAnsatz Type
julia
struct QuasiparticleAnsatz{A, E} <: MPSKit.Algorithm

Optimization algorithm for quasi-particle excitations on top of MPS groundstates.

Constructors

julia
QuasiparticleAnsatz()
QuasiparticleAnsatz(; kwargs...)
QuasiparticleAnsatz(alg)

Create a QuasiparticleAnsatz algorithm with the given eigensolver, or by passing the keyword arguments to Arnoldi.

Fields

  • alg::Any: algorithm used for the eigenvalue solvers

  • alg_environments::Any: algorithm used for the quasiparticle environments

See also

Used as the algorithm argument of excitations.

References

source
MPSKit.FiniteExcited Type
julia
struct FiniteExcited{A} <: MPSKit.Algorithm

Variational optimization algorithm for excitations of finite MPS by minimizing the energy of

ᵢᵢᵢ

Fields

  • gsalg::Any: optimization algorithm

  • weight::Float64: energy penalty for enforcing orthogonality with previous states

See also

Used as the algorithm argument of excitations.

source
MPSKit.ChepigaAnsatz Type
julia
struct ChepigaAnsatz{A<:KrylovKit.KrylovAlgorithm} <: MPSKit.Algorithm

Single-site optimization algorithm for excitations on top of MPS groundstates.

Constructors

julia
ChepigaAnsatz()
ChepigaAnsatz(; kwargs...)
ChepigaAnsatz(alg)

Create a ChepigaAnsatz algorithm with the given eigensolver, or by passing the keyword arguments to Arnoldi.

Fields

  • alg::KrylovKit.KrylovAlgorithm: algorithm used for the eigenvalue solvers

See also

Used as the algorithm argument of excitations.

References

source
MPSKit.ChepigaAnsatz2 Type
julia
struct ChepigaAnsatz2{A<:KrylovKit.KrylovAlgorithm} <: MPSKit.Algorithm

Two-site optimization algorithm for excitations on top of MPS groundstates.

Constructors

julia
ChepigaAnsatz2()
ChepigaAnsatz2(; kwargs...)
ChepigaAnsatz2(alg, trunc)

Create a ChepigaAnsatz2 algorithm with the given eigensolver and truncation, or by passing the keyword arguments to Arnoldi.

Fields

  • alg::KrylovKit.KrylovAlgorithm: algorithm used for the eigenvalue solvers, defaults to Arnoldi(; krylovdim = 30, tol = 1.0e-10, eager = true)

  • trunc::Any: truncation strategy used when splitting the optimized two-site tensor, defaults to notrunc()

See also

Used as the algorithm argument of excitations.

References

source

Quasiparticle states ​

These are the ansatz states produced by, and passed to, excitations on top of a ground state.

MPSKit.QP Type
julia
QP{S, T1, T2}

Union of the quasiparticle excitation ansätze LeftGaugedQP and RightGaugedQP. It is used for dispatch and to share their gauge-independent interface; it is not a concrete type and cannot be constructed on its own. The internal aliases FiniteQP and InfiniteQP further restrict the ground-state type to FiniteMPS or InfiniteMPS respectively.

source
MPSKit.LeftGaugedQP Type
julia
struct LeftGaugedQP{S, T1, T2, E<:Number}

Left-gauged quasiparticle excitation ansatz on top of a matrix product state ground state. The excitation is parametrized through the left-gauge nullspace of the ground-state tensors, and the object behaves as a vector so it can be handed directly to the iterative eigensolvers used by excitations.

For a FiniteMPS ground state this represents a finite (localized) quasiparticle; for an InfiniteMPS ground state it represents a momentum eigenstate with the given momentum. When left_gs !== right_gs the ansatz describes a domain wall between the two ground states.

Constructors

julia
LeftGaugedQP(datfun, left_gs, right_gs = left_gs; sector, momentum = 0.0)

These states are normally produced by excitations with a QuasiparticleAnsatz rather than constructed directly. When constructing manually, datfun initializes the variational tensors (e.g. rand/randn), sector selects the charge sector of the excitation, and momentum sets the momentum for infinite ground states.

Fields

  • left_gs, right_gs: the ground state(s) the excitation lives on; distinct values yield a domain wall.

  • VLs: left-nullspace tensors of the ground-state AL (satisfying AL' * VL == 0).

  • Xs: the variational parameters of the ansatz.

  • momentum: the excitation momentum (used for infinite ground states).

See also

RightGaugedQP, QP

source
MPSKit.RightGaugedQP Type
julia
struct RightGaugedQP{S, T1, T2, E<:Number}

Right-gauged counterpart of LeftGaugedQP: the same quasiparticle excitation ansatz, but parametrized through the right-gauge nullspace of the ground-state tensors. It is most often obtained via convert(RightGaugedQP, ϕ) from a LeftGaugedQP rather than constructed directly.

Constructors

julia
RightGaugedQP(datfun, left_gs, right_gs = left_gs; sector, momentum = 0.0)

Fields

  • left_gs, right_gs: the ground state(s) the excitation lives on; distinct values yield a domain wall.

  • Xs: the variational parameters of the ansatz.

  • VRs: right-nullspace tensors of the ground-state AR.

  • momentum: the excitation momentum (used for infinite ground states).

See also

LeftGaugedQP, QP

source