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.