Fix correlator for fermionic PEPS #232
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes same-row/column correlator for fermionic PEPS (issue #231). A new test file
test/utility/correlator.jlis also added.The problem was caused by some extra twists required by VUMPS, which should not be present for the evaluation of expectation values. In VUMPS, a column transfer matrix is constructed as follows (see e.g. Eq. A31 in SciPost Phys. 18, 012 (2025))
Extra twists are required on the physical legs of the "bra" MPS in the bottom. In
correlatorit is replaced by the south-edge CTM tensor. However, when evaluating expectation values, there should be no twists in the network.When calculating the numerator
Vo(which contains the operator to be measured), the following function is called (the extra virtual leg in the operator MPO contributed one more leg toGL):PEPSKit.jl/src/algorithms/contractions/vumps_contractions.jl
Lines 41 to 54 in 59a7f9d
This is a new function specifically added in #210 for correlator calculation, so there are no twists. However, when
Vnis calculated, the following function is called:PEPSKit.jl/src/algorithms/contractions/vumps_contractions.jl
Lines 5 to 13 in 59a7f9d
It is originally intended for VUMPS, so there are the aforementioned twists (added in #174). Thus the fix is to cancel the twists when calculating
Vn(see added lines insrc/algorithms/correlators.jl. Though one thing I'm uncertain is whether inverse twists should be used.