Jutho/TensorKit.jl

Support of fermionic systems

Opened this issue · 7 comments

Hi, Jutho.
Is it possible to compute fermionic PEPS with TensorKit? For example Hubbard model?

Hi @diret47 . TensorKit.jl supports tensors with fermionic symmetries, such that e.g. the necessary signs are automatically included upon permuting tensor legs.

However, TensorKit is a low-level library and does not contain higher level tensor network algorithms. For this, you should look at for example MPSKit.jl and PEPSKit.jl. Support for fermions in PEPSKit.jl is not yet included, but something we will be actively working on in the near future.

@diret47, I've recently implemented the contraction of fermionic PEPS in this branch of PEPSKit.jl .

There is currently no support for optimization of states as this would require evaluation of the gradient which is a formidable task... The plan is to bypass this trough automatic differentiation but this first requires some updates within TensorKit.jl and TensorOperations.jl .

@diret47, I've recently implemented the contraction of fermionic PEPS in this branch of PEPSKit.jl .

There is currently no support for optimization of states as this would require evaluation of the gradient which is a formidable task... The plan is to bypass this trough automatic differentiation but this first requires some updates within TensorKit.jl and TensorOperations.jl .

That's awesome. I suppose we can already contract fPEPS by PEPSKit.jl easily. I hope implementation of AD optimization would be updated soon. I think one can use some SVD fashion optimization as a expedient now.

@diret47 , what do you mean with SVD fashion optimization ?

@diret47 , what do you mean with SVD fashion optimization ?

Sorry, I just mean that sth like full update and simple update in iPEPS. I suppose that the optimization like DMRG may also be used in iPEPS, but it's not exact.

Is there any document on TensorKit that explains the details of treating the fermion signs and swap operations in PEPS?

I think the theoretic part is covered best in this paper: https://arxiv.org/abs/2404.14611
The @tensor macro in TensorKit follows that convention, where a twist (fermionic sign) appears for contracting "ket"s with "bra"s, and that paper should then show in what PEPS contractions this should be counteracted with supplementary twists.

I would also recommend to keep an eye on the PEPSKit.jl repo, we are also working on flushing out the details for fermionic symmetries in that library using TensorKit.

I do apologize for the lack of documentation on this topic, this is also something we are still working on.