Tensor-network methods for process tensors and non-Markovian quantum dynamics.
ProcessTensors.jl is a Julia package for simulating open quantum systems with matrix-product states and operators. It is built on ITensorMPS.jl and keeps the physics-facing workflow close to the equations: define a system, describe its environment, build a process tensor, and then ask what experiments that process would produce.
The same package can also be used before process tensors enter the story: closed-system Hilbert-space dynamics, vectorized Liouville-space evolution, Lindblad generators, TEBD, TDVP, driven systems, and dissipative many-body models all live under the same interface.
| Evolve quantum states | Work with Hilbert- and Liouville-space MPS/MPO objects, unitary dynamics, Lindblad evolution, TEBD, TDVP, and time-dependent Hamiltonians. |
| Build environmental memory | Construct spin and bosonic baths mode by mode, then turn their influence into an MPO process tensor with Dense() or ACE. |
| Run experiments on a process | Assemble preparations, controls, measurements, left/right actions, trace-outs, and open legs into an InstrumentSeq, then contract it with evaluate_process. |
| Reuse the same environment | Once a process tensor is built, evolve new initial states with evolve, evaluate different protocols, or probe multi-time correlations without rebuilding the bath. |
Install the latest tagged release from GitHub:
using Pkg
Pkg.add(url="https://github.com/Gauthameshwar/ProcessTensors.jl", rev="v0.2.0")For the latest development version:
using Pkg
Pkg.add(url="https://github.com/Gauthameshwar/ProcessTensors.jl")ACE() — Automated Compression of Environments — sequentially incorporates independent microscopic bath modes and compresses the temporal memory they leave behind.
That makes models such as a central spin surrounded by hundreds of bath spins, or a driven two-level system coupled to a thermal bosonic continuum, accessible without explicitly propagating the exponentially large joint environment (see the Central-spin ACE example and Thermal spin-boson ACE example for complete walkthroughs).
Define the system and one bath mode:
using ITensors
using ProcessTensors
dt = 0.1
nsteps = 24
sys = siteinds("S=1/2", 1)
bath_site = siteinds("S=1/2", 1)
bathL = liouv_sites(bath_site)
Hsys = OpSum()
Hsys += 1.0, "Sx", 1
system = spin_system(sys, Hsys)
ρbath0 = to_liouville(
to_dm(MPS(bath_site, ["Up"]));
sites=bathL,
)
Hbath = OpSum()
Hbath += 1.0, "Sx", 1
Hint = OpSum()
Hint += 1.0, "Sz", 1, "Sz", 2
mode = spin_mode(bathL, Hbath, ρbath0; coupling=Hint)
environment = spin_bath([mode])
pt = build_process_tensor(
system;
environment,
dt,
nsteps,
)Then reuse that process tensor however you like.
Follow the reduced non-Markovian trajectory:
ρ0 = to_dm(MPS(sys, ["Up"]))
trajectory = evolve(pt, ρ0)Or ask an explicit experimental question:
obs = OpSum()
obs += 1.0, "Sz", 1
seq = default_schedule(pt)
add!(seq, 0, state_preparation(ρ0))
add!(seq, nsteps, observable_measurement(obs))
expectation = evaluate_process(pt, seq)The process tensor is the reusable object in the middle: change the preparation, measurement, control sequence, or multi-time probe without reconstructing the environment.
The documentation is written as a progression rather than an API dump.
- New to the tensor-network conventions? Start with ITensor Basics and MPS and MPO Basics.
- Want open-system dynamics first? Go to Liouville-Space Basics and Dissipative Dynamics.
- Here for process tensors? Start with the Single-Mode Process Tensor tutorial, then move to the ACE examples.
- Already know the theory? Jump straight to the Examples or the API Reference.
ProcessTensors.jl is under active development. Bug reports, physics examples,
algorithm implementations, documentation improvements, and discussions about
future process-tensor methods are most welcome!
See CONTRIBUTING.md and CHANGELOG.md for development and release information.
No tensor indices were harmed during the development of this package. Several, however, were accidentally contracted with the wrong ones before eventually finding their soulmate.