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
LocalGateEvolutionandDMTGateEvolutionboth 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.DMTOptions — Type
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.
MPSToolkit.DMTGateEvolution — Type
DMTGateEvolutionConfiguration 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 perevolve!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.
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-spaceMPSto 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:Ror:L.gate_maxdim: Temporary bond dimension budget used for the raw gate application.connector_buffer: Number of protected connector directions.
Returns
- The mutated
psi.
MPSToolkit.dmt_evolve! — Function
dmt_evolve!(psi, evo::DMTGateEvolution)Run scheduled operator-space DMT evolution.
Arguments
psi: Operator-spaceMPSto mutate in place.evo:DMTGateEvolutiondescribing the gate specification, schedules, and truncation budgets.
Returns
- The mutated and normalized
psi.
Notes
- One call runs
evo.nstepcomplete forward-and-reverse sweeps. normalize!(psi)is applied at the end because operator-space trajectories typically interpret the state as a normalized vectorized operator.
Examples
References
- Stuart Yi-Thomas, Brayden Ware, Jay D. Sau, and Christopher David White, Comparing numerical methods for hydrodynamics in a one-dimensional lattice spin model
- En-Jui Kuo, Brayden Ware, Peter Lunts, Mohammad Hafezi, and Christopher David White, Energy diffusion in weakly interacting chains with fermionic dissipation-assisted operator evolution