Tools for working with projected entangled-pair states
It contracts, it optimizes, it may break.
The package can be installed through the Julia general registry, via the package manager:
pkg> add PEPSKit
- Construction and manipulation of infinite projected entangled-pair states (PEPS)
- Contraction of infinite PEPS using the corner transfer matrix renormalization group (CTMRG) and boundary MPS methods
- Native support for symmetric tensors through TensorKit, including fermionic tensors
- PEPS optimization using automatic differentiation (AD) provided through Zygote
- Imaginary time evolution algorithms
- Support for PEPS with generic unit cells
- Support for classical 2D partition functions and projected entangled-pair operators (PEPOs)
- Extensible system for custom states, operators and algorithms
After following the installation process, it should now be possible to load the packages and start simulating. For example, in order to obtain the ground state of the 2D Heisenberg model, we can use the following code:
using TensorKit, PEPSKit
# construct the Hamiltonian
H = heisenberg_XYZ(InfiniteSquare())
# configure the parameters
D = 2
χ = 20
ctmrg_tol = 1e-10
grad_tol = 1e-4
# initialize a PEPS and CTMRG environment
peps₀ = InfinitePEPS(2, D)
env₀, = leading_boundary(CTMRGEnv(peps₀, ComplexSpace(χ)), peps₀; tol=ctmrg_tol)
# ground state search
peps, env, E, = fixedpoint(H, peps₀, env₀; tol=grad_tol, boundary_alg=(; tol=ctmrg_tol))
@show E # -0.6625...