Extension of ITensor to 2D

Hi there,

Is it possible to build upon the current ITensor machinery to represent a true 2D state like PEPS? Naively, I think this implies additional bonds attached to each site, and of course invalidating (or making them inefficient) majority of the built-in functions, but I’m still curious if it can be done, so for example I could play around it a bit for some MC sampling.

(I imagine the current ‘2D’ example you have for ITensor is simply achieved through flattening the whatever lattice geometry you have, and still treating it as a 1D MPS, just with arbitrary site-to-site interactions)

We are working on that here: GitHub - mtfishman/ITensorNetworks.jl: A package with general tools for working with higher-dimensional tensor networks based on ITensor.

@ray-l Just wanted to add that ITensor is a completely general-purpose tensor library. For example, there are many tools to create (construct), add, subtract, and contract tensors and many more operations. Since these are the operations making up all tensor network algorithms, then implementing PEPS can certainly be done with ITensor.

But of course it’s helpful to have certain common subroutines implemented as library functions and maybe you were asking if we had these? E.g. for PEPS one wants things like the ability to contract two PEPS with each other.

As Matt mentioned, more PEPS oriented (though also more general than PEPS) library tools are currently being developed in the ITensorNetworks.jl package mentioned above. It’s still under heavy development but we are excited about where it’s going.