Sparse Newton power flow time grows like to
Up to 2,383 buses Newton converges in at most 6 iterations, and its solve time grows with the bus count at a fitted log-log slope between 1.0 and 1.6.
whole sparse Newton solve
| Quantity | Viv | vipyr | Checked by |
|---|---|---|---|
case9.iterations | 4 | 4 | Viv and vipyr agree |
case14.iterations | 2 | 2 | Viv and vipyr agree |
case30.iterations | 3 | 3 | Viv and vipyr agree |
case118.iterations | 3 | 3 | Viv and vipyr agree |
case300.iterations | 5 | 5 | Viv and vipyr agree |
case2383wp.iterations | 6 | 6 | Viv and vipyr agree |
time slope sparse | 1.40392 | 1.27265 | the sparse Newton solve's time grows with a log-log slope between 1.0 and 1.6 |
max iterations | 6 | 6 | Newton converges on every case in at most 6 iterations |
min buses | 9 | 9 | Viv and vipyr agree |
max buses | 2383 | 2383 | Viv and vipyr agree |
sparse_newton_scales_linearly.viv
Output · native build · Oct 14, 2026 · 0.8 s
case9.iterations: 4 case14.iterations: 2 case30.iterations: 3 case118.iterations: 3 case300.iterations: 5 case2383wp.iterations: 6 time_slope_sparse: 1.40392 max_iterations: 6 min_buses: 9 max_buses: 2383
- ✓ Newton converges on every case in at most 6 iterations
- ✓ the sparse Newton solve's time grows with a log-log slope between 1.0 and 1.6
Open in the workbenchAtlasMore power systems claims
Uses vp.power.runpf
See also /vipyr/power/runpf
- Full statement
- On six MATPOWER cases from 9 to 2,383 buses, Newton-Raphson power flow with Viv's sparse LU converges in at most 6 iterations, and from 118 to 2,383 buses its solve time grows with the bus count at a log-log slope between 1.0 and 1.6.
- Scope
- Times are wall-clock on one machine under load, best of several runs, so only the slope is claimed, not milliseconds. MATPOWER's case9241pegase (17,036 Jacobian rows) is solved by the same Newton code in 6 iterations in lib/power/COMPARISON.md but is not shipped in the repository, so it is not part of this claim. Nothing is claimed about ill-conditioned or non-converging cases.
- Reference
- MATPOWER 7 case files (lib/power/cases); iteration counts equal those of PYPOWER 5.1.21's runpf and of the SciPy/SuperLU power flow in lib/power/oracle/pf_scipy.py (lib/power/COMPARISON.md).
claims/power/sparse_newton_scales_linearly.viv · claims/power/sparse_newton_scales_linearly.py#5548ecffc0