Browse Source

remove old planning doc

main
cinnaboot 6 months ago
parent
commit
af18eaa723
  1. 77
      docs/find_dominant_body_bug.md

77
docs/find_dominant_body_bug.md

@ -1,77 +0,0 @@
# Find Dominant Body Bug: Mutual SOI Issue
## Overview
This documents the remaining issue with `find_dominant_body()` when two similar-mass bodies are positioned within each other's sphere of influence (SOI).
**Date:** January 20, 2026
**Status:** Failing Test (Test 4 from test_plan_invalid_parent_assignment.md)
**Related:** `docs/test_plan_invalid_parent_assignment.md`
---
## Test Case 4: Mutual SOI - Similar Mass Planets
**Purpose:** Edge case: two Earth-like planets positioned within each other's SOI
**Actual Result:** ❌ **STILL FAILS** (separate issue, not fixed by spacecraft validation)
**Config:** `tests/configs/mutual_soi_close.toml`
**Setup:**
- PlanetA: mass = 5.972e24 kg, position = {1.496e11, 0, 0}
- PlanetB: mass = 5.972e24 kg, position = {1.501e11, 0, 0}
- Separation: 5e8 meters (500 million km)
- Planet SOI: ~9.25e8 meters (925 million km)
- **Both planets within each other's SOI**
**Why This Fails:**
- Both planets start with parent=0 (Sun)
- Both are within each other's SOI
- `find_dominant_body()` logic selects closest body within SOI
- Result: PlanetA selects PlanetB as parent, PlanetB selects PlanetA as parent
- Config validation passes (both are ≥ parent.radius + body.radius from Sun)
**Key Assertions:**
```cpp
// Both should orbit Sun (not each other)
REQUIRE(sim->bodies[PLANET_A_IDX].parent_index == SUN_IDX);
REQUIRE(sim->bodies[PLANET_B_IDX].parent_index == SUN_IDX);
// Planets should never have each other as parents
for (int parent : history.planet_a_parents) {
REQUIRE(parent != PLANET_B_IDX);
}
for (int parent : history.planet_b_parents) {
REQUIRE(parent != PLANET_A_IDX);
}
```
**Expected Behavior (Option A):**
- Both planets should continue orbiting Sun
- Neither should become other's parent
- This requires future fix to `find_dominant_body()` logic (mass hierarchy check)
---
## Future Work
### Current Status
Tests 1-3 from the parent assignment test suite are now passing. Test 4 continues to fail, documenting a separate mutual SOI issue.
### Potential Fixes for Test 4
1. Add mass hierarchy check to `find_dominant_body()`
2. Prevent mutual SOI assignments for similar-mass bodies
3. Detect and reject invalid configs at load time
4. Implement proper N-body interaction or restricted 3-body solution
### Enhanced Detection
- SOI overlap detection at config load time
- Automatic correction of invalid parent assignments
- Validation warnings for edge cases
---
## References
- `src/simulation.cpp:64-107` - `find_dominant_body()` implementation
- `tests/configs/mutual_soi_close.toml` - Test configuration for mutual SOI case
- `tests/test_invalid_parent_assignment.cpp` - Test suite implementation
Loading…
Cancel
Save