Auxiliary Density Operators
Introduction
The auxiliary density operators (ADOs
) $\rho_{\textbf{j}\vert\textbf{q}}^{(m,n,p)}(t)$ encode environmental effects related to different exponential terms (Exponent
) present in the Bosonic Bath
and Fermionic Bath
correlation functions and provide an iterative description of high-order system-baths memory effects.
In $\rho_{\textbf{j}\vert\textbf{q}}^{(m,n,p)}(t)$, the tuple $(m, n, p)$ represents the $m$th-level-bosonic-and-$n$th-level-fermionic ADO with parity $p$, and $\textbf{j}$ ($\textbf{q}$) denotes a vector $[j_m,\cdots,j_1]$ ($[q_n,\cdots,q_1]$) where each $j$ ($q$) represents a specific multi-index ensemble $\{\beta, l\}$ ($\{\alpha, h\}$) with
- $\beta$ : denotes the index of bosonic bath
- $\alpha$ : denotes the index of fermionic bath
- $l$ : denotes the index of exponent in the bosonic bath
- $h$ : denotes the index of exponent in the fermionic bath
The system reduced density operator refers to $m=n=0$, namely $\rho_{\vert}^{(0,0,p)}(t)$.
In HierarchicalEOM.jl
, we express all the auxiliary density operators into a single column vector and store it in the object defined as :
which is usually obtained after solving the time evolution or stationary state by a given HEOM Liouvillian superoperator Matrix.
Fields
The fields of the structure ADOs
are as follows:
data
: the vectorized auxiliary density operatorsdims
: the dimension list of the coupling operator (should be equal to the system dims).N
: the number of auxiliary density operatorsparity
: the parity label
One obtain the value of each fields as follows:
# usually obtained after solving time evolution or stationary state
ados::ADOs
ados.data
ados.dims
ados.N
ados.parity
We express all the auxiliary density operators in only a single column vector ADOs.data
. To obtain each auxiliary density operators in matrix form, please use the following methods and functions.
Reduced Density Operator
In order to obtain the system reduced density operator in the type of QuantumObject
, just simply call getRho
ados::ADOs
ρ = getRho(ados)
High-Level Auxiliary Density Operators
Although we express all the auxiliary density operators in the vector ADOs.data
, we still make the ADOs
like a list where accessing each element would return a specific auxiliary density operator in matrix type.
In order to obtain the auxiliary density operator in the type of QuantumObject
with a specific index i
, just simply call getADO
ados::ADOs
i::Int
ρ = getADO(ados, 1) # the first element will always be the reduced density operator
ado = getADO(ados, i) # the i-th auxiliary density operator
Also, ADOs
supports all the element-wise methods (functions) :
Supports length(::ADOs)
which returns the total number of auxiliary density operators (same as ADOs.N
) :
ados::ADOs
length(ados)
Supports bracket operation []
which is similar to access the element of a list :
ados::ADOs
# all the following returned ADO will be in matrix form
ados[1] # returns the first auxiliary density operator (which is always the reduced density operator)
ados[10] # returns the 10-th auxiliary density operator
ados[3:10] # returns a list of auxiliary density operators from index 3 to 10
ados[end] # returns the last auxiliary density operator
Supports iteration (for
-loop) process :
ados::ADOs
for ado in ados # iteration
ado # each auxiliary density operator in matrix form
end
To find the index of the auxiliary density operator and it's corresponding bath Exponent
, please refer to Hierarchy Dictionary
for more details.
Expectation Value
Given an observable $A$ and ADOs
$\rho^{(m,n,p)}_{\textbf{j} \vert \textbf{q}}$, one can calculate the expectation value by
\[\langle A \rangle = \textrm{Tr}\left[A \rho^{(0,0,p)}_{ \vert }\right],\]
where, $m=n=0$ represents the reduced density operator.
One can directly calculate the expectation values using the function QuantumToolbox.expect
:
A::QuantumObject # observable
# with a single ADOs
ados::ADOs
E = expect(A, ados)
# with a list contains many ADOs
ados_list::Vector{ADOs}
Elist = expect(A, ados_list)
Here, Elist
contains the expectation values corresponding to the ados_list
.