DMT

Transport-specific algorithm

DMT is a transport-specific truncation scheme. Its core truncation step protects the identity component of the vectorized operator at every bond, which is the right bias for transport observables (e.g. spin or energy diffusion) but not for general operator-space tasks. If your problem does not have a transport structure, use ordinary TEBD truncation (LocalGateEvolution) in operator space instead.

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 (DMT).

Transport-specific algorithm

DMT is a specialized truncation scheme designed for transport (e.g. spin or energy diffusion) in operator space. It protects local reduced operator data, including the identity/trace component and nearby Pauli components, before truncating connected long-range correlations. For general operator-space evolution without this transport bias, use ordinary TEBD truncation (LocalGateEvolution) instead.

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.

Transport-specific algorithm

DMT is designed for transport problems (e.g. spin or energy diffusion) in operator space. Its truncation rule protects local reduced operator data, including the identity/trace component and nearby Pauli components, before truncating connected long-range correlations. For general-purpose operator-space TEBD, use LocalGateEvolution.

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.

This is a transport-specific truncation step. See DMTOptions for when DMT is (and is not) the appropriate choice.

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 before DMT truncates the bond back to maxdim. A large gate_maxdim lets the gate inflate the bond prior to truncation, which can reduce accuracy at small connector_buffer; choose it together with maxdim and connector_buffer rather than independently.
  • connector_buffer: Number of protected connector directions.

Returns

  • The mutated psi.
source
dmt_step!(psi, gate, bond, opts::DMTOptions; direction=:R)

Apply one DMT step using the truncation settings bundled in a DMTOptions. This is a convenience overload of dmt_step! that forwards opts fields to the keyword form.

Returns

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

Run scheduled operator-space DMT evolution.

This driver is intended for transport simulations (e.g. spin or energy diffusion). See DMTOptions for the transport-specific assumptions built into DMT truncation.

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