Skip to content

Commit be86555

Browse files
committed
Merge branch 'main' into matrix_functions
2 parents a265122 + 98c5fd9 commit be86555

File tree

2 files changed

+51
-8
lines changed

2 files changed

+51
-8
lines changed

test/test_contraction.jl

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,50 @@ using LinearAlgebra: mul!
22
using Test: @test, @testset, @test_broken, @test_throws
33

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

1110
include("setup.jl")
1211

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

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

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

3251
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)