Each module draws an oxygen flow demand proportional to its crew count: Di = ni · d, where d is a fixed per-capita demand rate. A partial ECLSS (Environmental Control and Life Support System) failure cuts total available supply to S = (1 − severity) · ΣDi, which is no longer enough to cover everyone — someone must be rationed. Whatever policy you choose turns that shortage into an allocation Ai per module, and each crew member's blood oxygen saturation relaxes toward an equilibrium set by their own supply ratio ri = Ai / Di:
target(r) = 98% if r ≥ 1
target(r) = 98% − 70%·(1 − r) if r < 1 (floor 15%)
SpO₂(t+dt) = target + (SpO₂(t) − target) · exp(−dt / τ), τ ≈ 9 s
This is a first-order relaxation model of hypoxic response: full supply drives SpO₂ back toward a healthy 98%, while a shortfall pulls it toward a lower equilibrium at a rate set by the time constant τ. Below 85% the "time to hypoxia alarm" readout solves the same exponential for the crossing time.
- Equal split — a strict egalitarian policy: supply is divided in proportion to headcount, so every crew member gets the same fraction of their personal demand ri, regardless of role.
- Mission priority — a utilitarian/maximin policy: modules are filled to 100% of demand in priority order (Command → Life Support Lab → Habitat → Airlock Bay) until supply runs out, so higher-priority crew stay fully oxygenated while lower-priority crew absorb the entire deficit.
- Manual — you set a relative weight per module; allocation is Ai = (wi / Σw) · S. This is the ethical decision itself: any weighting you choose is a real trade-off between crew members, made visible immediately in their SpO₂.
2D station view: the top panel is a schematic top-down view of the station — drag with mouse or touch to rotate it. The bottom panel is a scrolling strip-chart of every crew member's SpO₂ over the last two minutes of mission time.