Library API

Contents

Index

Bath Module

HierarchicalEOM.correlation_functionFunction
correlation_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.
source
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.
source
HierarchicalEOM.ExponentType
struct Exponent

An object which describes a single exponential-expansion term (naively, an excitation mode) within the decomposition of the bath correlation functions.

The expansion of a bath correlation function can be expressed as : $C(t) = \sum_i \eta_i \exp(-\gamma_i t)$.

Fields

  • op::QuantumObject : The system coupling operator according to system-bath interaction.
  • η::Number : the coefficient $\eta_i$ in bath correlation function.
  • γ::Number : the coefficient $\gamma_i$ in bath correlation function.
  • types::String : The type-tag of the exponent.

The different types of the Exponent:

  • "bR" : from real part of bosonic correlation function $C^{u=\textrm{R}}(t)$
  • "bI" : from imaginary part of bosonic correlation function $C^{u=\textrm{I}}(t)$
  • "bRI" : from combined (real and imaginary part) bosonic bath correlation function $C(t)$
  • "bA" : from absorption bosonic correlation function $C^{\nu=+}(t)$
  • "bE" : from emission bosonic correlation function $C^{\nu=-}(t)$
  • "fA" : from absorption fermionic correlation function $C^{\nu=+}(t)$
  • "fE" : from emission fermionic correlation function $C^{\nu=-}(t)$
source
HierarchicalEOM.BosonBathType
struct BosonBath <: AbstractBath

An object which describes the interaction between system and bosonic bath

Fields

  • bath : the different boson-bath-type objects which describes the interaction between system and bosonic bath
  • op : The system coupling operator, must be Hermitian and, for fermionic systems, even-parity to be compatible with charge conservation.
  • Nterm : the number of exponential-expansion term of correlation functions
  • δ : The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)

Methods

One can obtain the $k$-th exponent (exponential-expansion term) from bath::BosonBath by calling : bath[k]. HierarchicalEOM.jl also supports the following calls (methods) :

bath[1:k];   # returns a vector which contains the exponents from the `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all the exponential-expansion terms
bath[:];     # returns a vector which contains all the exponential-expansion terms
from b in bath
    # do something
end
source
HierarchicalEOM.BosonBathMethod
BosonBath(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 to 0.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 to true.
source
HierarchicalEOM.BosonBathMethod
BosonBath(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 to 0.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 to true.
source
HierarchicalEOM.bosonRealType
struct bosonReal <: AbstractBosonBath

A bosonic bath for the real part of bath correlation function $C^{u=\textrm{R}}$

Fields

  • Comm : the super-operator (commutator) for the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.
  • γ : the coefficients $\gamma_i$ in real part of bath correlation function $C^{u=\textrm{R}}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.bosonRealMethod
bosonReal(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}}$.
source
HierarchicalEOM.bosonImagType
struct bosonImag <: AbstractBosonBath

A bosonic bath for the imaginary part of bath correlation function $C^{u=\textrm{I}}$

Fields

  • Comm : the super-operator (commutator) for the coupling operator.
  • anComm : the super-operator (anti-commutator) for the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.
  • γ : the coefficients $\gamma_i$ in imaginary part of bath correlation function $C^{u=\textrm{I}}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.bosonImagMethod
bosonImag(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}}$.
source
HierarchicalEOM.bosonRealImagType
struct bosonRealImag <: AbstractBosonBath

A bosonic bath which the real part and imaginary part of the bath correlation function are combined

Fields

  • Comm : the super-operator (commutator) for the coupling operator.
  • anComm : the super-operator (anti-commutator) for the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η_real : the real part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.
  • η_imag : the imaginary part of coefficients $\eta_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.
  • γ : the coefficients $\gamma_i$ in bath correlation function $\sum_i \eta_i \exp(-\gamma_i t)$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.bosonRealImagMethod
bosonRealImag(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)$.
source
HierarchicalEOM.BosonBathRWAFunction
BosonBathRWA(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 to 0.0) which is used for adding the terminator to HEOMLS matrix (see function: addTerminator)
source
HierarchicalEOM.bosonAbsorbType
struct bosonAbsorb <: AbstractBosonBath

