Core of TightBindingApproximation
TightBindingApproximation.basicoptions — Constant
const basicoptions = (
gauge = "gauge used to perform the Fourier transformation",
infinitesimal = "infinitesimal added to the diagonal of the matrix representation of the tight-binding Hamiltonian"
)Basic options of tight-binding actions.
QuantumLattices.DegreesOfFreedom.Metric — Method
Metric(::Fermionic, hilbert::Hilbert{<:Fock{:f}}) -> OperatorIndexToTuple
Metric(::Bosonic, hilbert::Hilbert{<:Fock{:b}}) -> OperatorIndexToTuple
Metric(::Phononic, hilbert::Hilbert{<:Phonon}) -> OperatorIndexToTupleGet the index-to-tuple metric for a free fermionic/bosonic/phononic system.
QuantumLattices.DegreesOfFreedom.Table — Method
Table(hilbert::Hilbert{Phonon{:}}, by::OperatorIndexToTuple{(kind, :site, :direction)})Construct a index-sequence table for a phononic system.
TightBindingApproximation.BerryCurvature — Type
BerryCurvature(reciprocalspace::Union{BrillouinZone, ReciprocalZone}, bands::AbstractVector{Int}, abelian::Bool=true)Construct a BerryCurvature using the Fukui method.
TightBindingApproximation.BerryCurvature — Type
BerryCurvature{B<:ReciprocalSpace, M<:BerryCurvatureMethod} <: ActionBerry curvature of energy bands.
TightBindingApproximation.BerryCurvature — Method
BerryCurvature(reciprocalspace::ReciprocalSpace, μ::Real, d::Real=0.1, kx::T=nothing, ky::T=nothing) where {T<:Union{Nothing, Vector{Float64}}}Construct a BerryCurvature using the Kubo method.
TightBindingApproximation.BerryCurvatureData — Type
BerryCurvatureData{R<:ReciprocalSpace, C<:Array{Float64}, N<:Union{Vector{Float64}, Float64, Nothing}} <: DataData of Berry curvature, including:
reciprocalspace::R: reciprocal space on which the Berry curvature is computed.values::C: Berry curvature for a certain set of bands.chernnumber::N: if notnothing, Chern number of each energy band when it is a vector or total Chern number of all bands when it is a number.
TightBindingApproximation.BerryCurvatureMethod — Type
abstract type BerryCurvatureMethod endAbstract type for calculation of Berry curvature.
TightBindingApproximation.Bosonic — Type
Bosonic{K} <: TBAKind{K}Bosonic quantum lattice system.
TightBindingApproximation.CompositeTBA — Type
CompositeTBA{
K<:TBAKind,
L<:Union{AbstractLattice, Nothing},
S<:Union{OperatorSet{<:Operator}, Generator{<:OperatorSet{<:Operator}}},
Q<:Quadraticization,
H<:Union{OperatorSet{<:Quadratic}, Generator{<:OperatorSet{<:Quadratic}}},
C<:Union{AbstractMatrix, Nothing}
} <:TBA{K, H, C}Composite tight-binding approximation for quantum lattice systems.
TightBindingApproximation.DensityOfStates — Type
DensityOfStates(brillouinzone::BrillouinZone, bands::Union{Colon, AbstractVector{Int}}=:, orbitals::Union{Colon, AbstractVector{Int}}...=:)
DensityOfStates(brillouinzone::BrillouinZone, bands::Union{Colon, AbstractVector{Int}}, orbitals::Tuple{Vararg{Union{Colon, AbstractVector{Int}}}})Construct a DensityOfStates.
TightBindingApproximation.DensityOfStates — Type
DensityOfStates{B<:BrillouinZone, A<:Union{Colon, AbstractVector{Int}}, L<:Tuple{Vararg{Union{Colon, AbstractVector{Int}}}}} <: ActionDensity of states of a tight-binding system.
TightBindingApproximation.DensityOfStatesData — Type
DensityOfStatesData <: DataData of density of states, including:
energies::Vector{Float64}: energy sample points.values::Matrix{Float64}: density of states projected onto several certain sets of orbitals.
TightBindingApproximation.EnergyBands — Type
EnergyBands(reciprocalspace::ReciprocalSpace, bands::Union{Colon, AbstractVector{Int}}=:, orbitals::AbstractVector{Int}...)
EnergyBands(reciprocalspace::ReciprocalSpace, bands::Union{Colon, AbstractVector{Int}}, orbitals::Tuple{Vararg{AbstractVector{Int}}})Construct an EnergyBands.
TightBindingApproximation.EnergyBands — Type
EnergyBands{L<:Tuple{Vararg{AbstractVector{Int}}}, R<:ReciprocalSpace, A<:Union{Colon, AbstractVector{Int}}} <: ActionEnergy bands by tight-binding-approximation for quantum lattice systems.
TightBindingApproximation.EnergyBandsData — Type
EnergyBandsData{R<:ReciprocalSpace, W<:Union{Array{Float64, 3}, Nothing}} <: DataData of energy bands, including:
reciprocalspace::R: reciprocal space on which the energy bands are computed.values::Matrix{Float64}: eigen energies of bands with each column storing the values on the same reciprocal point.weights::W: if notnothing, weights of several certain sets of orbitals projected onto the energy bands.
TightBindingApproximation.FermiSurface — Type
FermiSurface{L<:Tuple{Vararg{AbstractVector{Int}}}, B<:Union{BrillouinZone, ReciprocalZone}, A<:Union{Colon, AbstractVector{Int}}} <: ActionFermi surface of a free fermionic system.
TightBindingApproximation.FermiSurface — Type
FermiSurface(reciprocalspace::Union{BrillouinZone, ReciprocalZone}, μ::Real=0.0, bands::Union{Colon, AbstractVector{Int}}=:, orbitals::AbstractVector{Int}...)
FermiSurface(reciprocalspace::Union{BrillouinZone, ReciprocalZone}, μ::Real, bands::Union{Colon, AbstractVector{Int}}, orbitals::Tuple{Vararg{AbstractVector{Int}}})Construct a FermiSurface.
TightBindingApproximation.FermiSurfaceData — Type
FermiSurfaceData{S<:ReciprocalScatter} <: DataData of Fermi surface, including:
values::S: points of the Fermi surface.weights::Matrix{Float64}: weights of several certain sets of orbitals projected onto the Fermi surface.
TightBindingApproximation.Fermionic — Type
Fermionic{K} <: TBAKind{K}Fermionic quantum lattice system.
TightBindingApproximation.Fukui — Type
Fukui <: BerryCurvatureMethodFukui method to calculate Berry curvature of energy bands. see Fukui et al, JPSJ 74, 1674 (2005). Hall conductivity (single band) is given by
\[\sigma_{xy} = -{e^2\over h}\sum_n c_n, \nonumber \\ c_n = {1\over 2\pi}\int_{BZ}{dk_x dk_y Ω_{xy}}, \Omega_{xy}=(\nabla\times {\bm A})_z, A_{x}=i\langle u_n|\partial_x|u_n\rangle.\]
TightBindingApproximation.InelasticNeutronScatteringSpectra — Type
InelasticNeutronScatteringSpectra{R<:ReciprocalSpace} <: ActionInelastic neutron scattering spectra.
TightBindingApproximation.InelasticNeutronScatteringSpectraData — Type
InelasticNeutronScatteringSpectraData{R<:ReciprocalSpace} <: DataData of inelastic neutron scattering spectra, including:
reciprocalspace::R: reciprocal space on which the inelastic neutron scattering spectra are computedenergies::Vector{Float64}: energy sample points.values::Matrix{Float64}: rescaled intensity of inelastic neutron scattering spectra.
TightBindingApproximation.Kubo — Type
Kubo{K<:Union{Nothing, Vector{Float64}}} <: BerryCurvatureMethodKubo method to calculate the total Berry curvature of occupied energy bands. The Kubo formula is given by
\[\Omega_{ij}(\bm k)=\epsilon_{ijl}\sum_{n}f(\epsilon_n(\bm k))b_n^l(\bm k)=-2{\rm Im}\sum_v\sum_c{V_{vc,i}(\bm k)V_{cv,j}(\bm k)\over [\omega_c(\bm k)-\omega_v(\bm k)]^2},\]
where
\[ V_{cv,j}={\langle u_{c\bm k}|{\partial H\over \partial {\bm k}_j}|u_{v\bm k}\rangle}\]
v and c subscripts denote valence (occupied) and conduction (unoccupied) bands, respectively. Hall conductivity in 2D space is given by
\[\sigma_{xy}=-{e^2\over h}\int_{BZ}{dk_x dk_y\over 2\pi}{\Omega_{xy}}\]
TightBindingApproximation.Phononic — Type
Phononic <: TBAKind{:BdG}Phononic quantum lattice system.
TightBindingApproximation.Quadratic — Type
Quadratic{V<:Number, C<:AbstractVector} <: OperatorPack{V, Tuple{Tuple{Int, Int}, C, C}}The unified quadratic form in tight-binding approximation.
TightBindingApproximation.Quadraticization — Type
Quadraticization{K<:TBAKind, T<:Table} <: LinearTransformationThe linear transformation that converts a rank-2 operator to its unified quadratic form.
TightBindingApproximation.SimpleTBA — Type
SimpleTBA{
K<:TBAKind,
L<:Union{AbstractLattice, Nothing},
H<:Union{Formula, OperatorSet{<:Quadratic}, Generator{<:OperatorSet{<:Quadratic}}},
C<:Union{AbstractMatrix, Nothing}
} <:TBA{K, H, C}Simple tight-binding approximation for quantum lattice systems.
TightBindingApproximation.TBA — Type
TBA{K<:TBAKind, H<:Union{Formula, OperatorSet, Generator, Frontend}, C<:Union{Nothing, AbstractMatrix}} <: FrontendAbstract type for free quantum lattice systems using the tight-binding approximation.
TightBindingApproximation.TBA — Method
TBA{K}(H::Union{Formula, OperatorSet{<:Quadratic}, Generator{<:OperatorSet{<:Quadratic}}}, commutator::Union{AbstractMatrix, Nothing}=nothing) where {K<:TBAKind}
TBA{K}(lattice::Union{AbstractLattice, Nothing}, H::Union{Formula, OperatorSet{<:Quadratic}, Generator{<:OperatorSet{<:Quadratic}}}, commutator::Union{AbstractMatrix, Nothing}=nothing) where {K<:TBAKind}
TBA{K}(H::Union{OperatorSet{<:Operator}, Generator{<:OperatorSet{<:Operator}}}, q::Quadraticization, commutator::Union{AbstractMatrix, Nothing}=nothing) where {K<:TBAKind}
TBA{K}(lattice::Union{AbstractLattice, Nothing}, H::Union{OperatorSet{<:Operator}, Generator{<:OperatorSet{<:Operator}}}, q::Quadraticization, commutator::Union{AbstractMatrix, Nothing}=nothing) where {K<:TBAKind}
TBA(lattice::AbstractLattice, hilbert::Hilbert, terms::OneOrMore{Term}, boundary::Boundary=plain; neighbors::Union{Int, Neighbors}=nneighbor(terms))
TBA{K}(lattice::AbstractLattice, hilbert::Hilbert, terms::OneOrMore{Term}, boundary::Boundary=plain; neighbors::Union{Int, Neighbors}=nneighbor(terms)) where {K<:TBAKind}Construct a tight-binding quantum lattice system.
TightBindingApproximation.TBAKind — Type
TBAKind{K}The kind of a free quantum lattice system using the tight-binding approximation.
TightBindingApproximation.TBAKind — Method
TBAKind(T::Type{<:Term}, I::Type{<:Internal})Depending on the kind of a Term type and an Internal type, get the corresponding TBA kind.
TightBindingApproximation.TBAMatrix — Type
TBAMatrix{C<:Union{AbstractMatrix, Nothing}, T, H<:Hermitian{T, <:AbstractMatrix{T}}} <: AbstractMatrix{T}Matrix representation of a free quantum lattice system using the tight-binding approximation.
TightBindingApproximation.TBAMatrixization — Type
TBAMatrixization{D<:Number, V<:Union{AbstractVector{<:Number}, Nothing}} <: MatrixizationMatrixization of the Hamiltonian of a tight-binding system.
LinearAlgebra.eigen — Function
eigen(tba::Union{TBA, Algorithm{<:TBA}}, k::Union{AbstractVector{<:Number}, Nothing}=nothing; options...) -> Eigen
eigen(tba::Union{TBA, Algorithm{<:TBA}}, reciprocalspace::ReciprocalSpace; options...) -> Tuple{Vector{<:Vector{<:Number}}, Vector{<:Matrix{<:Number}}}Get the eigen values and eigen vectors of a free quantum lattice system.
LinearAlgebra.eigen — Method
eigen(m::TBAMatrix) -> EigenSolve the eigen problem of a free quantum lattice system.
LinearAlgebra.eigvals — Function
eigvals(tba::Union{TBA, Algorithm{<:TBA}}, k::Union{AbstractVector{<:Number}, Nothing}=nothing; options...) -> Vector{<:Number}
eigvals(tba::Union{TBA, Algorithm{<:TBA}}, reciprocalspace::ReciprocalSpace; options...) -> Vector{<:Vector{<:Number}}Get the eigen values of a free quantum lattice system.
LinearAlgebra.eigvals — Method
eigvals(m::TBAMatrix) -> VectorGet the eigen values of a free quantum lattice system.
LinearAlgebra.eigvecs — Function
eigvecs(tba::Union{TBA, Algorithm{<:TBA}}, k::Union{AbstractVector{<:Number}, Nothing}=nothing; options...) -> Matrix{<:Number}
eigvecs(tba::Union{TBA, Algorithm{<:TBA}}, reciprocalspace::ReciprocalSpace; options...) -> Vector{<:Matrix{<:Number}}Get the eigen vectors of a free quantum lattice system.
LinearAlgebra.eigvecs — Method
eigvecs(m::TBAMatrix) -> MatrixGet the eigen vectors of a free quantum lattice system.
QuantumLattices.QuantumOperators.matrix — Function
matrix(tba::Union{TBA, Algorithm{<:TBA}}, k::Union{AbstractVector{<:Number}, Nothing}=nothing; gauge=:icoordinate, infinitesimal=infinitesimal(kind(tba))) -> TBAMatrixGet the matrix representation of a free quantum lattice system.
QuantumLattices.QuantumOperators.scalartype — Method
scalartype(::Type{<:TBA{<:TBAKind, H}}) where {H<:Union{Formula, OperatorSet, Generator, Frontend}}
scalartype(::Type{<:Algorithm{F}}) where {F<:TBA}Get the scalartype of a tight-binding system.
QuantumLattices.add! — Method
add!(dest::AbstractMatrix, mr::TBAMatrixization, m::Quadratic; infinitesimal=0, kwargs...) -> typeof(dest)Matrixize a quadratic form and add it to dest.
QuantumLattices.add! — Method
add!(dest::OperatorSum, q::Quadraticization{<:TBAKind{:TBA}}, m::Operator{<:Number, <:NTuple{2, CoordinatedIndex{<:Index}}}; kwargs...) -> typeof(dest)
add!(dest::OperatorSum, q::Quadraticization{<:TBAKind{:BdG}}, m::Operator{<:Number, <:NTuple{2, CoordinatedIndex{<:Index{<:FockIndex}}}}; kwargs...) -> typeof(dest)
add!(dest::OperatorSum, q::Quadraticization{<:TBAKind{:BdG}}, m::Operator{<:Number, <:NTuple{2, CoordinatedIndex{<:Index{<:PhononIndex}}}}; kwargs...) -> typeof(dest)Get the unified quadratic form of a rank-2 operator and add it to dest.
QuantumLattices.dimension — Method
dimension(tba::Union{TBA, Algorithm{<:TBA}}) -> IntGet the dimension of the matrix representation of a free quantum lattice system.
QuantumLattices.kind — Method
kind(tba::Union{TBA, Algorithm{<:TBA}}) -> TBAKind
kind(::Type{<:TBA{K}}) where K -> TBAKind
kind(::Type{<:Algorithm{F}}) where {F<:TBA} -> TBAKindGet the kind of a tight-binding system.
TightBindingApproximation.berrycurvature — Method
berrycurvature(vectors::Matrix{<:Matrix{<:Number}}, commutator::Union{Nothing, AbstractMatrix{<:Number}}, dS::Number, ::Val{true}) -> Array{Float64, 3}
berrycurvature(vectors::Matrix{<:Matrix{<:Number}}, commutator::Union{Nothing, AbstractMatrix{<:Number}}, dS::Number, ::Val{false}) -> Matrix{Float64}Based on the eigen vectors over a discrete reciprocal space, get the 1) Berry curvature for individual bands and 2) total Berry curvature by the Fukui method.
Here, commutator stands for the commutation relation matrix of the basis operators, dS stands for the area element of the discrete reciprocal space.
TightBindingApproximation.berrycurvature — Method
berrycurvature(tba::TBA, bc::BerryCurvature{<:ReciprocalSpace, <:Kubo}; options...) -> Matrix{Float64}Get the Berry curvature by the Kubo method.
TightBindingApproximation.berrycurvature — Method
berrycurvature(tba::TBA, bc::BerryCurvature{<:Union{BrillouinZone, ReciprocalZone}, <:Fukui{true}}; options...) -> Array{Float64, 3}
berrycurvature(tba::TBA, bc::BerryCurvature{<:Union{BrillouinZone, ReciprocalZone}, <:Fukui{false}}; options...) -> Matrix{Float64}Get the Berry curvature by the Fukui method.
TightBindingApproximation.commutator — Method
commutator(k::TBAKind, hilbert::Hilbert{<:Internal}) -> Union{AbstractMatrix, Nothing}Get the commutation relation of the single-particle operators of a free quantum lattice system using the tight-binding approximation.
TightBindingApproximation.infinitesimal — Method
infinitesimal(::TBAKind{:TBA}) -> 0
infinitesimal(::TBAKind{:BdG}) -> atol/5
infinitesimal(::Fermionic{:BdG}) -> 0Infinitesimal used in the matrixization of a tight-binding approximation to be able to capture the Goldstone mode.
TightBindingApproximation.Fitting
TightBindingApproximation.Fitting.SampleNode — Type
SampleNode(reciprocals::AbstractVector{<:AbstractVector{<:Number}}, position::Vector{<:Number}, bands::AbstractVector{Int}, values::Vector{<:Number}, ratio::Number)
SampleNode(reciprocals::AbstractVector{<:AbstractVector{<:Number}}, position::Vector{<:Number}, bands::AbstractVector{Int}, values::Vector{<:Number}, ratios::Vector{<:Number}=ones(length(bands)))A sample node of a momentum-eigenvalues pair.
TightBindingApproximation.Fitting.deviation — Method
deviation(tba::Union{TBA, Algorithm{<:TBA}}, samplenode::SampleNode) -> Float64
deviation(tba::Union{TBA, Algorithm{<:TBA}}, samplesets::Vector{SampleNode}) -> Float64Get the deviation of the eigenvalues between the sample points and model points.
TightBindingApproximation.Fitting.optimize! — Function
optimize!(
tba::Union{TBA, Algorithm{<:TBA}}, samplesets::Vector{SampleNode}, variables=keys(Parameters(tba));
verbose=false, method=LBFGS(), options=Options()
) -> Tuple{typeof(tba), Optim.MultivariateOptimizationResults}Optimize the parameters of a tight binding system whose names are specified by variables so that the total deviations of the eigenvalues between the model points and sample points minimize.