A Newton-Raphson solver that reuses its symbolic factorization (fill-
reducing ordering, elimination-graph structure — the expensive,
topology-only part of a sparse LU factorization) across repeated
solve calls, not just across the iterations within
one call the way newton_raphson_with_backend already does.
Per-connected-component outcome of a multi-island power-flow solve (see
network::connected_components/classify) — one shared Newton-Raphson
call across every solvable component’s unknowns at once (the Y-bus has
no coupling between disconnected components, so this is mathematically
equivalent, iteration for iteration, to solving each independently), with
per-component status recovered afterward rather than tracked live.
The one operation the Newton loop needs from a sparse-LU backend: build a
reusable symbolic factorization from a sparsity pattern once, then
numerically refactorize and solve against that same pattern every
iteration.
Partitions buses into connected components first (network:: connected_components/classify/mark_unreferenced_islands — see
docs/src/powerflow/multi_island.md), so a disconnected, sourceless
region can never make the whole Jacobian singular, then solves every
component in one shared Newton-Raphson call and returns each one’s own
outcome. This
is gridoxide’s one canonical way to run a solve — PersistentSolver::solve
and crate::outerloop::solve_with_loops share this exact same
partitioning step, so behavior is identical regardless of which entry
point a caller uses.