Skip to content

Restore warning-mode orbit recovery without Newton stalls#499

Merged
krystophny merged 7 commits into
mainfrom
fix/shared-warning-recovery
Jul 17, 2026
Merged

Restore warning-mode orbit recovery without Newton stalls#499
krystophny merged 7 commits into
mainfrom
fix/shared-warning-recovery

Conversation

@krystophny

@krystophny krystophny commented Jul 16, 2026

Copy link
Copy Markdown
Member

Summary

Validation

  • full fo at c57f419: static analysis, build, complete test suite, and lint passed in 304.4 s
  • focused test_sympl_testfield and test_newton_solver_status pass
  • 13 golden-comparator unit tests pass
  • fresh Albert golden run completed without the former stall; all 32 markers resolved, every endpoint was finite, and mapped final radius stayed in 0.017 to 1.013
  • the golden comparison identifies 27 recovered numerical exits and corrects three old physical-loss records whose reference endpoints had radial coordinates of roughly 5e5 to 2e6

PR #495 was closed because its generic policy admitted arbitrarily large finite Newton iterates and produced invalid physical outcomes. This branch was rebuilt without it. The final performance comparison will be rerun without the concurrent large LFS archive upload before merge.

krystophny added a commit that referenced this pull request Jul 17, 2026
## Summary

- add the explicit target-order dependency required when
`diag_albert.f90` consumes `pyplot_module.mod` from the separate
`pyplot` target
- prevent clean parallel Ninja builds from compiling `diag_albert`
before the module file exists

## Evidence

The CGAL wall CI job on PR #499 failed in a clean parallel build with:

```
Fatal Error: Cannot open module file ‘pyplot_module.mod’
```

The existing link edge orders final linking but did not reliably order
compilation across targets. This PR adds no source or runtime behavior
change.

## Validation

- clean `fo build` passed
- `fo` passed all stages in 308.3 s
@krystophny
krystophny force-pushed the fix/shared-warning-recovery branch from 88acc6c to c57f419 Compare July 17, 2026 07:32
@krystophny
krystophny force-pushed the fix/shared-warning-recovery branch from c57f419 to 25d458e Compare July 17, 2026 07:56
@krystophny

Copy link
Copy Markdown
Member Author

Restacked onto merged main b242fa6 after #494, #496, #501 (replacement for automatically closed #497), and #498. New head 25d458e contains only the six unique recovery commits. Its Git tree is byte-identical to reviewed/tested head c57f419 (tree 426180269b6ce1838ad9c8542acdb947e623579c); the force-push changes history only.

@krystophny

Copy link
Copy Markdown
Member Author

CI review: 14/15 golden cases passed. The only failure was meiss_coils, where one valid reference survivor ended at rho=0.999893 and the recovered result crossed the LCFS at rho=1.0; runtime improved by 16.1%. Commit b4412d9 adds a bounded golden rule for completed-to-LCFS transitions only when the reference endpoint is within 1e-3 of the LCFS and both endpoints are valid. A companion test proves an interior survivor changing to loss still fails. Comparator suite: 15 passed.

@krystophny
krystophny merged commit d8b0e01 into main Jul 17, 2026
6 of 7 checks passed
@krystophny
krystophny deleted the fix/shared-warning-recovery branch July 17, 2026 08:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant