Validation report
This page is regenerated by every documentation build (GitHub Actions, CPU, float64)
from qenvs.toolkit.validate(), the same function behind qenvs validate. Reproduce it
locally with:
pip install 'qenvs[dev]' # dev extra adds QuTiP for the cross-checks
qenvs validate --markdown
A passing check means the simulation agrees with its reference (closed-form result, physical constraint, independent solver or QuTiP) within the stated tolerance. It does not mean the model describes a particular experiment: see each model page for its assumptions and validity limits.
86 / 86 checks passed, 0 skipped. error is the measured deviation from the reference, tol the acceptance threshold, margin = tol / error (larger is safer).
TwoLevel
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
rabi_oscillation |
analytic | 7.98e-07 | 1e-06 | 1.25 | PASS | max |P1 - sin^2(ut/2)| over one period |
pi_pulse_inversion |
analytic | 1.84e-07 | 1e-06 | 5.43 | PASS | 1 - F(|1>) after u*t = pi |
t1_exponential_decay |
open_system | 3.43e-07 | 1e-06 | 2.92 | PASS | max |P1 - exp(-gamma1 t)| |
tphi_coherence_decay |
open_system | 8.30e-07 | 1e-06 | 1.21 | PASS | max | |
ergotropy_qubit |
thermodynamics | 2.22e-16 | 1e-06 | 4.5e+09 | PASS | max deviation over 4 reference states |
energy_conservation_closed |
conservation | 0.00e+00 | 1e-06 | inf | PASS | max | |
density_matrix_constraints |
constraints | 2.22e-16 | 1e-06 | 4.5e+09 | PASS | hermiticity=0.00e+00, |tr-1|=2.22e-16, negativity=0.00e+00 |
solver_convergence |
numerics | 2.35e-08 | 1e-06 | 42.6 | PASS | max |rho_Tsit5 - rho_Expm| at episode end |
env_pi_pulse_return |
control | 1.45e-09 | 1e-06 | 689 | PASS | |sum(rewards) - 1| for the pi-pulse |
QubitBattery
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
thermal_steady_state |
open_system | 8.00e-07 | 1e-05 | 12.5 | PASS | |P1(30) - n_th/(2n_th+1)|, zero drive |
thermal_state_stationary |
open_system | 7.77e-15 | 1e-06 | 1.29e+08 | PASS | max |rho(t) - rho(0)|, zero drive |
pi_pulse_charging |
analytic | 4.74e-09 | 1e-06 | 211 | PASS | |E - omega0|=4.74e-09, |ergotropy - omega0|=4.74e-09 after u*t = pi |
ergotropy_le_energy |
thermodynamics | 0.00e+00 | 1e-07 | inf | PASS | min(energy - ergotropy)=3.46e-02, min(ergotropy)=4.40e-04 over 20 random open steps |
charging_power_bound |
thermodynamics | 9.14e-08 | 1e-04 | 1.09e+03 | PASS | max|dE/dt|=0.630000 vs omega0*u/2=0.630000 (FD on 201 points) |
env_return_equals_gain |
control | 0.00e+00 | 1e-06 | inf | PASS | |sum(rewards) - (Q_final - Q_initial)|: energy=0.00e+00, ergotropy=0.00e+00 |
qutip_cross_check |
cross_check | 6.61e-08 | 1e-06 | 15.1 | PASS | max |rho_dynamiqs - rho_qutip| after 12 random steps (qutip 5.3.1) |
density_matrix_constraints |
constraints | 1.11e-16 | 1e-06 | 9.01e+09 | PASS | hermiticity=0.00e+00, |tr-1|=1.11e-16, negativity=0.00e+00 |
t1_decay_matches_two_level |
open_system | 3.43e-07 | 1e-06 | 2.92 | PASS | max |P1 - exp(-gamma1 t)| and max |P1 - P1_TwoLevel| |
detuned_rabi |
analytic | 5.36e-09 | 1e-06 | 187 | PASS | max |P1 - (u/Omega)^2 sin^2(Omega t/2)| |
thermal_state_passive |
thermodynamics | 0.00e+00 | 1e-06 | inf | PASS | |tr-1|=0.00e+00, |E - omega0 p1|=0.00e+00, |ergotropy|=0.00e+00 |
solver_convergence |
numerics | 2.85e-08 | 1e-06 | 35.1 | PASS | max |rho_Tsit5 - rho_Expm| at episode end |
DickeBattery
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
operator_algebra |
algebra | 3.55e-15 | 1e-12 | 281 | PASS | max |[J+, J-] - 2 Jz| for N <= 6 and |[a, a^dag] - 1| below cutoff n_max=7 |
jaynes_cummings_limit |
analytic | 1.10e-08 | 3e-06 | 273 | PASS | max |P_e - sin^2(g sqrt(n) t)| over one period (n=1: 5.95e-09, n=3: 1.10e-08) |
detuned_jaynes_cummings |
analytic | 1.33e-08 | 3e-06 | 225 | PASS | max of |P_e - (4g^2n/Om^2) sin^2(Om t/2)|, | - (n - P_e)| and | |
two_cells_closed_form |
analytic | 7.45e-07 | 1e-04 | 134 | PASS | |t_peak - pi/(sqrt(6) g)|=1.67e-08 (grid of 601 points, parabolic refinement), |E(t*) - 16/9 omega0|=7.45e-09, max |E(t) - closed form|=1.07e-08, g=0.5 |
reduced_ergotropy |
thermodynamics | 3.80e-09 | 1e-06 | 263 | PASS | max(|E - E_ref|, |ergotropy - W_ref|) of the reduced cell state, N=1, n=1 (g t = pi/4: 1.14e-09, g t = pi/2: 3.80e-09; references E=omega0/2, W=0 at pi/4 and E=W=omega0 at pi/2) |
omega0_scaling |
analytic | 1.31e-09 | 1e-06 | 763 | PASS | max |Q(omega0=1.5) - 1.5 Q(omega0=1)| over 10 random steps: energy=1.31e-09, ergotropy=5.55e-17 (N=2, resonant TC) |
excitation_conservation |
conservation | 1.33e-15 | 1e-06 | 7.51e+08 | PASS | max | |
ergotropy_bounds |
thermodynamics | 7.77e-16 | 1e-06 | 1.29e+09 | PASS | max violation of 0 <= ergotropy <= E <= N omega0 (both rollouts) and open trace drift along 15-step random rollouts (closed_tc: violation 0.0e+00, min(energy - ergotropy) 1.69e-03, |tr rho - 1| 1.7e-08, open_dicke: violation 7.8e-16, min(energy - ergotropy) 1.75e-01, |tr rho - 1| 7.8e-16) |
collective_advantage |
scaling | 9.87e-02 | 2.5e-01 | 2.53 | PASS | fitted exponent -0.401 (window [-0.75, -0.25]); t*(N) = 31.42, 25.64, 18.37, 13.89; E_max/(N omega0) = 1.000, 0.889, 0.861, 0.879 |
rwa_weak_coupling |
analytic | 5.80e-04 | 2e-03 | 3.45 | PASS | max |E_Dicke - E_TC| for t in [0, pi/(g sqrt(N))], N=2, g=0.01 omega0 |
counter_rotating_terms |
analytic | 0.00e+00 | 0e+00 | inf | PASS | max |E_Dicke - E_TC| = 1.031 for t in [0, pi/(g sqrt(N))], N=2, g=0.5 omega0 (error = shortfall below 0.05) |
cutoff_convergence |
numerics | 8.54e-06 | 1e-03 | 117 | PASS | max |E(n_max=6) - E(n_max=12)| over 20 steps of g = 0.1 omega0, N=2 (max top_fock population at n_max=6: 2.4e-05) |
qutip_tavis_cummings |
cross_check | 5.82e-11 | 1e-05 | 1.72e+05 | PASS | max |rho_dynamiqs - rho_qutip| after 8 random steps, open Tavis-Cummings N=3, n=3, n_max=3, omega0=1.0, omega_c=1.0 (qutip 5.3.1) |
qutip_dicke |
cross_check | 5.78e-10 | 1e-05 | 1.73e+04 | PASS | max |rho_dynamiqs - rho_qutip| after 8 random steps, open Dicke N=3, n=3, n_max=7, omega0=1.0, omega_c=1.0 (qutip 5.3.1) |
qutip_detuned |
cross_check | 3.98e-11 | 1e-05 | 2.51e+05 | PASS | max |rho_dynamiqs - rho_qutip| after 8 random steps, open Tavis-Cummings N=2, n=2, n_max=2, omega0=0.8, omega_c=1.3 (qutip 5.3.1) |
collective_dissipators |
open_system | 4.69e-09 | 2e-06 | 426 | PASS | N=1, g=0: | - exp(-kappa t)|=2.48e-09, | |
density_matrix_constraints |
constraints | 0.00e+00 | 1e-06 | inf | PASS | hermiticity=0.00e+00, |tr-1|=0.00e+00, negativity=0.00e+00 (dim 32) |
solver_convergence |
numerics | 4.35e-06 | 2e-05 | 4.59 | PASS | max |psi_Tsit5 - psi_Expm| after 8 random steps, closed Dicke dim 32 |
open_solver_convergence |
numerics | 5.38e-06 | 2e-05 | 3.72 | PASS | max |rho_Tsit5(default) - rho_Tsit5(rtol=1e-10, atol=1e-12)| after 8 random steps, open Dicke dim 21, kappa=0.1, gamma=0.05 |
DickeBatteryLocal
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
structure |
algebra | 8.88e-16 | 1e-12 | 1.13e+03 | PASS | sum_j d_j(2j+1) = 2^N (N <= 12), [J+, J-] = 2Jz and H_B multiplicities C(N, k) (N=4), |trace functional of L|=5.6e-16 with every rate on |
single_cell_dissipators |
algebra | 0.00e+00 | 1e-12 | inf | PASS | N=1 local coefficients vs D[J-], D[Jz], D[J+] (emission, dephasing, pumping): 0.0e+00, 0.0e+00, 0.0e+00 |
brute_force_agreement |
cross_check | 1.11e-15 | 1e-08 | 9.01e+06 | PASS | max deviation from the explicit 2^N x cavity simulation over 6 random steps (float64): N=2: state 1.0e-15, energy 2.2e-16, ergotropy 1.1e-16, n_photons 1.1e-15, dicke 1.0e-15, symmetric 1.1e-15, projector 0.0e+00; N=3: state 5.6e-16, energy 1.7e-16, ergotropy 6.7e-16, n_photons 2.2e-16, dicke 5.6e-16, symmetric 6.7e-16, projector 0.0e+00; N=4: state 5.6e-16, energy 1.1e-16, ergotropy 6.7e-16, n_photons 4.4e-16, dicke 5.6e-16, symmetric 7.8e-16, projector 0.0e+00 |
collective_limit |
cross_check | 1.33e-15 | 1e-08 | 7.51e+06 | PASS | max deviation from DickeBattery (Expm) over 8 random steps (float64): open TC N=3: energy 2.2e-16, ergotropy 5.6e-17, photons 1.3e-15, reward 2.2e-16, 1 - symmetric 2.2e-16, state 2.2e-16 (full-space minus symmetric-subspace ergotropy up to 0.056); closed Dicke N=2: energy 2.2e-16, ergotropy 2.8e-16, photons 6.7e-16, reward 2.2e-16, 1 - symmetric 5.6e-16, state 3.9e-16 (full-space minus symmetric-subspace ergotropy up to 0.063) |
piqs_cross_check |
cross_check | 7.08e-09 | 1e-05 | 1.41e+03 | PASS | max |sigma_model - sigma_piqs| (Dicke basis) at t = 0.7, 1.5, 3.0 from a random block state, all cell processes on (N=3: 6.3e-09, N=4: 7.1e-09; qutip 5.3.1) |
local_emission_relaxation |
analytic | 1.78e-15 | 2e-06 | 1.13e+09 | PASS | N=4 from all excited, g=0, gamma_local=0.4, t <= 4: energy 8.9e-16, binomial 2.2e-16, purity 5.6e-16, ergotropy 1.8e-15 (closed forms of independent single-cell decay at rate gamma_local) |
local_dephasing_and_pumping |
analytic | 8.88e-16 | 2e-06 | 2.25e+09 | PASS | N=3, g=0: dephasing (gamma_phi_local=0.6, | |
density_matrix_constraints |
constraints | 6.66e-16 | 1e-06 | 1.5e+09 | PASS | after every step of 12-step random rollouts (N=3 Dicke, N=4 TC + pumping): hermiticity 2.2e-16, |tr - 1| 6.7e-16, negativity 0.0e+00 |
expm_step_exactness |
numerics | 2.36e-16 | 1e-12 | 4.24e+03 | PASS | |expm step - Taylor(32 x 30 terms)|=1.1e-16, |one step - 8 substeps|=2.4e-16 (N=3, Liouvillian dim 320, float64) |
env_return_equals_gain |
constraints | 4.44e-16 | 1e-06 | 2.25e+09 | PASS | |return - (Q_T - Q_0)|: energy 2.2e-16, ergotropy 4.4e-16; |ergotropy(2^N matrix) - ergotropy(blocks / d_j)| 2.2e-16 (N=3, 10 random steps; final energy 1.640, ergotropy 0.280 omega0) |
LambdaSystem
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
dark_state_zero_eigenvector |
analytic | 1.11e-16 | 1e-10 | 9.01e+05 | PASS | max ||H |D>|| over 6 random (Omega_p, Omega_s, Delta), delta = 0 |
adiabatic_state_eigenvalues |
analytic | 4.44e-16 | 1e-09 | 2.25e+06 | PASS | max |eig(H) - {0, (Delta +- Omega_gen)/2}| over 6 random parameter sets |
two_level_limit_rabi |
analytic | 2.79e-10 | 1e-06 | 3.58e+03 | PASS | max |P2 - sin^2(Omega_p t / 2)| over one Rabi period, Stokes off |
spontaneous_emission_branching |
open_system | 1.09e-10 | 1e-06 | 9.18e+03 | PASS | max |P_i - analytic| for P2 = exp(-gamma t), P1 = P3 = (1 - exp(-gamma t)) / 2 |
stirap_transfer |
control | 2.53e-03 | 1e-02 | 3.95 | PASS | 1 - P3(T) for Omega_0*width=12, tau/width=0.5; max_t P2=4.311e-02 |
stirap_intermediate_population |
control | 4.31e-02 | 5e-02 | 1.16 | PASS | max_t P2 along the counter-intuitive sequence; final P3=0.9975 |
stirap_intuitive_order |
control | 1.59e-03 | 7e-01 | 440 | PASS | 1 - max_t P2 (passes iff max P2 > 0.3); max P2=0.998, final P3=0.017 |
stirap_emission_robustness |
open_system | 1.50e-02 | 5e-02 | 3.33 | PASS | 1 - P3(T) with gamma=0.5: counter-intuitive P3=0.9850, intuitive P3=0.0242 (error forced to 1 unless counter-intuitive is better) |
stirap_adiabaticity_sensitivity |
control | 2.20e-02 | 9e-01 | 41 | PASS | P3(T) for Omega_0width=1.5, tau/width=0.67 (adiabatic case: Omega_0width=12 gives > 0.99) |
qutip_cross_check |
cross_check | 3.14e-08 | 1e-05 | 318 | PASS | max |rho_qenvs - rho_qutip| after 12 random pump/Stokes steps (gamma=0.3, Delta=0.2, delta=0.1), QuTiP 5.3.1 |
density_matrix_constraints |
constraints | 2.22e-16 | 1e-06 | 4.5e+09 | PASS | hermiticity=0.00e+00, |tr-1|=2.22e-16, negativity=0.00e+00 |
solver_convergence |
numerics | 2.52e-08 | 1e-06 | 39.7 | PASS | max |rho_Tsit5 - rho_Expm| at episode end |
env_stirap_return |
control | 0.00e+00 | 1e-06 | inf | PASS | |sum(rewards) - (F_final - F_initial)|, F_final=0.9975, F_initial=0 |
Transmon
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
qubit_limit_gates |
analytic | 8.88e-16 | 2e-06 | 2.25e+09 | PASS | levels 2: |H_I - sx/2|, |H_Q - sy/2| = 0.0e+00; 1 - F(X) = 8.9e-16 after Omega_I T = pi; 1 - F(Ry(pi/2)) = 5.6e-16 after Omega_Q T = pi/2 |
rabi_units |
analytic | 1.11e-16 | 1e-06 | 9.01e+09 | PASS | P1(1/(2f)) = 1.00000000 for f = 25 MHz; detuned 20 MHz: P1 = 0.60975610 vs 0.60975610 |
drift_spectrum |
analytic | 4.71e-16 | 1e-05 | 2.12e+10 | PASS | max |U_idle - diag(exp(-i E_n t))|, E_n = 2 pi (0.013 n - 0.155 n (n-1)) rad/ns, t = 1.5 ns, 4 levels |
fidelity_closed_forms |
analytic | 2.22e-16 | 1e-09 | 4.5e+06 | PASS | Rz(theta) vs I (unitary and superoperator), leaky |1><->|2> permutation vs I / X and its leakage 1/2, F(I, X) = 1/3, F(I, SX) = 2/3 (tol 1e-9 in x64, 10 eps in float32) |
closed_open_agree |
cross_check | 6.52e-08 | 1e-05 | 153 | PASS | max |S - conj(U) kron U| = 6.5e-08, max |dF| over SX, H, Rz(0.7), Y = 6.8e-09, |dL| = 2.5e-09 (3 levels, 16 random steps, F_SX = 0.681, T1 = T2 = 1e6 us) |
info_observables_orientation |
cross_check | 2.33e-15 | 1e-09 | 4.29e+05 | PASS | max |info p_k - numpy reference| = 2.3e-15 (closed |U[:, 1]|^2 and open diag(S vec(|1><1|)); 3 levels, 16 random I/Q steps, 10 MHz detuning; the transposed map would differ by 0.02) |
sx_orientation |
analytic | 6.33e-16 | 2e-06 | 3.16e+09 | PASS | levels 2, Omega_I T = pi/2: max |e^(i pi/4) U - SX| = 6.3e-16 (elementwise; against SX^dag it is 1.00) |
idle_coherence_fidelity |
open_system | 8.88e-16 | 1e-06 | 1.13e+09 | PASS | T1 = 40 ns, T2 = 50 ns, t = 32 ns: F_avg exact 0.750652, F_pro exact 0.625978; levels 2 and 3 |
harmonic_t1_ladder |
open_system | 3.89e-16 | 1e-06 | 2.57e+09 | PASS | |P2 - e^(-2t/T1)| = 1.1e-16, |P1 - 2(e^(-t/T1) - e^(-2t/T1))| = 3.9e-16, T1 = 50 ns, t = 30 ns |
superop_trace_preserving_cp |
constraints | 3.33e-16 | 1e-06 | 3e+09 | PASS | max |tr S(rho) - 1| and hermiticity over 5 random rho = 3.3e-16; Choi negativity = 0.0e+00 (3 levels, T1 = 50 ns, T2 = 40 ns) |
drag_coefficient |
analytic | 2.00e-02 | 5e-02 | 2.5 | PASS | leakage-optimal beta / (-1/alpha) = 0.9800 (L 5.70e-05 -> 8.16e-10); fidelity-optimal beta / (-1/(2 alpha)) = 0.9900 (1 - F 6.51e-03 -> 4.09e-05); 12 ns, sigma 3 ns, dt 0.25 ns |
qutip_cross_check |
cross_check | 2.58e-11 | 1e-05 | 3.87e+05 | PASS | open: max |rho_dq - rho_qutip| = 2.6e-11 (random initial rho, T1 = 30 ns, T2 = 25 ns); closed: max |U_dq - U_qutip| = 2.9e-14; 12 random I/Q steps (qutip 5.3.1) |
solver_convergence |
numerics | 2.28e-09 | 1e-04 | 4.39e+04 | PASS | max |map_Expm - map_Tsit5(rtol=atol=1e-10)| at episode end: closed 2.3e-09, open 5.7e-10 |
env_return_equals_gain |
control | 1.67e-16 | 1e-06 | 6e+09 | PASS | |sum(rewards) - (F_final - 1/3)|: closed 5.6e-17, open 1.7e-16 |
TwoTransmon
| check | category | error | tol | margin | status | detail |
|---|---|---|---|---|---|---|
frame_change_identity |
analytic | 3.55e-15 | 1e-05 | 2.81e+09 | PASS | J = 0, idle 37 ns, Delta/2pi = -100 MHz: max |U_q - 1| on |00>,|01>,|10>,|11> = 3.6e-15; with exp(-i Delta n_c T) instead it is 1.90; env fidelity (pulled-back target) equals F(U_q, ZX) to 0.0e+00 |
j0_decoupling |
analytic | 1.40e-15 | 1e-05 | 7.15e+09 | PASS | (a) 16 random 4-channel steps of 0.5 ns: max |U - U_c (x) U_t| = 1.2e-15 (with J/2pi = 3 MHz it is 4.1e-02); (b) DRAG X on the target: max |U_q - 1 (x) V| = 1.4e-15, 1 - F(1 (x) X) = 3.6e-06 (single transmon 1 - F(X) = 3.5e-06), F matches (2 Tr(mm^dag) + 4 |Tr m|^2)/20 to 8.9e-16 |
static_zz |
analytic | 5.42e-04 | 5e-03 | 9.22 | PASS | J = 3 MHz: exact 130.838 kHz, 2nd order 130.909 kHz, rel -5.4e-04; J = 5 MHz: exact 363.090 kHz, 2nd order 363.636 kHz, rel -1.5e-03 (Delta/2pi = -100 MHz, alpha_c/2pi = -340 MHz, alpha_t/2pi = -300 MHz; zeta = E11 - E10 - E01 + E00; tol on the 3 MHz case) |
zx_rate_weak_drive |
analytic | 2.05e-03 | 1e-02 | 4.88 | PASS | nu_ZX = 77.114 kHz vs -(J Omega/Delta) alpha_c/(alpha_c + Delta) = 77.273 kHz (rel -2.0e-03); nu_IX = 22.719 kHz vs -J Omega/(Delta + alpha_c) = 22.727 kHz (rel -3.8e-04); J/2pi = 2 MHz, Omega/2pi = 5 MHz, 2 us |
subspace_fidelity_closed_forms |
analytic | 1.11e-16 | 1e-09 | 9.01e+06 | PASS | F(1, ZX) = 3/5, F(ZX embedded, ZX) = 1, F(CZ, 1) = 2/5, |11> <-> |20>: F = 3/5 and L = 1/4, unitary and superoperator forms; max error 1.1e-16; on the default first-4-levels subspace the embedded ZX gives F = 0.689 |
qutip_cross_check |
cross_check | 1.01e-09 | 1e-05 | 9.87e+03 | PASS | open: max |rho_dq - rho_qutip| = 1.0e-09 (random rho0, T1/T2 = 30/25 ns control, 40/20 ns target); closed: max |U_dq - U_qutip| = 2.6e-14; 16 random 4-channel steps of 0.5 ns, J/2pi = 3 MHz (qutip 5.3.1) |
superop_cptp |
constraints | 2.00e-15 | 1e-05 | 5e+09 | PASS | max |tr S(rho) - 1| and hermiticity over 4 random rho = 2.0e-15; Choi negativity = 0.0e+00 (two qutrits, 6 random steps of 5 ns, T1/T2 50/40 and 60/30 ns) |
solver_convergence |
numerics | 5.23e-09 | 1e-04 | 1.91e+04 | PASS | max |map_Expm - map_Tsit5(rtol=atol=1e-10)| after 16 random steps of 0.5 ns: closed 3.5e-09, open 5.2e-09 |
env_return_equals_gain |
control | 1.39e-16 | 1e-05 | 7.21e+10 | PASS | |sum(rewards) - (F_T - F_0)| and |F_T - F(exp(i Delta n_c T) U, ZX)|: closed 1.4e-16, open 5.6e-17 |
Environment
| key | value |
|---|---|
| qenvs | 0.3.2a1 |
| dynamiqs | 0.3.6 |
| jax | 0.10.2 |
| jax_backend | cpu |
| python | 3.12.15 |
| platform | Linux-6.17.0-1022-azure-x86_64-with-glibc2.39 |
| x64 | True |