madsuite-org (madsuite.org) is the
umbrella org for the MadNLP/ExaModels stack — a Julia-centric but increasingly
language-agnostic set of NLP/LP solvers, algebraic modeling with AD, and KKT/linear-algebra
backends, with GPU support as the organizing theme. Directly relevant to gridoxide's
OPF work: it is the closest open-source analogue to the interior-point + sparse-KKT
machinery in the OPF solver, and a source of reference results to check against.
Filter line-search interior-point NLP solver (an IPOPT analogue) with GPU support; modular KKT and linear-solver layers. Reference point for gridoxide's own IPM
Solver for Mathematical Programs with Complementarity Constraints (MPCCs) — the natural formulation for complementarity-style limit switching (e.g. PV→PQ, tap limits)
Forward/reverse implicit differentiation through MadNLP/MadIPM/HybridKKT KKT systems — i.e. sensitivities of an optimum w.r.t. parameters. Conceptually adjacent to gridoxide's sensitivity work, but at the OPF level. Explicitly WIP (requires dependency forks)
The part of the org most useful to a non-Julia project: a plain-C ABI for handing
nonlinear programs across language boundaries, with both Julia and Python consumers.
It offers a path to expose a gridoxide-built OPF model to MadNLP (or any
NLPModels-compatible solver) without either side embedding the other's runtime.
The cnlp.h specification: one shared library carries N models, each publishing objective, gradient, constraints, sparse Jacobian and Lagrangian Hessian behind plain C symbols. Evaluation semantics are NLPModels.jl's, transliterated to C. A Rust cdylib can implement this directly
Metapackage compiling MadNLP (and CCOpt) into a shared library with a C interface, shipped as standalone release tarballs; loadable as a CasADi ≥3.8 plugin. WIP, but the route to calling MadNLP from Rust
Frozen (2025-10-07) OPF benchmarking data + scripts from ExaModelsPower.jl — published numbers to compare gridoxide OPF timings against
Non-code repos in the org (site, logos, and talk/workshop material — madsuite-org.github.io,
madsuite-logos, ifac2026, ifac2026-workshop, neurips2025-mathprog-on-gpu,
slides-informs-2025, powertech2025) are omitted here, though the workshop and slide repos
are worth a look for the current state of GPU-accelerated OPF.
Unlike the rest of this file, this section is not verified against a local checkout — it is
compiled from general knowledge of the literature, so editions and years may have moved. Titles and
authors are the load-bearing part; treat the year as a hint. Entries are grouped by the chapter of
this book they support, and each says why it is the one to reach for rather than simply existing.
Kundur, Power System Stability and Control (McGraw-Hill, 1994; 2nd ed. with Malik, 2022)
The single most-cited text in the field. Bought for the dynamics half, kept for its modelling chapters — the machine, exciter, governor and load models every other topic assumes
Milano, Power System Modelling and Scripting (Springer, 2010)
The closest published thing to what src/ actually is: how to implement power flow, continuation, and the DAE formulation, with the Jacobian structure written out rather than waved at. The PSAT author. If one book on this list is worth reading cover to cover for gridoxide's purposes, it is this one
Grainger & Stevenson, Power System Analysis (McGraw-Hill, 1994)
The standard undergraduate treatment; per-unit, symmetrical components and the classical fault analysis, clearly
Expósito, Conejo & Cañizares (eds.), Electric Energy Systems: Analysis and Operation (CRC, 2nd ed. 2018)
The best modern single-volume survey — a chapter each by people who work on that chapter's subject
Stott, Jardim & Alsaç, DC Power Flow Revisited, IEEE Trans. Power Systems 24(3), 2009
Not a book, but the reference for linear::btheta and the reason the summary table distinguishes two DC approximation variants
Zimmerman, Murillo-Sánchez & Thomas, MATPOWER, IEEE Trans. Power Systems 26(1), 2011, plus the MATPOWER User's Manual
The manual is an unusually honest specification of the algorithms, not just a usage guide — worth reading as a spec when a convention is ambiguous
The method book behind opf::nlp — interior point, line search, filters, and the trust-region alternatives. Where to go when the barrier update or the regularization misbehaves rather than the model
Abur & Expósito, Power System State Estimation: Theory and Implementation (CRC, 2004)
The reference, without competition. WLS, observability, bad-data detection by normalized residual, and the constrained formulation for zero injections — which is crates/gridoxide-core/src/se/ chapter by chapter
Monticelli, State Estimation in Electric Power Systems: A Generalized Approach (Kluwer, 1999)
The generalized/Hachtel formulation, and the deeper treatment of network observability
Kersting, Distribution System Modeling and Analysis (CRC, 4th ed. 2017)
The prerequisite for the unbalanced distribution SE the summary table flags as the binding gap — untransposed lines, phasing, and why the symmetric reduction stops being valid
IEC 60909-0 (Short-circuit currents in three-phase a.c. systems)
The normative document crates/gridoxide-core/src/shortcircuit/ implements. There is no substitute: the \(c\)-factors, the equivalent voltage source and the impedance corrections are definitions, not derivations
Anderson, Analysis of Faulted Power Systems (IEEE Press, 1995)
The classical treatment of symmetrical components and fault boundary conditions — the derivation IEC 60909 assumes you already know
Das, Power System Analysis: Short-Circuit Load Flow and Harmonics (CRC, 3rd ed. 2018)
Covers two of the rows in the summary table at once, and is unusually practical about what the standards leave to judgement
Van Cutsem & Vournas, Voltage Stability of Electric Power Systems (Kluwer, 1998)
The definitive treatment, and careful about the distinction between the static loadability limit and the dynamic collapse mechanism
Ajjarapu, Computational Techniques for Voltage Stability Assessment and Control (Springer, 2006)
Continuation power flow specifically — predictor, corrector, parametrization and the behaviour at the nose. The method book for the cheapest of the missing analysis types
Taylor, Power System Voltage Stability (McGraw-Hill, 1994)
The operational view: what actually collapses, and what operators do about it
Davis, Direct Methods for Sparse Linear Systems (SIAM, 2006)
By KLU's own author, and the book crates/gridoxide-sparse/src/klu_native/ is a translation of the ideas from. AMD ordering, BTF, the symbolic/numeric split, and why factorization reuse is the whole game for repeated solves
Davis & Palamadai Natarajan, Algorithm 907: KLU, a Direct Sparse Solver for Circuit Simulation Problems, ACM TOMS 37(3), 2010
The paper for the specific solver; short, and the closest thing to a specification
Duff, Erisman & Reid, Direct Methods for Sparse Matrices (Oxford, 2nd ed. 2017)
The broader reference — pivoting strategies, fill-reducing orderings and the block methods
Tinney & Walker, Direct Solutions of Sparse Network Equations by Optimally Ordered Triangular Factorization, Proc. IEEE 55(11), 1967
The paper that made large-scale power flow possible, and still the clearest statement of why ordering matters more than arithmetic
There is no textbook for this one, which is worth knowing before looking for it. The subject is
defined by regulation and by implementation rather than by a literature: the ENTSO-E CACM
Regulation and its capacity-calculation methodologies, the CORE and Nordic CCR methodology documents,
and OpenRAO's own documentation — which is the
reference gridoxide's remedial action optimization is gated against. Kirschen & Strbac and Conejo & Baringo above
give the economic and operational framing; the mechanics come from the methodologies.
RMS/DAE dynamics validation → Dynawo example cases + dynawo-large-scale-validation methodology
Interior-point / OPF solver validation → MadNLP.jl and ExaModelsPower.jl as the reference implementation to diff against; COPSBenchmark.jl for generic NLP robustness; ExaModelsPower-benchmarking-archive for published timings
Handing gridoxide models to external solvers → implement the cnlp-abi C ABI from a Rust cdylib, then consume via CNLPModels.jl (Julia) or cnlpmodels-py (Python/cyipopt)
Reading, if only one book per topic → Milano (implementation and DAEs), Abur & Expósito (state
estimation), Nocedal & Wright (the OPF's interior point), Davis (the sparse solve), Sauer/Pai/Chow
(RMS dynamics), Ajjarapu (continuation power flow), IEC 60909-0 (short circuit, normative). See
Books and normative references for why each