Liouvillian Master Equation
is completely encoded within the Liouvillian $\mathcal{L}$. To build it, you must first define the Hamiltonian and a vector containing the jump/Loss operators, and then use the function liouvillian
, as shown below.
julia> N = 7
julia> hilb = HomogeneousSpin(N,1//2)
julia> ops = []
0-element Array{Any,1}
julia> H = LocalOperator(hilb)
empty KLocalOperator on space: HomogeneousFock(7, 2)
julia> for i=1:N
global H += g/2.0 * sigmax(hilb, i)
global H += V/4.0 * sigmaz(hilb, i) * sigmaz(hilb, mod(i, N)+1)
push!(ops, sigmam(hilb, i))
end
julia> liouv = liouvillian(H, ops)
KLocalLiouvillian(ComplexF64)
Hilb: SuperOpSpace(HomogeneousFock(7, 2)))
The liouvillian behaves as most other operators, even though you cannot (at the moment) do further algebraic operations on it.
Like any other operator, you can convert it to a Matrix or SparseMatrix by calling the standard Julia conversion methods.
julia> Matrix(liouv)
julia> sparse(liouv)
Those can be used to convert the lindbladian to formats used by other packages, such as QuantumOptics.jl.
Steady States of Open Quantum Systems
The steady state of an Open Quantum System is computed by minimising the expectation value of
When stochastically sampling this cost function on the hilbert space, it is computed as
which has the 0-variance property. The Markov chain is performed according to the probability $p(\sigma, \tilde{\sigma}) = |\rho(\sigma, \tilde{\sigma})|^2/Z$ with $Z=\sum|\rho(\sigma, \tilde{\sigma})|^2$.