Library API
Contents
Index
HierarchicalEOM.EVEN
HierarchicalEOM.ODD
HierarchicalEOM.ADOs
HierarchicalEOM.ADOs
HierarchicalEOM.AbstractHEOMLSMatrix
HierarchicalEOM.BosonBath
HierarchicalEOM.BosonBath
HierarchicalEOM.BosonBath
HierarchicalEOM.EvenParity
HierarchicalEOM.Exponent
HierarchicalEOM.FermionBath
HierarchicalEOM.FermionBath
HierarchicalEOM.HEOMSuperOp
HierarchicalEOM.HEOMSuperOp
HierarchicalEOM.HEOMSuperOp
HierarchicalEOM.HEOMSuperOp
HierarchicalEOM.HierarchyDict
HierarchicalEOM.M_Boson
HierarchicalEOM.M_Boson
HierarchicalEOM.M_Boson_Fermion
HierarchicalEOM.M_Boson_Fermion
HierarchicalEOM.M_Fermion
HierarchicalEOM.M_Fermion
HierarchicalEOM.M_S
HierarchicalEOM.M_S
HierarchicalEOM.MixHierarchyDict
HierarchicalEOM.Nvec
HierarchicalEOM.OddParity
HierarchicalEOM.TimeEvolutionHEOMSol
HierarchicalEOM.bosonAbsorb
HierarchicalEOM.bosonAbsorb
HierarchicalEOM.bosonEmit
HierarchicalEOM.bosonEmit
HierarchicalEOM.bosonImag
HierarchicalEOM.bosonImag
HierarchicalEOM.bosonReal
HierarchicalEOM.bosonReal
HierarchicalEOM.bosonRealImag
HierarchicalEOM.bosonRealImag
HierarchicalEOM.fermionAbsorb
HierarchicalEOM.fermionAbsorb
HierarchicalEOM.fermionEmit
HierarchicalEOM.fermionEmit
Base.eltype
Base.eltype
Base.eltype
Base.length
Base.size
Base.size
Base.size
Base.size
HierarchicalEOM.BosonBathRWA
HierarchicalEOM.Boson_DrudeLorentz_Matsubara
HierarchicalEOM.Boson_DrudeLorentz_Pade
HierarchicalEOM.Boson_Underdamped_Matsubara
HierarchicalEOM.DensityOfStates
HierarchicalEOM.Fermion_Lorentz_Matsubara
HierarchicalEOM.Fermion_Lorentz_Pade
HierarchicalEOM.HEOMsolve
HierarchicalEOM.PowerSpectrum
HierarchicalEOM.Propagator
HierarchicalEOM.about
HierarchicalEOM.addBosonDissipator
HierarchicalEOM.addFermionDissipator
HierarchicalEOM.addTerminator
HierarchicalEOM.correlation_function
HierarchicalEOM.getADO
HierarchicalEOM.getIndexEnsemble
HierarchicalEOM.getRho
HierarchicalEOM.print_logo
HierarchicalEOM.versioninfo
QuantumToolbox.expect
QuantumToolbox.steadystate
Bath Module
HierarchicalEOM.correlation_function
— Functioncorrelation_function(bath, tlist)
Calculate the correlation function $C(t)$ for a given bosonic bath and time list.
if the input bosonic bath did not apply rotating wave approximation (RWA)
\[C(t)=\sum_{u=\textrm{R},\textrm{I}}(\delta_{u, \textrm{R}} + i\delta_{u, \textrm{I}})C^{u}(t)\]
where
\[C^{u}(t)=\sum_i \eta_i^u e^{-\gamma_i^u t}\]
if the input bosonic bath applies rotating wave approximation (RWA)
\[C^{\nu=\pm}(t)=\sum_i \eta_i^\nu e^{-\gamma_i^\nu t}\]
Parameters
bath::BosonBath
: The bath object which describes a certain bosonic bath.tlist::AbstractVector
: The specific time.
Returns (without RWA)
clist::Vector{ComplexF64}
: a list of the value of correlation function according to the given time list.
Returns (with RWA)
cplist::Vector{ComplexF64}
: a list of the value of the absorption ($\nu=+$) correlation function according to the given time list.cmlist::Vector{ComplexF64}
: a list of the value of the emission ($\nu=-$) correlation function according to the given time list.
correlation_function(bath, tlist)
Calculate the correlation function $C^{\nu=+}(t)$ and $C^{\nu=-}(t)$ for a given fermionic bath and time list. Here, $\nu=+$ represents the absorption process and $\nu=-$ represents the emission process.
\[C^{\nu=\pm}(t)=\sum_i \eta_i^\nu e^{-\gamma_i^\nu t}\]
Parameters
bath::FermionBath
: The bath object which describes a certain fermionic bath.tlist::AbstractVector
: The specific time.
Returns
cplist::Vector{ComplexF64}
: a list of the value of the absorption ($\nu=+$) correlation function according to the given time list.cmlist::Vector{ComplexF64}
: a list of the value of the emission ($\nu=-$) correlation function according to the given time list.
HierarchicalEOM.Exponent
— Typestruct Exponent
An object which describes a single exponential-expansion term (naively, an excitation mode) within the decomposition of the bath correlation functions.
The expansion of a bath correlation function can be expressed as : $C(t) = \sum_i \eta_i \exp(-\gamma_i t)$.
Fields
op::QuantumObject
: The system coupling operator according to system-bath interaction.η::Number
: the coefficient $\eta_i$ in bath correlation function.γ::Number
: the coefficient $\gamma_i$ in bath correlation function.types::String
: The type-tag of the exponent.
The different types of the Exponent:
"bR"
: from real part of bosonic correlation function $C^{u=\textrm{R}}(t)$"bI"
: from imaginary part of bosonic correlation function $C^{u=\textrm{I}}(t)$"bRI"
: from combined (real and imaginary part) bosonic bath correlation function $C(t)$"bA"
: from absorption bosonic correlation function $C^{\nu=+}(t)$"bE"
: from emission bosonic correlation function $C^{\nu=-}(t)$"fA"
: from absorption fermionic correlation function $C^{\nu=+}(t)$"fE"
: from emission fermionic correlation function $C^{\nu=-}(t)$
HierarchicalEOM.BosonBath
— Typestruct BosonBath <: AbstractBath
An object which describes the interaction between system and bosonic bath
Fields
bath
: the different boson-bath-type objects which describes the interaction between system and bosonic bathop
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.Nterm
: the number of exponential-expansion term of correlation functionsδ
: The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)
Methods
One can obtain the $k$-th exponent (exponential-expansion term) from bath::BosonBath
by calling : bath[k]
. HierarchicalEOM.jl
also supports the following calls (methods) :
bath[1:k]; # returns a vector which contains the exponents from the `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all the exponential-expansion terms
bath[:]; # returns a vector which contains all the exponential-expansion terms
from b in bath
# do something
end
HierarchicalEOM.BosonBath
— MethodBosonBath(op, η, γ, δ=0.0; combine=true)
Generate BosonBath object for the case where real part and imaginary part of the correlation function are combined.
\[\begin{aligned} C(\tau) &=\frac{1}{2\pi}\int_{0}^{\infty} d\omega J(\omega)\left[n(\omega)e^{i\omega \tau}+(n(\omega)+1)e^{-i\omega \tau}\right]\\ &=\sum_i \eta_i \exp(-\gamma_i \tau), \end{aligned}\]
where $J(\omega)$ is the spectral density of the bath and $n(\omega)$ represents the Bose-Einstein distribution.
Parameters
op::QuantumObject
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.η::Vector{Ti<:Number}
: the coefficients $\eta_i$ in bath correlation function $C(\tau)$.γ::Vector{Tj<:Number}
: the coefficients $\gamma_i$ in bath correlation function $C(\tau)$.δ::Number
: The approximation discrepancy (Default to0.0
) which is used for adding the terminator to HEOM matrix (see function: addTerminator)combine::Bool
: Whether to combine the exponential-expansion terms with the same frequency. Defaults totrue
.
HierarchicalEOM.BosonBath
— MethodBosonBath(op, η_real, γ_real, η_imag, γ_imag, δ=0.0; combine=true)
Generate BosonBath object for the case where the correlation function splits into real part and imaginary part.
\[\begin{aligned} C(\tau) &=\frac{1}{2\pi}\int_{0}^{\infty} d\omega J(\omega)\left[n(\omega)e^{i\omega \tau}+(n(\omega)+1)e^{-i\omega \tau}\right]\\ &=\sum_i \eta_i \exp(-\gamma_i \tau), \end{aligned}\]
where $J(\omega)$ is the spectral density of the bath and $n(\omega)$ represents the Bose-Einstein distribution.
When $\gamma_i \neq \gamma_i^*$, a closed form for the HEOM can be obtained by further decomposing $C(\tau)$ into its real (R) and imaginary (I) parts as
\[C(\tau)=\sum_{u=\textrm{R},\textrm{I}}(\delta_{u, \textrm{R}} + i\delta_{u, \textrm{I}})C^{u}(\tau)\]
where $\delta$ is the Kronecker delta function and $C^{u}(\tau)=\sum_i \eta_i^u \exp(-\gamma_i^u \tau)$
Parameters
op::QuantumObject
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.η_real::Vector{Ti<:Number}
: the coefficients $\eta_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.γ_real::Vector{Tj<:Number}
: the coefficients $\gamma_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.η_imag::Vector{Tk<:Number}
: the coefficients $\eta_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.γ_imag::Vector{Tl<:Number}
: the coefficients $\gamma_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.δ::Number
: The approximation discrepancy (Default to0.0
) which is used for adding the terminator to HEOM matrix (see function: addTerminator)combine::Bool
: Whether to combine the exponential-expansion terms with the same frequency. Defaults totrue
.
HierarchicalEOM.bosonReal
— Typestruct bosonReal <: AbstractBosonBath
A bosonic bath for the real part of bath correlation function $C^{u=\textrm{R}}$
Fields
Comm
: the super-operator (commutator) for the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.γ
: the coefficients $\gamma_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.bosonReal
— MethodbosonReal(op, η_real, γ_real)
Generate bosonic bath for the real part of bath correlation function $C^{u=\textrm{R}}$
Parameters
op::QuantumObject
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.η_real::Vector{Ti<:Number}
: the coefficients $\eta_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.γ_real::Vector{Tj<:Number}
: the coefficients $\gamma_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.
HierarchicalEOM.bosonImag
— Typestruct bosonImag <: AbstractBosonBath
A bosonic bath for the imaginary part of bath correlation function $C^{u=\textrm{I}}$
Fields
Comm
: the super-operator (commutator) for the coupling operator.anComm
: the super-operator (anti-commutator) for the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.γ
: the coefficients $\gamma_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.bosonImag
— MethodbosonImag(op, η_imag, γ_imag)
Generate bosonic bath for the imaginary part of correlation function $C^{u=\textrm{I}}$
Parameters
op::QuantumObject
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.η_imag::Vector{Ti<:Number}
: the coefficients $\eta_i$ in imaginary part of bath correlation functions $C^{u=\textrm{I}}$.γ_imag::Vector{Tj<:Number}
: the coefficients $\gamma_i$ in imaginary part of bath correlation functions $C^{u=\textrm{I}}$.
HierarchicalEOM.bosonRealImag
— Typestruct bosonRealImag <: AbstractBosonBath
A bosonic bath which the real part and imaginary part of the bath correlation function are combined
Fields
Comm
: the super-operator (commutator) for the coupling operator.anComm
: the super-operator (anti-commutator) for the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η_real
: the real part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.η_imag
: the imaginary part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.γ
: the coefficients $\gamma_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.bosonRealImag
— MethodbosonRealImag(op, η_real, η_imag, γ)
Generate bosonic bath which the real part and imaginary part of the bath correlation function are combined
Parameters
op::QuantumObject
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.η_real::Vector{Ti<:Number}
: the real part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.η_imag::Vector{Tj<:Number}
: the imaginary part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.γ::Vector{Tk<:Number}
: the coefficients $\gamma_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.
HierarchicalEOM.BosonBathRWA
— FunctionBosonBathRWA(op, η_absorb, γ_absorb, η_emit, γ_emit, δ=0.0)
A function for generating BosonBath object where the interaction between system and bosonic bath applies the rotating wave approximation (RWA).
\[\begin{aligned} C^{\nu=+}(\tau) &=\frac{1}{2\pi}\int_{0}^{\infty} d\omega J(\omega) n(\omega) e^{i\omega \tau}\\ &=\sum_i \eta_i^{\nu=+} \exp(-\gamma_i^{\nu=+} \tau),\\ C^{\nu=-}(\tau) &=\frac{1}{2\pi}\int_{0}^{\infty} d\omega J(\omega) (1+n(\omega)) e^{-i\omega \tau}\\ &=\sum_i \eta_i^{\nu=-} \exp(-\gamma_i^{\nu=-} \tau), \end{aligned}\]
where $\nu=+$ ($\nu=-$) represents absorption (emission) process, $J(\omega)$ is the spectral density of the bath and $n(\omega)$ is the Bose-Einstein distribution.
Parameters
op::QuantumObject
: The system annihilation operator according to the system-bosonic-bath interaction.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}(\tau)$.γ_absorb::Vector{Tj<:Number}
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}(\tau)$.η_emit::Vector{Tk<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}(\tau)$.γ_emit::Vector{Tl<:Number}
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}(\tau)$.δ::Number
: The approximation discrepancy (Defaults to0.0
) which is used for adding the terminator to HEOMLS matrix (see function: addTerminator)
HierarchicalEOM.bosonAbsorb
— Typestruct bosonAbsorb <: AbstractBosonBath
An bath object which describes the absorption process of the bosonic system by a correlation function $C^{\nu=+}$
Fields
spre
: the super-operator (left side operator multiplication) for the coupling operator.spost
: the super-operator (right side operator multiplication) for the coupling operator.CommD
: the super-operator (commutator) for the adjoint of the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.γ
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.η_emit
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.bosonAbsorb
— MethodbosonAbsorb(op, η_absorb, γ_absorb, η_emit)
Generate bosonic bath which describes the absorption process of the bosonic system by a correlation function $C^{\nu=+}$
Parameters
op::QuantumObject
: The system creation operator according to the system-fermionic-bath interaction.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.γ_absorb::Vector{Tj<:Number}
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.η_emit::Vector{Tk<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
HierarchicalEOM.bosonEmit
— Typestruct bosonEmit <: AbstractBosonBath
An bath object which describes the emission process of the bosonic system by a correlation function $C^{\nu=-}$
Fields
spre
: the super-operator (left side operator multiplication) for the coupling operator.spost
: the super-operator (right side operator multiplication) for the coupling operator.CommD
: the super-operator (commutator) for the adjoint of the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.γ
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.η_absorb
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.bosonEmit
— MethodbosonEmit(op, η_emit, γ_emit, η_absorb)
Generate bosonic bath which describes the emission process of the bosonic system by a correlation function $C^{\nu=-}$
Parameters
op::QuantumObject
: The system annihilation operator according to the system-bosonic-bath interaction.η_emit::Vector{Ti<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.γ_emit::Vector{Ti<:Number}
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
HierarchicalEOM.FermionBath
— Typestruct FermionBath <: AbstractBath
An object which describes the interaction between system and fermionic bath
Fields
bath
: the different fermion-bath-type objects which describes the interactionop
: The system "emission" operator according to the system-fermionic-bath interaction.Nterm
: the number of exponential-expansion term of correlation functionsδ
: The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)
Methods
One can obtain the $k$-th exponent (exponential-expansion term) from bath::FermionBath
by calling : bath[k]
. HierarchicalEOM.jl
also supports the following calls (methods) :
bath[1:k]; # returns a vector which contains the exponents from the `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all the exponential-expansion terms
bath[:]; # returns a vector which contains all the exponential-expansion terms
from b in bath
# do something
end
HierarchicalEOM.FermionBath
— MethodFermionBath(op, η_absorb, γ_absorb, η_emit, γ_emit, δ=0.0)
Generate FermionBath object
\[\begin{aligned} C^{\nu=+}(\tau) &=\frac{1}{2\pi}\int_{-\infty}^{\infty} d\omega J(\omega) n(\omega) e^{i\omega \tau}\\ &=\sum_i \eta_i^{\nu=+} \exp(-\gamma_i^{\nu=+} \tau),\\ C^{\nu=-}(\tau) &=\frac{1}{2\pi}\int_{-\infty}^{\infty} d\omega J(\omega) (1-n(\omega)) e^{-i\omega \tau}\\ &=\sum_i \eta_i^{\nu=-} \exp(-\gamma_i^{\nu=-} \tau), \end{aligned}\]
where $\nu=+$ ($\nu=-$) represents absorption (emission) process, $J(\omega)$ is the spectral density of the bath and $n(\omega)$ is the Fermi-Dirac distribution.
Parameters
op::QuantumObject
: The system annihilation operator according to the system-fermionic-bath interaction.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}(\tau)$.γ_absorb::Vector{Tj<:Number}
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}(\tau)$.η_emit::Vector{Tk<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}(\tau)$.γ_emit::Vector{Tl<:Number}
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}(\tau)$.δ::Number
: The approximation discrepancy (Defaults to0.0
) which is used for adding the terminator to HEOMLS matrix (see function: addTerminator)
HierarchicalEOM.fermionAbsorb
— Typestruct fermionAbsorb <: AbstractFermionBath
An bath object which describes the absorption process of the fermionic system by a correlation function $C^{\nu=+}$
Fields
spre
: the super-operator (left side operator multiplication) for the coupling operator.spost
: the super-operator (right side operator multiplication) for the coupling operator.spreD
: the super-operator (left side operator multiplication) for the adjoint of the coupling operator.spostD
: the super-operator (right side operator multiplication) for the adjoint of the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.γ
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.η_emit
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.fermionAbsorb
— MethodfermionAbsorb(op, η_absorb, γ_absorb, η_emit)
Generate fermionic bath which describes the absorption process of the fermionic system by a correlation function $C^{\nu=+}$
Parameters
op::QuantumObject
: The system creation operator according to the system-fermionic-bath interaction.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.γ_absorb::Vector{Tj<:Number}
: the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.η_emit::Vector{Tk<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
HierarchicalEOM.fermionEmit
— Typestruct fermionEmit <: AbstractFermionBath
An bath object which describes the emission process of the fermionic system by a correlation function $C^{\nu=-}$
Fields
spre
: the super-operator (left side operator multiplication) for the coupling operator.spost
: the super-operator (right side operator multiplication) for the coupling operator.spreD
: the super-operator (left side operator multiplication) for the adjoint of the coupling operator.spostD
: the super-operator (right side operator multiplication) for the adjoint of the coupling operator.dims
: the dimension list of the coupling operator (should be equal to the system dims).η
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.γ
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.η_absorb
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.Nterm
: the number of exponential-expansion term of correlation function
HierarchicalEOM.fermionEmit
— MethodfermionEmit(op, η_emit, γ_emit, η_absorb)
Generate fermionic bath which describes the emission process of the fermionic system by a correlation function $C^{\nu=-}$
Parameters
op::QuantumObject
: The system annihilation operator according to the system-fermionic-bath interaction.η_emit::Vector{Ti<:Number}
: the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.γ_emit::Vector{Ti<:Number}
: the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.η_absorb::Vector{Ti<:Number}
: the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
Bath Correlation Functions
HierarchicalEOM.Boson_DrudeLorentz_Matsubara
— FunctionBoson_DrudeLorentz_Matsubara(op, λ, W, kT, N)
Constructing Drude-Lorentz bosonic bath with Matsubara expansion
Parameters
op
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.λ::Real
: The coupling strength between the system and the bath.W::Real
: The reorganization energy (band-width) of the bath.kT::Real
: The product of the Boltzmann constant $k$ and the absolute temperature $T$ of the bath.N::Int
: (N+1)-terms of exponential terms are used to approximate the bath correlation function.
Returns
bath::BosonBath
: a bosonic bath object with describes the interaction between system and bosonic bath
HierarchicalEOM.Boson_DrudeLorentz_Pade
— FunctionBoson_DrudeLorentz_Pade(op, λ, W, kT, N)
Constructing Drude-Lorentz bosonic bath with Padé expansion
A Padé approximant is a sum-over-poles expansion (see here for more details).
The application of the Padé method to spectrum decompoisitions is described in Ref. [1].
[1] J. Chem. Phys. 134, 244106 (2011)
Parameters
op
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.λ::Real
: The coupling strength between the system and the bath.W::Real
: The reorganization energy (band-width) of the bath.kT::Real
: The product of the Boltzmann constant $k$ and the absolute temperature $T$ of the bath.N::Int
: (N+1)-terms of exponential terms are used to approximate the bath correlation function.
Returns
bath::BosonBath
: a bosonic bath object with describes the interaction between system and bosonic bath
HierarchicalEOM.Boson_Underdamped_Matsubara
— FunctionBoson_Underdamped_Matsubara(op, λ, W, ω0, kT, N)
Construct an underdamped bosonic bath with Matsubara expansion
Parameters
op
: The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.λ::Real
: The coupling strength between the system and the bath.W::Real
: The band-width of the bath spectral density.ω0::Real
: The resonance frequency of the bath spectral density.kT::Real
: The product of the Boltzmann constant $k$ and the absolute temperature $T$ of the bath.N::Int
: (N+2)-terms of exponential terms are used to approximate the bath correlation function.
Returns
bath::BosonBath
: a bosonic bath object with describes the interaction between system and bosonic bath
HierarchicalEOM.Fermion_Lorentz_Matsubara
— FunctionFermion_Lorentz_Matsubara(op, λ, μ, W, kT, N)
Constructing Lorentzian fermionic bath with Matsubara expansion
Parameters
op
: The system annihilation operator according to the system-fermionic-bath interaction.λ::Real
: The coupling strength between the system and the bath.μ::Real
: The chemical potential of the bath.W::Real
: The reorganization energy (band-width) of the bath.kT::Real
: The product of the Boltzmann constant $k$ and the absolute temperature $T$ of the bath.N::Int
: (N+1)-terms of exponential terms are used to approximate each correlation functions ($C^{\nu=\pm}$).
Returns
bath::FermionBath
: a fermionic bath object with describes the interaction between system and fermionic bath
HierarchicalEOM.Fermion_Lorentz_Pade
— FunctionFermion_Lorentz_Pade(op, λ, μ, W, kT, N)
Constructing Lorentzian fermionic bath with Padé expansion
A Padé approximant is a sum-over-poles expansion (see here for more details).
The application of the Padé method to spectrum decompoisitions is described in Ref. [1].
[1] J. Chem. Phys. 134, 244106 (2011)
Parameters
op
: The system annihilation operator according to the system-fermionic-bath interaction.λ::Real
: The coupling strength between the system and the bath.μ::Real
: The chemical potential of the bath.W::Real
: The reorganization energy (band-width) of the bath.kT::Real
: The product of the Boltzmann constant $k$ and the absolute temperature $T$ of the bath.N::Int
: (N+1)-terms of exponential terms are used to approximate each correlation functions ($C^{\nu=\pm}$).
Returns
bath::FermionBath
: a fermionic bath object with describes the interaction between system and fermionic bath
Parity
HierarchicalEOM.EvenParity
— Typestruct EvenParity <: AbstractParity
HierarchicalEOM.OddParity
— Typestruct OddParity <: AbstractParity
HierarchicalEOM.EVEN
— Constantconst EVEN = EvenParity()
Label of even-parity
HierarchicalEOM.ODD
— Constantconst ODD = OddParity()
Label of odd-parity
HEOM Liouvillian superoperator matrices
HierarchicalEOM.HEOMSuperOp
— Typestruct HEOMSuperOp
General HEOM superoperator matrix.
Fields
data<:Union{AbstractSparseMatrix}
: the HEOM superoperator matrixdims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of auxiliary density operatorsparity
: the parity label (EVEN
orODD
).
HierarchicalEOM.HEOMSuperOp
— MethodHEOMSuperOp(op, opParity, refHEOMLS; Id_cache=I(refHEOMLS.N))
Construct the HEOM superoperator matrix corresponding to the given system SuperOperator which acts on all ADOs
.
During the multiplication on all the ADOs
, the parity of the output ADOs
might change depend on the parity of this HEOM superoperator.
Parameters
op
: The system SuperOperator which will act on allADOs
.opParity::AbstractParity
: the parity label of the given operator (op
), should beEVEN
orODD
.refHEOMLS::AbstractHEOMLSMatrix
: copy the systemdims
and number ofADOs
(N
) from this reference HEOMLS matrix
HierarchicalEOM.HEOMSuperOp
— MethodHEOMSuperOp(op, opParity, refADOs; Id_cache=I(refADOs.N))
Construct the HEOM superoperator matrix corresponding to the given system SuperOperator which acts on all ADOs
.
During the multiplication on all the ADOs
, the parity of the output ADOs
might change depend on the parity of this HEOM superoperator.
Parameters
op
: The system SuperOperator which will act on allADOs
.opParity::AbstractParity
: the parity label of the given operator (op
), should beEVEN
orODD
.refADOs::ADOs
: copy the systemdims
and number ofADOs
(N
) from this referenceADOs
HierarchicalEOM.HEOMSuperOp
— MethodHEOMSuperOp(op, opParity, dims, N; Id_cache=I(N))
Construct the HEOM superoperator matrix corresponding to the given system SuperOperator which acts on all ADOs
.
During the multiplication on all the ADOs
, the parity of the output ADOs
might change depend on the parity of this HEOM superoperator.
Parameters
op
: The system SuperOperator which will act on allADOs
.opParity::AbstractParity
: the parity label of the given operator (op
), should beEVEN
orODD
.dims::SVector
: the dimension list of the coupling operator (should be equal to the system dims).N::Int
: the number ofADOs
.
HierarchicalEOM.AbstractHEOMLSMatrix
— Type(M::AbstractHEOMLSMatrix)(p, t)
Calculate the time-dependent AbstractHEOMLSMatrix at time t
with parameters p
.
Arguments
p
: The parameters of the time-dependent coefficients.t
: The time at which the coefficients are evaluated.
Returns
- The output HEOMLS matrix.
HierarchicalEOM.M_S
— Typestruct M_S <: AbstractHEOMLSMatrix
HEOM Liouvillian superoperator matrix with cutoff level of the hierarchy equals to 0
. This corresponds to the standard Schrodinger (Liouville-von Neumann) equation, namely
\[M[\cdot]=-i \left[H_{sys}, \cdot \right]_-,\]
where $[\cdot, \cdot]_-$ stands for commutator.
Fields
data<:AbstractSciMLOperator
: the matrix of HEOM Liouvillian superoperatortier
: the tier (cutoff level) for the hierarchy, which equals to0
in this casedims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of total ADOs, which equals to1
(only the reduced density operator) in this casesup_dim
: the dimension of system superoperatorparity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).
HierarchicalEOM.M_S
— TypeM_S(Hsys, parity=EVEN; verbose=true)
Generate HEOM Liouvillian superoperator matrix with cutoff level of the hierarchy equals to 0
. This corresponds to the standard Schrodinger (Liouville-von Neumann) equation, namely
\[M[\cdot]=-i \left[H_{sys}, \cdot \right]_-,\]
where $[\cdot, \cdot]_-$ stands for commutator.
Parameters
Hsys
: The time-independent system Hamiltonian or Liouvillianparity::AbstractParity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).verbose::Bool
: To display verbose output during the process or not. Defaults totrue
.
Note that the parity only need to be set as ODD
when the system contains fermionic systems and you need to calculate the spectrum (density of states) of it.
HierarchicalEOM.M_Boson
— Typestruct M_Boson <: AbstractHEOMLSMatrix
HEOM Liouvillian superoperator matrix for bosonic bath
Fields
data<:AbstractSciMLOperator
: the matrix of HEOM Liouvillian superoperatortier
: the tier (cutoff level) for the bosonic hierarchydims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of total ADOssup_dim
: the dimension of system superoperatorparity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).bath::Vector{BosonBath}
: the vector which stores allBosonBath
objectshierarchy::HierarchyDict
: the object which contains all dictionaries for boson-bath-ADOs hierarchy.
HierarchicalEOM.M_Boson
— TypeM_Boson(Hsys, tier, Bath, parity=EVEN; threshold=0.0, verbose=true)
Generate the boson-type HEOM Liouvillian superoperator matrix
Parameters
Hsys
: The time-independent system Hamiltonian or Liouvilliantier::Int
: the tier (cutoff level) for the bosonic bathBath::Vector{BosonBath}
: objects for different bosonic bathsparity::AbstractParity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).threshold::Real
: The threshold of the importance value (see Ref. [1]). Defaults to0.0
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.
Note that the parity only need to be set as ODD
when the system contains fermionic systems and you need to calculate the spectrum (density of states) of it.
HierarchicalEOM.M_Fermion
— Typestruct M_Fermion <: AbstractHEOMLSMatrix
HEOM Liouvillian superoperator matrix for fermionic bath
Fields
data<:AbstractSciMLOperator
: the matrix of HEOM Liouvillian superoperatortier
: the tier (cutoff level) for the fermionic hierarchydims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of total ADOssup_dim
: the dimension of system superoperatorparity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).bath::Vector{FermionBath}
: the vector which stores allFermionBath
objectshierarchy::HierarchyDict
: the object which contains all dictionaries for fermion-bath-ADOs hierarchy.
HierarchicalEOM.M_Fermion
— TypeM_Fermion(Hsys, tier, Bath, parity=EVEN; threshold=0.0, verbose=true)
Generate the fermion-type HEOM Liouvillian superoperator matrix
Parameters
Hsys
: The time-independent system Hamiltonian or Liouvilliantier::Int
: the tier (cutoff level) for the fermionic bathBath::Vector{FermionBath}
: objects for different fermionic bathsparity::AbstractParity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).threshold::Real
: The threshold of the importance value (see Ref. [1]). Defaults to0.0
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.
HierarchicalEOM.M_Boson_Fermion
— Typestruct M_Boson_Fermion <: AbstractHEOMLSMatrix
HEOM Liouvillian superoperator matrix for mixtured (bosonic and fermionic) bath
Fields
data<:AbstractSciMLOperator
: the matrix of HEOM Liouvillian superoperatorBtier
: the tier (cutoff level) for bosonic hierarchyFtier
: the tier (cutoff level) for fermionic hierarchydims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of total ADOssup_dim
: the dimension of system superoperatorparity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).Bbath::Vector{BosonBath}
: the vector which stores allBosonBath
objectsFbath::Vector{FermionBath}
: the vector which stores allFermionBath
objectshierarchy::MixHierarchyDict
: the object which contains all dictionaries for mixed-bath-ADOs hierarchy.
HierarchicalEOM.M_Boson_Fermion
— TypeM_Boson_Fermion(Hsys, Btier, Ftier, Bbath, Fbath, parity=EVEN; threshold=0.0, verbose=true)
Generate the boson-fermion-type HEOM Liouvillian superoperator matrix
Parameters
Hsys
: The time-independent system Hamiltonian or LiouvillianBtier::Int
: the tier (cutoff level) for the bosonic bathFtier::Int
: the tier (cutoff level) for the fermionic bathBbath::Vector{BosonBath}
: objects for different bosonic bathsFbath::Vector{FermionBath}
: objects for different fermionic bathsparity::AbstractParity
: the parity label of the operator which HEOMLS is acting on (usuallyEVEN
, only set asODD
for calculating spectrum of fermionic system).threshold::Real
: The threshold of the importance value (see Ref. [1, 2]). Defaults to0.0
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.
Note that the parity only need to be set as ODD
when the system contains fermion systems and you need to calculate the spectrum of it.
[1] Phys. Rev. B 88, 235426 (2013) [2] Phys. Rev. B 103, 235413 (2021)
Base.size
— Methodsize(M::HEOMSuperOp)
Returns the size of the HEOM superoperator matrix
Base.size
— Methodsize(M::HEOMSuperOp, dim::Int)
Returns the specified dimension of the HEOM superoperator matrix
Base.size
— Methodsize(M::AbstractHEOMLSMatrix)
Returns the size of the HEOM Liouvillian superoperator matrix
Base.size
— Methodsize(M::AbstractHEOMLSMatrix, dim::Int)
Returns the specified dimension of the HEOM Liouvillian superoperator matrix
Base.eltype
— Methodeltype(M::HEOMSuperOp)
Returns the elements' type of the HEOM superoperator matrix
Base.eltype
— Methodeltype(M::AbstractHEOMLSMatrix)
Returns the elements' type of the HEOM Liouvillian superoperator matrix
HierarchicalEOM.Propagator
— FunctionPropagator(M, Δt; threshold, nonzero_tol)
Use FastExpm.jl
to calculate the propagator matrix from a given HEOM Liouvillian superoperator matrix $M$ with a specific time step $\Delta t$. That is, $\exp(M * \Delta t)$.
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modelΔt::Real
: A specific time step (time interval).threshold::Real
: Determines the threshold for the Taylor series. Defaults to1.0e-6
.nonzero_tol::Real
: Strips elements smaller thannonzero_tol
at each computation step to preserve sparsity. Defaults to1.0e-14
.
For more details, please refer to FastExpm.jl
Returns
::SparseMatrixCSC{ComplexF64, Int64}
: the propagator matrix
HierarchicalEOM.addBosonDissipator
— FunctionaddBosonDissipator(M, jumpOP)
Adding bosonic dissipator to a given HEOMLS matrix which describes how the system dissipatively interacts with an extra bosonic environment. The dissipator is defined as follows
\[D[J](\cdot) = J(\cdot) J^\dagger - \frac{1}{2}\left(J^\dagger J (\cdot) + (\cdot) J^\dagger J \right),\]
where $J\equiv \sqrt{\gamma}V$ is the jump operator, $V$ describes the dissipative part (operator) of the dynamics, $\gamma$ represents a non-negative damping rate and $[\cdot, \cdot]_+$ stands for anti-commutator.
Note that if $V$ is acting on fermionic systems, it should be even-parity to be compatible with charge conservation.
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modeljumpOP::AbstractVector
: The list of collapse (jump) operators $\{J_i\}_i$ to add. Defaults to empty vector[]
.
Return
M_new::AbstractHEOMLSMatrix
: the new HEOM Liouvillian superoperator matrix
HierarchicalEOM.addFermionDissipator
— FunctionaddFermionDissipator(M, jumpOP)
Adding fermionic dissipator to a given HEOMLS matrix which describes how the system dissipatively interacts with an extra fermionic environment. The dissipator with EVEN
parity is defined as follows
\[D_{\textrm{even}}[J](\cdot) = J(\cdot) J^\dagger - \frac{1}{2}\left(J^\dagger J (\cdot) + (\cdot) J^\dagger J \right),\]
where $J\equiv \sqrt{\gamma}V$ is the jump operator, $V$ describes the dissipative part (operator) of the dynamics, $\gamma$ represents a non-negative damping rate and $[\cdot, \cdot]_+$ stands for anti-commutator.
Similarly, the dissipator with ODD
parity is defined as follows
\[D_{\textrm{odd}}[J](\cdot) = - J(\cdot) J^\dagger - \frac{1}{2}\left(J^\dagger J (\cdot) + (\cdot) J^\dagger J \right),\]
Note that the parity of the dissipator will be determined by the parity of the given HEOMLS matrix M
.
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modeljumpOP::AbstractVector
: The list of collapse (jump) operators to add. Defaults to empty vector[]
.
Return
M_new::AbstractHEOMLSMatrix
: the new HEOM Liouvillian superoperator matrix
HierarchicalEOM.addTerminator
— FunctionaddTerminator(M, Bath)
Adding terminator to a given HEOMLS matrix.
The terminator is a Liouvillian term representing the contribution to the system-bath dynamics of all exponential-expansion terms beyond Bath.Nterm
The difference between the true correlation function and the sum of the Bath.Nterm
-exponential terms is approximately 2 * δ * dirac(t)
. Here, δ
is the approximation discrepancy and dirac(t)
denotes the Dirac-delta function.
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modelBath::Union{BosonBath, FermionBath}
: The bath object which contains the approximation discrepancy δ
Return
M_new::AbstractHEOMLSMatrix
: the new HEOM Liouvillian superoperator matrix
Auxiliary Density Operators (ADOs)
HierarchicalEOM.ADOs
— Typestruct ADOs
The Auxiliary Density Operators for HEOM model.
Fields
data
: the vectorized auxiliary density operatorsdims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of auxiliary density operatorsparity
: the parity label (EVEN
orODD
).
Methods
One can obtain the density matrix for specific index (idx
) by calling : ados[idx]
. HierarchicalEOM.jl
also supports the following calls (methods) :
length(ados); # returns the total number of `ADOs`
ados[1:idx]; # returns a vector which contains the `ADO` (in matrix form) from index `1` to `idx`
ados[1:end]; # returns a vector which contains all the `ADO` (in matrix form)
ados[:]; # returns a vector which contains all the `ADO` (in matrix form)
for rho in ados # iteration
# do something
end
HierarchicalEOM.ADOs
— MethodADOs(V, N, parity)
Generate the object of auxiliary density operators for HEOM model.
Parameters
V::AbstractVector
: the vectorized auxiliary density operatorsN::Int
: the number of auxiliary density operators.parity::AbstractParity
: the parity label (EVEN
orODD
). Default toEVEN
.
Base.length
— Methodlength(A::ADOs)
Returns the total number of the Auxiliary Density Operators (ADOs)
Base.eltype
— Methodeltype(A::ADOs)
Returns the elements' type of the Auxiliary Density Operators (ADOs)
HierarchicalEOM.getRho
— FunctiongetRho(ados)
Return the density matrix of the reduced state (system) from a given auxiliary density operators
Parameters
ados::ADOs
: the auxiliary density operators for HEOM model
Returns
ρ::QuantumObject
: The density matrix of the reduced state
HierarchicalEOM.getADO
— FunctiongetADO(ados, idx)
Return the auxiliary density operator with a specific index from auxiliary density operators
This function equals to calling : ados[idx]
.
Parameters
ados::ADOs
: the auxiliary density operators for HEOM modelidx::Int
: the index of the auxiliary density operator
Returns
ρ_idx::QuantumObject
: The auxiliary density operator
QuantumToolbox.expect
— Functionexpect(op, ados; take_real=true)
Return the expectation value of the operator op
for the reduced density operator in the given ados
, namely
\[\textrm{Tr}\left[ O \rho \right],\]
where $O$ is the operator and $\rho$ is the reduced density operator in the given ADOs.
Parameters
op
: the operator $O$ to take the expectation valueados::ADOs
: the auxiliary density operators for HEOM modeltake_real::Bool
: whether to automatically take the real part of the trace or not. Default totrue
Returns
exp_val
: The expectation value
expect(op, ados_list; take_real=true)
Return a list of expectation values of the operator op
corresponds to the reduced density operators in the given ados_list
, namely
\[\textrm{Tr}\left[ O \rho \right],\]
where $O$ is the operator and $\rho$ is the reduced density operator in one of the ADOs
from ados_list
.
Parameters
op
: the operator $O$ to take the expectation valueados_list::Vector{ADOs}
: the list of auxiliary density operators for HEOM modeltake_real::Bool
: whether to automatically take the real part of the trace or not. Default totrue
Returns
exp_val
: The expectation value
Hierarchy Dictionary
HierarchicalEOM.Nvec
— Typestruct Nvec
An object which describes the repetition number of each multi-index ensembles in auxiliary density operators.
The n_vector
($\vec{n}$) denotes a set of integers:
\[\{ n_{1,1}, ..., n_{\alpha, k}, ... \}\]
associated with the $k$-th exponential-expansion term in the $\alpha$-th bath. If $n_{\alpha, k} = 3$ means that the multi-index ensemble $\{\alpha, k\}$ appears three times in the multi-index vector of ADOs (see the notations in our paper).
The hierarchy level ($L$) for an n_vector
is given by $L=\sum_{\alpha, k} n_{\alpha, k}$
Fields
data
: then_vector
level
: The levelL
for then_vector
Methods
One can obtain the repetition number for specific index (idx
) by calling : n_vector[idx]
. To obtain the corresponding tuple $(\alpha, k)$ for a given index idx
, see bathPtr
in HierarchyDict
for more details.
HierarchicalEOM.jl
also supports the following calls (methods) :
length(n_vector); # returns the length of `Nvec`
n_vector[1:idx]; # returns a vector which contains the excitation number of `n_vector` from index `1` to `idx`
n_vector[1:end]; # returns a vector which contains all the excitation number of `n_vector`
n_vector[:]; # returns a vector which contains all the excitation number of `n_vector`
from n in n_vector # iteration
# do something
end
HierarchicalEOM.HierarchyDict
— Typestruct HierarchyDict <: AbstractHierarchyDict
An object which contains all dictionaries for pure (bosonic or fermionic) bath-ADOs hierarchy.
Fields
idx2nvec
: Return theNvec
from a given index of ADOnvec2idx
: Return the index of ADO from a givenNvec
lvl2idx
: Return the list of ADO-indices from a given hierarchy levelbathPtr
: Records the tuple $(\alpha, k)$ for each position inNvec
, where $\alpha$ and $k$ represents the $k$-th exponential-expansion term of the $\alpha$-th bath.
HierarchicalEOM.MixHierarchyDict
— Typestruct MixHierarchyDict <: AbstractHierarchyDict
An object which contains all dictionaries for mixed (bosonic and fermionic) bath-ADOs hierarchy.
Fields
idx2nvec
: Return the tuple(Nvec_b, Nvec_f)
from a given index of ADO, whereb
represents boson andf
represents fermionnvec2idx
: Return the index from a given tuple(Nvec_b, Nvec_f)
, whereb
represents boson andf
represents fermionBlvl2idx
: Return the list of ADO-indices from a given bosonic-hierarchy levelFlvl2idx
: Return the list of ADO-indices from a given fermionic-hierarchy levelbosonPtr
: Records the tuple $(\alpha, k)$ for each position inNvec_b
, where $\alpha$ and $k$ represents the $k$-th exponential-expansion term of the $\alpha$-th bosonic bath.fermionPtr
: Records the tuple $(\alpha, k)$ for each position inNvec_f
, where $\alpha$ and $k$ represents the $k$-th exponential-expansion term of the $\alpha$-th fermionic bath.
HierarchicalEOM.getIndexEnsemble
— FunctiongetIndexEnsemble(nvec, bathPtr)
Search for all the multi-index ensemble $(\alpha, k)$ where $\alpha$ and $k$ represents the $k$-th exponential-expansion term in the $\alpha$-th bath.
Parameters
nvec::Nvec
: An object which records the repetition number of each multi-index ensembles in ADOs.bathPtr::Vector{Tuple{Int, Int}}
: This can be obtained fromHierarchyDict.bathPtr
,MixHierarchyDict.bosonPtr
, orMixHierarchyDict.fermionPtr
.
Returns
Vector{Tuple{Int, Int, Int}}
: a vector (list) of the tuples $(\alpha, k, n)$.
Example
Here is an example to use Bath
, Exponent
, HierarchyDict
, and getIndexEnsemble
together:
L::M_Fermion; # suppose this is a fermion type of HEOM Liouvillian superoperator matrix you create
HDict = L.hierarchy; # the hierarchy dictionary
ados = SteadyState(L); # the stationary state (ADOs) for L
# Let's consider all the ADOs for first level
idx_list = HDict.lvl2idx[1];
for idx in idx_list
ρ1 = ados[idx] # one of the 1st-level ADO
nvec = HDict.idx2nvec[idx] # the nvec corresponding to ρ1
for (α, k, n) in getIndexEnsemble(nvec, HDict.bathPtr)
α # index of the bath
k # the index of the exponential-expansion term in α-th bath
n # the repetition number of the ensemble {α, k} in ADOs
exponent = L.bath[α][k] # the k-th exponential-expansion term in α-th bath
# do some calculations you want
end
end
Time Evolution
There are two function definitions of HEOMsolve
, which depend on different methods to solve the time evolution:
HierarchicalEOM.HEOMsolve
— FunctionHEOMsolve(M, ρ0, Δt, steps; e_ops, threshold, nonzero_tol, verbose, filename)
Solve the time evolution for auxiliary density operators based on propagator (generated by FastExpm.jl
).
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modelρ0::Union{QuantumObject,ADOs}
: system initial state (density matrix) or initial auxiliary density operators (ADOs
)Δt::Real
: A specific time step (time interval).steps::Int
: The number of time stepse_ops::Union{Nothing,AbstractVector}
: List of operators for which to calculate expectation values.threshold::Real
: Determines the threshold for the Taylor series. Defaults to1.0e-6
.nonzero_tol::Real
: Strips elements smaller thannonzero_tol
at each computation step to preserve sparsity. Defaults to1.0e-14
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.filename::String
: If filename was specified, the ADOs at each time point will be saved into the JLD2 file "filename.jld2" after the solving process.
Notes
- The
ADOs
will be saved depend on the keyword argumente_ops
. - If
e_ops
is specified, the solution will only save the finalADOs
, otherwise, it will save all theADOs
corresponding totlist = 0:Δt:(Δt * steps)
. - For more details of the propagator, please refer to
FastExpm.jl
Returns
sol::TimeEvolutionHEOMSol
: The solution of the hierarchical EOM. See alsoTimeEvolutionHEOMSol
HEOMsolve(M, ρ0, tlist; e_ops, solver, H_t, params, verbose, filename, SOLVEROptions...)
Solve the time evolution for auxiliary density operators based on ordinary differential equations.
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM modelρ0::Union{QuantumObject,ADOs}
: system initial state (density matrix) or initial auxiliary density operators (ADOs
)tlist::AbstractVector
: Denote the specific time points to save the solution at, during the solving process.e_ops::Union{Nothing,AbstractVector}
: List of operators for which to calculate expectation values.solver::OrdinaryDiffEqAlgorithm
: solver in packageDifferentialEquations.jl
. Default toDP5()
.H_t::Union{Nothing,QuantumObjectEvolution}
: The time-dependent system Hamiltonian or Liouvillian. Default tonothing
.params
: Parameters to pass to the solver. This argument is usually expressed as aNamedTuple
orAbstractVector
of parameters. For more advanced usage, any custom struct can be used.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.filename::String
: If filename was specified, the ADOs at each time point will be saved into the JLD2 file "filename.jld2" after the solving process.SOLVEROptions
: extra options for solver
Notes
- The
ADOs
will be saved depend on the keyword argumentsaveat
inkwargs
. - If
e_ops
is specified, the default value ofsaveat=[tlist[end]]
(only save the finalADOs
), otherwise,saveat=tlist
(saving theADOs
corresponding totlist
). You can also specifye_ops
andsaveat
separately. - The default tolerances in
kwargs
are given asreltol=1e-6
andabstol=1e-8
. - For more details about
solver
please refer toDifferentialEquations.jl
(ODE Solvers) - For more details about
SOLVEROptions
please refer toDifferentialEquations.jl
(Keyword Arguments)
Returns
- sol::TimeEvolutionHEOMSol : The solution of the hierarchical EOM. See also
TimeEvolutionHEOMSol
HierarchicalEOM.TimeEvolutionHEOMSol
— Typestruct TimeEvolutionHEOMSol
A structure storing the results and some information from solving time evolution of hierarchical equations of motion (HEOM).
Fields (Attributes)
Btier
: The tier (cutoff level) for bosonic hierarchyFtier
: The tier (cutoff level) for fermionic hierarchytimes::AbstractVector
: The time list of the evolution.ados::Vector{ADOs}
: The list of result ADOs at each time point.expect::Matrix
: The expectation values corresponding to each time point intimes
.retcode
: The return code from the solver.alg
: The algorithm which is used during the solving process.abstol::Real
: The absolute tolerance which is used during the solving process.reltol::Real
: The relative tolerance which is used during the solving process.
Stationary State
There are two function definitions of steadystate
, which depend on different methods to solve the stationary state:
QuantumToolbox.steadystate
— Functionsteadystate(M::AbstractHEOMLSMatrix; solver, verbose, SOLVEROptions...)
Solve the steady state of the auxiliary density operators based on LinearSolve.jl
(i.e., solving $x$ where $A \times x = b$).
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM model, where the parity should beEVEN
.solver::SciMLLinearSolveAlgorithm
: solver in packageLinearSolve.jl
. Default toUMFPACKFactorization()
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.SOLVEROptions
: extra options for solver
Notes
- For more details about
solver
andSOLVEROptions
, please refer toLinearSolve.jl
Returns
::ADOs
: The steady state of auxiliary density operators.
steadystate(M::AbstractHEOMLSMatrix, ρ0, tspan; solver, verbose, SOLVEROptions...)
Solve the steady state of the auxiliary density operators based on time evolution (OrdinaryDiffEq.jl
) with initial state is given in the type of density-matrix (ρ0
).
Parameters
M::AbstractHEOMLSMatrix
: the matrix given from HEOM model, where the parity should beEVEN
.ρ0::Union{QuantumObject,ADOs}
: system initial state (density matrix) or initial auxiliary density operators (ADOs
)tspan::Number
: the time limit to find stationary state. Default toInf
solver::OrdinaryDiffEqAlgorithm
: The ODE solvers in packageDifferentialEquations.jl
. Default toDP5()
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.SOLVEROptions
: extra options for solver
Notes
- For more details about
solver
please refer toDifferentialEquations.jl
(ODE Solvers) - For more details about
SOLVEROptions
please refer toDifferentialEquations.jl
(Keyword Arguments)
Returns
::ADOs
: The steady state of auxiliary density operators.
Spectrum
HierarchicalEOM.PowerSpectrum
— FunctionPowerSpectrum(M, ρ, Q_op, ωlist, reverse; solver, verbose, filename, SOLVEROptions...)
Calculate power spectrum for the system in frequency domain where P_op
will be automatically set as the adjoint of Q_op
.
This function is equivalent to: PowerSpectrum(M, ρ, Q_op', Q_op, ωlist, reverse; solver, verbose, filename, SOLVEROptions...)
PowerSpectrum(M, ρ, P_op, Q_op, ωlist, reverse; solver, verbose, filename, SOLVEROptions...)
Calculate power spectrum for the system in frequency domain.
\[\pi S(\omega)=\textrm{Re}\left\{\int_0^\infty dt \langle P(t) Q(0)\rangle e^{-i\omega t}\right\},\]
To calculate spectrum when input operator Q_op
has EVEN
-parity:
remember to set the parameters:
M::AbstractHEOMLSMatrix
: should beEVEN
parity
To calculate spectrum when input operator Q_op
has ODD
-parity:
remember to set the parameters:
M::AbstractHEOMLSMatrix
: should beODD
parity
Parameters
M::AbstractHEOMLSMatrix
: the HEOMLS matrix.ρ::Union{QuantumObject,ADOs}
: the system density matrix or the auxiliary density operators.P_op::Union{QuantumObject,HEOMSuperOp}
: the system operator (orHEOMSuperOp
) $P$ acting on the system.Q_op::Union{QuantumObject,HEOMSuperOp}
: the system operator (orHEOMSuperOp
) $Q$ acting on the system.ωlist::AbstractVector
: the specific frequency points to solve.reverse::Bool
: Iftrue
, calculate $\langle P(-t)Q(0) \rangle = \langle P(0)Q(t) \rangle = \langle P(t)Q(0) \rangle^*$ instead of $\langle P(t) Q(0) \rangle$. Default tofalse
.solver::SciMLLinearSolveAlgorithm
: solver in packageLinearSolve.jl
. Default toUMFPACKFactorization()
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.filename::String
: If filename was specified, the value of spectrum for each ω will be saved into the file "filename.txt" during the solving process.SOLVEROptions
: extra options for solver
Notes
- For more details about
solver
andSOLVEROptions
, please refer toLinearSolve.jl
Returns
spec::AbstractVector
: the spectrum list corresponds to the specifiedωlist
HierarchicalEOM.DensityOfStates
— FunctionDensityOfStates(M, ρ, d_op, ωlist; solver, verbose, filename, SOLVEROptions...)
Calculate density of states for the fermionic system in frequency domain.
\[ \pi A(\omega)=\textrm{Re}\left\{\int_0^\infty dt \left[\langle d(t) d^\dagger(0)\rangle^* + \langle d^\dagger(t) d(0)\rangle \right] e^{-i\omega t}\right\},\]
Parameters
M::AbstractHEOMLSMatrix
: the HEOMLS matrix which acts onODD
-parity operators.ρ::Union{QuantumObject,ADOs}
: the system density matrix or the auxiliary density operators.d_op::QuantumObject
: The annihilation operator ($d$ as shown above) acting on the fermionic system.ωlist::AbstractVector
: the specific frequency points to solve.solver::SciMLLinearSolveAlgorithm
: solver in packageLinearSolve.jl
. Default toUMFPACKFactorization()
.verbose::Bool
: To display verbose output and progress bar during the process or not. Defaults totrue
.filename::String
: If filename was specified, the value of spectrum for each ω will be saved into the file "filename.txt" during the solving process.SOLVEROptions
: extra options for solver
Notes
- For more details about
solver
andSOLVEROptions
, please refer toLinearSolve.jl
Returns
dos::AbstractVector
: the list of density of states corresponds to the specifiedωlist
Misc.
HierarchicalEOM.versioninfo
— MethodHierarchicalEOM.versioninfo(io::IO=stdout)
Command line output of information on HierarchicalEOM, dependencies, and system information.
HierarchicalEOM.about
— MethodQuantumToolbox.about(io::IO=stdout)
Command line output of information on HierarchicalEOM, dependencies, and system information, same as HierarchicalEOM.versioninfo
.
The outputs will be something like the following:
using HierarchicalEOM
HierarchicalEOM.versioninfo()
__
/ \
__ __ __ \__/ __
| | | | / \ / \
| | | | ______ ______ \__/_ _\__/
| |___| |/ __ \ / __ \ / ' \/ \
| ___ | |__) | / \ | _ _ |
| | | | ____/| ( ) | / \ / \ |
| | | | |____ | \__/ | | | | | |
|__| |__|\______) \______/|__| |_| |_|
Julia framework for Hierarchical Equations of Motion
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Copyright © QuTiP team 2023 and later.
Lead developer : Yi-Te Huang
Other developers:
Simon Cross, Neill Lambert, Po-Chen Kuo and Shen-Liang Yang
Package information:
====================================
Julia Ver. 1.11.2
HierarchicalEOM Ver. 2.3.3
QuantumToolbox Ver. 0.24.0
SciMLOperators Ver. 0.3.12
LinearSolve Ver. 2.38.0
OrdinaryDiffEqCore Ver. 1.14.1
System information:
====================================
OS : Linux (x86_64-linux-gnu)
CPU : 4 × AMD EPYC 7763 64-Core Processor
Memory : 15.615 GB
WORD_SIZE: 64
LIBM : libopenlibm
LLVM : libLLVM-16.0.6 (ORCJIT, znver3)
BLAS : libopenblas64_.so (ilp64)
Threads : 1 (on 4 virtual cores)
HierarchicalEOM.print_logo
— FunctionHierarchicalEOM.print_logo(io::IO=stdout)
Print the Logo of HierarchicalEOM package
The output will be something like the following:
using HierarchicalEOM
HierarchicalEOM.print_logo()
__
/ \
__ __ __ \__/ __
| | | | / \ / \
| | | | ______ ______ \__/_ _\__/
| |___| |/ __ \ / __ \ / ' \/ \
| ___ | |__) | / \ | _ _ |
| | | | ____/| ( ) | / \ / \ |
| | | | |____ | \__/ | | | | | |
|__| |__|\______) \______/|__| |_| |_|