Skip to content

Commit 98c5fd9

Browse files
authored
Add more non-abelian tests (#78)
1 parent 5472a79 commit 98c5fd9

File tree

2 files changed

+52
-9
lines changed

2 files changed

+52
-9
lines changed

test/test_contraction.jl

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,49 @@ using LinearAlgebra: mul!
22
using Test: @test, @testset, @test_broken
33

44
using BlockSparseArrays: BlockSparseArray
5-
using FusionTensors:
6-
FusionMatrix, FusionTensor, FusionTensorAxes, domain_axes, codomain_axes
7-
using GradedArrays: U1, dual, gradedrange
5+
using FusionTensors: FusionTensor, FusionTensorAxes, domain_axes, codomain_axes
6+
using GradedArrays: SU2, U1, dual, gradedrange
87
using TensorAlgebra: contract, matricize, permmortar, tuplemortar, unmatricize, unmatricize!
98

109
include("setup.jl")
1110

12-
@testset "matricize" begin
11+
@testset "abelian matricize" begin
1312
g1 = gradedrange([U1(0) => 1, U1(1) => 2, U1(2) => 3])
1413
g2 = gradedrange([U1(0) => 2, U1(1) => 2, U1(3) => 1])
1514
g3 = gradedrange([U1(-1) => 1, U1(0) => 2, U1(1) => 1])
1615
g4 = gradedrange([U1(-1) => 1, U1(0) => 1, U1(1) => 1])
1716

1817
ft1 = randn(FusionTensorAxes((g1, g2), (dual(g3), dual(g4))))
1918
m = matricize(ft1, (1, 2), (3, 4))
20-
@test m isa FusionMatrix
2119
ft2 = unmatricize(m, axes(ft1))
2220
@test ft1 ft2
2321

2422
biperm = permmortar(((3,), (1, 2, 4)))
2523
m2 = matricize(ft1, biperm)
26-
ft_dest = FusionTensor{eltype(ft1)}(undef, axes(ft1)[biperm])
24+
ft_dest = similar(ft1, axes(ft1)[biperm])
2725
unmatricize!(ft_dest, m2, permmortar(((1,), (2, 3, 4))))
2826
@test ft_dest permutedims(ft1, biperm)
27+
28+
ft2 = similar(ft1)
29+
unmatricize!(ft2, m2, biperm)
30+
@test ft1 ft2
31+
end
32+
33+
@testset "non-abelian matricize" begin
34+
g1 = gradedrange([SU2(0) => 1, SU2(1//2) => 2, SU2(1) => 3])
35+
g2 = gradedrange([SU2(0) => 2, SU2(1//2) => 2, SU2(3//2) => 1])
36+
g3 = gradedrange([SU2(1//2) => 1, SU2(1) => 2, SU2(2) => 1])
37+
g4 = gradedrange([SU2(0) => 1, SU2(1) => 1, SU2(3//2) => 1])
38+
39+
ft1 = randn(FusionTensorAxes((g1, g2), (dual(g3), dual(g4))))
40+
m = matricize(ft1, (1, 2), (3, 4))
41+
ft2 = unmatricize(m, axes(ft1))
42+
@test ft1 ft2
43+
44+
biperm = permmortar(((3,), (1, 2, 4)))
45+
m2 = matricize(ft1, biperm)
46+
ft_dest = similar(ft1, axes(ft1)[biperm])
47+
unmatricize!(ft_dest, m2, permmortar(((1,), (2, 3, 4))))
2948
@test ft_dest permutedims(ft1, biperm)
3049

3150
ft2 = similar(ft1)

test/test_permutedims.jl

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using FusionTensors:
1010
ndims_domain,
1111
ndims_codomain,
1212
to_fusiontensor
13-
using GradedArrays: O2, U1, SectorProduct, SU2, dual, gradedrange, space_isequal
13+
using GradedArrays: ×, O2, U1, SectorProduct, SU2, dual, gradedrange, space_isequal
1414
using TensorAlgebra: permmortar, tuplemortar
1515

1616
include("setup.jl")
@@ -178,8 +178,6 @@ end
178178
dual(gradedrange([O2(1//2) => 1])),
179179
gradedrange([SU2(1//2) => 1]),
180180
dual(gradedrange([SU2(1//2) => 1])),
181-
gradedrange([SectorProduct(SU2(1//2), U1(0)) => 1]),
182-
gradedrange([SectorProduct(SU2(1//2), SU2(0)) => 1]),
183181
)
184182
g2b = dual(g2)
185183
for biperm in [
@@ -201,3 +199,29 @@ end
201199
end
202200
end
203201
end
202+
203+
@testset "SectorProduct permutedims" begin
204+
d = 2
205+
D = 3
206+
tRVB = zeros((d, D, D, D, D)) # tensor RVB SU(2) for spin s
207+
for i in 1:d
208+
tRVB[i, i + 1, 1, 1, 1] = 1.0
209+
tRVB[i, 1, i + 1, 1, 1] = 1.0
210+
tRVB[i, 1, 1, i + 1, 1] = 1.0
211+
tRVB[i, 1, 1, 1, i + 1] = 1.0
212+
end
213+
214+
gd = gradedrange([SU2(1//2) × U1(3) => 1])
215+
gD = dual(gradedrange([SU2(0) × U1(1) => 1, SU2(1//2) × U1(0) => 1]))
216+
ft = to_fusiontensor(tRVB, (gd,), (gD, gD, gD, gD))
217+
@test Array(ft) tRVB
218+
for biperm in [
219+
permmortar(((1,), (2, 3, 4, 5))),
220+
permmortar(((1, 2, 3), (4, 5))),
221+
permmortar(((3, 1, 4), (2, 5))),
222+
permmortar(((), (2, 4, 1, 5, 3))),
223+
permmortar(((2, 4, 1, 5, 3), ())),
224+
]
225+
@test permutedims(ft, biperm) naive_permutedims(ft, biperm)
226+
end
227+
end

0 commit comments

Comments
 (0)