ChargeCascade — Tumbling-Mill Charge Motion & Power Studio
A live in-browser 3D studio for tumbling-mill (SAG / ball / rod) charge motion and power: critical speed, the Davis cascading → cataracting → centrifuging transition, toe/shoulder angles, and Hogg-Fuerstenau / Morrell-form / Bond power — published closed-form physics recomputed on every slider, with a trained ONNX power surrogate and an out-of-envelope anomaly guard running client-side.
Business Context
Comminution is where a concentrator spends most of its energy, and mill power is a first-order operating and design lever. A fast, transparent studio that ties charge geometry to regime and to power — with the governing equations on screen — is a teaching and what-if instrument: change speed, filling or ball load and see the regime and power move, without waiting on a DEM run or trusting a black box.
Strategic Value
ChargeCascade shows how to turn scattered comminution physics into one live, tunable, honest studio: exact closed-form equations as the authority, a 3D kinematic view for intuition, and a thin learned layer (a power surrogate and an anomaly guard) that adds speed and a sanity check without pretending to be more than it is. It is explicit about its boundaries — no DEM, no plant data, magnitude calibrated to a textbook reference — which is exactly what makes it trustworthy as a design-intuition tool and a template for the rest of the Faena comminution lane.
The Challenge
The charge inside a tumbling mill governs both grinding and power draw, but its behaviour — where the load cascades, where it cataracts onto the toe, when it centrifuges — is invisible and lives in a scatter of textbook equations (Davis, Hogg-Fuerstenau, Morrell, Bond). Learning or checking that intuition usually means either a static diagram or a heavyweight discrete-element (DEM) simulation, with no fast, honest, tunable middle ground.
Our Approach
ChargeCascade implements the published closed-form mill equations exactly in a dependency-free TypeScript engine that recomputes on every control change: critical speed (Nc = 42.3/√(D−d)), the Davis departure angle and the cascading → cataracting → centrifuging regime bands, toe/shoulder geometry, and net power as the centre-of-mass torque arm (Hogg-Fuerstenau, a Morrell-form, and Bond specific energy). The 3D view is a kinematic animation of that engine — explicitly NOT a DEM / N-body particle solve. The same engine, run offline in Node, labels a synthetic operating envelope on which two small models are trained (PyTorch → ONNX) and served live via onnxruntime-web: a power surrogate for instant envelope sweeps and an out-of-distribution autoencoder that flags off-envelope inputs. The exact engine stays the authority; the models fall back to it gracefully.
Key Performance Indicators
| KPI | Baseline | Result | Impact |
|---|---|---|---|
| Power surrogate | Re-run the full engine per point | ~5.2% downstream error vs the exact engine | Instant operating-envelope sweeps, no backend |
| Anomaly guard | No validity check on inputs | Out-of-distribution autoencoder, AUC 0.922 | Flags off-envelope operating points |
| Response | DEM run / server round-trip | Sub-millisecond in-browser recompute | Instant slider response, zero backend |
| Correctness | Unchecked implementation | Two exact analytic controls pass (empty = 0 kW, critical = centrifuging onset) | The engine is verified, not asserted |
Architecture
chargecascade studio
See the charge, read the power
ChargeCascade is a live, in-browser 3D studio for tumbling-mill charge motion and power (SAG / ball / rod). Move a slider — speed, filling, ball load, mill size — and watch the charge shift between cascading, cataracting and centrifuging, with the toe and shoulder angles and the net power recomputing instantly, and the governing equations on screen. Live at chargecascade.fasl-work.com, part of the Faena mining-analytics hub.
Exact physics as the authority
A dependency-free TypeScript engine implements the published closed-form equations exactly and recomputes on every control change: critical speed Nc = 42.3/√(D−d), the Davis departure angle and the regime bands, toe/shoulder geometry, and net power as the centre-of-mass torque arm (Hogg-Fuerstenau, a Morrell-form, Bond specific energy). Two exact analytic controls pass (an empty mill draws 0 kW; at critical speed the charge centrifuges), so the engine is verified, not asserted.
A thin, honest learned layer
Run offline in Node, the exact engine labels a synthetic operating envelope on which two small models are trained (PyTorch → ONNX) and served live via onnxruntime-web: a power surrogate (~5.2% error vs the exact engine) for instant envelope sweeps, and an out-of-distribution autoencoder (AUC 0.922) that flags off-envelope inputs. They are speed and sanity-check add-ons — the exact engine remains the authority and the app falls back to it if the models are absent.
What it is not
The 3D is a kinematic animation of the closed-form engine — not a DEM / N-body particle simulation, and there is no population-balance breakage model. All operating points are synthetic-but-realistic (no plant, PEPT or DEM data); the power magnitude is calibrated to a ~1.3 MW textbook reference, not validated against a real mill, and the surrogate’s accuracy is measured against the engine, not reality. Honest boundaries are the point: it is a fast design-intuition studio, not a plant model.
Technology Stack
Visual assets for this project are not publicly available.