Frostline — thermal mining
for airless bodies.
On an asteroid or in a lunar cold trap, the water is locked in the regolith as ice. To get it out you point a solar-thermal beam at the surface, heat diffuses in, the ice sublimates, the surface recedes, and the vapor is captured. Frostline simulates that whole chain — as physics, with the energy and mass ledgers closed.
It is a moving latent-heat front (a Stefan problem) solved in real-time 3-D on the GPU in Rust + wgpu, with every stage gated against an independent reference — an exact analytic solution, an f64 CPU twin, and real lunar radiometry. The interactive console below runs that validated physics in your browser.
- release
- 02 · frostline
- domain
- phase change · ISRU
- license
- MIT OR Apache-2.0
- stack
- Rust + wgpu
Touch the physics.
The console is a line-for-line JavaScript port of the engine's validated f64 twin — the same damped-Newton surface balance (radiation + a Hertz–Knudsen latent sink + conduction), the same Murphy & Koop (2005) vapor-pressure fit, the same moving front and energy/mass ledgers. The conservation gauge in the corner shows the energy ledger closing live, to ~10⁻¹². It is a demonstration of the physics, not a toy inspired by it.
Three real model seams are exposed as controls on purpose: the beam profile (Gaussian vs top-hat — worth ~14% in g/MJ), the sublimation coefficient α (the 1.0 gate value vs the ~0.14 measured one), and a triple-point flag marking the v1.5 melt boundary. The HUD numbers land on the gated values below — that is the whole point.
runs in-page on click — the physics loop stays idle until you activate it. full-screen: /frostline/live ↗ · the one-file Canvas-2D artifact: reference console ↗
Validated against independent references.
No stage is trusted until it reproduces something it can't fudge: an exact analytic solution, a bitwise f64 twin, or real spacecraft radiometry. These are the gate values — the console above lands on them.
- 1-D thermal profilenoon ~390 K / pre-dawn ~98 K · no tuning · vs LRO Diviner
- Moving sublimation front≤4×10⁻⁴ · vs Neumann's exact Stefan solution
- Extraction efficiency334.2 g/MJ · 99.8% of ceiling · vs 334.9 g/MJ enthalpy bound
- 3-D GPU lane≤1×10⁻⁴ · family gate · fronts bit-exact · vs f64 CPU twin
- 3-D crater depth89% of bound · wall losses quantified · vs 1-D depth bound
- Thermostat at mining flux~250–251 K · 3-D Gaussian spot ~285 g/MJ · vs gated envelope
Each gate has a record in the repository's validation/ directory — the reference, the metric, and the threshold that had to be cleared.
The honest part.
A number without its caveats is marketing. What the instrument is, what it isn't, and where the seams are:
- ›The console runs the validated f64 twin — the same CPU formulation the engine is gated against — not the 3-D GPU engine itself. The engine proper runs this physics in 3-D on wgpu, checked against the exact solutions above. The instrument is the physics, faithfully; it is not the full parallel lane.
- ›It hard-codes the engine's physical constants, re-synced 2026-07-28 (ice properties, the Murphy & Koop 2005 vapor-pressure fit, latent heat). The repository is the single source of truth, and this is not hypothetical: the 2026-07-10 version of this note warned the readouts would drift if the constants moved. They moved, and it drifted — the gas constant and the yield ceiling were both stale for two weeks. Assume a lag between the engine and this instrument rather than parity.
- ›The lunar-noon 390 K figure is a Stefan–Boltzmann check, not a thermal one — doubling the conductivity leaves it unmoved, and the albedo was chosen to land it in the observed window. Pre-dawn 98 K is the real test of the thermal solver, and it is not yet grid-converged. Both are reported as gates because both were run; only one of them is hard.
- ›The sublimation coefficient α is exposed as a control, not buried: the gate value is 1.0, but the physically measured value is ~0.14. You can dial it and watch the yield respond — the honesty is in showing the seam, not hiding it.
- ›A concentrator buys rate, not efficiency — and past the optimum it slowly sells it. An earlier version of this page said the yield curve flattens at high flux. It does not: the asymptotic yield peaks near 29 kW/m² and then declines, because the sensible preheat of the incoming ice rises with flux faster than the radiative loss falls. The claim is withdrawn and the interior maximum is the finding.
- ›The triple-point / melt regime is flagged as a v1.5 boundary. Below it the constant-ice sublimation path is exact; the melt transition is marked honestly rather than silently extrapolated.
open source under MIT OR Apache-2.0 — the engine, the validation records, and this console all live at github.com/ElroyAyala/Frostline.