Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 0 additions & 33 deletions CHANGELOG.md

This file was deleted.

10 changes: 5 additions & 5 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Van Damme"
given-names: "Maarten"
orcid: "https://orcid.org/0000-0002-1558-0568"
- family-names: "Devos"
given-names: "Lukas"
orcid: "https://orcid.org/0000-0002-0256-4200"
- family-names: "Van Damme"
given-names: "Maarten"
orcid: "https://orcid.org/0000-0002-1558-0568"
- family-names: "Haegeman"
given-names: "Jutho"
orcid: "https://orcid.org/0000-0002-0858-291X"

title: "MPSKit"
version: 0.13.5
version: 0.13.9
doi: 10.5281/zenodo.10654900
date-released: 2025-09-05
date-released: 2026-02-03
url: "https://github.com/QuantumKitHub/MPSKit.jl"
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "MPSKit"
uuid = "bb1c41ca-d63c-52ed-829e-0820dda26502"
version = "0.13.8"
version = "0.13.9"
authors = "Lukas Devos, Maarten Van Damme and contributors"

[deps]
Expand Down
1 change: 1 addition & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ makedocs(;
"Examples" => "examples/index.md",
"Library" => "lib/lib.md",
"References" => "references.md",
"Changelog" => "changelog.md",
],
checkdocs = :exports,
doctest = true,
Expand Down
79 changes: 79 additions & 0 deletions docs/src/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Guidelines for updating this changelog

When making changes to this project, please update the "Unreleased" section with your changes under the appropriate category:

- **Added** for new features.
- **Changed** for changes in existing functionality.
- **Deprecated** for soon-to-be removed features.
- **Removed** for now removed features.
- **Fixed** for any bug fixes.

When releasing a new version, move the "Unreleased" changes to a new version section with the release date.

## [Unreleased](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.9...HEAD)

### Added

### Changed

### Deprecated

### Removed

### Fixed

## [0.13.9](https://github.com/QuantumKitHub/MPSKit.jl/compare/v0.13.8...v0.13.9) - 2026-02-03

### Added

- `LocalPreferences.toml` file to ensure `TensorOperations` properly precompiles on testing
infrastructure
- `GeometryStyle` and `OperatorStyle` traits for dispatching on finite/infinite geometry and
operator types ([#352](https://github.com/QuantumKitHub/MPSKit.jl/pull/352), [#354](https://github.com/QuantumKitHub/MPSKit.jl/pull/354))
- `Base.isfinite` methods for MPS types ([#347](https://github.com/QuantumKitHub/MPSKit.jl/pull/347))
- Bose-Hubbard example ([#342](https://github.com/QuantumKitHub/MPSKit.jl/pull/342))
- WindowMPS example update ([#350](https://github.com/QuantumKitHub/MPSKit.jl/pull/350))
- Multifusion category compatibility ([#297](https://github.com/QuantumKitHub/MPSKit.jl/pull/297))

### Fixed

- Dynamic tolerances yielded `NaN` during the initialization stage due to `1 / sqrt(iter)`
where `iter = 0` ([#335](https://github.com/QuantumKitHub/MPSKit.jl/pull/335))
- `InfiniteMPOHamiltonian` environments with low bond dimension and high Krylov dimension now are properly
clamped ([#335](https://github.com/QuantumKitHub/MPSKit.jl/pull/335))
- Logical operator precedence in `getproperty` function ([#346](https://github.com/QuantumKitHub/MPSKit.jl/pull/346))
- Typo in `VUMPSSvdCut` ([#361](https://github.com/QuantumKitHub/MPSKit.jl/pull/361))
- Typo in time formatting for logs ([#336](https://github.com/QuantumKitHub/MPSKit.jl/pull/336))
- Domain/codomain of `MPODerivativeOperator` ([#370](https://github.com/QuantumKitHub/MPSKit.jl/pull/370))
- In-place operations handled more carefully ([#337](https://github.com/QuantumKitHub/MPSKit.jl/pull/337))
- Orthogonalization algorithms now use correct methods ([#373](https://github.com/QuantumKitHub/MPSKit.jl/pull/373))

### Changed

- The `changebonds(state, ::RandExpand)` algorithm now no longer has to perform a
truncated SVD to obtain the desired spaces, and instead sample the space directly
and then generates a random isometry. This should be slightly more performant, but
otherwise equivalent ([#335](https://github.com/QuantumKitHub/MPSKit.jl/pull/335))
- `IDMRG` refactored to follow the `IterativeSolver` interface and share code between
`IDMRG` and `IDMRG2` ([#348](https://github.com/QuantumKitHub/MPSKit.jl/pull/348))
- Bumped compatibility for TensorKit 0.16 and MatrixAlgebraKit 0.6 ([#365](https://github.com/QuantumKitHub/MPSKit.jl/pull/365))
- Removed `_left_orth` and `_right_orth` workarounds in favor of new orthogonalization methods
- Reduced allocation while computing Galerkin error ([#366](https://github.com/QuantumKitHub/MPSKit.jl/pull/366))
- Updated `show` methods to reflect new TensorKit printing ([#341](https://github.com/QuantumKitHub/MPSKit.jl/pull/341))
- More informative errors for finite MPS ([#367](https://github.com/QuantumKitHub/MPSKit.jl/pull/367))
- Minor documentation and docstring improvements ([#363](https://github.com/QuantumKitHub/MPSKit.jl/pull/363), [#372](https://github.com/QuantumKitHub/MPSKit.jl/pull/372), [#371](https://github.com/QuantumKitHub/MPSKit.jl/pull/371))

### Deprecated

### Removed

## [0.13.8](https://github.com/QuantumKitHub/MPSKit.jl/releases/tag/v0.13.8) - 2024-10-31

See full history and previous releases on [GitHub](https://github.com/QuantumKitHub/MPSKit.jl/releases).
6 changes: 3 additions & 3 deletions docs/src/examples/classic2d/1.hard-hexagon/index.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/src/examples/classic2d/1.hard-hexagon/main.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,11 @@
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.12.0"
"version": "1.12.4"
},
"kernelspec": {
"name": "julia-1.12",
"display_name": "Julia 1.12.0",
"display_name": "Julia 1.12.4",
"language": "julia"
}
},
Expand Down
129 changes: 60 additions & 69 deletions docs/src/examples/quantum1d/1.ising-cft/index.md

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/src/examples/quantum1d/1.ising-cft/main.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
{
"cell_type": "markdown",
"source": [
"The hamiltonian is defined on a finite lattice with periodic boundary conditions,\n",
"The Hamiltonian is defined on a finite lattice with periodic boundary conditions,\n",
"which can be implemented as follows:"
],
"metadata": {}
Expand All @@ -45,8 +45,8 @@
"## Exact diagonalisation\n",
"\n",
"In MPSKit, there is support for exact diagonalisation by leveraging the fact that applying\n",
"the hamiltonian to an untruncated MPS will result in an effective hamiltonian on the center\n",
"site which implements the action of the entire hamiltonian. Thus, optimizing the middle\n",
"the Hamiltonian to an untruncated MPS will result in an effective Hamiltonian on the center\n",
"site which implements the action of the entire Hamiltonian. Thus, optimizing the middle\n",
"tensor is equivalent to optimixing a state in the entire Hilbert space, as all other tensors\n",
"are just unitary matrices that mix the basis."
],
Expand Down Expand Up @@ -108,7 +108,7 @@
{
"cell_type": "markdown",
"source": [
"We can then calculate the momentum of the groundstate as the expectation value of this\n",
"We can then calculate the momentum of the ground state as the expectation value of this\n",
"operator. However, there is a subtlety because of the degeneracies in the energy\n",
"eigenvalues. The eigensolver will find an orthonormal basis within each energy subspace, but\n",
"this basis is not necessarily a basis of eigenstates of the translation operator. In order\n",
Expand Down Expand Up @@ -203,7 +203,7 @@
{
"cell_type": "markdown",
"source": [
"Excitations on top of the groundstate can be found through the use of the quasiparticle\n",
"Excitations on top of the ground state can be found through the use of the quasiparticle\n",
"ansatz. This returns quasiparticle states, which can be converted to regular `FiniteMPS`\n",
"objects."
],
Expand Down Expand Up @@ -260,11 +260,11 @@
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.12.0"
"version": "1.12.4"
},
"kernelspec": {
"name": "julia-1.12",
"display_name": "Julia 1.12.0",
"display_name": "Julia 1.12.4",
"language": "julia"
}
},
Expand Down
24 changes: 12 additions & 12 deletions docs/src/examples/quantum1d/2.haldane/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ En_2, st_2 = excitations(H, QuasiparticleAnsatz(), ψ, envs; sector = SU2Irrep(2
````

````
0.7989253589480493
0.798925358948053
````

We can go even further and doublecheck the claim that ``S = 1`` is an edge excitation, by plotting the energy density.
Expand Down Expand Up @@ -102,7 +102,7 @@ f = fit(Ls .^ (-2), ΔEs, 1)
````

````
0.4517340158584577
0.4517340158584072
````

````julia
Expand Down Expand Up @@ -140,23 +140,23 @@ println("minimum @k = $(kspace[idx]):\t ΔE = $(ΔE)")
````

````
[ Info: Found excitations for momentum = 1.8849555921538759
[ Info: Found excitations for momentum = 1.6755160819145563
[ Info: Found excitations for momentum = 2.0943951023931953
[ Info: Found excitations for momentum = 1.4660765716752369
[ Info: Found excitations for momentum = 0.0
[ Info: Found excitations for momentum = 0.20943951023931953
[ Info: Found excitations for momentum = 0.41887902047863906
[ Info: Found excitations for momentum = 0.6283185307179586
[ Info: Found excitations for momentum = 0.8377580409572781
[ Info: Found excitations for momentum = 1.0471975511965976
[ Info: Found excitations for momentum = 1.2566370614359172
[ Info: Found excitations for momentum = 1.4660765716752369
[ Info: Found excitations for momentum = 1.6755160819145563
[ Info: Found excitations for momentum = 1.8849555921538759
[ Info: Found excitations for momentum = 2.0943951023931953
[ Info: Found excitations for momentum = 2.9321531433504737
[ Info: Found excitations for momentum = 0.41887902047863906
[ Info: Found excitations for momentum = 2.303834612632515
[ Info: Found excitations for momentum = 0.6283185307179586
[ Info: Found excitations for momentum = 2.5132741228718345
[ Info: Found excitations for momentum = 1.0471975511965976
[ Info: Found excitations for momentum = 2.722713633111154
[ Info: Found excitations for momentum = 2.9321531433504737
[ Info: Found excitations for momentum = 3.141592653589793
minimum @k = 3.141592653589793: ΔE = 0.41047924851920886
[ Info: Found excitations for momentum = 0.8377580409572781
minimum @k = 3.141592653589793: ΔE = 0.410479248594856

````

Expand Down
12 changes: 6 additions & 6 deletions docs/src/examples/quantum1d/2.haldane/main.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@
{
"cell_type": "markdown",
"source": [
"The Heisenberg model is defined by the following hamiltonian:\n",
"The Heisenberg model is defined by the following Hamiltonian:\n",
"\n",
"$$\n",
"H = -J∑_{⟨i,j⟩} (X_i X_j + Y_i Y_j + Z_i Z_j)\n",
"$$\n",
"\n",
"This hamiltonian has an SU(2) symmetry, which we can enforce by using SU(2)-symmetric tensors:"
"This Hamiltonian has an SU(2) symmetry, which we can enforce by using SU(2)-symmetric tensors:"
],
"metadata": {}
},
Expand All @@ -49,7 +49,7 @@
"## Finite size extrapolation\n",
"\n",
"We can start the analysis using finite-size methods.\n",
"The groundstate of this model can be approximated using finite MPS through the use of DMRG.\n",
"The ground state of this model can be approximated using finite MPS through the use of DMRG.\n",
"\n",
"The typical way to find excited states is to minimize the energy while adding an error term\n",
"$$λ \\left|gs\\right> \\left< gs\\right|$$\n",
Expand Down Expand Up @@ -144,7 +144,7 @@
"A much nicer way of obtaining the Haldane gap is by working directly in the thermodynamic limit.\n",
"As was already hinted at by the edge modes, this model is in a non-trivial SPT phase.\n",
"Thus, care must be taken when selecting the symmetry sectors.\n",
"The groundstate has half-integer edge modes, thus the virtual spaces must also all carry half-integer charges.\n",
"The ground state has half-integer edge modes, thus the virtual spaces must also all carry half-integer charges.\n",
"\n",
"In contrast with the finite size case, we now should specify a momentum label to the excitations.\n",
"This way, it is possible to scan the dispersion relation over the entire momentum space."
Expand Down Expand Up @@ -187,11 +187,11 @@
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.12.0"
"version": "1.12.4"
},
"kernelspec": {
"name": "julia-1.12",
"display_name": "Julia 1.12.0",
"display_name": "Julia 1.12.4",
"language": "julia"
}
},
Expand Down
31 changes: 15 additions & 16 deletions docs/src/examples/quantum1d/3.ising-dqpt/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@ H₀ = transverse_field_ising(FiniteChain(L); g = -0.5)
````

````
[ Info: DMRG init: obj = +9.814858589284e+00 err = 6.2050e-01
[ Info: DMRG 1: obj = -2.040021714839e+01 err = 2.3171232950e-03 time = 0.03 sec
[ Info: DMRG 2: obj = -2.040021715177e+01 err = 2.1683169804e-07 time = 0.02 sec
[ Info: DMRG 3: obj = -2.040021782399e+01 err = 3.6729918367e-05 time = 0.06 sec
[ Info: DMRG 4: obj = -2.040021786693e+01 err = 1.5200955823e-06 time = 0.03 sec
[ Info: DMRG 5: obj = -2.040021786703e+01 err = 2.8646117610e-07 time = 0.03 sec
[ Info: DMRG conv 6: obj = -2.040021786703e+01 err = 7.0484493208e-11 time = 0.18 sec
[ Info: DMRG init: obj = +1.000110728540e+01 err = 1.6485e-01
[ Info: DMRG 1: obj = -2.040021714732e+01 err = 2.0639142207e-02 time = 0.05 sec
[ Info: DMRG 2: obj = -2.040021715172e+01 err = 4.6522148018e-07 time = 0.02 sec
[ Info: DMRG 3: obj = -2.040021780162e+01 err = 3.6601066271e-05 time = 0.07 sec
[ Info: DMRG 4: obj = -2.040021786698e+01 err = 1.6025039584e-06 time = 0.04 sec
[ Info: DMRG 5: obj = -2.040021786703e+01 err = 1.6324890445e-07 time = 0.03 sec
[ Info: DMRG conv 6: obj = -2.040021786703e+01 err = 7.7060474652e-11 time = 0.23 sec

````

Expand Down Expand Up @@ -111,14 +111,13 @@ H₀ = transverse_field_ising(; g = -0.5)
````

````
[ Info: VUMPS init: obj = +4.868298549128e-01 err = 3.9079e-01
[ Info: VUMPS 1: obj = -1.058483590962e+00 err = 7.5407605847e-02 time = 7.02 sec
[ Info: VUMPS 2: obj = -1.063544286238e+00 err = 3.1160989378e-04 time = 0.01 sec
[ Info: VUMPS 3: obj = -1.063544409943e+00 err = 5.9017642250e-06 time = 0.01 sec
[ Info: VUMPS 4: obj = -1.063544409973e+00 err = 1.5639699231e-07 time = 0.00 sec
[ Info: VUMPS 5: obj = -1.063544409973e+00 err = 5.8340710042e-09 time = 0.00 sec
[ Info: VUMPS 6: obj = -1.063544409973e+00 err = 3.3087676594e-10 time = 0.00 sec
[ Info: VUMPS conv 7: obj = -1.063544409973e+00 err = 3.9690136612e-11 time = 7.05 sec
[ Info: VUMPS init: obj = +4.821692686834e-01 err = 3.7170e-01
[ Info: VUMPS 1: obj = -1.062759988951e+00 err = 2.3248148483e-02 time = 4.48 sec
[ Info: VUMPS 2: obj = -1.063544409807e+00 err = 1.3008047000e-05 time = 0.01 sec
[ Info: VUMPS 3: obj = -1.063544409973e+00 err = 1.7599807614e-07 time = 0.01 sec
[ Info: VUMPS 4: obj = -1.063544409973e+00 err = 9.6477135912e-09 time = 0.01 sec
[ Info: VUMPS 5: obj = -1.063544409973e+00 err = 4.4909944158e-10 time = 0.01 sec
[ Info: VUMPS conv 6: obj = -1.063544409973e+00 err = 4.9916284444e-11 time = 4.52 sec

````

Expand All @@ -130,7 +129,7 @@ dot(ψ₀, ψ₀)
````

````
1.000000000000001 - 2.1950801504054652e-16im
0.9999999999999987 + 1.749244813012143e-16im
````

so the Loschmidt echo takes on the pleasant form
Expand Down
Loading