Kossakowski-form dissipator + dissipative pc_step_orbit_rep validation#179
Open
AlexSchuckert wants to merge 31 commits into
Open
Kossakowski-form dissipator + dissipative pc_step_orbit_rep validation#179AlexSchuckert wants to merge 31 commits into
AlexSchuckert wants to merge 31 commits into
Conversation
|
The complete experiment ledgers behind the CTPP design decisions: truncation-scheme comparisons (cap/valve vs displacement vs thresholds), the momentum-vs-real-space study, exact-reference methodology, the L=21/L=41 application exhibits, and every kept or discarded attempt with its measured numbers. Scan drivers and ED reference generators included as text; plots and .npz exact-reference data (~2.5 MB) live on the archive branch continuous-time-pauli-propagation. Split 4/4 of the CTPP work. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rep validation
D*(O) = Σ_nm K_nm (A_n†OA_m − ½{A_n†A_m,O}) from an operator list +
Hermitian PSD pair matrix — exactly equivalent to the eigenmode-jump
representation but O(N²) instead of O(N³) per string (measured
3.4×/8.9×/17.4× per pc_step at N=10/20/30 on the superradiance chain;
criterion bench included). One JumpKind::KossakowskiPair per nonzero
K_nm with a precompiled sandwich table and a one-sided ±½[K·A_n†A_m, p]
commutator fast path; all step/leakage/generator paths inherit it via
compute_action_terms. Python: Lindbladian(..., kossakowski=(ops, K))
with Hermiticity/PSD validation (raises, no silent clipping).
Dissipative pc_step_orbit_rep validated correct out of the box (the
1/|G| projection convention makes the phase-aware action exact for any
equivariant generator, incl. the non-unital Z→I flow): orbit vs
projected-full ≤1e-12, R(t) vs excitation-cascade ED <1e-4, identity
bookkeeping vs closed form, truncated-regime sanity. Physics regression:
N=6 superradiance chain vs exact cascade <1e-4 (vs the fig11 stored
reference: 1.1e-05).
Squashed from archive/kossakowski-dissipator (full history there).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
AlexSchuckert
force-pushed
the
kossakowski-dissipator
branch
from
July 16, 2026 12:24
a3ba18f to
d3a8ffa
Compare
AlexSchuckert
changed the base branch from
continuous-time-pauli-propagation
to
split/3-symmetric-evolution
July 16, 2026 12:24
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The split/3 merge conflicted on the Lindbladian __init__ signature and the markers were committed; resolved by combining the kossakowski kwarg with the tightened jump_terms typing. Full gauntlet green (ty, ruff check+format, 250 tests). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
AlexSchuckert
force-pushed
the
kossakowski-dissipator
branch
from
July 16, 2026 15:24
ce6e79d to
4992d1e
Compare
Adds the molecular ZULF-NMR dipolar workload (2-local rank-2 tensor ops, block-diagonal K over 5 spatial harmonics, dense high-weight basis strings) as a criterion bench and a fast pc_step_timed profiling example — the A/B harness for the drug-kossakowski autotune campaign. This path stresses the both-sided sandwich, unlike the single-term sigma-minus superradiance bench. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Group the precompiled sandwich table by the left word P_a so P_a.p is computed once per distinct P_a and reused across its P_b partners, instead of one pauli_mul pair per (P_a,P_b) term-pair. No-op for single-term ops (the superradiance sigma-minus case, why it2 in the 07-16 ledger found it noise-level), but for the multi-term 2-local tensors of dipolar relaxation (~4 terms/op) it cuts the both-sided sandwich from 32 to 20 pauli_mul. Same-session A/B on the drug_profile harness (n=10, B=1500, 5 steps): 7039 -> 5765 ms/step = 18% (1.22x). Equivalence tests unchanged (kossakowski_pair_matches_eigenmode_jumps green; 3-spin ZULF dense-vs-koss action 3.3e-15, trajectory 3.2e-14). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The action keeps only the real part, and P_i.p.Q_j / Q_j.p.P_i produce the same Pauli word with conjugate phase, so a Hermitian-conjugate pair collapses to one upper-triangle (n<=m) entry using only the (n,m) products: - both-sided sandwich: double and take the real part; - both-sided anticommutator: dd = 2*Re(K_nm A_n#A_m) (Hermitian sum); - one-sided: +-1/2 [F, p] with F = -2i*Im(K_nm A_n#A_m) (anti-Hermitian difference of the folded conjugate one-sided contributions). Diagonal pairs keep the original single-pair handling. Halves the pair count (P^2 -> P(P+1)/2), and the off-diagonal real-part accumulation drops the complex arithmetic and per-pair imaginary-cancellation bookkeeping. General for any Hermitian PSD K (not just real). Same-session A/B on drug_profile (n=10, B=1500): 5765 -> 2281 ms/step = 2.53x (cumulative from baseline 7039 -> 2281 = 3.08x). kossakowski_pair_matches_eigenmode_jumps and the full lindblad suite green; 3-spin ZULF action 3.3e-15, gemcitabine (N=10) action 1.5e-15 vs dense jumps. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Records the drug-workload Kossakowski campaign (baseline 7039 -> it1 5765 -> it2 2281 ms/step = 3.08x cumulative; 6.0x / 1.3x-RAM representation win over dense jumps on gemcitabine N=10). Introduces a SandwichGroups type alias and type-complexity allows on the bench/example geometry helpers to keep clippy at zero warnings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cargo fmt --all on the bench, profiler example, and the it2 dissipator construction (the pre-commit cargo-fmt hook was red). No logic change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #178 (base:
continuous-time-pauli-propagation).What this adds
Kossakowski-form dissipators:
D*(O) = Σ_nm K_nm (A_n† O A_m − ½{A_n†A_m, O})specified directly by an operator list + Hermitian PSD pair matrix — the natural form for collective decay (every emitter pair shares a channel viaΓ_nmfrom the free-space Green's function). Mathematically identical to eigendecomposingKinto N dense collective jumps, but the per-string action costs one term-pair product per nonzeroK_nminstead of carrying an extra factor of N: O(N²) instead of O(N³).JumpKind::KossakowskiPairper nonzeroK_nm(precompiled sandwich table +A_n†A_mlincomb, per-pair support masks), plugged intocompute_action_terms— soaction/leakage/generator/pc_step/pc_step_orbit_repall inherit it. Includes a one-sided fast path: strings touching only one of a pair's two sites collapse to±½[K·A_n†A_m, p](4 Pauli products instead of 12; the dominant case for local strings under dense K).Lindbladian(..., kossakowski=(ops, K)), validating Hermiticity and positive semidefiniteness (raises — no silent clipping). Coexists withjump_terms.Dissipative
pc_step_orbit_repvalidation: the orbit path applies jump/Kossakowski terms correctly with no code change. Under the 1/|G| projection convention ofcanonicalize_basis_arr_complex(c_rep = coeff_word/|Stab|), the phase-aware action is exact for any translation-equivariant generator, including transitions between orbits of different sizes (the non-unital Z→I flow). Corollary (documented + tested): a translation-invariant {I,Z} observable reads out as|G|·Σ c_rep.Numbers
Measured per-
pc_stepwall (criterion, B=4096, superradiance chain d=0.1λ₀), eigenmode jumps vs Kossakowski:(pre-optimization Kossakowski walls; two further kept optimizations take another ~40% off — full history in
docs/autotune/2026-07-16-kossakowski/).Validation
🤖 Generated with Claude Code