Matrix Product States
Matrix product states (MPS) are compact tensor-network representations for one-dimensional quantum many-body states. PyQED uses MPS ideas for lattice models, vibrational problems, quantum chemistry DMRG prototypes, and time-dependent simulations.
MPS Ansatz
For a chain of L sites with local basis states sigma_i, an MPS writes
the wavefunction as
Each A_i is a rank-3 tensor with one physical index and two virtual bond
indices. The maximum virtual dimension D controls the expressive power:
larger D captures more entanglement but increases cost.
The Schmidt decomposition across a bond is
where the number of significant singular values determines the required bond dimension. Low-entanglement states are therefore efficient in MPS form.
Canonical Forms
MPS algorithms rely on canonical gauges. A left-canonical tensor satisfies
while a right-canonical tensor satisfies
Mixed-canonical form places an orthogonality center on one site or bond. This is the preferred representation for local optimization, expectation values, and stable time evolution.
Matrix Product Operators
Operators can be represented as matrix product operators (MPOs):
For lattice models, compact MPOs are often available analytically. For quantum chemistry, the Hamiltonian contains long-range two-electron terms and requires careful MPO construction or complementary-operator factorizations.
DMRG
The density matrix renormalization group (DMRG) variationally minimizes
within the MPS manifold. In a one-site or two-site sweep, all tensors except a local block are held fixed, producing an effective eigenvalue problem:
Sweeping repeatedly through the chain relaxes the MPS toward the ground state or targeted low-lying states.
Quantum Chemistry DMRG
In quantum chemistry, each spatial orbital or spin orbital is mapped to a site. The electronic Hamiltonian is
DMRG is useful when the active space is too large for full CI but the entanglement structure is still moderate. It can be used as a CASCI solver or as the active-space solver inside DMRG-SCF/CASSCF workflows.
Symmetries
Symmetry-adapted MPS implementations reduce cost by block-sparsifying tensors. Common symmetries include particle number, spin projection, point group labels, and total spin. PyQED contains both Abelian and prototype non-Abelian/SU(2) development paths.
For SU(2)-adapted quantum chemistry, tensors store reduced multiplet data rather than all spin components. This requires explicit Clebsch-Gordan and fusion-tree bookkeeping, but can substantially reduce the number of states needed for spin-adapted calculations.
Time-Dependent MPS
Time evolution applies
MPS time evolution can be implemented with TEBD, TDVP-like updates, Krylov local propagation, or problem-specific MPO exponentials. PyQED includes time-dependent MPS examples for model and quantum chemistry workflows.
Package Map
The MPS-related code is split across several namespaces:
pyqed.mpscontains general MPS, MPO, TEBD, DMRG, symmetry, and AutoMPO utilities.pyqed.mps.autompocontains automatic MPO construction helpers.pyqed.mps.nonabeliancontains prototype SU(2)/non-Abelian tensor and DMRG components.pyqed.qchem.dmrgcontains quantum-chemistry DMRG and DMRG-SCF-facing code.pyqed.dmrgcontains older/simple DMRG examples and prototypes.
Examples
Useful example entry points:
examples/mps/autompo.pyexamples/mps/autompo_boson.pyexamples/mps/hydrogen_chain.pyexamples/mps/nonabelian_hubbard_chain_benchmark.pyexamples/mps/nonabelian_hubbard_solver_scaling.pyexamples/qchem/dmrgscf.pyexamples/qchem/mps_domain_wall_q_tdmps.pyexamples/qchem/mps_three_electrons_q_dmrg.pyexamples/qchem/tddmrg_h2_threeway_compare.py