|
|
|
@ -5,7 +5,7 @@ Test cases for Newton-Raphson analytical propagation implementation, organized b |
|
|
|
|
|
|
|
|
|
|
|
## File Organization |
|
|
|
## File Organization |
|
|
|
Each test file requires a dedicated config file (1:1 mapping). |
|
|
|
Each test file requires a dedicated config file (1:1 mapping). |
|
|
|
Total estimated test files: 13-14 |
|
|
|
Total estimated test files: 11 (reduced from 14 after overlap analysis) |
|
|
|
|
|
|
|
|
|
|
|
## Current Progress (2026-01-31) |
|
|
|
## Current Progress (2026-01-31) |
|
|
|
|
|
|
|
|
|
|
|
@ -186,7 +186,7 @@ Total estimated test files: 13-14 |
|
|
|
- 849a212 Fix orbital_elements_to_cartesian: circular orbit velocity and refactor for clarity |
|
|
|
- 849a212 Fix orbital_elements_to_cartesian: circular orbit velocity and refactor for clarity |
|
|
|
- 986a94e Update test plan: document progress on 3 fixed test files |
|
|
|
- 986a94e Update test plan: document progress on 3 fixed test files |
|
|
|
|
|
|
|
|
|
|
|
### Remaining Tests (8 files) |
|
|
|
### Remaining Tests (5 files) |
|
|
|
|
|
|
|
|
|
|
|
#### 7. ⬜ test_cartesian_to_elements_extreme.cpp + .toml |
|
|
|
#### 7. ⬜ test_cartesian_to_elements_extreme.cpp + .toml |
|
|
|
- Purpose: Edge cases in orbital parameters |
|
|
|
- Purpose: Edge cases in orbital parameters |
|
|
|
@ -202,12 +202,13 @@ Total estimated test files: 13-14 |
|
|
|
- Rotation singularities for polar |
|
|
|
- Rotation singularities for polar |
|
|
|
|
|
|
|
|
|
|
|
#### 8. ⬜ test_cartesian_to_elements_quadrature.cpp + .toml |
|
|
|
#### 8. ⬜ test_cartesian_to_elements_quadrature.cpp + .toml |
|
|
|
- Purpose: Test calculations at orbital quadrature points |
|
|
|
- Purpose: Test cartesian→elements conversion at quadrature points |
|
|
|
- Config: Spacecraft at true anomalies: 0, π/2, π, 3π/2 |
|
|
|
- Config: Spacecraft at true anomalies: 0, π/2, π, 3π/2 |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
- Cross product calculations at quadrants |
|
|
|
- Cross product calculations at quadrants |
|
|
|
- Eccentricity vector accuracy |
|
|
|
- Eccentricity vector accuracy |
|
|
|
- Position/velocity vector relationships |
|
|
|
- Position/velocity vector relationships |
|
|
|
|
|
|
|
- NOTE: Tests NEW function (opposite direction of test_inclined_orbits) |
|
|
|
|
|
|
|
|
|
|
|
#### 9. ⬜ test_hybrid_impulse_burns.cpp + .toml |
|
|
|
#### 9. ⬜ test_hybrid_impulse_burns.cpp + .toml |
|
|
|
- Purpose: Impulsive burn handling |
|
|
|
- Purpose: Impulsive burn handling |
|
|
|
@ -236,17 +237,15 @@ Total estimated test files: 13-14 |
|
|
|
- Pre/post burn energy validation |
|
|
|
- Pre/post burn energy validation |
|
|
|
- Long-term energy drift comparison |
|
|
|
- Long-term energy drift comparison |
|
|
|
|
|
|
|
|
|
|
|
#### 12. ⬜ test_extreme_orientation.cpp + .toml |
|
|
|
#### 12. ⬜ test_extreme_orientation_mixed.cpp + .toml |
|
|
|
- Purpose: 3D orientation edge cases |
|
|
|
- Purpose: Combined high inclination + high eccentricity |
|
|
|
- Config: |
|
|
|
- Config: |
|
|
|
- Polar orbit (i=90°) |
|
|
|
- High inclination (i>π/3) + high eccentricity (e>0.8) |
|
|
|
- Retrograde orbit (i=180°) |
|
|
|
|
|
|
|
- Mixed: high inclination + high eccentricity |
|
|
|
|
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
- Rotation matrix behavior at i=π/2 |
|
|
|
- Rotation matrix behavior at extreme combinations |
|
|
|
- Ω and ω singularity handling |
|
|
|
- Ω and ω singularity handling |
|
|
|
- Z-coordinate preservation for polar |
|
|
|
|
|
|
|
- Velocity vector orientation |
|
|
|
- Velocity vector orientation |
|
|
|
|
|
|
|
- NOTE: Removed duplicate polar/retrograde tests (covered by test_precision_boundaries) |
|
|
|
|
|
|
|
|
|
|
|
#### 13. ⬜ test_extreme_timescales.cpp + .toml |
|
|
|
#### 13. ⬜ test_extreme_timescales.cpp + .toml |
|
|
|
- Purpose: Orbital period extremes |
|
|
|
- Purpose: Orbital period extremes |
|
|
|
@ -261,19 +260,11 @@ Total estimated test files: 13-14 |
|
|
|
- Low altitude: atmospheric boundary (if applicable) |
|
|
|
- Low altitude: atmospheric boundary (if applicable) |
|
|
|
- Long-duration propagation (10+ periods) |
|
|
|
- Long-duration propagation (10+ periods) |
|
|
|
|
|
|
|
|
|
|
|
#### 14. ⬜ test_energy_conservation_analytical.cpp + .toml (OPTIONAL) |
|
|
|
|
|
|
|
- Purpose: Long-term energy conservation validation |
|
|
|
|
|
|
|
- Config: Standard circular/elliptical orbit |
|
|
|
|
|
|
|
- Tests: |
|
|
|
|
|
|
|
- Energy drift over 10+ orbital periods |
|
|
|
|
|
|
|
- Kinetic/potential energy consistency |
|
|
|
|
|
|
|
- Vis-viva equation verification at all anomalies |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Phase 1: Core Math Functions |
|
|
|
## Phase 1: Core Math Functions |
|
|
|
|
|
|
|
|
|
|
|
### Cartesian to Orbital Elements (3 files) |
|
|
|
### Cartesian to Orbital Elements (3 files) |
|
|
|
|
|
|
|
|
|
|
|
#### 1. test_cartesian_to_elements_basic.cpp + .toml |
|
|
|
#### 1. ✅ test_cartesian_to_elements_basic.cpp + .toml |
|
|
|
- Purpose: Basic round-trip conversion accuracy |
|
|
|
- Purpose: Basic round-trip conversion accuracy |
|
|
|
- Config: Moderate eccentricity, zero inclination orbit |
|
|
|
- Config: Moderate eccentricity, zero inclination orbit |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -281,7 +272,7 @@ Total estimated test files: 13-14 |
|
|
|
- Position/velocity magnitude preservation |
|
|
|
- Position/velocity magnitude preservation |
|
|
|
- Semi-major axis, eccentricity accuracy |
|
|
|
- Semi-major axis, eccentricity accuracy |
|
|
|
|
|
|
|
|
|
|
|
#### 2. test_cartesian_to_elements_extreme.cpp + .toml |
|
|
|
#### 7. ⬜ test_cartesian_to_elements_extreme.cpp + .toml |
|
|
|
- Purpose: Edge cases in orbital parameters |
|
|
|
- Purpose: Edge cases in orbital parameters |
|
|
|
- Config: Multiple spacecraft in same config |
|
|
|
- Config: Multiple spacecraft in same config |
|
|
|
- Near-circular (e=0.001) |
|
|
|
- Near-circular (e=0.001) |
|
|
|
@ -294,17 +285,18 @@ Total estimated test files: 13-14 |
|
|
|
- Degenerate Ω calculation for equatorial |
|
|
|
- Degenerate Ω calculation for equatorial |
|
|
|
- Rotation singularities for polar |
|
|
|
- Rotation singularities for polar |
|
|
|
|
|
|
|
|
|
|
|
#### 3. test_cartesian_to_elements_quadrature.cpp + .toml |
|
|
|
#### 8. ⬜ test_cartesian_to_elements_quadrature.cpp + .toml |
|
|
|
- Purpose: Test calculations at orbital quadrature points |
|
|
|
- Purpose: Test cartesian→elements conversion at quadrature points |
|
|
|
- Config: Spacecraft at true anomalies: 0, π/2, π, 3π/2 |
|
|
|
- Config: Spacecraft at true anomalies: 0, π/2, π, 3π/2 |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
- Cross product calculations at quadrants |
|
|
|
- Cross product calculations at quadrants |
|
|
|
- Eccentricity vector accuracy |
|
|
|
- Eccentricity vector accuracy |
|
|
|
- Position/velocity vector relationships |
|
|
|
- Position/velocity vector relationships |
|
|
|
|
|
|
|
- NOTE: Tests NEW function (opposite direction of test_inclined_orbits) |
|
|
|
|
|
|
|
|
|
|
|
### Newton-Raphson Solver (1-2 files) |
|
|
|
### Newton-Raphson Solver (1 file) |
|
|
|
|
|
|
|
|
|
|
|
#### 4. test_newton_raphson_convergence.cpp + .toml |
|
|
|
#### 2. ✅ test_newton_raphson_convergence.cpp (NO CONFIG) |
|
|
|
- Purpose: Verify convergence behavior across eccentricity ranges |
|
|
|
- Purpose: Verify convergence behavior across eccentricity ranges |
|
|
|
- Config: Spacecraft with programmatically varied parameters |
|
|
|
- Config: Spacecraft with programmatically varied parameters |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -313,11 +305,10 @@ Total estimated test files: 13-14 |
|
|
|
- Mean anomaly near π: worst-case convergence |
|
|
|
- Mean anomaly near π: worst-case convergence |
|
|
|
- Large mean anomaly values (M > 1000): periodicity handling |
|
|
|
- Large mean anomaly values (M > 1000): periodicity handling |
|
|
|
- Eccentricity at boundaries (e = 0.9999, 1.0001) |
|
|
|
- Eccentricity at boundaries (e = 0.9999, 1.0001) |
|
|
|
- Note: Could split to separate config if boundary cases need dedicated config |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Analytical Propagation (2 files) |
|
|
|
### Analytical Propagation (2 files) |
|
|
|
|
|
|
|
|
|
|
|
#### 5. test_analytical_propagation_apsides.cpp + .toml |
|
|
|
#### 3. ✅ test_analytical_propagation_apsides.cpp + .toml |
|
|
|
- Purpose: Propagation through orbital apsides |
|
|
|
- Purpose: Propagation through orbital apsides |
|
|
|
- Config: Elliptical orbit |
|
|
|
- Config: Elliptical orbit |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -326,7 +317,7 @@ Total estimated test files: 13-14 |
|
|
|
- At exact orbital period: should return to initial state |
|
|
|
- At exact orbital period: should return to initial state |
|
|
|
- True anomaly accuracy after full orbit |
|
|
|
- True anomaly accuracy after full orbit |
|
|
|
|
|
|
|
|
|
|
|
#### 6. test_analytical_propagation_timesteps.cpp + .toml |
|
|
|
#### 4. ✅ test_analytical_propagation_timesteps.cpp + .toml |
|
|
|
- Purpose: Timestep size validation |
|
|
|
- Purpose: Timestep size validation |
|
|
|
- Config: Standard orbit |
|
|
|
- Config: Standard orbit |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -337,7 +328,7 @@ Total estimated test files: 13-14 |
|
|
|
|
|
|
|
|
|
|
|
## Phase 2: Hybrid Integration |
|
|
|
## Phase 2: Hybrid Integration |
|
|
|
|
|
|
|
|
|
|
|
#### 7. test_hybrid_impulse_burns.cpp + .toml |
|
|
|
#### 9. ⬜ test_hybrid_impulse_burns.cpp + .toml |
|
|
|
- Purpose: Impulsive burn handling |
|
|
|
- Purpose: Impulsive burn handling |
|
|
|
- Config: Spacecraft with pre-configured maneuvers |
|
|
|
- Config: Spacecraft with pre-configured maneuvers |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -347,7 +338,7 @@ Total estimated test files: 13-14 |
|
|
|
- Minimal burns (Δv < 1 m/s) |
|
|
|
- Minimal burns (Δv < 1 m/s) |
|
|
|
- Large burns (Δv > orbital velocity) |
|
|
|
- Large burns (Δv > orbital velocity) |
|
|
|
|
|
|
|
|
|
|
|
#### 8. test_hybrid_continuous_thrust.cpp + .toml |
|
|
|
#### 10. ⬜ test_hybrid_continuous_thrust.cpp + .toml |
|
|
|
- Purpose: Continuous thrust integration |
|
|
|
- Purpose: Continuous thrust integration |
|
|
|
- Config: Spacecraft with finite-duration burns |
|
|
|
- Config: Spacecraft with finite-duration burns |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -356,7 +347,7 @@ Total estimated test files: 13-14 |
|
|
|
- Numerical vs. analytical mode transitions |
|
|
|
- Numerical vs. analytical mode transitions |
|
|
|
- Energy conservation during burns |
|
|
|
- Energy conservation during burns |
|
|
|
|
|
|
|
|
|
|
|
#### 9. test_hybrid_energy_conservation.cpp + .toml |
|
|
|
#### 11. ⬜ test_hybrid_energy_conservation.cpp + .toml |
|
|
|
- Purpose: Compare analytical vs. numerical propagation |
|
|
|
- Purpose: Compare analytical vs. numerical propagation |
|
|
|
- Config: Same spacecraft propagated with both methods |
|
|
|
- Config: Same spacecraft propagated with both methods |
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
@ -366,7 +357,7 @@ Total estimated test files: 13-14 |
|
|
|
|
|
|
|
|
|
|
|
## Extreme Orbits (3 files) |
|
|
|
## Extreme Orbits (3 files) |
|
|
|
|
|
|
|
|
|
|
|
#### 10. test_extreme_eccentricity.cpp + .toml |
|
|
|
#### 5. ✅ test_extreme_eccentricity.cpp + .toml |
|
|
|
- Purpose: Near-parabolic boundary behavior |
|
|
|
- Purpose: Near-parabolic boundary behavior |
|
|
|
- Config: |
|
|
|
- Config: |
|
|
|
- Highly eccentric (e=0.99) |
|
|
|
- Highly eccentric (e=0.99) |
|
|
|
@ -377,19 +368,17 @@ Total estimated test files: 13-14 |
|
|
|
- Velocity magnitude accuracy |
|
|
|
- Velocity magnitude accuracy |
|
|
|
- Period calculation (or lack thereof for e≥1) |
|
|
|
- Period calculation (or lack thereof for e≥1) |
|
|
|
|
|
|
|
|
|
|
|
#### 11. test_extreme_orientation.cpp + .toml |
|
|
|
#### 12. ⬜ test_extreme_orientation_mixed.cpp + .toml |
|
|
|
- Purpose: 3D orientation edge cases |
|
|
|
- Purpose: Combined high inclination + high eccentricity |
|
|
|
- Config: |
|
|
|
- Config: |
|
|
|
- Polar orbit (i=90°) |
|
|
|
- High inclination (i>π/3) + high eccentricity (e>0.8) |
|
|
|
- Retrograde orbit (i=180°) |
|
|
|
|
|
|
|
- Mixed: high inclination + high eccentricity |
|
|
|
|
|
|
|
- Tests: |
|
|
|
- Tests: |
|
|
|
- Rotation matrix behavior at i=π/2 |
|
|
|
- Rotation matrix behavior at extreme combinations |
|
|
|
- Ω and ω singularity handling |
|
|
|
- Ω and ω singularity handling |
|
|
|
- Z-coordinate preservation for polar |
|
|
|
|
|
|
|
- Velocity vector orientation |
|
|
|
- Velocity vector orientation |
|
|
|
|
|
|
|
- NOTE: Removed duplicate polar/retrograde tests (covered by test_precision_boundaries) |
|
|
|
|
|
|
|
|
|
|
|
#### 12. test_extreme_timescales.cpp + .toml |
|
|
|
#### 13. ⬜ test_extreme_timescales.cpp + .toml |
|
|
|
- Purpose: Orbital period extremes |
|
|
|
- Purpose: Orbital period extremes |
|
|
|
- Config: |
|
|
|
- Config: |
|
|
|
- Mercury-like orbiter (period ~88 days) |
|
|
|
- Mercury-like orbiter (period ~88 days) |
|
|
|
@ -402,9 +391,9 @@ Total estimated test files: 13-14 |
|
|
|
- Low altitude: atmospheric boundary (if applicable) |
|
|
|
- Low altitude: atmospheric boundary (if applicable) |
|
|
|
- Long-duration propagation (10+ periods) |
|
|
|
- Long-duration propagation (10+ periods) |
|
|
|
|
|
|
|
|
|
|
|
## Numerical Precision (1-2 files) |
|
|
|
## Numerical Precision (1 file) |
|
|
|
|
|
|
|
|
|
|
|
#### 13. test_precision_boundaries.cpp + .toml |
|
|
|
#### 6. ✅ test_precision_boundaries.cpp + .toml |
|
|
|
- Purpose: Exact boundary value handling |
|
|
|
- Purpose: Exact boundary value handling |
|
|
|
- Config: |
|
|
|
- Config: |
|
|
|
- Perfect circle (e=0) |
|
|
|
- Perfect circle (e=0) |
|
|
|
@ -417,15 +406,6 @@ Total estimated test files: 13-14 |
|
|
|
- Inclination at 0°, 90°, 180° |
|
|
|
- Inclination at 0°, 90°, 180° |
|
|
|
- Semi-major axis sign change |
|
|
|
- Semi-major axis sign change |
|
|
|
- Angular momentum conservation |
|
|
|
- Angular momentum conservation |
|
|
|
- Note: If energy conservation needs separate config, this becomes 2 files |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 14. (Optional) test_energy_conservation_analytical.cpp + .toml |
|
|
|
|
|
|
|
- Purpose: Long-term energy conservation validation |
|
|
|
|
|
|
|
- Config: Standard circular/elliptical orbit |
|
|
|
|
|
|
|
- Tests: |
|
|
|
|
|
|
|
- Energy drift over 10+ orbital periods |
|
|
|
|
|
|
|
- Kinetic/potential energy consistency |
|
|
|
|
|
|
|
- Vis-viva equation verification at all anomalies |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Overlap Analysis with Existing Tests |
|
|
|
## Overlap Analysis with Existing Tests |
|
|
|
|
|
|
|
|
|
|
|
@ -447,11 +427,30 @@ Total estimated test files: 13-14 |
|
|
|
- SOI transitions (deferred) |
|
|
|
- SOI transitions (deferred) |
|
|
|
- Root body transitions (deferred) |
|
|
|
- Root body transitions (deferred) |
|
|
|
|
|
|
|
|
|
|
|
**Overlaps Identified:** |
|
|
|
### Test Reduction Applied (Reduced from 14 to 11 files) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Tests Removed (3 files):** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. **test_energy_conservation_analytical.cpp** (OPTIONAL - REMOVED) |
|
|
|
|
|
|
|
- Reason: Long-term energy drift testing covered by `test_hybrid_energy_conservation.cpp` |
|
|
|
|
|
|
|
- The hybrid test compares analytical vs RK4 energy, providing stronger validation |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. **test_extreme_orientation.cpp: Polar (i=90°) & Retrograde (i=180°)** (REMOVED) |
|
|
|
|
|
|
|
- Reason: Polar and retrograde boundary cases already covered by `test_precision_boundaries.cpp` |
|
|
|
|
|
|
|
- Only "mixed: high inclination + high eccentricity" case retained |
|
|
|
|
|
|
|
- Renamed to `test_extreme_orientation_mixed.cpp` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. **test_extreme_orientation.cpp: Original full scope** (REDUCED) |
|
|
|
|
|
|
|
- Reason: Duplicate with existing test_precision_boundaries |
|
|
|
|
|
|
|
- Polar orbit (i=π/2): Already tested in test_precision_boundaries |
|
|
|
|
|
|
|
- Retrograde orbit (i=π): Already tested in test_precision_boundaries |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Overlap Analysis:** |
|
|
|
|
|
|
|
|
|
|
|
**test_inclined_orbits.cpp** (Molniya: e=0.74, i=63.4°) |
|
|
|
**test_inclined_orbits.cpp** (Molniya: e=0.74, i=63.4°) |
|
|
|
- Overlaps: Extreme eccentricity, Extreme orientation |
|
|
|
- Overlaps: Extreme eccentricity, Extreme orientation |
|
|
|
- Gap: Need e=0.99+, retrograde (i>π/2), polar (i=π/2 exactly) |
|
|
|
- Gap: Need e=0.99+, retrograde (i>π/2), polar (i=π/2 exactly) |
|
|
|
|
|
|
|
- Note: Does NOT overlap with test_cartesian_to_elements_quadrature (tests opposite conversion direction) |
|
|
|
|
|
|
|
|
|
|
|
**test_moon_orbits.cpp** (Moon ~27 day period) |
|
|
|
**test_moon_orbits.cpp** (Moon ~27 day period) |
|
|
|
- Overlaps: Extreme timescales |
|
|
|
- Overlaps: Extreme timescales |
|
|
|
@ -460,6 +459,7 @@ Total estimated test files: 13-14 |
|
|
|
**test_energy.cpp** (circular orbit energy) |
|
|
|
**test_energy.cpp** (circular orbit energy) |
|
|
|
- Overlaps: Energy conservation tests |
|
|
|
- Overlaps: Energy conservation tests |
|
|
|
- Gap: Need analytical propagation validation, method comparison |
|
|
|
- Gap: Need analytical propagation validation, method comparison |
|
|
|
|
|
|
|
- Note: test_energy_conservation_analytical removed; hybrid test covers this gap |
|
|
|
|
|
|
|
|
|
|
|
**test_orbital_period.cpp** (Earth 365 days, Mars 687 days) |
|
|
|
**test_orbital_period.cpp** (Earth 365 days, Mars 687 days) |
|
|
|
- Overlaps: Extreme timescales |
|
|
|
- Overlaps: Extreme timescales |
|
|
|
@ -485,25 +485,29 @@ Total estimated test files: 13-14 |
|
|
|
|
|
|
|
|
|
|
|
**Can Share Configs (Partial Overlap):** |
|
|
|
**Can Share Configs (Partial Overlap):** |
|
|
|
1. **test_extreme_eccentricity** ↔ test_parabolic_orbit/hyperbolic_orbit |
|
|
|
1. **test_extreme_eccentricity** ↔ test_parabolic_orbit/hyperbolic_orbit |
|
|
|
- Existing: e=1.0, 1.5 |
|
|
|
- Existing: e=1.0, 1.5 |
|
|
|
- New: e=0.99, 0.9999, 1.0001 |
|
|
|
- New: e=0.99, 0.9999, 1.0001 |
|
|
|
- May need new config for e=0.99, 0.9999 cases |
|
|
|
- May need new config for e=0.99, 0.9999 cases |
|
|
|
|
|
|
|
|
|
|
|
2. **test_hybrid_impulse_burns** ↔ test_maneuvers |
|
|
|
2. **test_hybrid_impulse_burns** ↔ test_maneuvers |
|
|
|
- Can reuse burn infrastructure |
|
|
|
- Can reuse burn infrastructure |
|
|
|
- New scenarios require separate config (Hohmann, apsides burns) |
|
|
|
- New scenarios require separate config (Hohmann, apsides burns) |
|
|
|
|
|
|
|
|
|
|
|
3. **test_hybrid_energy_conservation** ↔ test_energy |
|
|
|
3. **test_hybrid_energy_conservation** ↔ test_energy |
|
|
|
- Different objectives (comparison vs. drift) |
|
|
|
- Different objectives (comparison vs. drift) |
|
|
|
- Could share circular orbit config |
|
|
|
- Could share circular orbit config |
|
|
|
|
|
|
|
|
|
|
|
**Cannot Share Configs (Different Parameters):** |
|
|
|
**Cannot Share Configs (Different Parameters):** |
|
|
|
1. **test_extreme_orientation** vs test_inclined_orbits |
|
|
|
1. **test_extreme_orientation_mixed** vs test_inclined_orbits |
|
|
|
- Existing: i=1.107 (63.4°) |
|
|
|
- Existing: i=1.107 (63.4°) |
|
|
|
- New: i=π/2 (90°), i>π/2 (retrograde) |
|
|
|
- New: Combined high inclination + high eccentricity (unique) |
|
|
|
|
|
|
|
|
|
|
|
2. **test_cartesian_to_elements_extreme** vs all existing |
|
|
|
2. **test_cartesian_to_elements_extreme** vs all existing |
|
|
|
- New test category (no existing tests) |
|
|
|
- New test category (no existing tests) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. **test_cartesian_to_elements_quadrature** vs test_inclined_orbits |
|
|
|
|
|
|
|
- Tests opposite conversion direction (cartesian→elements vs elements→cartesian) |
|
|
|
|
|
|
|
- Both needed for complete validation |
|
|
|
|
|
|
|
|
|
|
|
### Unique New Test Categories |
|
|
|
### Unique New Test Categories |
|
|
|
|
|
|
|
|
|
|
|
@ -516,51 +520,55 @@ Total estimated test files: 13-14 |
|
|
|
6. Propagation through apsides - 1 test |
|
|
|
6. Propagation through apsides - 1 test |
|
|
|
|
|
|
|
|
|
|
|
**New Orbital Regimes:** |
|
|
|
**New Orbital Regimes:** |
|
|
|
7. Retrograde orbits (i > 90°) - 1 test |
|
|
|
7. Combined high inclination + high eccentricity - 1 test (reduced from 3 orientation tests) |
|
|
|
8. Extremely fast orbits (Mercury-like, <100 days) - 1 test |
|
|
|
8. Extremely fast orbits (Mercury-like, <100 days) - 1 test |
|
|
|
9. Extremely slow orbits (>10 years) - 1 test |
|
|
|
9. Extremely slow orbits (>10 years) - 1 test |
|
|
|
10. Boundary values (e=0, i=π/2, i=π) - 1 test |
|
|
|
10. Boundary values (e=0, i=π/2, i=π) - 1 test (already in test_precision_boundaries) |
|
|
|
|
|
|
|
|
|
|
|
### Minimal File Count with Sharing |
|
|
|
### Minimal File Count with Sharing |
|
|
|
|
|
|
|
|
|
|
|
**Current estimate: 13-14 files** |
|
|
|
**Final estimate: 11 files** (reduced from 14) |
|
|
|
|
|
|
|
|
|
|
|
**Optimization opportunities:** |
|
|
|
|
|
|
|
- Combine e=0.99 with parabolic/hyperbolic configs → -1 file |
|
|
|
|
|
|
|
- Share energy config between test_energy and test_hybrid_energy_conservation → -1 file |
|
|
|
|
|
|
|
- Use existing Molniya config for some extreme orientation tests → -1 file |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Optimized estimate: ~11 files** |
|
|
|
**Reductions applied:** |
|
|
|
|
|
|
|
- Removed test_energy_conservation_analytical.cpp (OPTIONAL, covered by hybrid test) |
|
|
|
|
|
|
|
- Removed duplicate polar/retrograde tests from test_extreme_orientation (covered by test_precision_boundaries) |
|
|
|
|
|
|
|
- Renamed to test_extreme_orientation_mixed.cpp (only tests combined high inclination + eccentricity) |
|
|
|
|
|
|
|
|
|
|
|
**Recommended: Keep 13-14 files** |
|
|
|
**Recommendation: Keep 11 files** |
|
|
|
- Each test has self-documenting config |
|
|
|
- Each test has self-documenting config |
|
|
|
- Easier to debug isolated failures |
|
|
|
- Easier to debug isolated failures |
|
|
|
- Config reuse doesn't save much (configs are small) |
|
|
|
- Config reuse doesn't save much (configs are small) |
|
|
|
- Clear separation of concerns |
|
|
|
- Clear separation of concerns |
|
|
|
|
|
|
|
- No duplicate test coverage |
|
|
|
|
|
|
|
|
|
|
|
## Implementation Priority |
|
|
|
## Implementation Priority |
|
|
|
|
|
|
|
|
|
|
|
### Phase 1 (Foundation) |
|
|
|
### Phase 1 (Foundation) |
|
|
|
1. test_cartesian_to_elements_basic.cpp (round-trip conversion) |
|
|
|
1. ✅ test_cartesian_to_elements_basic.cpp (round-trip conversion) |
|
|
|
2. test_newton_raphson_convergence.cpp (solver validation) |
|
|
|
2. ✅ test_newton_raphson_convergence.cpp (solver validation) |
|
|
|
3. test_analytical_propagation_apsides.cpp (basic propagation) |
|
|
|
3. ✅ test_analytical_propagation_apsides.cpp (basic propagation) |
|
|
|
|
|
|
|
|
|
|
|
### Phase 2 (Hybrid Integration) |
|
|
|
### Phase 2 (Hybrid Integration) |
|
|
|
4. test_hybrid_impulse_burns.cpp (impulsive burns) |
|
|
|
4. ⬜ test_hybrid_impulse_burns.cpp (impulsive burns) |
|
|
|
5. test_hybrid_continuous_thrust.cpp (continuous burns) |
|
|
|
5. ⬜ test_hybrid_continuous_thrust.cpp (continuous burns) |
|
|
|
6. test_hybrid_energy_conservation.cpp (method comparison) |
|
|
|
6. ⬜ test_hybrid_energy_conservation.cpp (method comparison) |
|
|
|
|
|
|
|
|
|
|
|
### Phase 3 (Edge Cases) |
|
|
|
### Phase 3 (Edge Cases) |
|
|
|
7. test_extreme_eccentricity.cpp (e≈1.0) |
|
|
|
7. ✅ test_extreme_eccentricity.cpp (e≈1.0) |
|
|
|
8. test_extreme_orientation.cpp (polar/retrograde) |
|
|
|
8. ⬜ test_extreme_orientation_mixed.cpp (high inclination + high eccentricity) |
|
|
|
9. test_extreme_timescales.cpp (fast/slow periods) |
|
|
|
9. ⬜ test_extreme_timescales.cpp (fast/slow periods) |
|
|
|
10. test_precision_boundaries.cpp (exact values) |
|
|
|
10. ✅ test_precision_boundaries.cpp (exact values) |
|
|
|
11. test_cartesian_to_elements_extreme.cpp (edge cases) |
|
|
|
11. ⬜ test_cartesian_to_elements_extreme.cpp (edge cases) |
|
|
|
12. test_cartesian_to_elements_quadrature.cpp (quadrants) |
|
|
|
12. ⬜ test_cartesian_to_elements_quadrature.cpp (cartesian→elements conversion) |
|
|
|
13. test_analytical_propagation_timesteps.cpp (large/small dt) |
|
|
|
13. ✅ test_analytical_propagation_timesteps.cpp (large/small dt) |
|
|
|
|
|
|
|
|
|
|
|
## Notes |
|
|
|
## Notes |
|
|
|
- Config files are shared with existing tests where possible |
|
|
|
- Config files are shared with existing tests where possible |
|
|
|
- Each .cpp file requires corresponding .toml config |
|
|
|
- Each .cpp file requires corresponding .toml config |
|
|
|
- Some test categories can share configs if parameters align |
|
|
|
- Some test categories can share configs if parameters align |
|
|
|
- SOI transition tests deferred per user requirements |
|
|
|
- SOI transition tests deferred per user requirements |
|
|
|
|
|
|
|
- **Test count reduced from 14 to 11 after overlap analysis** (2026-02-01) |
|
|
|
|
|
|
|
- Removed tests: |
|
|
|
|
|
|
|
- test_energy_conservation_analytical.cpp (OPTIONAL - covered by hybrid test) |
|
|
|
|
|
|
|
- Duplicate polar/retrograde tests in test_extreme_orientation (covered by test_precision_boundaries) |
|
|
|
|
|
|
|
- Retained test_cartesian_to_elements_quadrature.cpp (validates NEW function, opposite direction of test_inclined_orbits) |
|
|
|
|