Skip to content

Feature/test drag#296

Merged
sylvain-guillet merged 23 commits into
mainfrom
feature/test-drag
Mar 4, 2026
Merged

Feature/test drag#296
sylvain-guillet merged 23 commits into
mainfrom
feature/test-drag

Conversation

@sylvain-guillet

Copy link
Copy Markdown
Contributor

This pull request updates the propagation and ephemeris API to simplify usage, improve clarity, and make SSB-relative state handling an internal detail. The most significant changes are that all Propagate() methods now return a PropagationSolution for dense output, SSB-specific methods have been removed from the public API, and SPK files are now written with central-body-relative states. Documentation and tests have been updated accordingly.

API and Behavior Changes:

  • All Propagate() methods (PropagatorBase, CentralBodyPropagator, TLEPropagator, Spacecraft.Propagate() / PropagateAsync()) now return a PropagationSolution object, enabling dense output via InterpolateAt(epoch). Previously, callers accessed propagated states directly from StateVectorsRelativeToICRF. [1] [2] [3] [4] [5] [6] [7]
  • SSB-specific methods (GetGeometricStateFromICRF, GetEphemerisFromICRF) have been removed from public interfaces and are now internal. Equivalent functionality is available using GetEphemeris(epoch, target, observer, frame, aberration) with SSB as the observer. SSB-relative states are now used internally only for aberration correction and star positions. [1] [2]
  • SPK ephemeris files written by Spacecraft.WriteEphemeris() now contain states relative to the central body, not SSB; SPICE will chain ephemerides automatically using the center body ID.

Documentation Updates:

  • Updated documentation in DEVELOPER_GUIDE.md to reflect the new propagation API, clarify that StateVectorsRelativeToICRF are CB-relative, and document the internal use of SSB-relative states. [1] [2] [3] [4] [5] [6] [7] [8] [9]

Test Suite Updates:

  • Updated tests in ConfigurationTest.cs to use the new GetEphemeris method (with explicit observer argument) instead of the removed GetEphemerisFromICRF. Test names and assertions were updated to match the new API. [1] [2] [3]

sylvain-guillet and others added 23 commits February 25, 2026 16:12
…tPropagator

SpacecraftPropagator now owns all force building for custom integrators,
mirroring the existing VV convenience constructor pattern. RK78Integrator
constructors no longer require forces or initial state; forces are added
via AddForce() and Initialize() is called by the propagator.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement dual-mode propagator: SSB-centered (existing, for interplanetary)
and central-body-centered (new, for planetary satellite missions). The
central-body mode avoids catastrophic cancellation in double precision
that occurs when computing satellite-to-body vectors from SSB-centered
positions (~5 significant digits lost for LEO).

- Add ThirdBodyPerturbation force using Battin's numerically stable
  formulation: a = -mu / |r-d|^3 * (r + f(q)*d), where f(q) stably
  computes (1+q)^(3/2)-1 and |r-d|^3 = |d|^3*(1+q)^(3/2)
- Add centralBody constructor overloads to SpacecraftPropagator
- Replace old propagation tests with conformance-based tests from
  GMAT R2025a reference data (cases 001, 002, 003)
- Both modes tested against same GMAT reference within tolerances

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tests; remove .NET 8.0 support

- Introduce PropagatorBase, SsbPropagator, and CentralBodyPropagator for modular propagation modes
- Implement conformance and infrastructure tests for new propagators
- Update Spacecraft propagation logic to select appropriate propagator based on observer type
- Remove .NET 8.0 target from project files and NuSpec; standardize on net10.0
- Refactor usages and comments for new propagator classes
- Adjust test tolerances and assertions for improved accuracy and consistency
…nd test project references for consistent community linkage; add CLAUDE.md with repository guidance
…formance; refactor GetEphemeris methods and introduce PropagationEphemerisCache
…tate vector handling; convert CB-relative states to SSB-relative on demand and optimize ephemeris retrieval
…ctors for force evaluation; implement UpdateState method for improved state management
…n-SPICE observers; enhance GetGeometricStateRelativeTo methods across celestial objects
…mputation for non-SPICE observers; reduce SSB round-trips and improve memory allocation efficiency
…amics propagation

- Added performance benchmark results for RK78 integration methods in Markdown, CSV, and HTML formats.
- Implemented BisectionEventFinder for root-finding within integration steps using cubic Hermite interpolation.
- Created AcceptedStep struct to represent integration steps with start and end states.
- Introduced CrossingDirection enum to specify event triggering directions.
- Developed IEventDetector interface for industry-standard event detection based on continuous g-functions.
- Implemented ManeuverEventDetector class to handle impulse maneuvers and event-driven triggering.
- Added IntegrationResult struct to encapsulate results of integration segments, including detected events.
- Created PropagationSegment class to manage continuous propagation arcs and provide cubic Hermite interpolation.
- Developed PropagationSolution class to manage multiple segments and interpolate states at given epochs.
…ralBodyPropagator, implement segment-based event-driven maneuver execution, and enhance event detection system with g-function approach.
…espectively; add IO.Astrodynamics.CLI project to solution
…propagator-rework

# Conflicts:
#	src/community/IO.Astrodynamics.Net/IO.Astrodynamics.Tests/Propagators/PropagatorTests.cs
@sylvain-guillet sylvain-guillet self-assigned this Mar 4, 2026
@sylvain-guillet sylvain-guillet merged commit dd26168 into main Mar 4, 2026
4 checks passed
@sylvain-guillet sylvain-guillet deleted the feature/test-drag branch March 4, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant