Hierarchical Equations of Motion Liouvillian Superoperator (HEOMLS) Matrix
Overview
The hierarchical equations of motion Liouvillian superoperator (HEOMLS) $\hat{\mathcal{M}}$ characterizes the dynamics in the full auxiliary density operators (ADOs) space, namely
\[\partial_{t}\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}(t)=\hat{\mathcal{M}}\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}(t)\]
and it can, numerically, be expressed as a matrix.
In HierarchicalEOM.jl
, all different types of HEOMLS $\hat{\mathcal{M}}$ are subtype of AbstractHEOMLSMatrix
.
The HEOMLS $\hat{\mathcal{M}}$ not only characterizes the bare system dynamics (based on system Hamiltonian), but it also encodes the system-and-multiple-bosonic-baths and system-and-multiple-fermionic-baths interactions based on Bosonic Bath and Fermionic Bath, respectively. For a specific $m$th-level-bosonic-and-$n$th-level-fermionic auxiliary density operator $\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}$, it will be coupled to the following ADOs through $\hat{\mathcal{M}}$:
- $(m+1)$th-level-bosonic-and-$n$th-level-fermionic ADOs
- $(m-1)$th-level-bosonic-and-$n$th-level-fermionic ADOs
- $m$th-level-bosonic-and-$(n+1)$th-level-fermionic ADOs
- $m$th-level-bosonic-and-$(n-1)$th-level-fermionic ADOs
and thus forms the two-fold hierarchy relations. See our paper for more details.
In practice, the size of the matrix $\hat{\mathcal{M}}$ must be finite and the hierarchical equations must be truncated at a suitable bosonic-level ($m_\textrm{max}$) and fermionic-level ($n_\textrm{max}$). These truncation levels (tiers) must be given when constructing $\hat{\mathcal{M}}$.
Hs::QuantumObject # system Hamiltonian
Bbath::BosonBath # bosonic bath object
Fbath::FermionBath # fermionic bath object
Btier::Int # bosonic truncation level
Ftier::Int # fermionic truncation level
M = M_Boson(Hs, Btier, Bbath)
M = M_Fermion(Hs, Ftier, Fbath)
M = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath)
Importance Value and Threshold
The main computational complexity can be quantified by the total number of auxiliary density operators (ADOs) because it directly affects the size of $\hat{\mathcal{M}}$.
The computational effort can be further optimized by associating an importance value $\mathcal{I}$ to each ADO and then discarding all the ADOs (in the second and higher levels) whose importance value is smaller than a threshold value $\mathcal{I}_\textrm{th}$. The importance value for a given ADO : $\mathcal{I}\left(\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}\right)$ is determined by its corresponding exponential terms of bath correlation function [see Phys. Rev. B 88, 235426 (2013) and Phys. Rev. B 103, 235413 (2021)]. This allows us to only consider the ADOs which affects the dynamics more, and thus, reduce the size of $\hat{\mathcal{M}}$. Also see our paper [ Communications Physics 6, 313 (2023) ] for more details.
When you specify a threshold value $\mathcal{I}_\textrm{th}$ with the parameter threshold
to construct $\hat{\mathcal{M}}$, we will remain all the ADOs where their hierarchy levels $(m,n)\in\{(0,0), (0,1), (1,0), (1,1)\}$, and all the other high-level ADOs may be neglected if $\mathcal{I}\left(\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}\right) < \mathcal{I}_\textrm{th}$.
Hs::QuantumObject # system Hamiltonian
Bbath::BosonBath # bosonic bath object
Fbath::FermionBath # fermionic bath object
Btier::Int # bosonic truncation level
Ftier::Int # fermionic truncation level
M = M_Boson(Hs, Btier, Bbath; threshold=1e-7)
M = M_Fermion(Hs, Ftier, Fbath; threshold=1e-7)
M = M_Boson_Fermion(Hs, Btier, Ftier, Bbath, Fbath; threshold=1e-7)
The full hierarchical equations can be recovered in the limiting case $\mathcal{I}_\textrm{th}\rightarrow 0$, which is the default value of the parameter : threshold=0.0
. This means that all of the ADOs will be taken into account by default.
Methods
All of the HEOMLS matrices supports the following two Base
Functions :
size(M::AbstractHEOMLSMatrix)
: Returns the size of the HEOMLS matrix.- Bracket operator
[i,j]
: Returns the(i, j)
-element(s) in the HEOMLS matrix.
M::AbstractHEOMLSMatrix
m, n = size(M)
M[10, 12]
M[2:4, 2:4]
M[1,:]
M[:,2]