Core of Exact Diagonalization

ExactDiagonalization.EDCore.EDType
ED{K<:EDKind, L<:AbstractLattice, G<:OperatorGenerator, M<:Image} <: Frontend

Exact diagonalization method of a quantum lattice system.

ExactDiagonalization.EDCore.EDMethod
ED(lattice::AbstractLattice, hilbert::Hilbert, terms::Tuple{Vararg{Term}}, quantumnumbers::Tuple; neighbors::Union{Nothing, Int, Neighbors}=nothing, boundary::Boundary=plain, kwargs...)
ED(lattice::AbstractLattice, hilbert::Hilbert, terms::Tuple{Vararg{Term}}, quantumnumbers...; neighbors::Union{Nothing, Int, Neighbors}=nothing, boundary::Boundary=plain, kwargs...)

Construct the exact diagonalization method for a canonical quantum Fock lattice system.

ExactDiagonalization.EDCore.EDMatrixType
EDMatrix{S<:Sector, M<:SparseMatrixCSC} <: OperatorPack{M, Tuple{S, S}}

Matrix representation of quantum operators between a ket and a bra Hilbert space.

ExactDiagonalization.EDCore.SectorType
abstract type Sector <: OperatorUnit

A sector of the Hilbert space which forms the bases of an irreducible representation of the Hamiltonian of a quantum lattice system.

ExactDiagonalization.EDCore.TargetSpaceType
TargetSpace{S<:Sector} <: VectorSpace{S}

The target Hilbert space in which the exact diagonalization method is performed, which could be the direct sum of several sectors.

ExactDiagonalization.EDCore.TargetSpaceMethod
TargetSpace(hilbert::Hilbert; kwargs...)
TargetSpace(hilbert::Hilbert, quantumnumbers::Tuple; table=Table(hilbert, Metric(EDKind(hilbert), hilbert)), kwargs...)
TargetSpace(hilbert::Hilbert, quantumnumbers...; table=Table(hilbert, Metric(EDKind(hilbert), hilbert)), kwargs...)

Construct a target space from the total Hilbert space and the associated quantum numbers.

LinearAlgebra.eigenMethod
eigen(m::EDMatrix; nev=6, which=:SR, tol=0.0, maxiter=300, sigma=nothing, v₀=dtype(m)[]) -> Eigen

Solve the eigen problem by the restarted Lanczos method provided by the Arpack package.

QuantumLattices.:⊕Method
⊕(sector::Sector, sectors::Union{Sector, TargetSpace}...) -> TargetSpace
⊕(target::TargetSpace, sectors::Union{Sector, TargetSpace}...) -> TargetSpace

Get the direct sum of sectors and target spaces.

QuantumLattices.QuantumOperators.matrixMethod
matrix(ed::ED, sector::Sector; kwargs...) -> EDMatrix
matrix(ed::ED, sector=first(ed.Hₘ.transformation.brakets); kwargs...) -> EDMatrix

Get the sparse matrix representation of a quantum lattice system in a sector of the target space.