An open qubit coupled to an environment obeys the Lindblad (GKSL) master equation for its density matrix ρ:
dρ/dt = -i[H,ρ] + Σ_k γ_k ( L_k ρ L_k† - ½{L_k†L_k, ρ} )
This 2D engine runs two independent real solvers side by side so you can see them agree. The right disk integrates that equation directly: ρ is a genuine 2×2 complex matrix, advanced every frame with the full commutator and dissipator above. The left disk runs the Monte Carlo wavefunction / quantum-jump unraveling (Dalibard–Castin–Mølmer 1992): each colored dot is a separate pure state |ψ⟩ evolving under the non-Hermitian effective Hamiltonian H_eff = H − (i/2)Σ_k γ_k L_k†L_k, whose norm loss dp = 1 − ‖ψ‖² each step is the real probability of a quantum jump; with probability dp the state collapses to L_k|ψ⟩/‖L_k|ψ⟩‖, chosen with weight γ_k⟨ψ|L_k†L_k|ψ⟩, otherwise it renormalizes and continues. Averaging the ensemble's individual Bloch vectors reconstructs ρ a completely different way from the right-hand solver — the "Bloch-vector gap" readout is the real numerical distance between the two, and it shrinks toward zero as you raise the ensemble size, which is the actual content of the unraveling theorem, not a scripted animation.
Both circles project the Bloch sphere onto its y–z plane (horizontal = Im-coherence axis, vertical = population axis, |0⟩ at the top pole, |1⟩ at the bottom), the plane in which a Rabi drive about x visibly rotates the state.
- Amplitude damping — L = √γ σ₋: relaxation to |0⟩, e.g. spontaneous photon emission (T₁ decay).
- Pure dephasing — L = √(γ/2) σ_z: random phase kicks that kill coherence without changing populations (T₂ decay).
- Depolarizing — equal-rate σ_x, σ_y, σ_z jumps: isotropic noise that shrinks the Bloch vector uniformly toward the maximally-mixed state.
- Ω (R_x drive) — a coherent Rabi rotation about x competing with the dissipation, so the trajectories spiral instead of just decaying.
- Coherence / Purity — |ρ₀₁| = ½√(r_x²+r_y²) and Tr(ρ²) = ½(1+|r|²), computed independently for each solver's own Bloch vector r; Tr(ρ²)=1 is pure, 0.5 is maximally mixed.