Repository navigation
Conversation
warn_walkoff and the sizing of absorber(grid, walkoff=...) took the temporal rate's integral by a trapezoid over grid.t, which stops one sample short of closing the period and so read (w - dt) of the exact w. Both now take the rectangle sum over the samples, exact on the periodic axis for the Planck taper, so the keyword and the warning stay one condition and a collar sized for a drift removes exactly exp(-2 Gamma). The tests that carried the one sample in their bounds now hold the closed form to the sizing's rounding margin, and a new test pins the warning's threshold at 6.3 w L / (Gamma ell) on both grids. Closes #490 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
_check_exponent_budget said only that the modal kinds are not checked. The reason is LossPolicy: a mode's loss reaches D through dispersion_operator, whose default limit holds the power attenuation to 2 * 708 / length, so no step within the run forms an amplitude exponent past 708, below log(DBL_MAX). The docstring, the kernel contract and the linear-operator guide now say so and name what lies outside the reason: gain, a raised max_alpha and the absorber's rates, added after the clamp. A numpy_ref test replays a fibre whose unclamped loss would form e^5000 a step, with RungeKutta and Multistep, and holds the clamped exponent to 708/4 a step, no budget warning and a finite field. Closes #272 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
The boundaries guide integrated alpha S over the saved planes by the trapezoid. In the bins a walk-off absorber is for, alpha dz is large and the trapezoid charges light that is gone within a fraction of the interval at the plane's value, overcounting a band's loss by up to twice. The recipe now uses the interval formula: with dS/dz = G - a S and G constant between two planes, the drains removed G dz - (S1 - S0), exact for a bin that only decays and one fed at a steady rate, and each rate takes its share alpha / a. The medium's absorption is one of the drains and now has its own share. On the guide's slab the formula gives the same band loss on 8, 32 and 128 planes to 1e-14, where the trapezoid reads 2.0x, 1.08x and 1.005x of it. A new test holds the formula to the exact exponential on four planes. Refs #573 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
jtravs
marked this pull request as ready for review
November 13, 2026 22:16
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Documentation build overview
43 files changed ·
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH
This branch has not been deployed
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.
warn_walkoffandabsorber(walkoff=)now take the temporal collar's integral as the periodic rectangle sum, which is exact for the taper, instead of a trapezoid that is one sample short. Numerical note: the collar length fromwalkoff=changes by that one-sample term (slightly longer: the docstring example ratio goes from 1.023 to 1.025), and the tests now hold the closed form to 1e-8 (was 2 %). A new test pins the warning's threshold to ±1e-6. No stored goldens use these values.LossPolicykeeps the modal kinds inside the exponent budget they do not check, but nothing records or tests that #272 (partial):_check_exponent_budget's docstring,docs/dev/kernel-contract.mdand the linear-operator guide now say why the separable modal kinds need no exponent-budget check (the defaultLossPolicyclamp keeps the exponent ≤ 708 < ln DBL_MAX), and what falls outside that reason (gain, a raisedmax_alpha, absorber rates). A numpy_ref replay test pins the clamp. The general modal, moving-guide and coupled-block loss routes the issue also lists are not checked here, so this is Refs, not Closes.absorbed_poweris one number for the whole beam: no absorbed spectrum per aperture or region, and the guide's per-band check misjudges absorbed bins #573 (docs part): the boundaries guide's per-band absorbed-energy recipe uses the exact interval formulaG Δz = x (S₁ − S₀e⁻ˣ)/(1 − e⁻ˣ)instead of the trapezoid, which overcounted strongly absorbed bands by up to 2× on few planes. The medium's own absorption gets its share. A test checks the formula is exact on 4 planes. The per-aperture statistic is not implemented.Closes #490
Refs #272
Refs #573
🤖 Generated with Claude Code
https://claude.ai/code/session_01XGENPwwkUUG9KSAwneHjgH