Skip to content

Repository files navigation

MPSKit.jl

DOI CI PkgEval Codecov

Tensor network algorithms based on matrix product states (MPS) and matrix product operators (MPO), for (quasi) one-dimensional quantum lattices and two-dimensional statistical mechanics models, as well as quantum circuit simulation or boundary-MPS methods. This library highlights support for both finite systems and systems directly in the thermodynamic limit, and both have a large variety of implemented algorithms.

MPSKit builds on TensorKit.jl for its tensors, which makes abelian, non-abelian, fermionic and anyonic symmetries available throughout. The toolbox covers ground states and leading boundary states, real and imaginary time evolution, excitation spectra, and more.

The documentation contains the manual and the full API reference. The examples work through complete calculations, from ground states to dynamical correlators.

Installation

MPSKit is registered in the Julia general registry, and often is best combined with TensorKit.jl and MPSKitModels.jl.

pkg> add MPSKit TensorKit MPSKitModels

TensorKit.jl provides the tensors and their symmetry sectors, and MPSKitModels.jl a library of common operators, Hamiltonians and statistical mechanics models. Symmetries beyond the ones TensorKit itself ships with come from extension packages, such as SUNRepresentations.jl for SU(N).

Quickstart

Sweeping the transverse field of the Ising model in the thermodynamic limit and measuring the magnetization:

using MPSKit, MPSKitModels, TensorKit
using ProgressMeter, Plots # for demonstration purposes

D = 4 # bonddimension
init_state = InfiniteMPS(ℂ^2, ℂ^D)

g_values = 0.1:0.1:2

M = @showprogress map(g_values) do g
    H = transverse_field_ising(; g=g)
    groundstate, environment, δ = find_groundstate(init_state, H, VUMPS(; verbosity=0))
    return abs(expectation_value(groundstate, 1 => σᶻ()))
end

scatter(g_values, M, xlabel="g", ylabel="M", label="D=$D", title="Magnetization")

Magnetization

The order parameter vanishes at g ≥ 1, where the chain becomes critical and transitions to the disordered phase. Replacing the InfiniteMPS with a FiniteMPS and the ground-state algorithm to DMRG runs the same sweep on a finite chain instead; the examples cover that case along with time evolution, excitations and two-dimensional partition functions.

Getting help and contributing

MPSKit is under active development and new algorithms are added regularly. Questions and general discussion belong on GitHub Discussions, bug reports and feature requests in the issue tracker. See CONTRIBUTING.md if you would like to contribute code or documentation.

Citing

If you use MPSKit.jl in your research, please cite it. See CITATION.cff for the up-to-date citation metadata, or use the BibTeX entry below.

Please consider citing TensorKit.jl as well. It provides the (symmetric) tensors that MPSKit is built on, and does much of the heavy lifting behind every algorithm here.

@software{mpskitjl,
  author  = {Devos, Lukas and Van Damme, Maarten and Haegeman, Jutho},
  title   = {{MPSKit.jl}},
  version = {v0.13.13},
  doi     = {10.5281/zenodo.10654900},
  url     = {https://github.com/QuantumKitHub/MPSKit.jl},
  year    = {2026}
}

@article{tensorkitjl,
  author  = {Devos, Lukas and Haegeman, Jutho},
  title   = {{TensorKit.jl}: A Julia package for large-scale tensor computations, with a hint of category theory},
  journal = {arXiv preprint arXiv:2508.10076},
  doi     = {10.48550/arXiv.2508.10076},
  year    = {2025}
}

About

A Julia package dedicated to simulating quantum many-body systems using Matrix Product States (MPS)

Topics

Resources

Contributing

Stars

279 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages