ITensor / ITensor/ITensorMPS.jl

[ITensors] [BUG] `randomMPS` doesn't return MPS with minimal bond dimension on the boundaries

Open
#69 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Julia
Stars
85
Forks
27
Avg merge
22m
Merged PRs (30d)
1

Description

Description of bug
Rather likely "unintended behavior" than "bug": The randomCircuitMPS function returns MPS, where the bond dimension grows starting from the end of the chain and is maximal at the first site. Usually, one would like to have the bond dimension at both the first and the last site equal to the local Hilbert space dimension and maximal at the center.

How to reproduce

using ITensors
L=8
chi=128
mps=ITensors.randomCircuitMPS(ComplexF64,sites,chi)

println(inds(mps[1]))
println(inds(mps[2]))
println(inds(mps[3]))
println()
println(inds(mps[L]))

Expected behavior
Usually, one would like to have the bond dimension at both the first and the last site equal to the local Hilbert space dimension and maximal at the center. This means the expected behavior would be

((dim=2|id=204|"S=1/2,Site,n=1"), (dim=2|id=995|"Link,l=1"))
((dim=2|id=995|"Link,l=1"), (dim=2|id=514|"S=1/2,Site,n=2"), (dim=4|id=840|"Link,l=2"))
((dim=4|id=840|"Link,l=2"), (dim=2|id=378|"S=1/2,Site,n=3"), (dim=8|id=471|"Link,l=3"))

((dim=2|id=800|"Link,l=7"), (dim=2|id=610|"S=1/2,Site,n=8"))

Actual behavior
The actual behavior is as described above:

((dim=2|id=715|"S=1/2,Site,n=1"), (dim=128|id=614|"Link,l=1"))
((dim=128|id=614|"Link,l=1"), (dim=2|id=616|"S=1/2,Site,n=2"), (dim=64|id=572|"Link,l=2"))
((dim=64|id=572|"Link,l=2"), (dim=2|id=446|"S=1/2,Site,n=3"), (dim=32|id=124|"Link,l=3"))

((dim=2|id=667|"Link,l=7"), (dim=2|id=541|"S=1/2,Site,n=8"))

Code demonstrating bug
See above.

Version information
ITensors v0.2.16

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the randomCircuitMPS entry point and run the Julia reproduction using L=8 and chi=128. Compare the first, central, and last bond dimensions with the expected boundary-minimal pattern; the work is done when both boundary bonds match the local Hilbert space dimension and the issue has regression coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
hpc
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.