An bath object which describes the absorption process of the bosonic system by a correlation function $C^{\nu=+}$

Fields

  • spre : the super-operator (left side operator multiplication) for the coupling operator.
  • spost : the super-operator (right side operator multiplication) for the coupling operator.
  • CommD : the super-operator (commutator) for the adjoint of the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
  • γ : the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.
  • η_emit : the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.bosonAbsorbMethod
bosonAbsorb(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=-}$.
source
HierarchicalEOM.bosonEmitType
struct bosonEmit <: AbstractBosonBath

An bath object which describes the emission process of the bosonic system by a correlation function $C^{\nu=-}$

Fields

  • spre : the super-operator (left side operator multiplication) for the coupling operator.
  • spost : the super-operator (right side operator multiplication) for the coupling operator.
  • CommD : the super-operator (commutator) for the adjoint of the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
  • γ : the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.
  • η_absorb : the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.bosonEmitMethod
bosonEmit(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=+}$.
source
HierarchicalEOM.FermionBathType
struct FermionBath <: AbstractBath

An object which describes the interaction between system and fermionic bath

Fields

  • bath : the different fermion-bath-type objects which describes the interaction
  • op : The system "emission" operator according to the system-fermionic-bath interaction.
  • Nterm : the number of exponential-expansion term of correlation functions
  • δ : The approximation discrepancy which is used for adding the terminator to HEOM matrix (see function: addTerminator)

Methods

One can obtain the $k$-th exponent (exponential-expansion term) from bath::FermionBath by calling : bath[k]. HierarchicalEOM.jl also supports the following calls (methods) :

bath[1:k];   # returns a vector which contains the exponents from the `1`-st to the `k`-th term.
bath[1:end]; # returns a vector which contains all the exponential-expansion terms
bath[:];     # returns a vector which contains all the exponential-expansion terms
from b in bath
    # do something
end
source
HierarchicalEOM.FermionBathMethod
FermionBath(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 to 0.0) which is used for adding the terminator to HEOMLS matrix (see function: addTerminator)
source
HierarchicalEOM.fermionAbsorbType
struct fermionAbsorb <: AbstractFermionBath

An bath object which describes the absorption process of the fermionic system by a correlation function $C^{\nu=+}$

Fields

  • spre : the super-operator (left side operator multiplication) for the coupling operator.
  • spost : the super-operator (right side operator multiplication) for the coupling operator.
  • spreD : the super-operator (left side operator multiplication) for the adjoint of the coupling operator.
  • spostD : the super-operator (right side operator multiplication) for the adjoint of the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
  • γ : the coefficients $\gamma_i$ of absorption bath correlation function $C^{\nu=+}$.
  • η_emit : the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.fermionAbsorbMethod
fermionAbsorb(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=-}$.
source
HierarchicalEOM.fermionEmitType
struct fermionEmit <: AbstractFermionBath

An bath object which describes the emission process of the fermionic system by a correlation function $C^{\nu=-}$

Fields

  • spre : the super-operator (left side operator multiplication) for the coupling operator.
  • spost : the super-operator (right side operator multiplication) for the coupling operator.
  • spreD : the super-operator (left side operator multiplication) for the adjoint of the coupling operator.
  • spostD : the super-operator (right side operator multiplication) for the adjoint of the coupling operator.
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • η : the coefficients $\eta_i$ of emission bath correlation function $C^{\nu=-}$.
  • γ : the coefficients $\gamma_i$ of emission bath correlation function $C^{\nu=-}$.
  • η_absorb : the coefficients $\eta_i$ of absorption bath correlation function $C^{\nu=+}$.
  • Nterm : the number of exponential-expansion term of correlation function
source
HierarchicalEOM.fermionEmitMethod
fermionEmit(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=+}$.
source

Bath Correlation Functions

