DMT

Density matrix truncation (DMT) is implemented here as an operator-space truncation backend that shares the same gate-scheduling idea as TEBD while changing the local truncation rule. The scheduler decides where gates act; the DMT kernel decides how the post-gate truncation is performed.

Minimal Workflow

using MPSToolkit
using ITensors
using ITensorMPS

nsites = 6
sites = pauli_siteinds(nsites)
state = pauli_basis_state(sites, ["Z", "I", "I", "I", "I", "I"])

gate = pauli_gate_from_hamiltonian(spinhalf_tfim_bond_hamiltonian(nsites, 1; J=1.0, g=0.6), 0.05)
schedule = collect(1:(nsites - 1))

evolution = DMTGateEvolution(
  fill(gate, length(schedule)),
  0.05;
  schedule=schedule,
  reverse_schedule=collect(reverse(schedule)),
  maxdim=16,
  cutoff=1e-10,
)

dmt_evolve!(state, evolution)

If you want to work at the lowest level, dmt_step! applies one local gate and then performs the associated DMT truncation. The scheduled driver simply repeats that step over forward and reverse schedules.

Relation To TEBD

  • LocalGateEvolution and DMTGateEvolution both represent scheduled local updates.
  • tebd_evolve! uses ordinary gate application and SVD truncation.
  • dmt_step! uses gate application followed by DMT-preserving truncation.

This keeps TEBD and DMT on the same conceptual footing instead of treating DMT as an unrelated evolution family.

API

MPSToolkit.DMTOptionsType
DMTOptions(; maxdim=30, cutoff=1e-12, gate_maxdim=480, connector_buffer=8)

Options controlling operator-space density matrix truncation.

Fields

  • maxdim: Target bond dimension after DMT truncation.
  • cutoff: Truncation cutoff used in the repair SVD.
  • gate_maxdim: Temporary bond dimension budget used during raw gate application.
  • connector_buffer: Number of connector directions protected before reduced-matrix truncation.
source
MPSToolkit.DMTGateEvolutionType
DMTGateEvolution

Configuration for scheduled operator-space DMT evolution.

Fields

  • gate: Dense local gate specification in the Pauli basis.
  • dt: Logical time increment associated with one full DMT evolution call.
  • schedule: Forward update schedule.
  • reverse_schedule: Reverse update schedule used for the backward sweep.
  • nstep: Number of complete forward-plus-reverse sweeps per evolve! call.
  • maxdim: Target post-DMT bond dimension.
  • cutoff: Truncation cutoff used in the final repair SVD.
  • gate_maxdim: Temporary bond dimension budget used for raw gate application.
  • connector_buffer: Number of connector modes protected during reduced-matrix truncation.
source
MPSToolkit.dmt_step!Function
dmt_step!(psi, gate, bond; maxdim=30, cutoff=1e-12, direction=:R, gate_maxdim=max(maxdim * 16, 64), connector_buffer=8)

Apply one local operator-space gate and then perform DMT-preserving truncation.

Arguments

  • psi: Operator-space MPS to mutate in place.
  • gate: Dense local gate in the Pauli basis.
  • bond: Left-edge location of the local update.

Keyword Arguments

  • maxdim: Target post-truncation bond dimension.
  • cutoff: Truncation cutoff used in the final repair SVD.
  • direction: Sweep direction, either :R or :L.
  • gate_maxdim: Temporary bond dimension budget used for the raw gate application.
  • connector_buffer: Number of protected connector directions.

Returns

  • The mutated psi.
source
MPSToolkit.dmt_evolve!Function
dmt_evolve!(psi, evo::DMTGateEvolution)

Run scheduled operator-space DMT evolution.

Arguments

  • psi: Operator-space MPS to mutate in place.
  • evo: DMTGateEvolution describing the gate specification, schedules, and truncation budgets.

Returns

  • The mutated and normalized psi.

Notes

  • One call runs evo.nstep complete forward-and-reverse sweeps.
  • normalize!(psi) is applied at the end because operator-space trajectories typically interpret the state as a normalized vectorized operator.
source

Examples

References