Skip to content

Euler-Lagrange integration accepts ~2.3x more ODE steps since #355 #379

Description

@matt-pharr

Noticed while validating #365 (which is unaffected — its trajectory is bit-identical on both sides of this change).

Symptom

examples/DIIID-like_ideal_example, same deck, same environment, same machine:

ref integration/nstep_total (accepted) integration/nstep (saved)
5b6ba34a (pre-#355, matches all July-era runs) 2002 1366
1d30dfba and current develop 4644 2636

Roughly 2.3x the accepted steps, with the saved count following (bands + every save_interval-th step). Since the EL integration dominates wall time, this is approximately a 2x runtime and solution-storage increase on every run.

The trajectory is not wrong — at the saved nodes the solution is bit-identical across #365's merges at both densities, and the resonant quantities agree to ~1e-10. The step controller is simply accepting more, smaller steps.

Ruled out

  • save_interval default, the save-band condition, near_q_frac, and the chunking code are textually unchanged across the range.
  • The example deck's [ForceFreeStates] settings are unchanged (comment drift only).
  • psilim/qlim are identical in the runs (0.995 / 6.200), so the domain and the edge-scan band did not move.

Bracket

5b6ba34a..1d30dfba contains only #355 (ab329276), the #357 docs merge, and a benchmarks cleanup — #355 is the only src change. Plausible mechanism: a numerical change in how the EL matrices or their splines are built (the freeze-control/locstab refactor touched Sing.jl), slightly changing the RHS smoothness and making the Vern9 controller more conservative. Not yet bisected within #355.

Reproduce

git worktree add ../pre355 5b6ba34a
# run examples/DIIID-like_ideal_example in both trees, then compare
# integration/nstep_total in gpec.h5

Metadata

Metadata

Assignees

Labels

help wantedExtra attention is needed

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions