[v1.1.0] - 2025-11-11

Release Notes

This release contains only two major changes, the support for Dipole Conservation, as well as the introduction of autoformatting and stricter linting rules (and corresponding formatting fixes throughout the codebase).

Changelog

Added

  • Added support for symmetries, where the charges explicitly depend on position, see Dipole Conservation.

  • Added a new base class MPSGeometry that abstracts common properties and methods of tensor networks with the linear geometry of e.g. MPS. The MPO class, as well as Environments also subclass from MPSGeometry. Most notably, a new attribute unit_cell_width was introduced. It is also an argument to the __init__ and most classmethods of MPS, MPO, etc. For backwards-compatibility, it is optional for now, with a default value that assumes a Chain lattice.

Changed

  • For infinite MPS (MPS with bc='infinite'), we now only store L singular values instead of L + 1 in the _S attribute. The _S[L] entry always was equal to _S[0] anyway. With the incorporation of shift-symmetry, i.e. symmetries that depend on spatial position, we need to distinguish the concept of the singular values to the right of the last site from the singular values left of the first site, since they differ by a spatial translation. Singular values should only be accessed via the methods get_SL(), get_SR(), set_SL(), and set_SR() anyway, so we consider this a backwards-compatible change.