Master time evolution
The dynamics of open quantum systems are governed by a master equation in Lindblad form:
\[\dot{\rho} = -\frac{i}{\hbar} \big[H,\rho\big] + \sum_i \big( J_i \rho J_i^\dagger - \frac{1}{2} J_i^\dagger J_i \rho - \frac{1}{2} \rho J_i^\dagger J_i \big)\]
It is implemented by the function
timeevolution.master(tspan, psi0, H, J)
The arguments required are quite similar to the ones of timeevolution.schroedinger
. tspan
is a vector of times, rho0
the initial state and H
the Hamiltonian. We now also need the vector J
that specifies the jump operators of the system.
The additional arguments available are
rates::{Vector{Float64}, Matrix{Float64}}
Jdagger::Vector
fout::Function
The first specifies the decay rates of the system with default values one. If rates
is a vector of length length(J)
, then the i
th entry of rates
is paired with the i
-th entry of J
, such that J_i
decays with $\gamma_i$. If, on the other hand, rates
is a matrix, then all entries of J
are paired with one another and matched with the corresponding entrie of rates
, resulting in a Lindblad term of the form $\sum_{i,j}\gamma_{ij}\left(J_i\rho J_j^\dagger - J_i^\dagger J_j\rho/2 - \rho J_i^\dagger J_j/2\right)$.
The second keyword argument can be used to pass a specific set of jump operators to be used in place of all $J^\dagger$ appearances in the Lindblad term.
We can pass an output function just like the one for a Schrödinger equation. Note, though, that now the function must be defined with the arguments fout(t, rho)
.
For performance reasons the solver internally first creates the non-hermitian Hamiltonian $H_\mathrm{nh} = H - \frac{i\hbar}{2} \sum_i J_i^\dagger J_i$ and solves the equation
\[\dot{\rho} = -\frac{i}{\hbar} \big[H_\mathrm{nh},\rho\big] + \sum_i J_i \rho J_i^\dagger\]
If for any reason this behavior is unwanted, e.g. special operators are used that don't support addition, the function timeevolution.master_h
(h for hermitian) can be used.
Functions
timeevolution.master
timeevolution.master_h
timeevolution.master_nh
timeevolution.master_dynamic
timeevolution.master_nh_dynamic