Skip to content

Commit 9b28192

Browse files
authored
Define generic standard basis and projector states/operators, fix some parsing issues (#14)
1 parent ac8ca27 commit 9b28192

File tree

14 files changed

+728
-876
lines changed

14 files changed

+728
-876
lines changed

Project.toml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
name = "QuantumOperatorDefinitions"
22
uuid = "826dd319-6fd5-459a-a990-3a4f214664bf"
33
authors = ["ITensor developers <support@itensor.org> and contributors"]
4-
version = "0.1.2"
4+
version = "0.1.3"
55

66
[deps]
77
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
88
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
99

10+
[weakdeps]
11+
ITensorBase = "4795dd04-0d67-49bb-8f44-b89c448a1dc7"
12+
13+
[extensions]
14+
QuantumOperatorDefinitionsITensorBaseExt = "ITensorBase"
15+
1016
[compat]
17+
ITensorBase = "0.1.10"
1118
LinearAlgebra = "1.10"
1219
Random = "1.10"
1320
julia = "1.10"
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module QuantumOperatorDefinitionsITensorBaseExt
2+
3+
using ITensorBase: ITensor, Index, dag, gettag, prime
4+
using QuantumOperatorDefinitions:
5+
QuantumOperatorDefinitions, OpName, SiteType, StateName, has_fermion_string
6+
7+
function QuantumOperatorDefinitions.SiteType(r::Index)
8+
return SiteType(gettag(r, "sitetype", "Qudit"); dim=Int(length(r)))
9+
end
10+
11+
function QuantumOperatorDefinitions.has_fermion_string(n::String, r::Index)
12+
return has_fermion_string(OpName(n), SiteType(r))
13+
end
14+
15+
function Base.AbstractArray(n::OpName, r::Index)
16+
# TODO: Define this with mapped dimnames.
17+
return ITensor(AbstractArray(n, SiteType(r)), (prime(r), dag(r)))
18+
end
19+
20+
function Base.AbstractArray(n::StateName, r::Index)
21+
return ITensor(AbstractArray(n, SiteType(r)), (r,))
22+
end
23+
24+
end

src/has_fermion_string.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
has_fermion_string(::OpName, ::SiteType) = nothing
1+
function has_fermion_string(n::OpName, t::SiteType)
2+
n′ = alias(n)
3+
if n == n′
4+
return false
5+
end
6+
return has_fermion_string(n′, t)
7+
end

0 commit comments

Comments
 (0)