# Project Structure
Structure map for the SatellitesFactory crate.
```text
SatellitesFactory/
├── README.md # Project overview and usage
├── LICENSE # MIT license
├── ChangeLog.md # Version history
├── ComingSoon.md # Upcoming features
├── Contributing # Contribution guidelines
├── lastest_versions.sh # Restore wildcard dependency versions
│
├── src/
│ ├── lib.rs # Library root, re-exports all modules
│ │
│ ├── config/ # Configuration and constants
│ │ ├── mod.rs # Module declarations
│ │ └── parameters.rs # Physical constants (sciforge re-exports), satellite mass/radius, unit conversions
│ │
│ ├── types/ # Satellite type system
│ │ ├── mod.rs # Module declarations
│ │ ├── regular.rs # RegularSatellite — Moon, Io, Europa, Ganymede, Callisto, Titan, Titania, Oberon
│ │ ├── captured.rs # CapturedSatellite — Triton, Phobos, Deimos with capture energy, retrograde flag
│ │ └── ring_moon.rs # RingMoon — Enceladus, Mimas, Prometheus, Pandora with ring association, plumes
│ │
│ ├── physics/ # Physical models
│ │ ├── mod.rs # Module declarations
│ │ ├── gravitation.rs # Surface gravity, escape velocity, Hill sphere, Roche limit, Tisserand parameter
│ │ ├── tidal_dynamics.rs # Tidal heating, locking timescale, orbital decay, Love numbers, resonance width
│ │ └── interiors.rs # Core/mantle structure, central pressure, ocean depth, differentiation energy
│ │
│ ├── engine/ # Simulation engine
│ │ ├── mod.rs # Module declarations
│ │ ├── orbits.rs # Kepler solver, elements ↔ Cartesian, vis-viva, Hohmann, Laplace resonance
│ │ ├── formation.rs # Circumplanetary disk, ice line, isolation mass, capture probability
│ │ ├── evolution.rs # Tidal migration, circularization, Kozai-Lidov, Yarkovsky drift
│ │ └── generator.rs # Procedural satellite system generation (regular, captured, ring classes)
│ │
│ ├── observables/ # Observable quantities
│ │ ├── mod.rs # Module declarations
│ │ ├── photometry.rs # Equilibrium temperature, albedo, phase curves, transit depth, opposition surge
│ │ ├── spectra.rs # Band depth, water ice index, spectral slope, surface composition classification
│ │ └── astrometry.rs # Angular separation, occultation duration, mutual events, astrometric wobble
│ │
│ ├── presets/ # Pre-built planetary system presets
│ │ ├── mod.rs # Module declarations
│ │ ├── solar_system.rs # Full Solar System: all regular, captured, ring moons by parent planet
│ │ ├── jovian_system.rs # Jupiter: Galileans, inner moons, irregulars, class census
│ │ ├── saturnian_system.rs # Saturn: Titan, major moons, ring moons, shepherds, co-orbitals
│ │ ├── uranian_system.rs # Uranus: Miranda, Ariel, Umbriel, Titania, Oberon
│ │ └── neptunian_system.rs # Neptune: Triton (captured), Proteus, Nereid
│ │
│ └── utils/ # Utilities
│ ├── mod.rs # Module declarations
│ ├── helpers.rs # lerp, RK4, Simpson integration, log_range, format_si, clamp
│ └── io.rs # CSV and DAT output writers
│
├── tests/ # Integration tests (159 tests)
│ ├── types_tests.rs # Regular, captured, ring-moon type tests (37 tests)
│ ├── physics_tests.rs # Gravitation, tidal dynamics, interiors tests (44 tests)
│ └── engine_tests.rs # Orbits, formation, evolution, generator, observables, presets (78 tests)
│
└── examples/ # Runnable examples
├── demo.rs # All preset systems, orbital periods, physical properties
├── validation.rs # Cross-module validation with sanity checks
├── tidal_heating.rs # Io/Europa/Enceladus tidal heating and interior comparison
└── system_generation.rs # Procedural generation, formation models, evolution
```