Skip to main content

Multidisciplinary design analysis and optimization of orbital compute infrastructure, with terrestrial data-center baselines.

Project description

spacedc-mdao

A Python package for multidisciplinary design analysis and optimization (MDAO) of orbital compute infrastructure, with terrestrial data-center baselines for comparison.

The package optimizes delivered useful compute, not nominal watts or nominal GPUs. It takes installed capacity and degrades it through power, thermal, network, reliability, and utilization limits, then reports where a design fails and which assumptions decide the outcome. Its job is to make the feasibility boundary visible, not to argue that space wins.

Documentation: https://jman4162.github.io/spacedc-mdao/ (quick start, user tiers, model architecture, API reference, and a generated assumptions/provenance table). See SPEC.md for the design contract and background_information/EQUATIONS.md for the governing equations.

Status

Phases 1 and 2 are complete. Implemented:

  • Core (Phase 1): scenario loading, the discipline models in the v0.1 minimum set (background_information/EQUATIONS.md §15), the delivered-compute waterfall, an Earth-vs-space comparison with binding-constraint diagnosis and feasibility thresholds, Monte Carlo and tornado sensitivity, matplotlib plots, and a CLI.
  • Thermal radiator co-design (2A): a thermal/ module coupling chip power → junction temperature → coolant loop → radiator temperature → area → mass, with net radiator flux (emission minus absorbed solar/albedo/Earth-IR at end-of-life coatings), a bottleneck classifier, and validation anchors (ISS PVR/EATCS, Starcloud, NASA high-temp). The radiator temperature is bounded by the chip stack; closure is checked at end of life.
  • MDAO + optimization (2B): OpenMDAO components wrap the evaluator (FD partials), optimize_single for constrained single-objective optimization, pymoo NSGA-II Pareto fronts, a scipy Latin-hypercube DOE, and SALib Sobol indices.
  • Interactive dashboard (2C): plotly figures (delivered/cost/mass/power-sankey, tornado, Pareto, constellation graph, thermal panels) and a Panel app, plus an assumption-provenance table.
  • Fidelity (2D): environmental CO₂e/water accounting, station-keeping Δv and propellant, beta-angle eclipse, an optional Skyfield ground-access seam, and five Earth baselines.
  • Credibility (3A): all soft factors moved to provenance-tagged catalogs; Starcloud/ISS recovered from the model; orbit-dependent radiation (TID/SEU); RF margin and optical weather availability bind; launch-cost cases; input validation.
  • Real MDAO (3B): mixed-integer architecture optimization (satellites, accelerators/sat, altitude); transient orbit thermal; a workload library (space-native vs Earth-dependent); uncertainty fan / orbit-timeline / link-budget-heatmap figures.
  • UX (3C): CLI provenance/doe/sobol/--version, HTML/Markdown report export, Evaluation.to_dict(), and a beginner→advanced notebook ladder.

The package is skeptical by default. For the bundled 1 MW inference scenario, Earth wins on levelized cost: the orbital design is downlink-limited, its radiators are a multi-tonne burden (chip-limited temperature), and station-keeping plus replacement add up.

Install

spacedc-mdao uses uv. The base install is light; capabilities live behind extras.

uv sync                                          # base (numpy/scipy/pydantic/pint/matplotlib)
uv sync --extra dev --extra mdao --extra viz     # development + optimization + dashboard
Extra Pulls in Enables
mdao openmdao, pymoo, SALib optimization, Pareto fronts, DOE, Sobol
viz plotly, panel, networkx interactive figures + dashboard
orbit skyfield ground-station access windows (needs ephemeris)
rf opensatcom Tier-1 RF link-budget backend (else inline Friis/FSPL)

Use

import orbitdc as odc

space = odc.load_scenario("examples/scenarios/orbital_1mw_inference.yaml")
earth = odc.load_scenario("examples/scenarios/earth_hyperscale_baseline.yaml")

result = odc.compare(space, earth)
print(result.summary())
print(result.explain_binding_constraints())

From the command line:

orbitdc compare  examples/scenarios/orbital_1mw_inference.yaml examples/scenarios/earth_hyperscale_baseline.yaml
orbitdc optimize examples/scenarios/orbital_1mw_inference.yaml --pareto lcoc,kg_per_kw      # needs [mdao]

Notebooks: examples/notebooks/01_compare.ipynb (Earth-vs-space) and examples/notebooks/02_radiator_feasibility.ipynb (how big and heavy the radiators must be). Dashboard: uv run panel serve examples/dashboard_app.py --show (needs [viz]).

Development

uv run ruff check . && uv run ruff format --check .
uv run mypy src
uv run pytest

All code must pass ruff, ruff format, and mypy --strict before commit. CI enforces this. Every default number in the catalogs carries provenance (source, date, confidence, kind); see background_information/THEMRAL_RADIATOR_DEEPDIVE.md for the thermal modeling background.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spacedc_mdao-0.4.0.tar.gz (273.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

spacedc_mdao-0.4.0-py3-none-any.whl (96.2 kB view details)

Uploaded Python 3

File details

Details for the file spacedc_mdao-0.4.0.tar.gz.

File metadata

  • Download URL: spacedc_mdao-0.4.0.tar.gz
  • Upload date:
  • Size: 273.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spacedc_mdao-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9787c84c46632add78e2e4f25cc83821e6596b4b52c1d89a3bb5bb754cc48b90
MD5 5313d4baa7d90d897153a85bdc6f682f
BLAKE2b-256 d163d67034d43ae863590909c54a2cfa94d652078efd0c56a1c5c9cb9abeb61d

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacedc_mdao-0.4.0.tar.gz:

Publisher: release.yml on jman4162/spacedc-mdao

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spacedc_mdao-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: spacedc_mdao-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 96.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for spacedc_mdao-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9271cc597124c4af54fd8bd6c7b8b1eb721be911c1f52f284845cfb4342463e
MD5 96b534492c0fd49f6f433bc8da62d94f
BLAKE2b-256 5b451f90221596027c124d7d0bd7208471c94ec94280be423d61c66b6317acd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for spacedc_mdao-0.4.0-py3-none-any.whl:

Publisher: release.yml on jman4162/spacedc-mdao

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page