Skip to content

QuantumKitHub/PEPSKit.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PEPSKit.jl logo

PEPSKit.jl

docs CI codecov DOI

Tools for working with projected entangled-pair states

It contracts, it optimizes, it may break.

Installation

The package can be installed through the Julia general registry, via the package manager:

pkg> add PEPSKit

Key features

  • 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

Quickstart

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...