HierarchicalEOM.Boson_DrudeLorentz_MatsubaraFunction
Boson_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
source
HierarchicalEOM.Boson_DrudeLorentz_PadeFunction
Boson_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
source
HierarchicalEOM.Boson_Underdamped_MatsubaraFunction
Boson_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
source
HierarchicalEOM.Fermion_Lorentz_MatsubaraFunction
Fermion_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
source
HierarchicalEOM.Fermion_Lorentz_PadeFunction
Fermion_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
source

Parity

HEOM Liouvillian superoperator matrices

HierarchicalEOM.HEOMSuperOpType
struct HEOMSuperOp

General HEOM superoperator matrix.

Fields

  • data<:Union{AbstractSparseMatrix} : the HEOM superoperator matrix
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of auxiliary density operators
  • parity: the parity label (EVEN or ODD).
source
HierarchicalEOM.HEOMSuperOpMethod
HEOMSuperOp(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 all ADOs.
  • opParity::AbstractParity : the parity label of the given operator (op), should be EVEN or ODD.
  • refHEOMLS::AbstractHEOMLSMatrix : copy the system dims and number of ADOs (N) from this reference HEOMLS matrix
source
HierarchicalEOM.HEOMSuperOpMethod
HEOMSuperOp(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 all ADOs.
  • opParity::AbstractParity : the parity label of the given operator (op), should be EVEN or ODD.
  • refADOs::ADOs : copy the system dims and number of ADOs (N) from this reference ADOs
source
HierarchicalEOM.HEOMSuperOpMethod
HEOMSuperOp(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 all ADOs.
  • opParity::AbstractParity : the parity label of the given operator (op), should be EVEN or ODD.
  • dims::SVector : the dimension list of the coupling operator (should be equal to the system dims).
  • N::Int : the number of ADOs.
source
HierarchicalEOM.AbstractHEOMLSMatrixType
(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.
source
HierarchicalEOM.M_SType
struct M_S <: AbstractHEOMLSMatrix

HEOM Liouvillian superoperator matrix with cutoff level of the hierarchy equals to 0. This corresponds to the standard Schrodinger (Liouville-von Neumann) equation, namely

\[M[\cdot]=-i \left[H_{sys}, \cdot \right]_-,\]

where $[\cdot, \cdot]_-$ stands for commutator.

Fields

  • data<:AbstractSciMLOperator : the matrix of HEOM Liouvillian superoperator
  • tier : the tier (cutoff level) for the hierarchy, which equals to 0 in this case
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of total ADOs, which equals to 1 (only the reduced density operator) in this case
  • sup_dim : the dimension of system superoperator
  • parity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
source
HierarchicalEOM.M_SType
M_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 Liouvillian
  • parity::AbstractParity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • verbose::Bool : To display verbose output during the process or not. Defaults to true.

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.

source
HierarchicalEOM.M_BosonType
struct M_Boson <: AbstractHEOMLSMatrix

HEOM Liouvillian superoperator matrix for bosonic bath

Fields

  • data<:AbstractSciMLOperator : the matrix of HEOM Liouvillian superoperator
  • tier : the tier (cutoff level) for the bosonic hierarchy
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of total ADOs
  • sup_dim : the dimension of system superoperator
  • parity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • bath::Vector{BosonBath} : the vector which stores all BosonBath objects
  • hierarchy::HierarchyDict: the object which contains all dictionaries for boson-bath-ADOs hierarchy.
source
HierarchicalEOM.M_BosonType
M_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 Liouvillian
  • tier::Int : the tier (cutoff level) for the bosonic bath
  • Bath::Vector{BosonBath} : objects for different bosonic baths
  • parity::AbstractParity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • threshold::Real : The threshold of the importance value (see Ref. [1]). Defaults to 0.0.
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.

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.

[1] Phys. Rev. B 88, 235426 (2013)

source
HierarchicalEOM.M_FermionType
struct M_Fermion <: AbstractHEOMLSMatrix

HEOM Liouvillian superoperator matrix for fermionic bath

Fields

  • data<:AbstractSciMLOperator : the matrix of HEOM Liouvillian superoperator
  • tier : the tier (cutoff level) for the fermionic hierarchy
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of total ADOs
  • sup_dim : the dimension of system superoperator
  • parity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • bath::Vector{FermionBath} : the vector which stores all FermionBath objects
  • hierarchy::HierarchyDict: the object which contains all dictionaries for fermion-bath-ADOs hierarchy.
source
HierarchicalEOM.M_FermionType
M_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 Liouvillian
  • tier::Int : the tier (cutoff level) for the fermionic bath
  • Bath::Vector{FermionBath} : objects for different fermionic baths
  • parity::AbstractParity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • threshold::Real : The threshold of the importance value (see Ref. [1]). Defaults to 0.0.
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.

[1] Phys. Rev. B 88, 235426 (2013)

source
HierarchicalEOM.M_Boson_FermionType
struct M_Boson_Fermion <: AbstractHEOMLSMatrix

HEOM Liouvillian superoperator matrix for mixtured (bosonic and fermionic) bath

Fields

  • data<:AbstractSciMLOperator : the matrix of HEOM Liouvillian superoperator
  • Btier : the tier (cutoff level) for bosonic hierarchy
  • Ftier : the tier (cutoff level) for fermionic hierarchy
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of total ADOs
  • sup_dim : the dimension of system superoperator
  • parity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • Bbath::Vector{BosonBath} : the vector which stores all BosonBath objects
  • Fbath::Vector{FermionBath} : the vector which stores all FermionBath objects
  • hierarchy::MixHierarchyDict: the object which contains all dictionaries for mixed-bath-ADOs hierarchy.
source
HierarchicalEOM.M_Boson_FermionType
M_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 Liouvillian
  • Btier::Int : the tier (cutoff level) for the bosonic bath
  • Ftier::Int : the tier (cutoff level) for the fermionic bath
  • Bbath::Vector{BosonBath} : objects for different bosonic baths
  • Fbath::Vector{FermionBath} : objects for different fermionic baths
  • parity::AbstractParity : the parity label of the operator which HEOMLS is acting on (usually EVEN, only set as ODD for calculating spectrum of fermionic system).
  • threshold::Real : The threshold of the importance value (see Ref. [1, 2]). Defaults to 0.0.
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.

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)

source
Base.sizeMethod
size(M::HEOMSuperOp)

Returns the size of the HEOM superoperator matrix

source
Base.sizeMethod
size(M::HEOMSuperOp, dim::Int)

Returns the specified dimension of the HEOM superoperator matrix

source
Base.sizeMethod
size(M::AbstractHEOMLSMatrix)

Returns the size of the HEOM Liouvillian superoperator matrix

source
Base.sizeMethod
size(M::AbstractHEOMLSMatrix, dim::Int)

Returns the specified dimension of the HEOM Liouvillian superoperator matrix

source
Base.eltypeMethod
eltype(M::HEOMSuperOp)

Returns the elements' type of the HEOM superoperator matrix

source
Base.eltypeMethod
eltype(M::AbstractHEOMLSMatrix)

Returns the elements' type of the HEOM Liouvillian superoperator matrix

source
HierarchicalEOM.PropagatorFunction
Propagator(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 to 1.0e-6.
  • nonzero_tol::Real : Strips elements smaller than nonzero_tol at each computation step to preserve sparsity. Defaults to 1.0e-14.

For more details, please refer to FastExpm.jl

Returns

  • ::SparseMatrixCSC{ComplexF64, Int64} : the propagator matrix
source
HierarchicalEOM.addBosonDissipatorFunction
addBosonDissipator(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 model
  • jumpOP::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
source
HierarchicalEOM.addFermionDissipatorFunction
addFermionDissipator(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 model
  • jumpOP::AbstractVector : The list of collapse (jump) operators to add. Defaults to empty vector [].

Return

  • M_new::AbstractHEOMLSMatrix : the new HEOM Liouvillian superoperator matrix
source
HierarchicalEOM.addTerminatorFunction
addTerminator(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 model
  • Bath::Union{BosonBath, FermionBath} : The bath object which contains the approximation discrepancy δ

Return

  • M_new::AbstractHEOMLSMatrix : the new HEOM Liouvillian superoperator matrix
source

Auxiliary Density Operators (ADOs)

HierarchicalEOM.ADOsType
struct ADOs

The Auxiliary Density Operators for HEOM model.

Fields

  • data : the vectorized auxiliary density operators
  • dims : the dimension list of the coupling operator (should be equal to the system dims).
  • N : the number of auxiliary density operators
  • parity: the parity label (EVEN or ODD).

Methods

One can obtain the density matrix for specific index (idx) by calling : ados[idx]. HierarchicalEOM.jl also supports the following calls (methods) :

length(ados);  # returns the total number of `ADOs`
ados[1:idx];   # returns a vector which contains the `ADO` (in matrix form) from index `1` to `idx`
ados[1:end];   # returns a vector which contains all the `ADO` (in matrix form)
ados[:];       # returns a vector which contains all the `ADO` (in matrix form)
for rho in ados  # iteration
    # do something
end
source
HierarchicalEOM.ADOsMethod
ADOs(V, N, parity)

Generate the object of auxiliary density operators for HEOM model.

Parameters

  • V::AbstractVector : the vectorized auxiliary density operators
  • N::Int : the number of auxiliary density operators.
  • parity::AbstractParity : the parity label (EVEN or ODD). Default to EVEN.
source
Base.lengthMethod
length(A::ADOs)

Returns the total number of the Auxiliary Density Operators (ADOs)

source
Base.eltypeMethod
eltype(A::ADOs)

Returns the elements' type of the Auxiliary Density Operators (ADOs)

source
HierarchicalEOM.getRhoFunction
getRho(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
source
HierarchicalEOM.getADOFunction
getADO(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 model
  • idx::Int : the index of the auxiliary density operator

Returns

  • ρ_idx::QuantumObject : The auxiliary density operator
source
QuantumToolbox.expectFunction
expect(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 value
  • ados::ADOs : the auxiliary density operators for HEOM model
  • take_real::Bool : whether to automatically take the real part of the trace or not. Default to true

Returns

  • exp_val : The expectation value
source
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 value
  • ados_list::Vector{ADOs} : the list of auxiliary density operators for HEOM model
  • take_real::Bool : whether to automatically take the real part of the trace or not. Default to true

Returns

  • exp_val : The expectation value
source

Hierarchy Dictionary

HierarchicalEOM.NvecType
struct Nvec

An object which describes the repetition number of each multi-index ensembles in auxiliary density operators.

The n_vector ($\vec{n}$) denotes a set of integers:

\[\{ n_{1,1}, ..., n_{\alpha, k}, ... \}\]

associated with the $k$-th exponential-expansion term in the $\alpha$-th bath. If $n_{\alpha, k} = 3$ means that the multi-index ensemble $\{\alpha, k\}$ appears three times in the multi-index vector of ADOs (see the notations in our paper).

The hierarchy level ($L$) for an n_vector is given by $L=\sum_{\alpha, k} n_{\alpha, k}$

Fields

  • data : the n_vector
  • level : The level L for the n_vector

Methods

One can obtain the repetition number for specific index (idx) by calling : n_vector[idx]. To obtain the corresponding tuple $(\alpha, k)$ for a given index idx, see bathPtr in HierarchyDict for more details.

HierarchicalEOM.jl also supports the following calls (methods) :

length(n_vector);  # returns the length of `Nvec`
n_vector[1:idx];   # returns a vector which contains the excitation number of `n_vector` from index `1` to `idx`
n_vector[1:end];   # returns a vector which contains all the excitation number of `n_vector`
n_vector[:];       # returns a vector which contains all the excitation number of `n_vector`
from n in n_vector  # iteration
    # do something
end
source
HierarchicalEOM.HierarchyDictType
struct HierarchyDict <: AbstractHierarchyDict

An object which contains all dictionaries for pure (bosonic or fermionic) bath-ADOs hierarchy.

Fields

  • idx2nvec : Return the Nvec from a given index of ADO
  • nvec2idx : Return the index of ADO from a given Nvec
  • lvl2idx : Return the list of ADO-indices from a given hierarchy level
  • bathPtr : Records the tuple $(\alpha, k)$ for each position in Nvec, where $\alpha$ and $k$ represents the $k$-th exponential-expansion term of the $\alpha$-th bath.
source
HierarchicalEOM.MixHierarchyDictType
struct MixHierarchyDict <: AbstractHierarchyDict

An object which contains all dictionaries for mixed (bosonic and fermionic) bath-ADOs hierarchy.

Fields

  • idx2nvec : Return the tuple (Nvec_b, Nvec_f) from a given index of ADO, where b represents boson and f represents fermion
  • nvec2idx : Return the index from a given tuple (Nvec_b, Nvec_f), where b represents boson and f represents fermion
  • Blvl2idx : Return the list of ADO-indices from a given bosonic-hierarchy level
  • Flvl2idx : Return the list of ADO-indices from a given fermionic-hierarchy level
  • bosonPtr : Records the tuple $(\alpha, k)$ for each position in Nvec_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 in Nvec_f, where $\alpha$ and $k$ represents the $k$-th exponential-expansion term of the $\alpha$-th fermionic bath.
source
HierarchicalEOM.getIndexEnsembleFunction
getIndexEnsemble(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

Returns

  • Vector{Tuple{Int, Int, Int}}: a vector (list) of the tuples $(\alpha, k, n)$.

Example

Here is an example to use Bath, Exponent, HierarchyDict, and getIndexEnsemble together:

L::M_Fermion;          # suppose this is a fermion type of HEOM Liouvillian superoperator matrix you create
HDict = L.hierarchy;   # the hierarchy dictionary
ados = SteadyState(L); # the stationary state (ADOs) for L 

# Let's consider all the ADOs for first level
idx_list = HDict.lvl2idx[1];

for idx in idx_list
    ρ1 = ados[idx]  # one of the 1st-level ADO
    nvec = HDict.idx2nvec[idx]  # the nvec corresponding to ρ1
    
    for (α, k, n) in getIndexEnsemble(nvec, HDict.bathPtr)
        α  # index of the bath
        k  # the index of the exponential-expansion term in α-th bath
        n  # the repetition number of the ensemble {α, k} in ADOs
        exponent = L.bath[α][k]  # the k-th exponential-expansion term in α-th bath

        # do some calculations you want
    end
end
source

Time Evolution

There are two function definitions of HEOMsolve, which depend on different methods to solve the time evolution:

HierarchicalEOM.HEOMsolveFunction
HEOMsolve(M, ρ0, Δt, steps; e_ops, threshold, nonzero_tol, verbose, filename)

Solve the time evolution for auxiliary density operators based on propagator (generated by FastExpm.jl).

Parameters

  • M::AbstractHEOMLSMatrix : the matrix given from HEOM model
  • ρ0::Union{QuantumObject,ADOs} : system initial state (density matrix) or initial auxiliary density operators (ADOs)
  • Δt::Real : A specific time step (time interval).
  • steps::Int : The number of time steps
  • e_ops::Union{Nothing,AbstractVector}: List of operators for which to calculate expectation values.
  • threshold::Real : Determines the threshold for the Taylor series. Defaults to 1.0e-6.
  • nonzero_tol::Real : Strips elements smaller than nonzero_tol at each computation step to preserve sparsity. Defaults to 1.0e-14.
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • filename::String : If filename was specified, the ADOs at each time point will be saved into the JLD2 file "filename.jld2" after the solving process.

Notes

  • The ADOs will be saved depend on the keyword argument e_ops.
  • If e_ops is specified, the solution will only save the final ADOs, otherwise, it will save all the ADOs corresponding to tlist = 0:Δt:(Δt * steps).
  • For more details of the propagator, please refer to FastExpm.jl

Returns

source
HEOMsolve(M, ρ0, tlist; e_ops, solver, H_t, params, verbose, filename, SOLVEROptions...)

Solve the time evolution for auxiliary density operators based on ordinary differential equations.

Parameters

  • M::AbstractHEOMLSMatrix : the matrix given from HEOM model
  • ρ0::Union{QuantumObject,ADOs} : system initial state (density matrix) or initial auxiliary density operators (ADOs)
  • tlist::AbstractVector : Denote the specific time points to save the solution at, during the solving process.
  • e_ops::Union{Nothing,AbstractVector}: List of operators for which to calculate expectation values.
  • solver::OrdinaryDiffEqAlgorithm : solver in package DifferentialEquations.jl. Default to DP5().
  • H_t::Union{Nothing,QuantumObjectEvolution}: The time-dependent system Hamiltonian or Liouvillian. Default to nothing.
  • params: Parameters to pass to the solver. This argument is usually expressed as a NamedTuple or AbstractVector of parameters. For more advanced usage, any custom struct can be used.
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • filename::String : If filename was specified, the ADOs at each time point will be saved into the JLD2 file "filename.jld2" after the solving process.
  • SOLVEROptions : extra options for solver

Notes

  • The ADOs will be saved depend on the keyword argument saveat in kwargs.
  • If e_ops is specified, the default value of saveat=[tlist[end]] (only save the final ADOs), otherwise, saveat=tlist (saving the ADOs corresponding to tlist). You can also specify e_ops and saveat separately.
  • The default tolerances in kwargs are given as reltol=1e-6 and abstol=1e-8.
  • For more details about solver please refer to DifferentialEquations.jl (ODE Solvers)
  • For more details about SOLVEROptions please refer to DifferentialEquations.jl (Keyword Arguments)

Returns

source
HierarchicalEOM.TimeEvolutionHEOMSolType
struct TimeEvolutionHEOMSol

A structure storing the results and some information from solving time evolution of hierarchical equations of motion (HEOM).

Fields (Attributes)

  • Btier : The tier (cutoff level) for bosonic hierarchy
  • Ftier : The tier (cutoff level) for fermionic hierarchy
  • times::AbstractVector: The time list of the evolution.
  • ados::Vector{ADOs}: The list of result ADOs at each time point.
  • expect::Matrix: The expectation values corresponding to each time point in times.
  • 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.
source

Stationary State

There are two function definitions of steadystate, which depend on different methods to solve the stationary state:

QuantumToolbox.steadystateFunction
steadystate(M::AbstractHEOMLSMatrix; solver, verbose, SOLVEROptions...)

Solve the steady state of the auxiliary density operators based on LinearSolve.jl (i.e., solving $x$ where $A \times x = b$).

Parameters

  • M::AbstractHEOMLSMatrix : the matrix given from HEOM model, where the parity should be EVEN.
  • solver::SciMLLinearSolveAlgorithm : solver in package LinearSolve.jl. Default to UMFPACKFactorization().
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • SOLVEROptions : extra options for solver

Notes

  • For more details about solver and SOLVEROptions, please refer to LinearSolve.jl

Returns

  • ::ADOs : The steady state of auxiliary density operators.
source
steadystate(M::AbstractHEOMLSMatrix, ρ0, tspan; solver, verbose, SOLVEROptions...)

Solve the steady state of the auxiliary density operators based on time evolution (OrdinaryDiffEq.jl) with initial state is given in the type of density-matrix (ρ0).

Parameters

  • M::AbstractHEOMLSMatrix : the matrix given from HEOM model, where the parity should be EVEN.
  • ρ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 to Inf
  • solver::OrdinaryDiffEqAlgorithm : The ODE solvers in package DifferentialEquations.jl. Default to DP5().
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • SOLVEROptions : extra options for solver

Notes

Returns

  • ::ADOs : The steady state of auxiliary density operators.
source

Spectrum

HierarchicalEOM.PowerSpectrumFunction
PowerSpectrum(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...)

source
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 be EVEN parity

To calculate spectrum when input operator Q_op has ODD-parity:

remember to set the parameters:

  • M::AbstractHEOMLSMatrix: should be ODD parity

Parameters

  • M::AbstractHEOMLSMatrix : the HEOMLS matrix.
  • ρ::Union{QuantumObject,ADOs} : the system density matrix or the auxiliary density operators.
  • P_op::Union{QuantumObject,HEOMSuperOp}: the system operator (or HEOMSuperOp) $P$ acting on the system.
  • Q_op::Union{QuantumObject,HEOMSuperOp}: the system operator (or HEOMSuperOp) $Q$ acting on the system.
  • ωlist::AbstractVector : the specific frequency points to solve.
  • reverse::Bool : If true, 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 to false.
  • solver::SciMLLinearSolveAlgorithm : solver in package LinearSolve.jl. Default to UMFPACKFactorization().
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • filename::String : If filename was specified, the value of spectrum for each ω will be saved into the file "filename.txt" during the solving process.
  • SOLVEROptions : extra options for solver

Notes

  • For more details about solver and SOLVEROptions, please refer to LinearSolve.jl

Returns

  • spec::AbstractVector : the spectrum list corresponds to the specified ωlist
source
HierarchicalEOM.DensityOfStatesFunction
DensityOfStates(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 on ODD-parity operators.
  • ρ::Union{QuantumObject,ADOs} : the system density matrix or the auxiliary density operators.
  • d_op::QuantumObject : The annihilation operator ($d$ as shown above) acting on the fermionic system.
  • ωlist::AbstractVector : the specific frequency points to solve.
  • solver::SciMLLinearSolveAlgorithm : solver in package LinearSolve.jl. Default to UMFPACKFactorization().
  • verbose::Bool : To display verbose output and progress bar during the process or not. Defaults to true.
  • filename::String : If filename was specified, the value of spectrum for each ω will be saved into the file "filename.txt" during the solving process.
  • SOLVEROptions : extra options for solver

Notes

  • For more details about solver and SOLVEROptions, please refer to LinearSolve.jl

Returns

  • dos::AbstractVector : the list of density of states corresponds to the specified ωlist
source

Misc.

HierarchicalEOM.versioninfoMethod
HierarchicalEOM.versioninfo(io::IO=stdout)

Command line output of information on HierarchicalEOM, dependencies, and system information.

source

The outputs will be something like the following:

using HierarchicalEOM
HierarchicalEOM.versioninfo()

                                   __
                                  /  \
 __     __                     __ \__/ __
|  |   |  |                   /  \    /  \
|  |   |  | ______   ______   \__/_  _\__/
|  |___|  |/  __  \ /  __  \ / '   \/     \
|   ___   |  |__)  |  /  \  |    _     _   |
|  |   |  |   ____/| (    ) |   / \   / \  |
|  |   |  |  |____ |  \__/  |  |   | |   | |
|__|   |__|\______) \______/|__|   |_|   |_|

Julia framework for Hierarchical Equations of Motion
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Copyright © QuTiP team 2023 and later.
Lead  developer : Yi-Te Huang
Other developers:
    Simon Cross, Neill Lambert, Po-Chen Kuo and Shen-Liang Yang

Package information:
====================================
Julia              Ver. 1.11.2
HierarchicalEOM    Ver. 2.3.3
QuantumToolbox     Ver. 0.24.0
SciMLOperators     Ver. 0.3.12
LinearSolve        Ver. 2.38.0
OrdinaryDiffEqCore Ver. 1.14.1

System information:
====================================
OS       : Linux (x86_64-linux-gnu)
CPU      : 4 × AMD EPYC 7763 64-Core Processor
Memory   : 15.615 GB
WORD_SIZE: 64
LIBM     : libopenlibm
LLVM     : libLLVM-16.0.6 (ORCJIT, znver3)
BLAS     : libopenblas64_.so (ilp64)
Threads  : 1 (on 4 virtual cores)

The output will be something like the following:

using HierarchicalEOM
HierarchicalEOM.print_logo()
                                   __
                                  /  \
 __     __                     __ \__/ __
|  |   |  |                   /  \    /  \
|  |   |  | ______   ______   \__/_  _\__/
|  |___|  |/  __  \ /  __  \ / '   \/     \
|   ___   |  |__)  |  /  \  |    _     _   |
|  |   |  |   ____/| (    ) |   / \   / \  |
|  |   |  |  |____ |  \__/  |  |   | |   | |
|__|   |__|\______) \______/|__|   |_|   |_|