-
Notifications
You must be signed in to change notification settings - Fork 27
Description
Currently, CTMRG only runs on InfinitePEPS as its state type, and with #111 also on InfinitePartitionFunctions. However, all CTMRG contractions as well as the sparse storage structs in principle support more general objects, such as PEPS-PEPS or PEPS-PEPO-PEPS sandwiches.
In order to generalize the state type that is specified by the user and passed on to leading_boundary we need to agree on a design. Looking at the implementation of CTMRG, it is clear that the type of state needs to support indexing operations and rotations. I think there are at least two options:
- We could create a
PEPSSandwichandPEPOSandwichtype. Here the question would be if they should be subtyped as anInfiniteSquareNetwork- this would however somehow create a circular hierarchy in its current state. - We could just use tuples of
InfiniteSquareNetworksto represent the sandwiches, e.g.Tuple{InfintePEPS,InfinitePEPS}, and define indexing methods such asgetindexon them.
Another thing to consider is to relax the InfiniteSquareNetwork interface such that it is understood as an interface which states that can be contracted using CTMRG should support. This would e.g. mean getting rid of the math and OptimKit operations.
See #111 for further comments.