Skip to content

Non-Gravitational Forces

Not every trajectory change comes from gravity. Darksun layers drag, solar pressure, and thrust so you can model complex regimes.

Atmospheric Drag

  • Density profiles come from the body configuration (atmosphere block exposed via CelestialBodyRegistry).
  • GravitationalSolver.computeAtmosphericDrag evaluates F_drag = 0.5 * ρ * v_rel^2 * C_d * A, using:
    • ρ – interpolated density at altitude,
    • v_rel – velocity relative to rotating atmosphere,
    • C_d, A – spacecraft coefficients from ModelBasedAreaCalculator or mission overrides.
  • Suitable for LEO passes, aerobraking, or entry/descent simulations. Disable when operating well above atmosphere tops to save compute.

Solar Radiation Pressure (SRP)

  • SolarRadiationPressureService assumes sun-facing orientation by default. Supply attitude data to refine cross-sectional area if available.
  • Force magnitude follows F_srp = (P_0 / c) * A_eff * (1 + q) where:
    • P_0 – solar flux at 1 AU scaled by distance,
    • A_eff – effective area facing the Sun,
    • q – reflectivity term (0 = fully absorbing, 1 = specular).
  • Works in tandem with eclipse detection; SRP is suppressed automatically during umbra periods.

Thrust Modelling

  • Finite burns are integrated through ThrustIntegrator, slicing each burn into four segments to approximate mass flow.

  • PropulsionSystemService supplies thrust (T), specific impulse (I_sp), and dry-mass limits for the active stage.

  • Mass flow obeys the rocket equation:

    m(t) = m0 - m_dot * t
    m_dot = T / (Isp * g0)
    delta_v = integral(T / m(t) dt) = Isp * g0 * ln(m0 / m1)
  • If a burn requests more delta-v than remaining propellant, the integrator truncates the node and surfaces a warning in the mission planner.

Tune non-gravitational terms from Settings → Simulation or via mission planner directives to match the fidelity the scenario demands.

Built with VitePress