Bosonic Bath
Overview
The BosonBath
object describes the interaction between the system ($s$) and a exterior bosonic environment ($b$), which can be modeled by
\[H_{sb}=V_{s}\sum_k g_k (b_k + b_k^\dagger),\]
in terms of the coupling strength $g_k$ and the annihilation (creation) operator $b_k (b_k^\dagger)$ associated to the $k$-th mode of the bosonic environment. Here, $V_s$ refers to the system-interaction operator. In particular, $V_s$ must be a Hermitian operator which can act on both bosonic and fermionic systems degree of freedom. In the fermionic system case, $V_s$ must have even parity to be compatible with charge conservation.
The effects of a bosonic environment (initially in thermal equilibrium and linearly coupled to the system) are completely encoded in the two-time correlation functions, namely
\[C(t_1, t_2) =\frac{1}{2\pi}\int_{0}^{\infty} d\omega J(\omega)\left[n(\omega)e^{i\omega (t_1-t_2)}+(n(\omega)+1)e^{-i\omega (t_1-t_2)}\right],\]
where $J(\omega)=2\pi\Sigma_k |g_k|^2 \delta(\omega-\omega_k)$ is the spectral density of the bath and $n(\omega)=\{\exp(\omega/k_B T)-1\}^{-1}$ represents the Bose-Einstein distribution.
A more practical representation can be found by expressing the correlation function as a sum of exponential terms (Exponent
), namely
\[C(t_1, t_2)=\sum_i \eta_i e^{-\gamma_i (t_1-t_2)}.\]
This allows us to define an iterative procedure which leads to the hierarchical equations of motion (HEOM).
Construct BosonBath (with real and imaginary parts are combined)
One can construct the BosonBath
object with the coupling operator Vs::QuantumObject
and the two lists η::AbstractVector
and γ::AbstractVector
which corresponds to the exponential terms $\{\eta_i\}_i$ and $\{\gamma_i\}_i$, respectively.
bath = BosonBath(Vs, η, γ)
Here, the length of η
and γ
should be the same.
Construct BosonBath (with real and imaginary parts are separated)
When $\gamma_i \neq \gamma_i^*$, a closed form for the HEOM can be obtained by further decomposing $C(t_1, t_2)$ into its real (R) and imaginary (I) parts as
\[C(t_1, t_2)=\sum_{u=\textrm{R},\textrm{I}}(\delta_{u, \textrm{R}} + i\delta_{u, \textrm{I}})C^{u}(t_1, t_2)\]
where $\delta$ is the Kronecker delta function and $C^{u}(t_1, t_2)=\sum_i \eta_i^u \exp(-\gamma_i^u (t_1-t_2))$
In this case, the BosonBath
object can be constructed by the following method:
bath = BosonBath(Vs, η_real, γ_real, η_imag, γ_imag)
Here, the length of η_real
and γ_real
should be the same. Also, the length of η_imag
and γ_imag
should be the same.
Here, η_real::AbstractVector
, γ_real::AbstractVector
, η_imag::AbstractVector
and γ_imag::AbstractVector
correspond to the exponential terms $\{\eta_i^{\textrm{R}}\}_i$, $\{\gamma_i^{\textrm{R}}\}_i$, $\{\eta_i^{\textrm{I}}\}_i$ and $\{\gamma_i^{\textrm{I}}\}_i$, respectively.
Instead of analytically solving the correlation function $C(t_1, t_2)$ to obtain a sum of exponential terms, one can also use the built-in functions (for different spectral densities $J(\omega)$ and spectral decomposition methods, which have been analytically solved by the developers already). See the other categories of the Bosonic Bath in the sidebar for more details.
Print Bosonic Bath
One can check the information of the BosonBath
by the print
function, for example:
print(bath)
BosonBath object with 4 exponential-expansion terms
Calculate the correlation function
To check whether the exponential terms in the BosonBath
is correct or not, one can call correlation_function
to calculate the correlation function $C(t)$, where $t=t_1-t_2$:
c_list = correlation_function(bath, tlist)
Here, c_list
is a list which contains the value of $C(t)$ corresponds to the given time series tlist
.
Exponent
HierarchicalEOM.jl
also supports users to access the specific exponential term with brackets []
. This returns an Exponent
object, which contains the corresponding value of $\eta_i$ and $\gamma_i$:
e = bath[2] # the 2nd-term
print(e)
Bath Exponent with types = "bRI", η = 1.5922874021206546e-6 + 0.0im, γ = 0.3141645167860635 + 0.0im.
The different types of the (bosonic-bath) Exponent
:
"bR"
: from real part of bosonic correlation function $C^{u=\textrm{R}}(t_1, t_2)$"bI"
: from imaginary part of bosonic correlation function $C^{u=\textrm{I}}(t_1, t_2)$"bRI"
: from combined (real and imaginary part) bosonic bath correlation function $C(t_1, t_2)$
One can even obtain the Exponent
with iterative method:
for e in bath
println(e)
end
Bath Exponent with types = "bRI", η = 4.995832638723504e-5 - 2.5e-6im, γ = 0.005 + 0.0im.
Bath Exponent with types = "bRI", η = 1.5922874021206546e-6 + 0.0im, γ = 0.3141645167860635 + 0.0im.
Bath Exponent with types = "bRI", η = 1.0039844180003819e-6 + 0.0im, γ = 0.6479143347831898 + 0.0im.
Bath Exponent with types = "bRI", η = 3.1005439801387293e-6 + 0.0im, γ = 1.8059644711829272 + 0.0im.