Skip to main content

Thermal Simulation

Simulate thermal behavior of compute hardware in orbital environments, including eclipse cycles and varying solar flux.
Status: Early Access — Request API key

Overview

Space presents unique thermal challenges:
  • No convection — Heat can only be rejected via radiation
  • Eclipse cycles — Periodic loss of solar heating
  • Solar flux variation — Changes with orbit and season
  • Internal heat — Compute generates significant waste heat

Quick Start

from rotastellar import RotaStellar

client = RotaStellar(api_key="rs_...")

thermal = client.planning.thermal(
    orbit="LEO-550",
    power_dissipation_w=500,
    radiator_area_m2=2.0,
    internal_mass_kg=100
)

print(f"Steady state: {thermal.steady_state_c}C")
print(f"Max (sunlit): {thermal.max_temp_c}C")
print(f"Min (eclipse): {thermal.min_temp_c}C")
print(f"Thermal margin: {thermal.margin_c}C")

Parameters

orbit
string
required
Orbit specification. Options:
  • LEO-400 to LEO-600 — Low Earth Orbit at specified altitude
  • MEO-2000 to MEO-20000 — Medium Earth Orbit
  • GEO — Geostationary orbit
  • Custom: {"altitude_km": 550, "inclination_deg": 53}
power_dissipation_w
number
required
Internal heat generation in watts
radiator_area_m2
number
required
Radiator surface area in square meters
internal_mass_kg
number
Internal thermal mass in kg (affects transient response)
radiator_emissivity
number
default:"0.9"
Radiator emissivity (0-1)
absorptivity
number
default:"0.3"
Solar absorptivity (0-1)

Response

{
  "steady_state_c": 35.2,
  "max_temp_c": 52.8,
  "min_temp_c": 12.4,
  "margin_c": 17.2,
  "eclipse_duration_min": 35.5,
  "sunlit_duration_min": 57.3,
  "cooling_rate_c_per_min": 0.65,
  "heating_rate_c_per_min": 0.48,
  "thermal_profile": [
    {"time_min": 0, "temp_c": 35.2, "phase": "sunlit"},
    {"time_min": 57, "temp_c": 52.8, "phase": "eclipse_start"},
    {"time_min": 92, "temp_c": 12.4, "phase": "eclipse_end"}
  ],
  "recommendations": [
    "Consider active thermal control for tighter bounds",
    "Heaters recommended for eclipse survival"
  ]
}

Thermal Profiles

LEO Thermal Cycle

Temperature (C)
     60 |    ____
        |   /    \
     40 |  /      \____
        | /            \
     20 |/              \
        +-----------------> Time
         Sunlit  Eclipse

Operating Limits

ComponentMin (C)Max (C)
GPU/TPU085
CPU-20100
Memory-4085
Storage-4070
Battery045

Advanced: Time-Series Simulation

Get detailed thermal behavior over multiple orbits:
thermal = client.planning.thermal(
    orbit="LEO-550",
    power_dissipation_w=500,
    radiator_area_m2=2.0,
    simulation={
        "duration_orbits": 10,
        "time_step_sec": 60
    }
)

# Plot thermal profile
for point in thermal.time_series:
    print(f"{point.time_min}: {point.temp_c}C ({point.phase})")

Design Considerations

Larger radiators = lower steady-state temperature but more mass and cost. Rule of thumb: 0.1-0.2 m² per 100W dissipation for LEO.
Ensure minimum temperature stays above component limits. May require heaters or thermal mass.
Consider worst-case solar flux (perihelion + beta angle = 0). Add 10-15% margin to maximum temperature.

Next Steps