Skip to content

Add full update bond environment and gauge fixing #203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jun 5, 2025

Conversation

Yue-Zhengyuan
Copy link
Collaborator

@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
Collaborator Author

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

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
Collaborator 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
Collaborator 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
Collaborator 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