Skip to content

Commit 7a7f2b8

Browse files
committed
refactor recover_sector_product_type
1 parent 7407e83 commit 7a7f2b8

File tree

2 files changed

+12
-26
lines changed

2 files changed

+12
-26
lines changed

NDTensors/src/lib/SymmetrySectors/src/sector_product.jl

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -122,41 +122,31 @@ product_sectors_fusion_rule(::NamedTuple{()}, sects::Tuple) = SectorProduct(sect
122122
product_sectors_fusion_rule(sects::NamedTuple, ::Tuple{}) = SectorProduct(sects)
123123
product_sectors_fusion_rule(::Tuple{}, sects::NamedTuple) = SectorProduct(sects)
124124

125-
function fix_fused_product_type(T::Type, fused)
126-
return fix_fused_product_type(product_sectors_symmetrystyle(T), T, fused)
125+
function fix_fused_product_type(Sectors::Type, fused)
126+
return fix_fused_product_type(product_sectors_symmetrystyle(Sectors), Sectors, fused)
127127
end
128128

129-
function fix_fused_product_type(::AbelianStyle, T::Type, fused)
130-
return recover_sector_product_type(T, fused)
129+
function fix_fused_product_type(::AbelianStyle, Sectors::Type, fused)
130+
return recover_sector_product_type(Sectors, fused)
131131
end
132132

133-
function fix_fused_product_type(::NotAbelianStyle, T::Type, fused)
133+
function fix_fused_product_type(::NotAbelianStyle, Sectors::Type, fused)
134134
# convert e.g. Tuple{GradedUnitRange{SU2}, GradedUnitRange{SU2}} into GradedUnitRange{SU2×SU2}
135135
g = reduce(×, fused)
136136
# convention: keep unsorted blocklabels as produced by F order loops in ×
137-
return recover_gradedaxis_product_type(T, g)
137+
return recover_gradedaxis_product_type(Sectors, g)
138138
end
139139

140-
function recover_gradedaxis_product_type(T::Type, g0::AbstractGradedUnitRange)
141-
new_labels = recover_sector_product_type.(T, blocklabels(g0))
140+
function recover_gradedaxis_product_type(Sectors::Type, g0::AbstractGradedUnitRange)
141+
old_labels = blocklabels(g0)
142+
old_sects = product_sectors.(SectorProduct.(old_labels))
143+
new_labels = recover_sector_product_type.(Sectors, old_sects)
142144
new_blocklengths = labelled.(unlabel.(blocklengths(g0)), new_labels)
143145
return gradedrange(new_blocklengths)
144146
end
145147

146-
function recover_sector_product_type(T::Type, c::AbstractSector)
147-
return recover_sector_product_type(T, SectorProduct(c))
148-
end
149-
150-
function recover_sector_product_type(T::Type, c::SectorProduct)
151-
return recover_sector_product_type(T, product_sectors(c))
152-
end
153-
154-
function recover_sector_product_type(T::Type{<:SectorProduct}, sects)
155-
return recover_sector_product_type(product_sectors_type(T), sects)
156-
end
157-
158-
function recover_sector_product_type(T::Type, sects)
159-
return SectorProduct(T(sects))
148+
function recover_sector_product_type(Sectors::Type, sects)
149+
return SectorProduct(Sectors(sects))
160150
end
161151

162152
# ================================= Cartesian Product ====================================

NDTensors/src/lib/SymmetrySectors/test/test_sector_product.jl

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ end
5353
@test (@inferred_latest recover_sector_product_type(
5454
typeof(product_sectors(s)), product_sectors(s)
5555
)) == s
56-
@test (@inferred_latest recover_sector_product_type(typeof(s), product_sectors(s))) == s
5756

5857
s = U1(3) × SU2(1//2) × Fib("τ")
5958
@test length(product_sectors(s)) == 3
@@ -317,9 +316,6 @@ end
317316
@test (@inferred_latest recover_sector_product_type(
318317
typeof(product_sectors(s)), Tuple(product_sectors(s))
319318
)) == s
320-
@test (@inferred_latest recover_sector_product_type(
321-
typeof(s), Tuple(product_sectors(s))
322-
)) == s
323319
@test s == (B=SU2(2),) × (A=U1(1),)
324320

325321
s = s × (C=Ising("ψ"),)

0 commit comments

Comments
 (0)