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_recursiveFunction
fcscumulants_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 length length(mJ) with weights for each jump.
source
QuantumFCS.drazinFunction
drazin(L, vrho_ss, vId, IdL)

Calculate the Drazin inverse of a Liouvillian defined by the Hamiltonian H and jump operators J.

Arguments

  • L : Liouvillian matrix
  • vrho_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)
source
QuantumFCS.m_jumpsFunction
m_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 jumps
  • n : 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.
source
QuantumFCS.drazin_applyFunction
drazin_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 of L 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.

source