The split collar's crossing limit reads the walk-off of empty columns and bands

Chiusa
#440 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Una pull request collegata è già stata integrata.

  • #439 di @jtravs — integrata

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
12/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
numpy, python

Direzione di ricerca

The limit is computed by solprop.translate.linop.walk_off_rate, which takes the largest walk-off over all reference-frequency columns and the requested band. Read that function, then the step-size collar in the propagation loop, and the witnesses in tests/test_transverse_reads.py. Done means radial_filament_512 and cartesian_filament_256 land within 1 % of unclamped step counts while the #149 witnesses still leave less than 1e-3 of the launch.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area: boundaries area: steppers performance priority: low
What happens

#439 (for #149) holds split-collar steps to 0.5 w / max|dtau/dz|. The rate comes from the translated operator (solprop.translate.linop.walk_off_rate), not from where the light is. It takes the largest of two sets of bins: every column at the reference frequency, and the frame's column over the requested band. Because nothing in it depends on where the light is, it is conservative in three ways, each measured on an Apple M5 Max:

  • Empty columns at the carrier. On radial_filament_512 and cartesian_filament_256, the outermost transverse columns' walk-off at 800 nm sets the limit, at 3.0e-4 m and 8.8e-4 m. Those columns hold little of the filament's light. Accepted steps rise from 130 to 173 and from 55 to 67. In SEP 40's tilted-packet witnesses (tests/test_transverse_reads.py) the frame follows the packet, so the empty on-axis columns walk at 4e-10 s/m against it. The limit would be 1.1e-4 m, and #439 runs those witnesses without a temporal collar instead.
  • The whole requested band on the frame's column. On the #149 GNLSE witness the band's bluest bin walks 6.6 times faster than the pulse does. Multistep takes 95 steps where about 23 at the pulse's own rate would do (#149's dz_max = 0.074 m row).
  • Evanescent columns of a tabulated operator. A separable operator's evanescent bins are passed over. A radial (tabulated) operator's are not: on a radial grid fine enough to hold an evanescent column at the reference frequency, that column reads the frame's rate, about 1/c, and the limit collapses.
Why it matters

These are step costs, not wrong answers: the limit only binds when it is stricter than the run needs. But a filament on a fine grid pays a third more steps for light that is not there.

To do
  • Weigh a rate taken over where the light is, read from the launch or at the monitor's checks. Any such rate must still work on the native, numba_cpu and numpy_ref step loops, and must not move the tracking cases' steps.
  • Exclude evanescent bins on tabulated operators. That needs the column's longitudinal wavenumber, which LinearOperator.beta0 does not give on the radial route: it is recorded as 0 there.
Done when

radial_filament_512 and cartesian_filament_256 take within 1 % of their unclamped step counts while #149's two witnesses still leave less than 1e-3 of the launch.

Lingua principale
Python
Stelle
3
Fork
3
Merge medio
8h 37m
PR unite (30g)
159

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di LupoLab/solprop

Tutte le issue di LupoLab/solprop

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.