GridSim is a physics-constrained AC state estimator — Newton–Raphson, full Jacobian, every reactive limit honoured. GDA is the data lake that feeds it a quarter-century of the British grid, one settlement period at a time. Together they replay history with the complete mathematics attached — and they are structurally incapable of predicting anything. That last part is a feature. I'll explain.
Background: the gb-full network replaying. Every few seconds a unit trips and the solver re-converges — three iterations, warm-started. Dramatised, but only slightly.
Sold the way MATLAB sells toolboxes — the Core stands alone, the module makes it dangerous.
The instrument
AC Newton–Raphson power flow with the full polar Jacobian, generator Q-limit switching and an on-load tap-changer control loop. Three backends — a dense validated reference, a sparse engine (reverse Cuthill–McKee LU with an iterative fallback) that carries 9,241-bus networks, and a backward-forward sweep for radial feeders. Desktop application, CLI and Core library.
Bring your own network — JSON topology maps, IEEE and MATPOWER case import. It stands alone. If you have a grid, it will solve it, and it will show you every step of the working.
The solver in fullThe country
A 225 GB research estate: 150 GB of raw public grid data, 50 GB of inferred values, 25 GB of derived physics. 653 catalogued datasets — every NESO portal set, ~84 Elexon streams, all six DNO open-data portals, four weather archives reaching back to 1926 — schema-contracted, hive-partitioned, provenance-stamped.
It unlocks GB historical replay, warm-starts the solver into converged territory, and streams per-settlement-period corrections so the solution stays pinned to the public record. The add-on that turns a solver into a time machine — one that only goes backwards.
Inside the lake
Every dated byte in this platform passes a horizon guard. GridSim's ForwardInferenceGuard
refuses anything newer than 25.0 hours ago. GDA's guard is set at 25.2 hours — deliberately more
conservative, so the lake refuses data before the solver ever sees it. The moat is wider than the wall.
The guard is imported into 38 files on the data side and wired into every dated ingester and the
streaming bridge on the solver side. A future-dated record is refused at ingestion. A query past the
cutoff returns INFEASIBLE_HORIZON.
There is no flag to turn it off, because it isn't a setting — it's the architecture.
"Structurally incapable of nowcasting or prediction. It can only ever lag reality." — the guard's own documentation, and I will not be talked out of it.
Every tool I have ever been shown treats system inertia as a single lumped scalar — one figure, typed in as data, smeared across an entire synchronous area. GridSim doesn't. Inertia here is calculated, not assumed: per machine, distributed across the network, mapped and re-mapped on every tick of the replay.
The platform carries the split the market actually argues about — synchronous inertia, outturn inertia, market-procured inertia, each in GVA·s, each streamed per settlement period. And the physics-aware estimation behind it maps to the recorded grid at R > 0.95 — the frequency expert alone holds R² 0.97 across 392 million one-second samples, with thirty per-asset models behind it.
When a unit trips in the replay, you don't get a headline number twitching. You get the map: which machines resist, by how much, and how many seconds of ride-through the grid just bought.
Seconds of frequency ride-through at the live credible loss — the hero metric of the NESO RP1 tab. Illustrative frame.
Every solution is re-checked by an independent instrument that rebuilds the admittance matrix from scratch in NumPy and recomputes S = V ⊙ conj(YV) at every bus — no shared code with the solver, nowhere for an error to hide.
| Case | Buses | Max mismatch | Verdict |
|---|---|---|---|
| case9 (WSCC) | 9 | 1.7×10⁻¹² MW | MACHINE ε |
| case118 | 118 | 3.9×10⁻¹² MW | MACHINE ε |
| case300 | 300 | 2.7×10⁻¹¹ MW | MACHINE ε |
| case9241pegase | 9,241 | 4.3×10⁻⁹ MW | MACHINE ε |
| gb-full — Great Britain | 3,539 | 1.3×10⁻⁹ MW | MACHINE ε |
Worst mismatch anywhere in the full table: ~2×10⁻⁷ MW — 0.2 milliwatts on a national grid carrying ~50 GW. One part in 2.5×10¹¹. Every generator reactive limit respected exactly.
Every job can emit its complete working as it executes — the math ladder. The full admittance matrix. The starting point. Every Newton iteration's mismatch and correction vectors. Every reactive-limit switching event. The Jacobian itself. Plus the git commit, the machine, and the wall-clock, stamped into one JSON document.
And it is byte-for-byte reproducible — a test fails if two runs ever differ. Dense backend, sparse backend and GPU produce bit-identical results. Peer review was designed in, not bolted on.
Step through a solve, iteration by iteration"solve": {
"solver": "sparse-newton-raphson",
"iterations": 7,
"maxMismatchMw": 2.7e-11,
"ybus": [ 1,122 non-zero entries ],
"passes": [
{ "iteration": 0, "maxMismatch": 4.7e+00,
"mismatch": [ 600 values ],
"correction": [ 600 values ],
"jacobian": [ 600 × 600 ] },
…
],
"qLimitEvents": [
{ "bus": 117, "switch": "PV→PQ" }
],
"converged": true
},
"meta": {
"gitCommit": "1f3a9c2",
"reproducible": "byte-for-byte"
}How far back can it look? Further than you'd guess.
Every claim above has a full page behind it — tables, formulas, protocol specs, the lot. A technical evaluator should not have to email me to find out how something works.
All 14 cases with their actual residuals, the pandapower corroboration table, and the three cases where the reference tool stops and GridSim doesn't.
Read the reportThe swing equation, RoCoF, short-circuit level, reactive power, phase authority — with the GB numbers attached and a note on where each lives in the product.
Read the physics38,109 raw nodes to 3,539 buses — the reduction pipeline, the voltage ladder, all fourteen licence areas, and the disclosure card, up front.
Inspect the modelSeven phases, a credibility gate that refuses unproven baselines, and dossiers for real events — including 9 August 2019.
See the pipelineThe full wire format: three message kinds, six query operations, the presolved lake — documented like the API reference it is.
Read the specStep through a real-shaped Newton solve, iteration by iteration, in the export format every licensed job emits. Interactive.
Step through itTwenty-five years of solved GB states, byte-reproducible, with the full working attached to every result. Your reviewers re-run your study and get your bytes.
Defensible historical grid states for connection studies, constraint analyses and post-event work — priced against a week of one consultant's time.
A solver that shows every iteration of its working is a teaching instrument by accident. Coursework networks in, math ladders out. Group packs from £3,800.
Check a claim against the record with a tool that is structurally incapable of having a position on tomorrow. The horizon guard is your independence argument.
Illustrative list pricing, ex VAT. Every licence is concluded by conversation, not checkout.