Model architecture¶
The package is a src/-layout Python package (orbitdc) organized around one
spine: a scenario is loaded, run through the discipline models, collapsed into
the delivered-compute waterfall, and compared against an Earth baseline with
binding-constraint diagnosis.
The governing waterfall¶
Installed peak capacity is degraded by independent factors, each produced by a discipline model:
C_delivered = C_peak · f_software · f_power · f_thermal · f_network · f_availability · f_utilization
A factor below 1 means that discipline is throwing away compute. The binding constraint is the factor that fails first; the package reports it rather than hiding it inside a single headline number.
Package layout¶
| Module | Responsibility |
|---|---|
core/ |
Assumption provenance, the pydantic Scenario schema, scenario/catalog loaders, the unit registry |
data/ |
provenance-tagged YAML catalogs (accelerators, launch, solar, batteries, radiators, coatings, coolants, chip stacks, cost/mass structure, radiation, comms, workloads) |
models/ |
discipline models: compute, power, thermal entry, orbit (+ Skyfield), radiation, RF, lasercom, comms link, network, mass, cost, reliability, environmental, formation, Earth baseline |
thermal/ |
the radiator co-design ladder: surfaces, radiation balance, transport network, coolant loop, co-design solve, bottleneck diagnosis, transient orbit, view factors (L4), degradation (L5) |
optimize/ |
shared design-variable/objective spec, DOE, Pareto, sensitivity (tornado + Sobol), uncertainty, robustness |
mdao/ |
OpenMDAO problem wrapping the evaluator |
viz/ |
matplotlib + plotly figures, the Panel dashboard, the provenance table |
| top level | compare, evaluate_space/evaluate_earth, the waterfall, diagnostics, reporting, calibration, the CLI |
Thermal radiator co-design¶
Thermal is the most detailed discipline because it is usually where optimistic space-data-center arguments get sloppy. The chain couples chip power → junction temperature → coolant loop → radiator temperature → required area → mass, with net radiator flux (emission minus absorbed solar/albedo/Earth-IR at end-of-life coatings) and a bottleneck classifier (chip-, HBM-, coolant-, transport-, radiator-, or orientation-limited). The radiator temperature is bounded by the tighter of the junction and HBM limits; closure is checked at end of life.
Provenance¶
Every default number is an Assumption with a value, units, source, date,
confidence, and kind. viz.provenance.collect_provenance() walks the catalogs
and surfaces them; the Assumptions & provenance page is
generated from it. This is what makes the analysis reproducible rather than
arbitrary: every assumption is visible and challengeable.
Limitations¶
The package is first-order by design. Two limits shape how to read the network result:
- Communication intensity (bits/FLOP) dominates and is low confidence. It spans orders of magnitude by workload, so it is derived per workload (text inference ~1e-8 from token size / model FLOPs; rich-output ~2e-6) and exposed as the top sensitivity driver, not a single hidden scalar.
- Downlink is a scalar service rate.
downlink_gbpstimes an optical availability factor is a bound, not an end-to-end time-averaged rate derived from terminal count, contact windows, ground-station diversity, weather, buffering, and ground-network egress. The 0.75 default availability is a single-site weather estimate that site diversity raises. Seebackground_information/EQUATIONS.mdsection 9.