RandomPhaseApproximation.EigenRPA — TypeEigenRPA{P<:ReciprocalSpace, B<:BrillouinZone} <: ActionEigen problem for standard random phase approximation.
RandomPhaseApproximation.EigenRPA — MethodEigenRPA(reciprocalspace::ReciprocalSpace, brillouinzone::BrillouinZone; eigvals_only::Bool=true, options...)Construct a EigenRPA type. Attribute options contains (gauge=:icoordinate, exchange=false, η=1e-8, temperature=1e-12, μ=0.0, bands=nothing).
RandomPhaseApproximation.PHVertexMatrix — TypePHVertexMatrix{D<:Number, Vq, Vk, T} <: MatrixRepresentationMatrix representation of the particle-hole channel of two-body interaction terms:
\[\frac{1}{N}\sum_{k₁k₂q, \, \alpha\beta m n}[V^{ph}_{\alpha\beta, \, mn}(q)-V^{ph}_{\alpha m, \, \beta n}(k₂-k₁)]c^\dagger_{k₁-q, \, \alpha}c_{k₁, \, \beta}c^\dagger_{k₂, \, n}c_{k₂-q, \, m}\]
When the k₁ and k₂ are nothing, the exchange terms are omitted. Here, the Fourier transformation reads:
\[c^†_i = \frac{1}{\sqrt{N}} ∑_k c^†_k \exp(-i k rᵢ)\]
RandomPhaseApproximation.PHVertexMatrix — MethodPHVertexMatrix{D}(q, k₁, k₂, table, gauge::Symbol=:icoordinate) where {D<:Number}
PHVertexMatrix{D}(table, gauge::Symbol=:icoordinate) where {D<:Number}
PHVertexMatrix{D}(q, table, gauge::Symbol=:icoordinate) where {D<:Number}Get the matrix representation of particle-hole channel.
RandomPhaseApproximation.ParticleHoleSusceptibility — TypeParticleHoleSusceptibility{P<:ReciprocalSpace, B<:BrillouinZone, E<:AbstractVector, S<:Operators} <: ActionCalculate the particle-hole susceptibility within random phase approximation.
Attribute options contains (η=0.01, gauge=:icoordinate, temperature=1e-12, μ=0.0, findk=false).
RandomPhaseApproximation.ParticleHoleSusceptibility — MethodParticleHoleSusceptibility(reciprocalspace::ReciprocalSpace, brillouinzone::BrillouinZone, energies::Vector, operators::Tuple{Vector{<:Operators}, Vector{<:Operators}}; options...)Construct a ParticleHoleSusceptibility type.
RandomPhaseApproximation.RPA — TypeRPA{L<:AbstractTBA, U<:RepresentationGenerator} <: FrontendRandom phase approximation in a fermionic system.
RandomPhaseApproximation.RPA — MethodRPA(tba::AbstractTBA, interactions::Union{Term, Tuple{Term, Vararg{Term}}}; neighbors::Union{Nothing, Int, Neighbors}=nothing)
RPA(lattice::AbstractLattice, hilbert::Hilbert, terms::Union{Term, Tuple{Term, Vararg{Term}}}, interactions::Union{Term, Tuple{Term, Vararg{Term}}}; neighbors::Union{Nothing, Int, Neighbors}=nothing)
RPA(tba::AbstractTBA{K, <:AnalyticalExpression}, hilbert::Hilbert, interactions::Union{Term, Tuple{Term, Vararg{Term}}}; neighbors::Union{Nothing, Int, Neighbors}=nothing) where {K<:TBAKind}Construct an RPA type.
QuantumLattices.QuantumOperators.matrix — Functionmatrix(rpa::RPA, field::Symbol=:int; k=nothing, gauge=:icoordinate, kwargs...) -> MatrixGet matrix of particle-hole channel of interaction.
QuantumLattices.add! — Methodadd!(dest::AbstractMatrix, mr::PHVertexMatrix, m::Operator; kwargs...)Get the matrix representation of an operator and add it to destination.
RandomPhaseApproximation.chiq — Methodchiq(vph::Array{<:Number, 3}, chi0::Array{ComplexF64, 4}) -> Array{ComplexF64, 4}Get the susceptibility $χ_{αβ}(ω, q)$.
RandomPhaseApproximation.chiq0 — Methodchiq0(tba::AbstractTBA, brillouinzone::BrillouinZone, reciprocalspace::ReciprocalSpace, energies::Vector{Float64}; η::Float64=0.01, temperature::Float64=1e-12, μ::Float64=0.0, scflag=false, kwargs...) -> Array{Float64, 4}Get the particle-hole susceptibilities χ⁰(ω, q).
Arguments
energies: the energy pointsη: the magnitude of broadentemperature: the temperatureμ: the chemical potentialscflag: false(default) for particle-hole channel, true for Nambu spacekwargs: the keyword arguments transferred to thematrix(tba; kwargs...)function
RandomPhaseApproximation.chiq0chiq — Methodchiq0chiq(
eigvecs::Array{ComplexF64, 3}, eigvals::Array{Float64, 2}, brillouinzone::BrillouinZone, reciprocalspace::ReciprocalSpace, vph::Array{<:Number, 3}, energies::Vector{Float64};
η::Float64=0.01, temperature::Float64=1e-12, μ::Float64=0.0, scflag=false
) -> Tuple{Array{ComplexF64, 4}, Array{ComplexF64, 4}}Get the particle-hole susceptibilities χ⁰(ω, q) and χ(ω, q). The spectral function is satisfied by $A(ω, q) = \text{Im}[χ(ω+i0⁺, q)]$.
RandomPhaseApproximation.chiq0chiq — Methodchiq0chiq(
tba::AbstractTBA, brillouinzone::AbstractVector{<:AbstractVector}, reciprocalspace::ReciprocalSpace, vph::Array{<:Number, 3}, energies::AbstractVector;
η::Float64=0.01, temperature::Float64=1e-12, μ::Float64=0.0, scflag=false, kwargs...
) -> Tuple{Array{ComplexF64, 4}, Array{ComplexF64, 4}}Get the particle-hole susceptibilities χ⁰(ω, q) and χ(ω, q). The spectral function is satisfied by $A(ω, q) = \text{Im}[χ(ω+i0⁺, q)]$.
Arguments
vph: the bare particle-hole vertex (vph[ndim, ndim, nq])energies: the energy pointsη: the magnitude of broadentemperature: the temperatureμ: the chemical potentialscflag: false (default, no superconductivity), or true (BdG model)kwargs: the keyword arguments transferred to thematrix(tba; kwargs...)function
RandomPhaseApproximation.correlation — Methodcorrelation(χ::Array{<:Number, 4}, reciprocalspace::ReciprocalSpace, operators::Tuple{Vector{<:Operators}, Vector{<:Operators}}, table; gauge=:rcoordinate) -> MatrixReturn physical particle-hole susceptibility.
RandomPhaseApproximation.eigenrpa — Methodeigenrpa(
tba::AbstractTBA, brillouinzone::BrillouinZone, reciprocalspace::ReciprocalSpace, vph::Array{<:Number, 5};
temperature::Float64=1e-12, μ::Float64=0.0, eigvals_only::Bool=true, η::Float64=1e-6, bands::Union{UnitRange{Int}, StepRange{Int,Int}, Vector{Int}, Nothing}=nothing, kwargs...
) -> Tuple{Array{Array{ComplexF64, 1}, 1}, Array{Matrix{ComplexF64}, 1}, Array{Matrix{ComplexF64}, 1}}Get the eigenvalues, eigenvectors, and unitary transformation (from orbital to band) of particle-hole susceptibilities $χ_{αβ}(ω, k₁, k₂, q)$.
Now only the zero-temperature case is supported.
Arguments
vph: the particle-hole vertex, e.g. vph[ndim,ndim,nk,nk,nq] where sqrt(ndim) is the number of degrees of freedom in the unit cell, nk=length(brillouinzone), nq=length(reciprocalspace)temperature: the temperatureμ: the chemical potentialeigvals_only: only the eigenvalues needed, when it is false the cholesky method is usedη: the small number to avoid the semi-positive Hamiltonian, i.e. Hamiltonian+diagm([η, η, ...])bands: the selected bands to calculate the χ₀kwargs: the keyword arguments transferred to thematrix(tba; kwargs...)function
RandomPhaseApproximation.fermifunc — Functionfermifunc(e::Real, temperature::Real=1e-12, μ::Real=0.0) -> Float64Fermi distribution function. Boltzmann constant $k_B=1$.
RandomPhaseApproximation.isevenperm — Methodisevenperm(p::Vector) -> BoolJudge the parity of permutations.
RandomPhaseApproximation.issamesite — Methodissamesite(op₁::CompositeIndex, op₂::CompositeIndex) -> BoolJudge whether two composite indices are on site same site.
RandomPhaseApproximation.vertex — Functionvertex(rpa::RPA, reciprocalspace::AbstractVector{<:AbstractVector}, gauge=:icoordinate) -> Array{<:Number, 3}Return particle-hole vertex induced by the direct channel of interaction (except the Hubbard interaction which include both direct and exchange channels).
RecipesBase.apply_recipe — Function@recipe plot(pack::Tuple{Algorithm{<:RPA}, Assignment{<:ParticleHoleSusceptibility}}, mode::Symbol=:χ)Define the recipe for the visualization of particle-hole susceptibilities along a path.
RecipesBase.apply_recipe — Function@recipe plot(pack::Tuple{Algorithm{<:RPA}, Assignment{<:ParticleHoleSusceptibility}}, ecut::Float64, dE::Float64=1e-3, mode::Symbol=:χ, reim::Symbol=:re)Define the recipe for the visualization of particle-hole susceptibilities at an energy cut.
RecipesBase.apply_recipe — Function@recipe plot(pack::Tuple{Algorithm{<:RPA}, Assignment{<:EigenRPA}}, reim::Symbol=:re)Define the recipe for the visualization of particle-hole susceptibilities.