6 Commits
Author SHA1 Message Date
connorandClaude Opus 5 639c8dcb32 Return Result where a precondition is on the data
Five conversions panicked on a condition the caller may have no control over:
elements from a non-inertial state, geodetic coordinates from a non-body-fixed
one, a look direction across frames, and equinoctial elements for a retrograde
orbit. Inclination and frame are data, so a catalog with a retrograde object or
a state read from a file would abort the process.

ConversionError covers the three cases, and reads as a failure of the value
rather than of the code. FrameError stays for a rotation that could not be
produced, which is a different thing.

The four should_panic tests became error assertions, which say more than they
did: the retrograde one now also checks that Keplerian elements still work,
since that is the fallback the error leaves open.

The debug_asserts in state_derivative are untouched. ordinary-diffeq's
right-hand side returns SVector and not Result, so a derivative cannot report
anything; moving those checks to assembly time is filed separately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M9aqCoSmjgoaTbewDHAZhh
2026-09-30 20:12:47 -04:00
connor b089b206f5 Added full cartesian support with (the beginning of) frames 2026-09-30 15:38:04 -04:00
connor 412d96dde0 Some initial benchmarks and utilities, including keplerian elements. More typed coordinate stuff to come 2026-09-30 14:48:48 -04:00
connor 77a1539e8d Lots of small item cleanup. Renamed Dynamics, added a typed state, and included force separate from accel 2026-09-30 13:52:11 -04:00
connor 34813f5a8b Initial stab at propagator + two body dynamics 2026-09-30 12:44:05 -04:00
connor 0087f831fb Added State Layouts and a few niceties like examples, git hooks, etc 2026-09-30 11:07:20 -04:00