[WIP] Local truncation for two layers of InfinitePEPO#311
[WIP] Local truncation for two layers of InfinitePEPO#311Yue-Zhengyuan wants to merge 14 commits intoQuantumKitHub:masterfrom
Conversation
Codecov Report❌ Patch coverage is
🚀 New features to boost your workflow:
|
|
Cool! What you could do in the PEPS-PEPO case is to construct the PEPO as $$ exp(-d\tau H) $$, and see whether many applications of this PEPO on a random initial PEPS make it converge to the ground state. That is what I have as one of the tests in my ClusterExpansions code, which you can find here. This PEPO could be made using the Trotter decomposition, or via Simple Update, like you did in the previous tests. This should also allow for a fermionic test case. |
|
@sanderdemeyer I don't know if you knew it before, but recently someone mentioned to me that we can optimize the HOTRG projectors (in your terminology, the "oblique projectors" in "no-environment truncation") with automatic differentiation, which is equivalent to second RG (see this paper). If you haven't tried it before, maybe I can help test this idea (also as an exercise to learn AD for me), which is also a great extension to this PR to actually make it appealing. |
|
From the experience of 2508.05406 and 2602.22113, this simple truncation method can already yield some decent results. So we may just merge this after settling on some technical details like the interface. |
This PR introduces the most naive algorithm to truncate the virtual space of the product of two layers of InfinitePEPOs. It is a polished version of @sanderdemeyer's work in ClusterExpansions.jl, with the extra support for arbitrary unit cell sizes (ClusterExpansions.jl focused on the trivial unit cell case). At least it can serve as initialization for other advanced approximation methods.
The algorithm minimizes the local cost function at each virtual bond, which is the norm of
The projectors are found following steps described in Appendix A, 1905.02351 (Boundary Tensor Renormalization Group). To handle fermions, the virtual arrows are first flipped to leftwards/downwards direction with
standardize_virtual_spaces.Similar to @pbrehmer's PR #257, the function doing the truncation overloads
MPSKit.approximate, and dispatches on the algorithm structLocalApprox <: ApproximateAlgorithm.An immediate generalization is approximate the product of an InfinitePEPO and an InfinitePEPS, but currently I don't have concrete test cases.