Skip to content

Commit 1629bf3

Browse files
committed
Add function interface for relevant properties of each basis
1 parent e20df9b commit 1629bf3

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/QuantumInterface.jl

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,32 @@ an [`IncompatibleBases`](@ref) error is thrown.
1414
"""
1515
function basis end
1616

17+
"""
18+
fullbasis(a)
19+
20+
Return the full basis of an object.
21+
22+
Returns subtype of `Basis` when a is a subtype of `StateVector`.
23+
Returns a subtype of `OperatorBasis` a is a subtype of `AbstractOperator`.
24+
Returns a subtype of `SuperOperatorBasis` when a is a subtype of `AbstractSuperOperator`.
25+
"""
26+
function fullbasis end
27+
28+
"""
29+
length(b::Basis)
30+
31+
Total dimension of the Hilbert space.
32+
"""
33+
function length end
34+
35+
function bases end
36+
37+
function spinnumber end
38+
39+
function cutoff end
40+
41+
function offset end
42+
1743
##
1844
# Standard methods
1945
##

src/bases.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ end
3939
CompositeBasis(bases) = CompositeBasis([length(b) for b bases], bases)
4040
CompositeBasis(bases::Basis...) = CompositeBasis((bases...,))
4141
CompositeBasis(bases::Vector) = CompositeBasis((bases...,))
42+
bases(b::CompositeBasis) = b.bases
4243

4344
Base.:(==)(b1::T, b2::T) where T<:CompositeBasis = equal_shape(b1.shape, b2.shape)
4445

@@ -258,6 +259,8 @@ struct FockBasis{T} <: Basis
258259
new{T}([N-offset+1], N, offset)
259260
end
260261
end
262+
cutoff(b::FockBasis) = b.N
263+
offset(b::FockBasis) = b.offset
261264

262265
Base.:(==)(b1::FockBasis, b2::FockBasis) = (b1.N==b2.N && b1.offset==b2.offset)
263266

@@ -323,6 +326,7 @@ struct SpinBasis{S,T} <: Basis
323326
end
324327
SpinBasis(spinnumber::Rational) = SpinBasis{spinnumber}(spinnumber)
325328
SpinBasis(spinnumber) = SpinBasis(convert(Rational{Int}, spinnumber))
329+
spinnumber(b::SpinBasis) = b.spinnumber
326330

327331
Base.:(==)(b1::SpinBasis, b2::SpinBasis) = b1.spinnumber==b2.spinnumber
328332

0 commit comments

Comments
 (0)