Skip to content

ALS truncation for 3-site MPS#381

Draft
Yue-Zhengyuan wants to merge 13 commits into
QuantumKitHub:mainfrom
Yue-Zhengyuan:als-2bond
Draft

ALS truncation for 3-site MPS#381
Yue-Zhengyuan wants to merge 13 commits into
QuantumKitHub:mainfrom
Yue-Zhengyuan:als-2bond

Conversation

@Yue-Zhengyuan
Copy link
Copy Markdown
Member

@Yue-Zhengyuan Yue-Zhengyuan commented May 12, 2026

This PR adds ALS truncation for 3-site MPS, which will find its use in FU with NNN gates.

For the first and the last (third) site, the gate acts on the rank-(2, 1) reduced bond tensor. At the middle (second) site, the gate acts on the full state tensor. Therefore, in NTU/FU applications, the MPS to be truncated looks like (for iPEPS)

       ╲ ╱      
----a===m===b----
    ↓   ↓   ↓   

= implies "thickened" bond to be truncated. The dimension of left leg of a, and right leg of b is $D d$. Therefore, the size of the 3-site cluster environment is $(D^4 d^2)^2 = D^8 d^4$.

We then directly perform ALS sweeps over a, m, b (used in PhysRevB.97.174408). Note that truncated m has a large size $D^4 d$ for iPEPS, or $D^4 d^2$ for iPEPO. In comparison, truncated a and b only have size $D^2 d^2$. Therefore, we solve a, b more frequently.


I wanted to add another approach. But I realized some subtleties and decide not to include it to make this PR more focused.

Details

To avoid directly solving m, I implement a second approach following PhysRevB.87.115144, but with some slight improvements. Here, we first find the projectors (p0, ..., p4) on each bond, each only having size $D^2 d^2$:

              ╲ ╱      
----a==p0--p1==m==p2--p3==b----
    ↓          ↓          ↓   

They can be initialized with (truncated) Vidal gauge. Then, we perform ALS sweeps over (a p0), p1, p2 and (p3 b). In tests with random tensors, I find it works slightly better than factoring out bond tensors with QR/LQ and optimizing the bond tensors. But the improved cost function is always higher than the first approach, which can be seen in the test test/bondenv/3site_truncate.jl. It is also known to converge slowly, first shown in PhysRevB.97.174408 (Fig. 6b).

@codecov
Copy link
Copy Markdown

codecov Bot commented May 12, 2026

Codecov Report

❌ Patch coverage is 94.94949% with 5 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/algorithms/truncation/3site_truncation.jl 93.44% 4 Missing ⚠️
...algorithms/contractions/bondenv/als_solve_3site.jl 95.23% 1 Missing ⚠️
Files with missing lines Coverage Δ
src/algorithms/contractions/bondenv/als_solve.jl 86.88% <100.00%> (+1.97%) ⬆️
src/algorithms/time_evolution/apply_mpo.jl 100.00% <100.00%> (+0.79%) ⬆️
...algorithms/contractions/bondenv/als_solve_3site.jl 95.23% <95.23%> (ø)
src/algorithms/truncation/3site_truncation.jl 93.44% <93.44%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant