Skip to content

[WIP] Split CTMRG - #441

Draft
Yue-Zhengyuan wants to merge 21 commits into
QuantumKitHub:mainfrom
Yue-Zhengyuan:split-ctmrg
Draft

Yue-Zhengyuan wants to merge 21 commits into
QuantumKitHub:mainfrom
Yue-Zhengyuan:split-ctmrg

Conversation

@Yue-Zhengyuan

@Yue-Zhengyuan Yue-Zhengyuan commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

This PR implements the split-CTMRG introduced in

Naumann, J., Weerda, E. L., Eisert, J., Rizzi, M., & Schmoll, P. (2025). Variationally optimizing infinite projected entangled-pair states at large bond dimensions: A split corner transfer matrix renormalization group approach. Physical Review B, 111(23), 235116. (arXiv)

It is initially designed for bilayer networks (e.g. ground state iPEPS and purified thermal iPEPO) to reduce computational cost.

TODO

  • Expectation values and pre-conditioning are still handled by first converting the split-CTMRG environment back to an ordinary CTMRG environment.
  • For optimization, only FixedPointGradient can be used with SplitCTMRG. ImplicitGradient is not supported.
  • Only iPEPS contraction is supported. Purified thermal iPEPO case may be deferred to later work.

Not TODO

Later there is a three-layer generalization (https://arxiv.org/html/2506.19339v1) that handles PEPS-PEPO-PEPS sandwich useful for 3D networks. But for now we focus on the bilayer case.

@codecov

codecov Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.86711% with 61 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/environments/split_ctmrg_environments.jl 81.64% 29 Missing ⚠️
src/algorithms/ctmrg/split.jl 88.46% 9 Missing ⚠️
...lgorithms/optimization/implicit_differentiation.jl 87.50% 6 Missing ⚠️
src/algorithms/ctmrg/projectors/split.jl 95.68% 5 Missing ⚠️
src/algorithms/ctmrg/gaugefix.jl 90.00% 3 Missing ⚠️
src/algorithms/ctmrg/gaugefix_split.jl 94.28% 2 Missing ⚠️
src/utility/lq.jl 86.66% 2 Missing ⚠️
src/algorithms/ctmrg/ctmrg.jl 85.71% 1 Missing ⚠️
.../algorithms/expectation_value/expectation_value.jl 50.00% 1 Missing ⚠️
src/algorithms/expectation_value/network_value.jl 0.00% 1 Missing ⚠️
... and 2 more
Files with missing lines Coverage Δ
src/PEPSKit.jl 100.00% <ø> (ø)
...orithms/contractions/ctmrg/enlarge_corner_split.jl 100.00% <100.00%> (ø)
src/algorithms/contractions/ctmrg/gaugefix.jl 100.00% <100.00%> (ø)
...algorithms/contractions/ctmrg/renormalize_split.jl 100.00% <100.00%> (ø)
src/algorithms/contractions/ctmrg/split_env.jl 100.00% <100.00%> (ø)
src/algorithms/ctmrg/projectors/projectors.jl 87.50% <100.00%> (ø)
src/algorithms/optimization/peps_optimization.jl 97.16% <100.00%> (+0.16%) ⬆️
src/networks/infinitesquarenetwork.jl 64.89% <100.00%> (+5.59%) ⬆️
src/utility/qr.jl 82.75% <100.00%> (+0.61%) ⬆️
src/utility/retractions.jl 100.00% <100.00%> (ø)
... and 12 more

... and 6 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Retain split-CTMRG defaults and regression tests while adopting the updated norm-preserving geometry and Buildkite test layout.

Validation: 209 focused assertions and five Buildkite guard checks passed serially with one CPU thread and AppleAccelerate.
Resolve the gauge-fixing conflict by retaining the shared boundary-chain helper and forwarding tensor storage types.

Validation: 210 focused CPU checks passed. One pre-existing Float32 split-environment precision mismatch was reproduced with the pre-merge constructor path.

This branch has not been deployed

No deployments
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