Skip to content

Commit 44105b0

Browse files
committed
Change terminology from symmetry to grading
1 parent e5bddb7 commit 44105b0

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

ext/QuantumOperatorDefinitionsSymmetrySectorsExt/QuantumOperatorDefinitionsSymmetrySectorsExt.jl

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using BlockArrays: blocklasts, blocklengths
44
using GradedUnitRanges: GradedOneTo, gradedrange
55
using LabelledNumbers: label, labelled, unlabel
66
using QuantumOperatorDefinitions:
7-
QuantumOperatorDefinitions, @SiteType_str, @SymmetryType_str, SiteType, SymmetryType, name
7+
QuantumOperatorDefinitions, @SiteType_str, @GradingType_str, SiteType, GradingType, name
88
using SymmetrySectors: ×, SectorProduct, U1, Z
99

1010
sortedunion(a, b) = sort(union(a, b))
@@ -21,60 +21,60 @@ end
2121
QuantumOperatorDefinitions.combine_axes(a::GradedOneTo, b::Base.OneTo) = a
2222
QuantumOperatorDefinitions.combine_axes(a::Base.OneTo, b::GradedOneTo) = b
2323

24-
function Base.AbstractUnitRange(::SymmetryType"N", t::SiteType)
24+
function Base.AbstractUnitRange(::GradingType"N", t::SiteType)
2525
return gradedrange(map(i -> SectorProduct((; N=U1(i - 1))) => 1, 1:length(t)))
2626
end
27-
function Base.AbstractUnitRange(::SymmetryType"Sz", t::SiteType)
27+
function Base.AbstractUnitRange(::GradingType"Sz", t::SiteType)
2828
return gradedrange(map(i -> SectorProduct((; Sz=U1(i - 1))) => 1, 1:length(t)))
2929
end
30-
function Base.AbstractUnitRange(::SymmetryType"Sz↑", t::SiteType)
31-
return AbstractUnitRange(SymmetryType"Sz"(), t)
30+
function Base.AbstractUnitRange(::GradingType"Sz↑", t::SiteType)
31+
return AbstractUnitRange(GradingType"Sz"(), t)
3232
end
33-
function Base.AbstractUnitRange(::SymmetryType"Sz↓", t::SiteType)
33+
function Base.AbstractUnitRange(::GradingType"Sz↓", t::SiteType)
3434
return gradedrange(map(i -> SectorProduct((; Sz=U1(-(i - 1)))) => 1, 1:length(t)))
3535
end
3636

37-
function sector(symmetrytype::SymmetryType, sec)
38-
sectorname = Symbol(get(symmetrytype, :name, name(symmetrytype)))
37+
function sector(gradingtype::GradingType, sec)
38+
sectorname = Symbol(get(gradingtype, :name, name(gradingtype)))
3939
return SectorProduct(NamedTuple{(sectorname,)}((sec,)))
4040
end
4141

42-
function Base.AbstractUnitRange(s::SymmetryType"Nf", t::SiteType"Fermion")
42+
function Base.AbstractUnitRange(s::GradingType"Nf", t::SiteType"Fermion")
4343
return gradedrange([sector(s, U1(0)) => 1, sector(s, U1(1)) => 1])
4444
end
45-
# TODO: Write in terms of `SymmetryType"Nf"` definition.
46-
function Base.AbstractUnitRange(s::SymmetryType"NfParity", t::SiteType"Fermion")
45+
# TODO: Write in terms of `GradingType"Nf"` definition.
46+
function Base.AbstractUnitRange(s::GradingType"NfParity", t::SiteType"Fermion")
4747
return gradedrange([sector(s, Z{2}(0)) => 1, sector(s, Z{2}(1)) => 1])
4848
end
49-
function Base.AbstractUnitRange(s::SymmetryType"Sz", t::SiteType"Fermion")
49+
function Base.AbstractUnitRange(s::GradingType"Sz", t::SiteType"Fermion")
5050
return gradedrange([sector(s, U1(0)) => 1, sector(s, U1(1)) => 1])
5151
end
52-
function Base.AbstractUnitRange(s::SymmetryType"Sz↑", t::SiteType"Fermion")
52+
function Base.AbstractUnitRange(s::GradingType"Sz↑", t::SiteType"Fermion")
5353
return gradedrange([sector(s, U1(0)) => 1, sector(s, U1(1)) => 1])
5454
end
55-
function Base.AbstractUnitRange(s::SymmetryType"Sz↓", t::SiteType"Fermion")
55+
function Base.AbstractUnitRange(s::GradingType"Sz↓", t::SiteType"Fermion")
5656
return gradedrange([sector(s, U1(0)) => 1, sector(s, U1(-1)) => 1])
5757
end
5858

