QuantumFCS.jl
QuantumFCS.jl
provides tools for Full Counting Statistics (FCS) of quantum systems.
-📘 Start with the Quickstart
-🧭 Browse the API
-📝 Study the Examples
Documentation
The math behind
As a general scenario, we consider a Lindblad master equation,
\[\mathcal{L}\rho = \frac{d \rho}{dt} = -i[H, \rho] + \sum_{k=1}^r L_k \, \rho \, L_k^\dagger - \frac{1}{2}\{L^\dagger_k L_k, \rho \}.\]
We introduce $p \le r$ counting fields $N_k$ with weights $\nu_k$. This lets us define the total current,
\[N(t) = \sum_k \nu_k \, N_k(t)~.\]
We further define the $n$-resolved density matrix $\rho_n(t)$ whose trace equals the probability to have accumulated $n$ jumps at time $t$, $P(n,t) = \operatorname{Tr}[\rho_n(t)]$. Summing over the set of allowed values $\mathcal{N}$ for the total charge $N$, we retrieve the standard density matrix,
\[\rho(t) = \sum_{n \in \mathcal{N}} \rho_n(t)~.\]
We now consider the Fourier transform of the $n$-resolved density matrix,
\[\rho_{\chi}(t) = \sum_{n \in \mathcal{N}} e^{i n \chi} \, \rho_n(t)~.\]
\[\chi\]
is called the counting field and the time evolution of $\rho_{\chi}(t)$ is given by the generalized master equation (GME),
\[\mathcal{L}_\chi \, \rho_\chi = \bigl(\mathcal{L} + \delta \mathcal{L}_\chi\bigr)\rho_\chi,\]
where
\[\delta \mathcal{L}_\chi = \sum_{k=1}^p\bigl(1-e^{i\nu_k \chi}\bigr) \, L_k \, (\cdot) \, L_k^\dagger~.\]
Computing cumulants using recursive methods
We are ultimately interested in the $n$-th cumulant $\langle\!\langle I^n \rangle\!\rangle$ of the stochastic current,
\[I(t) = \frac{dN}{dt}~,\]
which we compute through the following recursive scheme,
\[\langle\!\langle I^n \rangle\!\rangle = \sum_{m=1}^n \binom{n}{m} \, \langle\!\langle \mathbb{1} | \, \mathcal{L}^{(m)} \, | \rho_{\text{ss}}^{(n-m)}(\chi) \rangle\!\rangle~,\]
with the constituents,
\[| \rho_{\text{ss}}^{(n)}(\chi) \rangle\!\rangle = \mathcal{L}^+ \sum_{m=1}^n \binom{n}{m} \Bigl( \langle\!\langle I^m \rangle\!\rangle - \mathcal{L}^{(m)}\Bigr) | \rho_{\text{ss}}^{(n-m)} \rangle\!\rangle~,\]
\[\mathcal{L}^{(n)} = \bigl(-i \, \partial_{\chi}\bigr)^n \mathcal{L}_\chi \Big|_{\chi \to 0}~,\]
and $\mathcal{L}^+$ being the Drazin inverse of $\mathcal{L}$.
Functions
QuantumFCS.fcscumulants_recursive
— Functionfcscumulants_recursive(L, mJ, nC; <keyword arguments>)
Calculate n-th zero-frequency cumulant of full counting statistics using a recursive scheme.
Arguments
L
: Vectorized Liouvillian matrix (sparse or dense, ComplexF64)
Alternatively, one can provide the Hamiltonian and jump operators instead of L
H
: Hamiltonian operator (sparse or dense, Operator from QuantumOptics.jl)J
: Vector of jump operators (sparse or dense, Operator from QuantumOptics.jl)mJ
: Vector containing the monitored jump matrices (sparse operators in vectorized representation).nC
: Number of cumulants to be calculated.nu
: Vector of lengthlength(mJ)
with weights for each jump.
QuantumFCS.drazin
— Functiondrazin(L, vrho_ss, vId, IdL)
Calculate the Drazin inverse of a Liouvillian defined by the Hamiltonian H and jump operators J.
Arguments
L
: Liouvillian matrixvrho_ss
: vectorised density matrix specifying the steady-state of the Liouvillian.vId
: vectorised identity matrix (1×N row or vector)IdL
: Identity matrix in Liouville space (N×N)
Returns
Drazin inverse as a (sparse)
QuantumFCS.m_jumps
— Functionm_jumps(mJ; n=1; nu = vcat(fill(-1, Int(length(J)/2)),fill(1, Int(length(J)/2))))
Calculate the vectorized super-operator ℒ(n) = ∑ₖ (νₖ)ⁿ (Lₖ*)⊗Lₖ.
Arguments
mJ
: List of monitored jumpsn
: Power of the weights νₖ. By default set to 1, since this case appears more often.nu
: vector of length length(mJ) with weights for each jump operator.
QuantumFCS.drazin_apply
— Functiondrazin_apply(L, α, ρ, vId; F=nothing, rtol=1e-12, atol=0.0)
Apply the (projected) Drazin inverse of the Liouvillean L
to the vector α
by solving a linear system.
Arguments
L
: Liouvillean operator (matrix).α
: Right-hand side vector.ρ
: Steady-state vector.vId
: Vectorized identity vector.F
: Optional factorization ofL
to reuse (default:nothing
).rtol
: Relative tolerance for the solver (default:1e-12
).atol
: Absolute tolerance for the solver (default:0.0
).
Returns
A (sparse) vector representing the result of applying the projected Drazin inverse.