Skip to content

Commit 8ebe151

Browse files
Rename Space to HilbertSpace
1 parent 9b80053 commit 8ebe151

File tree

11 files changed

+37
-30
lines changed

11 files changed

+37
-30
lines changed

docs/src/resources/api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ end
1717
## [Quantum object (Qobj) and type](@id doc-API:Quantum-object-and-type)
1818

1919
```@docs
20-
Space
20+
HilbertSpace
2121
EnrSpace
2222
ProductDimensions
2323
GeneralProductDimensions

src/entropy.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ Calculate the [concurrence](https://en.wikipedia.org/wiki/Concurrence_(quantum_c
221221
- [Hill-Wootters1997](@citet)
222222
"""
223223
function concurrence::QuantumObject{OpType}) where {OpType<:Union{Ket,Operator}}
224-
.dimensions == ProductDimensions((Space(2), Space(2)))) || throw(
224+
.dimensions == ProductDimensions((HilbertSpace(2), HilbertSpace(2)))) || throw(
225225
ArgumentError(
226226
"The `concurrence` only works for a two-qubit state, invalid dims = $(_get_dims_string.dimensions)).",
227227
),

src/qobj/dimensions.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ abstract type AbstractDimensions{M,N} end
1111
to::T
1212
end
1313
14-
A structure that describes the Hilbert [`Space`](@ref) of each subsystems.
14+
A structure that embodies the [`AbstractSpace`](@ref) of each subsystem in a composite Hilbert space.
1515
"""
1616
struct ProductDimensions{N,T<:Tuple} <: AbstractDimensions{N,N}
1717
to::T
@@ -24,9 +24,9 @@ function ProductDimensions(dims::Union{AbstractVector{T},NTuple{N,T}}) where {T<
2424
L = length(dims)
2525
(L > 0) || throw(DomainError(dims, "The argument dims must be of non-zero length"))
2626

27-
return ProductDimensions(Tuple(Space.(dims)))
27+
return ProductDimensions(Tuple(HilbertSpace.(dims)))
2828
end
29-
ProductDimensions(dims::Int) = ProductDimensions(Space(dims))
29+
ProductDimensions(dims::Int) = ProductDimensions(HilbertSpace(dims))
3030
ProductDimensions(dims::DimType) where {DimType<:AbstractSpace} = ProductDimensions((dims,))
3131
ProductDimensions(dims::Any) = throw(
3232
ArgumentError(
@@ -40,7 +40,7 @@ ProductDimensions(dims::Any) = throw(
4040
from::T2
4141
end
4242
43-
A structure that describes the left-hand side (`to`) and right-hand side (`from`) Hilbert [`Space`](@ref) of an [`Operator`](@ref).
43+
A structure that embodies the left-hand side (`to`) and right-hand side (`from`) [`AbstractSpace`](@ref) of a quantum object.
4444
"""
4545
struct GeneralProductDimensions{M,N,T1<:Tuple,T2<:Tuple} <: AbstractDimensions{M,N}
4646
to::T1 # space acting on the left
@@ -61,7 +61,7 @@ function GeneralProductDimensions(dims::Union{AbstractVector{T},NTuple{N,T}}) wh
6161
(L1 > 0) || throw(DomainError(L1, "The length of `dims[1]` must be larger or equal to 1."))
6262
(L2 > 0) || throw(DomainError(L2, "The length of `dims[2]` must be larger or equal to 1."))
6363

64-
return GeneralProductDimensions(Tuple(Space.(dims[1])), Tuple(Space.(dims[2])))
64+
return GeneralProductDimensions(Tuple(HilbertSpace.(dims[1])), Tuple(HilbertSpace.(dims[2])))
6565
end
6666

6767
_gen_dimensions(dims::AbstractDimensions) = dims

src/qobj/eigsolve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ julia> λ
4545
1.0 + 0.0im
4646
4747
julia> ψ
48-
2-element Vector{QuantumObject{Ket, ProductDimensions{1, Tuple{Space}}, Vector{ComplexF64}}}:
48+
2-element Vector{QuantumObject{Ket, ProductDimensions{1, Tuple{HilbertSpace}}, Vector{ComplexF64}}}:
4949
5050
Quantum Object: type=Ket() dims=[2] size=(2,)
5151
2-element Vector{ComplexF64}:

src/qobj/quantum_object.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ julia> a.dims
4141
20
4242
4343
julia> a.dimensions
44-
ProductDimensions{1, Tuple{Space}}((Space(20),))
44+
ProductDimensions{1, Tuple{HilbertSpace}}((HilbertSpace(20),))
4545
```
4646
"""
4747
struct QuantumObject{ObjType<:QuantumObjectType,DimType<:AbstractDimensions,DataType<:AbstractArray} <:

src/qobj/quantum_object_base.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,10 @@ get_dimensions_from(
238238
A::AbstractQuantumObject{ObjType,<:ProductDimensions},
239239
) where {ObjType<:Union{SuperOperator,OperatorBra,OperatorKet}} = A.dimensions.to
240240

241-
# this creates a list of Space(1), it is used to generate `from` for Ket, and `to` for Bra
241+
# this creates a list of HilbertSpace(1), it is used to generate `from` for Ket, and `to` for Bra
242242
space_one_list(dimensions::NTuple{N,AbstractSpace}) where {N} =
243-
ntuple(i -> Space(1), Val(sum(_get_dims_length, dimensions)))
244-
_get_dims_length(::Space) = 1
243+
ntuple(i -> HilbertSpace(1), Val(sum(_get_dims_length, dimensions)))
244+
_get_dims_length(::HilbertSpace) = 1
245245
_get_dims_length(::EnrSpace{N}) where {N} = N
246246

247247
# functions for getting Float or Complex element type

src/qobj/space.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@
22
This file defines the Hilbert space structure.
33
=#
44

5-
export AbstractSpace, Space
5+
export AbstractSpace, HilbertSpace
66

77
abstract type AbstractSpace end
88

99
@doc raw"""
10-
struct Space <: AbstractSpace
10+
struct HilbertSpace <: AbstractSpace
1111
size::Int
1212
end
1313
1414
A structure that describes a single Hilbert space with size = `size`.
1515
"""
16-
struct Space <: AbstractSpace
16+
struct HilbertSpace <: AbstractSpace
1717
size::Int
1818

19-
function Space(size::Int)
20-
(size < 1) && throw(DomainError(size, "The size of Space must be positive integer (≥ 1)."))
19+
function HilbertSpace(size::Int)
20+
(size < 1) && throw(DomainError(size, "The size of `HilbertSpace` must be positive integer (≥ 1)."))
2121
return new(size)
2222
end
2323
end
2424

25-
dimensions_to_dims(s::Space) = SVector{1,Int}(s.size)
25+
dimensions_to_dims(s::HilbertSpace) = SVector{1,Int}(s.size)

test/core-test/enr_state_operator.jl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
end
2323

2424
@testset "kron" begin
25-
# normal Space
25+
# normal HilbertSpace
2626
D1 = 4
2727
D2 = 5
2828
dims_s = (D1, D2)
2929
ρ_s = rand_dm(dims_s)
3030
I_s = qeye(D1) qeye(D2)
3131
size_s = prod(dims_s)
32-
space_s = (Space(D1), Space(D2))
32+
space_s = (HilbertSpace(D1), HilbertSpace(D2))
3333

3434
# EnrSpace
3535
dims_enr = (2, 2, 3)
@@ -50,15 +50,18 @@
5050
"\nQuantum Object: type=Operator() dims=$ρ_tot_dims size=$((ρ_tot_size, ρ_tot_size)) ishermitian=$ρ_tot_isherm\n$datastring"
5151

5252
# use GeneralProductDimensions to do partial trace
53-
new_dims1 = GeneralProductDimensions((Space(1), Space(1), space_enr), (Space(1), Space(1), space_enr))
53+
new_dims1 = GeneralProductDimensions(
54+
(HilbertSpace(1), HilbertSpace(1), space_enr),
55+
(HilbertSpace(1), HilbertSpace(1), space_enr),
56+
)
5457
ρ_enr_compound = Qobj(zeros(ComplexF64, size_enr, size_enr), dims = new_dims1)
5558
basis_list = [tensor(basis(D1, i), basis(D2, j)) for i in 0:(D1-1) for j in 0:(D2-1)]
5659
for b in basis_list
5760
ρ_enr_compound += tensor(b', I_enr) * ρ_tot * tensor(b, I_enr)
5861
end
5962
new_dims2 = GeneralProductDimensions(
60-
(space_s..., Space(1), Space(1), Space(1)),
61-
(space_s..., Space(1), Space(1), Space(1)),
63+
(space_s..., HilbertSpace(1), HilbertSpace(1), HilbertSpace(1)),
64+
(space_s..., HilbertSpace(1), HilbertSpace(1), HilbertSpace(1)),
6265
)
6366
ρ_s_compound = Qobj(zeros(ComplexF64, size_s, size_s), dims = new_dims2)
6467
basis_list = [enr_fock(space_enr, space_enr.idx2state[idx]) for idx in 1:space_enr.size]

test/core-test/low_rank_dynamics.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
M = latt.N + 1 # Number of states in the LR basis
1212

1313
# Define initial state
14-
ϕ = Vector{QuantumObject{Ket,ProductDimensions{M - 1,NTuple{M - 1,Space}},Vector{ComplexF64}}}(undef, M)
14+
ϕ = Vector{QuantumObject{Ket,ProductDimensions{M - 1,NTuple{M - 1,HilbertSpace}},Vector{ComplexF64}}}(undef, M)
1515
ϕ[1] = kron(fill(basis(2, 1), N_modes)...)
1616

1717
i = 1

test/core-test/quantum_objects.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@
367367
end
368368

369369
UnionType = Union{
370-
QuantumObject{Bra,ProductDimensions{1,Tuple{Space}},Matrix{T}},
371-
QuantumObject{Operator,ProductDimensions{1,Tuple{Space}},Matrix{T}},
370+
QuantumObject{Bra,ProductDimensions{1,Tuple{HilbertSpace}},Matrix{T}},
371+
QuantumObject{Operator,ProductDimensions{1,Tuple{HilbertSpace}},Matrix{T}},
372372
}
373373
a = rand(T, 1, N)
374374
@inferred UnionType Qobj(a)
@@ -377,8 +377,8 @@
377377
end
378378

379379
UnionType2 = Union{
380-
QuantumObject{Operator,GeneralProductDimensions{1,1,Tuple{Space},Tuple{Space}},Matrix{T}},
381-
QuantumObject{Operator,ProductDimensions{1,Tuple{Space}},Matrix{T}},
380+
QuantumObject{Operator,GeneralProductDimensions{1,1,Tuple{HilbertSpace},Tuple{HilbertSpace}},Matrix{T}},
381+
QuantumObject{Operator,ProductDimensions{1,Tuple{HilbertSpace}},Matrix{T}},
382382
}
383383
a = rand(T, N, N)
384384
@inferred UnionType Qobj(a)

0 commit comments

Comments
 (0)