You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR improves the correlator function by adding support for purified iPEPO and removing some constraints on sites js, with some under-the-hood deduplications.
Deduplicate iPEPS and one-layer iPEPO trace correlator logic through private correlator context/adapters.
Add purified iPEPO correlators:
correlator(bra::InfinitePEPO, O, i, js, ket::InfinitePEPO, env::CTMRGEnv)
matching the purified-state convention used by expectation_value.
Generalize horizontal correlators so js may contain targets on either side of i.
js no longer need to be sorted.
js can contain sites on both sides of i.
Output order follows vec(js).
j == i is rejected with ArgumentError.
Vertical correlators inherit the same behavior through dispatching to horizontal correlators via rotation.
Add right-to-left correlator contractions and the corresponding edge_transfer_right paths for js on the left of i.
Implementation Notes
The shared correlator implementation now dispatches through private context types:
_PEPSCorrelator
_PEPOPurifiedCorrelator
_PEPOTraceCorrelator
The horizontal sweep partitions js into right and left sites internally:
right targets use the existing left-to-right contraction path;
left targets use a mirrored right-to-left contraction path;
results are written back into the original target order.
Low-level tensor contractions remain separate where the tensor ranks genuinely differ.
The reason will be displayed to describe this comment to others. Learn more.
Since the V tensors (partially contracted correlator network) are not actually CTMRG edge tensors, I prefer just annotate their type using AbstractTensorMap.
A recent idea: in almost all applications, the two-site operator passed to correlator is made from two one-site operators, so the MPO has virtual dimension 1 (although it carries a non-trivial charge in general). Then can we first calculate the product of the MPO and the ket state (or the iPEPO), fusing the MPO virtual leg into the state? In this way, we can get rid of the edge_transfer functions carrying the "excited" leg from the MPO. The computational cost should remain almost the same.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 improves the
correlatorfunction by adding support for purified iPEPO and removing some constraints on sitesjs, with some under-the-hood deduplications.expectation_value.jsmay contain targets on either side ofi.jsno longer need to be sorted.jscan contain sites on both sides ofi.vec(js).j == iis rejected withArgumentError.edge_transfer_rightpaths forjson the left ofi.Implementation Notes
The shared correlator implementation now dispatches through private context types:
_PEPSCorrelator_PEPOPurifiedCorrelator_PEPOTraceCorrelatorThe horizontal sweep partitions
jsinto right and left sites internally:Low-level tensor contractions remain separate where the tensor ranks genuinely differ.