Canonical Fermionic and Hard-core Bosonic Systems
ExactDiagonalization.CanonicalFockSystems.BinaryBases
— TypeBinaryBases{A<:AbelianNumber, B<:BinaryBasis, T<:AbstractVector{B}} <: Sector
A set of binary bases.
ExactDiagonalization.CanonicalFockSystems.BinaryBases
— MethodBinaryBases(states, nparticle::Integer)
BinaryBases(nstate::Integer, nparticle::Integer)
BinaryBases{A}(states, nparticle::Integer; kwargs...) where {A<:AbelianNumber}
BinaryBases{A}(nstate::Integer, nparticle::Integer; kwargs...) where {A<:AbelianNumber}
Construct a set of binary bases that preserves the particle number conservation.
ExactDiagonalization.CanonicalFockSystems.BinaryBases
— MethodBinaryBases(states)
BinaryBases(nstate::Integer)
BinaryBases{A}(states) where {A<:AbelianNumber}
BinaryBases{A}(nstate::Integer) where {A<:AbelianNumber}
Construct a set of binary bases that subject to no quantum number conservation.
ExactDiagonalization.CanonicalFockSystems.BinaryBasis
— TypeBinaryBasis{I<:Unsigned}
Binary basis represented by an unsigned integer.
ExactDiagonalization.CanonicalFockSystems.BinaryBasis
— MethodBinaryBasis(states; filter=index->true)
BinaryBasis{I}(states; filter=index->true) where {I<:Unsigned}
Construct a binary basis with the given occupied orbitals.
ExactDiagonalization.CanonicalFockSystems.BinaryBasisRange
— TypeBinaryBasisRange{I<:Unsigned} <: VectorSpace{BinaryBasis{I}}
A continuous range of binary basis from 0 to 2^n-1.
ExactDiagonalization.EDCore.EDKind
— MethodEDKind(::Type{<:Hilbert{<:Fock}})
The kind of the exact diagonalization method applied to a canonical quantum Fock lattice system.
ExactDiagonalization.EDCore.Sector
— TypeSector(hilbert::Hilbert{<:Fock}, basistype=UInt) -> BinaryBases
Sector(hilbert::Hilbert{<:Fock}, quantumnumber::ParticleNumber, basistype=UInt; table=Table(hilbert, Metric(EDKind(hilbert), hilbert))) -> BinaryBases
Sector(hilbert::Hilbert{<:Fock}, quantumnumber::SpinfulParticle, basistype=UInt; table=Table(hilbert, Metric(EDKind(hilbert), hilbert))) -> BinaryBases
Construct the binary bases of a Hilbert space with the specified quantum number.
ExactDiagonalization.EDCore.TargetSpace
— TypeTargetSpace(hilbert::Hilbert{<:Fock}, basistype=UInt)
TargetSpace(hilbert::Hilbert{<:Fock}, quantumnumbers::Union{AbelianNumber, Tuple{AbelianNumber, Vararg{AbelianNumber}}}, basistype=UInt; table=Table(hilbert, Metric(EDKind(hilbert), hilbert)))
Construct a target space from the total Hilbert space and the associated quantum numbers.
QuantumLattices.DegreesOfFreedom.Metric
— MethodMetric(::EDKind{:FED}, ::Hilbert{<:Fock}) -> OperatorUnitToTuple
Get the index-to-tuple metric for a canonical quantum Fock lattice system.
QuantumLattices.QuantumNumbers.AbelianNumber
— MethodAbelianNumber(bs::BinaryBases)
Get the Abelian quantum number of a set of binary bases.
Base.count
— Methodcount(basis::BinaryBasis) -> Int
count(basis::BinaryBasis, start::Integer, stop::Integer) -> Int
Count the number of occupied single-particle states.
Base.isone
— Methodisone(basis::BinaryBasis, state::Integer) -> Bool
Judge whether the specified single-particle state is occupied for a basis.
Base.iszero
— Methodiszero(basis::BinaryBasis, state::Integer) -> Bool
Judge whether the specified single-particle state is unoccupied for a basis.
Base.iterate
— Functioniterate(basis::BinaryBasis, state=nothing)
Iterate over the numbers of the occupied single-particle orbitals.
Base.one
— Methodone(basis::BinaryBasis, state::Integer) -> BinaryBasis
Get a new basis with the specified single-particle state occupied.
Base.zero
— Methodzero(basis::BinaryBasis, state::Integer) -> BinaryBasis
Get a new basis with the specified single-particle state unoccupied.
ExactDiagonalization.EDCore.productable
— Methodproductable(bs₁::BinaryBases, bs₂::BinaryBases) -> Bool
Judge whether two sets of binary bases could be direct producted.
ExactDiagonalization.EDCore.sumable
— Methodsumable(bs₁::BinaryBases, bs₂::BinaryBases) -> Bool
Judge whether two sets of binary bases could be direct summed.
QuantumLattices.:⊗
— Method⊗(bs₁::BinaryBases, bs₂::BinaryBases) -> BinaryBases
Get the direct product of two sets of binary bases.
QuantumLattices.:⊗
— Method⊗(basis₁::BinaryBasis, basis₂::BinaryBasis) -> BinaryBasis
Get the direct product of two binary bases.
QuantumLattices.QuantumOperators.matrix
— Functionmatrix(op::Operator, braket::NTuple{2, BinaryBases}, table, dtype=valtype(op)) -> SparseMatrixCSC{dtype, Int}
Get the CSC-formed sparse matrix representation of an operator.
Here, table
specifies the order of the operator ids.