Skip to content

Commit 848f01e

Browse files
authored
Define hasqns, delete dag in favor of GradedUnitRanges.dag (#28)
1 parent 7a1ed53 commit 848f01e

File tree

5 files changed

+60
-15
lines changed

5 files changed

+60
-15
lines changed

Project.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ITensorBase"
22
uuid = "4795dd04-0d67-49bb-8f44-b89c448a1dc7"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.1.14"
4+
version = "0.1.15"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
@@ -16,17 +16,20 @@ VectorInterface = "409d34a3-91d5-4945-b6ec-7529ddf182d8"
1616

1717
[weakdeps]
1818
DiagonalArrays = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
19+
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
1920
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
2021

2122
[extensions]
2223
ITensorBaseDiagonalArraysExt = "DiagonalArrays"
24+
ITensorBaseGradedUnitRangesExt = "GradedUnitRanges"
2325
ITensorBaseSparseArraysBaseExt = ["NamedDimsArrays", "SparseArraysBase"]
2426

2527
[compat]
2628
Accessors = "0.1.39"
2729
DerivableInterfaces = "0.3.7"
2830
DiagonalArrays = "0.2.3"
2931
FillArrays = "1.13.0"
32+
GradedUnitRanges = "0.1.4"
3033
LinearAlgebra = "1.10"
3134
MapBroadcast = "0.1.5"
3235
NamedDimsArrays = "0.4"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module ITensorBaseGradedUnitRangesExt
2+
3+
using GradedUnitRanges: AbstractGradedUnitRange
4+
using ITensorBase: ITensorBase
5+
6+
# TODO: Replace with a more general functionality in
7+
# `GradedUnitRanges`, like `isgraded`.
8+
ITensorBase.hasqns(r::AbstractGradedUnitRange) = true
9+
10+
end

src/quirks.jl

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
# TODO: Define this properly.
2-
# TODO: Rename this to `dual`.
3-
dag(i::Index) = i
4-
# TODO: Define this properly.
5-
# TODO: Rename this to `dual`.
6-
dag(a::ITensor) = a
1+
using NamedDimsArrays: dename
72

83
# TODO: Deprecate, just use `Int(length(i))` or
94
# `unname(length(i))` directly.
@@ -15,12 +10,11 @@ dim(i::Index) = Int(length(i))
1510
# `unname(length(i))` directly.
1611
dim(a::AbstractITensor) = Int(length(a))
1712

18-
# TODO: Define this properly.
19-
# TODO: Maybe rename to `isgraded(i::Index) = isgraded(dename(i))`.
20-
hasqns(::Index) = false
21-
# TODO: Define this properly.
22-
# TODO: Maybe rename to `isgraded(a) = all(isgraded, axes(a))`.
23-
hasqns(::AbstractITensor) = false
13+
# TODO: Replace with a more general functionality in
14+
# `GradedUnitRanges`, like `isgraded`.
15+
hasqns(r::AbstractUnitRange) = false
16+
hasqns(i::Index) = hasqns(dename(i))
17+
hasqns(a::AbstractITensor) = all(hasqns, inds(a))
2418

2519
# This seems to be needed to get broadcasting working.
2620
# TODO: Investigate this and see if we can get rid of it.

test/Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
3+
BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e"
4+
BlockSparseArrays = "2c9a651f-6452-4ace-a6ac-809f4280fbb4"
35
DiagonalArrays = "74fd4be6-21e2-4f6f-823a-4360d37c7a77"
6+
GradedUnitRanges = "e2de450a-8a67-46c7-b59c-01d5a3d041c5"
47
ITensorBase = "4795dd04-0d67-49bb-8f44-b89c448a1dc7"
58
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
69
NamedDimsArrays = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
710
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
811
SparseArraysBase = "0d5efcca-f356-4864-8770-e1ed8d78f208"
912
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
13+
SymmetrySectors = "f8a8ad64-adbc-4fce-92f7-ffe2bb36a86e"
1014
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1115

1216
[compat]

test/test_basics.jl

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
1-
using ITensorBase:
2-
ITensorBase, ITensor, Index, gettag, hastag, inds, plev, prime, settag, tags, unsettag
1+
using BlockArrays: Block
2+
using BlockSparseArrays: BlockSparseArray
33
using DiagonalArrays: δ, delta, diagview
4+
using GradedUnitRanges: dual, gradedrange
5+
using ITensorBase:
6+
ITensorBase,
7+
ITensor,
8+
Index,
9+
gettag,
10+
hastag,
11+
hasqns,
12+
inds,
13+
plev,
14+
prime,
15+
settag,
16+
tags,
17+
unsettag
418
using NamedDimsArrays: dename, name, named
519
using SparseArraysBase: oneelement
20+
using SymmetrySectors: U1
621
using Test: @test, @test_broken, @testset
722

823
@testset "ITensorBase" begin
@@ -75,4 +90,23 @@ using Test: @test, @test_broken, @testset
7590
@test a[2] == 1
7691
@test a[3] == 0
7792
end
93+
@testset "hasqns" begin
94+
i = Index(2)
95+
j = Index(2)
96+
a = ITensor(randn(2, 2), (i, j))
97+
@test !hasqns(i)
98+
@test !hasqns(j)
99+
@test !hasqns(a)
100+
101+
r = gradedrange([U1(0) => 2, U1(1) => 2])
102+
d = BlockSparseArray{Float64}(r, dual(r))
103+
d[Block(1, 1)] = randn(2, 2)
104+
d[Block(2, 2)] = randn(2, 2)
105+
i = Index(r)
106+
j = Index(dual(r))
107+
a = ITensor(d, (i, j))
108+
@test hasqns(i)
109+
@test hasqns(j)
110+
@test hasqns(a)
111+
end
78112
end

0 commit comments

Comments
 (0)