Skip to content

Commit 2c55e1c

Browse files
committed
add non-abelian matricize
1 parent 566a267 commit 2c55e1c

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

test/test_contraction.jl

Lines changed: 24 additions & 5 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
5+
using FusionTensors: FusionTensor, FusionTensorAxes, domain_axes, codomain_axes
76
using GradedArrays: 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)

0 commit comments

Comments
 (0)