Experimental block-per-bus sparse LU backend for symmetric power flow,
mirroring power-grid-model’s approach of grouping each bus’s own unknowns
(angle, voltage magnitude) into one dense 2×2 block instead of two
separate scalar unknowns scattered across the Jacobian.
CGMES (Common Grid Model Exchange Standard) dataset loading and
conversion, built on cimoxide’s cimoxide-model crate (cimmodel) — see
docs/src/reference/provenance.md.
A from-scratch Rust port of the vendored SuiteSparse KLU solver
(vendor/suitesparse/{BTF,AMD,KLU}/, v7.12.2 — see
vendor/suitesparse/PROVENANCE.md for the upstream tag/commit this was
ported from) — a fourth, always-built JacobianBackend alongside
Scalar, Block, and the FFI-backed Klu (sparse_klu.rs).
Thin internal wrapper around faer’s sparse LU, isolating gridoxide’s
power-flow math from the specific sparse-solver backend. Both a general
(non-symmetric, since phase-shifting transformers make the admittance
matrix non-Hermitian) complex solve and a real solve are provided, since
Newton-Raphson needs the latter for its Jacobian and the linear
initial-guess warm start needs the former for the Y-bus.
Result of a full power-flow analysis: the solved (or placeholder, for
unreferenced islands) buses, plus a per-connected-component breakdown of
how each one was resolved — see solver::IslandReport/
solver::IslandStatus.
Runs a power flow analysis given a pre-built Y-bus matrix.
Intended for the 3-phase case too, where buses is a 3N-element vector
and ybus is the 3N×3N phase-domain admittance matrix from
build_ybus_3ph — a physical bus’s 3 phase-rows always share the same
BusType, so the island partitioning PersistentSolver::solve does
internally is safe for that case too (worst case, in a network with
perfectly balanced zero/positive-sequence impedances, phases may
partition into separate components rather than staying grouped by
physical bus; each still carries its own valid reference, so this
doesn’t change correctness, only granularity).
run_power_flow with the regulating machines a remote-voltage control
needs. The two-argument form is the shorter path for every caller that has
none, which is every importer but CGMES.