logbook
Strobo 2.0 Progress / Logbook / 2026 04 21 kickoff
Status: executed 2026-04-21. Parameter-plan record of the main sweep; outcomes are in the companion log 2026-04-21-sweep-complete.md. Author/operator: uwarring (with Claude)
v0.2 edits (2026-04-21, post-preflight). §1 observable list, §4.2,
§4.3, §4.4, §5 grid count, §8 execution plan and §9 open questions
updated after preflight invalidated the original single-run |C|
identity (see §4.2 for details) and to reflect the as-implemented
data format (one combined .npz + manifest) and observable count
(five reported observables, not three). The original v0.1 text is
preserved in git history.
Map the joint dependence of five observables on two control axes for two short AC pulse-train configurations:
|C| = √(a_x² + a_y²) — amplitude of the σ_z
fringe when scanning the train's analysis phase φ, matching the
Hasse Fig. 2(b) "0.76(3)" contrast metric. Extracted from two
runs per grid cell (initial spin |+x⟩ and |+y⟩).arg C = atan2(a_y, a_x) — the value of φ that
maximises σ_z.sz_A from Run A).Total: 5 observables × 3 α-values × 2 trains = 30 heatmap panels, published as 5 figures of 2 × 3 panels each.
Device-scale parameters (train-independent):
| Symbol | Value | Meaning |
|---|---|---|
| ω_m/(2π) | 1.306 MHz | Motional (LF) frequency |
| T_m | 0.7657 µs | Motional period = 2π/ω_m |
| η | 0.395 | Effective Lamb–Dicke parameter |
| e⁻η²⁄² | 0.9250 | Debye–Waller factor |
| Δt | 0.770 µs | Inter-pulse spacing |
| Δt / T_m | 1.0056 (+0.56 %) | Slightly super-stroboscopic |
Train configurations, with Ω chosen per train so that
N·Ω·e⁻η²⁄²·δt = π/2 (full π/2 analysis rotation on ground motion,
matching the Hasse 2024 App. D convention):
| Train | N | δt (ns) | Ω/(2π) (MHz) | θ_pulse = Ω·δt·e⁻η²⁄² (rad) | N·θ_pulse (rad) | Total duration |
|---|---|---|---|---|---|---|
| T1 | 3 | 100 | 0.9008 | 0.5236 (30.0°) | 1.5708 = π/2 | 2·Δt + 3·δt = 1.84 µs |
| T2 | 7 | 50 | 0.7722 | 0.2244 (12.86°) | 1.5708 = π/2 | 6·Δt + 7·δt = 4.97 µs |
Per-pulse rotation is moderate for T1 (0.52 rad ≈ π/6) and weak for T2 (0.22 rad ≈ π/14). The trains share the same accumulated rotation but distribute it very differently in time. Ω_eff/ω_m ≈ 0.64 (T1) / 0.55 (T2) — both well into the strong-drive regime where a plain Magnus expansion misses important structure; the engine handles this exactly via Fock-basis matrix exponentiation.
Near-stroboscopic-resonant caveat. Δt is 0.56 % longer than T_m. Over a 7-pulse train this accumulates to Δφ_strobo = 2π·7·0.0056 ≈ 14.1° of motional-phase slip from first to last pulse — not negligible for T2. For T1 (2 inter-pulse intervals) the slip is ≈ 4.0°. Flagged for interpretation.
History note. The initial v0.1 run used a single pre-calibration value Ω/(2π) = 0.178 MHz, delivering only N·θ_pulse ≈ π/9 per train (weak probe; max |C| ≈ 0.35). That dataset is superseded by the π/2-calibrated sweep of this v0.3 configuration. The Rabi-rate reconciliation memo is updated accordingly.
t = 0: prepare |+x⟩ ⊗ |α e^{i ϑ₀}⟩
then: AC pulse train (N pulses, duration δt, spacing Δt, detuning δ₀)
readout: ⟨σ_x⟩, ⟨σ_y⟩, ⟨σ_z⟩, ⟨n⟩
Ω_T{k}/(2π) = 1 / (4 · N_k · δt_k · e^{−η²/2})
giving Ω_T1/(2π) = 0.9008 MHz and Ω_T2/(2π) = 0.7722 MHz (see §2). This supersedes the single-Ω sweep of the initial strobo 2.0 run, which used the pre-calibration value Ω/(2π) = 0.178 MHz and delivered only N·θ_pulse ≈ π/9. The σ_z(φ) = a_I + a_x cos φ + a_y sin φ fringe structure in §4.2 is kinematic and holds at any N·θ; at the π/2 calibration the fringe amplitude saturates at ≈ 1 on ground motion and the numerical value of |C| becomes directly comparable to the Hasse 2024 "0.76(3)" contrast at |α| ≈ 3. - No separate closing π/2. The train is the only spin-coupling element between state prep and readout — the train is the analysis π/2.
δ⟨n⟩(δ₀, ϑ₀; |α|, N, δt) = ⟨n⟩_fin − ⟨n⟩_ini
with ⟨n⟩_ini = |α|² exactly (coherent initial state) and ⟨n⟩_fin computed from the reduced motional density matrix after tracing out spin. Matches Hasse 2024 App. D and Fig. 6b. The full definition (canonical analysis phase, reporting choice, and units) is in §4.4.
In Hasse 2024 the AC pulse train is calibrated to a full π/2 analysis
rotation (30 × 100 ns), and scanning the train's global phase φ produces
a near-unity Ramsey-like fringe. Strobo 2.0 applies the same calibration
rule to its shorter trains (§3): each of T1 and T2 is tuned in Ω so
that N·Ω·e⁻η²⁄²·δt = π/2. By the lab-frame equivalence
U(φ) = R_z(φ) U(0) R_z(φ)†, scanning the train's global phase φ is
equivalent to scanning the initial-spin azimuth by −φ, so
⟨σ_z⟩(φ) = a_I(δ₀, ϑ₀) + a_x(δ₀, ϑ₀) cos φ + a_y(δ₀, ϑ₀) sin φ.
The coherence contrast (directly comparable to the "0.76(3)" in Hasse Fig. 2(b), since both are measured under a π/2-calibrated train) is the fringe amplitude:
|C|(δ₀, ϑ₀) ≡ √(a_x² + a_y²),
arg C(δ₀, ϑ₀) ≡ atan2(a_y, a_x) (the φ value that maximises σ_z).
On the ground motional state at δ₀ = 0 this saturates at sin(π/2) = 1; finite |α| and finite-δ₀ departures from saturation then produce the structure mapped by this WP.
Preflight 2026-04-21 disproved the single-run identification
|C| = |⟨σ_x⟩ + i⟨σ_y⟩| that appeared in the kickoff v0.1 draft. That
identity holds only for a Ramsey scheme with a separate closing π/2
at phase φ; the AC-train-as-π/2 protocol of this WP requires two runs
per grid cell to isolate a_x and a_y. Preflight measured, at
(|α| = 3, δ₀ = 0, ϑ₀ = 0, T2):
These differ by a factor of ~2.7 — the first is the spin Bloch x-y projection after the train, the second is the Hasse coherence. We adopt the second.
Two-run evaluation per (δ₀, ϑ₀) cell.
sz_A, nbar_A.sz_B, nbar_B.Then (assuming a_I ≈ 0, to be checked):
a_x ≈ sz_A, a_y ≈ sz_B.|C| = √(sz_A² + sz_B²).arg C = atan2(sz_B, sz_A).a_I offset check. At the anchor and at one α = 4.5 point, also run
init |−x⟩ (phi_spin_deg = 180) and form a_I = (sz_A + sz(−x))/2,
a_x_corr = (sz_A − sz(−x))/2. Proceed with two-run evaluation only if
|a_I| ≤ 1 × 10⁻² throughout. If the offset is larger anywhere, promote
to a four-run-per-cell evaluation (spins at {+x, +y, −x, −y}).
σ_z is reported at fixed φ = 0, i.e. sz_A from Run A (initial spin
|+x⟩, engine ac_phase = 0). This is the direct read-out at the canonical
analysis-phase choice; the arg C heatmap of §4.2 records the phase at
which σ_z is instead maximised.
δ⟨n⟩ is reported at the canonical analysis phase φ = 0 and at its orthogonal companion φ = π/2:
δ⟨n⟩_A (δ₀, ϑ₀) = nbar_A − |α|² (at φ = 0, from Run A)
δ⟨n⟩_B (δ₀, ϑ₀) = nbar_B − |α|² (at φ = π/2, from Run B)
Hasse Fig. 6b shows δ⟨n⟩ over the two-axis (φ, ϑ₀) plane; our sheets are two orthogonal cuts through the analogous surface.
Units. δ⟨n⟩ is reported in raw quanta in the dataset and plot labels; the fractional form δ⟨n⟩/|α|² (Hasse-style, ±1 range) can be recovered by element-wise division at read time, since |α| is recorded in the manifest per sheet. This supersedes the kickoff-v0.1 plan (§9 Q4) of auto-normalising to fractional — keeping the raw numbers in the archive avoids numerical blow-up as |α| → 0 and keeps the reported amplitude directly comparable to the engine's nbar output.
| Axis | Range | Points |
|---|---|---|
| δ₀/(2π) | [−10, +10] MHz, uniform | 81 |
| ϑ₀ | [0, 2π), uniform | 64 |
| α | ||
| Train | {T1 = 3×100 ns, T2 = 7×50 ns} | 2 |
Grid cells: 81 · 64 · 3 · 2 = 31 104 cells.
Engine calls: 2 · 31 104 / 81 = 768 calls to run_single, each
sweeping 81 detunings internally (2 initial-spin runs × 64 ϑ₀ × 3 α ×
2 trains). Fock cutoff: N_max = 60 (ample for |α| = 4.5 with
⟨n⟩ = 20.25; see §8 step 2).
Two distinct reference points are used:
Following scripts/stroboscopic_sweep.py (the intended execution engine):
α = |α| · exp(i · ϑ₀) in D(α) = exp(α a† − α* a).X = a + a†. → ϑ₀ = 0 prepares the ion on +X̂
(⟨X̂⟩ > 0, ⟨P̂⟩ = 0); ϑ₀ = π/2 prepares on +P̂.(ℏΩ/2) · [C(η, a, a†) σ₋ + c.c. σ₊] with
C(η, a, a†) = exp(i η (a† + a)), evaluated in the frame rotating at
the carrier — detuning δ₀ enters as a free σ_z/2 · δ₀ term during both
pulses and inter-pulse intervals.U_free(Δt) with `H_free = ω_m a†aPredictions to verify before accepting the sweep data.
As executed 2026-04-21 (see 2026-04-21-sweep-complete.md):
{train}_alpha{|α|}_{observable}) with one
numerics/strobo2p0_manifest.json
recording parameters, observable contract, and runtime.N·Ω·e⁻η²⁄²·δt = π/2
(Ω_T1/(2π) = 0.9008 MHz, Ω_T2/(2π) = 0.7722 MHz). Matches the
Hasse 2024 App. D convention. See
2026-04-21-rabi-reconciliation.md
for the five candidate values considered and
plots/00_rabi_calibration.png
for the |C|_vacuum curve.v0.1 2026-04-21 — initial draft. v0.2 2026-04-21 — observable contract corrected after preflight. v0.3 2026-04-21 — per-train π/2 calibration: Ω is train-specific, §2 rewritten accordingly, §3 sequence layout reframed as "π/2 analysis pulse per train," §4.2 caveat removed (|C| is now directly comparable to Hasse 2024 Fig. 2(b)), §9 Q1 resolved.