Library API
Contents
Index
HierarchicalEOM.HeomAPI.EVENHierarchicalEOM.HeomAPI.ODDHierarchicalEOM.Bath.BosonBathHierarchicalEOM.Bath.BosonBathHierarchicalEOM.Bath.BosonBathHierarchicalEOM.Bath.ExponentHierarchicalEOM.Bath.FermionBathHierarchicalEOM.Bath.FermionBathHierarchicalEOM.Bath.bosonAbsorbHierarchicalEOM.Bath.bosonAbsorbHierarchicalEOM.Bath.bosonEmitHierarchicalEOM.Bath.bosonEmitHierarchicalEOM.Bath.bosonImagHierarchicalEOM.Bath.bosonImagHierarchicalEOM.Bath.bosonRealHierarchicalEOM.Bath.bosonRealHierarchicalEOM.Bath.bosonRealImagHierarchicalEOM.Bath.bosonRealImagHierarchicalEOM.Bath.fermionAbsorbHierarchicalEOM.Bath.fermionAbsorbHierarchicalEOM.Bath.fermionEmitHierarchicalEOM.Bath.fermionEmitHierarchicalEOM.HeomAPI.ADOsHierarchicalEOM.HeomAPI.ADOsHierarchicalEOM.HeomAPI.EvenParityHierarchicalEOM.HeomAPI.HEOMSuperOpHierarchicalEOM.HeomAPI.HEOMSuperOpHierarchicalEOM.HeomAPI.HEOMSuperOpHierarchicalEOM.HeomAPI.HEOMSuperOpHierarchicalEOM.HeomAPI.HierarchyDictHierarchicalEOM.HeomAPI.M_BosonHierarchicalEOM.HeomAPI.M_BosonHierarchicalEOM.HeomAPI.M_Boson_FermionHierarchicalEOM.HeomAPI.M_Boson_FermionHierarchicalEOM.HeomAPI.M_FermionHierarchicalEOM.HeomAPI.M_FermionHierarchicalEOM.HeomAPI.M_SHierarchicalEOM.HeomAPI.M_SHierarchicalEOM.HeomAPI.MixHierarchyDictHierarchicalEOM.HeomAPI.NvecHierarchicalEOM.HeomAPI.OddParityBase.eltypeBase.eltypeBase.eltypeBase.lengthBase.sizeBase.sizeBase.sizeBase.sizeHierarchicalEOM.Bath.BosonBathRWAHierarchicalEOM.Bath.Boson_DrudeLorentz_MatsubaraHierarchicalEOM.Bath.Boson_DrudeLorentz_PadeHierarchicalEOM.Bath.CHierarchicalEOM.Bath.CHierarchicalEOM.Bath.Fermion_Lorentz_MatsubaraHierarchicalEOM.Bath.Fermion_Lorentz_PadeHierarchicalEOM.HeomAPI.ExpectHierarchicalEOM.HeomAPI.PropagatorHierarchicalEOM.HeomAPI.SteadyStateHierarchicalEOM.HeomAPI.addBosonDissipatorHierarchicalEOM.HeomAPI.addFermionDissipatorHierarchicalEOM.HeomAPI.addTerminatorHierarchicalEOM.HeomAPI.evolutionHierarchicalEOM.HeomAPI.getADOHierarchicalEOM.HeomAPI.getIndexEnsembleHierarchicalEOM.HeomAPI.getRhoHierarchicalEOM.HeomBase.print_logoHierarchicalEOM.HeomBase.versioninfoHierarchicalEOM.Spectrum.DensityOfStatesHierarchicalEOM.Spectrum.PowerSpectrumHierarchicalEOM.Spectrum.spectrum
Bath Module
HierarchicalEOM.Bath.C — MethodC(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.
HierarchicalEOM.Bath.C — MethodC(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 emmision 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.Bath.Exponent — Typestruct ExponentAn 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: 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.Bath.BosonBath — Typestruct BosonBath <: AbstractBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).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
endHierarchicalEOM.Bath.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: 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.Bath.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: 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.Bath.bosonReal — Typestruct bosonReal <: AbstractBosonBathA bosonic bath for the real part of bath correlation function $C^{u=\textrm{R}}$
Fields
Comm: the super-operator (commutator) for the coupling operator.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.bosonReal — MethodbosonReal(op, η_real, γ_real)Generate bosonic bath for the real part of bath correlation function $C^{u=\textrm{R}}$
Parameters
op: 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.Bath.bosonImag — Typestruct bosonImag <: AbstractBosonBathA 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.bosonImag — MethodbosonImag(op, η_imag, γ_imag)Generate bosonic bath for the imaginary part of correlation function $C^{u=\textrm{I}}$
Parameters
op: 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.Bath.bosonRealImag — Typesturct bosonRealImag <: AbstractBosonBathA 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η_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.Bath.bosonRealImag — MethodbosonRealImag(op, η_real, η_imag, γ)Generate bosonic bath which the real part and imaginary part of the bath correlation function are combined
Parameters
op: 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.Bath.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: 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.Bath.bosonAbsorb — Typestruct bosonAbsorb <: AbstractBosonBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.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: 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.Bath.bosonEmit — Typestruct bosonEmit <: AbstractBosonBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.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: 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.Bath.FermionBath — Typestruct FermionBath <: AbstractBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).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
endHierarchicalEOM.Bath.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: 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.Bath.fermionAbsorb — Typestruct fermionAbsorb <: AbstractFermionBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.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: 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.Bath.fermionEmit — Typestruct fermionEmit <: AbstractFermionBathAn 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.dim: the dimension of the coupling operator (should be equal to the system dimension).η: 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.Bath.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: 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.Bath.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.Bath.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.Bath.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.Bath.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.HeomAPI.EvenParity — Typestruct EvenParity <: AbstractParityHierarchicalEOM.HeomAPI.OddParity — Typestruct OddParity <: AbstractParityHierarchicalEOM.HeomAPI.EVEN — Constantconst EVEN = EvenParity()Label of even-parity
HierarchicalEOM.HeomAPI.ODD — Constantconst ODD = OddParity()Label of odd-parity
HEOM Liouvillian superoperator matrices
HierarchicalEOM.HeomAPI.HEOMSuperOp — Typestruct HEOMSuperOpGeneral HEOM superoperator matrix.
Fields
data: the HEOM superoperator matrixdim: the dimension of the systemN: the number of auxiliary density operatorsparity: the parity label (EVENorODD).
HierarchicalEOM.HeomAPI.HEOMSuperOp — TypeHEOMSuperOp(op, opParity, refHEOMLS, mul_basis="L")Construct the HEOM superoperator matrix corresponding to the given system operator 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 operator which will act on allADOs.opParity::AbstractParity: the parity label of the given operator (op), should beEVENorODD.refHEOMLS::AbstractHEOMLSMatrix: copy the systemdimand number ofADOs(N) from this reference HEOMLS matrixmul_basis::AbstractString: this specifies the basis foropto multiply on allADOs. Defaults to"L".
if mul_basis is specified as
"L": the matrixophas same dimension with the system and acts on left-hand side."R": the matrixophas same dimension with the system and acts on right-hand side."LR": the matrixopis a superoperator of the system.
HierarchicalEOM.HeomAPI.HEOMSuperOp — TypeHEOMSuperOp(op, opParity, refADOs, mul_basis="L")Construct the HEOMLS matrix corresponding to the given system operator which multiplies on the "L"eft-hand ("R"ight-hand) side basis of 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 operator which will act on allADOs.opParity::AbstractParity: the parity label of the given operator (op), should beEVENorODD.refADOs::ADOs: copy the systemdimand number ofADOs(N) from this referenceADOsmul_basis::AbstractString: this specifies the basis foropto multiply on allADOs. Defaults to"L".
if mul_basis is specified as
"L": the matrixophas same dimension with the system and acts on left-hand side."R": the matrixophas same dimension with the system and acts on right-hand side."LR": the matrixopis a superoperator of the system.
HierarchicalEOM.HeomAPI.HEOMSuperOp — MethodHEOMSuperOp(op, opParity, dim, N, mul_basis)Construct the HEOM superoperator matrix corresponding to the given system operator 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 operator which will act on allADOs.opParity::AbstractParity: the parity label of the given operator (op), should beEVENorODD.dim::Int: the system dimension.N::Int: the number ofADOs.mul_basis::AbstractString: this specifies the basis foropto multiply on allADOs.
if mul_basis is specified as
"L": the matrixophas same dimension with the system and acts on left-hand side."R": the matrixophas same dimension with the system and acts on right-hand side."LR": the matrixopis a superoperator of the system.
HierarchicalEOM.HeomAPI.M_S — Typestruct M_S{T} <: AbstractHEOMLSMatrixHEOM 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::T: the sparse matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the hierarchy, which equals to0in this casedim: the dimension of systemN: 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 asODDfor calculating spectrum of fermionic system).
HierarchicalEOM.HeomAPI.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 Hamiltonianparity::AbstractParity: the parity label of the operator which HEOMLS is acting on (usuallyEVEN, only set asODDfor 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.HeomAPI.M_Boson — Typestruct M_Boson{T} <: AbstractHEOMLSMatrixHEOM Liouvillian superoperator matrix for bosonic bath
Fields
data::T: the sparse matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the bosonic hierarchydim: the dimension of systemN: 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 asODDfor calculating spectrum of fermionic system).bath::Vector{BosonBath}: the vector which stores allBosonBathobjectshierarchy::HierarchyDict: the object which contains all dictionaries for boson-bath-ADOs hierarchy.
HierarchicalEOM.HeomAPI.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 Hamiltoniantier::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 asODDfor 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.HeomAPI.M_Fermion — Typestruct M_Fermion{T} <: AbstractHEOMLSMatrixHEOM Liouvillian superoperator matrix for fermionic bath
Fields
data::T: the sparse matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the fermionic hierarchydim: the dimension of systemN: 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 asODDfor calculating spectrum of fermionic system).bath::Vector{FermionBath}: the vector which stores allFermionBathobjectshierarchy::HierarchyDict: the object which contains all dictionaries for fermion-bath-ADOs hierarchy.
HierarchicalEOM.HeomAPI.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 Hamiltoniantier::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 asODDfor 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.HeomAPI.M_Boson_Fermion — Typestruct M_Boson_Fermion{T} <: AbstractHEOMLSMatrixHEOM Liouvillian superoperator matrix for mixtured (bosonic and fermionic) bath
Fields
data::T: the sparse matrix of HEOM Liouvillian superoperatorBtier: the tier (cutoff level) for bosonic hierarchyFtier: the tier (cutoff level) for fermionic hierarchydim: the dimension of systemN: 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 asODDfor calculating spectrum of fermionic system).Bbath::Vector{BosonBath}: the vector which stores allBosonBathobjectsFbath::Vector{FermionBath}: the vector which stores allFermionBathobjectshierarchy::MixHierarchyDict: the object which contains all dictionaries for mixed-bath-ADOs hierarchy.
HierarchicalEOM.HeomAPI.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 HamiltonianBtier::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 asODDfor 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.HeomAPI.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_tolat 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.HeomAPI.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.HeomAPI.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.
Similary, 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.HeomAPI.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.HeomAPI.ADOs — Typemutable struct ADOsThe Auxiliary Density Operators for HEOM model.
Fields
data: the vectorized auxiliary density operatorsdim: the dimension of the systemN: the number of auxiliary density operatorsparity: the parity label (EVENorODD).
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
endHierarchicalEOM.HeomAPI.ADOs — MethodADOs(V, N, parity)Gernerate 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 (EVENorODD). Default toEVEN.
ADOs(ρ, N, parity)Gernerate the object of auxiliary density operators for HEOM model.
Parameters
ρ: the reduced density operatorN::Int: the number of auxiliary density operators.parity::AbstractParity: the parity label (EVENorODD). 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.HeomAPI.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
ρ: The density matrix of the reduced state
HierarchicalEOM.HeomAPI.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: The auxiliary density operator
HierarchicalEOM.HeomAPI.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{Re}\left\{\textrm{Tr}\left[ O \rho \right]\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{Re}\left\{\textrm{Tr}\left[ O \rho \right]\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.HeomAPI.Nvec — Typestruct NvecAn 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_vectorlevel: The levelLfor 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
endHierarchicalEOM.HeomAPI.HierarchyDict — Typestruct HierarchyDict <: AbstractHierarchyDictAn object which contains all dictionaries for pure (bosonic or fermionic) bath-ADOs hierarchy.
Fields
idx2nvec: Return theNvecfrom a given index of ADOnvec2idx: Return the index of ADO from a givenNveclvl2idx: 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.HeomAPI.MixHierarchyDict — Typestruct MixHierarchyDict <: AbstractHierarchyDictAn 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, wherebrepresents boson andfrepresents fermionnvec2idx: Return the index from a given tuple(Nvec_b, Nvec_f), wherebrepresents boson andfrepresents 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.HeomAPI.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
endTime Evolution
There are six function definitions of evolution, which depend on different input types and methods to solve the time evolution:
HierarchicalEOM.HeomAPI.evolution — Functionevolution(M, ρ0, Δt, steps; threshold, nonzero_tol, verbose, filename)Solve the time evolution for auxiliary density operators based on propagator (generated by FastExpm.jl) with initial state is given in the type of density-matrix (ρ0).
This method will return the time evolution of ADOs corresponds to tlist = 0 : Δt : (Δt * steps)
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM modelρ0: system initial state (density matrix)Δt::Real: A specific time step (time interval).steps::Int: The number of time stepsthreshold::Real: Determines the threshold for the Taylor series. Defaults to1.0e-6.nonzero_tol::Real: Strips elements smaller thannonzero_tolat 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" during the solving process.
For more details, please refer to FastExpm.jl
Returns
ADOs_list: The auxiliary density operators of each time step.
evolution(M, ados, Δt, steps; threshold, nonzero_tol, verbose, filename)Solve the time evolution for auxiliary density operators based on propagator (generated by FastExpm.jl) with initial state is given in the type of ADOs.
This method will return the time evolution of ADOs corresponds to tlist = 0 : Δt : (Δt * steps)
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM modelados::ADOs: initial auxiliary density operatorsΔt::Real: A specific time step (time interval).steps::Int: The number of time stepsthreshold::Real: Determines the threshold for the Taylor series. Defaults to1.0e-6.nonzero_tol::Real: Strips elements smaller thannonzero_tolat 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" during the solving process.
For more details, please refer to FastExpm.jl
Returns
ADOs_list: The auxiliary density operators of each time step.
evolution(M, ρ0, tlist; solver, reltol, abstol, maxiters, save_everystep, verbose, filename, SOLVEROptions...)Solve the time evolution for auxiliary density operators based on ordinary differential equations with initial state is given in the type of density-matrix (ρ0).
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM modelρ0: system initial state (density matrix)tlist::AbstractVector: Denote the specific time points to save the solution at, during the solving process.solver: solver in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-6.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-8.maxiters::Real: Maximum number of iterations before stopping. Default to1e5.save_everystep::Bool: Saves the result at every step. Defaults tofalse.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" during the solving process.SOLVEROptions: extra options for solver
For more details about solvers and extra options, please refer to DifferentialEquations.jl
Returns
ADOs_list: The auxiliary density operators in each time point.
evolution(M, ados, tlist; solver, reltol, abstol, maxiters, save_everystep, verbose, filename, SOLVEROptions...)Solve the time evolution for auxiliary density operators based on ordinary differential equations with initial state is given in the type of ADOs.
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM modelados::ADOs: initial auxiliary density operatorstlist::AbstractVector: Denote the specific time points to save the solution at, during the solving process.solver: solver in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-6.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-8.maxiters::Real: Maximum number of iterations before stopping. Default to1e5.save_everystep::Bool: Saves the result at every step. Defaults tofalse.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" during the solving process.SOLVEROptions: extra options for solver
For more details about solvers and extra options, please refer to DifferentialEquations.jl
Returns
ADOs_list: The auxiliary density operators in each time point.
evolution(M, ρ0, tlist, H, param; solver, reltol, abstol, maxiters, save_everystep, verbose, filename, SOLVEROptions...)Solve the time evolution for auxiliary density operators with time-dependent system Hamiltonian based on ordinary differential equations with initial state is given in the type of density-matrix (ρ0).
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM model (with time-independent system Hamiltonian)ρ0: system initial state (density matrix)tlist::AbstractVector: Denote the specific time points to save the solution at, during the solving process.H::Function: a function for time-dependent part of system Hamiltonian. The function will be called byH(param, t)and should return the time-dependent part system Hamiltonian matrix at timetwithAbstractMatrixtype.param::Tuple: the tuple of parameters which is used to callH(param, t)for the time-dependent system Hamiltonian. Default to empty tuple().solver: solver in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-6.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-8.maxiters::Real: Maximum number of iterations before stopping. Default to1e5.save_everystep::Bool: Saves the result at every step. Defaults tofalse.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" during the solving process.SOLVEROptions: extra options for solver
For more details about solvers and extra options, please refer to DifferentialEquations.jl
Returns
ADOs_list: The auxiliary density operators in each time point.
evolution(M, ados, tlist, H, param; solver, reltol, abstol, maxiters, save_everystep, verbose, filename, SOLVEROptions...)Solve the time evolution for auxiliary density operators with time-dependent system Hamiltonian based on ordinary differential equations with initial state is given in the type of ADOs.
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM model (with time-independent system Hamiltonian)ados::ADOs: initial auxiliary density operatorstlist::AbstractVector: Denote the specific time points to save the solution at, during the solving process.H::Function: a function for time-dependent part of system Hamiltonian. The function will be called byH(param, t)and should return the time-dependent part system Hamiltonian matrix at timetwithAbstractMatrixtype.param::Tuple: the tuple of parameters which is used to callH(param, t)for the time-dependent system Hamiltonian. Default to empty tuple().solver: solver in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-6.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-8.maxiters::Real: Maximum number of iterations before stopping. Default to1e5.save_everystep::Bool: Saves the result at every step. Defaults tofalse.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" during the solving process.SOLVEROptions: extra options for solver
For more details about solvers and extra options, please refer to DifferentialEquations.jl
Returns
ADOs_list: The auxiliary density operators in each time point.
Steady State
There are three function definitions of SteadyState, which depend on different input types and methods to solve the stationary state:
HierarchicalEOM.HeomAPI.SteadyState — FunctionSteadyState(M; 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: 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
For more details about solvers and extra options, please refer to LinearSolve.jl
Returns
::ADOs: The steady state of auxiliary density operators.
SteadyState(M, ρ0, tspan; solver, verbose, SOLVEROptions...)Solve the steady state of the auxiliary density operators based on time evolution (ordinary differential equations; SteadyStateDiffEq.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: system initial state (density matrix)tspan::Number: the time limit to find stationary state. Default toInfsolver: The ODE solvers in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-8.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-10.save_everystep::Bool: Saves the result at every step. Defaults tofalse.verbose::Bool: To display verbose output and progress bar during the process or not. Defaults totrue.SOLVEROptions: extra options for solver
For more details about solvers, and extra options, please refer to DifferentialEquations.jl
Returns
::ADOs: The steady state of auxiliary density operators.
SteadyState(M, ados, tspan; solver, verbose, SOLVEROptions...)Solve the steady state of the auxiliary density operators based on time evolution (ordinary differential equations; SteadyStateDiffEq.jl) with initial state is given in the type of ADOs.
Parameters
M::AbstractHEOMLSMatrix: the matrix given from HEOM model, where the parity should beEVEN.ados::ADOs: initial auxiliary density operatorstspan::Number: the time limit to find stationary state. Default toInfsolver: The ODE solvers in packageDifferentialEquations.jl. Default toDP5().reltol::Real: Relative tolerance in adaptive timestepping. Default to1.0e-8.abstol::Real: Absolute tolerance in adaptive timestepping. Default to1.0e-10.save_everystep::Bool: Saves the result at every step. Defaults tofalse.verbose::Bool: To display verbose output and progress bar during the process or not. Defaults totrue.SOLVEROptions: extra options for solver
For more details about solvers, and extra options, please refer to DifferentialEquations.jl
Returns
::ADOs: The steady state of auxiliary density operators.
Spectrum
HierarchicalEOM.Spectrum.spectrum — Functionspectrum(M, ρ, op, ωlist; solver, verbose, filename, SOLVEROptions...)This function has been deprecated start from HierarchicalEOM v1.1, use PowerSpectrum or DensityOfStates instead.
HierarchicalEOM.Spectrum.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 beEVENparity
To calculate spectrum when input operator Q_op has ODD-parity:
remember to set the parameters:
M::AbstractHEOMLSMatrix: should beODDparity
Parameters
M::AbstractHEOMLSMatrix: the HEOMLS matrix.ρ: the system density matrix or the auxiliary density operators.P_op: the system operator (orHEOMSuperOp) $P$ acting on the system.Q_op: 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: 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
For more details about solvers and extra options, please refer to LinearSolve.jl
Returns
spec::AbstractVector: the spectrum list corresponds to the specifiedωlist
HierarchicalEOM.Spectrum.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.ρ: the system density matrix or the auxiliary density operators.d_op: The annihilation operator ($d$ as shown above) acting on the fermionic system.ωlist::AbstractVector: the specific frequency points to solve.solver: 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
For more details about solvers and extra options, please refer to LinearSolve.jl
Returns
dos::AbstractVector: the list of density of states corresponds to the specifiedωlist
Misc.
HierarchicalEOM.HeomBase.versioninfo — MethodHierarchicalEOM.versioninfo(io::IO=stdout)Command line output of information on HierarchicalEOM, dependencies, and system informations.
The outputs will be something like the following:
using HierarchicalEOM
HierarchicalEOM.versioninfo()
__
/ \
__ __ __ \__/ __
| | | | / \ / \
| | | | ______ ______ \__/_ _\__/
| |___| |/ __ \ / __ \ / ' \/ \
| ___ | |__) | / \ | _ _ |
| | | | ____/| ( ) | / \ / \ |
| | | | |____ | \__/ | | | | | |
|__| |__|\______) \______/|__| |_| |_|
Julia framework for Hierarchical Equations of Motion
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Copyright © NCKU-QFORT 2022 and later.
Lead developer : Yi-Te Huang
Other developers:
Simon Cross, Neill Lambert, Po-Chen Kuo and Shen-Liang Yang
Package information:
====================================
HierarchicalEOM Ver. 1.6.0
LinearSolve Ver. 2.22.1
OrdinaryDiffEq Ver. 6.80.1
FastExpm Ver. 1.1.0
JLD2 Ver. 0.4.48
System information:
====================================
Julia Version: 1.10.4
OS : Linux (x86_64-linux-gnu)
CPU : 4 × AMD EPYC 7763 64-Core Processor
Memory : 15.606 GB
WORD_SIZE: 64
LIBM : libopenlibm
LLVM : libLLVM-15.0.7 (ORCJIT, znver3)
BLAS : libopenblas64_.so (ilp64)HierarchicalEOM.HeomBase.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() __
/ \
__ __ __ \__/ __
| | | | / \ / \
| | | | ______ ______ \__/_ _\__/
| |___| |/ __ \ / __ \ / ' \/ \
| ___ | |__) | / \ | _ _ |
| | | | ____/| ( ) | / \ / \ |
| | | | |____ | \__/ | | | | | |
|__| |__|\______) \______/|__| |_| |_|