Tiny package for determining iteratively the steady state of time-independent Liouville superoperators thanks to QuantumOptics.jl and IterativeSolvers.jl.
rho = steadystate_bicg(H, J, l; log=false, kwargs...)
rho, log = steadystate_bicg(H, J, l; log=true, kwargs...)Evaluates the steady state by solving iteratively the linear system via the stabilized biconjugate gradient method with
l GMRES steps. The Hamiltonian H and the jump operators J are to be dense. Sparse operators can be handled, provided one gets rid of BLAS in this line (e.g. by changing it to @inbounds @views it.x .+= it.rs[:,1:it.l] * it.γ in some local branch of IterativeSolvers.jl). Keyword arguments are passed to the iterative solver.
steadystate_bicg!(rho, H, J, l; log=false, kwargs...)Same as the above with an initial condition.
steadystate_iterative!(rho, H, J, :method!, args...; kwargs...)Same as the above but accepting any inplace method name in the main scope or defined within IterativeSolvers.jl (e.g. gmres!, for dense operators, or idrs!, compatible with sparse operators as well). args and kwargs are passed on to the iterative solver.