Feature Matrix (Quick Overview)

This page gives a compact comparison of what is currently available in Sparlectra for Load Flow and State Estimation.

Legend:

  • ✅ available
  • ⚠️ available with limitations / specific workflow
  • ❌ not available as dedicated feature

Network & modeling features

FeatureLoad Flow (runpf!)State Estimation (runse!)Notes
AC power flow (NR)Main PF entry point is runpf! with the sparse rectangular complex Jacobian; polar/classic PF methods are not supported.
AC state estimation (WLS)Main SE entry point is runse! (experimental status).
Topological bus links (addLink!)⚠️Links are fully integrated in PF workflow/reporting; in SE they are part of network topology context and should be used with care in measurement design.
2-winding transformerSupported in network model and usable in both workflows.
3-winding transformerImplemented via star-equivalent with AUX bus in network construction.
Generic outer-loop control frameworkReusable orchestration above runpf!; controller results are available through ControlRunResult / latest_control_result(net).
Transformer tap/phase controller as outer controllerFirst concrete AbstractOuterController; supports ratio and phase updates outside the Newton system.
Machine-readable control trace rowsAvailable through ControlRunResult.trace; avoids parsing console output.
YAML controller instantiation⚠️control.controllers is reserved for future controller definitions; leave empty for current programmatic setup.
Transformer tap control (addTapController!)PF supports outer-loop tap control for ratio and/or phase (:voltage, :branch_active_power, :voltage_and_branch_active_power), including discrete step operation with tap/phase limits.
Remote target-bus voltage control (single-controller)⚠️Supported in PF by setting mode = :voltage and target_bus; this is remote measurement with one controller channel.
Coordinated master/slave transformer voltage controlNot yet implemented as dedicated multi-transformer coordination logic (no built-in participation-factor allocation/group dispatcher yet).
π-equivalent branch modelingCommon branch representation across PF/SE workflows.
Shunts / loads / generators in Net modelShared physical network model and component handling.
Configurable bus-shunt modeling⚠️bus_shunt_model = "admittance" is the default/classic Y-bus treatment; "voltage_dependent_injection" is available for rectangular PF formulations that keep shunt effects in nonlinear mismatch terms.
Voltage-dependent prosumer control (Q(U), P(U))Implemented for PF with controller-aware mismatch/Jacobian terms in rectangular formulation; not part of SE model.
MATPOWER import / casesTypical SE studies can start from imported PF-ready networks; PF import supports configurable SHIFT unit/sign and TAP ratio (normal or reciprocal) conventions, plus example-workflow auto-profile recommendations for robust large-case settings.
Synthetic tiled-grid generator⚠️build_synthetic_tiled_grid_net creates artificial one-voltage-level AC PF benchmark networks; SE can use the resulting Net as an artificial study case when measurements are supplied.

Solvers, operations & limits

FeatureLoad Flow (runpf!)State Estimation (runse!)Notes
Polar full NR solver⚠️Unsupported for PF; SE uses its own WLS iteration and Jacobian evaluation.
Rectangular NR solverAvailable for PF, not as separate SE formulation.
Automatic rectangular Newton damping (autodamp)PF rectangular solver can backtrack the Newton step from damp down to autodamp_min for difficult flat starts.
Start projection (start_projection)⚠️Internal PF and external-solver PFModel starts can use DC-angle and blend-scan projection; SE does not consume PFModel.
Sparse PF matrices⚠️PF requires sparse Y-bus and Jacobian matrices; SE internally builds Jacobians for WLS.
Flat start controlAvailable in both PF and SE workflows.
PV/PQ reactive limit handlingPF includes Q-limit logic with configurable iteration or reactive-power stabilization start controls; SE currently does not expose PV/PQ switching logic.
Q(U) / P(U) controller solver support⚠️Supported on the default rectangular PF path; legacy polar/classic PF modes are unsupported.
External solver interfacePF has external solver integration; SE is internal WLS.

State-estimation measurements, observability & diagnostics

FeatureState Estimation (runse!)Notes
SCADA-style measurements (Vm, Pinj, Qinj, Pflow, Qflow)Public measurement types and helper builders are available.
PMU-specific native measurement model (e.g. direct phasor angle/current types)No dedicated PMU enum/types yet; current API is SCADA-style core WLS measurements.
Passive bus / zero-injection (ZIB) support⚠️Implemented via zero-injection pseudo-measurements (not separate hard-constraint block).
Global/local observability analysisMatrix-level and network-level observability helpers are available.
Structural observability checksSparsity/matching-based checks are available.
Numerical observability checksRank/SVD-based checks are available.
Local observability on selected state subsetDedicated local observability helpers are available.
Bad-data diagnostics (global consistency, residual ranking)validate_measurements, runse_diagnostics, summarize_se_diagnostics, print_se_diagnostics.
Deactivate-and-rerun helperOptional one-step rerun on top suspicious measurement; can improve objective but may still remain globally inconsistent.
Markdown/plain diagnostics output`printsediagnostics(...; format=:markdown

Reporting, export & workflow helpers

FeatureLoad Flow (runpf!)State Estimation (runse!)Notes
Human-readable result printingPF and SE both provide textual result output/reporting helpers.
Machine-readable report (ACPFlowReport)Dedicated report container currently exists for PF workflow.
DataFrame-friendly report rowsPF report rows can be converted/used in tabular workflows.
Synthetic measurements from PF resultPF + measurement generators support SE test-data workflows.
Central typed configurationSparlectraConfig and module-specific config sections support cached YAML loading, typed validation, override precedence, and effective-configuration printing for application/example boundaries.
Write-back solved states into NetPF updates net states; SE supports updateNet=true.