5959
# TODO: Write in terms of `SiteType"Fermion"` definitions.
60-
function Base.AbstractUnitRange(s::SymmetryType"Nf", t::SiteType"Electron")
60+
function Base.AbstractUnitRange(s::GradingType"Nf", t::SiteType"Electron")
6161
return gradedrange([
6262
sector(s, U1(0)) => 1,
6363
sector(s, U1(1)) => 1,
6464
sector(s, U1(1)) => 1,
6565
sector(s, U1(2)) => 1,
6666
])
6767
end
68-
# TODO: Write in terms of `SymmetryType"Nf"` definition.
69-
function Base.AbstractUnitRange(s::SymmetryType"NfParity", t::SiteType"Electron")
68+
# TODO: Write in terms of `GradingType"Nf"` definition.
69+
function Base.AbstractUnitRange(s::GradingType"NfParity", t::SiteType"Electron")
7070
return gradedrange([
7171
sector(s, Z{2}(0)) => 1,
7272
sector(s, Z{2}(1)) => 1,
7373
sector(s, Z{2}(1)) => 1,
7474
sector(s, Z{2}(0)) => 1,
7575
])
7676
end
77-
function Base.AbstractUnitRange(s::SymmetryType"Sz", t::SiteType"Electron")
77+
function Base.AbstractUnitRange(s::GradingType"Sz", t::SiteType"Electron")
7878
return gradedrange([
7979
sector(s, U1(0)) => 1,
8080
sector(s, U1(1)) => 1,

src/sitetype.jl

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,33 +29,33 @@ end
2929
combine_axes(a) = a
3030
combine_axes(a, b, rest...) = combine_axes(combine_axes(a, b), rest...)
3131

32-
struct SymmetryType{T,Params}
32+
struct GradingType{T,Params}
3333
params::Params
34-
function SymmetryType{N}(params::NamedTuple) where {N}
34+
function GradingType{N}(params::NamedTuple) where {N}
3535
return new{N,typeof(params)}(params)
3636
end
3737
end
38-
name(::SymmetryType{T}) where {T} = T
39-
params(t::SymmetryType) = getfield(t, :params)
40-
Base.getproperty(t::SymmetryType, name::Symbol) = getfield(params(t), name)
41-
Base.get(t::SymmetryType, name::Symbol, default) = get(params(t), name, default)
42-
Base.haskey(t::SymmetryType, name::Symbol) = haskey(params(t), name)
43-
SymmetryType{N}(; kwargs...) where {N} = SymmetryType{N}((; kwargs...))
44-
SymmetryType(s::AbstractString; kwargs...) = SymmetryType{Symbol(s)}(; kwargs...)
45-
function SymmetryType(s::Pair{<:AbstractString,<:AbstractString}; kwargs...)
46-
return SymmetryType(first(s); kwargs..., name=last(s))
38+
name(::GradingType{T}) where {T} = T
39+
params(t::GradingType) = getfield(t, :params)
40+
Base.getproperty(t::GradingType, name::Symbol) = getfield(params(t), name)
41+
Base.get(t::GradingType, name::Symbol, default) = get(params(t), name, default)
42+
Base.haskey(t::GradingType, name::Symbol) = haskey(params(t), name)
43+
GradingType{N}(; kwargs...) where {N} = GradingType{N}((; kwargs...))
44+
GradingType(s::AbstractString; kwargs...) = GradingType{Symbol(s)}(; kwargs...)
45+
function GradingType(s::Pair{<:AbstractString,<:AbstractString}; kwargs...)
46+
return GradingType(first(s); kwargs..., name=last(s))
4747
end
48-
function SymmetryType(s::Pair{<:AbstractString,<:NamedTuple}; kwargs...)
49-
return SymmetryType(first(s); kwargs..., last(s)...)
48+
function GradingType(s::Pair{<:AbstractString,<:NamedTuple}; kwargs...)
49+
return GradingType(first(s); kwargs..., last(s)...)
5050
end
51-
macro SymmetryType_str(s)
52-
return :(SymmetryType{$(Expr(:quote, Symbol(s)))})
51+
macro GradingType_str(s)
52+
return :(GradingType{$(Expr(:quote, Symbol(s)))})
5353
end
5454

55-
function Base.AbstractUnitRange(symmetry::SymmetryType, t::SiteType)
55+
function Base.AbstractUnitRange(grading::GradingType, t::SiteType)
5656
return error("Not implemented.")
5757
end
58-
function Base.AbstractUnitRange(symmetry::SymmetryType"Trivial", t::SiteType)
58+
function Base.AbstractUnitRange(grading::GradingType"Trivial", t::SiteType)
5959
return Base.OneTo(length(t))
6060
end
6161

@@ -70,8 +70,8 @@ function Base.AbstractUnitRange(t::SiteType)
7070
# This logic allows specifying a range with extra properties,
7171
# like ones with symmetry sectors.
7272
haskey(t, :range) && return t.range
73-
if haskey(t, :symmetries)
74-
rs = map(symmetry -> AbstractUnitRange(SymmetryType(symmetry), t), t.symmetries)
73+
if haskey(t, :gradings)
74+
rs = map(grading -> AbstractUnitRange(GradingType(grading), t), t.gradings)
7575
return combine_axes(Base.OneTo(length(t)), rs...)
7676
end
7777
return Base.OneTo(length(t))

0 commit comments

Comments
 (0)