Library API
Contents
Index
HierarchicalEOM.EVENHierarchicalEOM.ODDHierarchicalEOM.ADOsHierarchicalEOM.ADOsHierarchicalEOM.AbstractHEOMLSMatrixHierarchicalEOM.BosonBathHierarchicalEOM.BosonBathHierarchicalEOM.BosonBathHierarchicalEOM.EvenParityHierarchicalEOM.ExponentHierarchicalEOM.FermionBathHierarchicalEOM.FermionBathHierarchicalEOM.HEOMSuperOpHierarchicalEOM.HEOMSuperOpHierarchicalEOM.HEOMSuperOpHierarchicalEOM.HEOMSuperOpHierarchicalEOM.HierarchyDictHierarchicalEOM.M_BosonHierarchicalEOM.M_BosonHierarchicalEOM.M_Boson_FermionHierarchicalEOM.M_Boson_FermionHierarchicalEOM.M_FermionHierarchicalEOM.M_FermionHierarchicalEOM.M_SHierarchicalEOM.M_SHierarchicalEOM.MixHierarchyDictHierarchicalEOM.NvecHierarchicalEOM.OddParityHierarchicalEOM.TimeEvolutionHEOMSolHierarchicalEOM.bosonAbsorbHierarchicalEOM.bosonAbsorbHierarchicalEOM.bosonEmitHierarchicalEOM.bosonEmitHierarchicalEOM.bosonImagHierarchicalEOM.bosonImagHierarchicalEOM.bosonRealHierarchicalEOM.bosonRealHierarchicalEOM.bosonRealImagHierarchicalEOM.bosonRealImagHierarchicalEOM.fermionAbsorbHierarchicalEOM.fermionAbsorbHierarchicalEOM.fermionEmitHierarchicalEOM.fermionEmitBase.eltypeBase.eltypeBase.eltypeBase.lengthBase.sizeBase.sizeBase.sizeBase.sizeHierarchicalEOM.BosonBathRWAHierarchicalEOM.Boson_DrudeLorentz_MatsubaraHierarchicalEOM.Boson_DrudeLorentz_PadeHierarchicalEOM.Boson_Underdamped_MatsubaraHierarchicalEOM.DensityOfStatesHierarchicalEOM.Fermion_Lorentz_MatsubaraHierarchicalEOM.Fermion_Lorentz_PadeHierarchicalEOM.HEOMsolveHierarchicalEOM.HEOMsolve_mapHierarchicalEOM.PowerSpectrumHierarchicalEOM.PropagatorHierarchicalEOM.aboutHierarchicalEOM.addBosonDissipatorHierarchicalEOM.addFermionDissipatorHierarchicalEOM.addTerminatorHierarchicalEOM.citeHierarchicalEOM.correlation_functionHierarchicalEOM.getADOHierarchicalEOM.getIndexEnsembleHierarchicalEOM.getRhoHierarchicalEOM.print_logoHierarchicalEOM.versioninfoQuantumToolbox.correlation_2op_1tQuantumToolbox.correlation_2op_2tQuantumToolbox.correlation_3op_1tQuantumToolbox.correlation_3op_2tQuantumToolbox.expectQuantumToolbox.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 <: BathTermAn 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 <: 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.Nterm: the total number of different bath terms.δ: The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)
Methods
One can obtain the $k$-th 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 `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all terms
bath[:]; # returns a vector which contains all terms
from b in bath
# do something
endHierarchicalEOM.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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η_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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: 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.Nterm: the total number of different bath terms.δ: The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)
Methods
One can obtain the $k$-th 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 `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all terms
bath[:]; # returns a vector which contains all terms
from b in bath
# do something
endHierarchicalEOM.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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: 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.dimensions: the dimension list of the coupling operator (should be equal to the system dimensions).η: 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 <: AbstractParityHierarchicalEOM.OddParity — Typestruct OddParity <: AbstractParityHierarchicalEOM.EVEN — Constantconst EVEN = EvenParity()Label of even-parity
HierarchicalEOM.ODD — Constantconst ODD = OddParity()Label of odd-parity
HEOM Liouvillian superoperator matrices
HierarchicalEOM.HEOMSuperOp — Typestruct HEOMSuperOpGeneral HEOM superoperator matrix.
Fields
data: the HEOM superoperator matrixdimensions: the dimension list of the coupling operator (should be equal to the system dimensions).N: the number of auxiliary density operatorsparity: the parity label (EVENorODD).
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 beEVENorODD.refHEOMLS::AbstractHEOMLSMatrix: copy the systemdimensionsand 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 beEVENorODD.refADOs::ADOs: copy the systemdimensionsand 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 beEVENorODD.dims: the dimension list of the coupling operator (should be equal to the systemdimensions).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 <: 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<:AbstractSciMLOperator: the matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the hierarchy, which equals to0in this casedimensions: the dimension list of the coupling operator (should be equal to the system dimensions).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 asODDfor 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 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.M_Boson — Typestruct M_Boson <: AbstractHEOMLSMatrixHEOM Liouvillian superoperator matrix for bosonic bath
Fields
data<:AbstractSciMLOperator: the matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the bosonic hierarchydimensions: the dimension list of the coupling operator (should be equal to the system dimensions).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 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.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 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.M_Fermion — Typestruct M_Fermion <: AbstractHEOMLSMatrixHEOM Liouvillian superoperator matrix for fermionic bath
Fields
data<:AbstractSciMLOperator: the matrix of HEOM Liouvillian superoperatortier: the tier (cutoff level) for the fermionic hierarchydimensions: the dimension list of the coupling operator (should be equal to the system dimensions).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 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.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 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.M_Boson_Fermion — Typestruct M_Boson_Fermion <: AbstractHEOMLSMatrixHEOM 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 hierarchydimensions: the dimension list of the coupling operator (should be equal to the system dimensions).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 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.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 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.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.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 ADOsThe Auxiliary Density Operators for HEOM model.
Fields
data: the vectorized auxiliary density operatorsdimensions: the dimension list of the coupling operator (should be equal to the system dimensions).N: the number of auxiliary density operatorsparity: the parity label (EVENorODD).
For a given ados::ADOs, ados.dims or getproperty(ados, :dims) returns its dimensions in the type of integer-vector.
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.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 (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.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 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.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.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.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 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)
heomsolve(M, ρ0, Δt, steps; e_ops, threshold, nonzero_tol, verbose)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_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.
Notes
- The
ADOswill be saved depend on the keyword argumente_ops. - If
e_opsis specified, the solution will only save the finalADOs, otherwise, it will save all theADOscorresponding 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, alg, H_t, params, progress_bar, inplace, kwargs...)
heomsolve(M, ρ0, tlist; e_ops, alg, H_t, params, progress_bar, inplace, kwargs...)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.alg::OrdinaryDiffEqAlgorithm: The solving algorithm 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 aNamedTupleorAbstractVectorof parameters. For more advanced usage, any custom struct can be used.progress_bar::Union{Val,Bool}: Whether to show the progress bar. Defaults toVal(true). Using non-Valtypes might lead to type instabilities.inplace::Union{Val,Bool}: Whether to use the inplace version of the ODEProblem. Defaults toVal(true).kwargs: The keyword arguments for theODEProblem.
Notes
- The
ADOswill be saved depend on the keyword argumentsaveatinkwargs. - If
e_opsis specified, the default value ofsaveat=[tlist[end]](only save the finalADOs), otherwise,saveat=tlist(saving theADOscorresponding totlist). You can also specifye_opsandsaveatseparately. - The default tolerances in
kwargsare given asreltol=1e-6andabstol=1e-8. - For more details about
algplease refer toDifferentialEquations.jl(ODE Solvers) - For more details about
kwargsplease refer toDifferentialEquations.jl(Keyword Arguments)
Returns
- sol::TimeEvolutionHEOMSol : The solution of the hierarchical EOM. See also
TimeEvolutionHEOMSol
HierarchicalEOM.HEOMsolve_map — FunctionHEOMsolve_map(M, ρ0, tlist; e_ops, alg, ensemblealg, H_t, params, progress_bar, kwargs...)
heomsolve_map(M, ρ0, tlist; e_ops, alg, ensemblealg, H_t, params, progress_bar, kwargs...)Solve the time evolution for auxiliary density operators with multiple initial states and parameter sets using ensemble simulation.
This function computes the time evolution for all combinations (Cartesian product) of initial states and parameter sets, solving the HEOM (see HEOMsolve) for each combination in the ensemble.
Arguments
M::AbstractHEOMLSMatrix: the matrix given from HEOM modelρ0::AbstractVector{<:Union{QuantumObject,ADOs}}: system initial state(s) [the elements can be density matrix orADOs].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.alg::OrdinaryDiffEqAlgorithm: The solving algorithm in packageDifferentialEquations.jl. Default toDP5().ensemblealg::EnsembleAlgorithm: Ensemble algorithm to use for parallel computation. Default isEnsembleThreads().H_t::Union{Nothing,QuantumObjectEvolution}: The time-dependent system Hamiltonian or Liouvillian. Default tonothing.params::Union{NullParameters,Tuple}: ATupleof parameter sets. Each element should be anAbstractVectorrepresenting the sweep range for that parameter. The function will solve for all combinations of initial states and parameter sets.progress_bar::Union{Val,Bool}: Whether to show the progress bar. Default toVal(true). Using non-Valtypes might lead to type instabilities.kwargs: The keyword arguments for theODEProblem.
Notes
- The function returns an array of solutions with dimensions matching the Cartesian product of initial states and parameter sets.
- If
ρ0is a vector with lengthm, andparams = (p1, p2, ...)wherep1has lengthn1,p2has lengthn2, etc., the output will be of size(m, n1, n2, ...). - See
HEOMsolvefor more details.
Returns
- An array of
TimeEvolutionHEOMSolobjects with dimensions(length(ρ0), length(params[1]), length(params[2]), ...).
HierarchicalEOM.TimeEvolutionHEOMSol — Typestruct TimeEvolutionHEOMSolA 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 list of time points at which the expectation values are calculated during the evolution.times_ados::AbstractVector: The list of time points at which theADOsare stored during the evolution.ados::Vector{ADOs}: The list of resultADOscorresponding to each time point intimes_ados.expect::Union{AbstractMatrix,Nothing}: 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; alg, verbose, kwargs...)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.alg::SciMLLinearSolveAlgorithm: The solving algorithm in packageLinearSolve.jl. Default toKrylovJL_GMRES(rtol=1e-12, atol=1e-14).verbose::Bool: To display verbose output and progress bar during the process or not. Defaults totrue.kwargs: The keyword arguments for theLinearProblem
Notes
- For more details about
alg,kwargs, andLinearProblem, please refer toLinearSolve.jl
Returns
::ADOs: The steady state of auxiliary density operators.
steadystate(M::AbstractHEOMLSMatrix, ρ0, tspan; alg, verbose, kwargs...)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 toInfalg::OrdinaryDiffEqAlgorithm: The ODE algorithm in packageDifferentialEquations.jl. Default toDP5().verbose::Bool: To display verbose output and progress bar during the process or not. Defaults totrue.kwargs: The keyword arguments inODEProblem
Notes
- For more details about
algplease refer toDifferentialEquations.jl(ODE Solvers) - For more details about
kwargsplease refer toDifferentialEquations.jl(Keyword Arguments)
Returns
::ADOs: The steady state of auxiliary density operators.
Correlation Functions and Spectrum
QuantumToolbox.correlation_3op_2t — Functioncorrelation_3op_2t(
M::AbstractHEOMLSMatrix,
state::Union{QuantumObject,ADOs},
tlist::AbstractVector,
τlist::AbstractVector,
A::QuantumObject{Operator},
B::QuantumObject{Operator},
C::QuantumObject{Operator};
kwargs...,
)Returns the two-times correlation function of three operators $\hat{A}$, $\hat{B}$ and $\hat{C}$: $\left\langle \hat{A}(t) \hat{B}(t + \tau) \hat{C}(t) \right\rangle$ for a given state using HEOM approach.
QuantumToolbox.correlation_3op_1t — Functioncorrelation_3op_1t(
M::AbstractHEOMLSMatrix,
state::Union{QuantumObject,ADOs},
τlist::AbstractVector,
A::QuantumObject{Operator},
B::QuantumObject{Operator},
C::QuantumObject{Operator};
kwargs...,
)Returns the two-time correlation function (with only one time coordinate $\tau$) of three operators $\hat{A}$, $\hat{B}$ and $\hat{C}$: $\left\langle \hat{A}(0) \hat{B}(\tau) \hat{C}(0) \right\rangle$ for a given state using HEOM approach.
QuantumToolbox.correlation_2op_2t — Functioncorrelation_2op_2t(
M::AbstractHEOMLSMatrix,
state::Union{QuantumObject,ADOs},
tlist::AbstractVector,
τlist::AbstractVector,
A::QuantumObject{Operator},
B::QuantumObject{Operator};
reverse::Bool = false,
kwargs...,
)Returns the two-times correlation function of two operators $\hat{A}$ and $\hat{B}$ : $\left\langle \hat{A}(t + \tau) \hat{B}(t) \right\rangle$ for a given state using HEOM approach.
When reverse=true, the correlation function is calculated as $\left\langle \hat{A}(t) \hat{B}(t + \tau) \right\rangle$.
QuantumToolbox.correlation_2op_1t — Functioncorrelation_2op_1t(
M::AbstractHEOMLSMatrix,
state::Union{QuantumObject,ADOs},
τlist::AbstractVector,
A::QuantumObject{Operator},
B::QuantumObject{Operator};
reverse::Bool = false,
kwargs...,
)Returns the two-time correlation function (with only one time coordinate $\tau$) of two operators $\hat{A}$ and $\hat{B}$ : $\left\langle \hat{A}(\tau) \hat{B}(0) \right\rangle$ for a given state using HEOM approach.
When reverse=true, the correlation function is calculated as $\left\langle \hat{A}(0) \hat{B}(\tau) \right\rangle$.
HierarchicalEOM.PowerSpectrum — FunctionPowerSpectrum(M, ρ, Q_op, ωlist, reverse; alg, verbose, filename, kwargs...)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; alg, verbose, filename, kwargs...)
PowerSpectrum(M, ρ, P_op, Q_op, ωlist, reverse; alg, verbose, filename, kwargs...)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.ρ::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.alg::SciMLLinearSolveAlgorithm: The solving algorithm in packageLinearSolve.jl. Default toKrylovJL_GMRES(rtol=1e-12, atol=1e-14).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.kwargs: The keyword arguments forLinearProblem.
Notes
- For more details about
alg,kwargs, andLinearProblem, please refer toLinearSolve.jl
Returns
spec::AbstractVector: the spectrum list corresponds to the specifiedωlist
HierarchicalEOM.DensityOfStates — FunctionDensityOfStates(M, ρ, d_op, ωlist; alg, verbose, filename, kwargs...)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.alg::SciMLLinearSolveAlgorithm: The solving algorithm in packageLinearSolve.jl. Default toKrylovJL_GMRES(rtol=1e-12, atol=1e-14).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.kwargs: The keyword arguments forLinearProblem.
Notes
- For more details about
alg,kwargs, andLinearProblem, 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, same as HierarchicalEOM.about.
HierarchicalEOM.about — MethodHierarchicalEOM.about(io::IO=stdout)Command line output of information on HierarchicalEOM, dependencies, and system information, same as HierarchicalEOM.versioninfo.
HierarchicalEOM.cite — MethodHierarchicalEOM.cite(io::IO = stdout)Command line output of citation information and bibtex generator for HierarchicalEOM.jl.
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.12.0
HierarchicalEOM Ver. 2.8.0
QuantumToolbox Ver. 0.37.0
SciMLOperators Ver. 1.9.0
LinearSolve Ver. 3.43.0
OrdinaryDiffEqCore Ver. 1.36.0
System information:
====================================
OS : Linux (x86_64-linux-gnu)
CPU : 4 × AMD EPYC 7763 64-Core Processor
Memory : 15.621 GB
WORD_SIZE: 64
LIBM : libopenlibm
LLVM : libLLVM-18.1.7 (ORCJIT, znver3)
BLAS : libopenblas64_.so (ilp64)
Threads : 1 (on 4 virtual cores)
+----------------------------------------------------+
| Please cite HierarchicalEOM.jl in your publication |
+----------------------------------------------------+
For your convenience, a bibtex reference can be easily generated using `HierarchicalEOM.cite()`.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() __
/ \
__ __ __ \__/ __
| | | | / \ / \
| | | | ______ ______ \__/_ _\__/
| |___| |/ __ \ / __ \ / ' \/ \
| ___ | |__) | / \ | _ _ |
| | | | ____/| ( ) | / \ / \ |
| | | | |____ | \__/ | | | | | |
|__| |__|\______) \______/|__| |_| |_|