@@ -7,12 +7,14 @@ using LinearAlgebra
77
88Random. seed! (29384293742893 )
99
10- const vumps_alg = VUMPS (; alg_eigsolve= MPSKit. Defaults. alg_eigsolve (; ishermitian= false ))
10+ const vumps_alg = VUMPS (;
11+ tol= 1e-6 , alg_eigsolve= MPSKit. Defaults. alg_eigsolve (; ishermitian= false ), verbosity= 2
12+ )
1113@testset " (1, 1) PEPS" begin
1214 psi = InfinitePEPS (ComplexSpace (2 ), ComplexSpace (2 ))
1315
1416 T = PEPSKit. InfiniteTransferPEPS (psi, 1 , 1 )
15- mps = PEPSKit . initializeMPS (T, [ComplexSpace (20 )])
17+ mps = initialize_mps (T, [ComplexSpace (20 )])
1618
1719 mps, env, ϵ = leading_boundary (mps, T, vumps_alg)
1820 N = abs (sum (expectation_value (mps, T)))
2729 psi = InfinitePEPS (ComplexSpace (2 ), ComplexSpace (2 ); unitcell= (2 , 2 ))
2830 T = PEPSKit. MultilineTransferPEPS (psi, 1 )
2931
30- mps = PEPSKit . initializeMPS ( T, fill (ComplexSpace (20 ), 2 , 2 ))
32+ mps = initialize_mps (rand, scalartype (T), T, fill (ComplexSpace (20 ), 2 , 2 ))
3133 mps, env, ϵ = leading_boundary (mps, T, vumps_alg)
3234 N = abs (prod (expectation_value (mps, T)))
3335
3739 @test N ≈ N´ rtol = 1e-2
3840end
3941
42+ @testset " Fermionic PEPS" begin
43+ D = Vect[fℤ₂](0 => 1 , 1 => 1 )
44+ d = Vect[fℤ₂](0 => 1 , 1 => 1 )
45+ χ = Vect[fℤ₂](0 => 10 , 1 => 10 )
46+
47+ psi = InfinitePEPS (D, d; unitcell= (1 , 1 ))
48+ n = InfiniteSquareNetwork (psi)
49+ T = InfiniteTransferPEPS (psi, 1 , 1 )
50+
51+ # compare boundary MPS contraction to CTMRG contraction
52+ mps = initialize_mps (T, [χ])
53+ mps, env, ϵ = leading_boundary (mps, T, vumps_alg)
54+ N_vumps = abs (prod (expectation_value (mps, T)))
55+
56+ ctm, = leading_boundary (CTMRGEnv (psi, χ), psi)
57+ N_ctm = abs (norm (psi, ctm))
58+
59+ @test N_vumps ≈ N_ctm rtol = 1e-2
60+
61+ # and again after blocking the local sandwiches
62+ n´ = InfiniteSquareNetwork (map (PEPSKit. mpotensor, PEPSKit. unitcell (n)))
63+ T´ = InfiniteMPO (map (PEPSKit. mpotensor, T. O))
64+
65+ mps´ = InfiniteMPS (randn, ComplexF64, [physicalspace (T´, 1 )], [χ])
66+ mps´, env´, ϵ = leading_boundary (mps´, T´, vumps_alg)
67+ N_vumps´ = abs (prod (expectation_value (mps´, T´)))
68+
69+ ctm´, = leading_boundary (CTMRGEnv (n´, χ), n´)
70+ N_ctm´ = abs (network_value (n´, ctm´))
71+
72+ @show N_vumps´
73+ @test N_vumps´ ≈ N_vumps rtol = 1e-2
74+ @test N_vumps´ ≈ N_ctm´ rtol = 1e-2
75+ end
76+
4077@testset " PEPO runthrough" begin
4178 function ising_pepo (beta; unitcell= (1 , 1 , 1 ))
4279 t = ComplexF64[exp (beta) exp (- beta); exp (- beta) exp (beta)]
64101 psi = PEPSKit. initializePEPS (O, ComplexSpace (2 ))
65102 T = InfiniteTransferPEPO (psi, O, 1 , 1 )
66103
67- mps = PEPSKit . initializeMPS ( T, [ComplexSpace (10 )])
104+ mps = initialize_mps (rand, scalartype (T), T, [ComplexSpace (10 )])
68105 mps, env, ϵ = leading_boundary (mps, T, vumps_alg)
69106 f = abs (prod (expectation_value (mps, T)))
70107
73110 psi2 = initializePEPS (O, ComplexSpace (2 ))
74111 T = InfiniteTransferPEPO (psi, O, 1 , 1 )
75112
76- mps = PEPSKit . initializeMPS ( T, [ComplexSpace (8 )])
113+ mps = initialize_mps (rand, scalartype (T), T, [ComplexSpace (8 )])
77114 mps, env, ϵ = leading_boundary (mps, T, vumps_alg)
78115 f = abs (prod (expectation_value (mps, T)))
79116end
0 commit comments