Constructing PEPS tensor network

After creating the Potts Hamiltonian, we can turn it into a PEPS tensor network as shown in the Section Brief description of the algorithm.

SpinGlassPEPS.SpinGlassEngine.PEPSNetwork — Type

Construct a Projected Entangled Pair States (PEPS) network.

Arguments

  • m::Int: Number of rows in the PEPS lattice.
  • n::Int: Number of columns in the PEPS lattice.
  • potts_hamiltonian::LabelledGraph: Potts Hamiltonian representing the Hamiltonian.
  • transformation::LatticeTransformation: Transformation of the PEPS lattice, as it can be rotated or reflected.
  • gauge_type::Symbol=:id: Type of gauge to initialize (default is identity).

Type Parameters

  • T <: AbstractGeometry: Type of node used within the PEPS tensor network. It can be SquareSingleNode, SquareDoubleNode, KingSingleNode, SquareCrossDoubleNode.
  • S <: AbstractSparsity: Type of sparsity for the PEPS tensors: Dense or Sparse.
  • R <: Real`: The numeric precision type for real values (e.g., Float64).

Returns

An instance of PEPSNetwork{T, S, R}.

source

Basic example of usage

using SpinGlassPEPS

m, n, t = 5, 5, 4
onGPU = false
instance = joinpath(
    pkgdir(SpinGlassPEPS), "docs", "src", "instances", "square_diagonal", "5x5", "diagonal.txt",
)

Strategy = Zipper
transform = rotation(0)
Layout = GaugesEnergy
Sparsity = Sparse
R = Float64

ig = ising_graph(instance)
potts_h = potts_hamiltonian(
    ig,
    spectrum = full_spectrum,
    cluster_assignment_rule=super_square_lattice((m, n, t))
)

net = PEPSNetwork{KingSingleNode{Layout}, Sparsity, R}(m, n, potts_h, transform)
PEPSNetwork{KingSingleNode{GaugesEnergy}, Sparse, Float64, PottsHamiltonian{Tuple{Int64, Int64}, Float64, LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}, Spectrum{Float64, Vector{Vector{Int64}}}, Vector{LabelledGraphs.LabelledEdge{Int64}}}}(PottsHamiltonian{Tuple{Int64, Int64}, Float64, LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}, Spectrum{Float64, Vector{Vector{Int64}}}, Vector{LabelledGraphs.LabelledEdge{Int64}}}(LabelledGraphs.LabelledGraph{Graphs.SimpleGraphs.SimpleDiGraph{Int64}, Tuple{Int64, Int64}}([(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5)  …  (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5)], Graphs.SimpleGraphs.SimpleDiGraph{Int64}(72, [[2, 6, 7], [3, 6, 7, 8], [4, 7, 8, 9], [5, 8, 9, 10], [9, 10], [7, 11, 12], [8, 11, 12, 13], [9, 12, 13, 14], [10, 13, 14, 15], [14, 15]  …  [17, 21, 22], [18, 21, 22, 23], [19, 22, 23, 24], [20, 23, 24, 25], [24, 25], [22], [23], [24], [25], Int64[]], [Int64[], [1], [2], [3], [4], [1, 2], [1, 2, 3, 6], [2, 3, 4, 7], [3, 4, 5, 8], [4, 5, 9]  …  [11, 12], [11, 12, 13, 16], [12, 13, 14, 17], [13, 14, 15, 18], [14, 15, 19], [16, 17], [16, 17, 18, 21], [17, 18, 19, 22], [18, 19, 20, 23], [19, 20, 24]]), Dict((4, 5) => 20, (1, 2) => 2, (3, 1) => 11, (2, 5) => 10, (1, 3) => 3, (1, 4) => 4, (5, 5) => 25, (3, 2) => 12, (3, 3) => 13, (4, 1) => 16…)), Dict{Tuple{Int64, Int64}, LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}}((4, 5) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([77, 78, 79, 80], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(78 => 2, 79 => 3, 77 => 1, 80 => 4)), (1, 2) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([5, 6, 7, 8], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(5 => 1, 6 => 2, 7 => 3, 8 => 4)), (3, 1) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([41, 42, 43, 44], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(41 => 1, 43 => 3, 44 => 4, 42 => 2)), (2, 5) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([37, 38, 39, 40], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(39 => 3, 38 => 2, 37 => 1, 40 => 4)), (1, 3) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([9, 10, 11, 12], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(11 => 3, 10 => 2, 9 => 1, 12 => 4)), (1, 4) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([13, 14, 15, 16], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(13 => 1, 15 => 3, 16 => 4, 14 => 2)), (5, 5) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([97, 98, 99, 100], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(97 => 1, 99 => 3, 98 => 2, 100 => 4)), (3, 2) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([45, 46, 47, 48], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(47 => 3, 45 => 1, 46 => 2, 48 => 4)), (3, 3) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([49, 50, 51, 52], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(51 => 3, 49 => 1, 50 => 2, 52 => 4)), (4, 1) => LabelledGraphs.LabelledGraph{MetaGraphs.MetaGraph{Int64, Float64}, Int64}([61, 62, 63, 64], {4, 6} undirected Int64 metagraph with Float64 weights defined by :weight (default weight 1.0), Dict(64 => 4, 61 => 1, 63 => 3, 62 => 2))…), Dict{Tuple{Int64, Int64}, Spectrum{Float64, Vector{Vector{Int64}}}}((4, 5) => Spectrum{Float64, Vector{Vector{Int64}}}([-0.26562167560828764, -1.6861588434880155, 0.31799042473853967, -1.9338679628142625, 0.25866336214245345, 0.12996047191485505, 2.069529166507695, 1.1095050566070224, 1.1095050566070224, 2.069529166507695, 0.12996047191485505, 0.25866336214245345, -1.9338679628142625, 0.31799042473853967, -1.6861588434880155, -0.26562167560828764], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (1, 2) => Spectrum{Float64, Vector{Vector{Int64}}}([-2.1545678050474812, 0.2872285009236131, -0.13292086264073744, 1.6214237359338144, -0.2289698691403439, 1.0589745146989826, -0.5258304455853158, 0.07466223085746826, 0.07466223085746826, -0.5258304455853158, 1.0589745146989826, -0.2289698691403439, 1.6214237359338144, -0.13292086264073744, 0.2872285009236131, -2.1545678050474812], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (3, 1) => Spectrum{Float64, Vector{Vector{Int64}}}([-0.11510686832735662, 1.0368655817869872, -0.3420872359856877, 1.0395429058261905, 0.7413774060028238, 0.5325273119599232, -1.456963349458757, -1.4361557518041232, -1.4361557518041232, -1.456963349458757, 0.5325273119599232, 0.7413774060028238, 1.0395429058261905, -0.3420872359856877, 1.0368655817869872, -0.11510686832735662], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (2, 5) => Spectrum{Float64, Vector{Vector{Int64}}}([-0.3662879809815056, 0.4529351687672363, 0.971548702332151, 0.4467613191535267, -0.41627818565042585, 0.9609766206197619, -1.041449958791783, -1.0082056854489614, -1.0082056854489614, -1.041449958791783, 0.9609766206197619, -0.41627818565042585, 0.4467613191535267, 0.971548702332151, 0.4529351687672363, -0.3662879809815056], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (1, 3) => Spectrum{Float64, Vector{Vector{Int64}}}([0.2654848721069152, -0.17012099916467727, 0.9462661398220467, 0.8304294719763685, -1.9862279142844537, 1.3499555829890675, -2.4458699270723514, 1.2100827736270843, 1.2100827736270843, -2.4458699270723514, 1.3499555829890675, -1.9862279142844537, 0.8304294719763685, 0.9462661398220467, -0.17012099916467727, 0.2654848721069152], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (1, 4) => Spectrum{Float64, Vector{Vector{Int64}}}([-0.6075123392548918, 2.356477551083918, -1.7288756931039446, 1.101829893046373, -0.8575761420364076, -1.2216062488349861, 0.7272886950435049, 0.2299742840564345, 0.2299742840564345, 0.7272886950435049, -1.2216062488349861, -0.8575761420364076, 1.101829893046373, -1.7288756931039446, 2.356477551083918, -0.6075123392548918], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (5, 5) => Spectrum{Float64, Vector{Vector{Int64}}}([-0.05493150535196145, -1.2220745103633335, -1.6615188251528492, 0.25330097162501364, 2.7487097120765642, 1.5547301440211778, -1.75309961029423, 0.13488362343961846, 0.13488362343961846, -1.75309961029423, 1.5547301440211778, 2.7487097120765642, 0.25330097162501364, -1.6615188251528492, -1.2220745103633335, -0.05493150535196145], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (3, 2) => Spectrum{Float64, Vector{Vector{Int64}}}([0.05303573687163965, 0.4082011291179781, 1.9596871774831328, -1.21648286199413, -0.4448462298114282, 3.378645663985343, -2.2151985388628526, -1.9230420767896828, -1.9230420767896828, -2.2151985388628526, 3.378645663985343, -0.4448462298114282, -1.21648286199413, 1.9596871774831328, 0.4082011291179781, 0.05303573687163965], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (3, 3) => Spectrum{Float64, Vector{Vector{Int64}}}([-2.5842179179646942, -1.0755685102577255, 0.7546560024061484, 0.20430055930871882, -0.29324780541904794, 2.152398799023807, 0.2275185596321685, 0.614160313270625, 0.614160313270625, 0.2275185596321685, 2.152398799023807, -0.29324780541904794, 0.20430055930871882, 0.7546560024061484, -1.0755685102577255, -2.5842179179646942], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]), (4, 1) => Spectrum{Float64, Vector{Vector{Int64}}}([1.3942938830376979, -1.049804260925442, -0.07395726465471908, -1.4571984915032132, 0.23302866617891071, 0.37912211467046664, -0.31621750620495126, 0.8907328594012505, 0.8907328594012505, -0.31621750620495126, 0.37912211467046664, 0.23302866617891071, -1.4571984915032132, -0.07395726465471908, -1.049804260925442, 1.3942938830376979], [[-1, -1, -1, -1], [1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, -1], [-1, -1, 1, -1], [1, -1, 1, -1], [-1, 1, 1, -1], [1, 1, 1, -1], [-1, -1, -1, 1], [1, -1, -1, 1], [-1, 1, -1, 1], [1, 1, -1, 1], [-1, -1, 1, 1], [1, -1, 1, 1], [-1, 1, 1, 1], [1, 1, 1, 1]], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])…), Dict{Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}}(((4, 4), (5, 3)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([3.567793340797884 0.23430314826010878 … -0.23430314826010878 -3.567793340797884; -2.1767971720577215 -2.6180929035420855 … 2.6180929035420855 2.1767971720577215; … ; 2.1767971720577215 2.6180929035420855 … -2.6180929035420855 -2.1767971720577215; -3.567793340797884 -0.23430314826010878 … 0.23430314826010878 3.567793340797884], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(73, 89), LabelledGraphs.LabelledEdge{Int64}(74, 89), LabelledGraphs.LabelledEdge{Int64}(75, 89), LabelledGraphs.LabelledEdge{Int64}(76, 89), LabelledGraphs.LabelledEdge{Int64}(73, 90), LabelledGraphs.LabelledEdge{Int64}(74, 90), LabelledGraphs.LabelledEdge{Int64}(75, 90), LabelledGraphs.LabelledEdge{Int64}(76, 90), LabelledGraphs.LabelledEdge{Int64}(73, 91), LabelledGraphs.LabelledEdge{Int64}(74, 91), LabelledGraphs.LabelledEdge{Int64}(75, 91), LabelledGraphs.LabelledEdge{Int64}(76, 91), LabelledGraphs.LabelledEdge{Int64}(73, 92), LabelledGraphs.LabelledEdge{Int64}(74, 92), LabelledGraphs.LabelledEdge{Int64}(75, 92), LabelledGraphs.LabelledEdge{Int64}(76, 92)]), ((2, 3), (3, 3)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([1.3138746488521946 -1.2789230479639029 … 1.2789230479639029 -1.3138746488521946; -2.976230583885211 -3.194030827999189 … 3.194030827999189 2.976230583885211; … ; 2.976230583885211 3.194030827999189 … -3.194030827999189 -2.976230583885211; -1.3138746488521946 1.2789230479639029 … -1.2789230479639029 1.3138746488521946], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(29, 49), LabelledGraphs.LabelledEdge{Int64}(30, 49), LabelledGraphs.LabelledEdge{Int64}(31, 49), LabelledGraphs.LabelledEdge{Int64}(32, 49), LabelledGraphs.LabelledEdge{Int64}(29, 50), LabelledGraphs.LabelledEdge{Int64}(30, 50), LabelledGraphs.LabelledEdge{Int64}(31, 50), LabelledGraphs.LabelledEdge{Int64}(32, 50), LabelledGraphs.LabelledEdge{Int64}(29, 51), LabelledGraphs.LabelledEdge{Int64}(30, 51), LabelledGraphs.LabelledEdge{Int64}(31, 51), LabelledGraphs.LabelledEdge{Int64}(32, 51), LabelledGraphs.LabelledEdge{Int64}(29, 52), LabelledGraphs.LabelledEdge{Int64}(30, 52), LabelledGraphs.LabelledEdge{Int64}(31, 52), LabelledGraphs.LabelledEdge{Int64}(32, 52)]), ((3, 3), (4, 4)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([-2.647083482151187 0.42171180219981874 … -0.42171180219981874 2.647083482151187; -4.246895279929512 -1.5317869697934792 … 1.5317869697934792 4.246895279929512; … ; 4.246895279929512 1.5317869697934792 … -1.5317869697934792 -4.246895279929512; 2.647083482151187 -0.42171180219981874 … 0.42171180219981874 -2.647083482151187], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(49, 73), LabelledGraphs.LabelledEdge{Int64}(50, 73), LabelledGraphs.LabelledEdge{Int64}(51, 73), LabelledGraphs.LabelledEdge{Int64}(52, 73), LabelledGraphs.LabelledEdge{Int64}(49, 74), LabelledGraphs.LabelledEdge{Int64}(50, 74), LabelledGraphs.LabelledEdge{Int64}(51, 74), LabelledGraphs.LabelledEdge{Int64}(52, 74), LabelledGraphs.LabelledEdge{Int64}(49, 75), LabelledGraphs.LabelledEdge{Int64}(50, 75), LabelledGraphs.LabelledEdge{Int64}(51, 75), LabelledGraphs.LabelledEdge{Int64}(52, 75), LabelledGraphs.LabelledEdge{Int64}(49, 76), LabelledGraphs.LabelledEdge{Int64}(50, 76), LabelledGraphs.LabelledEdge{Int64}(51, 76), LabelledGraphs.LabelledEdge{Int64}(52, 76)]), ((5, 2), (5, 3)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([-2.7632531738493737 2.0182418870673944 … -2.0182418870673944 2.7632531738493737; -1.1886986049306643 1.132735375478056 … -1.132735375478056 1.1886986049306643; … ; 1.1886986049306643 -1.132735375478056 … 1.132735375478056 -1.1886986049306643; 2.7632531738493737 -2.0182418870673944 … 2.0182418870673944 -2.7632531738493737], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(85, 89), LabelledGraphs.LabelledEdge{Int64}(86, 89), LabelledGraphs.LabelledEdge{Int64}(87, 89), LabelledGraphs.LabelledEdge{Int64}(88, 89), LabelledGraphs.LabelledEdge{Int64}(85, 90), LabelledGraphs.LabelledEdge{Int64}(86, 90), LabelledGraphs.LabelledEdge{Int64}(87, 90), LabelledGraphs.LabelledEdge{Int64}(88, 90), LabelledGraphs.LabelledEdge{Int64}(85, 91), LabelledGraphs.LabelledEdge{Int64}(86, 91), LabelledGraphs.LabelledEdge{Int64}(87, 91), LabelledGraphs.LabelledEdge{Int64}(88, 91), LabelledGraphs.LabelledEdge{Int64}(85, 92), LabelledGraphs.LabelledEdge{Int64}(86, 92), LabelledGraphs.LabelledEdge{Int64}(87, 92), LabelledGraphs.LabelledEdge{Int64}(88, 92)]), ((2, 4), (3, 3)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([3.2389543471798925 0.6245450431978332 … -0.6245450431978332 -3.2389543471798925; 0.42994083343845313 0.5404597558783695 … -0.5404597558783695 -0.42994083343845313; … ; -0.42994083343845313 -0.5404597558783695 … 0.5404597558783695 0.42994083343845313; -3.2389543471798925 -0.6245450431978332 … 0.6245450431978332 3.2389543471798925], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(33, 49), LabelledGraphs.LabelledEdge{Int64}(34, 49), LabelledGraphs.LabelledEdge{Int64}(35, 49), LabelledGraphs.LabelledEdge{Int64}(36, 49), LabelledGraphs.LabelledEdge{Int64}(33, 50), LabelledGraphs.LabelledEdge{Int64}(34, 50), LabelledGraphs.LabelledEdge{Int64}(35, 50), LabelledGraphs.LabelledEdge{Int64}(36, 50), LabelledGraphs.LabelledEdge{Int64}(33, 51), LabelledGraphs.LabelledEdge{Int64}(34, 51), LabelledGraphs.LabelledEdge{Int64}(35, 51), LabelledGraphs.LabelledEdge{Int64}(36, 51), LabelledGraphs.LabelledEdge{Int64}(33, 52), LabelledGraphs.LabelledEdge{Int64}(34, 52), LabelledGraphs.LabelledEdge{Int64}(35, 52), LabelledGraphs.LabelledEdge{Int64}(36, 52)]), ((3, 4), (4, 4)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([2.719171102949527 -1.3258521646588126 … 1.3258521646588126 -2.719171102949527; -0.8842431033700908 -1.6793526284131426 … 1.6793526284131426 0.8842431033700908; … ; 0.8842431033700908 1.6793526284131426 … -1.6793526284131426 -0.8842431033700908; -2.719171102949527 1.3258521646588126 … -1.3258521646588126 2.719171102949527], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(53, 73), LabelledGraphs.LabelledEdge{Int64}(54, 73), LabelledGraphs.LabelledEdge{Int64}(55, 73), LabelledGraphs.LabelledEdge{Int64}(56, 73), LabelledGraphs.LabelledEdge{Int64}(53, 74), LabelledGraphs.LabelledEdge{Int64}(54, 74), LabelledGraphs.LabelledEdge{Int64}(55, 74), LabelledGraphs.LabelledEdge{Int64}(56, 74), LabelledGraphs.LabelledEdge{Int64}(53, 75), LabelledGraphs.LabelledEdge{Int64}(54, 75), LabelledGraphs.LabelledEdge{Int64}(55, 75), LabelledGraphs.LabelledEdge{Int64}(56, 75), LabelledGraphs.LabelledEdge{Int64}(53, 76), LabelledGraphs.LabelledEdge{Int64}(54, 76), LabelledGraphs.LabelledEdge{Int64}(55, 76), LabelledGraphs.LabelledEdge{Int64}(56, 76)]), ((4, 4), (4, 5)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([1.3249463927098997 -1.3467068780125164 … 1.3467068780125164 -1.3249463927098997; 3.1547237062720788 -2.4757515818380575 … 2.4757515818380575 -3.1547237062720788; … ; -3.1547237062720788 2.4757515818380575 … -2.4757515818380575 3.1547237062720788; -1.3249463927098997 1.3467068780125164 … -1.3467068780125164 1.3249463927098997], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(73, 77), LabelledGraphs.LabelledEdge{Int64}(74, 77), LabelledGraphs.LabelledEdge{Int64}(75, 77), LabelledGraphs.LabelledEdge{Int64}(76, 77), LabelledGraphs.LabelledEdge{Int64}(73, 78), LabelledGraphs.LabelledEdge{Int64}(74, 78), LabelledGraphs.LabelledEdge{Int64}(75, 78), LabelledGraphs.LabelledEdge{Int64}(76, 78), LabelledGraphs.LabelledEdge{Int64}(73, 79), LabelledGraphs.LabelledEdge{Int64}(74, 79), LabelledGraphs.LabelledEdge{Int64}(75, 79), LabelledGraphs.LabelledEdge{Int64}(76, 79), LabelledGraphs.LabelledEdge{Int64}(73, 80), LabelledGraphs.LabelledEdge{Int64}(74, 80), LabelledGraphs.LabelledEdge{Int64}(75, 80), LabelledGraphs.LabelledEdge{Int64}(76, 80)]), ((5, 1), (5, 2)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([-3.782108379115782 0.5216574471897721 … -0.5216574471897721 3.782108379115782; -3.1083182817549093 -0.5406177879518332 … 0.5406177879518332 3.1083182817549093; … ; 3.1083182817549093 0.5406177879518332 … -0.5406177879518332 -3.1083182817549093; 3.782108379115782 -0.5216574471897721 … 0.5216574471897721 -3.782108379115782], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(81, 85), LabelledGraphs.LabelledEdge{Int64}(82, 85), LabelledGraphs.LabelledEdge{Int64}(83, 85), LabelledGraphs.LabelledEdge{Int64}(84, 85), LabelledGraphs.LabelledEdge{Int64}(81, 86), LabelledGraphs.LabelledEdge{Int64}(82, 86), LabelledGraphs.LabelledEdge{Int64}(83, 86), LabelledGraphs.LabelledEdge{Int64}(84, 86), LabelledGraphs.LabelledEdge{Int64}(81, 87), LabelledGraphs.LabelledEdge{Int64}(82, 87), LabelledGraphs.LabelledEdge{Int64}(83, 87), LabelledGraphs.LabelledEdge{Int64}(84, 87), LabelledGraphs.LabelledEdge{Int64}(81, 88), LabelledGraphs.LabelledEdge{Int64}(82, 88), LabelledGraphs.LabelledEdge{Int64}(83, 88), LabelledGraphs.LabelledEdge{Int64}(84, 88)]), ((2, 2), (2, 3)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([1.3020170483016518 -3.0250094653517148 … 3.0250094653517148 -1.3020170483016518; -2.2921768726981986 -5.203790024456543 … 5.203790024456543 2.2921768726981986; … ; 2.2921768726981986 5.203790024456543 … -5.203790024456543 -2.2921768726981986; -1.3020170483016518 3.0250094653517148 … -3.0250094653517148 1.3020170483016518], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(25, 29), LabelledGraphs.LabelledEdge{Int64}(26, 29), LabelledGraphs.LabelledEdge{Int64}(27, 29), LabelledGraphs.LabelledEdge{Int64}(28, 29), LabelledGraphs.LabelledEdge{Int64}(25, 30), LabelledGraphs.LabelledEdge{Int64}(26, 30), LabelledGraphs.LabelledEdge{Int64}(27, 30), LabelledGraphs.LabelledEdge{Int64}(28, 30), LabelledGraphs.LabelledEdge{Int64}(25, 31), LabelledGraphs.LabelledEdge{Int64}(26, 31), LabelledGraphs.LabelledEdge{Int64}(27, 31), LabelledGraphs.LabelledEdge{Int64}(28, 31), LabelledGraphs.LabelledEdge{Int64}(25, 32), LabelledGraphs.LabelledEdge{Int64}(26, 32), LabelledGraphs.LabelledEdge{Int64}(27, 32), LabelledGraphs.LabelledEdge{Int64}(28, 32)]), ((4, 3), (5, 2)) => SpinGlassPEPS.SpinGlassNetworks.ClusterInteraction{Float64, Vector{LabelledGraphs.LabelledEdge{Int64}}}([-4.613773525310781 -5.0011721604338275 … 5.0011721604338275 4.613773525310781; -2.114485205351995 -1.0579932254594138 … 1.0579932254594138 2.114485205351995; … ; 2.114485205351995 1.0579932254594138 … -1.0579932254594138 -2.114485205351995; 4.613773525310781 5.0011721604338275 … -5.0011721604338275 -4.613773525310781], 1, 1, LabelledGraphs.LabelledEdge{Int64}[LabelledGraphs.LabelledEdge{Int64}(69, 85), LabelledGraphs.LabelledEdge{Int64}(70, 85), LabelledGraphs.LabelledEdge{Int64}(71, 85), LabelledGraphs.LabelledEdge{Int64}(72, 85), LabelledGraphs.LabelledEdge{Int64}(69, 86), LabelledGraphs.LabelledEdge{Int64}(70, 86), LabelledGraphs.LabelledEdge{Int64}(71, 86), LabelledGraphs.LabelledEdge{Int64}(72, 86), LabelledGraphs.LabelledEdge{Int64}(69, 87), LabelledGraphs.LabelledEdge{Int64}(70, 87), LabelledGraphs.LabelledEdge{Int64}(71, 87), LabelledGraphs.LabelledEdge{Int64}(72, 87), LabelledGraphs.LabelledEdge{Int64}(69, 88), LabelledGraphs.LabelledEdge{Int64}(70, 88), LabelledGraphs.LabelledEdge{Int64}(71, 88), LabelledGraphs.LabelledEdge{Int64}(72, 88)])…), PoolOfProjectors{Int64}(Dict{Symbol, Dict{Int64, Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}}}(:CPU => Dict(1 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])), :CPU, Dict(1 => 16), Dict{Tuple, Any}(), Dict{NTuple{5, Any}, Tuple{Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}, Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}, Int64}}(), Dict([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] => 1))), SpinGlassPEPS.SpinGlassEngine.VertexMap((1, 2, 3, 4), 5, 5), PoolOfProjectors{Int64}(Dict{Symbol, Dict{Int64, Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}}}(:CPU => Dict(1 => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])), :CPU, Dict(1 => 16), Dict{Tuple, Any}(), Dict{NTuple{5, Any}, Tuple{Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}, Union{Vector{Int64}, CUDA.CuVector{Int64}, CUDA.DenseCuVector{Int64}}, Int64}}(), Dict([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] => 1)), 5, 5, 5, 5, Dict{SpinGlassPEPS.SpinGlassEngine.PEPSNode, Symbol}(SpinGlassPEPS.SpinGlassEngine.PEPSNode(2, 1) => :sparse_site, SpinGlassPEPS.SpinGlassEngine.PEPSNode(5, 3) => :sparse_site, SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//2, 7//2) => :central_d_single_node, SpinGlassPEPS.SpinGlassEngine.PEPSNode(11//2, 4) => :central_v_single_node, SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 3) => :gauge_h, SpinGlassPEPS.SpinGlassEngine.PEPSNode(10//3, 3) => :gauge_h, SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 4) => :gauge_h, SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 1) => :gauge_h, SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 7//2) => :gauge_h, SpinGlassPEPS.SpinGlassEngine.PEPSNode(1, 7//2) => :sparse_virtual_single_node…), SpinGlassPEPS.SpinGlassEngine.Gauges{KingSingleNode{GaugesEnergy}, Float64}(Dict{SpinGlassPEPS.SpinGlassEngine.PEPSNode, AbstractArray{Float64}}(SpinGlassPEPS.SpinGlassEngine.PEPSNode(19//6, 3) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 2) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 3//2) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0  …  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(19//6, 4) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//3, 9//2) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0  …  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(10//3, 1) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 3//2) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0  …  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 7//2) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0  …  1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 3) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], SpinGlassPEPS.SpinGlassEngine.PEPSNode(10//3, 3) => [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]…), SpinGlassPEPS.SpinGlassEngine.GaugeInfo[SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 1//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 1//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 1//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 1), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 1)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 1), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 3//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 3//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 3//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 5//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 5//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 5//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 3), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 3)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 3), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 7//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 7//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 7//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 4), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 4)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 4), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 9//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 9//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 9//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(7//6, 5), SpinGlassPEPS.SpinGlassEngine.PEPSNode(4//3, 5)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(3//2, 5), 1, :gauge_h)  …  SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 1//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 1//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 1//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 1), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 1)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 1), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 3//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 3//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 3//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 5//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 5//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 5//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 3), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 3)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 3), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 7//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 7//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 7//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 4), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 4)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 4), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 9//2), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 9//2)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 9//2), 1, :gauge_h), SpinGlassPEPS.SpinGlassEngine.GaugeInfo((SpinGlassPEPS.SpinGlassEngine.PEPSNode(25//6, 5), SpinGlassPEPS.SpinGlassEngine.PEPSNode(13//3, 5)), SpinGlassPEPS.SpinGlassEngine.PEPSNode(9//2, 5), 1, :gauge_h)]))