Skip to content

Fix/triad#307

Merged
sylvain-guillet merged 47 commits into
mainfrom
fix/triad
Mar 22, 2026
Merged

Fix/triad#307
sylvain-guillet merged 47 commits into
mainfrom
fix/triad

Conversation

@sylvain-guillet

Copy link
Copy Markdown
Contributor

This pull request adds comprehensive new unit tests and minor improvements to the astrodynamics library, focusing on attitude targeting, matrix operations, special functions, and state vector transformations. It also introduces a new property for spacecraft conjunction analysis. The changes improve test coverage, clarify the default behavior for aberration handling, and add functionality for matrix and vector operations.

Attitude Targeting and Aberration Handling:

  • Added and updated tests in CelestialAttitudeTargetTests.cs and TriadAttitudeTests.cs to clarify that the default aberration for celestial targets is now Aberration.None (geometric), ensuring consistency with orbital direction targets. Regression and difference tests were added to verify this behavior and its impact on attitude calculations. [1] [2] [3] [4] [5]
  • Increased the precision threshold in several attitude alignment assertions for stricter validation. [1] [2]
  • Added a helper method to create a propagated target spacecraft for use in attitude tests.

Attitude Targeting and Aberration Handling

  • Default aberration for CelestialAttitudeTarget is now Aberration.None (geometric); new and updated tests verify default and explicit aberration behaviors, and ensure consistency in triad attitude calculations when mixing celestial and orbital targets. [1] [2] [3] [4] [5]
  • Precision of alignment checks in attitude tests increased for stricter validation. [1] [2]
  • Added helper for creating a propagated target spacecraft in triad attitude tests.

sylvain-guillet and others added 30 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
Add MSBuild-based license validation for IO.Astrodynamics.Pro NuGet
consumers (IOASTRO001/IOASTRO002 errors) with internal build bypass.
Create smoke test project validating both license enforcement and
package functionality from NuGet. Modernize community NuGet packaging
by replacing .nuspec with csproj-based approach (fixes missing MathNet
dependencies and adds proper runtimes/ layout for native libraries).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The .nuspec was replaced by csproj-based packaging in the previous
commit. Update the CD workflow to use plain dotnet pack.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…license

# Conflicts:
#	src/community/IO.Astrodynamics.Net/IO.Astrodynamics/IO.Astrodynamics.csproj
sylvain-guillet and others added 17 commits March 6, 2026 18:46
- Introduced `AlbedoRadiationPressure` class to model the perturbation from sunlight reflected off celestial bodies onto spacecraft.
- Created `CentralBodyPropagatorBuilder` to facilitate the construction of propagators with albedo effects.
- Added tests for albedo radiation pressure in `AlbedoRadiationPressureTests` to validate the implementation.
- Updated `CelestialBody` class to include an `Albedo` property.
- Modified project files to include necessary references and configurations for the new features.
…IEarthOrientationParameters interface, and GCRF, CIRS, TIRS frames
@sylvain-guillet sylvain-guillet self-assigned this Mar 22, 2026
@sylvain-guillet sylvain-guillet merged commit 782fe5f into main Mar 22, 2026
4 checks passed
@sylvain-guillet sylvain-guillet deleted the fix/triad branch March 22, 2026 20:27
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