Skip to content

Conversation

@Yue-Zhengyuan
Copy link
Member

@Yue-Zhengyuan Yue-Zhengyuan commented May 26, 2025

This PR adds the bond environment for nearest-neighbor full update, which is expressed using the CTM tensors. For the horizontal bond between sites at [r, c] and [r, c+1], the bond environment env is

    C1 --- T1 --------- T1 --- C2     r-1
    |      ‖             ‖     |
    T4 === XX ==     == YY === T2     r
    |      ‖             ‖     |
    C4 --- T3 --------- T3 --- C3     r+1
    c-1    c           c+1    c+2

where XX = X' X and YY = Y' Y, and X, Y are Q-tensors (PEPSOrth) obtained from _qr_bond.

However, this simple construction has two problems.

  • Because of the approximate nature of CTMRG, env is not positive-definite, or even Hermitian.
  • For physical (not random) iPEPS, its condition number (when solving equations to obtain the updated bond tensors) can be quite large (~1e+5 to 1e+7). The test test/bondenv/benv_fu.jl demonstrate this with an iPEPS obtained from Hubbard model simple update.

Thus this PR also implements a "gauge fixing" algorithm introduced in PhysRevB.90.064425 (and applied to FU in PhysRevB.92.035142; it can also be applied to NTU later), which does the following:

  • Replace the bond environment env with (env + env') / 2; in addition, eigen-decomposition is used to remove possible small negative eigenvalues of env to make it semi-positive-definite.
  • Use QR decomposition to "fix gauge" of env and greatly reduce its condition number (to ~1e+1).

@Yue-Zhengyuan
Copy link
Member Author

@lkdvos I hope to get this merged before the NTU bondenv (#144) since I think FU may be a more widely acknowledged algorithm.

@codecov
Copy link

codecov bot commented May 26, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Files with missing lines Coverage Δ
src/PEPSKit.jl 100.00% <ø> (ø)
src/algorithms/contractions/bondenv/benv_ctm.jl 100.00% <100.00%> (ø)
src/algorithms/contractions/bondenv/gaugefix.jl 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Yue-Zhengyuan
Copy link
Member Author

The test failures are due to GitHub outage today. Tests relevant to the changes all pass.

@Yue-Zhengyuan Yue-Zhengyuan requested a review from lkdvos May 26, 2025 12:39
@Yue-Zhengyuan
Copy link
Member Author

Do you know the reason on why the bond environment condition number is quite large for a physical state, but small for a random state? And why can QR decomposition help?

@lkdvos
Copy link
Member

lkdvos commented May 29, 2025

I'm not sure I really have an explanation for the condition number of a physical state vs a random state. Speculation: It could be that for a random initial guess the gauge is just very bad, which affects the condition number more than the actual state it represents. Therefore it's not actually the state, but rather the gauging that makes this better, which is why the QR might help since that is a partial gauging procedure?

@Yue-Zhengyuan
Copy link
Member Author

@lkdvos Besides the issue with inv of R, L which we decide to set aside, do you have other suggestions?

Copy link
Member

@lkdvos lkdvos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks good to me!

@Yue-Zhengyuan Yue-Zhengyuan merged commit c2a32f2 into QuantumKitHub:master Jun 5, 2025
45 checks passed
@Yue-Zhengyuan Yue-Zhengyuan deleted the bondenv-fu branch June 8, 2025 12:38
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.

3 participants